diff options
46 files changed, 1138 insertions, 464 deletions
diff --git a/components/compositing/Cargo.toml b/components/compositing/Cargo.toml index de33358873f..cec58afb9dd 100644 --- a/components/compositing/Cargo.toml +++ b/components/compositing/Cargo.toml @@ -89,7 +89,7 @@ git = "https://github.com/servo/webrender" app_units = {version = "0.2.3", features = ["plugins"]} euclid = {version = "0.6.4", features = ["plugins"]} gleam = "0.2.8" -image = "0.7" +image = "0.9" log = "0.3.5" num = "0.1.24" offscreen_gl_context = "0.1.2" diff --git a/components/compositing/constellation.rs b/components/compositing/constellation.rs index fbefabba03c..74b09dcb477 100644 --- a/components/compositing/constellation.rs +++ b/components/compositing/constellation.rs @@ -955,7 +955,7 @@ impl<LTF: LayoutThreadFactory, STF: ScriptThreadFactory> Constellation<LTF, STF> // Compare the pipeline's url to the new url. If the origin is the same, // then reuse the script thread in creating the new pipeline - let source_url = source_pipeline.url.clone(); + let source_url = &source_pipeline.url; let same_script = source_url.host() == new_url.host() && source_url.port() == new_url.port() && diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 439e8a79f60..03638be5fab 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -1029,12 +1029,15 @@ impl Fragment { fn style_specified_intrinsic_inline_size(&self) -> IntrinsicISizesContribution { let flags = self.quantities_included_in_intrinsic_inline_size(); let style = self.style(); - let specified = if flags.contains(INTRINSIC_INLINE_SIZE_INCLUDES_SPECIFIED) { - max(model::specified(style.min_inline_size(), Au(0)), - MaybeAuto::from_style(style.content_inline_size(), Au(0)).specified_or_zero()) - } else { - Au(0) - }; + let mut specified = Au(0); + + if flags.contains(INTRINSIC_INLINE_SIZE_INCLUDES_SPECIFIED) { + specified = MaybeAuto::from_style(style.content_inline_size(), Au(0)).specified_or_zero(); + specified = max(model::specified(style.min_inline_size(), Au(0)), specified); + if let Some(max) = model::specified_or_none(style.max_inline_size(), Au(0)) { + specified = min(specified, max) + } + } // FIXME(#2261, pcwalton): This won't work well for inlines: is this OK? let surrounding_inline_size = self.surrounding_intrinsic_inline_size(); @@ -1375,7 +1378,7 @@ impl Fragment { result.union_block(&block_flow.base.intrinsic_inline_sizes) } SpecificFragmentInfo::Image(ref mut image_fragment_info) => { - let image_inline_size = match self.style.content_inline_size() { + let mut image_inline_size = match self.style.content_inline_size() { LengthOrPercentageOrAuto::Auto | LengthOrPercentageOrAuto::Percentage(_) => { image_fragment_info.image_inline_size() @@ -1383,13 +1386,19 @@ impl Fragment { LengthOrPercentageOrAuto::Length(length) => length, LengthOrPercentageOrAuto::Calc(calc) => calc.length(), }; + + image_inline_size = max(model::specified(self.style.min_inline_size(), Au(0)), image_inline_size); + if let Some(max) = model::specified_or_none(self.style.max_inline_size(), Au(0)) { + image_inline_size = min(image_inline_size, max) + } + result.union_block(&IntrinsicISizes { minimum_inline_size: image_inline_size, preferred_inline_size: image_inline_size, }); } SpecificFragmentInfo::Canvas(ref mut canvas_fragment_info) => { - let canvas_inline_size = match self.style.content_inline_size() { + let mut canvas_inline_size = match self.style.content_inline_size() { LengthOrPercentageOrAuto::Auto | LengthOrPercentageOrAuto::Percentage(_) => { canvas_fragment_info.canvas_inline_size() @@ -1397,6 +1406,12 @@ impl Fragment { LengthOrPercentageOrAuto::Length(length) => length, LengthOrPercentageOrAuto::Calc(calc) => calc.length(), }; + + canvas_inline_size = max(model::specified(self.style.min_inline_size(), Au(0)), canvas_inline_size); + if let Some(max) = model::specified_or_none(self.style.max_inline_size(), Au(0)) { + canvas_inline_size = min(canvas_inline_size, max) + } + result.union_block(&IntrinsicISizes { minimum_inline_size: canvas_inline_size, preferred_inline_size: canvas_inline_size, diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml index 58a60da2bb1..955ceb24fcb 100644 --- a/components/net/Cargo.toml +++ b/components/net/Cargo.toml @@ -44,6 +44,7 @@ openssl = "0.7.6" rustc-serialize = "0.3" threadpool = "1.0" time = "0.1.17" +unicase = "1.4.0" url = {version = "0.5.7", features = ["heap_size"]} uuid = { version = "0.2", features = ["v4"] } websocket = "0.16.1" diff --git a/components/net/fetch/methods.rs b/components/net/fetch/methods.rs index d99dc3f10e4..76140b1245f 100644 --- a/components/net/fetch/methods.rs +++ b/components/net/fetch/methods.rs @@ -5,12 +5,12 @@ use data_loader::decode; use fetch::cors_cache::{BasicCORSCache, CORSCache, CacheRequestDetails}; use http_loader::{NetworkHttpRequestFactory, create_http_connector, obtain_response}; -use hyper::header::{Accept, CacheControl, IfMatch, IfRange, IfUnmodifiedSince, Location}; -use hyper::header::{AcceptLanguage, ContentLength, ContentLanguage, HeaderView, Pragma}; -use hyper::header::{AccessControlAllowCredentials, AccessControlAllowOrigin}; -use hyper::header::{Authorization, Basic, CacheDirective, ContentEncoding, Encoding}; -use hyper::header::{ContentType, Headers, IfModifiedSince, IfNoneMatch}; -use hyper::header::{QualityItem, q, qitem, Referer as RefererHeader, UserAgent}; +use hyper::header::{Accept, AcceptLanguage, Authorization, AccessControlAllowCredentials}; +use hyper::header::{AccessControlAllowOrigin, AccessControlAllowHeaders, AccessControlAllowMethods}; +use hyper::header::{AccessControlRequestHeaders, AccessControlMaxAge, AccessControlRequestMethod, Basic}; +use hyper::header::{CacheControl, CacheDirective, ContentEncoding, ContentLength, ContentLanguage, ContentType}; +use hyper::header::{Encoding, HeaderView, Headers, IfMatch, IfRange, IfUnmodifiedSince, IfModifiedSince}; +use hyper::header::{IfNoneMatch, Pragma, Location, QualityItem, Referer as RefererHeader, UserAgent, q, qitem}; use hyper::method::Method; use hyper::mime::{Mime, SubLevel, TopLevel}; use hyper::status::StatusCode; @@ -20,9 +20,12 @@ use net_traits::request::{RedirectMode, Referer, Request, RequestMode, ResponseT use net_traits::response::{HttpsState, TerminationReason}; use net_traits::response::{Response, ResponseBody, ResponseType}; use resource_thread::CancellationListener; +use std::collections::HashSet; use std::io::Read; +use std::iter::FromIterator; use std::rc::Rc; use std::thread; +use unicase::UniCase; use url::idna::domain_to_ascii; use url::{Origin as UrlOrigin, OpaqueOrigin, Url, UrlParser, whatwg_scheme_type_mapper}; use util::thread::spawn_named; @@ -210,7 +213,7 @@ fn main_fetch(request: Rc<Request>, cors_flag: bool, recursive_flag: bool) -> Re let internal_response = if response.is_network_error() { &network_error_res } else { - response.get_actual_response() + response.actual_response() }; // Step 13 @@ -245,7 +248,7 @@ fn main_fetch(request: Rc<Request>, cors_flag: bool, recursive_flag: bool) -> Re // Step 16 if request.synchronous { - response.get_actual_response().wait_until_done(); + response.actual_response().wait_until_done(); return response; } @@ -263,7 +266,7 @@ fn main_fetch(request: Rc<Request>, cors_flag: bool, recursive_flag: bool) -> Re let internal_response = if response.is_network_error() { &network_error_res } else { - response.get_actual_response() + response.actual_response() }; // Step 18 @@ -365,7 +368,7 @@ fn http_fetch(request: Rc<Request>, } // Substep 4 - let actual_response = res.get_actual_response(); + let actual_response = res.actual_response(); if actual_response.url_list.borrow().is_empty() { *actual_response.url_list.borrow_mut() = request.url_list.borrow().clone(); } @@ -390,7 +393,7 @@ fn http_fetch(request: Rc<Request>, }, request.method.borrow().clone()); let method_mismatch = !method_cache_match && (!is_simple_method(&request.method.borrow()) || - request.use_cors_preflight); + request.use_cors_preflight); let header_mismatch = request.headers.borrow().iter().any(|view| !cache.match_header(CacheRequestDetails { origin: origin.clone(), @@ -401,7 +404,7 @@ fn http_fetch(request: Rc<Request>, // Sub-substep 1 if method_mismatch || header_mismatch { - let preflight_result = preflight_fetch(request.clone()); + let preflight_result = cors_preflight_fetch(request.clone(), Some(cache)); // Sub-substep 2 if preflight_result.response_type == ResponseType::Error { return Response::network_error(); @@ -415,8 +418,7 @@ fn http_fetch(request: Rc<Request>, // Substep 3 let credentials = match request.credentials_mode { CredentialsMode::Include => true, - CredentialsMode::CredentialsSameOrigin if - request.response_tainting.get() == ResponseTainting::Basic + CredentialsMode::CredentialsSameOrigin if request.response_tainting.get() == ResponseTainting::Basic => true, _ => false }; @@ -437,7 +439,7 @@ fn http_fetch(request: Rc<Request>, let mut response = response.unwrap(); // Step 5 - match response.get_actual_response().status.unwrap() { + match response.actual_response().status.unwrap() { // Code 301, 302, 303, 307, 308 StatusCode::MovedPermanently | StatusCode::Found | StatusCode::SeeOther | @@ -518,21 +520,21 @@ fn http_redirect_fetch(request: Rc<Request>, assert_eq!(response.return_internal.get(), true); // Step 3 - // this step is done early, because querying if Location is available says + // this step is done early, because querying if Location exists says // if it is None or Some, making it easy to seperate from the retrieval failure case - if !response.get_actual_response().headers.has::<Location>() { + if !response.actual_response().headers.has::<Location>() { return Rc::try_unwrap(response).ok().unwrap(); } // Step 2 - let location = match response.get_actual_response().headers.get::<Location>() { + let location = match response.actual_response().headers.get::<Location>() { Some(&Location(ref location)) => location.clone(), // Step 4 _ => return Response::network_error() }; // Step 5 - let response_url = response.get_actual_response().url.as_ref().unwrap(); + let response_url = response.actual_response().url.as_ref().unwrap(); let location_url = UrlParser::new().base_url(response_url).parse(&*location); // Step 6 @@ -575,7 +577,7 @@ fn http_redirect_fetch(request: Rc<Request>, } // Step 13 - let status_code = response.get_actual_response().status.unwrap(); + let status_code = response.actual_response().status.unwrap(); if ((status_code == StatusCode::MovedPermanently || status_code == StatusCode::Found) && *request.method.borrow() == Method::Post) || status_code == StatusCode::SeeOther { @@ -876,11 +878,11 @@ fn http_network_fetch(request: Rc<Request>, // Substep 2 - // TODO how can I tell if response was retrieved over HTTPS? + // TODO Determine if response was retrieved over HTTPS // TODO Servo needs to decide what ciphers are to be treated as "deprecated" response.https_state = HttpsState::None; - // TODO how do I read request? + // TODO Read request // Step 5 // TODO when https://bugzilla.mozilla.org/show_bug.cgi?id=1030660 @@ -925,8 +927,113 @@ fn http_network_fetch(request: Rc<Request>, } /// [CORS preflight fetch](https://fetch.spec.whatwg.org#cors-preflight-fetch) -fn preflight_fetch(_request: Rc<Request>) -> Response { - // TODO: Implement preflight fetch spec +fn cors_preflight_fetch(request: Rc<Request>, cache: Option<BasicCORSCache>) -> Response { + // Step 1 + let mut preflight = Request::new(request.current_url(), Some(request.origin.borrow().clone()), false); + *preflight.method.borrow_mut() = Method::Options; + preflight.initiator = request.initiator.clone(); + preflight.type_ = request.type_.clone(); + preflight.destination = request.destination.clone(); + preflight.referer = request.referer.clone(); + + // Step 2 + preflight.headers.borrow_mut().set::<AccessControlRequestMethod>( + AccessControlRequestMethod(request.method.borrow().clone())); + + // Step 3, 4 + let mut value = request.headers.borrow().iter() + .filter_map(|ref view| if is_simple_header(view) { + None + } else { + Some(UniCase(view.name().to_owned())) + }).collect::<Vec<UniCase<String>>>(); + value.sort(); + + // Step 5 + preflight.headers.borrow_mut().set::<AccessControlRequestHeaders>( + AccessControlRequestHeaders(value)); + + // Step 6 + let preflight = Rc::new(preflight); + let response = http_network_or_cache_fetch(preflight.clone(), false, false); + + // Step 7 + if cors_check(request.clone(), &response).is_ok() && + response.status.map_or(false, |status| status.is_success()) { + // Substep 1 + let mut methods = if response.headers.has::<AccessControlAllowMethods>() { + match response.headers.get::<AccessControlAllowMethods>() { + Some(&AccessControlAllowMethods(ref m)) => m.clone(), + // Substep 3 + None => return Response::network_error() + } + } else { + vec![] + }; + + // Substep 2 + let header_names = if response.headers.has::<AccessControlAllowHeaders>() { + match response.headers.get::<AccessControlAllowHeaders>() { + Some(&AccessControlAllowHeaders(ref hn)) => hn.clone(), + // Substep 3 + None => return Response::network_error() + } + } else { + vec![] + }; + + // Substep 4 + if methods.is_empty() && request.use_cors_preflight { + methods = vec![request.method.borrow().clone()]; + } + + // Substep 5 + if methods.iter().all(|method| *method != *request.method.borrow()) && + !is_simple_method(&*request.method.borrow()) { + return Response::network_error(); + } + + // Substep 6 + let set: HashSet<&UniCase<String>> = HashSet::from_iter(header_names.iter()); + if request.headers.borrow().iter().any(|ref hv| !set.contains(&UniCase(hv.name().to_owned())) && + !is_simple_header(hv)) { + return Response::network_error(); + } + + // Substep 7, 8 + let max_age = response.headers.get::<AccessControlMaxAge>().map(|acma| acma.0).unwrap_or(0); + + // TODO: Substep 9 - Need to define what an imposed limit on max-age is + + // Substep 10 + let mut cache = match cache { + Some(c) => c, + None => return response + }; + + // Substep 11, 12 + for method in &methods { + cache.match_method_and_update(CacheRequestDetails { + origin: request.origin.borrow().clone(), + destination: request.current_url(), + credentials: request.credentials_mode == CredentialsMode::Include + }, method.clone(), max_age); + } + + // Substep 13, 14 + for header_name in &header_names { + cache.match_header_and_update(CacheRequestDetails { + origin: request.origin.borrow().clone(), + destination: request.current_url(), + credentials: request.credentials_mode == CredentialsMode::Include + }, &*header_name, max_age); + } + + // Substep 15 + return response; + } + + // Step 8 Response::network_error() } @@ -934,7 +1041,6 @@ fn preflight_fetch(_request: Rc<Request>) -> Response { fn cors_check(request: Rc<Request>, response: &Response) -> Result<(), ()> { // Step 1 - // let headers = request.headers.borrow(); let origin = response.headers.get::<AccessControlAllowOrigin>().cloned(); // Step 2 @@ -942,18 +1048,18 @@ fn cors_check(request: Rc<Request>, response: &Response) -> Result<(), ()> { // Step 3 if request.credentials_mode != CredentialsMode::Include && - origin == AccessControlAllowOrigin::Any { + origin == AccessControlAllowOrigin::Any { return Ok(()); } // Step 4 let origin = match origin { AccessControlAllowOrigin::Value(origin) => origin, - // if it's Any or Null at this point, I see nothing to do but return Err(()) + // if it's Any or Null at this point, there's nothing to do but return Err(()) _ => return Err(()) }; - // strings are already utf-8 encoded, so I don't need to re-encode origin for this step + // strings are already utf-8 encoded, so there's no need to re-encode origin for this step match ascii_serialise_origin(&request.origin.borrow()) { Ok(request_origin) => { if request_origin != origin { diff --git a/components/net/lib.rs b/components/net/lib.rs index dafb7f55c47..47342299130 100644 --- a/components/net/lib.rs +++ b/components/net/lib.rs @@ -29,6 +29,7 @@ extern crate openssl; extern crate rustc_serialize; extern crate threadpool; extern crate time; +extern crate unicase; extern crate url; extern crate util; extern crate uuid; @@ -49,7 +50,7 @@ pub mod resource_thread; pub mod storage_thread; pub mod websocket_loader; -/// An implementation of the [Fetch spec](https://fetch.spec.whatwg.org/) +/// An implementation of the [Fetch specification](https://fetch.spec.whatwg.org/) pub mod fetch { pub mod cors_cache; pub mod methods; diff --git a/components/net_traits/Cargo.toml b/components/net_traits/Cargo.toml index c22a270c03f..d8cdd4213f0 100644 --- a/components/net_traits/Cargo.toml +++ b/components/net_traits/Cargo.toml @@ -24,7 +24,7 @@ path = "../plugins" heapsize = "0.3.0" heapsize_plugin = "0.1.2" hyper = { version = "0.8", features = [ "serde-serialization" ] } -image = "0.7" +image = "0.9" lazy_static = "0.1.15" log = "0.3.5" serde = "0.7" diff --git a/components/net_traits/response.rs b/components/net_traits/response.rs index 9e6cedd2765..1c1796df52a 100644 --- a/components/net_traits/response.rs +++ b/components/net_traits/response.rs @@ -144,7 +144,7 @@ impl Response { } } - pub fn get_actual_response(&self) -> &Response { + pub fn actual_response(&self) -> &Response { if self.return_internal.get() && self.internal_response.is_some() { &**self.internal_response.as_ref().unwrap() } else { diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index eaf86e3b39f..9fda41e036f 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -75,7 +75,7 @@ heapsize = "0.3.0" heapsize_plugin = "0.1.2" html5ever = {version = "0.5.1", features = ["heap_size", "unstable"]} hyper = { version = "0.8", features = [ "serde-serialization" ] } -image = "0.7" +image = "0.9" libc = "0.2" log = "0.3.5" num = "0.1.24" diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index 16138b33641..50c3fbf682f 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -89,6 +89,7 @@ use style::properties::PropertyDeclarationBlock; use style::restyle_hints::ElementSnapshot; use style::selector_impl::PseudoElement; use style::values::specified::Length; +use url::Origin as UrlOrigin; use url::Url; use util::str::{DOMString, LengthOrPercentageOrAuto}; use uuid::Uuid; @@ -276,7 +277,7 @@ impl<A: JSTraceable, B: JSTraceable, C: JSTraceable> JSTraceable for (A, B, C) { } } -no_jsmanaged_fields!(bool, f32, f64, String, Url, AtomicBool, AtomicUsize, Uuid); +no_jsmanaged_fields!(bool, f32, f64, String, Url, AtomicBool, AtomicUsize, UrlOrigin, Uuid); no_jsmanaged_fields!(usize, u8, u16, u32, u64); no_jsmanaged_fields!(isize, i8, i16, i32, i64); no_jsmanaged_fields!(Sender<T>); diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index e38ab86bf29..723e461df30 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -94,6 +94,7 @@ use net_traits::CookieSource::NonHTTP; use net_traits::response::HttpsState; use net_traits::{AsyncResponseTarget, PendingAsyncLoad}; use num::ToPrimitive; +use origin::Origin; use script_runtime::ScriptChan; use script_thread::{MainThreadScriptChan, MainThreadScriptMsg, Runnable}; use script_traits::UntrustedNodeAddress; @@ -223,6 +224,8 @@ pub struct Document { /// https://html.spec.whatwg.org/multipage/#concept-document-https-state https_state: Cell<HttpsState>, touchpad_pressure_phase: Cell<TouchpadPressurePhase>, + /// The document's origin. + origin: Origin, } #[derive(JSTraceable, HeapSizeOf)] @@ -1544,14 +1547,6 @@ impl Document { /// https://html.spec.whatwg.org/multipage/#cookie-averse-document-object fn is_cookie_averse(&self) -> bool { - /// https://url.spec.whatwg.org/#network-scheme - fn url_has_network_scheme(url: &Url) -> bool { - match &*url.scheme { - "ftp" | "http" | "https" => true, - _ => false, - } - } - self.browsing_context.is_none() || !url_has_network_scheme(&self.url) } @@ -1590,6 +1585,14 @@ impl LayoutDocumentHelpers for LayoutJS<Document> { } } +/// https://url.spec.whatwg.org/#network-scheme +fn url_has_network_scheme(url: &Url) -> bool { + match &*url.scheme { + "ftp" | "http" | "https" => true, + _ => false, + } +} + impl Document { pub fn new_inherited(window: &Window, browsing_context: Option<&BrowsingContext>, @@ -1608,6 +1611,15 @@ impl Document { (DocumentReadyState::Complete, true) }; + // Incomplete implementation of Document origin specification at + // https://html.spec.whatwg.org/multipage/#origin:document + let origin = if url_has_network_scheme(&url) { + Origin::new(&url) + } else { + // Default to DOM standard behaviour + Origin::opaque_identifier() + }; + Document { node: Node::new_document_node(), window: JS::from_ref(window), @@ -1673,6 +1685,7 @@ impl Document { css_errors_store: DOMRefCell::new(vec![]), https_state: Cell::new(HttpsState::None), touchpad_pressure_phase: Cell::new(TouchpadPressurePhase::BeforeClick), + origin: origin, } } @@ -1868,9 +1881,18 @@ impl DocumentMethods for Document { // https://html.spec.whatwg.org/multipage/#relaxing-the-same-origin-restriction fn Domain(&self) -> DOMString { - // TODO: This should use the effective script origin when it exists - let origin = self.window.get_url(); - DOMString::from(origin.serialize_host().unwrap_or_else(|| "".to_owned())) + // Step 1. + if self.browsing_context().is_none() { + return DOMString::new(); + } + + if let Some(host) = self.origin.host() { + // Step 4. + DOMString::from(host.serialize()) + } else { + // Step 3. + DOMString::new() + } } // https://dom.spec.whatwg.org/#dom-document-documenturi @@ -2497,10 +2519,11 @@ impl DocumentMethods for Document { return Ok(DOMString::new()); } - let url = self.url(); - if !is_scheme_host_port_tuple(&url) { + if !self.origin.is_scheme_host_port_tuple() { return Err(Error::Security); } + + let url = self.url(); let (tx, rx) = ipc::channel().unwrap(); let _ = self.window.resource_thread().send(GetCookiesForUrl((*url).clone(), tx, NonHTTP)); let cookies = rx.recv().unwrap(); @@ -2513,10 +2536,11 @@ impl DocumentMethods for Document { return Ok(()); } - let url = self.url(); - if !is_scheme_host_port_tuple(url) { + if !self.origin.is_scheme_host_port_tuple() { return Err(Error::Security); } + + let url = self.url(); let _ = self.window .resource_thread() .send(SetCookiesForUrl((*url).clone(), String::from(cookie), NonHTTP)); @@ -2720,10 +2744,6 @@ impl DocumentMethods for Document { } } -fn is_scheme_host_port_tuple(url: &Url) -> bool { - url.host().is_some() && url.port_or_default().is_some() -} - fn update_with_current_time_ms(marker: &Cell<u64>) { if marker.get() == Default::default() { let time = time::get_time(); diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index 7f1ce7641d3..241c209c7a8 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -2,8 +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/. */ -use dom::attr::Attr; +use dom::attr::{Attr, AttrValue}; use dom::bindings::codegen::Bindings::HTMLBaseElementBinding; +use dom::bindings::codegen::Bindings::HTMLBaseElementBinding::HTMLBaseElementMethods; use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; use dom::document::Document; @@ -60,6 +61,33 @@ impl HTMLBaseElement { } } +impl HTMLBaseElementMethods for HTMLBaseElement { + // https://html.spec.whatwg.org/multipage/#dom-base-href + fn Href(&self) -> DOMString { + let document = document_from_node(self); + + // Step 1. + if !self.upcast::<Element>().has_attribute(&atom!("href")) { + return DOMString::from(document.base_url().serialize()); + } + + // Step 2. + let fallback_base_url = document.fallback_base_url(); + + // Step 3. + let url = self.upcast::<Element>().get_url_attribute(&atom!("href")); + + // Step 4. + let url_record = fallback_base_url.join(&*url); + + // Step 5, 6. + DOMString::from(url_record.ok().map_or("".to_owned(), |record| record.serialize())) + } + + // https://html.spec.whatwg.org/multipage/#dom-base-href + make_url_setter!(SetHref, "href"); +} + impl VirtualMethods for HTMLBaseElement { fn super_type(&self) -> Option<&VirtualMethods> { Some(self.upcast::<HTMLElement>() as &VirtualMethods) diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index efcc24f4370..4ea908675b1 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -118,13 +118,6 @@ impl HTMLTableElement { thead.upcast::<Node>().remove_self(); } } - - /// Determine the row index for the given `HTMLTableRowElement`. - pub fn row_index(&self, row_elem: &HTMLTableRowElement) -> Option<usize> { - self.Rows() - .elements_iter() - .position(|elem| (&elem as &Element) == row_elem.upcast::<Element>()) - } } impl HTMLTableElementMethods for HTMLTableElement { diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index c6d532a0323..bb83e00b0db 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -4,7 +4,9 @@ use cssparser::RGBA; use dom::attr::AttrValue; +use dom::bindings::codegen::Bindings::HTMLTableElementBinding::HTMLTableElementMethods; use dom::bindings::codegen::Bindings::HTMLTableRowElementBinding::{self, HTMLTableRowElementMethods}; +use dom::bindings::codegen::Bindings::HTMLTableSectionElementBinding::HTMLTableSectionElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::error::{ErrorResult, Fallible}; use dom::bindings::inheritance::Castable; @@ -54,6 +56,14 @@ impl HTMLTableRowElement { document, HTMLTableRowElementBinding::Wrap) } + + /// Determine the index for this `HTMLTableRowElement` within the given + /// `HTMLCollection`. Returns `-1` if not found within collection. + fn row_index(&self, collection: Root<HTMLCollection>) -> i32 { + collection.elements_iter() + .position(|elem| (&elem as &Element) == self.upcast()) + .map_or(-1, |i| i as i32) + } } impl HTMLTableRowElementMethods for HTMLTableRowElement { @@ -97,7 +107,7 @@ impl HTMLTableRowElementMethods for HTMLTableRowElement { None => return -1, }; if let Some(table) = parent.downcast::<HTMLTableElement>() { - return table.row_index(self).map_or(-1, |i| i as i32); + return self.row_index(table.Rows()); } if !parent.is::<HTMLTableSectionElement>() { return -1; @@ -107,8 +117,23 @@ impl HTMLTableRowElementMethods for HTMLTableRowElement { None => return -1, }; grandparent.downcast::<HTMLTableElement>() - .and_then(|table| table.row_index(self)) - .map_or(-1, |i| i as i32) + .map_or(-1, |table| self.row_index(table.Rows())) + } + + // https://html.spec.whatwg.org/multipage/#dom-tr-sectionrowindex + fn SectionRowIndex(&self) -> i32 { + let parent = match self.upcast::<Node>().GetParentNode() { + Some(parent) => parent, + None => return -1, + }; + let collection = if let Some(table) = parent.downcast::<HTMLTableElement>() { + table.Rows() + } else if let Some(table_section) = parent.downcast::<HTMLTableSectionElement>() { + table_section.Rows() + } else { + return -1; + }; + self.row_index(collection) } } diff --git a/components/script/dom/webidls/HTMLBaseElement.webidl b/components/script/dom/webidls/HTMLBaseElement.webidl index 5c59c62f9be..549a6df1004 100644 --- a/components/script/dom/webidls/HTMLBaseElement.webidl +++ b/components/script/dom/webidls/HTMLBaseElement.webidl @@ -5,6 +5,6 @@ // https://html.spec.whatwg.org/multipage/#htmlbaseelement interface HTMLBaseElement : HTMLElement { - // attribute DOMString href; - // attribute DOMString target; + attribute DOMString href; +// attribute DOMString target; }; diff --git a/components/script/dom/webidls/HTMLTableRowElement.webidl b/components/script/dom/webidls/HTMLTableRowElement.webidl index 05d339aba3f..fe6c93e6be5 100644 --- a/components/script/dom/webidls/HTMLTableRowElement.webidl +++ b/components/script/dom/webidls/HTMLTableRowElement.webidl @@ -6,7 +6,7 @@ // https://html.spec.whatwg.org/multipage/#htmltablerowelement interface HTMLTableRowElement : HTMLElement { readonly attribute long rowIndex; - //readonly attribute long sectionRowIndex; + readonly attribute long sectionRowIndex; readonly attribute HTMLCollection cells; [Throws] HTMLElement insertCell(optional long index = -1); diff --git a/components/script/lib.rs b/components/script/lib.rs index d3913865070..e525a62b70d 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -90,6 +90,7 @@ pub mod dom; pub mod layout_interface; mod mem; mod network_listener; +pub mod origin; pub mod page; pub mod parse; pub mod reporter; diff --git a/components/script/origin.rs b/components/script/origin.rs new file mode 100644 index 00000000000..096ffbbd6fb --- /dev/null +++ b/components/script/origin.rs @@ -0,0 +1,73 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * 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/. */ + +use std::cell::RefCell; +use std::rc::Rc; +use url::{OpaqueOrigin, Origin as UrlOrigin}; +use url::{Url, Host}; + +/// A representation of an [origin](https://html.spec.whatwg.org/multipage/#origin-2). +#[derive(HeapSizeOf)] +pub struct Origin { + #[ignore_heap_size_of = "Rc<T> has unclear ownership semantics"] + inner: Rc<RefCell<UrlOrigin>>, +} + +// We can't use RefCell inside JSTraceable, but Origin doesn't contain JS values and +// DOMRefCell makes it much harder to write unit tests (due to setting up required TLS). +no_jsmanaged_fields!(Origin); + +impl Origin { + /// Create a new origin comprising a unique, opaque identifier. + pub fn opaque_identifier() -> Origin { + let opaque = UrlOrigin::UID(OpaqueOrigin::new()); + Origin { + inner: Rc::new(RefCell::new(opaque)), + } + } + + /// Create a new origin for the given URL. + pub fn new(url: &Url) -> Origin { + Origin { + inner: Rc::new(RefCell::new(url.origin())), + } + } + + pub fn set(&self, origin: UrlOrigin) { + *self.inner.borrow_mut() = origin; + } + + /// Does this origin represent a host/scheme/port tuple? + pub fn is_scheme_host_port_tuple(&self) -> bool { + match *self.inner.borrow() { + UrlOrigin::Tuple(..) => true, + UrlOrigin::UID(..) => false, + } + } + + /// Return the host associated with this origin. + pub fn host(&self) -> Option<Host> { + match *self.inner.borrow() { + UrlOrigin::Tuple(_, ref host, _) => Some(host.clone()), + UrlOrigin::UID(..) => None, + } + } + + /// https://html.spec.whatwg.org/multipage/#same-origin + pub fn same_origin(&self, other: &Origin) -> bool { + *self.inner.borrow() == *other.inner.borrow() + } + + pub fn copy(&self) -> Origin { + Origin { + inner: Rc::new(RefCell::new(self.inner.borrow().clone())), + } + } + + pub fn alias(&self) -> Origin { + Origin { + inner: self.inner.clone(), + } + } +} diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 07c6aa3a0cb..73bf74a008c 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -18,8 +18,8 @@ dependencies = [ "gfx_tests 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "glutin_app 0.0.1", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "layout 0.0.1", "layout_tests 0.0.1", @@ -49,15 +49,6 @@ dependencies = [ ] [[package]] -name = "advapi32-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "aho-corasick" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -92,6 +83,15 @@ dependencies = [ ] [[package]] +name = "arrayvec" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "odds 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "aster" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -119,10 +119,10 @@ dependencies = [ [[package]] name = "bincode" -version = "0.5.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -155,11 +155,6 @@ source = "git+https://github.com/browserhtml/browserhtml?branch=gh-pages#0ca5084 [[package]] name = "byteorder" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byteorder" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -172,7 +167,7 @@ dependencies = [ "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -192,7 +187,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -251,7 +246,7 @@ name = "cmake" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -302,8 +297,8 @@ dependencies = [ "gfx 0.0.1", "gfx_traits 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "layout_traits 0.0.1", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -413,7 +408,7 @@ version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "plugins 0.0.1", @@ -432,7 +427,7 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "msg 0.0.1", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -658,12 +653,8 @@ dependencies = [ [[package]] name = "gcc" -version = "0.3.17" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "advapi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "gdi32-sys" @@ -695,7 +686,7 @@ dependencies = [ "harfbuzz-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -729,7 +720,7 @@ name = "gfx_tests" version = "0.0.1" dependencies = [ "gfx 0.0.1", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "style 0.0.1", ] @@ -751,11 +742,11 @@ dependencies = [ [[package]] name = "gif" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lzw 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -918,30 +909,31 @@ dependencies = [ "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", "traitobject 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "image" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gif 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gif 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "jpeg-decoder 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "png 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "immeta" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -965,11 +957,11 @@ dependencies = [ [[package]] name = "ipc-channel" -version = "0.2.1" -source = "git+https://github.com/servo/ipc-channel#f85a07bdb2615e439bee7308d37266ac3dd23708" +version = "0.2.2" +source = "git+https://github.com/servo/ipc-channel#e43fb22c431740a9bc54ce96caebd0e67d1a0586" dependencies = [ - "bincode 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -980,10 +972,10 @@ dependencies = [ [[package]] name = "jpeg-decoder" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1058,7 +1050,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layout_traits 0.0.1", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1098,7 +1090,7 @@ name = "layout_traits" version = "0.0.1" dependencies = [ "gfx 0.0.1", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "msg 0.0.1", "net_traits 0.0.1", "profile_traits 0.0.1", @@ -1156,7 +1148,7 @@ name = "libz-sys" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1171,7 +1163,7 @@ dependencies = [ [[package]] name = "lzw" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1240,7 +1232,7 @@ name = "miniz-sys" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1263,7 +1255,7 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1283,8 +1275,8 @@ dependencies = [ "devtools_traits 0.0.1", "flate2 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "immeta 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "immeta 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1295,11 +1287,12 @@ dependencies = [ "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "threadpool 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", "uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1322,13 +1315,13 @@ dependencies = [ "devtools_traits 0.0.1", "flate2 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "msg 0.0.1", "net 0.0.1", "net_traits 0.0.1", "plugins 0.0.1", "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", ] @@ -1340,8 +1333,8 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -1350,7 +1343,7 @@ dependencies = [ "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1361,6 +1354,14 @@ dependencies = [ ] [[package]] +name = "nodrop" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "odds 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "num" version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1406,6 +1407,11 @@ dependencies = [ ] [[package]] +name = "odds" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "offscreen_gl_context" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1428,7 +1434,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1452,7 +1458,7 @@ name = "openssl-sys-extras" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1561,7 +1567,7 @@ name = "profile" version = "0.0.1" dependencies = [ "hbs-pow 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", @@ -1578,7 +1584,7 @@ version = "0.0.1" dependencies = [ "energy-monitor 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "energymon 0.2.0 (git+https://github.com/energymon/energymon-rust.git)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1712,8 +1718,8 @@ dependencies = [ "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "js 0.1.2 (git+https://github.com/servo/rust-mozjs)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1738,12 +1744,12 @@ dependencies = [ "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", "uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)", ] @@ -1752,7 +1758,9 @@ name = "script_tests" version = "0.0.1" dependencies = [ "msg 0.0.1", + "plugins 0.0.1", "script 0.0.1", + "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", ] @@ -1767,7 +1775,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", @@ -1893,7 +1901,7 @@ dependencies = [ "user32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-kbd 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-window 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-window 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "x11-dl 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2038,7 +2046,7 @@ dependencies = [ name = "task_info" version = "0.0.1" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2051,12 +2059,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "1.1.3" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2103,8 +2112,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicase" -version = "1.0.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "unicode-bidi" @@ -2184,7 +2196,7 @@ dependencies = [ "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "js 0.1.2 (git+https://github.com/servo/rust-mozjs)", "kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2268,11 +2280,11 @@ dependencies = [ [[package]] name = "wayland-window" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2293,8 +2305,8 @@ version = "0.0.1" dependencies = [ "compositing 0.0.1", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "plugins 0.0.1", @@ -2319,7 +2331,7 @@ dependencies = [ "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2339,7 +2351,7 @@ dependencies = [ "core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2347,17 +2359,17 @@ dependencies = [ [[package]] name = "websocket" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index f412b16af0a..a06e3093031 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -19,7 +19,7 @@ doc = false bench = false [dev-dependencies] -image = "0.7" +image = "0.9" [dev-dependencies.gfx_tests] path = "../../tests/unit/gfx" diff --git a/components/style/properties.mako.rs b/components/style/properties.mako.rs index 6a8ab086be0..ecbfe5af015 100644 --- a/components/style/properties.mako.rs +++ b/components/style/properties.mako.rs @@ -145,6 +145,9 @@ def new_style_struct(name, is_inherited, gecko_name=None, additional_methods=Non THIS_STYLE_STRUCT = style_struct return "" +def active_style_structs(): + return filter(lambda s: s.additional_methods or s.longhands, STYLE_STRUCTS) + def switch_to_style_struct(name): global THIS_STYLE_STRUCT @@ -909,7 +912,11 @@ pub mod longhands { // CSS 2.1, Section 11 - Visual effects // Non-standard, see https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-clip-box#Specifications - ${single_keyword("-servo-overflow-clip-box", "padding-box content-box", internal=True)} + ${single_keyword("-servo-overflow-clip-box", "padding-box content-box", products="servo", + internal=True)} + + ${single_keyword("overflow-clip-box", "padding-box content-box", products="gecko", + internal=True)} // FIXME(pcwalton, #2742): Implement scrolling for `scroll` and `auto`. ${single_keyword("overflow-x", "visible hidden scroll auto")} @@ -952,6 +959,16 @@ pub mod longhands { } </%self:longhand> + // CSSOM View Module + // https://www.w3.org/TR/cssom-view-1/ + ${single_keyword("scroll-behavior", "auto smooth", products="gecko")} + + // Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-type-x + ${single_keyword("scroll-snap-type-x", "none mandatory proximity", products="gecko")} + + // Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-type-y + ${single_keyword("scroll-snap-type-y", "none mandatory proximity", products="gecko")} + ${switch_to_style_struct("InheritedBox")} // TODO: collapse. Well, do tables first. @@ -1354,6 +1371,12 @@ pub mod longhands { // CSS 2.1, Section 13 - Paged media + ${switch_to_style_struct("Box")} + + ${single_keyword("page-break-after", "auto always avoid left right", products="gecko")} + ${single_keyword("page-break-before", "auto always avoid left right", products="gecko")} + ${single_keyword("page-break-inside", "auto avoid", products="gecko")} + // CSS 2.1, Section 14 - Colors and Backgrounds ${new_style_struct("Background", is_inherited=False, gecko_name="nsStyleBackground")} @@ -2027,6 +2050,8 @@ pub mod longhands { "normal ultra-condensed extra-condensed condensed semi-condensed semi-expanded \ expanded extra-expanded ultra-expanded")} + ${single_keyword("font-kerning", "auto none normal", products="gecko")} + // CSS 2.1, Section 16 - Text ${switch_to_style_struct("InheritedText")} @@ -2314,6 +2339,9 @@ pub mod longhands { } </%self:longhand> + ${single_keyword("text-decoration-style", "-moz-none solid double dotted dashed wavy", + products="gecko")} + ${switch_to_style_struct("InheritedText")} <%self:longhand name="-servo-text-decorations-in-effect" @@ -2439,6 +2467,16 @@ pub mod longhands { ${single_keyword("text-rendering", "auto optimizespeed optimizelegibility geometricprecision")} + // CSS Text Module Level 3 + // https://www.w3.org/TR/css-text-3/ + ${single_keyword("hyphens", "none manual auto", products="gecko")} + + // CSS Ruby Layout Module Level 1 + // https://www.w3.org/TR/css-ruby-1/ + ${single_keyword("ruby-align", "start center space-between space-around", products="gecko")} + + ${single_keyword("ruby-position", "over under", products="gecko")} + // CSS 2.1, Section 17 - Tables ${new_style_struct("Table", is_inherited=False, gecko_name="nsStyleTable")} @@ -2541,8 +2579,11 @@ pub mod longhands { } </%self:longhand> - // CSS 2.1, Section 18 - User interface + // CSS Fragmentation Module Level 3 + // https://www.w3.org/TR/css-break-3/ + ${switch_to_style_struct("Border")} + ${single_keyword("box-decoration-break", "slice clone", products="gecko")} // CSS Writing Modes Level 3 // http://dev.w3.org/csswg/css-writing-modes/ @@ -2554,8 +2595,16 @@ pub mod longhands { // FIXME(SimonSapin): initial (first) value should be 'mixed', when that's implemented ${single_keyword("text-orientation", "sideways sideways-left sideways-right", experimental=True)} + // CSS Color Module Level 4 + // https://drafts.csswg.org/css-color/ + ${single_keyword("color-adjust", "economy exact", products="gecko")} + // CSS Basic User Interface Module Level 3 // http://dev.w3.org/csswg/css-ui/ + ${switch_to_style_struct("Box")} + + ${single_keyword("resize", "none both horizontal vertical", products="gecko")} + ${switch_to_style_struct("Position")} ${single_keyword("box-sizing", "content-box border-box")} @@ -4162,6 +4211,8 @@ pub mod longhands { ${single_keyword("backface-visibility", "visible hidden")} + ${single_keyword("transform-box", "border-box fill-box view-box", products="gecko")} + ${single_keyword("transform-style", "auto flat preserve-3d")} <%self:longhand name="transform-origin"> @@ -4316,11 +4367,26 @@ pub mod longhands { } </%self:longhand> + // Compositing and Blending Level 1 + // http://www.w3.org/TR/compositing-1/ + ${single_keyword("isolation", "auto isolate", products="gecko")} + ${single_keyword("mix-blend-mode", """normal multiply screen overlay darken lighten color-dodge color-burn hard-light soft-light difference exclusion hue saturation color luminosity""")} + // CSS Masking Module Level 1 + // https://www.w3.org/TR/css-masking-1/ + ${single_keyword("mask-type", "luminance alpha", products="gecko")} + + // CSS Image Values and Replaced Content Module Level 3 + // https://drafts.csswg.org/css-images-3/ + + ${switch_to_style_struct("Position")} + + ${single_keyword("object-fit", "fill contain cover none scale-down", products="gecko")} + ${switch_to_style_struct("InheritedBox")} <%self:longhand name="image-rendering"> @@ -4930,6 +4996,43 @@ pub mod longhands { specified::parse_integer(input) } </%self:longhand> + + ${single_keyword("flex-wrap", "nowrap wrap wrap-reverse", products="gecko")} + + // SVG 1.1 (Second Edition) + // https://www.w3.org/TR/SVG/ + ${new_style_struct("SVG", is_inherited=True)} + + // Section 10 - Text + ${single_keyword("dominant-baseline", + """auto use-script no-change reset-size ideographic alphabetic hanging + mathematical central middle text-after-edge text-before-edge""", + products="gecko")} + + ${single_keyword("text-anchor", "start middle end", products="gecko")} + + // Section 11 - Painting: Filling, Stroking and Marker Symbols + ${single_keyword("color-interpolation", "auto sRGB linearRGB", products="gecko")} + + ${single_keyword("color-interpolation-filters", "auto sRGB linearRGB", products="gecko")} + + ${single_keyword("fill-rule", "nonzero evenodd", products="gecko")} + + ${single_keyword("shape-rendering", "auto optimizeSpeed crispEdges geometricPrecision", + products="gecko")} + + ${single_keyword("stroke-linecap", "butt round square", products="gecko")} + + ${single_keyword("stroke-linejoin", "miter round bevel", products="gecko")} + + ${switch_to_style_struct("Effects")} + + ${single_keyword("vector-effect", "none non-scaling-stroke", products="gecko")} + + ${switch_to_style_struct("SVG")} + + // Section 14 - Clipping, Masking and Compositing + ${single_keyword("clip-rule", "nonzero evenodd", products="gecko")} } @@ -6190,7 +6293,7 @@ impl PropertyDeclaration { pub mod style_struct_traits { use super::longhands; - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): pub trait ${style_struct.trait_name}: Clone { % for longhand in style_struct.longhands: #[allow(non_snake_case)] @@ -6211,7 +6314,7 @@ pub mod style_structs { use super::longhands; use std::hash::{Hash, Hasher}; - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): % if style_struct.trait_name == "Font": #[derive(Clone, HeapSizeOf, Debug)] % else: @@ -6327,7 +6430,7 @@ pub mod style_structs { } pub trait ComputedValues : Clone + Send + Sync + 'static { - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): type Concrete${style_struct.trait_name}: style_struct_traits::${style_struct.trait_name}; % endfor @@ -6342,7 +6445,7 @@ pub trait ComputedValues : Clone + Send + Sync + 'static { shareable: bool, writing_mode: WritingMode, root_font_size: Au, - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): ${style_struct.ident}: Arc<Self::Concrete${style_struct.trait_name}>, % endfor ) -> Self; @@ -6351,7 +6454,7 @@ pub trait ComputedValues : Clone + Send + Sync + 'static { fn do_cascade_property<F: FnOnce(&Vec<Option<CascadePropertyFn<Self>>>)>(f: F); - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): fn clone_${style_struct.trait_name_lower}(&self) -> Arc<Self::Concrete${style_struct.trait_name}>; fn get_${style_struct.trait_name_lower}<'a>(&'a self) -> @@ -6369,7 +6472,7 @@ pub trait ComputedValues : Clone + Send + Sync + 'static { #[derive(Clone, HeapSizeOf)] pub struct ServoComputedValues { - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): ${style_struct.ident}: Arc<style_structs::${style_struct.servo_struct_name}>, % endfor custom_properties: Option<Arc<::custom_properties::ComputedValuesMap>>, @@ -6379,7 +6482,7 @@ pub struct ServoComputedValues { } impl ComputedValues for ServoComputedValues { - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): type Concrete${style_struct.trait_name} = style_structs::${style_struct.servo_struct_name}; % endfor @@ -6390,7 +6493,7 @@ impl ComputedValues for ServoComputedValues { shareable: bool, writing_mode: WritingMode, root_font_size: Au, - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): ${style_struct.ident}: Arc<style_structs::${style_struct.servo_struct_name}>, % endfor ) -> Self { @@ -6399,7 +6502,7 @@ impl ComputedValues for ServoComputedValues { shareable: shareable, writing_mode: writing_mode, root_font_size: root_font_size, - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): ${style_struct.ident}: ${style_struct.ident}, % endfor } @@ -6411,7 +6514,7 @@ impl ComputedValues for ServoComputedValues { CASCADE_PROPERTY.with(|x| f(x)); } - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): #[inline] fn clone_${style_struct.trait_name_lower}(&self) -> Arc<Self::Concrete${style_struct.trait_name}> { @@ -6613,7 +6716,7 @@ impl ServoComputedValues { pub fn computed_value_to_string(&self, name: &str) -> Result<String, ()> { match name { - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): % for longhand in style_struct.longhands: "${longhand.name}" => Ok(self.${style_struct.ident}.${longhand.ident}.to_css_string()), % endfor @@ -6667,7 +6770,7 @@ pub fn get_writing_mode<S: style_struct_traits::InheritedBox>(inheritedbox_style /// The initial values for all style structs as defined by the specification. lazy_static! { pub static ref INITIAL_SERVO_VALUES: ServoComputedValues = ServoComputedValues { - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): ${style_struct.ident}: Arc::new(style_structs::${style_struct.servo_struct_name} { % for longhand in style_struct.longhands: ${longhand.ident}: longhands::${longhand.ident}::get_initial_value(), @@ -6705,7 +6808,7 @@ fn cascade_with_cached_declarations<C: ComputedValues>( shareable, WritingMode::empty(), parent_style.root_font_size(), - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): % if style_struct.inherited: parent_style % else: @@ -6722,7 +6825,7 @@ fn cascade_with_cached_declarations<C: ComputedValues>( // Declarations are already stored in reverse order. for declaration in sub_list.declarations.iter() { match *declaration { - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): % for property in style_struct.longhands: % if property.derived_from is None: PropertyDeclaration::${property.camel_case}(ref @@ -6803,7 +6906,7 @@ pub type CascadePropertyFn<C /*: ComputedValues */> = pub fn make_cascade_vec<C: ComputedValues>() -> Vec<Option<CascadePropertyFn<C>>> { let mut result: Vec<Option<CascadePropertyFn<C>>> = Vec::new(); - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): % for property in style_struct.longhands: let discriminant; unsafe { @@ -6898,7 +7001,7 @@ pub fn cascade<C: ComputedValues>( shareable, WritingMode::empty(), inherited_style.root_font_size(), - % for style_struct in STYLE_STRUCTS: + % for style_struct in active_style_structs(): % if style_struct.inherited: inherited_style % else: diff --git a/components/webdriver_server/Cargo.toml b/components/webdriver_server/Cargo.toml index 547ae03fc8e..02b90a58fe3 100644 --- a/components/webdriver_server/Cargo.toml +++ b/components/webdriver_server/Cargo.toml @@ -24,7 +24,7 @@ path = "../util" git = "https://github.com/servo/ipc-channel" [dependencies] -image = "0.7" +image = "0.9" log = "0.3.5" hyper = "0.8" rustc-serialize = "0.3.4" diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 83b77434b68..c15817549a0 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -33,15 +33,6 @@ dependencies = [ ] [[package]] -name = "advapi32-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "aho-corasick" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -76,6 +67,15 @@ dependencies = [ ] [[package]] +name = "arrayvec" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "odds 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "aster" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -103,10 +103,10 @@ dependencies = [ [[package]] name = "bincode" -version = "0.5.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -139,11 +139,6 @@ source = "git+https://github.com/browserhtml/browserhtml?branch=gh-pages#0ca5084 [[package]] name = "byteorder" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byteorder" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -156,7 +151,7 @@ dependencies = [ "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -176,7 +171,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -235,7 +230,7 @@ name = "cmake" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -271,8 +266,8 @@ dependencies = [ "gfx 0.0.1", "gfx_traits 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "layout_traits 0.0.1", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -382,7 +377,7 @@ version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "plugins 0.0.1", @@ -401,7 +396,7 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "msg 0.0.1", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -586,12 +581,8 @@ dependencies = [ [[package]] name = "gcc" -version = "0.3.17" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "advapi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "gdi32-sys" @@ -623,7 +614,7 @@ dependencies = [ "harfbuzz-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -670,11 +661,11 @@ dependencies = [ [[package]] name = "gif" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lzw 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -837,30 +828,31 @@ dependencies = [ "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", "traitobject 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "image" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gif 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gif 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "jpeg-decoder 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "png 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "immeta" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -884,11 +876,11 @@ dependencies = [ [[package]] name = "ipc-channel" -version = "0.2.1" -source = "git+https://github.com/servo/ipc-channel#f85a07bdb2615e439bee7308d37266ac3dd23708" +version = "0.2.2" +source = "git+https://github.com/servo/ipc-channel#e43fb22c431740a9bc54ce96caebd0e67d1a0586" dependencies = [ - "bincode 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -899,10 +891,10 @@ dependencies = [ [[package]] name = "jpeg-decoder" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -977,7 +969,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layout_traits 0.0.1", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1010,7 +1002,7 @@ name = "layout_traits" version = "0.0.1" dependencies = [ "gfx 0.0.1", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "msg 0.0.1", "net_traits 0.0.1", "profile_traits 0.0.1", @@ -1068,7 +1060,7 @@ name = "libz-sys" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1083,7 +1075,7 @@ dependencies = [ [[package]] name = "lzw" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1152,7 +1144,7 @@ name = "miniz-sys" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1175,7 +1167,7 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1195,8 +1187,8 @@ dependencies = [ "devtools_traits 0.0.1", "flate2 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "immeta 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "immeta 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1207,11 +1199,12 @@ dependencies = [ "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "threadpool 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", "uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1233,8 +1226,8 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -1243,7 +1236,15 @@ dependencies = [ "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nodrop" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "odds 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1292,6 +1293,11 @@ dependencies = [ ] [[package]] +name = "odds" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "offscreen_gl_context" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1314,7 +1320,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1338,7 +1344,7 @@ name = "openssl-sys-extras" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1430,7 +1436,7 @@ name = "profile" version = "0.0.1" dependencies = [ "hbs-pow 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", @@ -1445,7 +1451,7 @@ dependencies = [ name = "profile_traits" version = "0.0.1" dependencies = [ - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1579,8 +1585,8 @@ dependencies = [ "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "js 0.1.2 (git+https://github.com/servo/rust-mozjs)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1605,12 +1611,12 @@ dependencies = [ "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", "uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)", ] @@ -1625,7 +1631,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", @@ -1710,7 +1716,7 @@ dependencies = [ "gfx 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "glutin_app 0.0.1", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "layout 0.0.1", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1789,7 +1795,7 @@ dependencies = [ "user32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-kbd 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-window 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-window 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "x11-dl 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1917,7 +1923,7 @@ dependencies = [ name = "task_info" version = "0.0.1" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1930,12 +1936,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "1.1.3" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1982,8 +1989,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicase" -version = "1.0.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "unicode-bidi" @@ -2063,7 +2073,7 @@ dependencies = [ "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "js 0.1.2 (git+https://github.com/servo/rust-mozjs)", "kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2136,11 +2146,11 @@ dependencies = [ [[package]] name = "wayland-window" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2161,8 +2171,8 @@ version = "0.0.1" dependencies = [ "compositing 0.0.1", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "plugins 0.0.1", @@ -2187,7 +2197,7 @@ dependencies = [ "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2207,7 +2217,7 @@ dependencies = [ "core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2215,17 +2225,17 @@ dependencies = [ [[package]] name = "websocket" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/ports/geckolib/Cargo.lock b/ports/geckolib/Cargo.lock index 9ee7610ef02..8516abbe295 100644 --- a/ports/geckolib/Cargo.lock +++ b/ports/geckolib/Cargo.lock @@ -41,10 +41,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bincode" -version = "0.5.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -62,7 +62,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byteorder" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -190,11 +190,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ipc-channel" -version = "0.2.1" -source = "git+https://github.com/servo/ipc-channel#f85a07bdb2615e439bee7308d37266ac3dd23708" +version = "0.2.2" +source = "git+https://github.com/servo/ipc-channel#e43fb22c431740a9bc54ce96caebd0e67d1a0586" dependencies = [ - "bincode 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -489,7 +489,7 @@ dependencies = [ "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock index 53fc6727072..5aaedff2fa4 100644 --- a/ports/gonk/Cargo.lock +++ b/ports/gonk/Cargo.lock @@ -26,15 +26,6 @@ dependencies = [ ] [[package]] -name = "advapi32-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "aho-corasick" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -69,6 +60,15 @@ dependencies = [ ] [[package]] +name = "arrayvec" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "odds 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "aster" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -96,10 +96,10 @@ dependencies = [ [[package]] name = "bincode" -version = "0.5.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -132,11 +132,6 @@ source = "git+https://github.com/browserhtml/browserhtml?branch=gh-pages#0ca5084 [[package]] name = "byteorder" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "byteorder" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -149,7 +144,7 @@ dependencies = [ "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -169,7 +164,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -228,7 +223,7 @@ name = "cmake" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -264,8 +259,8 @@ dependencies = [ "gfx 0.0.1", "gfx_traits 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "layout_traits 0.0.1", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -375,7 +370,7 @@ version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "plugins 0.0.1", @@ -394,7 +389,7 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "msg 0.0.1", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -589,12 +584,8 @@ dependencies = [ [[package]] name = "gcc" -version = "0.3.17" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "advapi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "gdi32-sys" @@ -626,7 +617,7 @@ dependencies = [ "harfbuzz-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -673,11 +664,11 @@ dependencies = [ [[package]] name = "gif" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "color_quant 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lzw 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -819,30 +810,31 @@ dependencies = [ "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", "traitobject 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "image" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gif 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "gif 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "jpeg-decoder 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jpeg-decoder 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "png 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "immeta" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -866,11 +858,11 @@ dependencies = [ [[package]] name = "ipc-channel" -version = "0.2.1" -source = "git+https://github.com/servo/ipc-channel#f85a07bdb2615e439bee7308d37266ac3dd23708" +version = "0.2.2" +source = "git+https://github.com/servo/ipc-channel#e43fb22c431740a9bc54ce96caebd0e67d1a0586" dependencies = [ - "bincode 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -881,10 +873,10 @@ dependencies = [ [[package]] name = "jpeg-decoder" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -959,7 +951,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layout_traits 0.0.1", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -992,7 +984,7 @@ name = "layout_traits" version = "0.0.1" dependencies = [ "gfx 0.0.1", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "msg 0.0.1", "net_traits 0.0.1", "profile_traits 0.0.1", @@ -1050,7 +1042,7 @@ name = "libz-sys" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1065,7 +1057,7 @@ dependencies = [ [[package]] name = "lzw" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1134,7 +1126,7 @@ name = "miniz-sys" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1157,7 +1149,7 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "plugins 0.0.1", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1177,8 +1169,8 @@ dependencies = [ "devtools_traits 0.0.1", "flate2 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "immeta 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "immeta 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1189,11 +1181,12 @@ dependencies = [ "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "threadpool 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", "uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1215,8 +1208,8 @@ dependencies = [ "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -1225,7 +1218,15 @@ dependencies = [ "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nodrop" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "odds 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1274,6 +1275,11 @@ dependencies = [ ] [[package]] +name = "odds" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "offscreen_gl_context" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1296,7 +1302,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1320,7 +1326,7 @@ name = "openssl-sys-extras" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1412,7 +1418,7 @@ name = "profile" version = "0.0.1" dependencies = [ "hbs-pow 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "plugins 0.0.1", @@ -1427,7 +1433,7 @@ dependencies = [ name = "profile_traits" version = "0.0.1" dependencies = [ - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "plugins 0.0.1", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1561,8 +1567,8 @@ dependencies = [ "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "js 0.1.2 (git+https://github.com/servo/rust-mozjs)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1587,12 +1593,12 @@ dependencies = [ "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", "uuid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)", - "websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", "xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)", ] @@ -1607,7 +1613,7 @@ dependencies = [ "gfx_traits 0.0.1", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", @@ -1691,7 +1697,7 @@ dependencies = [ "gaol 0.0.1 (git+https://github.com/servo/gaol)", "gfx 0.0.1", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "layers 0.2.4 (git+https://github.com/servo/rust-layers)", "layout 0.0.1", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1769,7 +1775,7 @@ dependencies = [ "user32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-kbd 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-window 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-window 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "x11-dl 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1897,7 +1903,7 @@ dependencies = [ name = "task_info" version = "0.0.1" dependencies = [ - "gcc 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1910,12 +1916,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "1.1.3" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1962,8 +1969,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicase" -version = "1.0.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "unicode-bidi" @@ -2043,7 +2053,7 @@ dependencies = [ "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "js 0.1.2 (git+https://github.com/servo/rust-mozjs)", "kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2116,11 +2126,11 @@ dependencies = [ [[package]] name = "wayland-window" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2137,7 +2147,7 @@ dependencies = [ "fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.1.0 (git+https://github.com/servo/rust-freetype)", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2157,7 +2167,7 @@ dependencies = [ "core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.2.1 (git+https://github.com/servo/ipc-channel)", + "ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)", "offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_macros 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2165,17 +2175,17 @@ dependencies = [ [[package]] name = "websocket" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/python/tidy.py b/python/tidy.py index 6110a9ea4eb..e12eeb33e49 100644 --- a/python/tidy.py +++ b/python/tidy.py @@ -69,6 +69,8 @@ ignored_dirs = [ os.path.join(".", "."), ] +spec_base_path = "components/script/dom/" + def is_iter_empty(iterator): try: @@ -221,7 +223,7 @@ def check_lock(file_name, contents): raise StopIteration # package names to be neglected (as named by cargo) - exceptions = ["bitflags", "xml-rs", "byteorder"] + exceptions = ["bitflags", "xml-rs"] import toml content = toml.loads(contents) @@ -525,10 +527,9 @@ def check_json(filename, contents): def check_spec(file_name, lines): - base_path = "components/script/dom/" - if base_path not in file_name: + if spec_base_path not in file_name: raise StopIteration - file_name = os.path.relpath(os.path.splitext(file_name)[0], base_path) + file_name = os.path.relpath(os.path.splitext(file_name)[0], spec_base_path) patt = re.compile("^\s*\/\/.+") # Pattern representing a line with a macro diff --git a/python/tidy_self_test/speclink.rs b/python/tidy_self_test/speclink.rs new file mode 100644 index 00000000000..6c27a70a7d0 --- /dev/null +++ b/python/tidy_self_test/speclink.rs @@ -0,0 +1,9 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * 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/. */ + +impl SpecLinkMethods for SpecLink { + fn Test(&self) -> f32 { + 0 + } +} diff --git a/python/tidy_self_test/tidy_self_test.py b/python/tidy_self_test/tidy_self_test.py index d7666b58b73..e2a49f71a65 100644 --- a/python/tidy_self_test/tidy_self_test.py +++ b/python/tidy_self_test/tidy_self_test.py @@ -59,6 +59,11 @@ class CheckTidiness(unittest.TestCase): self.assertEqual('use &[T] instead of &Vec<T>', errors.next()[2]) self.assertEqual('use &str instead of &String', errors.next()[2]) + def test_spec_link(self): + tidy.spec_base_path = "python/tidy_self_test/" + errors = tidy.collect_errors_for_files(iterFile('speclink.rs'), [], [tidy.check_spec]) + self.assertEqual('method declared in webidl is missing a comment with a specification link', errors.next()[2]) + def test_webidl(self): errors = tidy.collect_errors_for_files(iterFile('spec.webidl'), [tidy.check_webidl_spec], []) self.assertEqual('No specification link found.', errors.next()[2]) diff --git a/tests/unit/net/fetch.rs b/tests/unit/net/fetch.rs index 4b6eff5da69..b2353d33113 100644 --- a/tests/unit/net/fetch.rs +++ b/tests/unit/net/fetch.rs @@ -2,7 +2,8 @@ * 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/. */ -use hyper::header::{AccessControlAllowHeaders, AccessControlAllowOrigin}; +use hyper::header::{AccessControlAllowCredentials, AccessControlAllowHeaders, AccessControlAllowOrigin}; +use hyper::header::{AccessControlAllowMethods, AccessControlRequestHeaders, AccessControlRequestMethod}; use hyper::header::{CacheControl, ContentLanguage, ContentType, Expires, LastModified}; use hyper::header::{Headers, HttpDate, Location, SetCookie, Pragma}; use hyper::method::Method; @@ -16,6 +17,7 @@ use net_traits::AsyncFetchListener; use net_traits::request::{Origin, RedirectMode, Referer, Request, RequestMode}; use net_traits::response::{CacheState, Response, ResponseBody, ResponseType}; use std::rc::Rc; +use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::mpsc::{Sender, channel}; use std::sync::{Arc, Mutex}; use time::{self, Duration}; @@ -137,6 +139,74 @@ fn test_fetch_data() { } #[test] +fn test_cors_preflight_fetch() { + static ACK: &'static [u8] = b"ACK"; + let state = Arc::new(AtomicUsize::new(0)); + let handler = move |request: HyperRequest, mut response: HyperResponse| { + if request.method == Method::Options && state.clone().fetch_add(1, Ordering::SeqCst) == 0 { + assert!(request.headers.has::<AccessControlRequestMethod>()); + assert!(request.headers.has::<AccessControlRequestHeaders>()); + response.headers_mut().set(AccessControlAllowOrigin::Any); + response.headers_mut().set(AccessControlAllowCredentials); + response.headers_mut().set(AccessControlAllowMethods(vec![Method::Get])); + } else { + response.headers_mut().set(AccessControlAllowOrigin::Any); + response.send(ACK).unwrap(); + } + }; + let (mut server, url) = make_server(handler); + + let origin = Origin::Origin(UrlOrigin::UID(OpaqueOrigin::new())); + let mut request = Request::new(url, Some(origin), false); + request.referer = Referer::NoReferer; + request.use_cors_preflight = true; + request.mode = RequestMode::CORSMode; + let wrapped_request = Rc::new(request); + + let fetch_response = fetch(wrapped_request); + let _ = server.close(); + + assert!(!fetch_response.is_network_error()); + + match *fetch_response.body.lock().unwrap() { + ResponseBody::Done(ref body) => assert_eq!(&**body, ACK), + _ => panic!() + }; +} + +#[test] +fn test_cors_preflight_fetch_network_error() { + static ACK: &'static [u8] = b"ACK"; + let state = Arc::new(AtomicUsize::new(0)); + let handler = move |request: HyperRequest, mut response: HyperResponse| { + if request.method == Method::Options && state.clone().fetch_add(1, Ordering::SeqCst) == 0 { + assert!(request.headers.has::<AccessControlRequestMethod>()); + assert!(request.headers.has::<AccessControlRequestHeaders>()); + response.headers_mut().set(AccessControlAllowOrigin::Any); + response.headers_mut().set(AccessControlAllowCredentials); + response.headers_mut().set(AccessControlAllowMethods(vec![Method::Get])); + } else { + response.headers_mut().set(AccessControlAllowOrigin::Any); + response.send(ACK).unwrap(); + } + }; + let (mut server, url) = make_server(handler); + + let origin = Origin::Origin(UrlOrigin::UID(OpaqueOrigin::new())); + let mut request = Request::new(url, Some(origin), false); + *request.method.borrow_mut() = Method::Extension("CHICKEN".to_owned()); + request.referer = Referer::NoReferer; + request.use_cors_preflight = true; + request.mode = RequestMode::CORSMode; + let wrapped_request = Rc::new(request); + + let fetch_response = fetch(wrapped_request); + let _ = server.close(); + + assert!(fetch_response.is_network_error()); +} + +#[test] fn test_fetch_response_is_basic_filtered() { static MESSAGE: &'static [u8] = b""; @@ -342,7 +412,7 @@ fn test_fetch_with_local_urls_only() { assert!(server_response.is_network_error()); } -fn test_fetch_redirect_count(message: &'static [u8], redirect_cap: u32) -> Response { +fn setup_server_and_fetch(message: &'static [u8], redirect_cap: u32) -> Response { let handler = move |request: HyperRequest, mut response: HyperResponse| { @@ -382,7 +452,7 @@ fn test_fetch_redirect_count_ceiling() { // how many redirects to cause let redirect_cap = 20; - let fetch_response = test_fetch_redirect_count(MESSAGE, redirect_cap); + let fetch_response = setup_server_and_fetch(MESSAGE, redirect_cap); assert!(!fetch_response.is_network_error()); assert_eq!(fetch_response.response_type, ResponseType::Basic); @@ -402,7 +472,7 @@ fn test_fetch_redirect_count_failure() { // how many redirects to cause let redirect_cap = 21; - let fetch_response = test_fetch_redirect_count(MESSAGE, redirect_cap); + let fetch_response = setup_server_and_fetch(MESSAGE, redirect_cap); assert!(fetch_response.is_network_error()); diff --git a/tests/unit/script/Cargo.toml b/tests/unit/script/Cargo.toml index 8aa177e966b..b34cfb238f6 100644 --- a/tests/unit/script/Cargo.toml +++ b/tests/unit/script/Cargo.toml @@ -11,8 +11,14 @@ doctest = false [dependencies.msg] path = "../../../components/msg" +[dependencies.plugins] +path = "../../../components/plugins" + [dependencies.script] path = "../../../components/script" [dependencies.util] path = "../../../components/util" + +[dependencies] +url = {version = "0.5.8", features = ["heap_size"]} diff --git a/tests/unit/script/lib.rs b/tests/unit/script/lib.rs index 8270d8542d7..2dbbd16ea7a 100644 --- a/tests/unit/script/lib.rs +++ b/tests/unit/script/lib.rs @@ -2,10 +2,15 @@ * 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/. */ +#![feature(plugin)] +#![plugin(plugins)] + extern crate msg; extern crate script; +extern crate url; extern crate util; +#[cfg(test)] mod origin; #[cfg(all(test, target_pointer_width = "64"))] mod size_of; #[cfg(test)] mod textinput; #[cfg(test)] mod dom { diff --git a/tests/unit/script/origin.rs b/tests/unit/script/origin.rs new file mode 100644 index 00000000000..81e5d538686 --- /dev/null +++ b/tests/unit/script/origin.rs @@ -0,0 +1,105 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * 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/. */ + +use script::origin::Origin; + +#[test] +fn same_origin() { + let a = Origin::new(&url!("http://example.com/a.html")); + let b = Origin::new(&url!("http://example.com/b.html")); + assert!(a.same_origin(&b)); + assert_eq!(a.is_scheme_host_port_tuple(), true); +} + +#[test] +fn identical_origin() { + let a = Origin::new(&url!("http://example.com/a.html")); + assert!(a.same_origin(&a)); +} + +#[test] +fn cross_origin() { + let a = Origin::new(&url!("http://example.com/a.html")); + let b = Origin::new(&url!("http://example.org/b.html")); + assert!(!a.same_origin(&b)); +} + +#[test] +fn alias_same_origin() { + let a = Origin::new(&url!("http://example.com/a.html")); + let b = Origin::new(&url!("http://example.com/b.html")); + let c = b.alias(); + assert!(a.same_origin(&c)); + assert!(b.same_origin(&b)); + assert!(c.same_origin(&b)); + assert_eq!(c.is_scheme_host_port_tuple(), true); +} + +#[test] +fn alias_cross_origin() { + let a = Origin::new(&url!("http://example.com/a.html")); + let b = Origin::new(&url!("http://example.org/b.html")); + let c = b.alias(); + assert!(!a.same_origin(&c)); + assert!(b.same_origin(&c)); + assert!(c.same_origin(&c)); +} + +#[test] +fn alias_update_same_origin() { + let a = Origin::new(&url!("http://example.com/a.html")); + let b = Origin::new(&url!("http://example.org/b.html")); + let c = b.alias(); + b.set(url!("http://example.com/c.html").origin()); + assert!(a.same_origin(&c)); + assert!(b.same_origin(&c)); + assert!(c.same_origin(&c)); +} + +#[test] +fn alias_update_cross_origin() { + let a = Origin::new(&url!("http://example.com/a.html")); + let b = Origin::new(&url!("http://example.com/b.html")); + let c = b.alias(); + b.set(url!("http://example.org/c.html").origin()); + assert!(!a.same_origin(&c)); + assert!(b.same_origin(&c)); + assert!(c.same_origin(&c)); +} + +#[test] +fn alias_chain() { + let a = Origin::new(&url!("http://example.com/a.html")); + let b = Origin::new(&url!("http://example.com/b.html")); + let c = b.copy(); + let d = c.alias(); + let e = d.alias(); + assert!(a.same_origin(&e)); + assert!(b.same_origin(&e)); + assert!(c.same_origin(&e)); + assert!(d.same_origin(&e)); + assert!(e.same_origin(&e)); + c.set(url!("http://example.org/c.html").origin()); + assert!(a.same_origin(&b)); + assert!(!b.same_origin(&c)); + assert!(c.same_origin(&d)); + assert!(d.same_origin(&e)); + assert!(!e.same_origin(&a)); +} + +#[test] +fn opaque() { + let a = Origin::opaque_identifier(); + let b = Origin::opaque_identifier(); + assert!(!a.same_origin(&b)); + assert_eq!(a.is_scheme_host_port_tuple(), false); +} + +#[test] +fn opaque_clone() { + let a = Origin::opaque_identifier(); + let b = a.alias(); + assert!(a.same_origin(&b)); + assert_eq!(a.is_scheme_host_port_tuple(), false); +} diff --git a/tests/wpt/metadata-css/css21_dev/html4/max-width-110.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/max-width-110.htm.ini deleted file mode 100644 index bbc6b87885f..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/max-width-110.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[max-width-110.htm] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/XMLHttpRequest/open-url-base-inserted.htm.ini b/tests/wpt/metadata/XMLHttpRequest/open-url-base-inserted.htm.ini deleted file mode 100644 index 9e24c9d78d0..00000000000 --- a/tests/wpt/metadata/XMLHttpRequest/open-url-base-inserted.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[open-url-base-inserted.htm] - type: testharness - [XMLHttpRequest: open() resolving URLs - insert ] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain.html.ini b/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain.html.ini deleted file mode 100644 index 4adc32981f0..00000000000 --- a/tests/wpt/metadata/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[document_domain.html] - type: testharness - [new document] - expected: FAIL - diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 45ee46c1a54..5af57f14c88 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -1977,16 +1977,13 @@ [HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type (0)] expected: FAIL - [HTMLBaseElement interface: attribute href] - expected: FAIL - [HTMLBaseElement interface: attribute target] expected: FAIL - [HTMLBaseElement interface: document.createElement("base") must inherit property "href" with the proper type (0)] + [HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type (1)] expected: FAIL - [HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type (1)] + [HTMLLinkElement interface: attribute crossOrigin] expected: FAIL [HTMLLinkElement interface: attribute sizes] @@ -4311,9 +4308,6 @@ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type (6)] expected: FAIL - [HTMLTableRowElement interface: attribute sectionRowIndex] - expected: FAIL - [HTMLTableRowElement interface: attribute align] expected: FAIL @@ -4326,9 +4320,6 @@ [HTMLTableRowElement interface: attribute vAlign] expected: FAIL - [HTMLTableRowElement interface: document.createElement("tr") must inherit property "sectionRowIndex" with the proper type (1)] - expected: FAIL - [HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type (5)] expected: FAIL @@ -8898,6 +8889,3 @@ [Document interface: new Document() must inherit property "onwaiting" with the proper type (156)] expected: FAIL - [HTMLLinkElement interface: attribute crossOrigin] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_empty.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_empty.html.ini deleted file mode 100644 index 68bff358e19..00000000000 --- a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_empty.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[base_href_empty.html] - type: testharness - [The value of the href attribute must be the document's address if it is empty] - expected: FAIL - - [The src attribute of the img element must relative to document's address] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_specified.sub.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_specified.sub.html.ini deleted file mode 100644 index 4bf60923372..00000000000 --- a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_specified.sub.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[base_href_specified.sub.html] - type: testharness - [The href attribute of the base element is specified] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_unspecified.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_unspecified.html.ini deleted file mode 100644 index b782c6c77c4..00000000000 --- a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_href_unspecified.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[base_href_unspecified.html] - type: testharness - [The value of the href attribute must be the document's address if it is unspecified] - expected: FAIL - - [The src attribute of the img element must relative to document's address] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/tabular-data/the-tr-element/sectionRowIndex.html.ini b/tests/wpt/metadata/html/semantics/tabular-data/the-tr-element/sectionRowIndex.html.ini deleted file mode 100644 index 11bf47c819b..00000000000 --- a/tests/wpt/metadata/html/semantics/tabular-data/the-tr-element/sectionRowIndex.html.ini +++ /dev/null @@ -1,59 +0,0 @@ -[sectionRowIndex.html] - type: testharness - [Row in thead in HTML] - expected: FAIL - - [Row in implicit tbody in HTML] - expected: FAIL - - [Other row in implicit tbody in HTML] - expected: FAIL - - [Row in explicit tbody in HTML] - expected: FAIL - - [Row in tfoot in HTML] - expected: FAIL - - [Row in thead in nested table in HTML] - expected: FAIL - - [Row in implicit tbody in nested table in HTML] - expected: FAIL - - [Row in explicit tbody in nested table in HTML] - expected: FAIL - - [Row in script-created table] - expected: FAIL - - [Row in script-created div in table] - expected: FAIL - - [Row in script-created thead in table] - expected: FAIL - - [Row in script-created tbody in table] - expected: FAIL - - [Row in script-created tfoot in table] - expected: FAIL - - [Row in script-created tr in tbody in table] - expected: FAIL - - [Row in script-created td in tr in tbody in table] - expected: FAIL - - [Row in script-created nested table] - expected: FAIL - - [Row in script-created thead in nested table] - expected: FAIL - - [Row in script-created tbody in nested table] - expected: FAIL - - [Row in script-created tfoot in nested table] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 25c5cd18688..df6a6e7ad41 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -3179,6 +3179,54 @@ "url": "/_mozilla/css/marker_block_direction_placement_a.html" } ], + "css/max_inline_block_size.html": [ + { + "path": "css/max_inline_block_size.html", + "references": [ + [ + "/_mozilla/css/max_inline_block_size_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/max_inline_block_size.html" + } + ], + "css/max_inline_block_size_canvas.html": [ + { + "path": "css/max_inline_block_size_canvas.html", + "references": [ + [ + "/_mozilla/css/max_inline_block_size_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/max_inline_block_size_canvas.html" + } + ], + "css/max_inline_block_size_image.html": [ + { + "path": "css/max_inline_block_size_image.html", + "references": [ + [ + "/_mozilla/css/max_inline_block_size_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/max_inline_block_size_image.html" + } + ], + "css/max_inline_block_size_ref.html": [ + { + "path": "css/max_inline_block_size_ref.html", + "references": [ + [ + "/_mozilla/css/max_inline_block_size_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/max_inline_block_size_ref.html" + } + ], "css/max_width_float_simple_a.html": [ { "path": "css/max_width_float_simple_a.html", @@ -9709,6 +9757,54 @@ "url": "/_mozilla/css/marker_block_direction_placement_a.html" } ], + "css/max_inline_block_size.html": [ + { + "path": "css/max_inline_block_size.html", + "references": [ + [ + "/_mozilla/css/max_inline_block_size_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/max_inline_block_size.html" + } + ], + "css/max_inline_block_size_canvas.html": [ + { + "path": "css/max_inline_block_size_canvas.html", + "references": [ + [ + "/_mozilla/css/max_inline_block_size_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/max_inline_block_size_canvas.html" + } + ], + "css/max_inline_block_size_image.html": [ + { + "path": "css/max_inline_block_size_image.html", + "references": [ + [ + "/_mozilla/css/max_inline_block_size_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/max_inline_block_size_image.html" + } + ], + "css/max_inline_block_size_ref.html": [ + { + "path": "css/max_inline_block_size_ref.html", + "references": [ + [ + "/_mozilla/css/max_inline_block_size_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/max_inline_block_size_ref.html" + } + ], "css/max_width_float_simple_a.html": [ { "path": "css/max_width_float_simple_a.html", diff --git a/tests/wpt/mozilla/tests/css/250x250_green.png b/tests/wpt/mozilla/tests/css/250x250_green.png Binary files differnew file mode 100644 index 00000000000..586ef3d69d6 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/250x250_green.png diff --git a/tests/wpt/mozilla/tests/css/max_inline_block_size.html b/tests/wpt/mozilla/tests/css/max_inline_block_size.html new file mode 100644 index 00000000000..f0f23893143 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/max_inline_block_size.html @@ -0,0 +1,21 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Max inline-block size inside another inline-block element</title> +<link rel="match" href="max_inline_block_size_ref.html"> +<style> +html, body { margin: 0; padding: 0; } + +div { display: inline-block; } + +#a { + background: red; +} + +#b { + background: rgb(0, 255, 0); + width: 500px; + max-width: 250px; + height: 250px; +} +</style> +<div id="a"><div id="b"></div></div> diff --git a/tests/wpt/mozilla/tests/css/max_inline_block_size_canvas.html b/tests/wpt/mozilla/tests/css/max_inline_block_size_canvas.html new file mode 100644 index 00000000000..48cd896a2b7 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/max_inline_block_size_canvas.html @@ -0,0 +1,24 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Max inline-block size inside another inline-block element</title> +<link rel="match" href="max_inline_block_size_ref.html"> +<style> +html, body { margin: 0; padding: 0; } + +div, canvas { display: inline-block; } + +#a { + background: red; +} + +#c { + max-width: 250px; + height: 250px; +} +</style> +<div id="a"><canvas width="500" height="250" id="c"></canvas></div> +<script> + var c = document.getElementById("c").getContext("2d"); + c.fillStyle = "rgb(0, 255, 0)"; + c.fillRect(0, 0, c.canvas.width, c.canvas.height); +</script> diff --git a/tests/wpt/mozilla/tests/css/max_inline_block_size_image.html b/tests/wpt/mozilla/tests/css/max_inline_block_size_image.html new file mode 100644 index 00000000000..283bbd43256 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/max_inline_block_size_image.html @@ -0,0 +1,18 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Max inline-block size inside another inline-block element</title> +<link rel="match" href="max_inline_block_size_ref.html"> +<style> +html, body { margin: 0; padding: 0; } + +div, img { display: inline-block; } + +#a { + background: red; +} + +#b { + max-width: 250px; +} +</style> +<div id="a"><img id="b" width="500" height="250" src="250x250_green.png"></div> diff --git a/tests/wpt/mozilla/tests/css/max_inline_block_size_ref.html b/tests/wpt/mozilla/tests/css/max_inline_block_size_ref.html new file mode 100644 index 00000000000..7fa1370faf7 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/max_inline_block_size_ref.html @@ -0,0 +1,20 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Max inline-block size inside another inline-block element</title> +<link rel="match" href="max_inline_block_size_ref.html"> +<style> +html, body { margin: 0; padding: 0; } + +div { display: inline-block; } + +#a { + background: red; +} + +#b { + background: rgb(0, 255, 0); + width: 250px; + height: 250px; +} +</style> +<div id="a"><div id="b"></div></div> |