From db31b818bcdeaa646d5f77fd3d1ddd95d4f5286e Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Mon, 19 Jan 2015 08:56:43 +1000 Subject: [PATCH 01/11] Switch CEF on screen build from glfw -> glutin. --- ports/cef/Cargo.lock | 49 ++++++++++++++++++++++++++++++++++++++++++-- ports/cef/Cargo.toml | 8 ++------ ports/cef/browser.rs | 8 ++++---- ports/cef/lib.rs | 3 +-- 4 files changed, 54 insertions(+), 14 deletions(-) diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 56759acaba8..bbcb25348c0 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -9,8 +9,7 @@ dependencies = [ "devtools 0.0.1", "geom 0.1.0 (git+https://github.com/servo/rust-geom)", "gfx 0.0.1", - "glfw 0.0.1 (git+https://github.com/servo/glfw-rs?ref=servo)", - "glfw_app 0.0.1", + "glutin_app 0.0.1", "js 0.1.0 (git+https://github.com/servo/rust-mozjs)", "layers 0.1.0 (git+https://github.com/servo/rust-layers)", "msg 0.0.1", @@ -24,6 +23,14 @@ dependencies = [ "util 0.0.1", ] +[[package]] +name = "android_glue" +version = "0.0.1" +source = "git+https://github.com/servo/android-rs-glue?ref=servo#122bc28545b5e59a923c466a484c403fa691bd55" +dependencies = [ + "compile_msg 0.1.3 (git+https://github.com/huonw/compile_msg)", +] + [[package]] name = "azure" version = "0.1.0" @@ -61,6 +68,11 @@ name = "cocoa" version = "0.1.1" source = "git+https://github.com/servo/rust-cocoa#bf53a53ce306279fc1cae0d56fdd5e7216696420" +[[package]] +name = "compile_msg" +version = "0.1.3" +source = "git+https://github.com/huonw/compile_msg#b19da50cacf5b11bbc065da6b449f6b4fe7c019a" + [[package]] name = "compositing" version = "0.0.1" @@ -327,6 +339,34 @@ dependencies = [ "util 0.0.1", ] +[[package]] +name = "glutin" +version = "0.0.2" +source = "git+https://github.com/servo/glutin?ref=servo#db27370a1cbafcbfcaeee52a44076a61b3e0573c" +dependencies = [ + "android_glue 0.0.1 (git+https://github.com/servo/android-rs-glue?ref=servo)", + "cocoa 0.1.1 (git+https://github.com/servo/rust-cocoa)", + "core_graphics 0.1.0 (git+https://github.com/servo/rust-core-graphics)", + "gl_common 0.0.1 (git+https://github.com/bjz/gl-rs.git)", + "gl_generator 0.0.1 (git+https://github.com/bjz/gl-rs.git)", + "winapi 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glutin_app" +version = "0.0.1" +dependencies = [ + "cgl 0.0.1 (git+https://github.com/servo/rust-cgl)", + "compositing 0.0.1", + "geom 0.1.0 (git+https://github.com/servo/rust-geom)", + "gleam 0.0.1 (git+https://github.com/servo/gleam)", + "glutin 0.0.2 (git+https://github.com/servo/glutin?ref=servo)", + "layers 0.1.0 (git+https://github.com/servo/rust-layers)", + "msg 0.0.1", + "time 0.1.0 (git+https://github.com/rust-lang/time)", + "util 0.0.1", +] + [[package]] name = "glx" version = "0.0.1" @@ -726,6 +766,11 @@ name = "uuid" version = "0.1.1" source = "git+https://github.com/rust-lang/uuid#fc793c974a25c126c5cf5daa3b18973512a7a6a0" +[[package]] +name = "winapi" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "xlib" version = "0.1.0" diff --git a/ports/cef/Cargo.toml b/ports/cef/Cargo.toml index 817ba629c94..87d6c7c141e 100644 --- a/ports/cef/Cargo.toml +++ b/ports/cef/Cargo.toml @@ -11,8 +11,8 @@ crate-type = ["dylib"] [dependencies.servo] path = "../../components/servo" -[dependencies.glfw_app] -path = "../glfw" +[dependencies.glutin_app] +path = "../glutin" [dependencies.plugins] path = "../../components/plugins" @@ -44,10 +44,6 @@ git = "https://github.com/servo/rust-azure" [dependencies.geom] git = "https://github.com/servo/rust-geom" -[dependencies.glfw] -git = "https://github.com/servo/glfw-rs" -branch = "servo" - [dependencies.js] git = "https://github.com/servo/rust-mozjs" diff --git a/ports/cef/browser.rs b/ports/cef/browser.rs index 2092f4cf824..1e70d79deab 100644 --- a/ports/cef/browser.rs +++ b/ports/cef/browser.rs @@ -13,7 +13,7 @@ use types::{cef_browser_settings_t, cef_string_t, cef_window_info_t}; use window; use compositing::windowing::{WindowNavigateMsg, WindowEvent}; -use glfw_app; +use glutin_app; use libc::c_int; use servo_util::opts; use std::cell::{Cell, RefCell}; @@ -22,7 +22,7 @@ thread_local!(pub static BROWSERS: RefCell> = RefCell::new(vec!( pub enum ServoBrowser { Invalid, - OnScreen(Browser), + OnScreen(Browser), OffScreen(Browser), } @@ -93,8 +93,8 @@ impl ServoCefBrowser { let host = ServoCefBrowserHost::new(client.clone()).as_cef_interface(); let servo_browser = if window_info.windowless_rendering_enabled == 0 { - let glfw_window = glfw_app::create_window(); - let servo_browser = Browser::new(Some(glfw_window.clone())); + let glutin_window = glutin_app::create_window(); + let servo_browser = Browser::new(Some(glutin_window.clone())); ServoBrowser::OnScreen(servo_browser) } else { ServoBrowser::Invalid diff --git a/ports/cef/lib.rs b/ports/cef/lib.rs index 3fac5abb456..669f8239686 100644 --- a/ports/cef/lib.rs +++ b/ports/cef/lib.rs @@ -20,8 +20,7 @@ extern crate azure; extern crate geom; extern crate gfx; extern crate gleam; -extern crate glfw; -extern crate glfw_app; +extern crate glutin_app; extern crate js; extern crate layers; extern crate png; From 36e151dc955e111e420efe6451d44185562c29b7 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Mon, 19 Jan 2015 08:57:05 +1000 Subject: [PATCH 02/11] Add more key mappings. --- ports/glutin/window.rs | 73 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/ports/glutin/window.rs b/ports/glutin/window.rs index 4180b6223ee..52d404f7e87 100644 --- a/ports/glutin/window.rs +++ b/ports/glutin/window.rs @@ -377,12 +377,85 @@ fn glutin_mods_to_script_mods(modifiers: KeyModifiers) -> constellation_msg::Key fn glutin_key_to_script_key(key: glutin::VirtualKeyCode) -> Result { // TODO(negge): add more key mappings match key { + VirtualKeyCode::A => Ok(Key::A), + VirtualKeyCode::B => Ok(Key::B), + VirtualKeyCode::C => Ok(Key::C), + VirtualKeyCode::D => Ok(Key::D), + VirtualKeyCode::E => Ok(Key::E), + VirtualKeyCode::F => Ok(Key::F), + VirtualKeyCode::G => Ok(Key::G), + VirtualKeyCode::H => Ok(Key::H), + VirtualKeyCode::I => Ok(Key::I), + VirtualKeyCode::J => Ok(Key::J), + VirtualKeyCode::K => Ok(Key::K), + VirtualKeyCode::L => Ok(Key::L), + VirtualKeyCode::M => Ok(Key::M), + VirtualKeyCode::N => Ok(Key::N), + VirtualKeyCode::O => Ok(Key::O), + VirtualKeyCode::P => Ok(Key::P), + VirtualKeyCode::Q => Ok(Key::Q), + VirtualKeyCode::R => Ok(Key::R), + VirtualKeyCode::S => Ok(Key::S), + VirtualKeyCode::T => Ok(Key::T), + VirtualKeyCode::U => Ok(Key::U), + VirtualKeyCode::V => Ok(Key::V), + VirtualKeyCode::W => Ok(Key::W), + VirtualKeyCode::X => Ok(Key::X), + VirtualKeyCode::Y => Ok(Key::Y), + VirtualKeyCode::Z => Ok(Key::Z), + + VirtualKeyCode::Numpad0 => Ok(Key::Num0), + VirtualKeyCode::Numpad1 => Ok(Key::Num1), + VirtualKeyCode::Numpad2 => Ok(Key::Num2), + VirtualKeyCode::Numpad3 => Ok(Key::Num3), + VirtualKeyCode::Numpad4 => Ok(Key::Num4), + VirtualKeyCode::Numpad5 => Ok(Key::Num5), + VirtualKeyCode::Numpad6 => Ok(Key::Num6), + VirtualKeyCode::Numpad7 => Ok(Key::Num7), + VirtualKeyCode::Numpad8 => Ok(Key::Num8), + VirtualKeyCode::Numpad9 => Ok(Key::Num9), + + VirtualKeyCode::Key0 => Ok(Key::Kp0), + VirtualKeyCode::Key1 => Ok(Key::Kp1), + VirtualKeyCode::Key2 => Ok(Key::Kp2), + VirtualKeyCode::Key3 => Ok(Key::Kp3), + VirtualKeyCode::Key4 => Ok(Key::Kp4), + VirtualKeyCode::Key5 => Ok(Key::Kp5), + VirtualKeyCode::Key6 => Ok(Key::Kp6), + VirtualKeyCode::Key7 => Ok(Key::Kp7), + VirtualKeyCode::Key8 => Ok(Key::Kp8), + VirtualKeyCode::Key9 => Ok(Key::Kp9), + + VirtualKeyCode::Return => Ok(Key::Enter), + VirtualKeyCode::Space => Ok(Key::Space), VirtualKeyCode::Escape => Ok(Key::Escape), VirtualKeyCode::Equals => Ok(Key::Equal), VirtualKeyCode::Minus => Ok(Key::Minus), VirtualKeyCode::Back => Ok(Key::Backspace), VirtualKeyCode::PageDown => Ok(Key::PageDown), VirtualKeyCode::PageUp => Ok(Key::PageUp), + + VirtualKeyCode::Insert => Ok(Key::Insert), + VirtualKeyCode::Home => Ok(Key::Home), + VirtualKeyCode::Delete => Ok(Key::Delete), + VirtualKeyCode::End => Ok(Key::End), + + VirtualKeyCode::Left => Ok(Key::Left), + VirtualKeyCode::Up => Ok(Key::Up), + VirtualKeyCode::Right => Ok(Key::Right), + VirtualKeyCode::Down => Ok(Key::Down), + + VirtualKeyCode::Apostrophe => Ok(Key::Apostrophe), + VirtualKeyCode::Backslash => Ok(Key::Backslash), + VirtualKeyCode::Comma => Ok(Key::Comma), + VirtualKeyCode::Grave => Ok(Key::GraveAccent), + VirtualKeyCode::LBracket => Ok(Key::LeftBracket), + VirtualKeyCode::Period => Ok(Key::Period), + VirtualKeyCode::RBracket => Ok(Key::RightBracket), + VirtualKeyCode::Semicolon => Ok(Key::Semicolon), + VirtualKeyCode::Slash => Ok(Key::Slash), + VirtualKeyCode::Tab => Ok(Key::Tab), + _ => Err(()), } } From 8c3e3b66b3ff10f228d0079de9a2f424b44356b2 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Mon, 19 Jan 2015 10:43:14 +1000 Subject: [PATCH 03/11] Add basic support for closing cef tabs. Prevents crashes, but leaks memory for now. --- ports/cef/browser.rs | 17 +++++++++++++++++ ports/cef/browser_host.rs | 6 +++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ports/cef/browser.rs b/ports/cef/browser.rs index 2092f4cf824..c4572f7c7a7 100644 --- a/ports/cef/browser.rs +++ b/ports/cef/browser.rs @@ -17,7 +17,9 @@ use glfw_app; use libc::c_int; use servo_util::opts; use std::cell::{Cell, RefCell}; +use std::sync::atomic::{AtomicInt, SeqCst}; +thread_local!(pub static ID_COUNTER: AtomicInt = AtomicInt::new(0)) thread_local!(pub static BROWSERS: RefCell> = RefCell::new(vec!())) pub enum ServoBrowser { @@ -83,6 +85,7 @@ pub struct ServoCefBrowser { /// Whether the on-created callback has fired yet. pub callback_executed: Cell, + id: int, servo_browser: RefCell, message_queue: RefCell>, } @@ -100,6 +103,10 @@ impl ServoCefBrowser { ServoBrowser::Invalid }; + let id = ID_COUNTER.with(|counter| { + counter.fetch_add(1, SeqCst) + }); + ServoCefBrowser { frame: frame, host: host, @@ -107,6 +114,7 @@ impl ServoCefBrowser { callback_executed: Cell::new(false), servo_browser: RefCell::new(servo_browser), message_queue: RefCell::new(vec!()), + id: id, } } } @@ -170,6 +178,15 @@ pub fn update() { }); } +pub fn close(browser: CefBrowser) { + BROWSERS.with(|browsers| { + let mut browsers = browsers.borrow_mut(); + browsers.iter() + .position(|&ref n| n.downcast().id == browser.downcast().id) + .map(|e| browsers.remove(e)); + }); +} + pub fn browser_callback_after_created(browser: CefBrowser) { if browser.downcast().client.is_null_cef_object() { return diff --git a/ports/cef/browser_host.rs b/ports/cef/browser_host.rs index 7bfd0581ec7..8ed741eb05f 100644 --- a/ports/cef/browser_host.rs +++ b/ports/cef/browser_host.rs @@ -6,7 +6,7 @@ use eutil::Downcast; use interfaces::{CefBrowser, CefBrowserHost, CefClient, cef_browser_host_t, cef_client_t}; use types::{cef_mouse_button_type_t, cef_mouse_event, cef_rect_t, cef_key_event}; use types::cef_key_event_type_t::{KEYEVENT_CHAR, KEYEVENT_KEYDOWN, KEYEVENT_KEYUP, KEYEVENT_RAWKEYDOWN}; -use browser::ServoCefBrowserExtensions; +use browser::{mod, ServoCefBrowserExtensions}; use compositing::windowing::{WindowEvent, MouseWindowEvent}; use geom::point::TypedPoint2D; @@ -37,8 +37,8 @@ cef_class_impl! { this.downcast().send_window_event(WindowEvent::Resize(size)); } - fn close_browser(&_this, _force: c_int) -> () { - // TODO: Clean shutdown. + fn close_browser(&this, _force: c_int) -> () { + browser::close(this.downcast().browser.borrow_mut().take().unwrap()); } fn send_focus_event(&this, focus: c_int) -> () { From b6e5e823e65ed3dc6e5ad5322b3776ecacb8df61 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 19 Jan 2015 12:33:34 +0100 Subject: [PATCH 04/11] Update web-platform-tests. --- .../{ => blob}/Blob-XHR-revoke.html.ini | 0 .../FileAPI/{ => blob}/Blob-close.html.ini | 0 .../{ => blob}/Blob-constructor.html.ini | 0 .../FileAPI/{ => blob}/Blob-slice.html.ini | 0 .../{ => file}/File-constructor.html.ini | 0 .../wpt/metadata/FileAPI/fileReader.html.ini | 14 + .../Determining-Encoding.html.ini | 0 .../filereader_abort.html.ini | 0 .../filereader_error.html.ini | 0 .../filereader_readAsArrayBuffer.html.ini | 0 .../filereader_readAsDataURL.html.ini | 0 .../filereader_readAsText.html.ini | 0 .../filereader_readystate.html.ini | 0 .../filereader_result.html.ini | 0 .../url/url_createobjecturl_blob.html.ini | 8 + .../FileAPI/url/url_xmlhttprequest.html.ini | 5 + .../url/url_xmlhttprequest_img.html.ini | 5 + tests/wpt/metadata/MANIFEST.json | 452 ++++++++++-------- .../XMLHttpRequest-withCredentials.html.ini | 8 + .../XMLHttpRequest-withCredentials.worker.ini | 5 + .../withcredentials-wrong-state.htm.ini | 5 - .../dom/nodes/Element-closest.html.ini | 1 - .../dom/nodes/Element-matches.html.ini | 3 + .../browsing-context-choose-parent.html.ini | 3 - .../disabled-elements-01.html.ini | 38 ++ .../Opera/script_scheduling/079.html.ini | 3 - .../onmessage.html.ini | 5 - .../onmessage.worker.ini | 5 + .../close/sending-messages.html.ini | 3 +- tests/wpt/web-platform-tests | 2 +- 30 files changed, 350 insertions(+), 215 deletions(-) rename tests/wpt/metadata/FileAPI/{ => blob}/Blob-XHR-revoke.html.ini (100%) rename tests/wpt/metadata/FileAPI/{ => blob}/Blob-close.html.ini (100%) rename tests/wpt/metadata/FileAPI/{ => blob}/Blob-constructor.html.ini (100%) rename tests/wpt/metadata/FileAPI/{ => blob}/Blob-slice.html.ini (100%) rename tests/wpt/metadata/FileAPI/{ => file}/File-constructor.html.ini (100%) create mode 100644 tests/wpt/metadata/FileAPI/fileReader.html.ini rename tests/wpt/metadata/FileAPI/{FileReader => reading-data-section}/Determining-Encoding.html.ini (100%) rename tests/wpt/metadata/FileAPI/{FileReader-interface => reading-data-section}/filereader_abort.html.ini (100%) rename tests/wpt/metadata/FileAPI/{FileReader-interface => reading-data-section}/filereader_error.html.ini (100%) rename tests/wpt/metadata/FileAPI/{FileReader-interface => reading-data-section}/filereader_readAsArrayBuffer.html.ini (100%) rename tests/wpt/metadata/FileAPI/{FileReader-interface => reading-data-section}/filereader_readAsDataURL.html.ini (100%) rename tests/wpt/metadata/FileAPI/{FileReader-interface => reading-data-section}/filereader_readAsText.html.ini (100%) rename tests/wpt/metadata/FileAPI/{FileReader-interface => reading-data-section}/filereader_readystate.html.ini (100%) rename tests/wpt/metadata/FileAPI/{FileReader-interface => reading-data-section}/filereader_result.html.ini (100%) create mode 100644 tests/wpt/metadata/FileAPI/url/url_createobjecturl_blob.html.ini create mode 100644 tests/wpt/metadata/FileAPI/url/url_xmlhttprequest.html.ini create mode 100644 tests/wpt/metadata/FileAPI/url/url_xmlhttprequest_img.html.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/XMLHttpRequest-withCredentials.html.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.ini delete mode 100644 tests/wpt/metadata/XMLHttpRequest/withcredentials-wrong-state.htm.ini create mode 100644 tests/wpt/metadata/dom/nodes/Element-matches.html.ini create mode 100644 tests/wpt/metadata/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html.ini delete mode 100644 tests/wpt/metadata/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.html.ini create mode 100644 tests/wpt/metadata/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.worker.ini diff --git a/tests/wpt/metadata/FileAPI/Blob-XHR-revoke.html.ini b/tests/wpt/metadata/FileAPI/blob/Blob-XHR-revoke.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/Blob-XHR-revoke.html.ini rename to tests/wpt/metadata/FileAPI/blob/Blob-XHR-revoke.html.ini diff --git a/tests/wpt/metadata/FileAPI/Blob-close.html.ini b/tests/wpt/metadata/FileAPI/blob/Blob-close.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/Blob-close.html.ini rename to tests/wpt/metadata/FileAPI/blob/Blob-close.html.ini diff --git a/tests/wpt/metadata/FileAPI/Blob-constructor.html.ini b/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/Blob-constructor.html.ini rename to tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini diff --git a/tests/wpt/metadata/FileAPI/Blob-slice.html.ini b/tests/wpt/metadata/FileAPI/blob/Blob-slice.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/Blob-slice.html.ini rename to tests/wpt/metadata/FileAPI/blob/Blob-slice.html.ini diff --git a/tests/wpt/metadata/FileAPI/File-constructor.html.ini b/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/File-constructor.html.ini rename to tests/wpt/metadata/FileAPI/file/File-constructor.html.ini diff --git a/tests/wpt/metadata/FileAPI/fileReader.html.ini b/tests/wpt/metadata/FileAPI/fileReader.html.ini new file mode 100644 index 00000000000..25d07b53ff4 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/fileReader.html.ini @@ -0,0 +1,14 @@ +[fileReader.html] + type: testharness + [FileReader interface object] + expected: FAIL + + [no-argument FileReader constructor] + expected: FAIL + + [FileReader States -- abort] + expected: FAIL + + [FileReader States -- events] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/FileReader/Determining-Encoding.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/Determining-Encoding.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/FileReader/Determining-Encoding.html.ini rename to tests/wpt/metadata/FileAPI/reading-data-section/Determining-Encoding.html.ini diff --git a/tests/wpt/metadata/FileAPI/FileReader-interface/filereader_abort.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_abort.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/FileReader-interface/filereader_abort.html.ini rename to tests/wpt/metadata/FileAPI/reading-data-section/filereader_abort.html.ini diff --git a/tests/wpt/metadata/FileAPI/FileReader-interface/filereader_error.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_error.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/FileReader-interface/filereader_error.html.ini rename to tests/wpt/metadata/FileAPI/reading-data-section/filereader_error.html.ini diff --git a/tests/wpt/metadata/FileAPI/FileReader-interface/filereader_readAsArrayBuffer.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/FileReader-interface/filereader_readAsArrayBuffer.html.ini rename to tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html.ini diff --git a/tests/wpt/metadata/FileAPI/FileReader-interface/filereader_readAsDataURL.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsDataURL.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/FileReader-interface/filereader_readAsDataURL.html.ini rename to tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsDataURL.html.ini diff --git a/tests/wpt/metadata/FileAPI/FileReader-interface/filereader_readAsText.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsText.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/FileReader-interface/filereader_readAsText.html.ini rename to tests/wpt/metadata/FileAPI/reading-data-section/filereader_readAsText.html.ini diff --git a/tests/wpt/metadata/FileAPI/FileReader-interface/filereader_readystate.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_readystate.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/FileReader-interface/filereader_readystate.html.ini rename to tests/wpt/metadata/FileAPI/reading-data-section/filereader_readystate.html.ini diff --git a/tests/wpt/metadata/FileAPI/FileReader-interface/filereader_result.html.ini b/tests/wpt/metadata/FileAPI/reading-data-section/filereader_result.html.ini similarity index 100% rename from tests/wpt/metadata/FileAPI/FileReader-interface/filereader_result.html.ini rename to tests/wpt/metadata/FileAPI/reading-data-section/filereader_result.html.ini diff --git a/tests/wpt/metadata/FileAPI/url/url_createobjecturl_blob.html.ini b/tests/wpt/metadata/FileAPI/url/url_createobjecturl_blob.html.ini new file mode 100644 index 00000000000..a144ae0abd3 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/url/url_createobjecturl_blob.html.ini @@ -0,0 +1,8 @@ +[url_createobjecturl_blob.html] + type: testharness + [Check if the Blob URI starts with \'blob\' using createObjectURL()] + expected: FAIL + + [Check if the Blob URI starts with \'blob\' using createFor()] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/url/url_xmlhttprequest.html.ini b/tests/wpt/metadata/FileAPI/url/url_xmlhttprequest.html.ini new file mode 100644 index 00000000000..8a6122281e3 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/url/url_xmlhttprequest.html.ini @@ -0,0 +1,5 @@ +[url_xmlhttprequest.html] + type: testharness + [FileAPI Test: Creating Blob URL via XMLHttpRequest] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/url/url_xmlhttprequest_img.html.ini b/tests/wpt/metadata/FileAPI/url/url_xmlhttprequest_img.html.ini new file mode 100644 index 00000000000..08c0d4d0d67 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/url/url_xmlhttprequest_img.html.ini @@ -0,0 +1,5 @@ +[url_xmlhttprequest_img.html] + type: reftest + reftype: == + refurl: /FileAPI/url/url_xmlhttprequest_img-ref.html + expected: FAIL diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 0b336c020d7..36246ab3417 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -482,7 +482,13 @@ "url": "/DOMEvents/tests/submissions/Microsoft/support/style01.css" }, { - "url": "/FileAPI/FileReader-interface/support/blue-100x100.png" + "url": "/FileAPI/BlobURL/support/file_test1.js" + }, + { + "url": "/FileAPI/BlobURL/support/file_test2.txt" + }, + { + "url": "/FileAPI/FileReader/support/file_test1.txt" }, { "url": "/FileAPI/filelist-section/support/upload.txt" @@ -490,12 +496,18 @@ { "url": "/FileAPI/filelist-section/support/upload.zip" }, + { + "url": "/FileAPI/reading-data-section/support/blue-100x100.png" + }, { "url": "/FileAPI/support/Blob.js" }, { "url": "/FileAPI/support/upload.txt" }, + { + "url": "/FileAPI/url/url_xmlhttprequest_img-ref.html" + }, { "url": "/IndexedDB/README.md" }, @@ -508,329 +520,335 @@ { "url": "/WebCryptoAPI/README.md" }, + { + "url": "/WebIDL/invalid/idl/enum.widl" + }, + { + "url": "/WebIDL/invalid/idl/module.widl" + }, + { + "url": "/WebIDL/invalid/idl/nonnullableany.widl" + }, + { + "url": "/WebIDL/invalid/idl/nonnullableobjects.widl" + }, + { + "url": "/WebIDL/invalid/idl/raises.widl" + }, + { + "url": "/WebIDL/invalid/idl/scopedname.widl" + }, + { + "url": "/WebIDL/invalid/idl/scopedname.widl~" + }, + { + "url": "/WebIDL/invalid/idl/sequenceAsAttribute.widl" + }, + { + "url": "/WebIDL/invalid/idl/special-omittable.widl" + }, + { + "url": "/WebIDL/invalid/idl/stringconstants.idl" + }, + { + "url": "/WebIDL/readme.txt" + }, { "url": "/WebIDL/testable_assertions.txt" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/enum.widl" + "url": "/WebIDL/valid/idl/allowany.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/module.widl" + "url": "/WebIDL/valid/idl/array.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/nonnullableany.widl" + "url": "/WebIDL/valid/idl/attributes.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/nonnullableobjects.widl" + "url": "/WebIDL/valid/idl/callback.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/raises.widl" + "url": "/WebIDL/valid/idl/caller.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/scopedname.widl" + "url": "/WebIDL/valid/idl/constants.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/sequenceAsAttribute.widl" + "url": "/WebIDL/valid/idl/constructor.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/special-omittable.widl" + "url": "/WebIDL/valid/idl/dictionary-inherits.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/invalid/idl/stringconstants.idl" + "url": "/WebIDL/valid/idl/dictionary.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/readme.txt" + "url": "/WebIDL/valid/idl/documentation-dos.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/allowany.widl" + "url": "/WebIDL/valid/idl/documentation.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/array.widl" + "url": "/WebIDL/valid/idl/enum.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/attributes.widl" + "url": "/WebIDL/valid/idl/equivalent-decl.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/callback.widl" + "url": "/WebIDL/valid/idl/exception-inheritance.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/caller.widl" + "url": "/WebIDL/valid/idl/exception.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/constants.widl" + "url": "/WebIDL/valid/idl/getter-setter.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/constructor.widl" + "url": "/WebIDL/valid/idl/identifier-qualified-names.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/dictionary-inherits.widl" + "url": "/WebIDL/valid/idl/implements.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/dictionary.widl" + "url": "/WebIDL/valid/idl/indexed-properties.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/documentation-dos.widl" + "url": "/WebIDL/valid/idl/inherits-getter.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/documentation.widl" + "url": "/WebIDL/valid/idl/interface-inherits.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/enum.widl" + "url": "/WebIDL/valid/idl/iterator.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/equivalent-decl.widl" + "url": "/WebIDL/valid/idl/namedconstructor.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/exception-inheritance.widl" + "url": "/WebIDL/valid/idl/nointerfaceobject.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/exception.widl" + "url": "/WebIDL/valid/idl/nullable.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/getter-setter.widl" + "url": "/WebIDL/valid/idl/nullableobjects.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/identifier-qualified-names.widl" + "url": "/WebIDL/valid/idl/operation-optional-arg.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/implements.widl" + "url": "/WebIDL/valid/idl/overloading.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/indexed-properties.widl" + "url": "/WebIDL/valid/idl/overridebuiltins.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/inherits-getter.widl" + "url": "/WebIDL/valid/idl/partial-interface.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/interface-inherits.widl" + "url": "/WebIDL/valid/idl/primitives.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/iterator.widl" + "url": "/WebIDL/valid/idl/prototyperoot.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/namedconstructor.widl" + "url": "/WebIDL/valid/idl/putforwards.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/nointerfaceobject.widl" + "url": "/WebIDL/valid/idl/reg-operations.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/nullable.widl" + "url": "/WebIDL/valid/idl/replaceable.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/nullableobjects.widl" + "url": "/WebIDL/valid/idl/sequence.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/operation-optional-arg.widl" + "url": "/WebIDL/valid/idl/serializer.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/overloading.widl" + "url": "/WebIDL/valid/idl/static.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/overridebuiltins.widl" + "url": "/WebIDL/valid/idl/stringifier-attribute.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/partial-interface.widl" + "url": "/WebIDL/valid/idl/stringifier-custom.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/primitives.widl" + "url": "/WebIDL/valid/idl/stringifier.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/prototyperoot.widl" + "url": "/WebIDL/valid/idl/treatasnull.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/putforwards.widl" + "url": "/WebIDL/valid/idl/treatasundefined.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/reg-operations.widl" + "url": "/WebIDL/valid/idl/typedef.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/replaceable.widl" + "url": "/WebIDL/valid/idl/typesuffixes.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/sequence.widl" + "url": "/WebIDL/valid/idl/uniontype.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/serializer.widl" + "url": "/WebIDL/valid/idl/variadic-operations.widl" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/static.widl" + "url": "/WebIDL/valid/xml/allowany.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/stringifier-attribute.widl" + "url": "/WebIDL/valid/xml/array.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/stringifier-custom.widl" + "url": "/WebIDL/valid/xml/attributes.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/stringifier.widl" + "url": "/WebIDL/valid/xml/callback.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/treatasnull.widl" + "url": "/WebIDL/valid/xml/caller.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/treatasundefined.widl" + "url": "/WebIDL/valid/xml/constants.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/typedef.widl" + "url": "/WebIDL/valid/xml/constructor.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/typesuffixes.widl" + "url": "/WebIDL/valid/xml/dictionary-inherits.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/uniontype.widl" + "url": "/WebIDL/valid/xml/dictionary.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/idl/variadic-operations.widl" + "url": "/WebIDL/valid/xml/documentation-dos.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/allowany.widlprocxml" + "url": "/WebIDL/valid/xml/documentation.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/array.widlprocxml" + "url": "/WebIDL/valid/xml/enum.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/attributes.widlprocxml" + "url": "/WebIDL/valid/xml/equivalent-decl.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/callback.widlprocxml" + "url": "/WebIDL/valid/xml/exception-inheritance.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/caller.widlprocxml" + "url": "/WebIDL/valid/xml/exception.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/constants.widlprocxml" + "url": "/WebIDL/valid/xml/getter-setter.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/constructor.widlprocxml" + "url": "/WebIDL/valid/xml/identifier-qualified-names.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/dictionary-inherits.widlprocxml" + "url": "/WebIDL/valid/xml/implements.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/dictionary.widlprocxml" + "url": "/WebIDL/valid/xml/indexed-properties.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/documentation-dos.widlprocxml" + "url": "/WebIDL/valid/xml/inherits-getter.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/documentation.widlprocxml" + "url": "/WebIDL/valid/xml/interface-inherits.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/enum.widlprocxml" + "url": "/WebIDL/valid/xml/iterator.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/equivalent-decl.widlprocxml" + "url": "/WebIDL/valid/xml/module.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/exception-inheritance.widlprocxml" + "url": "/WebIDL/valid/xml/namedconstructor.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/exception.widlprocxml" + "url": "/WebIDL/valid/xml/namespaceobject.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/getter-setter.widlprocxml" + "url": "/WebIDL/valid/xml/nointerfaceobject.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/identifier-qualified-names.widlprocxml" + "url": "/WebIDL/valid/xml/nullable.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/implements.widlprocxml" + "url": "/WebIDL/valid/xml/nullableobjects.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/indexed-properties.widlprocxml" + "url": "/WebIDL/valid/xml/operation-optional-arg.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/inherits-getter.widlprocxml" + "url": "/WebIDL/valid/xml/overloading.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/interface-inherits.widlprocxml" + "url": "/WebIDL/valid/xml/overridebuiltins.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/iterator.widlprocxml" + "url": "/WebIDL/valid/xml/partial-interface.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/module.widlprocxml" + "url": "/WebIDL/valid/xml/primitives.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/namedconstructor.widlprocxml" + "url": "/WebIDL/valid/xml/prototyperoot.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/namespaceobject.widlprocxml" + "url": "/WebIDL/valid/xml/putforwards.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/nointerfaceobject.widlprocxml" + "url": "/WebIDL/valid/xml/reg-operations.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/nullable.widlprocxml" + "url": "/WebIDL/valid/xml/replaceable.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/nullableobjects.widlprocxml" + "url": "/WebIDL/valid/xml/sequence.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/operation-optional-arg.widlprocxml" + "url": "/WebIDL/valid/xml/serializer.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/overloading.widlprocxml" + "url": "/WebIDL/valid/xml/special-omittable.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/overridebuiltins.widlprocxml" + "url": "/WebIDL/valid/xml/static.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/partial-interface.widlprocxml" + "url": "/WebIDL/valid/xml/stringifier-attribute.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/primitives.widlprocxml" + "url": "/WebIDL/valid/xml/stringifier-custom.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/prototyperoot.widlprocxml" + "url": "/WebIDL/valid/xml/stringifier.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/putforwards.widlprocxml" + "url": "/WebIDL/valid/xml/treatasnull.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/reg-operations.widlprocxml" + "url": "/WebIDL/valid/xml/treatasundefined.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/replaceable.widlprocxml" + "url": "/WebIDL/valid/xml/typedef.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/sequence.widlprocxml" + "url": "/WebIDL/valid/xml/typesuffixes.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/serializer.widlprocxml" + "url": "/WebIDL/valid/xml/uniontype.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/special-omittable.widlprocxml" + "url": "/WebIDL/valid/xml/variadic-operations.widlprocxml" }, { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/static.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/stringifier-attribute.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/stringifier-custom.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/stringifier.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/treatasnull.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/treatasundefined.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/typedef.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/typesuffixes.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/uniontype.widlprocxml" - }, - { - "url": "/WebIDL/tests/submissions/W3C/valid/xml/variadic-operations.widlprocxml" + "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.js" }, { "url": "/XMLHttpRequest/folder.txt" @@ -1348,6 +1366,9 @@ { "url": "/dom/nodes/Document-createProcessingInstruction.js" }, + { + "url": "/dom/nodes/Element-matches.js" + }, { "url": "/dom/nodes/Node-contains.xml" }, @@ -2497,6 +2518,9 @@ { "url": "/images/blue.png" }, + { + "url": "/images/blue96x96.png" + }, { "url": "/images/broken.png" }, @@ -2906,13 +2930,7 @@ "url": "/resource-timing/test_resource_timing.js" }, { - "url": "/selectors-api/tests/submissions/Opera/Element-matches.js" - }, - { - "url": "/selectors-api/tests/submissions/Opera/ParentNode-find-findAll.js" - }, - { - "url": "/selectors-api/tests/submissions/Opera/level2-lib.js" + "url": "/selectors-api/tests/submissions/Opera/ParentNode-query-queryAll.js" }, { "url": "/service-workers/specgen.json" @@ -3088,6 +3106,9 @@ { "url": "/webmessaging/README.md" }, + { + "url": "/webmessaging/support/compare.js" + }, { "url": "/webmessaging/without-ports/025-1.js" }, @@ -4330,12 +4351,6 @@ { "url": "/workers/support/WorkerText.txt" }, - { - "url": "/workers/support/XMLHttpRequest.js" - }, - { - "url": "/workers/support/XMLHttpRequest.txt" - }, { "url": "/workers/workers.js" } @@ -4369,10 +4384,16 @@ "url": "/2dcontext/shadows/2d.shadow.blur.low-manual.html" }, { - "url": "/FileAPI/FileReader-interface/filereader_file-manual.html" + "url": "/FileAPI/BlobURL/test1-manual.html" }, { - "url": "/FileAPI/FileReader-interface/filereader_file_img-manual.html" + "url": "/FileAPI/BlobURL/test2-manual.html" + }, + { + "url": "/FileAPI/BlobURL/test3-manual.html" + }, + { + "url": "/FileAPI/FileReader/test_errors-manual.html" }, { "url": "/FileAPI/filelist-section/filelist_multiple_selected_files-manual.html" @@ -4383,6 +4404,18 @@ { "url": "/FileAPI/idlharness-manual.html" }, + { + "url": "/FileAPI/reading-data-section/filereader_file-manual.html" + }, + { + "url": "/FileAPI/reading-data-section/filereader_file_img-manual.html" + }, + { + "url": "/FileAPI/url/url_createobjecturl_file-manual.html" + }, + { + "url": "/FileAPI/url/url_createobjecturl_file_img-manual.html" + }, { "url": "/XMLHttpRequest/send-authentication-existing-session-manual.htm" }, @@ -5154,6 +5187,11 @@ "ref_url": "/2dcontext/transformations/canvas_transformations_scale_001-ref.htm", "url": "/2dcontext/transformations/canvas_transformations_scale_001.htm" }, + { + "ref_type": "==", + "ref_url": "/FileAPI/url/url_xmlhttprequest_img-ref.html", + "url": "/FileAPI/url/url_xmlhttprequest_img.html" + }, { "ref_type": "==", "ref_url": "/custom-elements/registering-custom-elements/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-custom-tag-ref.html", @@ -9385,48 +9423,27 @@ { "url": "/DOMEvents/throwing-in-listener-when-all-have-not-run-yet.html" }, - { - "url": "/FileAPI/Blob-XHR-revoke.html" - }, - { - "url": "/FileAPI/Blob-close.html" - }, - { - "url": "/FileAPI/Blob-constructor.html" - }, - { - "url": "/FileAPI/Blob-slice.html" - }, - { - "url": "/FileAPI/File-constructor.html" - }, - { - "url": "/FileAPI/FileReader-interface/filereader_abort.html" - }, - { - "url": "/FileAPI/FileReader-interface/filereader_error.html" - }, - { - "url": "/FileAPI/FileReader-interface/filereader_readAsArrayBuffer.html" - }, - { - "url": "/FileAPI/FileReader-interface/filereader_readAsDataURL.html" - }, - { - "url": "/FileAPI/FileReader-interface/filereader_readAsText.html" - }, - { - "url": "/FileAPI/FileReader-interface/filereader_readystate.html" - }, - { - "url": "/FileAPI/FileReader-interface/filereader_result.html" - }, - { - "url": "/FileAPI/FileReader/Determining-Encoding.html" - }, { "url": "/FileAPI/FileReaderSync.worker" }, + { + "url": "/FileAPI/blob/Blob-XHR-revoke.html" + }, + { + "url": "/FileAPI/blob/Blob-close.html" + }, + { + "url": "/FileAPI/blob/Blob-constructor.html" + }, + { + "url": "/FileAPI/blob/Blob-slice.html" + }, + { + "url": "/FileAPI/file/File-constructor.html" + }, + { + "url": "/FileAPI/fileReader.html" + }, { "url": "/FileAPI/filelist-section/filelist.html" }, @@ -9436,6 +9453,36 @@ { "url": "/FileAPI/idlharness.html" }, + { + "url": "/FileAPI/reading-data-section/Determining-Encoding.html" + }, + { + "url": "/FileAPI/reading-data-section/filereader_abort.html" + }, + { + "url": "/FileAPI/reading-data-section/filereader_error.html" + }, + { + "url": "/FileAPI/reading-data-section/filereader_readAsArrayBuffer.html" + }, + { + "url": "/FileAPI/reading-data-section/filereader_readAsDataURL.html" + }, + { + "url": "/FileAPI/reading-data-section/filereader_readAsText.html" + }, + { + "url": "/FileAPI/reading-data-section/filereader_readystate.html" + }, + { + "url": "/FileAPI/reading-data-section/filereader_result.html" + }, + { + "url": "/FileAPI/url/url_createobjecturl_blob.html" + }, + { + "url": "/FileAPI/url/url_xmlhttprequest.html" + }, { "url": "/IndexedDB/abort-in-initial-upgradeneeded.html" }, @@ -10174,6 +10221,12 @@ { "url": "/XMLHttpRequest/FormData-append.html" }, + { + "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.html" + }, + { + "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.worker" + }, { "url": "/XMLHttpRequest/abort-after-receive.htm" }, @@ -10633,12 +10686,6 @@ { "url": "/XMLHttpRequest/timeout-sync.htm" }, - { - "url": "/XMLHttpRequest/withcredentials-set.htm" - }, - { - "url": "/XMLHttpRequest/withcredentials-wrong-state.htm" - }, { "url": "/XMLHttpRequest/xmlhttprequest-basic.htm" }, @@ -11317,6 +11364,9 @@ { "url": "/dom/nodes/Element-lastElementChild.xhtml" }, + { + "url": "/dom/nodes/Element-matches.html" + }, { "url": "/dom/nodes/Element-nextElementSibling.html" }, @@ -13606,6 +13656,9 @@ { "url": "/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html" }, + { + "url": "/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html" + }, { "url": "/html/semantics/forms/attributes-common-to-form-controls/formAction_document_address.html" }, @@ -14398,12 +14451,21 @@ { "url": "/js/builtins/Math.min.html" }, + { + "url": "/js/builtins/Object.prototype.freeze.html" + }, { "url": "/js/builtins/Object.prototype.hasOwnProperty-order.html" }, { "url": "/js/builtins/Object.prototype.hasOwnProperty-prototype-chain.html" }, + { + "url": "/js/builtins/Object.prototype.preventExtensions.html" + }, + { + "url": "/js/builtins/Object.prototype.seal.html" + }, { "url": "/js/builtins/WeakMap.prototype-properties.html" }, @@ -15281,10 +15343,7 @@ "url": "/resource-timing/test_resource_timing.html" }, { - "url": "/selectors-api/tests/submissions/Opera/Element-matches.html" - }, - { - "url": "/selectors-api/tests/submissions/Opera/ParentNode-find-findAll.html" + "url": "/selectors-api/tests/submissions/Opera/ParentNode-query-queryAll.html" }, { "url": "/selectors/attribute-selectors/attribute-case/cssom.html" @@ -16876,9 +16935,6 @@ { "url": "/workers/WorkerGlobalScope_EventTarget.htm" }, - { - "url": "/workers/WorkerGlobalScope_XMLHttpRequest.htm" - }, { "url": "/workers/WorkerGlobalScope_addEventListener.htm" }, @@ -17081,7 +17137,7 @@ "url": "/workers/interfaces.worker" }, { - "url": "/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.html" + "url": "/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.worker" }, { "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/event-ports-dedicated.html" @@ -17093,7 +17149,7 @@ "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/message-event.html" }, { - "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/return-value.html" + "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/return-value.worker" }, { "url": "/workers/interfaces/DedicatedWorkerGlobalScope/postMessage/second-argument-null-in-array.html" @@ -17829,6 +17885,10 @@ "timeout": "long", "url": "/websockets/cookies/007.html" }, + { + "timeout": "long", + "url": "/websockets/extended-payload-length.html" + }, { "timeout": "long", "url": "/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html" @@ -17916,6 +17976,6 @@ "deleted": [], "items": {} }, - "rev": "34eea70476fb2a9e5f5b3cfc6e3dbad441790056", + "rev": "68c7ce132cc91eab73bad13c69225d79fe97a3ec", "url_base": "/" } \ No newline at end of file diff --git a/tests/wpt/metadata/XMLHttpRequest/XMLHttpRequest-withCredentials.html.ini b/tests/wpt/metadata/XMLHttpRequest/XMLHttpRequest-withCredentials.html.ini new file mode 100644 index 00000000000..3c608dca283 --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/XMLHttpRequest-withCredentials.html.ini @@ -0,0 +1,8 @@ +[XMLHttpRequest-withCredentials.html] + type: testharness + [setting on synchronous XHR] + expected: FAIL + + [setting withCredentials when not in UNSENT, OPENED state] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.ini b/tests/wpt/metadata/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.ini new file mode 100644 index 00000000000..46e66dde6ba --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.ini @@ -0,0 +1,5 @@ +[XMLHttpRequest-withCredentials.worker] + type: testharness + [setting withCredentials when not in UNSENT, OPENED state] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/withcredentials-wrong-state.htm.ini b/tests/wpt/metadata/XMLHttpRequest/withcredentials-wrong-state.htm.ini deleted file mode 100644 index 7bc82fd3c83..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/withcredentials-wrong-state.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[withcredentials-wrong-state.htm] - type: testharness - [XMLHttpRequest: setting withCredentials when not in UNSENT, OPENED state] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/nodes/Element-closest.html.ini b/tests/wpt/metadata/dom/nodes/Element-closest.html.ini index ea5ab2754ae..22e0b1a7bfb 100644 --- a/tests/wpt/metadata/dom/nodes/Element-closest.html.ini +++ b/tests/wpt/metadata/dom/nodes/Element-closest.html.ini @@ -1,6 +1,5 @@ [Element-closest.html] type: testharness - [Element.closest with context node \'test10\' and selector \':empty\'] expected: FAIL diff --git a/tests/wpt/metadata/dom/nodes/Element-matches.html.ini b/tests/wpt/metadata/dom/nodes/Element-matches.html.ini new file mode 100644 index 00000000000..6fe7f798375 --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/Element-matches.html.ini @@ -0,0 +1,3 @@ +[Element-matches.html] + type: testharness + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/browsing-context-choose-parent.html.ini b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/browsing-context-choose-parent.html.ini index c4ab842bd2a..feea11f6ac3 100644 --- a/tests/wpt/metadata/html/browsers/windows/browsing-context-names/browsing-context-choose-parent.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/browsing-context-names/browsing-context-choose-parent.html.ini @@ -1,6 +1,3 @@ [browsing-context-choose-parent.html] type: testharness expected: TIMEOUT - [The parent browsing context must be chosen if the given name is \'_parent\'] - expected: NOTRUN - diff --git a/tests/wpt/metadata/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html.ini b/tests/wpt/metadata/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html.ini new file mode 100644 index 00000000000..f6dc2dd8a54 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html.ini @@ -0,0 +1,38 @@ +[disabled-elements-01.html] + type: testharness + [Test [button\]: default behaviour is NOT disabled] + expected: FAIL + + [Test [button\]: verify disabled acts as boolean attribute] + expected: FAIL + + [Test [button\]: dispatched click event should succeed and queued prevented] + expected: FAIL + + [Test [input\]: default behaviour is NOT disabled] + expected: FAIL + + [Test [input\]: verify disabled acts as boolean attribute] + expected: FAIL + + [Test [input\]: dispatched click event should succeed and queued prevented] + expected: FAIL + + [Test [select\]: default behaviour is NOT disabled] + expected: FAIL + + [Test [select\]: verify disabled acts as boolean attribute] + expected: FAIL + + [Test [select\]: dispatched click event should succeed and queued prevented] + expected: FAIL + + [Test [textarea\]: default behaviour is NOT disabled] + expected: FAIL + + [Test [textarea\]: verify disabled acts as boolean attribute] + expected: FAIL + + [Test [textarea\]: dispatched click event should succeed and queued prevented] + expected: FAIL + diff --git a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/079.html.ini b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/079.html.ini index 95f70e89e46..964537ea8c5 100644 --- a/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/079.html.ini +++ b/tests/wpt/metadata/old-tests/submission/Opera/script_scheduling/079.html.ini @@ -1,6 +1,3 @@ [079.html] type: testharness expected: TIMEOUT - [ setting location to javascript URL from event handler ] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.html.ini b/tests/wpt/metadata/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.html.ini deleted file mode 100644 index 0db331c8b67..00000000000 --- a/tests/wpt/metadata/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[onmessage.html] - type: testharness - [onmessage] - expected: FAIL - diff --git a/tests/wpt/metadata/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.worker.ini b/tests/wpt/metadata/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.worker.ini new file mode 100644 index 00000000000..193f6bf4c8f --- /dev/null +++ b/tests/wpt/metadata/workers/interfaces/DedicatedWorkerGlobalScope/onmessage.worker.ini @@ -0,0 +1,5 @@ +[onmessage.worker] + type: testharness + [Setting onmessage to an object] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/close/sending-messages.html.ini b/tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/close/sending-messages.html.ini index 63efd734ddd..379fec0c3ec 100644 --- a/tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/close/sending-messages.html.ini +++ b/tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/close/sending-messages.html.ini @@ -1,5 +1,6 @@ [sending-messages.html] type: testharness + expected: TIMEOUT [close() and sending messages] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/web-platform-tests b/tests/wpt/web-platform-tests index 34eea70476f..68c7ce132cc 160000 --- a/tests/wpt/web-platform-tests +++ b/tests/wpt/web-platform-tests @@ -1 +1 @@ -Subproject commit 34eea70476fb2a9e5f5b3cfc6e3dbad441790056 +Subproject commit 68c7ce132cc91eab73bad13c69225d79fe97a3ec From 394f8163433559cea294cb4a4e335cc43ccde1fe Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 19 Jan 2015 13:40:29 +0100 Subject: [PATCH 05/11] Disallow lines that span more than 160 columns. The Rust style guide suggests 100, but we have too many violations in the tree already. This check can be tightened over time. --- components/devtools/protocol.rs | 4 +++- components/layout/fragment.rs | 23 ++++++++++++++++++----- components/script/dom/element.rs | 4 +++- components/util/smallvec.rs | 21 ++++++++++++++++++--- python/tidy.py | 9 ++++++++- 5 files changed, 50 insertions(+), 11 deletions(-) diff --git a/components/devtools/protocol.rs b/components/devtools/protocol.rs index be27eed2ec1..df9078c7bf1 100644 --- a/components/devtools/protocol.rs +++ b/components/devtools/protocol.rs @@ -2,7 +2,9 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/// Low-level wire protocol implementation. Currently only supports [JSON packets](https://wiki.mozilla.org/Remote_Debugging_Protocol_Stream_Transport#JSON_Packets). +//! Low-level wire protocol implementation. Currently only supports +//! [JSON packets] +//! (https://wiki.mozilla.org/Remote_Debugging_Protocol_Stream_Transport#JSON_Packets). use serialize::{json, Encodable}; use serialize::json::Json; diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 521b000dfcf..8bad0a288b6 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -1256,11 +1256,24 @@ impl Fragment { pub fn find_split_info_by_new_line(&self) -> Option<(SplitInfo, Option, Arc> /* TODO(bjz): remove */)> { match self.specific { - SpecificFragmentInfo::Canvas(_) | SpecificFragmentInfo::Generic | SpecificFragmentInfo::Iframe(_) | SpecificFragmentInfo::Image(_) | SpecificFragmentInfo::Table | SpecificFragmentInfo::TableCell | - SpecificFragmentInfo::TableRow | SpecificFragmentInfo::TableWrapper => None, - SpecificFragmentInfo::TableColumn(_) => panic!("Table column fragments do not need to split"), - SpecificFragmentInfo::UnscannedText(_) => panic!("Unscanned text fragments should have been scanned by now!"), - SpecificFragmentInfo::InlineBlock(_) | SpecificFragmentInfo::InlineAbsoluteHypothetical(_) => { + SpecificFragmentInfo::Canvas(_) | + SpecificFragmentInfo::Generic | + SpecificFragmentInfo::Iframe(_) | + SpecificFragmentInfo::Image(_) | + SpecificFragmentInfo::Table | + SpecificFragmentInfo::TableCell | + SpecificFragmentInfo::TableRow | + SpecificFragmentInfo::TableWrapper => { + None + } + SpecificFragmentInfo::TableColumn(_) => { + panic!("Table column fragments do not need to split") + } + SpecificFragmentInfo::UnscannedText(_) => { + panic!("Unscanned text fragments should have been scanned by now!") + } + SpecificFragmentInfo::InlineBlock(_) | + SpecificFragmentInfo::InlineAbsoluteHypothetical(_) => { panic!("Inline blocks or inline absolute hypothetical fragments do not get split") } SpecificFragmentInfo::ScannedText(ref text_fragment_info) => { diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 14f48f5f3b6..0735e19299f 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -111,7 +111,9 @@ impl Element { create_element(name, prefix, document, creator) } - pub fn new_inherited(type_id: ElementTypeId, local_name: DOMString, namespace: Namespace, prefix: Option, document: JSRef) -> Element { + pub fn new_inherited(type_id: ElementTypeId, local_name: DOMString, + namespace: Namespace, prefix: Option, + document: JSRef) -> Element { Element { node: Node::new_inherited(NodeTypeId::Element(type_id), document), local_name: Atom::from_slice(local_name.as_slice()), diff --git a/components/util/smallvec.rs b/components/util/smallvec.rs index 60e22f25a70..e92d3d3eeba 100644 --- a/components/util/smallvec.rs +++ b/components/util/smallvec.rs @@ -531,7 +531,10 @@ pub mod tests { let mut v = SmallVec16::new(); v.push("hello".into_string()); v.push("there".into_string()); - assert_eq!(v.as_slice(), vec!["hello".into_string(), "there".into_string()].as_slice()); + assert_eq!(v.as_slice(), vec![ + "hello".into_string(), + "there".into_string(), + ].as_slice()); } #[test] @@ -541,7 +544,12 @@ pub mod tests { v.push("there".into_string()); v.push("burma".into_string()); v.push("shave".into_string()); - assert_eq!(v.as_slice(), vec!["hello".into_string(), "there".into_string(), "burma".into_string(), "shave".into_string()].as_slice()); + assert_eq!(v.as_slice(), vec![ + "hello".into_string(), + "there".into_string(), + "burma".into_string(), + "shave".into_string(), + ].as_slice()); } #[test] @@ -556,7 +564,14 @@ pub mod tests { v.push("burma".into_string()); v.push("shave".into_string()); assert_eq!(v.as_slice(), vec![ - "hello".into_string(), "there".into_string(), "burma".into_string(), "shave".into_string(), "hello".into_string(), "there".into_string(), "burma".into_string(), "shave".into_string(), + "hello".into_string(), + "there".into_string(), + "burma".into_string(), + "shave".into_string(), + "hello".into_string(), + "there".into_string(), + "burma".into_string(), + "shave".into_string(), ].as_slice()); } } diff --git a/python/tidy.py b/python/tidy.py index da930eea333..fc282aaa464 100644 --- a/python/tidy.py +++ b/python/tidy.py @@ -56,6 +56,13 @@ def check_license(contents): yield (1, "incorrect license") +def check_length(contents): + lines = contents.splitlines(True) + for idx, line in enumerate(lines): + if len(line) >= 160: + yield (idx + 1, "(much) overlong line") + + def check_whitespace(contents): lines = contents.splitlines(True) for idx, line in enumerate(lines): @@ -88,7 +95,7 @@ def scan(): all_files = collect_file_names(directories_to_check) files_to_check = filter(should_check, all_files) - checking_functions = [check_license, check_whitespace] + checking_functions = [check_license, check_length, check_whitespace] errors = collect_errors_for_files(files_to_check, checking_functions) errors = list(errors) From 05c4e3b9f51df868352a137ff211e9ef62e85592 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 19 Jan 2015 14:42:30 +0100 Subject: [PATCH 06/11] Stop using Vec::from_elem. It is obsolete on Rust master. --- components/gfx/text/glyph.rs | 4 +++- components/gfx/text/shaping/harfbuzz.rs | 6 ++++-- components/layout/display_list_builder.rs | 3 ++- components/script/dom/bindings/codegen/CodegenRust.py | 7 ++++--- components/util/cache.rs | 3 ++- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/components/gfx/text/glyph.rs b/components/gfx/text/glyph.rs index a991f147bed..06e16c04a79 100644 --- a/components/gfx/text/glyph.rs +++ b/components/gfx/text/glyph.rs @@ -8,6 +8,7 @@ use servo_util::range::{Range, RangeIndex, EachIndex}; use servo_util::geometry::Au; use std::cmp::PartialOrd; +use std::iter::repeat; use std::num::NumCast; use std::mem; use std::u16; @@ -526,7 +527,8 @@ impl<'a> GlyphStore { assert!(length > 0); GlyphStore { - entry_buffer: Vec::from_elem(length as uint, GlyphEntry::initial()), + entry_buffer: repeat(GlyphEntry::initial()).take(length as uint) + .collect(), detail_store: DetailedGlyphStore::new(), is_whitespace: is_whitespace, } diff --git a/components/gfx/text/shaping/harfbuzz.rs b/components/gfx/text/shaping/harfbuzz.rs index cc328ca4f8c..fb5d83b6457 100644 --- a/components/gfx/text/shaping/harfbuzz.rs +++ b/components/gfx/text/shaping/harfbuzz.rs @@ -43,6 +43,7 @@ use libc::{c_uint, c_int, c_void, c_char}; use servo_util::geometry::Au; use servo_util::range::Range; use std::char; +use std::iter::repeat; use std::mem; use std::cmp; use std::ptr; @@ -295,9 +296,10 @@ impl Shaper { // fast path: all chars are single-byte. if byte_max == char_max { - byte_to_glyph = Vec::from_elem(byte_max as uint, NO_GLYPH); + byte_to_glyph = repeat(NO_GLYPH).take(byte_max as uint).collect(); } else { - byte_to_glyph = Vec::from_elem(byte_max as uint, CONTINUATION_BYTE); + byte_to_glyph = repeat(CONTINUATION_BYTE).take(byte_max as uint) + .collect(); for (i, _) in text.char_indices() { byte_to_glyph[i] = NO_GLYPH; } diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs index 54725d122b0..2e4ae665ea9 100644 --- a/components/layout/display_list_builder.rs +++ b/components/layout/display_list_builder.rs @@ -44,6 +44,7 @@ use servo_util::geometry::{mod, Au, to_px}; use servo_util::logical_geometry::{LogicalPoint, LogicalRect, LogicalSize}; use servo_util::opts; use std::default::Default; +use std::iter::repeat; use std::num::FloatMath; use style::computed::{AngleOrCorner, LengthOrPercentage, HorizontalDirection, VerticalDirection}; use style::computed::{Image, LinearGradient}; @@ -881,7 +882,7 @@ impl FragmentDisplayListBuilding for Fragment { renderer.deref().lock().send(SendPixelContents(sender)); receiver.recv() }, - None => Vec::from_elem(width * height * 4, 0xFFu8) + None => repeat(0xFFu8).take(width * height * 4).collect(), }; let canvas_display_item = box ImageDisplayItem { diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 1cc9c2dc9e8..3d28cf2bdc9 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -4584,11 +4584,12 @@ class CGBindingRoot(CGThing): 'page::JSPageInfo', 'libc', 'servo_util::str::DOMString', - 'std::mem', 'std::cmp', + 'std::iter::repeat', + 'std::mem', + 'std::num', 'std::ptr', 'std::str', - 'std::num', ]) # Add the auto-generated comment. @@ -4885,7 +4886,7 @@ class CallbackMember(CGNativeMember): if self.argCount > 0: replacements["argCount"] = self.argCountStr replacements["argvDecl"] = string.Template( - "let mut argv = Vec::from_elem(${argCount}, UndefinedValue());\n" + "let mut argv = repeat(UndefinedValue()).take(${argCount}).collect::>();\n" ).substitute(replacements) else: # Avoid weird 0-sized arrays diff --git a/components/util/cache.rs b/components/util/cache.rs index 03bd649f777..35390d309bf 100644 --- a/components/util/cache.rs +++ b/components/util/cache.rs @@ -6,6 +6,7 @@ use std::collections::HashMap; use std::collections::hash_map::{Occupied, Vacant}; use rand::Rng; use std::hash::{Hash, sip}; +use std::iter::repeat; use std::rand::task_rng; use std::slice::Items; @@ -148,7 +149,7 @@ impl SimpleHashCache { pub fn new(cache_size: uint) -> SimpleHashCache { let mut r = task_rng(); SimpleHashCache { - entries: Vec::from_elem(cache_size, None), + entries: repeat(None).take(cache_size).collect(), k0: r.gen(), k1: r.gen(), } From dc008977f96de90170a72be226af3e3eb54def13 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Wed, 14 Jan 2015 14:01:52 -0400 Subject: [PATCH 07/11] Share supported CSS properties between style and CSSStyleDeclaration Avoids duplicated code when implementing the CSS properties accessors in CSSStyleDeclaration WebIDL. Servo internal CSS properties are not accessible. CSS property "float" is unnacessible because we currently lack support for BinaryName IDL annotation (#4435). Fixes #4429, #4430. --- components/script/dom/cssstyledeclaration.rs | 90 +------------------ .../dom/webidls/CSSStyleDeclaration.webidl | 18 ++++ components/script/lib.rs | 1 + components/style/properties/mod.rs.mako | 34 +++++-- 4 files changed, 46 insertions(+), 97 deletions(-) diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index 7ddf5260283..b95df387901 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -342,93 +342,5 @@ impl<'a> CSSStyleDeclarationMethods for JSRef<'a, CSSStyleDeclaration> { rval } - css_properties!( - [Color, SetColor, "color"], - [Background, SetBackground, "background"], - [BackgroundColor, SetBackgroundColor, "background-color"], - [BackgroundPosition, SetBackgroundPosition, "background-position"], - [BackgroundImage, SetBackgroundImage, "background-image"], - [BackgroundRepeat, SetBackgroundRepeat, "background-repeat"], - [BackgroundAttachment, SetBackgroundAttachment, "background-attachment"], - [Border, SetBorder, "border"], - [BorderColor, SetBorderColor, "border-color"], - [BorderRadius, SetBorderRadius, "border-radius"], - [BorderStyle, SetBorderStyle, "border-style"], - [BorderWidth, SetBorderWidth, "border-width"], - [BorderBottom, SetBorderBottom, "border-bottom"], - [BorderBottomColor, SetBorderBottomColor, "border-bottom-color"], - [BorderBottomStyle, SetBorderBottomStyle, "border-bottom-style"], - [BorderBottomWidth, SetBorderBottomWidth, "border-bottom-width"], - [BorderLeft, SetBorderLeft, "border-left"], - [BorderLeftColor, SetBorderLeftColor, "border-left-color"], - [BorderLeftStyle, SetBorderLeftStyle, "border-left-style"], - [BorderLeftWidth, SetBorderLeftWidth, "border-left-width"], - [BorderRight, SetBorderRight, "border-right"], - [BorderRightColor, SetBorderRightColor, "border-right-color"], - [BorderRightStyle, SetBorderRightStyle, "border-right-style"], - [BorderRightWidth, SetBorderRightWidth, "border-right-width"], - [BorderTop, SetBorderTop, "border-top"], - [BorderTopColor, SetBorderTopColor, "border-top-color"], - [BorderTopStyle, SetBorderTopStyle, "border-top-style"], - [BorderTopWidth, SetBorderTopWidth, "border-top-width"], - [Content, SetContent, "content"], - [Display, SetDisplay, "display"], - [Opacity, SetOpacity, "opacity"], - [Width, SetWidth, "width"], - [MinWidth, SetMinWidth, "min-width"], - [MaxWidth, SetMaxWidth, "max-width"], - [Height, SetHeight, "height"], - [MinHeight, SetMinHeight, "min-height"], - [MaxHeight, SetMaxHeight, "max-height"], - [Clear, SetClear, "clear"], - [Direction, SetDirection, "direction"], - [LineHeight, SetLineHeight, "line-height"], - [VerticalAlign, SetVerticalAlign, "vertical-align"], - [ListStyle, SetListStyle, "list-style"], - [ListStylePosition, SetListStylePosition, "list-style-position"], - [ListStyleType, SetListStyleType, "list-style-type"], - [ListStyleImage, SetListStyleImage, "list-style-image"], - [Visibility, SetVisibility, "visibility"], - [Cursor, SetCursor, "cursor"], - [BoxShadow, SetBoxShadow, "box-shadow"], - [BoxSizing, SetBoxSizing, "box-sizing"], - [Overflow, SetOverflow, "overflow"], - [OverflowWrap, SetOverflowWrap, "overflow-wrap"], - [TableLayout, SetTableLayout, "table-layout"], - [EmptyCells, SetEmptyCells, "empty-cells"], - [CaptionSide, SetCaptionSide, "caption-side"], - [WhiteSpace, SetWhiteSpace, "white-space"], - [WritingMode, SetWritingMode, "writing-mode"], - [LetterSpacing, SetLetterSpacing, "letter-spacing"], - [WordSpacing, SetWordSpacing, "word-spacing"], - [WordWrap, SetWordWrap, "word-wrap"], - [TextAlign, SetTextAlign, "text-align"], - [TextDecoration, SetTextDecoration, "text-decoration"], - [TextIndent, SetTextIndent, "text-indent"], - [TextOrientation, SetTextOrientation, "text-orientation"], - [TextTransform, SetTextTransform, "text-transform"], - [Font, SetFont, "font"], - [FontFamily, SetFontFamily, "font-family"], - [FontSize, SetFontSize, "font-size"], - [FontStyle, SetFontStyle, "font-style"], - [FontVariant, SetFontVariant, "font-variant"], - [FontWeight, SetFontWeight, "font-weight"], - [Margin, SetMargin, "margin"], - [MarginBottom, SetMarginBottom, "margin-bottom"], - [MarginLeft, SetMarginLeft, "margin-left"], - [MarginRight, SetMarginRight, "margin-right"], - [MarginTop, SetMarginTop, "margin-top"], - [Padding, SetPadding, "padding"], - [PaddingBottom, SetPaddingBottom, "padding-bottom"], - [PaddingLeft, SetPaddingLeft, "padding-left"], - [PaddingRight, SetPaddingRight, "padding-right"], - [PaddingTop, SetPaddingTop, "padding-top"], - [Outline, SetOutline, "outline"], - [Position, SetPosition, "position"], - [Bottom, SetBottom, "bottom"], - [Left, SetLeft, "left"], - [Right, SetRight, "right"], - [Top, SetTop, "top"], - [ZIndex, SetZIndex, "z-index"] - ) + css_properties_accessors!(css_properties) } diff --git a/components/script/dom/webidls/CSSStyleDeclaration.webidl b/components/script/dom/webidls/CSSStyleDeclaration.webidl index 7f37e44cbbe..afe511b7e1f 100644 --- a/components/script/dom/webidls/CSSStyleDeclaration.webidl +++ b/components/script/dom/webidls/CSSStyleDeclaration.webidl @@ -46,6 +46,8 @@ partial interface CSSStyleDeclaration { [TreatNullAs=EmptyString] attribute DOMString borderWidth; [TreatNullAs=EmptyString] attribute DOMString borderBottom; [TreatNullAs=EmptyString] attribute DOMString borderBottomColor; + [TreatNullAs=EmptyString] attribute DOMString borderBottomLeftRadius; + [TreatNullAs=EmptyString] attribute DOMString borderBottomRightRadius; [TreatNullAs=EmptyString] attribute DOMString borderBottomStyle; [TreatNullAs=EmptyString] attribute DOMString borderBottomWidth; [TreatNullAs=EmptyString] attribute DOMString borderLeft; @@ -58,6 +60,8 @@ partial interface CSSStyleDeclaration { [TreatNullAs=EmptyString] attribute DOMString borderRightWidth; [TreatNullAs=EmptyString] attribute DOMString borderTop; [TreatNullAs=EmptyString] attribute DOMString borderTopColor; + [TreatNullAs=EmptyString] attribute DOMString borderTopLeftRadius; + [TreatNullAs=EmptyString] attribute DOMString borderTopRightRadius; [TreatNullAs=EmptyString] attribute DOMString borderTopStyle; [TreatNullAs=EmptyString] attribute DOMString borderTopWidth; @@ -80,10 +84,16 @@ partial interface CSSStyleDeclaration { [TreatNullAs=EmptyString] attribute DOMString clear; + [TreatNullAs=EmptyString] attribute DOMString clip; + [TreatNullAs=EmptyString] attribute DOMString direction; + [TreatNullAs=EmptyString] attribute DOMString filter; + [TreatNullAs=EmptyString] attribute DOMString lineHeight; + [TreatNullAs=EmptyString] attribute DOMString mixBlendMode; + [TreatNullAs=EmptyString] attribute DOMString verticalAlign; [TreatNullAs=EmptyString] attribute DOMString listStyle; @@ -103,6 +113,7 @@ partial interface CSSStyleDeclaration { [TreatNullAs=EmptyString] attribute DOMString writingMode; [TreatNullAs=EmptyString] attribute DOMString letterSpacing; + [TreatNullAs=EmptyString] attribute DOMString wordBreak; [TreatNullAs=EmptyString] attribute DOMString wordSpacing; [TreatNullAs=EmptyString] attribute DOMString wordWrap; @@ -110,6 +121,7 @@ partial interface CSSStyleDeclaration { [TreatNullAs=EmptyString] attribute DOMString textDecoration; [TreatNullAs=EmptyString] attribute DOMString textIndent; [TreatNullAs=EmptyString] attribute DOMString textOrientation; + [TreatNullAs=EmptyString] attribute DOMString textRendering; [TreatNullAs=EmptyString] attribute DOMString textTransform; [TreatNullAs=EmptyString] attribute DOMString font; @@ -132,9 +144,15 @@ partial interface CSSStyleDeclaration { [TreatNullAs=EmptyString] attribute DOMString paddingTop; [TreatNullAs=EmptyString] attribute DOMString outline; + [TreatNullAs=EmptyString] attribute DOMString outlineColor; + [TreatNullAs=EmptyString] attribute DOMString outlineStyle; + [TreatNullAs=EmptyString] attribute DOMString outlineWidth; + [TreatNullAs=EmptyString] attribute DOMString outlineOffset; [TreatNullAs=EmptyString] attribute DOMString position; + [TreatNullAs=EmptyString] attribute DOMString pointerEvents; + [TreatNullAs=EmptyString] attribute DOMString top; [TreatNullAs=EmptyString] attribute DOMString right; [TreatNullAs=EmptyString] attribute DOMString left; diff --git a/components/script/lib.rs b/components/script/lib.rs index 7593a3b68a3..a3c528df29c 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -35,6 +35,7 @@ extern crate script_traits; extern crate "plugins" as servo_plugins; extern crate "net" as servo_net; extern crate "util" as servo_util; +#[phase(plugin, link)] extern crate style; extern crate "msg" as servo_msg; extern crate url; diff --git a/components/style/properties/mod.rs.mako b/components/style/properties/mod.rs.mako index 29f4c17b8a8..5f800fd07e3 100644 --- a/components/style/properties/mod.rs.mako +++ b/components/style/properties/mod.rs.mako @@ -39,14 +39,14 @@ def to_rust_ident(name): name += "_" return name +def to_camel_case(ident): + return re.sub("_([a-z])", lambda m: m.group(1).upper(), ident.strip("_").capitalize()) + class Longhand(object): def __init__(self, name, derived_from=None, experimental=False): self.name = name self.ident = to_rust_ident(name) - self.camel_case, _ = re.subn( - "_([a-z])", - lambda m: m.group(1).upper(), - self.ident.strip("_").capitalize()) + self.camel_case = to_camel_case(self.ident) self.style_struct = THIS_STYLE_STRUCT self.experimental = experimental if derived_from is None: @@ -58,6 +58,8 @@ class Shorthand(object): def __init__(self, name, sub_properties): self.name = name self.ident = to_rust_ident(name) + self.camel_case = to_camel_case(self.ident) + self.derived_from = None self.sub_properties = [LONGHANDS_BY_NAME[s] for s in sub_properties] class StyleStruct(object): @@ -3358,16 +3360,32 @@ pub fn make_inline(style: &ComputedValues) -> ComputedValues { pub fn is_supported_property(property: &str) -> bool { match property { - % for property in SHORTHANDS: - "${property.name}" => true, - % endfor - % for property in LONGHANDS: + % for property in SHORTHANDS + LONGHANDS: "${property.name}" => true, % endfor _ => false, } } +#[macro_export] +macro_rules! css_properties_accessors( + ($macro: ident) => ( + $macro!( + % for property in SHORTHANDS + LONGHANDS: + ## Servo internal CSS properties are not accessible. + ## FIXME: Add BinaryName WebIDL annotation (#4435). + % if property.derived_from is None and property.name != "float": + % if property != LONGHANDS[-1]: + [${property.camel_case}, Set${property.camel_case}, "${property.name}"], + % else: + [${property.camel_case}, Set${property.camel_case}, "${property.name}"] + % endif + % endif + % endfor + ) + ) +) + pub fn longhands_from_shorthand(shorthand: &str) -> Option> { match shorthand { % for property in SHORTHANDS: From eaa600a8c6e199abca6e9454934a1b2312448573 Mon Sep 17 00:00:00 2001 From: glennw Date: Tue, 20 Jan 2015 06:17:13 +1000 Subject: [PATCH 08/11] Add libosmesa6-dev to debian dependencies Needs to be updated for arch / fedora too, but I'm not sure what the relevant packages are. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ed21d7975b..3c668bb4eaa 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ On Debian-based Linuxes: sudo apt-get install curl freeglut3-dev \ libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \ msttcorefonts gperf g++ cmake python-virtualenv \ - libssl-dev libbz2-dev + libssl-dev libbz2-dev libosmesa6-dev ``` On Fedora: From a7d18f9c03e3b777b323a16dd030d7087d542aa7 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 23 Dec 2014 09:03:36 +1000 Subject: [PATCH 09/11] Switch the default windowing system to glutin. See below for details. This change makes glutin the default windowing system on mac/linux. If you run into any issues with the glutin system, you can temporarily build the GLFW system with the following command: cd components/servo ../../mach cargo build --no-default-features --features=glfw Once any glutin related issues have been sorted out, the GLFW port will be removed. --- components/servo/Cargo.toml | 4 ++-- components/servo/main.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 52bdb2b6f31..f42178bb90f 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -27,8 +27,8 @@ path = "../../tests/contenttest.rs" harness = false [features] -default = ["glfw_app"] -glutin = ["glutin_app"] +default = ["glutin_app"] +glfw = ["glfw_app"] [dependencies.compositing] path = "../compositing" diff --git a/components/servo/main.rs b/components/servo/main.rs index 235b455ab32..81723d64b04 100644 --- a/components/servo/main.rs +++ b/components/servo/main.rs @@ -14,9 +14,9 @@ extern crate servo; extern crate time; extern crate "util" as servo_util; -#[cfg(all(feature = "glutin",not(test)))] +#[cfg(all(feature = "glutin_app",not(test)))] extern crate "glutin_app" as app; -#[cfg(all(feature = "glfw_app",not(test)))] +#[cfg(all(feature = "glfw",not(test)))] extern crate "glfw_app" as app; #[cfg(not(test))] From 6dd12855ac28f25da4fa609c65b1f3336d5f99c3 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 20 Jan 2015 07:53:47 +1000 Subject: [PATCH 10/11] Android doesn't need to explicitly specify glutin now. --- python/servo/build_commands.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py index aafaa815af1..78d9fb51318 100644 --- a/python/servo/build_commands.py +++ b/python/servo/build_commands.py @@ -64,10 +64,7 @@ class MachCommands(CommandBase): with cd(path.join(apk_builder_dir, "apk-builder")): subprocess.call(["cargo", "build"], env=self.build_env()) - # FIXME: This can be simplified when glutin becomes the default - # and glfw has been removed. - opts += ["--target", "arm-linux-androideabi", "--no-default-features"] - features += ["glutin"] + opts += ["--target", "arm-linux-androideabi"] if debug_mozjs or self.config["build"]["debug-mozjs"]: features += ["script/debugmozjs"] From a2a74cbb4ff09715c39f270b4bee82cd0459ee64 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Tue, 20 Jan 2015 09:09:45 +1000 Subject: [PATCH 11/11] Switch linux reftests on glutin to use osmesa software rendering. --- tests/reftest.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/reftest.rs b/tests/reftest.rs index 92c84b28b55..6c483d6d02a 100644 --- a/tests/reftest.rs +++ b/tests/reftest.rs @@ -276,6 +276,9 @@ fn capture(reftest: &Reftest, side: uint) -> (u32, u32, Vec) { if reftest.experimental { command.arg("--experimental"); } + if cfg!(target_os = "linux") { + command.args(["-r", "mesa"].as_slice()); + } let retval = match command.status() { Ok(status) => status, Err(e) => panic!("failed to execute process: {}", e),