From 36495d677f6e5e928c74f8eb372caaae7a303047 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Sun, 1 Jul 2018 10:41:19 +0200 Subject: [PATCH] Remove unused code for parsing a `sizes` attribute. We have `SourceSizeList` in components/style/values/specified/source_size_list.rs which does the job and is tested via WPT in Gecko. --- Cargo.lock | 1 - components/script/dom/htmlimageelement.rs | 70 ---------------- components/script/test.rs | 4 - tests/unit/script/Cargo.toml | 1 - tests/unit/script/htmlimageelement.rs | 97 ----------------------- tests/unit/script/lib.rs | 1 - 6 files changed, 174 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ec694c3ddc0..81d74f5088f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2590,7 +2590,6 @@ dependencies = [ "msg 0.0.1", "script 0.0.1", "servo_url 0.0.1", - "style 0.0.1", ] [[package]] diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 61acecda71d..b37199ca0db 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use app_units::{Au, AU_PER_PX}; -use cssparser::{Parser, ParserInput}; use document_loader::{LoadType, LoadBlocker}; use dom::activation::Activatable; use dom::attr::Attr; @@ -58,13 +57,7 @@ use std::default::Default; use std::i32; use std::sync::{Arc, Mutex}; use style::attr::{AttrValue, LengthOrPercentageOrAuto, parse_double, parse_unsigned_integer}; -use style::context::QuirksMode; -use style::media_queries::MediaQuery; -use style::parser::ParserContext; use style::str::is_ascii_digit; -use style::values::specified::{Length, ViewportPercentageLength}; -use style::values::specified::length::NoCalcLength; -use style_traits::ParsingMode; use task_source::TaskSource; enum ParseState { @@ -94,12 +87,6 @@ enum State { Broken, } -#[derive(Debug, PartialEq)] -pub struct Size { - pub query: Option, - pub length: Length, -} - #[derive(Clone, Copy, JSTraceable, MallocSizeOf)] enum ImageRequestPhase { Pending, @@ -758,63 +745,6 @@ impl LayoutHTMLImageElementHelpers for LayoutDom { } } -//https://html.spec.whatwg.org/multipage/#parse-a-sizes-attribute -pub fn parse_a_sizes_attribute(input: DOMString, width: Option) -> Vec { - let mut sizes = Vec::::new(); - for unparsed_size in input.split(',') { - let whitespace = unparsed_size.chars().rev().take_while(|c| char::is_whitespace(*c)).count(); - let trimmed: String = unparsed_size.chars().take(unparsed_size.chars().count() - whitespace).collect(); - - if trimmed.is_empty() { - continue; - } - let mut input = ParserInput::new(&trimmed); - let url = ServoUrl::parse("about:blank").unwrap(); - let context = ParserContext::new_for_cssom( - &url, - None, - ParsingMode::empty(), - QuirksMode::NoQuirks, - None, - ); - let mut parser = Parser::new(&mut input); - let length = parser.try(|i| Length::parse_non_negative(&context, i)); - match length { - Ok(len) => sizes.push(Size { - length: len, - query: None - }), - Err(_) => { - let mut media_query_parser = parser; - let media_query = media_query_parser.try(|i| MediaQuery::parse(&context, i)); - if let Ok(query) = media_query { - let length = Length::parse_non_negative(&context, &mut media_query_parser); - if let Ok(length) = length { - sizes.push(Size { - length: length, - query: Some(query) - }) - } - } - }, - } - } - if sizes.is_empty() { - let size = match width { - Some(w) => Size { - length: Length::from_px(w as f32), - query: None - }, - None => Size { - length: Length::NoCalc(NoCalcLength::ViewportPercentage(ViewportPercentageLength::Vw(100.))), - query: None - }, - }; - sizes.push(size); - } - sizes -} - impl HTMLImageElementMethods for HTMLImageElement { // https://html.spec.whatwg.org/multipage/#dom-img-alt make_getter!(Alt, "alt"); diff --git a/components/script/test.rs b/components/script/test.rs index 351c3447688..b907404da0b 100644 --- a/components/script/test.rs +++ b/components/script/test.rs @@ -15,10 +15,6 @@ pub mod area { pub use dom::htmlareaelement::{Area, Shape}; } -pub mod sizes { - pub use dom::htmlimageelement::{parse_a_sizes_attribute, Size}; -} - pub mod size_of { use dom::characterdata::CharacterData; use dom::element::Element; diff --git a/tests/unit/script/Cargo.toml b/tests/unit/script/Cargo.toml index f6743a7dba6..dc78113136f 100644 --- a/tests/unit/script/Cargo.toml +++ b/tests/unit/script/Cargo.toml @@ -13,4 +13,3 @@ euclid = "0.17" msg = {path = "../../../components/msg"} script = {path = "../../../components/script"} servo_url = {path = "../../../components/url"} -style = {path = "../../../components/style"} diff --git a/tests/unit/script/htmlimageelement.rs b/tests/unit/script/htmlimageelement.rs index 6d62f25a500..796e63c2e2b 100644 --- a/tests/unit/script/htmlimageelement.rs +++ b/tests/unit/script/htmlimageelement.rs @@ -2,104 +2,7 @@ * 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::test::DOMString; -use script::test::sizes::{parse_a_sizes_attribute, Size}; use script::test::srcset::{Descriptor, ImageSource, parse_a_srcset_attribute}; -use style::media_queries::{MediaQuery, MediaQueryType}; -use style::media_queries::Expression; -use style::servo::media_queries::{ExpressionKind, Range}; -use style::values::specified::{Length, NoCalcLength, AbsoluteLength, ViewportPercentageLength}; - -pub fn test_length_for_no_default_provided(len: f32) -> Length { - let length = Length::NoCalc(NoCalcLength::ViewportPercentage(ViewportPercentageLength::Vw(len))); - return length; -} - -#[test] -fn no_default_provided() { - let mut a = vec![]; - let length = test_length_for_no_default_provided(100f32); - let size = Size { query: None, length: length }; - a.push(size); - assert_eq!(parse_a_sizes_attribute(DOMString::new(), None), a); -} - -pub fn test_length_for_default_provided(len: f32) -> Length { - let length = Length::NoCalc(NoCalcLength::Absolute(AbsoluteLength::Px(len))); - return length; -} - -#[test] -fn default_provided() { - let mut a = vec![]; - let length = test_length_for_default_provided(2f32); - let size = Size { query: None, length: length }; - a.push(size); - assert_eq!(parse_a_sizes_attribute(DOMString::new(), Some(2)), a); -} - -pub fn test_media_query(len: f32) -> MediaQuery { - let length = Length::NoCalc(NoCalcLength::Absolute(AbsoluteLength::Px(len))); - let expr = Expression(ExpressionKind::Width(Range::Max(length))); - let media_query = MediaQuery { - qualifier: None, - media_type: MediaQueryType::All, - expressions: vec![expr] - }; - media_query -} - -pub fn test_length(len: f32) -> Length { - let length = Length::NoCalc(NoCalcLength::Absolute(AbsoluteLength::Px(len))); - return length; -} - -#[test] -fn one_value() { - let mut a = vec![]; - let media_query = test_media_query(200f32); - let length = test_length(545f32); - let size = Size { query: Some(media_query), length: length }; - a.push(size); - assert_eq!(parse_a_sizes_attribute(DOMString::from("(max-width: 200px) 545px"), None), a); -} - -#[test] -fn more_then_one_value() { - let media_query = test_media_query(900f32); - let length = test_length(1000f32); - let size = Size { query: Some(media_query), length: length }; - let media_query1 = test_media_query(900f32); - let length1 = test_length(50f32); - let size1 = Size { query: Some(media_query1), length: length1 }; - let a = &[size, size1]; - assert_eq!(parse_a_sizes_attribute(DOMString::from("(max-width: 900px) 1000px, (max-width: 900px) 50px"), - None), a); -} - -#[test] -fn no_extra_whitespace() { - let mut a = vec![]; - let media_query = test_media_query(200f32); - let length = test_length(545f32); - let size = Size { query: Some(media_query), length: length }; - a.push(size); - assert_eq!(parse_a_sizes_attribute(DOMString::from("(max-width: 200px) 545px"), None), a); -} - -#[test] -fn extra_whitespace() { - let media_query = test_media_query(900f32); - let length = test_length(1000f32); - let size = Size { query: Some(media_query), length: length }; - let media_query1 = test_media_query(900f32); - let length1 = test_length(50f32); - let size1 = Size { query: Some(media_query1), length: length1 }; - let a = &[size, size1]; - assert_eq!(parse_a_sizes_attribute( - DOMString::from("(max-width: 900px) 1000px, (max-width: 900px) 50px"), - None), a); -} #[test] fn no_value() { diff --git a/tests/unit/script/lib.rs b/tests/unit/script/lib.rs index 6d724db5358..069417a5911 100644 --- a/tests/unit/script/lib.rs +++ b/tests/unit/script/lib.rs @@ -6,7 +6,6 @@ #[cfg(test)] extern crate msg; #[cfg(test)] extern crate script; #[cfg(test)] extern crate servo_url; -#[cfg(test)] extern crate style; #[cfg(test)] mod origin; #[cfg(all(test, target_pointer_width = "64"))] mod size_of;