diff options
author | bdakin <bdakin@bbb929c8-8fbe-4397-9dbb-9b2b20218538> | 2006-06-09 17:09:08 +0000 |
---|---|---|
committer | bdakin <bdakin@bbb929c8-8fbe-4397-9dbb-9b2b20218538> | 2006-06-09 17:09:08 +0000 |
commit | 241d731309f0e8b4ace487be9fbbbe3c92e3e458 (patch) | |
tree | 147d6f047820a164494a0266db565fe4af82f297 | |
parent | c684de940a33614571aa40180a68d59ca033104b (diff) | |
download | chromium_src-241d731309f0e8b4ace487be9fbbbe3c92e3e458.zip chromium_src-241d731309f0e8b4ace487be9fbbbe3c92e3e458.tar.gz chromium_src-241d731309f0e8b4ace487be9fbbbe3c92e3e458.tar.bz2 |
Reviewed by Hyatt. Tweaked by Maciej. Tweaks reviewed by Beth.
Landed by Beth.
CSS3 Media Queries implementation.
<http://bugzilla.opendarwin.org/show_bug.cgi?id=4127>
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/kjs_css.cpp:
(KJS::DOMMediaList::put):
(KJS::KJS::DOMMediaListProtoFunc::callAsFunction):
* bindings/objc/DOMCSS.mm:
(-[DOMMediaList setMediaText:]):
(-[DOMMediaList deleteMedium:]):
(-[DOMMediaList appendMedium:]):
* css/CSSGrammar.y:
* css/MediaFeatureNames.cpp: Added.
(WebCore::MediaFeatureNames::init):
* css/MediaFeatureNames.h: Added.
* css/MediaList.cpp:
(WebCore::MediaList::MediaList):
(WebCore::MediaList::~MediaList):
(WebCore::parseMediaDescriptor):
(WebCore::MediaList::deleteMedium):
(WebCore::MediaList::mediaText):
(WebCore::MediaList::setMediaText):
(WebCore::MediaList::item):
(WebCore::MediaList::appendMedium):
(WebCore::MediaList::appendMediaQuery):
* css/MediaList.h:
(WebCore::MediaList::MediaList):
(WebCore::MediaList::length):
(WebCore::MediaList::mediaQueries):
* css/MediaQuery.cpp: Added.
(WebCore::MediaQuery::MediaQuery):
(WebCore::MediaQuery::~MediaQuery):
(WebCore::MediaQuery::operator==):
(WebCore::MediaQuery::cssText):
* css/MediaQuery.h: Added.
(WebCore::MediaQuery::):
(WebCore::MediaQuery::restrictor):
(WebCore::MediaQuery::expressions):
(WebCore::MediaQuery::mediaType):
(WebCore::MediaQuery::append):
* css/MediaQueryEvaluator.cpp: Added.
(WebCore::):
(WebCore::MediaQueryEvaluator):
(WebCore::MediaQueryEvaluator::~MediaQueryEvaluator):
(WebCore::MediaQueryEvaluator::mediaTypeMatch):
(WebCore::applyRestrictor):
(WebCore::MediaQueryEvaluator::eval):
(WebCore::parseAspectRatio):
(WebCore::cmpvalue):
(WebCore::numberValue):
(WebCore::colorMediaFeatureEval):
(WebCore::monochromeMediaFeatureEval):
(WebCore::device_aspect_ratioMediaFeatureEval):
(WebCore::gridMediaFeatureEval):
(WebCore::device_heightMediaFeatureEval):
(WebCore::device_widthMediaFeatureEval):
(WebCore::heightMediaFeatureEval):
(WebCore::widthMediaFeatureEval):
(WebCore::min_colorMediaFeatureEval):
(WebCore::max_colorMediaFeatureEval):
(WebCore::min_monochromeMediaFeatureEval):
(WebCore::max_monochromeMediaFeatureEval):
(WebCore::min_device_aspect_ratioMediaFeatureEval):
(WebCore::max_device_aspect_ratioMediaFeatureEval):
(WebCore::min_heightMediaFeatureEval):
(WebCore::max_heightMediaFeatureEval):
(WebCore::min_widthMediaFeatureEval):
(WebCore::max_widthMediaFeatureEval):
(WebCore::min_device_heightMediaFeatureEval):
(WebCore::max_device_heightMediaFeatureEval):
(WebCore::min_device_widthMediaFeatureEval):
(WebCore::max_device_widthMediaFeatureEval):
(WebCore::createFunctionMap):
* css/MediaQueryEvaluator.h: Added.
* css/MediaQueryExp.cpp: Added.
(WebCore::MediaQueryExp::MediaQueryExp):
(WebCore::MediaQueryExp::~MediaQueryExp):
* css/MediaQueryExp.h: Added.
(WebCore::MediaQueryExp::mediaFeature):
(WebCore::MediaQueryExp::value):
(WebCore::MediaQueryExp::operator==):
* css/StyleSheet.cpp:
(WebCore::StyleSheet::setMedia):
* css/cssparser.cpp:
(WebCore::CSSParser::CSSParser):
(WebCore::CSSParser::~CSSParser):
(WebCore::CSSParser::setupParser):
(WebCore::CSSParser::parseMediaQuery):
(WebCore::CSSParser::createFloatingMediaQueryExp):
(WebCore::CSSParser::sinkFloatingMediaQueryExp):
(WebCore::CSSParser::createFloatingMediaQueryExpList):
(WebCore::CSSParser::sinkFloatingMediaQueryExpList):
(WebCore::CSSParser::createFloatingMediaQuery):
(WebCore::CSSParser::sinkFloatingMediaQuery):
* css/cssparser.h:
* css/cssstyleselector.cpp:
(WebCore::CSSStyleSelector::CSSStyleSelector):
(WebCore::CSSStyleSelector::init):
(WebCore::CSSStyleSelector::~CSSStyleSelector):
(WebCore::CSSStyleSelector::loadDefaultStyle):
(WebCore::CSSStyleSelector::matchUARules):
(WebCore::CSSStyleSelector::styleForElement):
(WebCore::CSSStyleSelector::pseudoStyleForElement):
(WebCore::CSSStyleSelector::updateFont):
(WebCore::CSSStyleSelector::cacheBorderAndBackground):
(WebCore::CSSStyleSelector::styleRulesForElement):
(WebCore::CSSRuleSet::addRulesFromSheet):
* css/cssstyleselector.h:
* css/maketokenizer:
* css/tokenizer.flex:
* dom/DOMImplementation.cpp:
(WebCore::DOMImplementation::createCSSStyleSheet):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::process):
(WebCore::HTMLLinkElement::setStyleSheet):
* html/HTMLStyleElement.cpp:
(WebCore::HTMLStyleElement::childrenChanged):
* ksvg2/svg/SVGDOMImplementation.cpp:
(SVGDOMImplementation::createCSSStyleSheet):
* ksvg2/svg/SVGStyleElement.cpp:
(WebCore::SVGStyleElement::childrenChanged):
* page/Frame.cpp:
(WebCore::Frame::Frame):
* platform/Screen.h:
* platform/mac/ScreenMac.mm:
(WebCore::screenDepthPerComponent):
(WebCore::screenIsMonochrome):
git-svn-id: svn://svn.chromium.org/blink/trunk@14779 bbb929c8-8fbe-4397-9dbb-9b2b20218538
201 files changed, 3505 insertions, 199 deletions
diff --git a/third_party/WebKit/LayoutTests/ChangeLog b/third_party/WebKit/LayoutTests/ChangeLog index 163ab2c..9f7e75b 100644 --- a/third_party/WebKit/LayoutTests/ChangeLog +++ b/third_party/WebKit/LayoutTests/ChangeLog @@ -1,3 +1,237 @@ +2006-06-09 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com> + + Reviewed by Hyatt. + + Test cases for CSS3 Media Queries implementation. + <http://bugzilla.opendarwin.org/show_bug.cgi?id=4127> + + * fast/media/import-p-green.css: Added. + * fast/media/import-p-red.css: Added. + * fast/media/media-descriptor-syntax-01-expected.checksum: Added. + * fast/media/media-descriptor-syntax-01-expected.png: Added. + * fast/media/media-descriptor-syntax-01-expected.txt: Added. + * fast/media/media-descriptor-syntax-01.html: Added. + * fast/media/media-descriptor-syntax-02-expected.checksum: Added. + * fast/media/media-descriptor-syntax-02-expected.png: Added. + * fast/media/media-descriptor-syntax-02-expected.txt: Added. + * fast/media/media-descriptor-syntax-02.html: Added. + * fast/media/media-descriptor-syntax-03-expected.checksum: Added. + * fast/media/media-descriptor-syntax-03-expected.png: Added. + * fast/media/media-descriptor-syntax-03-expected.txt: Added. + * fast/media/media-descriptor-syntax-03.html: Added. + * fast/media/media-descriptor-syntax-04-expected.checksum: Added. + * fast/media/media-descriptor-syntax-04-expected.png: Added. + * fast/media/media-descriptor-syntax-04-expected.txt: Added. + * fast/media/media-descriptor-syntax-04.html: Added. + * fast/media/media-descriptor-syntax-05-expected.checksum: Added. + * fast/media/media-descriptor-syntax-05-expected.png: Added. + * fast/media/media-descriptor-syntax-05-expected.txt: Added. + * fast/media/media-descriptor-syntax-05.html: Added. + * fast/media/media-descriptor-syntax-06-expected.checksum: Added. + * fast/media/media-descriptor-syntax-06-expected.png: Added. + * fast/media/media-descriptor-syntax-06-expected.txt: Added. + * fast/media/media-descriptor-syntax-06.html: Added. + * fast/media/media-type-syntax-01-expected.checksum: Added. + * fast/media/media-type-syntax-01-expected.png: Added. + * fast/media/media-type-syntax-01-expected.txt: Added. + * fast/media/media-type-syntax-01.html: Added. + * fast/media/media-type-syntax-02-expected.checksum: Added. + * fast/media/media-type-syntax-02-expected.png: Added. + * fast/media/media-type-syntax-02-expected.txt: Added. + * fast/media/media-type-syntax-02.html: Added. + * fast/media/mq-compound-query-01-expected.checksum: Added. + * fast/media/mq-compound-query-01-expected.png: Added. + * fast/media/mq-compound-query-01-expected.txt: Added. + * fast/media/mq-compound-query-01.html: Added. + * fast/media/mq-compound-query-02-expected.checksum: Added. + * fast/media/mq-compound-query-02-expected.png: Added. + * fast/media/mq-compound-query-02-expected.txt: Added. + * fast/media/mq-compound-query-02.html: Added. + * fast/media/mq-compound-query-03-expected.checksum: Added. + * fast/media/mq-compound-query-03-expected.png: Added. + * fast/media/mq-compound-query-03-expected.txt: Added. + * fast/media/mq-compound-query-03.html: Added. + * fast/media/mq-compound-query-04-expected.checksum: Added. + * fast/media/mq-compound-query-04-expected.png: Added. + * fast/media/mq-compound-query-04-expected.txt: Added. + * fast/media/mq-compound-query-04.html: Added. + * fast/media/mq-compound-query-05-expected.checksum: Added. + * fast/media/mq-compound-query-05-expected.png: Added. + * fast/media/mq-compound-query-05-expected.txt: Added. + * fast/media/mq-compound-query-05.html: Added. + * fast/media/mq-grid-01-expected.checksum: Added. + * fast/media/mq-grid-01-expected.png: Added. + * fast/media/mq-grid-01-expected.txt: Added. + * fast/media/mq-grid-01.html: Added. + * fast/media/mq-grid-02-expected.checksum: Added. + * fast/media/mq-grid-02-expected.png: Added. + * fast/media/mq-grid-02-expected.txt: Added. + * fast/media/mq-grid-02.html: Added. + * fast/media/mq-invalid-media-feature-01-expected.checksum: Added. + * fast/media/mq-invalid-media-feature-01-expected.png: Added. + * fast/media/mq-invalid-media-feature-01-expected.txt: Added. + * fast/media/mq-invalid-media-feature-01.html: Added. + * fast/media/mq-invalid-media-feature-02-expected.checksum: Added. + * fast/media/mq-invalid-media-feature-02-expected.png: Added. + * fast/media/mq-invalid-media-feature-02-expected.txt: Added. + * fast/media/mq-invalid-media-feature-02.html: Added. + * fast/media/mq-invalid-media-feature-03-expected.checksum: Added. + * fast/media/mq-invalid-media-feature-03-expected.png: Added. + * fast/media/mq-invalid-media-feature-03-expected.txt: Added. + * fast/media/mq-invalid-media-feature-03.html: Added. + * fast/media/mq-invalid-media-feature-04-expected.checksum: Added. + * fast/media/mq-invalid-media-feature-04-expected.png: Added. + * fast/media/mq-invalid-media-feature-04-expected.txt: Added. + * fast/media/mq-invalid-media-feature-04.html: Added. + * fast/media/mq-invalid-syntax-01-expected.checksum: Added. + * fast/media/mq-invalid-syntax-01-expected.png: Added. + * fast/media/mq-invalid-syntax-01-expected.txt: Added. + * fast/media/mq-invalid-syntax-01.html: Added. + * fast/media/mq-invalid-syntax-02-expected.checksum: Added. + * fast/media/mq-invalid-syntax-02-expected.png: Added. + * fast/media/mq-invalid-syntax-02-expected.txt: Added. + * fast/media/mq-invalid-syntax-02.html: Added. + * fast/media/mq-invalid-syntax-03-expected.checksum: Added. + * fast/media/mq-invalid-syntax-03-expected.png: Added. + * fast/media/mq-invalid-syntax-03-expected.txt: Added. + * fast/media/mq-invalid-syntax-03.html: Added. + * fast/media/mq-invalid-syntax-04-expected.checksum: Added. + * fast/media/mq-invalid-syntax-04-expected.png: Added. + * fast/media/mq-invalid-syntax-04-expected.txt: Added. + * fast/media/mq-invalid-syntax-04.html: Added. + * fast/media/mq-invalid-syntax-05-expected.checksum: Added. + * fast/media/mq-invalid-syntax-05-expected.png: Added. + * fast/media/mq-invalid-syntax-05-expected.txt: Added. + * fast/media/mq-invalid-syntax-05.html: Added. + * fast/media/mq-js-media-except-01-expected.checksum: Added. + * fast/media/mq-js-media-except-01-expected.png: Added. + * fast/media/mq-js-media-except-01-expected.txt: Added. + * fast/media/mq-js-media-except-01.html: Added. + * fast/media/mq-js-media-except-02-expected.checksum: Added. + * fast/media/mq-js-media-except-02-expected.png: Added. + * fast/media/mq-js-media-except-02-expected.txt: Added. + * fast/media/mq-js-media-except-02.html: Added. + * fast/media/mq-js-media-except-03-expected.checksum: Added. + * fast/media/mq-js-media-except-03-expected.png: Added. + * fast/media/mq-js-media-except-03-expected.txt: Added. + * fast/media/mq-js-media-except-03.html: Added. + * fast/media/mq-js-media-forward-syntax-expected.checksum: Added. + * fast/media/mq-js-media-forward-syntax-expected.png: Added. + * fast/media/mq-js-media-forward-syntax-expected.txt: Added. + * fast/media/mq-js-media-forward-syntax.html: Added. + * fast/media/mq-js-stylesheet-media-01-expected.checksum: Added. + * fast/media/mq-js-stylesheet-media-01-expected.png: Added. + * fast/media/mq-js-stylesheet-media-01-expected.txt: Added. + * fast/media/mq-js-stylesheet-media-01.html: Added. + * fast/media/mq-js-stylesheet-media-02-expected.checksum: Added. + * fast/media/mq-js-stylesheet-media-02-expected.png: Added. + * fast/media/mq-js-stylesheet-media-02-expected.txt: Added. + * fast/media/mq-js-stylesheet-media-02.html: Added. + * fast/media/mq-js-stylesheet-media-03-expected.checksum: Added. + * fast/media/mq-js-stylesheet-media-03-expected.png: Added. + * fast/media/mq-js-stylesheet-media-03-expected.txt: Added. + * fast/media/mq-js-stylesheet-media-03.html: Added. + * fast/media/mq-js-stylesheet-media-04-expected.checksum: Added. + * fast/media/mq-js-stylesheet-media-04-expected.png: Added. + * fast/media/mq-js-stylesheet-media-04-expected.txt: Added. + * fast/media/mq-js-stylesheet-media-04.html: Added. + * fast/media/mq-min-constraint-expected.checksum: Added. + * fast/media/mq-min-constraint-expected.png: Added. + * fast/media/mq-min-constraint-expected.txt: Added. + * fast/media/mq-min-constraint.html: Added. + * fast/media/mq-relative-constraints-02-expected.checksum: Added. + * fast/media/mq-relative-constraints-02-expected.png: Added. + * fast/media/mq-relative-constraints-02-expected.txt: Added. + * fast/media/mq-relative-constraints-02.html: Added. + * fast/media/mq-relative-constraints-03-expected.checksum: Added. + * fast/media/mq-relative-constraints-03-expected.png: Added. + * fast/media/mq-relative-constraints-03-expected.txt: Added. + * fast/media/mq-relative-constraints-03.html: Added. + * fast/media/mq-relative-constraints-04-expected.checksum: Added. + * fast/media/mq-relative-constraints-04-expected.png: Added. + * fast/media/mq-relative-constraints-04-expected.txt: Added. + * fast/media/mq-relative-constraints-04.html: Added. + * fast/media/mq-relative-constraints-05-expected.checksum: Added. + * fast/media/mq-relative-constraints-05-expected.png: Added. + * fast/media/mq-relative-constraints-05-expected.txt: Added. + * fast/media/mq-relative-constraints-05.html: Added. + * fast/media/mq-relative-constraints-06-expected.checksum: Added. + * fast/media/mq-relative-constraints-06-expected.png: Added. + * fast/media/mq-relative-constraints-06-expected.txt: Added. + * fast/media/mq-relative-constraints-06.html: Added. + * fast/media/mq-relative-constraints-07-expected.checksum: Added. + * fast/media/mq-relative-constraints-07-expected.png: Added. + * fast/media/mq-relative-constraints-07-expected.txt: Added. + * fast/media/mq-relative-constraints-07.html: Added. + * fast/media/mq-relative-constraints-08-expected.checksum: Added. + * fast/media/mq-relative-constraints-08-expected.png: Added. + * fast/media/mq-relative-constraints-08-expected.txt: Added. + * fast/media/mq-relative-constraints-08.html: Added. + * fast/media/mq-relative-constraints-09-expected.checksum: Added. + * fast/media/mq-relative-constraints-09-expected.png: Added. + * fast/media/mq-relative-constraints-09-expected.txt: Added. + * fast/media/mq-relative-constraints-09.html: Added. + * fast/media/mq-simple-neg-query-01-expected.checksum: Added. + * fast/media/mq-simple-neg-query-01-expected.png: Added. + * fast/media/mq-simple-neg-query-01-expected.txt: Added. + * fast/media/mq-simple-neg-query-01.html: Added. + * fast/media/mq-simple-neg-query-02-expected.checksum: Added. + * fast/media/mq-simple-neg-query-02-expected.png: Added. + * fast/media/mq-simple-neg-query-02-expected.txt: Added. + * fast/media/mq-simple-neg-query-02.html: Added. + * fast/media/mq-simple-neg-query-03-expected.checksum: Added. + * fast/media/mq-simple-neg-query-03-expected.png: Added. + * fast/media/mq-simple-neg-query-03-expected.txt: Added. + * fast/media/mq-simple-neg-query-03.html: Added. + * fast/media/mq-simple-neg-query-04-expected.checksum: Added. + * fast/media/mq-simple-neg-query-04-expected.png: Added. + * fast/media/mq-simple-neg-query-04-expected.txt: Added. + * fast/media/mq-simple-neg-query-04.html: Added. + * fast/media/mq-simple-neg-query-05-expected.checksum: Added. + * fast/media/mq-simple-neg-query-05-expected.png: Added. + * fast/media/mq-simple-neg-query-05-expected.txt: Added. + * fast/media/mq-simple-neg-query-05.html: Added. + * fast/media/mq-simple-query-01-expected.checksum: Added. + * fast/media/mq-simple-query-01-expected.png: Added. + * fast/media/mq-simple-query-01-expected.txt: Added. + * fast/media/mq-simple-query-01.html: Added. + * fast/media/mq-simple-query-02-expected.checksum: Added. + * fast/media/mq-simple-query-02-expected.png: Added. + * fast/media/mq-simple-query-02-expected.txt: Added. + * fast/media/mq-simple-query-02.html: Added. + * fast/media/mq-simple-query-03-expected.checksum: Added. + * fast/media/mq-simple-query-03-expected.png: Added. + * fast/media/mq-simple-query-03-expected.txt: Added. + * fast/media/mq-simple-query-03.html: Added. + * fast/media/mq-simple-query-04-expected.checksum: Added. + * fast/media/mq-simple-query-04-expected.png: Added. + * fast/media/mq-simple-query-04-expected.txt: Added. + * fast/media/mq-simple-query-04.html: Added. + * fast/media/mq-simple-query-05-expected.checksum: Added. + * fast/media/mq-simple-query-05-expected.png: Added. + * fast/media/mq-simple-query-05-expected.txt: Added. + * fast/media/mq-simple-query-05.html: Added. + * fast/media/mq-valueless-expected.checksum: Added. + * fast/media/mq-valueless-expected.png: Added. + * fast/media/mq-valueless-expected.txt: Added. + * fast/media/mq-valueless.html: Added. + * fast/media/mq-width-absolute-01-expected.checksum: Added. + * fast/media/mq-width-absolute-01-expected.png: Added. + * fast/media/mq-width-absolute-01-expected.txt: Added. + * fast/media/mq-width-absolute-01.html: Added. + * fast/media/mq-width-absolute-02-expected.checksum: Added. + * fast/media/mq-width-absolute-02-expected.png: Added. + * fast/media/mq-width-absolute-02-expected.txt: Added. + * fast/media/mq-width-absolute-02.html: Added. + * fast/media/mq-width-absolute-03-expected.checksum: Added. + * fast/media/mq-width-absolute-03-expected.png: Added. + * fast/media/mq-width-absolute-03-expected.txt: Added. + * fast/media/mq-width-absolute-03.html: Added. + * fast/media/mq-width-absolute-04-expected.checksum: Added. + * fast/media/mq-width-absolute-04-expected.png: Added. + * fast/media/mq-width-absolute-04-expected.txt: Added. + * fast/media/mq-width-absolute-04.html: Added. + 2006-06-08 Justin Garcia <justin.garcia@apple.com> Reviewed by levi diff --git a/third_party/WebKit/LayoutTests/fast/media/import-p-green.css b/third_party/WebKit/LayoutTests/fast/media/import-p-green.css new file mode 100644 index 0000000..131ad93 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/import-p-green.css @@ -0,0 +1 @@ +p { color: green } diff --git a/third_party/WebKit/LayoutTests/fast/media/import-p-red.css b/third_party/WebKit/LayoutTests/fast/media/import-p-red.css new file mode 100644 index 0000000..e8b0e11 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/import-p-red.css @@ -0,0 +1,2 @@ +p { color: red } +\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01.html b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01.html new file mode 100644 index 0000000..3c5ca9f --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-01.html @@ -0,0 +1,14 @@ +<html> +<head> +<title>HTML4 media descriptors test: parsing style element media attribute, forward-compatible syntax</title> +<link rel="help" href="http://www.w3.org/TR/REC-html40/types.html#h-6.13" /> + +<style type="text/css" media="3d-glasses, screen and resolution > 40dpi, braille"> +p { color: green } +</style> + +</head> +<body> +</body> +<p> This text should be green. </p> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02.html b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02.html new file mode 100644 index 0000000..d3cb208 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-02.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>HTML4 media descriptor test: parsing style element media attribute, forward-compatible syntax</title> +<link rel="help" href="http://www.w3.org/TR/REC-html40/types.html#h-6.13" /> +<!-- actual testcase from http://www.hixie.ch/tests/evil/css/import/extra/styleexoticmedia.html --> + +<style type="text/css" media="screen;braille"> +p { color: green } +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03.html b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03.html new file mode 100644 index 0000000..c503521 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-03.html @@ -0,0 +1,14 @@ +<html> +<head> +<title>HTML4 media descriptor test: parsing style element media attribute, forward-compatible syntax</title> +<link rel="help" href="http://www.w3.org/TR/REC-html40/types.html#h-6.13" /> +<!-- actual testcase from http://www.hixie.ch/tests/evil/css/import/extra/styleexoticmedia.html --> +<style type="text/css" media="braille, all with print"> +p { color: green } +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04.html b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04.html new file mode 100644 index 0000000..bd22795 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-04.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>HTML4 media descriptor test: parsing style element media attribute, forward-compatible syntax</title> +<link rel="help" href="http://www.w3.org/TR/REC-html40/types.html#h-6.13" /> +<style type="text/css" media=",,,,"> +p { color: green } +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05-expected.txt b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05.html b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05.html new file mode 100644 index 0000000..805fa23 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-05.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>HTML4 media descriptor test: parsing style element media attribute, forward-compatible syntax</title> +<link rel="help" href="http://www.w3.org/TR/REC-html40/types.html#h-6.13" /> +<style type="text/css" media="*****|{}- |[|"> +p { color: green } +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06-expected.txt b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06.html b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06.html new file mode 100644 index 0000000..ffcc4bc --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-descriptor-syntax-06.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>HTML4 media descriptor test: parsing style element media attribute, forward-compatible syntax</title> +<link rel="help" href="http://www.w3.org/TR/REC-html40/types.html#h-6.13" /> +<style type="text/css" media=" "> +p { color: green } +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01.html b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01.html new file mode 100644 index 0000000..940cffb --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-01.html @@ -0,0 +1,14 @@ +<html> +<head> +<title>CSS2.1 media type test: parsing simple @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/REC-html40/types.html#h-6.13" /> + +<style type="text/css"> +@media all { p { color: green } } +</style> + +</head> +<body> +</body> +<p> This text should be green. </p> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02.html b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02.html new file mode 100644 index 0000000..6d81bb4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/media-type-syntax-02.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS2.1 media type test: parsing simple @media css rule. Media type ,,,, should be considered as invalid syntax</title> +<link rel="help" href="http://www.w3.org/TR/REC-html40/types.html#h-6.13" /> + +<style type="text/css"> +p { color: green } +@media ,,,,, { p { color: red } } +</style> + +</head> +<body> +</body> +<p> This text should be green. </p> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01-expected.checksum new file mode 100644 index 0000000..551aced --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01-expected.checksum @@ -0,0 +1 @@ +7499a40172304d162bb6dbf0ac77e8dd
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01-expected.txt new file mode 100644 index 0000000..0266729 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 317x18 + text run at (0,0) width 317: "This text should be green on bitmap color devices." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01.html new file mode 100644 index 0000000..4867acb --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-01.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>CSS3 media query test: media query testing compound queries (screen and (color) and (grid:0)). Using style element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<style type="text/css" media="screen and (color) and (grid:0)"> +p { color: green } +</style> + +</head> +<body> +<p> This text should be green on bitmap color devices.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02-expected.checksum new file mode 100644 index 0000000..551aced --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02-expected.checksum @@ -0,0 +1 @@ +7499a40172304d162bb6dbf0ac77e8dd
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02-expected.txt new file mode 100644 index 0000000..0266729 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 317x18 + text run at (0,0) width 317: "This text should be green on bitmap color devices." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02.html new file mode 100644 index 0000000..9d019dd --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-02.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>CSS3 media query test: media query testing compound queries (screen and (color) and (grid:0)). Using link element, media attribute</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<link rel="stylesheet" type="text/css" media="screen and (color) and (grid:0)" href="import-p-green.css" /> +</head> +<body> +<p> This text should be green on bitmap color devices.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03-expected.checksum new file mode 100644 index 0000000..551aced --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03-expected.checksum @@ -0,0 +1 @@ +7499a40172304d162bb6dbf0ac77e8dd
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03-expected.txt new file mode 100644 index 0000000..0266729 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 317x18 + text run at (0,0) width 317: "This text should be green on bitmap color devices." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03.html new file mode 100644 index 0000000..83b1734 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-03.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>CSS3 media query test: media query testing compound queries (screen and (color) and (grid:0)). Using style element, css @import rule</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<style type="text/css" > +@import url(import-p-green.css) screen and (color) and (grid:0); +</style> + +</head> +<body> +<p> This text should be green on bitmap color devices.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04-expected.checksum new file mode 100644 index 0000000..551aced --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04-expected.checksum @@ -0,0 +1 @@ +7499a40172304d162bb6dbf0ac77e8dd
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04-expected.txt new file mode 100644 index 0000000..0266729 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 317x18 + text run at (0,0) width 317: "This text should be green on bitmap color devices." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04.html b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04.html new file mode 100644 index 0000000..1c6eb62 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-04.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: media query testing compound queries (screen and (color) and (grid:0)). Using style element, css @media rule</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<style type="text/css"> +@media screen and (color) and (grid:0) { +p { color: green } +} +</style> + +</head> +<body> +<p> This text should be green on bitmap color devices.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05-expected.checksum new file mode 100644 index 0000000..54d2303 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05-expected.checksum @@ -0,0 +1 @@ +05a863a321f32f15ca96f0b745ab6823
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05-expected.txt new file mode 100644 index 0000000..f4f32bc0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 399x18 + text run at (0,0) width 399: "This text should be green if viewport is at most 800px x 600px." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05.html b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05.html new file mode 100644 index 0000000..376e7e3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-compound-query-05.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: Compound media query, absolute values (screen and (max-width: 800px) and (max-height:600px)). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> + +<style type="text/css"> +@media screen and (max-width: 800px) and (max-height:600px){ +p { color: green } +} +</style> +</head> +<body> +<p> This text should be green if viewport is at most 800px x 600px.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-grid-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-grid-01-expected.checksum new file mode 100644 index 0000000..710b1d2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-grid-01-expected.checksum @@ -0,0 +1 @@ +1c11b6a1285dfb1dad48634108141ce9
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-grid-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-grid-01-expected.txt new file mode 100644 index 0000000..fcb7ae3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-grid-01-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 378x18 + text run at (0,0) width 378: "This text should be green if viewing device is bitmap device" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-grid-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-grid-01.html new file mode 100644 index 0000000..d6a4884 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-grid-01.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: Media query testing value of grid (screen and grid:0). Using style attribute, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +@media screen and (grid: 0) { +p { color: green } +} +</style> +</head> +<body> +<p> This text should be green if viewing device is bitmap device</p> +</body> +</html> + diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-grid-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-grid-02-expected.checksum new file mode 100644 index 0000000..66c0eb6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-grid-02-expected.checksum @@ -0,0 +1 @@ +364923683606083e6728dc6edcf76f89
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-grid-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-grid-02-expected.txt new file mode 100644 index 0000000..6134912 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-grid-02-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 399x18 + text run at (0,0) width 399: "This text should be green if viewing device is not a grid device." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-grid-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-grid-02.html new file mode 100644 index 0000000..6590b4e --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-grid-02.html @@ -0,0 +1,14 @@ +<html> +<head> +<title>CSS3 media query test: media query testing not and parameterless feature (not screen and (grid)). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#grid" /> +<style type="text/css"> +@media not screen and (grid) { +p { color: green } +} +</style> +</head> +<body> +<p> This text should be green if viewing device is not a grid device.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01.html new file mode 100644 index 0000000..007523c --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-01.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: syntactically correct query with invalid media feature should eval false (all and (invalid)). Using style element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +p { color: green } +</style> +<style type="text/css" media="all and (invalid)"> +p { color: red } +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02.html new file mode 100644 index 0000000..f8467b8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-02.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>CSS3 media query test: syntactically correct query with invalid media feature should eval false (all and (invalid)). Using link element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +p { color: green } +</style> +<link rel="stylesheet" type="text/css" media="all and (invalid)" href="import-p-red.css" /> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03.html new file mode 100644 index 0000000..4781a05 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-03.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: syntactically correct query with invalid media feature should eval false (all and (invalid)). Using style element, css import rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +p { color: green } +</style> +<style type="text/css"> +@import url(import-p-red.css) all and (invalid); +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04.html new file mode 100644 index 0000000..05c9d47 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-media-feature-04.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: syntactically correct query with invalid media feature should eval false (all and (invalid)). Using style element, css media rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +p { color: green } +@media all and (invalid) { +p { color: red } +} +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01.html new file mode 100644 index 0000000..9baddbf --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-01.html @@ -0,0 +1,14 @@ +<html> +<head> +<title>CSS3 media query test: syntactically invalid media query inside html element should be treated as html media descriptor. Using style element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> + +<style type="text/css" media="all and invalid"> +p { color: green } +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02.html new file mode 100644 index 0000000..69a9b34 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-02.html @@ -0,0 +1,12 @@ +<html> +<head> +<title>CSS3 media query test: syntactically invalid media query inside html element should be treated as media descriptor. Using link element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> + +<link rel="stylesheet" type="text/css" media="all and invalid" href="import-p-green.css" /> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03.html new file mode 100644 index 0000000..0c34d5b --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-03.html @@ -0,0 +1,16 @@ +<html> +<head> +<title>CSS3 media query test: syntactically invalid media query inside css rule should eval to false. Using style element, css import rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +p { color: green } +</style> +<style type="text/css"> +@import url(import-p-red.css) all and invalid; +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04.html new file mode 100644 index 0000000..a5e608c --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-04.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: syntactically invalid media query inside css rule should eval to false. Using style element, css media rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +p { color: green } +@media all and invalid { +p { color: red } +} +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05.html b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05.html new file mode 100644 index 0000000..bd5db84 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-invalid-syntax-05.html @@ -0,0 +1,17 @@ +<html> +<head> +<title>CSS3 media query test: syntactically invalid media query inside css rule should eval to false (,,,,). Using style element, css import rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<!-- this test shows slight disconnect between css media queries and html4 media descriptors --> +<style type="text/css" media=",,,,,,"> +p { color: green } +</styl> +<style type="text/css"> +@import url(import-p-red.css) all,,,,,,; + +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01-expected.checksum new file mode 100644 index 0000000..7534215 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01-expected.checksum @@ -0,0 +1 @@ +9d59e88369e0bb024dff565dca8552d4
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01-expected.txt new file mode 100644 index 0000000..a962b50 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 244x18 + text run at (0,0) width 244: "The text below should read \"Success.\"" + RenderBlock {P} at (0,34) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 54x18 + text run at (0,0) width 54: "Success." + RenderBlock {P} at (0,68) size 784x18 + RenderText {#text} at (0,0) size 519x18 + text run at (0,0) width 519: "Following exception was caught: Error: NOT_FOUND_ERR: DOM Exception 8" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01.html new file mode 100644 index 0000000..cf68ec8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-01.html @@ -0,0 +1,31 @@ +<html> +<head> +<title>CSS3 media query test: deleteMedium throwing exception.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> + +<style type="text/css"> +@media all and (color) { +p#result { color: green;} +} +</style> + +<script language="javascript"> +function test() { + try { + document.styleSheets[0].cssRules[0].media.deleteMedium("all and ("); + } + catch(e) { + document.getElementById("result").innerHTML = "Success." + document.getElementById("details").innerHTML = "Following exception was caught: " + e; + } +} +</script> + + +</head> +<body onload="test()"> +<p>The text below should read "Success." </p> +<p id="result">Failure: test not run.</p> +<p id="details"></p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02-expected.checksum new file mode 100644 index 0000000..33f25b9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02-expected.checksum @@ -0,0 +1 @@ +84987ac023fd4ab7ec1021a5298cba0f
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02-expected.txt new file mode 100644 index 0000000..0762171 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." + RenderBlock {P} at (0,34) size 784x18 + RenderText {#text} at (0,0) size 401x18 + text run at (0,0) width 401: "Caught exception: Error: SYNTAX_ERR: DOM Exception 12" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02.html new file mode 100644 index 0000000..657c98e --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-02.html @@ -0,0 +1,38 @@ +<html> +<head> +<title>CSS3 media query test: @media css rule media.mediaText property parsing, media query syntax error should be handled correctly.</title> +<link rel="help" href="http://www.w3.org/TR/CSS21/media.html" /> + +<style type="text/css"> +p#result {color: green} + +@media not screen { +/* query will be modified from javascript */ +/* the manipulation contains syntax error, and should fail */ +p#result {color: red} +} + +@media screen and resolution > 40dpi { +/* media query with syntax error should fail */ +/* corresponding DOM manipulation will fail */ +p#result {color: red} +} +</style> +<script language="javascript"> +function test() { + try { + // this should throw + document.styleSheets[0].cssRules[1].media.mediaText = "screen and resolution > 40dpi"; + } catch (e) { + document.getElementById("result").innerHTML = "This text should be green."; + document.getElementById("details").innerHTML = "Caught exception: " + e; + } +} +</script> + +</head> +<body onload="test()"> +<p id="result">Failure: test not run</p> +<p id="details"></p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03-expected.checksum new file mode 100644 index 0000000..087a29d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03-expected.checksum @@ -0,0 +1 @@ +6b2b09a646db9fc944c4bb148dec6135
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03-expected.txt new file mode 100644 index 0000000..eabb0c8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 221x18 + text run at (0,0) width 221: "Success. This text should be green." + RenderBlock {P} at (0,34) size 784x18 + RenderText {#text} at (0,0) size 401x18 + text run at (0,0) width 401: "Caught exception: Error: SYNTAX_ERR: DOM Exception 12" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03.html new file mode 100644 index 0000000..fe3c3dd --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-except-03.html @@ -0,0 +1,43 @@ +<html> +<head> +<title>CSS3 media query test: @media css rule media.mediaText property parsing, media query syntax error should be handled correctly (,,,,).</title> +<link rel="help" href="http://www.w3.org/TR/CSS21/media.html" /> +<link rel="help" href="http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule" /> +<!-- this test shows slight disconnect between css media queries and html4 media descriptors --> +<style type="text/css"> +p#result {color: green} + +@media braille { +/* query will be modified from javascript */ +/* the manipulation contains syntax error, and should fail */ +p#result {color: red} +} +} +</style> +<script language="javascript"> +function test() { + try { + // this shouldn't throw + document.styleSheets[0].media.mediaText = ",,,,"; + } catch (e) { + document.getElementById("result").innerHTML = "Failure. ,,,, should be valid media descriptor."; + document.getElementById("details").innerHTML = "Caught exception: " + e; + return; + } + try { + // this should throw + document.styleSheets[0].cssRules[1].media.mediaText = ",,,,"; + document.getElementById("result").innerHTML = "Failure. No exception thrown."; + } catch (e) { + document.getElementById("result").innerHTML = "Success. This text should be green."; + document.getElementById("details").innerHTML = "Caught exception: " + e; + } +} +</script> + +</head> +<body onload="test()"> +<p id="result">Failure: test not run</p> +<p id="details">aaa</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax.html b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax.html new file mode 100644 index 0000000..5e74cdb --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-media-forward-syntax.html @@ -0,0 +1,33 @@ +<html> +<head> +<title>CSS3 media query test: stylesheet media.mediaText = parsing, media descriptor fallback in document.StyleSheet.media.mediaText</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> + +<!-- the media property of stylesheet below will be manipulated, and + manipulation should respect html media descriptor forward-compatible syntax. + This means the manipulation should succeed. --> +<style type="text/css"> + +p#result { color: green;} + +@media screen and resolution > 40dpi { +/* media query with syntax error should fail */ +/* corresponding DOM manipulation to the mediaText of the stylesheet will succeed */ +p#result { color: red;} + +} +</style> +<script language="javascript"> +function test() { + // this should not throw, because StyleSheet should respect Media Description forward-compatible syntax + document.styleSheets[0].media.mediaText = "screen and resolution > 40dpi"; + document.getElementById("result").innerHTML = "This text should be green."; +} +</script> + + +</head> +<body onload="test()"> +<p id="result">Failure: test not run</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01-expected.checksum new file mode 100644 index 0000000..0dc845a --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01-expected.checksum @@ -0,0 +1 @@ +bfd66393358e49a5b1c09f4acb698233
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01-expected.txt new file mode 100644 index 0000000..4af0a58 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 610x18 + text run at (0,0) width 610: "The text below should be green and contain \"braille, media, screen and (color) and (grid: 0), tty\"." + RenderBlock {P} at (0,34) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 312x18 + text run at (0,0) width 312: "braille, media, screen and (color) and (grid: 0), tty" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01.html new file mode 100644 index 0000000..13b21c4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-01.html @@ -0,0 +1,23 @@ +<html> +<head> +<title>CSS3 media query test: stylesheet media.mediaText property inspection.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> + +<style type="text/css" media="braille, media with error, screen and (color) and (grid:0), tty resolution > 600px"> +#result { color: green } +</style> + +<script language="javascript"> +function test() { + re = document.getElementById("result"); + re.innerHTML = "started"; + re.innerHTML = document.styleSheets[0].media.mediaText; +} +</script> + +</head> +<body onload="test()"> +<p> The text below should be green and contain "braille, media, screen and (color) and (grid: 0), tty". </p> +<p id="result">Failure: test not run</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02-expected.checksum new file mode 100644 index 0000000..0dc845a --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02-expected.checksum @@ -0,0 +1 @@ +bfd66393358e49a5b1c09f4acb698233
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02-expected.txt new file mode 100644 index 0000000..4af0a58 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 610x18 + text run at (0,0) width 610: "The text below should be green and contain \"braille, media, screen and (color) and (grid: 0), tty\"." + RenderBlock {P} at (0,34) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 312x18 + text run at (0,0) width 312: "braille, media, screen and (color) and (grid: 0), tty" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02.html new file mode 100644 index 0000000..bc7ff03 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-02.html @@ -0,0 +1,27 @@ +<html> +<head> +<title>CSS3 media query test: stylesheet media property enumeration.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<link rel="help" href="http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html" /> + +<style type="text/css" media="braille, media with error, screen and (color) and (grid:0), tty resolution > 600px"> +#result { color: green; } +</style> + +<script language="javascript"> +function test() { + re = document.getElementById("result"); + re.innerHTML = "started"; + re.innerHTML = document.styleSheets[0].media.item(0) + + ", " + document.styleSheets[0].media.item(1) + + ", " + document.styleSheets[0].media.item(2) + + ", " + document.styleSheets[0].media.item(3) ; +} +</script> + +</head> +<body onload="test()"> +<p> The text below should be green and contain "braille, media, screen and (color) and (grid: 0), tty". </p> +<p id="result">Failure: test not run</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03-expected.checksum new file mode 100644 index 0000000..259cb2f --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03-expected.checksum @@ -0,0 +1 @@ +e6d84d9dec5b0856a1c30816e87d16aa
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03-expected.txt new file mode 100644 index 0000000..203f9eb --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 560x18 + text run at (0,0) width 560: "This text should be green and below should read \"braille, not screen, screen and (color)\"." + RenderBlock {P} at (0,34) size 784x18 + RenderText {#text} at (0,0) size 304x18 + text run at (0,0) width 304: "braille, not screen, screen and (color), not screen" + RenderBlock {P} at (0,68) size 784x18 + RenderText {#text} at (0,0) size 182x18 + text run at (0,0) width 182: "expected to fail (24.07.2005)" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03.html new file mode 100644 index 0000000..bdc88b1 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-03.html @@ -0,0 +1,35 @@ +<html> +<head> +<title>CSS3 media query test: stylesheet media.appendMedium</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<link rel="help" href="http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html" /> +<style type="text/css" media="braille, not screen"> +p { color: green } +</style> + +<script language="javascript"> +function test() { + var re = document.getElementById("result"); + var media = document.styleSheets[0].media; + media.appendMedium("screen and (color)"); + media.appendMedium("not screen"); + var first = true; + for (var i = 0; i < media.length; ++i) { + if (!first) re.innerHTML += ", " + media.item(i); + else re.innerHTML = media.item(i); + first = false; + } + +} +</script> + +</head> +<body onload="test()"> +<!-- FIXME: NOTE! This will fail until dynamic setting of media property causes style recalculation. + This is not the case currently (24.07.2005) +--> +<p> This text should be green and below should read "braille, not screen, screen and (color)". </p> +<p id="result">Failure: test not run</p> +<p> expected to fail (24.07.2005)</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04-expected.checksum new file mode 100644 index 0000000..169d8b2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04-expected.checksum @@ -0,0 +1 @@ +0cf7a9c4a6243d772ea0d5d074bdb442
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04-expected.txt new file mode 100644 index 0000000..d96e002 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 445x18 + text run at (0,0) width 445: "This text should be green and below should read \"media list is empty\"." + RenderBlock {P} at (0,34) size 784x18 + RenderText {#text} at (0,0) size 117x18 + text run at (0,0) width 117: "media list is empty" + RenderBlock {P} at (0,68) size 784x18 + RenderText {#text} at (0,0) size 177x18 + text run at (0,0) width 177: "Expected to fail (24.7.2005)" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04.html b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04.html new file mode 100644 index 0000000..4464f20 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-js-stylesheet-media-04.html @@ -0,0 +1,37 @@ +<html> +<head> +<title>CSS3 media query test: stylesheet media deleteMedium </title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<link rel="help" href="http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html" /> +<style type="text/css" media="braille, not screen"> +p { color: green } +</style> + +<script language="javascript"> +function test() { + var re = document.getElementById("result"); + var media = document.styleSheets[0].media; + media.appendMedium("screen and (color)"); + while (media.length) { + media.deleteMedium(media.item(0)); + } + re.innerHTML = "media list is empty" + var first = true; + for (var i = 0; i < media.length; ++i) { + if (!first) re.innerHTML += ", " + media.item(i); + else re.innerHTML = media.item(i); + first = false; + } +} +</script> + +</head> +<body onload="test()"> +<!-- FIXME: NOTE! This will fail until dynamic setting of media property causes style recalculation. + This is not the case currently (24.07.2005) +--> +<p> This text should be green and below should read "media list is empty". </p> +<p id="result">Failure: test not run</p> +<p> Expected to fail (24.7.2005) </p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint-expected.checksum new file mode 100644 index 0000000..49da6cb --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint-expected.checksum @@ -0,0 +1 @@ +4c146be940e196c365414a6205da5a8d
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint-expected.txt new file mode 100644 index 0000000..817c25f --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 381x18 + text run at (0,0) width 381: "This text should be green if viewport width is at least 600px." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint.html b/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint.html new file mode 100644 index 0000000..25d536d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-min-constraint.html @@ -0,0 +1,17 @@ +<html> +<head> +<title>CSS3 media query test: Media query with min- constraint (screen and (min-width: 600px)). Using style attribute, @import css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<link rel="help" href="http://www.w3.org/TR/CSS21/cascade.html#at-import" /> + +<style type="text/css"> +p { color: red } +</style> +<style type="text/css"> +@import url(import-p-green.css) screen and (min-width: 600px); +</style> +</head> +<body> +<p> This text should be green if viewport width is at least 600px.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02-expected.checksum new file mode 100644 index 0000000..04a3866 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02-expected.checksum @@ -0,0 +1 @@ +a10b78e692cedb6b2ed9fbd56b383c5e
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02-expected.txt new file mode 100644 index 0000000..d1ec510 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 360x18 + text run at (0,0) width 360: "This text should be green if viewport is wider than 30em." + RenderBlock {DIV} at (0,34) size 480x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 123x18 + text run at (0,0) width 123: "div of length 30 em" + RenderBlock {DIV} at (0,52) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 124x18 + text run at (0,0) width 124: "div of length 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02.html new file mode 100644 index 0000000..7006316 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-02.html @@ -0,0 +1,18 @@ +<html> +<head> +<title>CSS3 media query test: relative constraints test using screen and (min-width: 30em). Using style element, media attribute </title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<style type="text/css" media="screen and (min-width: 30em)"> +p { + color: green; +} +</style> +</head> +<body> + +<p> This text should be green if viewport is wider than 30em. </p> + +<div style="width: 30em; background-color: lightblue;"> div of length 30 em </div> +<div style="width: 800px; background-color: lightblue;"> div of length 800px </div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03-expected.checksum new file mode 100644 index 0000000..04a3866 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03-expected.checksum @@ -0,0 +1 @@ +a10b78e692cedb6b2ed9fbd56b383c5e
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03-expected.txt new file mode 100644 index 0000000..d1ec510 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 360x18 + text run at (0,0) width 360: "This text should be green if viewport is wider than 30em." + RenderBlock {DIV} at (0,34) size 480x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 123x18 + text run at (0,0) width 123: "div of length 30 em" + RenderBlock {DIV} at (0,52) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 124x18 + text run at (0,0) width 124: "div of length 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03.html new file mode 100644 index 0000000..70a2473 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-03.html @@ -0,0 +1,14 @@ +<html> +<head> +<title>CSS3 media query test: relative constraints test using screen and (min-width: 30em). Using link element, media attribute </title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<link rel="stylesheet" type="text/css" media="screen and (min-width: 30em)" href="import-p-green.css" /> +</head> +<body> + +<p> This text should be green if viewport is wider than 30em. </p> + +<div style="width: 30em; background-color: lightblue;"> div of length 30 em </div> +<div style="width: 800px; background-color: lightblue;"> div of length 800px </div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04-expected.checksum new file mode 100644 index 0000000..04a3866 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04-expected.checksum @@ -0,0 +1 @@ +a10b78e692cedb6b2ed9fbd56b383c5e
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04-expected.txt new file mode 100644 index 0000000..d1ec510 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 360x18 + text run at (0,0) width 360: "This text should be green if viewport is wider than 30em." + RenderBlock {DIV} at (0,34) size 480x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 123x18 + text run at (0,0) width 123: "div of length 30 em" + RenderBlock {DIV} at (0,52) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 124x18 + text run at (0,0) width 124: "div of length 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04.html b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04.html new file mode 100644 index 0000000..ce889cb --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-04.html @@ -0,0 +1,17 @@ +<html> +<head> +<title>CSS3 media query test: relative constraints test using screen and (min-width: 30em). Using style element, css @import rule </title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> + +<style type="text/css"> +@import url(import-p-green.css) screen and (min-width: 30em); +</style> +</head> +<body> + +<p> This text should be green if viewport is wider than 30em. </p> + +<div style="width: 30em; background-color: lightblue;"> div of length 30 em </div> +<div style="width: 800px; background-color: lightblue;"> div of length 800px </div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05-expected.checksum new file mode 100644 index 0000000..04a3866 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05-expected.checksum @@ -0,0 +1 @@ +a10b78e692cedb6b2ed9fbd56b383c5e
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05-expected.txt new file mode 100644 index 0000000..d1ec510 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 360x18 + text run at (0,0) width 360: "This text should be green if viewport is wider than 30em." + RenderBlock {DIV} at (0,34) size 480x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 123x18 + text run at (0,0) width 123: "div of length 30 em" + RenderBlock {DIV} at (0,52) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 124x18 + text run at (0,0) width 124: "div of length 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05.html b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05.html new file mode 100644 index 0000000..c04bd3c --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-05.html @@ -0,0 +1,24 @@ +<html> +<head> +<title>CSS3 media query test: relative constraints test using screen and (min-width: 30em). Using style element, css @media rule </title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> + +<style type="text/css"> +p { + color: red; +} +@media screen and (min-width: 30em) { + p { + color: green; + } +} +</style> +</head> +<body> + +<p> This text should be green if viewport is wider than 30em. </p> + +<div style="width: 30em; background-color: lightblue;"> div of length 30 em </div> +<div style="width: 800px; background-color: lightblue;"> div of length 800px </div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06-expected.checksum new file mode 100644 index 0000000..eba6089 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06-expected.checksum @@ -0,0 +1 @@ +d1770e1876ba95b0f2b7c39264bf54e8
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06-expected.txt new file mode 100644 index 0000000..0255af2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 968x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 968x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 728x18 + text run at (0,0) width 728: "This text should be green if viewport is narrower than 60em. This tests that (min-width: 60em) can evaluate to false." + RenderBlock {DIV} at (0,34) size 960x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 123x18 + text run at (0,0) width 123: "div of length 60 em" + RenderBlock {DIV} at (0,52) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 124x18 + text run at (0,0) width 124: "div of length 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06.html b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06.html new file mode 100644 index 0000000..da71b0d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-06.html @@ -0,0 +1,17 @@ +<html> +<head> +<title>CSS3 media query test: media query testing constraints with relative values evaluating false (screen and (min-width: 60em)). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<style type="text/css"> +p { color: green } +@media screen and (min-width: 60em) { +p { color: red } +} +</style> +</head> +<body> +<p> This text should be green if viewport is narrower than 60em. This tests that (min-width: 60em) can evaluate to false.</p> +<div style="width: 60em; background-color: lightblue;"> div of length 60 em </div> +<div style="width: 800px; background-color: lightblue;"> div of length 800px </div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07-expected.checksum new file mode 100644 index 0000000..bc19618 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07-expected.checksum @@ -0,0 +1 @@ +5d142d526aa81c82a34e953c5d235a4b
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07-expected.txt new file mode 100644 index 0000000..cccd799 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 710x18 + text run at (0,0) width 710: "This text should be green if viewport is wider than 30em. This tests that (max-width: 30em) can evaluate to false." + RenderBlock {DIV} at (0,34) size 480x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 123x18 + text run at (0,0) width 123: "div of length 30 em" + RenderBlock {DIV} at (0,52) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 124x18 + text run at (0,0) width 124: "div of length 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07.html b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07.html new file mode 100644 index 0000000..402825d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-07.html @@ -0,0 +1,19 @@ +<html> +<head> +<title>CSS3 media query test: media query testing constraints with relative values evaluating false (screen and (max-width: 30em)). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<style type="text/css"> +p { color: green } +@media screen and (max-width: 30em) { +p { color: red } +} +</style> +</head> +<body> + +<p> This text should be green if viewport is wider than 30em. This tests that (max-width: 30em) can evaluate to false. </p> + +<div style="width: 30em; background-color: lightblue;"> div of length 30 em </div> +<div style="width: 800px; background-color: lightblue;"> div of length 800px </div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08-expected.checksum new file mode 100644 index 0000000..933547c --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08-expected.checksum @@ -0,0 +1 @@ +9b06fcede219853f1c30a7f2e80c37ff
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08-expected.txt new file mode 100644 index 0000000..7b0793d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 785x642 + RenderView at (0,0) size 785x600 +layer at (0,0) size 785x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x576 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 319x18 + text run at (0,0) width 319: "This text should be green if height is at least 30ex ." + RenderBlock (floating) {DIV} at (0,34) size 115x229 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 115x18 + text run at (0,0) width 115: "div of height 30ex" + RenderBlock (floating) {DIV} at (115,34) size 124x600 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 124x18 + text run at (0,0) width 124: "div of height 600px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08.html b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08.html new file mode 100644 index 0000000..797f3c7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-08.html @@ -0,0 +1,20 @@ +<html> +<head> +<title>CSS3 media query test: media query testing constraints with relative values (screen and (min-height: 30ex)). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> + +<style type="text/css"> +p { color: red } +@media screen and (min-height: 30ex) { +p { color: green } +} +</style> +</head> +<body> + +<p> This text should be green if height is at least 30ex .</p> + +<div style="display:inline; float:left; height: 30ex; background-color: lightblue;"> div of height 30ex </div> +<div style="display:inline; float:left; height: 600px; background-color: lightblue;"> div of height 600px </div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09-expected.checksum new file mode 100644 index 0000000..a39b5c6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09-expected.checksum @@ -0,0 +1 @@ +c8038806895a2d04f217d5d4f83be565
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09-expected.txt new file mode 100644 index 0000000..862018a --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09-expected.txt @@ -0,0 +1,14 @@ +layer at (0,0) size 968x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 968x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 381x18 + text run at (0,0) width 381: "This text should be green if viewport is narrower than 60em." + RenderBlock {DIV} at (0,34) size 960x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 123x18 + text run at (0,0) width 123: "div of length 60 em" + RenderBlock {DIV} at (0,52) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 124x18 + text run at (0,0) width 124: "div of length 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09.html b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09.html new file mode 100644 index 0000000..725cd71 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-relative-constraints-09.html @@ -0,0 +1,17 @@ +<html> +<head> +<title>CSS3 media query test: media query testing constraints with relative values (screen and (max-width: 60em)). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<style type="text/css"> +p { color: red } +@media screen and (max-width: 60em) { +p { color: green } +} +</style> +</head> +<body> +<p> This text should be green if viewport is narrower than 60em. </p> +<div style="width: 60em; background-color: lightblue;"> div of length 60 em </div> +<div style="width: 800px; background-color: lightblue;"> div of length 800px </div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01.html new file mode 100644 index 0000000..18560e3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-01.html @@ -0,0 +1,12 @@ +<html> +<head> +<title>CSS3 media query test: simple media query (not braille, screen). Using style element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<style type="text/css" media="not braille, screen"> +p { color: green } +</style> +</head> +<body> +<p> This text should be green. </p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02.html new file mode 100644 index 0000000..137b03f --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-02.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>CSS3 media query test: simple media quer (not braille, screen). Using link element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<link rel="stylesheet" type="text/css" media="not braille, screen" href="import-p-green.css" /> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03.html new file mode 100644 index 0000000..a641a52 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-03.html @@ -0,0 +1,12 @@ +<html> +<head> +<title>CSS3 media query test: simple media query (not braille, screen). Using style element, css @import rule</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<style type="text/css"> +@import url(import-p-green.css) not braille, screen; +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04.html new file mode 100644 index 0000000..fc075b2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-04.html @@ -0,0 +1,14 @@ +<html> +<head> +<title> CSS3 media query test: simple media query (not braille, screen). Using style element, css @media rule</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<style type="text/css"> +@media not braille, screen { +p { color: green } +} +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05.html new file mode 100644 index 0000000..60bb04c64 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-neg-query-05.html @@ -0,0 +1,16 @@ +<html> +<head> +<title>CSS3 media query test: media query testing not and feature braille (not braille). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +@media not braille { +p { color: green } +} +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> + diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01.html new file mode 100644 index 0000000..7571d63 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-01.html @@ -0,0 +1,14 @@ +<html> +<head> +<title>CSS3 media query test: simple media query. Using style element, media attribute</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> + +<style type="text/css" media="only all"> +p { color: green } +</style> + +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02.html new file mode 100644 index 0000000..44bdc70 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-02.html @@ -0,0 +1,11 @@ +<html> +<head> +<title>CSS3 media query test: simple media query. Using link element, media attribute</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> + +<link type="text/css" media="only all" href="import-p-green.css" /> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03.html new file mode 100644 index 0000000..13024d6 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-03.html @@ -0,0 +1,12 @@ +<html> +<head> +<title>CSS3 media query test: simple media query. Using style element, css @import rule</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<style type="text/css"> +@import url(import-p-green.css) only all; +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04.html new file mode 100644 index 0000000..6506d1b --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-04.html @@ -0,0 +1,14 @@ +<html> +<head> +<title>CSS3 media query test: simple media query. Using style element, css @media rule</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#syntax" /> +<style type="text/css"> +@media only all { +p { color: green } +} +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05-expected.checksum new file mode 100644 index 0000000..b861cda --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05-expected.checksum @@ -0,0 +1 @@ +915a9e795ad41ad5998dba4f681f98dc
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05-expected.txt new file mode 100644 index 0000000..7442bd3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 163x18 + text run at (0,0) width 163: "This text should be green." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05.html b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05.html new file mode 100644 index 0000000..6d63879 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-simple-query-05.html @@ -0,0 +1,18 @@ +<html> +<head> +<title> CSS3 media query test: matches color or monochrome screens </title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/" /> +<style type="text/css"> +p { color: red } +@media all and (color) { +p { color: green } +} +@media all and (monochrome) { +p { color: green;} +} +</style> +</head> +<body> +<p> This text should be green.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-valueless-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-valueless-expected.checksum new file mode 100644 index 0000000..9dfbfbd --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-valueless-expected.checksum @@ -0,0 +1 @@ +13a8a15857868d43e1af1086030f97cf
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-valueless-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-valueless-expected.txt new file mode 100644 index 0000000..a1d8e98 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-valueless-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 [color=#008000] + RenderText {#text} at (0,0) size 308x18 + text run at (0,0) width 308: "This text should be green if color display is used." diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-valueless.html b/third_party/WebKit/LayoutTests/fast/media/mq-valueless.html new file mode 100644 index 0000000..68a2ac9 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-valueless.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: media query without values (screen and (color)). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#color" /> + +<style type="text/css"> +@media screen and (color) { +p { color: green } +} +</style> +</head> +<body> +<p> This text should be green if color display is used.</p> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01-expected.checksum new file mode 100644 index 0000000..9b12f86 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01-expected.checksum @@ -0,0 +1 @@ +2c542eb1435d62f934f9256b8a0694d8
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01-expected.txt new file mode 100644 index 0000000..1f9e5cc --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 378x18 + text run at (0,0) width 378: "This text should be green if viewport is at most 800px wide." + RenderBlock {DIV} at (0,34) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 121x18 + text run at (0,0) width 121: "div of width 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01.html new file mode 100644 index 0000000..5a3aa00 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-01.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>CSS3 media query test: Absolute width query (screen and (max-width: 800px)). Using style element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<style type="text/css" media="screen and (max-width: 800px)"> +p { color: green } +</style> +</head> +<body> +<p> This text should be green if viewport is at most 800px wide.</p> +<div style="width: 800px; background-color:lightblue;">div of width 800px</div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02-expected.checksum new file mode 100644 index 0000000..9b12f86 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02-expected.checksum @@ -0,0 +1 @@ +2c542eb1435d62f934f9256b8a0694d8
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02-expected.txt new file mode 100644 index 0000000..1f9e5cc --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 378x18 + text run at (0,0) width 378: "This text should be green if viewport is at most 800px wide." + RenderBlock {DIV} at (0,34) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 121x18 + text run at (0,0) width 121: "div of width 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02.html new file mode 100644 index 0000000..e1c5bc0 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-02.html @@ -0,0 +1,11 @@ +<html> +<head> +<title>CSS3 media query test: Absolute width query (screen and (max-width: 800px)). Using link element, media attribute.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<link type="text/css" media="screen and (max-width: 800px)" href="import-p-green.css" /> +</head> +<body> +<p> This text should be green if viewport is at most 800px wide.</p> +<div style="width: 800px; background-color:lightblue;">div of width 800px</div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03-expected.checksum new file mode 100644 index 0000000..9b12f86 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03-expected.checksum @@ -0,0 +1 @@ +2c542eb1435d62f934f9256b8a0694d8
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03-expected.txt new file mode 100644 index 0000000..1f9e5cc --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 378x18 + text run at (0,0) width 378: "This text should be green if viewport is at most 800px wide." + RenderBlock {DIV} at (0,34) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 121x18 + text run at (0,0) width 121: "div of width 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03.html b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03.html new file mode 100644 index 0000000..196f2f4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-03.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>CSS3 media query test: Absolute width query (screen and (max-width: 800px)). Using style element, @import css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<style type="text/css"> +@import url(import-p-green.css) screen and (max-width: 800px); +</style> +</head> +<body> +<p> This text should be green if viewport is at most 800px wide.</p> +<div style="width: 800px; background-color:lightblue;">div of width 800px</div> +</body> +</html> diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04-expected.checksum b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04-expected.checksum new file mode 100644 index 0000000..9b12f86 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04-expected.checksum @@ -0,0 +1 @@ +2c542eb1435d62f934f9256b8a0694d8
\ No newline at end of file diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04-expected.txt b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04-expected.txt new file mode 100644 index 0000000..1f9e5cc --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 808x600 + RenderView at (0,0) size 785x585 +layer at (0,0) size 808x600 + RenderBlock {HTML} at (0,0) size 785x600 + RenderBody {BODY} at (8,8) size 769x584 + RenderBlock {P} at (0,0) size 769x18 [color=#008000] + RenderText {#text} at (0,0) size 378x18 + text run at (0,0) width 378: "This text should be green if viewport is at most 800px wide." + RenderBlock {DIV} at (0,34) size 800x18 [bgcolor=#ADD8E6] + RenderText {#text} at (0,0) size 121x18 + text run at (0,0) width 121: "div of width 800px" diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04.html b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04.html new file mode 100644 index 0000000..13b0db4d --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/media/mq-width-absolute-04.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>CSS3 media query test: Absolute width query (screen and (max-width: 800px)). Using style element, @media css rule.</title> +<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#width" /> +<style type="text/css"> +@media screen and (max-width: 800px) { +p { color: green } +} +</style> +</head> +<body> +<p> This text should be green if viewport is at most 800px wide.</p> +<div style="width: 800px; background-color:lightblue;">div of width 800px</div> +</body> +</html> diff --git a/third_party/WebKit/WebCore/ChangeLog b/third_party/WebKit/WebCore/ChangeLog index 0e1544a..eff1527 100644 --- a/third_party/WebKit/WebCore/ChangeLog +++ b/third_party/WebKit/WebCore/ChangeLog @@ -1,3 +1,136 @@ +2006-06-09 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com> + + Reviewed by Hyatt. Tweaked by Maciej. Tweaks reviewed by Beth. + Landed by Beth. + + CSS3 Media Queries implementation. + <http://bugzilla.opendarwin.org/show_bug.cgi?id=4127> + + * WebCore.xcodeproj/project.pbxproj: + * bindings/js/kjs_css.cpp: + (KJS::DOMMediaList::put): + (KJS::KJS::DOMMediaListProtoFunc::callAsFunction): + * bindings/objc/DOMCSS.mm: + (-[DOMMediaList setMediaText:]): + (-[DOMMediaList deleteMedium:]): + (-[DOMMediaList appendMedium:]): + * css/CSSGrammar.y: + * css/MediaFeatureNames.cpp: Added. + (WebCore::MediaFeatureNames::init): + * css/MediaFeatureNames.h: Added. + * css/MediaList.cpp: + (WebCore::MediaList::MediaList): + (WebCore::MediaList::~MediaList): + (WebCore::parseMediaDescriptor): + (WebCore::MediaList::deleteMedium): + (WebCore::MediaList::mediaText): + (WebCore::MediaList::setMediaText): + (WebCore::MediaList::item): + (WebCore::MediaList::appendMedium): + (WebCore::MediaList::appendMediaQuery): + * css/MediaList.h: + (WebCore::MediaList::MediaList): + (WebCore::MediaList::length): + (WebCore::MediaList::mediaQueries): + * css/MediaQuery.cpp: Added. + (WebCore::MediaQuery::MediaQuery): + (WebCore::MediaQuery::~MediaQuery): + (WebCore::MediaQuery::operator==): + (WebCore::MediaQuery::cssText): + * css/MediaQuery.h: Added. + (WebCore::MediaQuery::): + (WebCore::MediaQuery::restrictor): + (WebCore::MediaQuery::expressions): + (WebCore::MediaQuery::mediaType): + (WebCore::MediaQuery::append): + * css/MediaQueryEvaluator.cpp: Added. + (WebCore::): + (WebCore::MediaQueryEvaluator): + (WebCore::MediaQueryEvaluator::~MediaQueryEvaluator): + (WebCore::MediaQueryEvaluator::mediaTypeMatch): + (WebCore::applyRestrictor): + (WebCore::MediaQueryEvaluator::eval): + (WebCore::parseAspectRatio): + (WebCore::cmpvalue): + (WebCore::numberValue): + (WebCore::colorMediaFeatureEval): + (WebCore::monochromeMediaFeatureEval): + (WebCore::device_aspect_ratioMediaFeatureEval): + (WebCore::gridMediaFeatureEval): + (WebCore::device_heightMediaFeatureEval): + (WebCore::device_widthMediaFeatureEval): + (WebCore::heightMediaFeatureEval): + (WebCore::widthMediaFeatureEval): + (WebCore::min_colorMediaFeatureEval): + (WebCore::max_colorMediaFeatureEval): + (WebCore::min_monochromeMediaFeatureEval): + (WebCore::max_monochromeMediaFeatureEval): + (WebCore::min_device_aspect_ratioMediaFeatureEval): + (WebCore::max_device_aspect_ratioMediaFeatureEval): + (WebCore::min_heightMediaFeatureEval): + (WebCore::max_heightMediaFeatureEval): + (WebCore::min_widthMediaFeatureEval): + (WebCore::max_widthMediaFeatureEval): + (WebCore::min_device_heightMediaFeatureEval): + (WebCore::max_device_heightMediaFeatureEval): + (WebCore::min_device_widthMediaFeatureEval): + (WebCore::max_device_widthMediaFeatureEval): + (WebCore::createFunctionMap): + * css/MediaQueryEvaluator.h: Added. + * css/MediaQueryExp.cpp: Added. + (WebCore::MediaQueryExp::MediaQueryExp): + (WebCore::MediaQueryExp::~MediaQueryExp): + * css/MediaQueryExp.h: Added. + (WebCore::MediaQueryExp::mediaFeature): + (WebCore::MediaQueryExp::value): + (WebCore::MediaQueryExp::operator==): + * css/StyleSheet.cpp: + (WebCore::StyleSheet::setMedia): + * css/cssparser.cpp: + (WebCore::CSSParser::CSSParser): + (WebCore::CSSParser::~CSSParser): + (WebCore::CSSParser::setupParser): + (WebCore::CSSParser::parseMediaQuery): + (WebCore::CSSParser::createFloatingMediaQueryExp): + (WebCore::CSSParser::sinkFloatingMediaQueryExp): + (WebCore::CSSParser::createFloatingMediaQueryExpList): + (WebCore::CSSParser::sinkFloatingMediaQueryExpList): + (WebCore::CSSParser::createFloatingMediaQuery): + (WebCore::CSSParser::sinkFloatingMediaQuery): + * css/cssparser.h: + * css/cssstyleselector.cpp: + (WebCore::CSSStyleSelector::CSSStyleSelector): + (WebCore::CSSStyleSelector::init): + (WebCore::CSSStyleSelector::~CSSStyleSelector): + (WebCore::CSSStyleSelector::loadDefaultStyle): + (WebCore::CSSStyleSelector::matchUARules): + (WebCore::CSSStyleSelector::styleForElement): + (WebCore::CSSStyleSelector::pseudoStyleForElement): + (WebCore::CSSStyleSelector::updateFont): + (WebCore::CSSStyleSelector::cacheBorderAndBackground): + (WebCore::CSSStyleSelector::styleRulesForElement): + (WebCore::CSSRuleSet::addRulesFromSheet): + * css/cssstyleselector.h: + * css/maketokenizer: + * css/tokenizer.flex: + * dom/DOMImplementation.cpp: + (WebCore::DOMImplementation::createCSSStyleSheet): + * html/HTMLLinkElement.cpp: + (WebCore::HTMLLinkElement::process): + (WebCore::HTMLLinkElement::setStyleSheet): + * html/HTMLStyleElement.cpp: + (WebCore::HTMLStyleElement::childrenChanged): + * ksvg2/svg/SVGDOMImplementation.cpp: + (SVGDOMImplementation::createCSSStyleSheet): + * ksvg2/svg/SVGStyleElement.cpp: + (WebCore::SVGStyleElement::childrenChanged): + * page/Frame.cpp: + (WebCore::Frame::Frame): + * platform/Screen.h: + * platform/mac/ScreenMac.mm: + (WebCore::screenDepthPerComponent): + (WebCore::screenIsMonochrome): + 2006-06-08 Justin Garcia <justin.garcia@apple.com> Reviewed by levi diff --git a/third_party/WebKit/WebCore/WebCore.xcodeproj/project.pbxproj b/third_party/WebKit/WebCore/WebCore.xcodeproj/project.pbxproj index da119cd..3b3179a 100644 --- a/third_party/WebKit/WebCore/WebCore.xcodeproj/project.pbxproj +++ b/third_party/WebKit/WebCore/WebCore.xcodeproj/project.pbxproj @@ -150,6 +150,14 @@ 1AE2AEC80A1D297B00B42B25 /* JSHTMLQuoteElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AEC40A1D297B00B42B25 /* JSHTMLQuoteElement.h */; }; 1AE2AEE60A1D2A7500B42B25 /* JSHTMLBlockquoteElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE2AEE40A1D2A7500B42B25 /* JSHTMLBlockquoteElement.cpp */; }; 1AE2AEE70A1D2A7500B42B25 /* JSHTMLBlockquoteElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE2AEE50A1D2A7500B42B25 /* JSHTMLBlockquoteElement.h */; }; + 4E1959210A39DABA00220FE5 /* MediaFeatureNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E19591F0A39DABA00220FE5 /* MediaFeatureNames.cpp */; }; + 4E1959220A39DABA00220FE5 /* MediaFeatureNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */; }; + 4E1959290A39DACC00220FE5 /* MediaQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E1959230A39DACC00220FE5 /* MediaQuery.cpp */; }; + 4E19592A0A39DACC00220FE5 /* MediaQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959240A39DACC00220FE5 /* MediaQuery.h */; }; + 4E19592B0A39DACC00220FE5 /* MediaQueryEvaluator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E1959250A39DACC00220FE5 /* MediaQueryEvaluator.cpp */; }; + 4E19592C0A39DACC00220FE5 /* MediaQueryEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959260A39DACC00220FE5 /* MediaQueryEvaluator.h */; }; + 4E19592D0A39DACC00220FE5 /* MediaQueryExp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E1959270A39DACC00220FE5 /* MediaQueryExp.cpp */; }; + 4E19592E0A39DACC00220FE5 /* MediaQueryExp.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959280A39DACC00220FE5 /* MediaQueryExp.h */; }; 5126E6BB0A2E3B12005C29FA /* IconDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5126E6B90A2E3B12005C29FA /* IconDatabase.cpp */; }; 5126E6BC0A2E3B12005C29FA /* IconDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 5126E6BA0A2E3B12005C29FA /* IconDatabase.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5126E6BF0A2E3B29005C29FA /* WebCoreIconDatabaseBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 5126E6BD0A2E3B29005C29FA /* WebCoreIconDatabaseBridge.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -1735,6 +1743,14 @@ 2D90660B0665D937006B6F1A /* ClipboardMac.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = ClipboardMac.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 2D90660C0665D937006B6F1A /* ClipboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ClipboardMac.mm; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 4758C44308C5F217009BAF05 /* KCanvasPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KCanvasPath.cpp; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; + 4E19591F0A39DABA00220FE5 /* MediaFeatureNames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaFeatureNames.cpp; sourceTree = "<group>"; }; + 4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaFeatureNames.h; sourceTree = "<group>"; }; + 4E1959230A39DACC00220FE5 /* MediaQuery.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQuery.cpp; sourceTree = "<group>"; }; + 4E1959240A39DACC00220FE5 /* MediaQuery.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaQuery.h; sourceTree = "<group>"; }; + 4E1959250A39DACC00220FE5 /* MediaQueryEvaluator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQueryEvaluator.cpp; sourceTree = "<group>"; }; + 4E1959260A39DACC00220FE5 /* MediaQueryEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaQueryEvaluator.h; sourceTree = "<group>"; }; + 4E1959270A39DACC00220FE5 /* MediaQueryExp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQueryExp.cpp; sourceTree = "<group>"; }; + 4E1959280A39DACC00220FE5 /* MediaQueryExp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaQueryExp.h; sourceTree = "<group>"; }; 5126E6B90A2E3B12005C29FA /* IconDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = IconDatabase.cpp; sourceTree = "<group>"; }; 5126E6BA0A2E3B12005C29FA /* IconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IconDatabase.h; sourceTree = "<group>"; }; 5126E6BD0A2E3B29005C29FA /* WebCoreIconDatabaseBridge.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebCoreIconDatabaseBridge.h; sourceTree = "<group>"; }; @@ -5057,6 +5073,14 @@ F523D18402DE42E8018635CA /* css */ = { isa = PBXGroup; children = ( + 4E1959230A39DACC00220FE5 /* MediaQuery.cpp */, + 4E1959240A39DACC00220FE5 /* MediaQuery.h */, + 4E1959250A39DACC00220FE5 /* MediaQueryEvaluator.cpp */, + 4E1959260A39DACC00220FE5 /* MediaQueryEvaluator.h */, + 4E1959270A39DACC00220FE5 /* MediaQueryExp.cpp */, + 4E1959280A39DACC00220FE5 /* MediaQueryExp.h */, + 4E19591F0A39DABA00220FE5 /* MediaFeatureNames.cpp */, + 4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */, A80E6CDA0A1989CA007FB8C5 /* Counter.h */, 930705C709E0C95F00B17FE4 /* Counter.idl */, A80E6CBB0A1989CA007FB8C5 /* CSSBorderImageValue.cpp */, @@ -6207,6 +6231,10 @@ 5126E6BC0A2E3B12005C29FA /* IconDatabase.h in Headers */, 5126E6BF0A2E3B29005C29FA /* WebCoreIconDatabaseBridge.h in Headers */, D07DEABA0A36554A00CA30F8 /* InsertListCommand.h in Headers */, + 4E1959220A39DABA00220FE5 /* MediaFeatureNames.h in Headers */, + 4E19592A0A39DACC00220FE5 /* MediaQuery.h in Headers */, + 4E19592C0A39DACC00220FE5 /* MediaQueryEvaluator.h in Headers */, + 4E19592E0A39DACC00220FE5 /* MediaQueryExp.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7044,6 +7072,10 @@ 5126E6BB0A2E3B12005C29FA /* IconDatabase.cpp in Sources */, 5126E6C00A2E3B29005C29FA /* WebCoreIconDatabaseBridge.mm in Sources */, D07DEAB90A36554A00CA30F8 /* InsertListCommand.cpp in Sources */, + 4E1959210A39DABA00220FE5 /* MediaFeatureNames.cpp in Sources */, + 4E1959290A39DACC00220FE5 /* MediaQuery.cpp in Sources */, + 4E19592B0A39DACC00220FE5 /* MediaQueryEvaluator.cpp in Sources */, + 4E19592D0A39DACC00220FE5 /* MediaQueryExp.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/third_party/WebKit/WebCore/bindings/js/kjs_css.cpp b/third_party/WebKit/WebCore/bindings/js/kjs_css.cpp index 28dd557..95929c3 100644 --- a/third_party/WebKit/WebCore/bindings/js/kjs_css.cpp +++ b/third_party/WebKit/WebCore/bindings/js/kjs_css.cpp @@ -530,9 +530,10 @@ bool DOMMediaList::getOwnPropertySlot(ExecState* exec, const Identifier& propert void DOMMediaList::put(ExecState* exec, const Identifier &propertyName, JSValue* value, int attr) { + DOMExceptionTranslator exception(exec); MediaList &mediaList = *m_impl; if (propertyName == "mediaText") - mediaList.setMediaText(value->toString(exec)); + mediaList.setMediaText(value->toString(exec), exception); else DOMObject::put(exec, propertyName, value, attr); } @@ -546,15 +547,16 @@ JSValue* KJS::DOMMediaListProtoFunc::callAsFunction(ExecState* exec, JSObject* t { if (!thisObj->inherits(&KJS::DOMMediaList::info)) return throwError(exec, TypeError); - MediaList &mediaList = *static_cast<DOMMediaList*>(thisObj)->impl(); + DOMExceptionTranslator exception(exec); + MediaList& mediaList = *static_cast<DOMMediaList *>(thisObj)->impl(); switch (id) { case DOMMediaList::Item: return jsStringOrNull(mediaList.item(args[0]->toInt32(exec))); case DOMMediaList::DeleteMedium: - mediaList.deleteMedium(args[0]->toString(exec)); + mediaList.deleteMedium(args[0]->toString(exec), exception); return jsUndefined(); case DOMMediaList::AppendMedium: - mediaList.appendMedium(args[0]->toString(exec)); + mediaList.appendMedium(args[0]->toString(exec), exception); return jsUndefined(); default: return jsUndefined(); diff --git a/third_party/WebKit/WebCore/bindings/objc/DOMCSS.mm b/third_party/WebKit/WebCore/bindings/objc/DOMCSS.mm index 0c5dd6b..bd46156 100644 --- a/third_party/WebKit/WebCore/bindings/objc/DOMCSS.mm +++ b/third_party/WebKit/WebCore/bindings/objc/DOMCSS.mm @@ -333,7 +333,9 @@ typedef DOMWindow AbstractView; - (void)setMediaText:(NSString *)mediaText { - [self _mediaList]->setMediaText(mediaText); + ExceptionCode ec = 0; + [self _mediaList]->setMediaText(mediaText, ec); + raiseOnDOMError(ec); } - (unsigned)length @@ -348,12 +350,16 @@ typedef DOMWindow AbstractView; - (void)deleteMedium:(NSString *)oldMedium { - [self _mediaList]->deleteMedium(oldMedium); + ExceptionCode ec = 0; + [self _mediaList]->deleteMedium(oldMedium, ec); + raiseOnDOMError(ec); } - (void)appendMedium:(NSString *)newMedium { - [self _mediaList]->appendMedium(newMedium); + ExceptionCode ec = 0; + [self _mediaList]->appendMedium(newMedium, ec); + raiseOnDOMError(ec); } @end diff --git a/third_party/WebKit/WebCore/css/CSSGrammar.y b/third_party/WebKit/WebCore/css/CSSGrammar.y index 5e2462b..a93d375 100644 --- a/third_party/WebKit/WebCore/css/CSSGrammar.y +++ b/third_party/WebKit/WebCore/css/CSSGrammar.y @@ -38,6 +38,8 @@ #include <assert.h> #include <stdlib.h> #include <string.h> +#include "MediaQuery.h" +#include "MediaQueryExp.h" #if SVG_SUPPORT #include "ksvgcssproperties.h" @@ -139,6 +141,11 @@ static inline int getValueID(const char* tagStr, int len) char tok; Value value; ValueList* valueList; + + MediaQuery* mediaQuery; + MediaQueryExp* mediaQueryExp; + Vector<MediaQueryExp*>* mediaQueryExpList; + MediaQuery::Restrictor mediaQueryRestrictor; } %{ @@ -181,8 +188,12 @@ static int cssyylex(YYSTYPE *yylval) { return CSSParser::current()->lex(yylval); %token WEBKIT_RULE_SYM %token WEBKIT_DECLS_SYM %token WEBKIT_VALUE_SYM +%token WEBKIT_MEDIAQUERY_SYM %token IMPORTANT_SYM +%token MEDIA_ONLY +%token MEDIA_NOT +%token MEDIA_AND %token <val> QEMS %token <val> EMS @@ -231,8 +242,15 @@ static int cssyylex(YYSTYPE *yylval) { return CSSParser::current()->lex(yylval); %type <string> medium %type <string> hexcolor +%type <string> media_feature %type <mediaList> media_list %type <mediaList> maybe_media_list +%type <mediaQuery> media_query +%type <mediaQueryRestrictor> maybe_media_restrictor +%type <valueList> maybe_media_value +%type <mediaQueryExp> media_query_exp +%type <mediaQueryExpList> media_query_exp_list +%type <mediaQueryExpList> maybe_media_query_exp_list %type <ruleList> ruleset_list @@ -272,6 +290,7 @@ stylesheet: | webkit_rule maybe_space | webkit_decls maybe_space | webkit_value maybe_space + | webkit_mediaquery maybe_space ; webkit_rule: @@ -300,6 +319,13 @@ webkit_value: } ; +webkit_mediaquery: + WEBKIT_MEDIAQUERY_SYM WHITESPACE maybe_space media_query '}' { + CSSParser* p = static_cast<CSSParser*>(parser); + p->mediaQuery = p->sinkFloatingMediaQuery($4); + } +; + maybe_space: /* empty */ %prec UNIMPORTANT_TOK | maybe_space WHITESPACE @@ -383,23 +409,84 @@ STRING | URI ; +media_feature: + IDENT maybe_space { + $$ = $1; + } + ; + +maybe_media_value: + /*empty*/ { + $$ = 0; + } + | ':' maybe_space expr maybe_space { + $$ = $3; + } + ; + +media_query_exp: + MEDIA_AND maybe_space '(' maybe_space media_feature maybe_space maybe_media_value ')' maybe_space { + $5.lower(); + $$ = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExp(atomicString($5), $7); + } + ; + +media_query_exp_list: + media_query_exp { + CSSParser* p = static_cast<CSSParser*>(parser); + $$ = p->createFloatingMediaQueryExpList(); + $$->append(p->sinkFloatingMediaQueryExp($1)); + } + | media_query_exp_list media_query_exp { + $$ = $1; + $$->append(static_cast<CSSParser*>(parser)->sinkFloatingMediaQueryExp($2)); + } + ; + +maybe_media_query_exp_list: + /*empty*/ { + $$ = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExpList(); + } + | media_query_exp_list + ; + +maybe_media_restrictor: + /*empty*/ { + $$ = MediaQuery::None; + } + | MEDIA_ONLY { + $$ = MediaQuery::Only; + } + | MEDIA_NOT { + $$ = MediaQuery::Not; + } + ; + +media_query: + maybe_media_restrictor maybe_space medium maybe_media_query_exp_list { + CSSParser* p = static_cast<CSSParser*>(parser); + $3.lower(); + $$ = p->createFloatingMediaQuery($1, domString($3), p->sinkFloatingMediaQueryExpList($4)); + } + ; + maybe_media_list: /* empty */ { $$ = static_cast<CSSParser*>(parser)->createMediaList(); } | media_list -; - + ; media_list: - medium { - $$ = static_cast<CSSParser*>(parser)->createMediaList(); - $$->appendMedium(domString($1).lower()); + media_query { + CSSParser* p = static_cast<CSSParser*>(parser); + $$ = p->createMediaList(); + $$->appendMediaQuery(p->sinkFloatingMediaQuery($1)); } - | media_list ',' maybe_space medium { + | media_list ',' maybe_space media_query { $$ = $1; if ($$) - $$->appendMedium(domString($4).lower()); + $$->appendMediaQuery(static_cast<CSSParser*>(parser)->sinkFloatingMediaQuery($4)); } | media_list error { $$ = 0; diff --git a/third_party/WebKit/WebCore/css/MediaFeatureNames.cpp b/third_party/WebKit/WebCore/css/MediaFeatureNames.cpp new file mode 100644 index 0000000..e015d7d --- /dev/null +++ b/third_party/WebKit/WebCore/css/MediaFeatureNames.cpp @@ -0,0 +1,53 @@ +/* + * This file is part of the DOM implementation for KDE. + * + * Copyright (C) 2005 Apple Computer, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#if AVOID_STATIC_CONSTRUCTORS +#define CSS_MEDIAQUERY_NAMES_HIDE_GLOBALS 1 +#endif + +#include "MediaFeatureNames.h" +#include "StaticConstructors.h" + +namespace WebCore { namespace MediaFeatureNames { + +#define DEFINE_MEDIAFEATURE_GLOBAL(name, str) \ + DEFINE_GLOBAL(AtomicString, name##MediaFeature, str) +CSS_MEDIAQUERY_NAMES_FOR_EACH_MEDIAFEATURE(DEFINE_MEDIAFEATURE_GLOBAL) +#undef DEFINE_MEDIAFEATURE_GLOBAL + +void init() +{ + static bool initialized; + if (!initialized) { + // Use placement new to initialize the globals. + + AtomicString::init(); + #define INITIALIZE_GLOBAL(name, str) new ((void*)&name##MediaFeature) AtomicString(str); + CSS_MEDIAQUERY_NAMES_FOR_EACH_MEDIAFEATURE(INITIALIZE_GLOBAL) + #undef INITIALIZE_GLOBAL + initialized = true; + } +} + +} } diff --git a/third_party/WebKit/WebCore/css/MediaFeatureNames.h b/third_party/WebKit/WebCore/css/MediaFeatureNames.h new file mode 100644 index 0000000..7530165 --- /dev/null +++ b/third_party/WebKit/WebCore/css/MediaFeatureNames.h @@ -0,0 +1,65 @@ +/* + * This file is part of the CSS implementation for KDE. + * + * Copyright (C) 2005 Apple Computer, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + */ +#ifndef MEDIAFEATURENAMES_H +#define MEDIAFEATURENAMES_H + +#include "AtomicString.h" + +namespace WebCore { namespace MediaFeatureNames { + +#define CSS_MEDIAQUERY_NAMES_FOR_EACH_MEDIAFEATURE(macro) \ + macro(color, "color") \ + macro(grid, "grid") \ + macro(monochrome, "monochrome") \ + macro(height, "height") \ + macro(width, "width") \ + macro(device_aspect_ratio, "device-aspect-ratio") \ + macro(device_height, "device-height") \ + macro(device_width, "device-width") \ + macro(max_color, "max-color") \ + macro(max_device_aspect_ratio, "max-device-aspect-ratio") \ + macro(max_device_height, "max-device-height") \ + macro(max_device_width, "max-device-width") \ + macro(max_height, "max-height") \ + macro(max_monochrome, "max-monochrome") \ + macro(max_width, "max-width") \ + macro(min_color, "min-color") \ + macro(min_device_aspect_ratio, "min-device-aspect-ratio") \ + macro(min_device_height, "min-device-height") \ + macro(min_device_width, "min-device-width") \ + macro(min_height, "min-height") \ + macro(min_monochrome, "min-monochrome") \ + macro(min_width, "min-width") \ +// end of macro + +#if !CSS_MEDIAQUERY_NAMES_HIDE_GLOBALS + #define CSS_MEDIAQUERY_NAMES_DECLARE(name, str) extern const AtomicString name##MediaFeature; + CSS_MEDIAQUERY_NAMES_FOR_EACH_MEDIAFEATURE(CSS_MEDIAQUERY_NAMES_DECLARE) + #undef CSS_MEDIAQUERY_NAMES_DECLARE +#endif + + void init(); +} } + +#endif + + diff --git a/third_party/WebKit/WebCore/css/MediaList.cpp b/third_party/WebKit/WebCore/css/MediaList.cpp index 675e595..a0184b8 100644 --- a/third_party/WebKit/WebCore/css/MediaList.cpp +++ b/third_party/WebKit/WebCore/css/MediaList.cpp @@ -25,29 +25,79 @@ #include "CSSRule.h" #include "CSSStyleSheet.h" #include "DeprecatedStringList.h" +#include "ExceptionCode.h" +#include "MediaQuery.h" +#include "cssparser.h" + namespace WebCore { -MediaList::MediaList(CSSStyleSheet* parentSheet) +/* MediaList is used to store 3 types of media related entities which mean the same: + * Media Queries, Media Types and Media Descriptors. + * Currently MediaList always tries to parse media queries and if parsing fails, + * tries to fallback to Media Descriptors if m_fallback flag is set. + * Slight problem with syntax error handling: + * CSS 2.1 Spec (http://www.w3.org/TR/CSS21/media.html) + * specifies that failing media type parsing is a syntax error + * CSS 3 Media Queries Spec (http://www.w3.org/TR/css3-mediaqueries/) + * specifies that failing media query is a syntax error + * HTML 4.01 spec (http://www.w3.org/TR/REC-html40/present/styles.html#adef-media) + * specifies that Media Descriptors should be parsed with forward-compatible syntax + * DOM Level 2 Style Sheet spec (http://www.w3.org/TR/DOM-Level-2-Style/) + * talks about MediaList.mediaText and refers + * - to Media Descriptors of HTML 4.0 in context of StyleSheet + * - to Media Types of CSS 2.0 in context of CSSMediaRule and CSSImportRule + * + * These facts create situation where same (illegal) media specification may result in + * different parses depending on whether it is media attr of style element or part of + * css @media rule. + * <style media="screen and resolution > 40dpi"> ..</style> will be enabled on screen devices where as + * @media screen and resolution > 40dpi {..} will not. + * This gets more counter-intuitive in JavaScript: + * document.styleSheets[0].media.mediaText = "screen and resolution > 40dpi" will be ok and + * enabled, while + * document.styleSheets[0].cssRules[0].media.mediaText = "screen and resolution > 40dpi" will + * throw SYNTAX_ERR exception. + */ + +MediaList::MediaList(CSSStyleSheet* parentSheet, bool fallbackToDescriptor) : StyleBase(parentSheet) + , m_fallback(fallbackToDescriptor) { } -MediaList::MediaList(CSSStyleSheet* parentSheet, const String& media) +MediaList::MediaList(CSSStyleSheet* parentSheet, const String& media, bool fallbackToDescriptor) : StyleBase(parentSheet) + , m_fallback(fallbackToDescriptor) { - setMediaText(media); + ExceptionCode ec = 0; + setMediaText(media, ec); + // FIXME: parsing can fail. The problem with failing constructor is that + // we would need additional flag saying MediaList is not valid + // Parse can fail only when fallbackToDescriptor == false, i.e when HTML4 media descriptor + // forward-compatible syntax is not in use. + // DOMImplementationCSS seems to mandate that media descriptors are used + // for both html and svg, even though svg:style doesn't use media descriptors + // Currently the only places where parsing can fail are + // creating <svg:style>, creating css media / import rules from js + if (ec) + setMediaText("invalid", ec); } -MediaList::MediaList(CSSRule* parentRule, const String& media) +MediaList::MediaList(CSSRule* parentRule, const String& media, bool fallbackToDescriptor) : StyleBase(parentRule) + , m_fallback(fallbackToDescriptor) { - setMediaText(media); + ExceptionCode ec = 0; + setMediaText(media, ec); + //FIXME: parsing can fail. + if (ec) + setMediaText("invalid", ec); } -bool MediaList::contains(const String& medium) const +MediaList::~MediaList() { - return m_lstMedia.count() == 0 || m_lstMedia.contains(medium) || m_lstMedia.contains("all"); + deleteAllValues(m_queries); } CSSStyleSheet *MediaList::parentStyleSheet() const @@ -60,36 +110,147 @@ CSSRule *MediaList::parentRule() const return parent()->isRule() ? static_cast<CSSRule*>(parent()) : 0; } -void MediaList::deleteMedium(const String& oldMedium) +static String parseMediaDescriptor(const String& s) { - for (DeprecatedValueList<String>::Iterator it = m_lstMedia.begin(); it != m_lstMedia.end(); ++it) { - if ((*it) == oldMedium) { - m_lstMedia.remove(it); - return; + int len = s.length(); + + // http://www.w3.org/TR/REC-html40/types.html#type-media-descriptors + // "Each entry is truncated just before the first character that isn't a + // US ASCII letter [a-zA-Z] (ISO 10646 hex 41-5a, 61-7a), digit [0-9] (hex 30-39), + // or hyphen (hex 2d)." + int i; + unsigned short c; + for (i = 0; i < len; ++i) { + c = s[i]; + if (! ((c >= 'a' && c <= 'z') + || (c >= 'A' && c <= 'Z') + || (c >= '1' && c <= '9') + || (c == '-'))) + break; + } + return s.left(i); +} + +void MediaList::deleteMedium(const String& oldMedium, ExceptionCode& ec) +{ + MediaList tempMediaList; + CSSParser p(true); + + MediaQuery* oldQuery = 0; + bool deleteOldQuery = false; + + if (p.parseMediaQuery(&tempMediaList, oldMedium)) { + if (tempMediaList.m_queries.size() > 0) + oldQuery = tempMediaList.m_queries[0]; + } else if (m_fallback) { + String medium = parseMediaDescriptor(oldMedium); + if (!medium.isNull()) { + oldQuery = new MediaQuery(MediaQuery::None, medium, 0); + deleteOldQuery = true; } } + + // DOM Style Sheets spec doesn't allow SYNTAX_ERR to be thrown in deleteMedium + ec = NOT_FOUND_ERR; + + if (oldQuery) { + for(size_t i = 0; i < m_queries.size(); ++i) { + MediaQuery* a = m_queries[i]; + if (*a == *oldQuery) { + m_queries.remove(i); + delete a; + ec = 0; + break; + } + } + if (deleteOldQuery) + delete oldQuery; + } } WebCore::String MediaList::mediaText() const { - String text = ""; - for (DeprecatedValueList<String>::ConstIterator it = m_lstMedia.begin(); it != m_lstMedia.end(); ++it) { - if (text.length() > 0) + String text(""); + + bool first = true; + for (size_t i = 0; i < m_queries.size(); ++i) { + if (!first) text += ", "; - text += *it; + else + first = false; + text += m_queries[i]->cssText(); } + return text; } -void MediaList::setMediaText(const WebCore::String& value) +void MediaList::setMediaText(const WebCore::String& value, ExceptionCode& ec) { - m_lstMedia.clear(); + MediaList tempMediaList; + CSSParser p(true); + DeprecatedStringList list = DeprecatedStringList::split(',', value.deprecatedString()); for (DeprecatedStringList::Iterator it = list.begin(); it != list.end(); ++it) { String medium = (*it).stripWhiteSpace(); - if (!medium.isEmpty()) - m_lstMedia.append(medium); + if (!medium.isEmpty()) { + if (!p.parseMediaQuery(&tempMediaList, medium)) { + if (m_fallback) { + String mediaDescriptor = parseMediaDescriptor(medium); + if (!mediaDescriptor.isNull()) + tempMediaList.m_queries.append(new MediaQuery(MediaQuery::None, mediaDescriptor, 0)); + } else { + ec = SYNTAX_ERR; + return; + } + } + } else if (!m_fallback) { + ec = SYNTAX_ERR; + return; + } } + // ",,,," falls straight through, but is not valid unless fallback + if (!m_fallback && list.begin() == list.end()) { + String s = value.deprecatedString().stripWhiteSpace(); + if (!s.isEmpty()) { + ec = SYNTAX_ERR; + return; + } + } + + ec = 0; + deleteAllValues(m_queries); + m_queries = tempMediaList.m_queries; + tempMediaList.m_queries.clear(); +} + +String MediaList::item(unsigned index) const +{ + if (index < m_queries.size()) { + MediaQuery* query = m_queries[index]; + return query->cssText(); + } + + return String(); +} + +void MediaList::appendMedium(const String& newMedium, ExceptionCode& ec) +{ + ec = INVALID_CHARACTER_ERR; + CSSParser p(true); + if (p.parseMediaQuery(this, newMedium)) { + ec = 0; + } else if (m_fallback) { + String medium = parseMediaDescriptor(newMedium); + if (!medium.isNull()) { + m_queries.append(new MediaQuery(MediaQuery::None, medium, 0)); + ec = 0; + } + } +} + +void MediaList::appendMediaQuery(MediaQuery* mediaQuery) +{ + m_queries.append(mediaQuery); } } diff --git a/third_party/WebKit/WebCore/css/MediaList.h b/third_party/WebKit/WebCore/css/MediaList.h index 3691e21..8a5b201 100644 --- a/third_party/WebKit/WebCore/css/MediaList.h +++ b/third_party/WebKit/WebCore/css/MediaList.h @@ -24,46 +24,42 @@ #define MediaList_H #include "StyleBase.h" -#include "DeprecatedValueList.h" +#include <wtf/Vector.h> #include "PlatformString.h" namespace WebCore { - +typedef int ExceptionCode; class CSSStyleSheet; +class MediaQuery; class CSSRule; class MediaList : public StyleBase { public: - MediaList() : StyleBase(0) {} - MediaList(CSSStyleSheet* parentSheet); - MediaList(CSSStyleSheet* parentSheet, const String& media); - MediaList(CSSRule* parentRule, const String& media); + MediaList(bool fallbackToDescription = false) : StyleBase(0), m_fallback(fallbackToDescription) {} + MediaList(CSSStyleSheet* parentSheet, bool fallbackToDescription = false); + MediaList(CSSStyleSheet* parentSheet, const String& media, bool fallbackToDescription = false); + MediaList(CSSRule* parentRule, const String& media, bool fallbackToDescription = false); + ~MediaList(); virtual bool isMediaList() { return true; } CSSStyleSheet* parentStyleSheet() const; CSSRule* parentRule() const; - unsigned length() const { return m_lstMedia.count(); } - String item(unsigned index) const { return m_lstMedia[index]; } - void deleteMedium(const String& oldMedium); - void appendMedium(const String& newMedium) { m_lstMedia.append(newMedium); } + unsigned length() const { return (unsigned) m_queries.size(); } + String item(unsigned index) const; + void deleteMedium(const String& oldMedium, ExceptionCode&); + void appendMedium(const String& newMedium, ExceptionCode&); String mediaText() const; - void setMediaText(const String&); + void setMediaText(const String&, ExceptionCode&xo); - /** - * Check if the list contains either the requested medium, or the - * catch-all "all" media type. Returns true when found, false otherwise. - * Since not specifying media types should be treated as "all" according - * to DOM specs, an empty list always returns true. - * - * _NOT_ part of the DOM! - */ - bool contains(const String& medium) const; + void appendMediaQuery(MediaQuery* mediaQuery); + const Vector<MediaQuery*>* mediaQueries() const { return &m_queries; } protected: - DeprecatedValueList<String> m_lstMedia; + Vector<MediaQuery*> m_queries; + bool m_fallback; // true if failed media query parsing should fallback to media description parsing }; } // namespace diff --git a/third_party/WebKit/WebCore/css/MediaQuery.cpp b/third_party/WebKit/WebCore/css/MediaQuery.cpp new file mode 100644 index 0000000..ff57372 --- /dev/null +++ b/third_party/WebKit/WebCore/css/MediaQuery.cpp @@ -0,0 +1,97 @@ +/* + * CSS Media Query + * + * Copyright (C) 2005, 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "MediaQuery.h" + +#include "MediaQueryExp.h" + +namespace WebCore { + +MediaQuery::MediaQuery(Restrictor r, const String& mediaType, Vector<MediaQueryExp*>* exprs) + : m_restrictor(r) + , m_mediaType(mediaType) + , m_expressions(exprs) +{ + if (!m_expressions) + m_expressions = new Vector<MediaQueryExp*>; +} + +MediaQuery::~MediaQuery() +{ + if (m_expressions) { + deleteAllValues(*m_expressions); + delete m_expressions; + } +} + +bool MediaQuery::operator==(const MediaQuery& other) const +{ + if (m_restrictor != other.m_restrictor + || m_mediaType != other.m_mediaType + || m_expressions->size() != other.m_expressions->size()) + return false; + + for (size_t i = 0; i < m_expressions->size(); ++i) { + MediaQueryExp* exp = m_expressions->at(i); + MediaQueryExp* oexp = other.m_expressions->at(i); + if (!(*exp == *oexp)) + return false; + } + + return true; +} + +String MediaQuery::cssText() const +{ + String text; + switch (m_restrictor) { + case MediaQuery::Only: + text += "only "; + break; + case MediaQuery::Not: + text += "not "; + break; + case MediaQuery::None: + default: + break; + } + text += m_mediaType; + for (size_t i = 0; i < m_expressions->size(); ++i) { + MediaQueryExp* exp = m_expressions->at(i); + text += " and ("; + text += exp->mediaFeature(); + if (exp->value()) { + text += ": "; + text += exp->value()->cssText(); + } + text += ")"; + } + return text; +} + +} //namespace diff --git a/third_party/WebKit/WebCore/css/MediaQuery.h b/third_party/WebKit/WebCore/css/MediaQuery.h new file mode 100644 index 0000000..0aa0da1 --- /dev/null +++ b/third_party/WebKit/WebCore/css/MediaQuery.h @@ -0,0 +1,62 @@ +/* + * CSS Media Query + * + * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef MediaQuery_h +#define MediaQuery_h + +#include "PlatformString.h" +#include <wtf/Vector.h> + +namespace WebCore { +class MediaQueryExp; + +class MediaQuery +{ +public: + enum Restrictor { + Only, Not, None + }; + + MediaQuery(Restrictor r, const String& mediaType, Vector<MediaQueryExp*>* exprs); + ~MediaQuery(); + + Restrictor restrictor() const { return m_restrictor; } + const Vector<MediaQueryExp*>* expressions() const { return m_expressions; } + String mediaType() const { return m_mediaType; } + bool operator==(const MediaQuery& other) const; + void append(MediaQueryExp* newExp) { m_expressions->append(newExp); } + String cssText() const; + + private: + Restrictor m_restrictor; + String m_mediaType; + Vector<MediaQueryExp*>* m_expressions; +}; + +} // namespace + +#endif diff --git a/third_party/WebKit/WebCore/css/MediaQueryEvaluator.cpp b/third_party/WebKit/WebCore/css/MediaQueryEvaluator.cpp new file mode 100644 index 0000000..e4ea439 --- /dev/null +++ b/third_party/WebKit/WebCore/css/MediaQueryEvaluator.cpp @@ -0,0 +1,366 @@ +/* + * CSS Media Query Evaluator + * + * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "MediaQueryEvaluator.h" + +#include "CSSPrimitiveValue.h" +#include "CSSValueList.h" +#include "FloatRect.h" +#include "IntRect.h" +#include "MediaFeatureNames.h" +#include "MediaList.h" +#include "MediaQuery.h" +#include "MediaQueryExp.h" +#include "rendering/render_style.h" +#include "page/FrameView.h" +#include "Screen.h" +#include <wtf/HashMap.h> + +namespace WebCore { +using namespace MediaFeatureNames; + +enum MediaFeaturePrefix +{ + MinPrefix, MaxPrefix, NoPrefix +}; + +typedef bool (*EvalFunc)(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op); +typedef HashMap<AtomicStringImpl*, EvalFunc> FunctionMap; +static FunctionMap* gFunctionMap; + +/* + * FIXME: following media features are not implemented: color_index, scan, resolution + * + * color_index, min-color-index, max_color_index: It's unknown how to retrieve + * the information if the display mode is indexed + * scan: The "scan" media feature describes the scanning process of + * tv output devices. It's unknown how to retrieve this information from + * the platform + * resolution, min-resolution, max-resolution: css parser doesn't seem to + * support CSS_DIMENSION + */ + +MediaQueryEvaluator:: MediaQueryEvaluator(bool mediaFeatureResult) + : m_view(0) + , m_style(0) + , m_expResult(mediaFeatureResult) +{ +} + +MediaQueryEvaluator:: MediaQueryEvaluator(const String& acceptedMediaType, bool mediaFeatureResult) + : m_mediaType(acceptedMediaType) + , m_view(0) + , m_style(0) + , m_expResult(mediaFeatureResult) +{ +} + +MediaQueryEvaluator:: MediaQueryEvaluator(const String& acceptedMediaType, FrameView* view, RenderStyle* style) + : m_mediaType(acceptedMediaType.lower()) + , m_view(view) + , m_style(style) + , m_expResult(false) // doesn't matter when we have m_view and m_style +{ +} + +MediaQueryEvaluator::~MediaQueryEvaluator() +{ +} + +bool MediaQueryEvaluator::mediaTypeMatch(const String& mediaTypeToMatch) const +{ + return mediaTypeToMatch.isEmpty() + || equalIgnoringCase(mediaTypeToMatch, "all") + || equalIgnoringCase(mediaTypeToMatch, m_mediaType); +} + +static bool applyRestrictor(MediaQuery::Restrictor r, bool value) +{ + return r == MediaQuery::Not ? !value : value; +} + +bool MediaQueryEvaluator::eval(const MediaList* mediaList) const +{ + if (!mediaList) + return true; + + const Vector<MediaQuery*>* queries = mediaList->mediaQueries(); + if (!queries->size()) + return true; // empty query list evaluates to true + + // iterate over queries, stop if any of them eval to true (OR semantics) + bool result = false; + for (size_t i = 0; i < queries->size() && !result; ++i) { + MediaQuery* query = queries->at(i); + + if (mediaTypeMatch(query->mediaType())) { + const Vector<MediaQueryExp*>* exps = query->expressions(); + // iterate through expressions, stop if any of them eval to false + // (AND semantics) + size_t j = 0; + for (; j < exps->size() && eval(exps->at(j)); ++j) /* empty*/; + + // assume true if we are at the end of the list, + // otherwise assume false + result = applyRestrictor(query->restrictor(), exps->size() == j); + } else + result = applyRestrictor(query->restrictor(), false); + } + + return result; +} + +static bool parseAspectRatio(CSSValue* value, int& a, int& b) +{ + if (value->isValueList()){ + CSSValueList* valueList = static_cast<CSSValueList*>(value); + if (valueList->length() == 3) { + CSSValue* i0 = valueList->item(0); + CSSValue* i1 = valueList->item(1); + CSSValue* i2 = valueList->item(2); + if (i0->isPrimitiveValue() && static_cast<CSSPrimitiveValue*>(i0)->primitiveType() == CSSPrimitiveValue::CSS_NUMBER + && i1->isPrimitiveValue() && static_cast<CSSPrimitiveValue*>(i1)->primitiveType() == CSSPrimitiveValue::CSS_STRING + && i2->isPrimitiveValue() && static_cast<CSSPrimitiveValue*>(i2)->primitiveType() == CSSPrimitiveValue::CSS_NUMBER) { + String str = static_cast<CSSPrimitiveValue*>(i1)->getStringValue(); + if (!str.isNull() && str.length() == 1 && str[0] == QChar('/')) { + a = (int) static_cast<CSSPrimitiveValue*>(i0)->getFloatValue(CSSPrimitiveValue::CSS_NUMBER); + b = (int) static_cast<CSSPrimitiveValue*>(i2)->getFloatValue(CSSPrimitiveValue::CSS_NUMBER); + return true; + } + } + } + } + return false; +} + +inline bool cmpvalue(int a, int b, MediaFeaturePrefix op) +{ + switch (op) { + case MinPrefix: + return a >= b; + case MaxPrefix: + return a <= b; + case NoPrefix: + return a == b; + } + return false; +} + +static bool numberValue(CSSValue* value, float& result) +{ + if (value->isPrimitiveValue() + && static_cast<CSSPrimitiveValue*>(value)->primitiveType() == CSSPrimitiveValue::CSS_NUMBER) { + result = static_cast<CSSPrimitiveValue*>(value)->getFloatValue(CSSPrimitiveValue::CSS_NUMBER); + return true; + } + return false; +} + +static bool colorMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op) +{ + int bitsPerComponent = screenDepthPerComponent(view); + float number; + if (value) + return numberValue(value, number) && cmpvalue(bitsPerComponent, (int)number, op); + + return bitsPerComponent != 0; +} + +static bool monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op) +{ + if (!screenIsMonochrome(view)) + return false; + + return colorMediaFeatureEval(value, style, view, op); +} + +static bool device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op) +{ + if (value) { + FloatRect sg = screenRect(view); + int a = 0; + int b = 0; + if (parseAspectRatio(value, a, b)) + return b != 0 && cmpvalue(a * (int)sg.height(), b * (int)sg.width(), op); + return false; + } + + // ({,min-,max-}device-aspect-ratio) + // assume if we have a device, its aspect ratio is non-zero + return true; +} + +static bool gridMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op) +{ + // if output device is bitmap, grid: 0 == true + // assume we have bitmap device + float number; + if (value && numberValue(value, number)) + return cmpvalue((int)number, 0, op); + return false; +} + +static bool device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op) +{ + if (value) { + FloatRect sg = screenRect(view); + return value->isPrimitiveValue() && cmpvalue((int)sg.height(), static_cast<CSSPrimitiveValue*>(value)->computeLengthInt(style), op); + } + // ({,min-,max-}device-height) + // assume if we have a device, assume non-zero + return true; +} + +static bool device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op) +{ + if (value) { + FloatRect sg = screenRect(view); + return value->isPrimitiveValue() && cmpvalue((int)sg.width(), static_cast<CSSPrimitiveValue*>(value)->computeLengthInt(style), op); + } + // ({,min-,max-}device-width) + // assume if we have a device, assume non-zero + return true; +} + +static bool heightMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op) +{ + if (value) + return value->isPrimitiveValue() && cmpvalue(view->visibleHeight(), static_cast<CSSPrimitiveValue*>(value)->computeLengthInt(style), op); + + return view->visibleHeight() != 0; +} + +static bool widthMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix op) +{ + if (value) + return value->isPrimitiveValue() && cmpvalue(view->visibleWidth(), static_cast<CSSPrimitiveValue*>(value)->computeLengthInt(style), op); + + return view->visibleWidth() != 0; +} + +// rest of the functions are trampolines which set the prefix according to the media feature expression used + +static bool min_colorMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return colorMediaFeatureEval(value, style, view, MinPrefix); +} + +static bool max_colorMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return colorMediaFeatureEval(value, style, view, MaxPrefix); +} + +static bool min_monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return monochromeMediaFeatureEval(value, style, view, MinPrefix); +} + +static bool max_monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return monochromeMediaFeatureEval(value, style, view, MaxPrefix); +} + +static bool min_device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return device_aspect_ratioMediaFeatureEval(value, style, view, MinPrefix); +} + +static bool max_device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return device_aspect_ratioMediaFeatureEval(value, style, view, MaxPrefix); +} + +static bool min_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return heightMediaFeatureEval(value, style, view, MinPrefix); +} + +static bool max_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return heightMediaFeatureEval(value, style, view, MaxPrefix); +} + +static bool min_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return widthMediaFeatureEval(value, style, view, MinPrefix); +} + +static bool max_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return widthMediaFeatureEval(value, style, view, MaxPrefix); +} + +static bool min_device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return device_heightMediaFeatureEval(value, style, view, MinPrefix); +} + +static bool max_device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return device_heightMediaFeatureEval(value, style, view, MaxPrefix); +} + +static bool min_device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return device_widthMediaFeatureEval(value, style, view, MinPrefix); +} + +static bool max_device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, FrameView* view, MediaFeaturePrefix /*op*/) +{ + return device_widthMediaFeatureEval(value, style, view, MaxPrefix); +} + +static void createFunctionMap() +{ + // Create the table. + gFunctionMap = new FunctionMap; +#define ADD_TO_FUNCTIONMAP(name, str) \ + gFunctionMap->set(name##MediaFeature.impl(), name##MediaFeatureEval); + CSS_MEDIAQUERY_NAMES_FOR_EACH_MEDIAFEATURE(ADD_TO_FUNCTIONMAP); +#undef ADD_TO_FUNCTIONMAP +} + +bool MediaQueryEvaluator::eval(const MediaQueryExp* expr) const +{ + if (!m_view || !m_style) + return m_expResult; + + if (!gFunctionMap) + createFunctionMap(); + + // call the media feature evaluation function. Assume no prefix + // and let trampoline functions override the prefix if prefix is + // used + EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); + if (func) + return func(expr->value(), m_style, m_view, NoPrefix); + + return false; +} + +} // namespace diff --git a/third_party/WebKit/WebCore/css/MediaQueryEvaluator.h b/third_party/WebKit/WebCore/css/MediaQueryEvaluator.h new file mode 100644 index 0000000..f33cec7 --- /dev/null +++ b/third_party/WebKit/WebCore/css/MediaQueryEvaluator.h @@ -0,0 +1,88 @@ +/* + * CSS Media Query Evaluator + * + * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef MediaQueryEvaluator_h +#define MediaQueryEvaluator_h + +#include "PlatformString.h" + +namespace WebCore { +class FrameView; +class RenderStyle; +class MediaList; +class MediaQueryExp; + +/** + * Class that evaluates css media queries as defined in + * CSS3 Module "Media Queries" (http://www.w3.org/TR/css3-mediaqueries/) + * Special constructors are needed, if simple media queries are to be + * evaluated without knowledge of the medium features. This can happen + * for example when parsing UA stylesheets, if evaluation is done + * right after parsing. + * + * the boolean parameter is used to approximate results of evaluation, if + * the device characteristics are not known. This can be used to prune the loading + * of stylesheets to only those which are probable to match. + */ +class MediaQueryEvaluator +{ +public: + /** Creates evaluator which evaluates only simple media queries + * Evaluator returns true for "all", and returns value of \mediaFeatureResult + * for any media features + */ + MediaQueryEvaluator(bool mediaFeatureResult = false); + + /** Creates evaluator which evaluates only simple media queries + * Evaluator returns true for acceptedMediaType and returns value of \mediafeatureResult + * for any media features + */ + MediaQueryEvaluator(const String& acceptedMediaType, bool mediaFeatureResult = false); + + /** Creates evaluator which evaluates full media queries + */ + MediaQueryEvaluator(const String& acceptedMediaType, FrameView* view, RenderStyle* style); + + ~MediaQueryEvaluator(); + + bool mediaTypeMatch(const String& mediaTypeToMatch) const; + + /** Evaluates a list of media queries */ + bool eval(const MediaList* query) const; + + /** Evaluates media query subexpression, ie "and (media-feature: value)" part */ + bool eval(const MediaQueryExp* expr) const; + +private: + String m_mediaType; + FrameView* m_view; // not owned + RenderStyle* m_style; // not owned + bool m_expResult; +}; + +} // namespace +#endif diff --git a/third_party/WebKit/WebCore/css/MediaQueryExp.cpp b/third_party/WebKit/WebCore/css/MediaQueryExp.cpp new file mode 100644 index 0000000..bbab37f --- /dev/null +++ b/third_party/WebKit/WebCore/css/MediaQueryExp.cpp @@ -0,0 +1,86 @@ +/* + * CSS Media Query + * + * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "MediaQueryExp.h" + +#include "cssparser.h" +#include "CSSPrimitiveValue.h" +#include "CSSValueList.h" + +namespace WebCore { + +MediaQueryExp::MediaQueryExp(const AtomicString& mediaFeature, ValueList* valueList) + : m_mediaFeature(mediaFeature) + , m_value(0) +{ + if (valueList) { + if (valueList->size() == 1) { + Value* value = valueList->current(); + + if (value->id != 0) + m_value = new CSSPrimitiveValue(value->id); + else if (value->unit == CSSPrimitiveValue::CSS_STRING) + m_value = new CSSPrimitiveValue(domString(value->string), (CSSPrimitiveValue::UnitTypes) value->unit); + else if (value->unit >= CSSPrimitiveValue::CSS_NUMBER && + value->unit <= CSSPrimitiveValue::CSS_KHZ) + m_value = new CSSPrimitiveValue(value->fValue, (CSSPrimitiveValue::UnitTypes) value->unit); + + valueList->next(); + } else if (valueList->size() > 1) { + // create list of values + // currently accepts only <integer>/<integer> + + CSSValueList* list = new CSSValueList(); + Value* value = 0; + bool isValid = true; + + while ((value = valueList->current()) && isValid) { + if (value->unit == Value::Operator && value->iValue == '/') + list->append(new CSSPrimitiveValue("/", CSSPrimitiveValue::CSS_STRING)); + else if (value->unit == CSSPrimitiveValue::CSS_NUMBER) + list->append(new CSSPrimitiveValue(value->fValue, CSSPrimitiveValue::CSS_NUMBER)); + else + isValid = false; + + value = valueList->next(); + } + + if (isValid) + m_value = list; + else + delete list; + } + } +} + +MediaQueryExp::~MediaQueryExp() +{ + delete m_value; +} + +} // namespace diff --git a/third_party/WebKit/WebCore/css/MediaQueryExp.h b/third_party/WebKit/WebCore/css/MediaQueryExp.h new file mode 100644 index 0000000..25d5c86 --- /dev/null +++ b/third_party/WebKit/WebCore/css/MediaQueryExp.h @@ -0,0 +1,60 @@ +/* + * CSS Media Query + * + * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef MediaQueryExp_h +#define MediaQueryExp_h + +#include "AtomicString.h" +#include "CSSValue.h" + +namespace WebCore { +class ValueList; + +class MediaQueryExp +{ +public: + MediaQueryExp(const AtomicString& mediaFeature, ValueList* values); + ~MediaQueryExp(); + + AtomicString mediaFeature() const { return m_mediaFeature; } + + CSSValue* value() const { return m_value; } + + bool operator==(const MediaQueryExp& other) const { + return (other.m_mediaFeature == m_mediaFeature) + && ((!other.m_value && !m_value) + || (other.m_value && m_value && other.m_value->cssText() == m_value->cssText())); + } + +private: + AtomicString m_mediaFeature; + CSSValue* m_value; +}; + +} // namespace + +#endif diff --git a/third_party/WebKit/WebCore/css/StyleSheet.cpp b/third_party/WebKit/WebCore/css/StyleSheet.cpp index 699121c..0aafe64 100644 --- a/third_party/WebKit/WebCore/css/StyleSheet.cpp +++ b/third_party/WebKit/WebCore/css/StyleSheet.cpp @@ -64,7 +64,11 @@ StyleSheet* StyleSheet::parentStyleSheet() const void StyleSheet::setMedia(MediaList* media) { + if (m_media) + m_media->setParent(0); + m_media = media; + m_media->setParent(this); } } diff --git a/third_party/WebKit/WebCore/css/cssparser.cpp b/third_party/WebKit/WebCore/css/cssparser.cpp index ba6e286..f22e69d 100644 --- a/third_party/WebKit/WebCore/css/cssparser.cpp +++ b/third_party/WebKit/WebCore/css/cssparser.cpp @@ -50,6 +50,7 @@ #include "Pair.h" #include "ShadowValue.h" #include "csshelper.h" +#include "MediaQueryExp.h" #define YYDEBUG 0 @@ -93,6 +94,9 @@ namespace { CSSParser* CSSParser::currentParser = 0; CSSParser::CSSParser(bool strictParsing) + : m_floatingMediaQuery(0) + , m_floatingMediaQueryExp(0) + , m_floatingMediaQueryExpList(0) { #ifdef CSS_DEBUG kdDebug(6080) << "CSSParser::CSSParser this=" << this << endl; @@ -129,6 +133,12 @@ CSSParser::~CSSParser() fastFree(data); + if (m_floatingMediaQueryExpList) { + deleteAllValues(*m_floatingMediaQueryExpList); + delete m_floatingMediaQueryExpList; + } + delete m_floatingMediaQueryExp; + delete m_floatingMediaQuery; deleteAllValues(m_floatingSelectors); deleteAllValues(m_floatingValueLists); deleteAllValues(m_floatingFunctions); @@ -151,6 +161,9 @@ void ParseString::lower() void CSSParser::setupParser(const char* prefix, const String& string, const char* suffix) { int length = string.length() + strlen(prefix) + strlen(suffix) + 2; + + if (data) + fastFree(data); data = static_cast<UChar*>(fastMalloc(length * sizeof(UChar))); for (unsigned i = 0; i < strlen(prefix); i++) @@ -293,6 +306,32 @@ bool CSSParser::parseDeclaration(CSSMutableStyleDeclaration *declaration, const return ok; } +bool CSSParser::parseMediaQuery(MediaList* queries, const String& string) +{ + if (string.isEmpty() || string.isNull()) { + return true; + } + + mediaQuery = 0; + // can't use { because tokenizer state switches from mediaquery to initial state when it sees { token. + // instead insert one " " (which is WHITESPACE in CSSGrammar.y) + setupParser ("@-webkit-mediaquery ", string, "} "); + + CSSParser* old = currentParser; + currentParser = this; + cssyyparse(this); + currentParser = old; + + bool ok = false; + if (mediaQuery) { + ok = true; + queries->appendMediaQuery(mediaQuery); + mediaQuery = 0; + } + + return ok; +} + void CSSParser::addProperty(int propId, CSSValue *value, bool important) { @@ -2868,6 +2907,51 @@ Value& CSSParser::sinkFloatingValue(Value& value) return value; } +MediaQueryExp* CSSParser::createFloatingMediaQueryExp(const AtomicString& mediaFeature, ValueList* values) +{ + delete m_floatingMediaQueryExp; + m_floatingMediaQueryExp = new MediaQueryExp(mediaFeature, values); + return m_floatingMediaQueryExp; +} + +MediaQueryExp* CSSParser::sinkFloatingMediaQueryExp(MediaQueryExp* e) +{ + ASSERT(e == m_floatingMediaQueryExp); + m_floatingMediaQueryExp = 0; + return e; +} + +Vector<MediaQueryExp*>* CSSParser::createFloatingMediaQueryExpList() +{ + if (m_floatingMediaQueryExpList) { + deleteAllValues(*m_floatingMediaQueryExpList); + delete m_floatingMediaQueryExpList; + } + m_floatingMediaQueryExpList = new Vector<MediaQueryExp*>; + return m_floatingMediaQueryExpList; +} + +Vector<MediaQueryExp*>* CSSParser::sinkFloatingMediaQueryExpList(Vector<MediaQueryExp*>* l) +{ + ASSERT(l == m_floatingMediaQueryExpList); + m_floatingMediaQueryExpList = 0; + return l; +} + +MediaQuery* CSSParser::createFloatingMediaQuery(MediaQuery::Restrictor r, const String& mediaType, Vector<MediaQueryExp*>* exprs) +{ + delete m_floatingMediaQuery; + m_floatingMediaQuery = new MediaQuery(r, mediaType, exprs); + return m_floatingMediaQuery; +} + +MediaQuery* CSSParser::sinkFloatingMediaQuery(MediaQuery* mq) +{ + ASSERT(mq == m_floatingMediaQuery); + m_floatingMediaQuery = 0; + return mq; +} + MediaList* CSSParser::createMediaList() { MediaList* list = new MediaList; @@ -2947,6 +3031,13 @@ typedef unsigned YY_CHAR; #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) #define yyterminate() yyTok = END_TOKEN; return yyTok #define YY_FATAL_ERROR(a) +// The line below is needed to build the tokenizer with conditon stack. +// The macro is used in the tokenizer grammar with lines containing +// BEGIN(mediaqueries) and BEGIN(initial). yy_start acts as index to +// tokenizer transition table, and 'mediaqueries' and 'initial' are +// offset multipliers that specify which transitions are active +// in the tokenizer during in each condition (tokenizer state) +#define BEGIN yy_start = 1 + 2 * #include "tokenizer.cpp" diff --git a/third_party/WebKit/WebCore/css/cssparser.h b/third_party/WebKit/WebCore/css/cssparser.h index d68a7e2..bf3dc5e 100644 --- a/third_party/WebKit/WebCore/css/cssparser.h +++ b/third_party/WebKit/WebCore/css/cssparser.h @@ -27,6 +27,7 @@ #include "Color.h" #include <wtf/HashSet.h> #include <wtf/Vector.h> +#include "MediaQuery.h" namespace WebCore { @@ -43,6 +44,9 @@ namespace WebCore { class MediaList; class StyleBase; class StyleList; + class MediaList; + class MediaQueryExp; + struct ParseString { UChar* characters; @@ -110,6 +114,7 @@ namespace WebCore { static RGBA32 parseColor(const String&); bool parseColor(CSSMutableStyleDeclaration*, const String&); bool parseDeclaration(CSSMutableStyleDeclaration*, const String&); + bool parseMediaQuery(MediaList*, const String&); static CSSParser* current() { return currentParser; } @@ -177,12 +182,20 @@ namespace WebCore { CSSRuleList* createRuleList(); CSSRule* createStyleRule(CSSSelector*); + MediaQueryExp* createFloatingMediaQueryExp(const AtomicString&, ValueList*); + MediaQueryExp* sinkFloatingMediaQueryExp(MediaQueryExp*); + Vector<MediaQueryExp*>* createFloatingMediaQueryExpList(); + Vector<MediaQueryExp*>* sinkFloatingMediaQueryExpList(Vector<MediaQueryExp*>*); + MediaQuery* createFloatingMediaQuery(MediaQuery::Restrictor, const String&, Vector<MediaQueryExp*>*); + MediaQuery* sinkFloatingMediaQuery(MediaQuery*); + public: bool strict; bool important; int id; StyleList* styleElement; RefPtr<CSSRule> rule; + MediaQuery* mediaQuery; ValueList* valueList; CSSProperty** parsedProperties; int numParsedProperties; @@ -226,6 +239,10 @@ namespace WebCore { HashSet<ValueList*> m_floatingValueLists; HashSet<Function*> m_floatingFunctions; + MediaQuery* m_floatingMediaQuery; + MediaQueryExp* m_floatingMediaQueryExp; + Vector<MediaQueryExp*>* m_floatingMediaQueryExpList; + // defines units allowed for a certain property, used in parseUnit enum Units { FUnknown = 0x0000, diff --git a/third_party/WebKit/WebCore/css/cssstyleselector.cpp b/third_party/WebKit/WebCore/css/cssstyleselector.cpp index 0596460..19cef2f 100644 --- a/third_party/WebKit/WebCore/css/cssstyleselector.cpp +++ b/third_party/WebKit/WebCore/css/cssstyleselector.cpp @@ -48,6 +48,7 @@ #include "History.h" #include "KWQKHTMLSettings.h" #include "MediaList.h" +#include "MediaQueryEvaluator.h" #include "Pair.h" #include "RectImpl.h" #include "RenderTheme.h" @@ -172,7 +173,7 @@ public: typedef HashMap<AtomicStringImpl*, CSSRuleDataList*> AtomRuleMap; - void addRulesFromSheet(CSSStyleSheet* sheet, const String &medium = "screen"); + void addRulesFromSheet(CSSStyleSheet* sheet, MediaQueryEvaluator* medium); void addRule(CSSStyleRule* rule, CSSSelector* sel); void addToRuleSet(AtomicStringImpl* key, AtomRuleMap& map, @@ -214,18 +215,39 @@ CSSStyleSelector::CSSStyleSelector(Document* doc, const String& userStyleSheet, settings = view ? view->frame()->settings() : 0; if (!defaultStyle) loadDefaultStyle(); - m_mediaType = view ? view->mediaType() : String("all"); m_userStyle = 0; m_userSheet = 0; + // construct document root element default style. this is needed + // to evaluate media queries that contain relative constraints, like "screen and (max-width: 10em)" + // This is here instead of constructor, because when constructor is run, + // document doesn't have documentElement + // NOTE: this assumes that element that gets passed to styleForElement -call + // is always from the document that owns the style selector + if (view) + m_medium = new MediaQueryEvaluator(view->mediaType()); + else + m_medium = new MediaQueryEvaluator("all"); + + Element* root = doc->documentElement(); + + if (root) + m_rootDefaultStyle = styleForElement(root, 0, false, true); // dont ref, because the RenderStyle is allocated from global heap + + if (m_rootDefaultStyle && view) { + delete m_medium; + m_medium = new MediaQueryEvaluator(view->mediaType(), view, m_rootDefaultStyle); + } + + // FIXME: This sucks! The user sheet is reparsed every time! if (!userStyleSheet.isEmpty()) { m_userSheet = new CSSStyleSheet(doc); m_userSheet->parseString(userStyleSheet, strictParsing); m_userStyle = new CSSRuleSet(); - m_userStyle->addRulesFromSheet(m_userSheet, m_mediaType); + m_userStyle->addRulesFromSheet(m_userSheet, m_medium); } // add stylesheets from document @@ -234,10 +256,8 @@ CSSStyleSelector::CSSStyleSelector(Document* doc, const String& userStyleSheet, DeprecatedPtrListIterator<StyleSheet> it(styleSheets->styleSheets); for (; it.current(); ++it) if (it.current()->isCSSStyleSheet() && !it.current()->disabled()) - m_authorStyle->addRulesFromSheet(static_cast<CSSStyleSheet*>(it.current()), m_mediaType); + m_authorStyle->addRulesFromSheet(static_cast<CSSStyleSheet*>(it.current()), m_medium); - m_ruleList = 0; - m_collectRulesOnly = false; } CSSStyleSelector::CSSStyleSelector(CSSStyleSheet *sheet) @@ -247,10 +267,23 @@ CSSStyleSelector::CSSStyleSelector(CSSStyleSheet *sheet) if (!defaultStyle) loadDefaultStyle(); FrameView *view = sheet->doc()->view(); - m_mediaType = view ? view->mediaType() : String("all"); + + if (view) + m_medium = new MediaQueryEvaluator(view->mediaType()); + else + m_medium = new MediaQueryEvaluator("all"); + + Element* root = sheet->doc()->documentElement(); + if (root) + m_rootDefaultStyle = styleForElement(root, 0, false, true); + + if (m_rootDefaultStyle && view) { + delete m_medium; + m_medium = new MediaQueryEvaluator(view->mediaType(), view, m_rootDefaultStyle); + } m_authorStyle = new CSSRuleSet(); - m_authorStyle->addRulesFromSheet(sheet, m_mediaType); + m_authorStyle->addRulesFromSheet(sheet, m_medium); } void CSSStyleSelector::init() @@ -258,6 +291,10 @@ void CSSStyleSelector::init() element = 0; settings = 0; m_matchedRuleCount = m_matchedDeclCount = m_tmpRuleCount = 0; + m_ruleList = 0; + m_collectRulesOnly = false; + m_rootDefaultStyle = 0; + m_medium = 0; } void CSSStyleSelector::setEncodedURL(const KURL& url) @@ -279,6 +316,9 @@ void CSSStyleSelector::setEncodedURL(const KURL& url) CSSStyleSelector::~CSSStyleSelector() { + delete m_medium; + ::delete m_rootDefaultStyle; + delete m_authorStyle; delete m_userStyle; delete m_userSheet; @@ -307,21 +347,24 @@ void CSSStyleSelector::loadDefaultStyle() defaultPrintStyle = new CSSRuleSet; defaultQuirksStyle = new CSSRuleSet; + MediaQueryEvaluator screenEval("screen"); + MediaQueryEvaluator printEval("print"); + // Strict-mode rules. defaultSheet = parseUASheet(html4UserAgentStyleSheet); - defaultStyle->addRulesFromSheet(defaultSheet, "screen"); - defaultPrintStyle->addRulesFromSheet(defaultSheet, "print"); + defaultStyle->addRulesFromSheet(defaultSheet, &screenEval); + defaultPrintStyle->addRulesFromSheet(defaultSheet, &printEval); #if SVG_SUPPORT // SVG rules. svgSheet = parseUASheet(svgUserAgentStyleSheet); - defaultStyle->addRulesFromSheet(svgSheet, "screen"); - defaultPrintStyle->addRulesFromSheet(svgSheet, "print"); + defaultStyle->addRulesFromSheet(svgSheet, &screenEval); + defaultPrintStyle->addRulesFromSheet(svgSheet, &printEval); #endif // Quirks-mode rules. quirksSheet = parseUASheet(quirksUserAgentStyleSheet); - defaultQuirksStyle->addRulesFromSheet(quirksSheet, "screen"); + defaultQuirksStyle->addRulesFromSheet(quirksSheet, &screenEval); } void CSSStyleSelector::addMatchedRule(CSSRuleData* rule) @@ -700,8 +743,24 @@ RenderStyle* CSSStyleSelector::locateSharedStyle() return 0; } +void CSSStyleSelector::matchUARules(int& firstUARule, int& lastUARule) +{ + // 1. First we match rules from the user agent sheet. + matchRules(defaultStyle, firstUARule, lastUARule); + + // 2. In quirks mode, we match rules from the quirks user agent sheet. + if (!strictParsing) + matchRules(defaultQuirksStyle, firstUARule, lastUARule); + + // 3. If our medium is print, then we match rules from the print sheet. + if (m_medium->mediaTypeMatch("print")) + matchRules(defaultPrintStyle, firstUARule, lastUARule); +} + +// If resolveForRootDefault is true, style based on user agent style sheet only. This is used in media queries, where +// relative units are interpreted according to document root element style, styled only with UA stylesheet -RenderStyle* CSSStyleSelector::styleForElement(Element* e, RenderStyle* defaultParent, bool allowSharing) +RenderStyle* CSSStyleSelector::styleForElement(Element* e, RenderStyle* defaultParent, bool allowSharing, bool resolveForRootDefault) { if (allowSharing && !e->document()->haveStylesheetsLoaded()) { if (!styleNotYetAvailable) { @@ -728,113 +787,102 @@ RenderStyle* CSSStyleSelector::styleForElement(Element* e, RenderStyle* defaultP } initForStyleResolve(e, defaultParent); - style = new (e->document()->renderArena()) RenderStyle(); - style->ref(); + if (resolveForRootDefault) { + style = ::new RenderStyle(); + // don't ref, because we want to delete this, but we cannot unref it + } else { + style = new (e->document()->renderArena()) RenderStyle(); + style->ref(); + } if (parentStyle) style->inheritFrom(parentStyle); else parentStyle = style; - - // 1. First we match rules from the user agent sheet. - int firstUARule = -1, lastUARule = -1; - matchRules(defaultStyle, firstUARule, lastUARule); - - // 2. In quirks mode, we match rules from the quirks user agent sheet. - if (!strictParsing) - matchRules(defaultQuirksStyle, firstUARule, lastUARule); - - // 3. If our medium is print, then we match rules from the print sheet. - if (m_mediaType == "print") - matchRules(defaultPrintStyle, firstUARule, lastUARule); - // 4. Now we check user sheet rules. + int firstUARule = -1, lastUARule = -1; int firstUserRule = -1, lastUserRule = -1; - matchRules(m_userStyle, firstUserRule, lastUserRule); - - // 5. Now check author rules, beginning first with presentational attributes - // mapped from HTML. int firstAuthorRule = -1, lastAuthorRule = -1; - if (styledElement) { - // Ask if the HTML element has mapped attributes. - if (styledElement->hasMappedAttributes()) { - // Walk our attribute list and add in each decl. - const NamedMappedAttrMap* map = styledElement->mappedAttributes(); - for (unsigned i = 0; i < map->length(); i++) { - MappedAttribute* attr = map->attributeItem(i); - if (attr->decl()) { - if (firstAuthorRule == -1) firstAuthorRule = m_matchedDeclCount; - lastAuthorRule = m_matchedDeclCount; - addMatchedDeclaration(attr->decl()); + matchUARules(firstUARule, lastUARule); + + if (!resolveForRootDefault) { + // 4. Now we check user sheet rules. + matchRules(m_userStyle, firstUserRule, lastUserRule); + + // 5. Now check author rules, beginning first with presentational attributes + // mapped from HTML. + if (styledElement) { + // Ask if the HTML element has mapped attributes. + if (styledElement->hasMappedAttributes()) { + // Walk our attribute list and add in each decl. + const NamedMappedAttrMap* map = styledElement->mappedAttributes(); + for (unsigned i = 0; i < map->length(); i++) { + MappedAttribute* attr = map->attributeItem(i); + if (attr->decl()) { + if (firstAuthorRule == -1) firstAuthorRule = m_matchedDeclCount; + lastAuthorRule = m_matchedDeclCount; + addMatchedDeclaration(attr->decl()); + } } } - } - // Now we check additional mapped declarations. - // Tables and table cells share an additional mapped rule that must be applied - // after all attributes, since their mapped style depends on the values of multiple attributes. - CSSMutableStyleDeclaration* attributeDecl = styledElement->additionalAttributeStyleDecl(); - if (attributeDecl) { - if (firstAuthorRule == -1) firstAuthorRule = m_matchedDeclCount; - lastAuthorRule = m_matchedDeclCount; - addMatchedDeclaration(attributeDecl); + // Now we check additional mapped declarations. + // Tables and table cells share an additional mapped rule that must be applied + // after all attributes, since their mapped style depends on the values of multiple attributes. + CSSMutableStyleDeclaration* attributeDecl = styledElement->additionalAttributeStyleDecl(); + if (attributeDecl) { + if (firstAuthorRule == -1) firstAuthorRule = m_matchedDeclCount; + lastAuthorRule = m_matchedDeclCount; + addMatchedDeclaration(attributeDecl); + } } - } - // 6. Check the rules in author sheets next. - matchRules(m_authorStyle, firstAuthorRule, lastAuthorRule); + // 6. Check the rules in author sheets next. + matchRules(m_authorStyle, firstAuthorRule, lastAuthorRule); - // 7. Now check our inline style attribute. - if (styledElement) { - CSSMutableStyleDeclaration* inlineDecl = styledElement->inlineStyleDecl(); - if (inlineDecl) { - if (firstAuthorRule == -1) firstAuthorRule = m_matchedDeclCount; - lastAuthorRule = m_matchedDeclCount; - addMatchedDeclaration(inlineDecl); + // 7. Now check our inline style attribute. + if (styledElement) { + CSSMutableStyleDeclaration* inlineDecl = styledElement->inlineStyleDecl(); + if (inlineDecl) { + if (firstAuthorRule == -1) firstAuthorRule = m_matchedDeclCount; + lastAuthorRule = m_matchedDeclCount; + addMatchedDeclaration(inlineDecl); + } } } - + // Now we have all of the matched rules in the appropriate order. Walk the rules and apply // high-priority properties first, i.e., those properties that other properties depend on. // The order is (1) high-priority not important, (2) high-priority important, (3) normal not important // and (4) normal important. applyDeclarations(true, false, 0, m_matchedDeclCount-1); - applyDeclarations(true, true, firstAuthorRule, lastAuthorRule); - applyDeclarations(true, true, firstUserRule, lastUserRule); + if (!resolveForRootDefault) { + applyDeclarations(true, true, firstAuthorRule, lastAuthorRule); + applyDeclarations(true, true, firstUserRule, lastUserRule); + } applyDeclarations(true, true, firstUARule, lastUARule); // If our font got dirtied, go ahead and update it now. - if (fontDirty) { - checkForTextSizeAdjust(); - checkForGenericFamilyChange(style, parentStyle); - style->font().update(); - fontDirty = false; - } + if (fontDirty) + updateFont(); // Now do the normal priority UA properties. applyDeclarations(false, false, firstUARule, lastUARule); // Cache our border and background so that we can examine them later. - m_hasUAAppearance = style->hasAppearance(); - if (m_hasUAAppearance) { - m_borderData = style->border(); - m_backgroundData = *style->backgroundLayers(); - m_backgroundColor = style->backgroundColor(); - } + cacheBorderAndBackground(); // Now do the author and user normal priority properties and all the !important properties. - applyDeclarations(false, false, lastUARule+1, m_matchedDeclCount-1); - applyDeclarations(false, true, firstAuthorRule, lastAuthorRule); - applyDeclarations(false, true, firstUserRule, lastUserRule); + if (!resolveForRootDefault) { + applyDeclarations(false, false, lastUARule+1, m_matchedDeclCount-1); + applyDeclarations(false, true, firstAuthorRule, lastAuthorRule); + applyDeclarations(false, true, firstUserRule, lastUserRule); + } applyDeclarations(false, true, firstUARule, lastUARule); // If our font got dirtied by one of the non-essential font props, // go ahead and update it a second time. - if (fontDirty) { - checkForTextSizeAdjust(); - checkForGenericFamilyChange(style, parentStyle); - style->font().update(); - fontDirty = false; - } + if (fontDirty) + updateFont(); // Clean up our style object's display and text decorations (among other fixups). adjustRenderStyle(style, e); @@ -883,23 +931,14 @@ RenderStyle* CSSStyleSelector::pseudoStyleForElement(RenderStyle::PseudoId pseud applyDeclarations(true, true, firstUARule, lastUARule); // If our font got dirtied, go ahead and update it now. - if (fontDirty) { - checkForTextSizeAdjust(); - checkForGenericFamilyChange(style, parentStyle); - style->font().update(); - fontDirty = false; - } + if (fontDirty) + updateFont(); // Now do the normal priority properties. applyDeclarations(false, false, firstUARule, lastUARule); // Cache our border and background so that we can examine them later. - m_hasUAAppearance = style->hasAppearance(); - if (m_hasUAAppearance) { - m_borderData = style->border(); - m_backgroundData = *style->backgroundLayers(); - m_backgroundColor = style->backgroundColor(); - } + cacheBorderAndBackground(); applyDeclarations(false, false, lastUARule+1, m_matchedDeclCount-1); applyDeclarations(false, true, firstAuthorRule, lastAuthorRule); @@ -908,13 +947,8 @@ RenderStyle* CSSStyleSelector::pseudoStyleForElement(RenderStyle::PseudoId pseud // If our font got dirtied by one of the non-essential font props, // go ahead and update it a second time. - if (fontDirty) { - checkForTextSizeAdjust(); - checkForGenericFamilyChange(style, parentStyle); - style->font().update(); - fontDirty = false; - } - + if (fontDirty) + updateFont(); // Clean up our style object's display and text decorations (among other fixups). adjustRenderStyle(style, 0); @@ -1038,6 +1072,24 @@ void CSSStyleSelector::adjustRenderStyle(RenderStyle* style, Element *e) view->useSlowRepaints(); } +void CSSStyleSelector::updateFont() +{ + checkForTextSizeAdjust(); + checkForGenericFamilyChange(style, parentStyle); + style->font().update(); + fontDirty = false; +} + +void CSSStyleSelector::cacheBorderAndBackground() +{ + m_hasUAAppearance = style->hasAppearance(); + if (m_hasUAAppearance) { + m_borderData = style->border(); + m_backgroundData = *style->backgroundLayers(); + m_backgroundColor = style->backgroundColor(); + } +} + RefPtr<CSSRuleList> CSSStyleSelector::styleRulesForElement(Element* e, bool authorOnly) { if (!e->document()->haveStylesheetsLoaded()) @@ -1049,17 +1101,9 @@ RefPtr<CSSRuleList> CSSStyleSelector::styleRulesForElement(Element* e, bool auth initForStyleResolve(e, 0); if (!authorOnly) { - // First we match rules from the user agent sheet. int firstUARule = -1, lastUARule = -1; - matchRules(defaultStyle, firstUARule, lastUARule); - - // In quirks mode, we match rules from the quirks user agent sheet. - if (!strictParsing) - matchRules(defaultQuirksStyle, firstUARule, lastUARule); - - // If our medium is print, then we match rules from the print sheet. - if (m_mediaType == "print") - matchRules(defaultPrintStyle, firstUARule, lastUARule); + // First we match rules from the user agent sheet. + matchUARules(firstUARule, lastUARule); // Now we check user sheet rules. int firstUserRule = -1, lastUserRule = -1; @@ -1588,14 +1632,14 @@ void CSSRuleSet::addRule(CSSStyleRule* rule, CSSSelector* sel) m_universalRules->append(m_ruleCount++, rule, sel); } -void CSSRuleSet::addRulesFromSheet(CSSStyleSheet *sheet, const String &medium) +void CSSRuleSet::addRulesFromSheet(CSSStyleSheet* sheet, MediaQueryEvaluator* medium) { if (!sheet || !sheet->isCSSStyleSheet()) return; // No media implies "all", but if a media list exists it must // contain our current medium - if (sheet->media() && !sheet->media()->contains(medium)) + if (sheet->media() && !medium->eval(sheet->media())) return; // the style sheet doesn't apply int len = sheet->length(); @@ -1609,14 +1653,14 @@ void CSSRuleSet::addRulesFromSheet(CSSStyleSheet *sheet, const String &medium) } else if(item->isImportRule()) { CSSImportRule* import = static_cast<CSSImportRule*>(item); - if (!import->media() || import->media()->contains(medium)) + if (!import->media() || medium->eval(import->media())) addRulesFromSheet(import->styleSheet(), medium); } else if(item->isMediaRule()) { CSSMediaRule* r = static_cast<CSSMediaRule*>(item); CSSRuleList* rules = r->cssRules(); - if ((!r->media() || r->media()->contains(medium)) && rules) { + if ((!r->media() || medium->eval(r->media())) && rules) { // Traverse child elements of the @media rule. for (unsigned j = 0; j < rules->length(); j++) { CSSRule *childItem = rules->item(j); diff --git a/third_party/WebKit/WebCore/css/cssstyleselector.h b/third_party/WebKit/WebCore/css/cssstyleselector.h index 3df939e..d46b3ac 100644 --- a/third_party/WebKit/WebCore/css/cssstyleselector.h +++ b/third_party/WebKit/WebCore/css/cssstyleselector.h @@ -44,6 +44,7 @@ class CSSSelector; class CSSStyleRule; class CSSStyleSheet; class CSSValue; +class MediaQueryEvaluator; class Document; class Element; class Frame; @@ -93,7 +94,7 @@ class StyledElement; void initElementAndPseudoState(Element* e); void initForStyleResolve(Element* e, RenderStyle* parentStyle); - RenderStyle *styleForElement(Element*, RenderStyle* parentStyle=0, bool allowSharing=true); + RenderStyle *styleForElement(Element*, RenderStyle* parentStyle=0, bool allowSharing=true, bool resolveForRootDefault=false); RenderStyle* pseudoStyleForElement(RenderStyle::PseudoId, Element*, RenderStyle* parentStyle=0); RenderStyle* locateSharedStyle(); @@ -177,7 +178,11 @@ public: private: void init(); - + + void matchUARules(int& firstUARule, int& lastUARule); + void updateFont(); + void cacheBorderAndBackground(); + void mapBackgroundAttachment(BackgroundLayer* layer, CSSValue* value); void mapBackgroundClip(BackgroundLayer* layer, CSSValue* value); void mapBackgroundOrigin(BackgroundLayer* layer, CSSValue* value); @@ -203,7 +208,8 @@ public: CSSRuleList* m_ruleList; bool m_collectRulesOnly; - String m_mediaType; + MediaQueryEvaluator* m_medium; + RenderStyle* m_rootDefaultStyle; RenderStyle::PseudoId dynamicPseudo; diff --git a/third_party/WebKit/WebCore/css/maketokenizer b/third_party/WebKit/WebCore/css/maketokenizer index 0657d3e..af09587 100644 --- a/third_party/WebKit/WebCore/css/maketokenizer +++ b/third_party/WebKit/WebCore/css/maketokenizer @@ -53,6 +53,15 @@ while (<>) { print; } +# media query, tokenizer state support +while (<>) { + last if /yytext/; +} +while (<>) { + last if not (/define/ || /line/) ; + print; +} + while (<>) { last if /^YY_DECL/; } diff --git a/third_party/WebKit/WebCore/css/tokenizer.flex b/third_party/WebKit/WebCore/css/tokenizer.flex index c61e80a..c0691b8 100644 --- a/third_party/WebKit/WebCore/css/tokenizer.flex +++ b/third_party/WebKit/WebCore/css/tokenizer.flex @@ -1,6 +1,8 @@ %option case-insensitive %option noyywrap %option 8bit +%option stack +%s mediaquery h [0-9a-fA-F] nonascii [\200-\377] @@ -34,6 +36,9 @@ range \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??| "^=" {yyTok = BEGINSWITH; return yyTok;} "$=" {yyTok = ENDSWITH; return yyTok;} "*=" {yyTok = CONTAINS; return yyTok;} +<mediaquery>"not" {yyTok = MEDIA_NOT; return yyTok;} +<mediaquery>"only" {yyTok = MEDIA_ONLY; return yyTok;} +<mediaquery>"and" {yyTok = MEDIA_AND; return yyTok;} {string} {yyTok = STRING; return yyTok;} @@ -41,15 +46,16 @@ range \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??| "#"{name} {yyTok = HASH; return yyTok;} -"@import" {yyTok = IMPORT_SYM; return yyTok;} +"@import" {BEGIN(mediaquery); yyTok = IMPORT_SYM; return yyTok;} "@page" {yyTok = PAGE_SYM; return yyTok;} -"@media" {yyTok = MEDIA_SYM; return yyTok;} +"@media" {BEGIN(mediaquery); yyTok = MEDIA_SYM; return yyTok;} "@font-face" {yyTok = FONT_FACE_SYM; return yyTok;} "@charset" {yyTok = CHARSET_SYM; return yyTok;} "@namespace" {yyTok = NAMESPACE_SYM; return yyTok; } "@-webkit-rule" {yyTok = WEBKIT_RULE_SYM; return yyTok; } "@-webkit-decls" {yyTok = WEBKIT_DECLS_SYM; return yyTok; } "@-webkit-value" {yyTok = WEBKIT_VALUE_SYM; return yyTok; } +"@-webkit-mediaquery" {BEGIN(mediaquery); yyTok = WEBKIT_MEDIAQUERY_SYM; return yyTok; } "!"{w}"important" {yyTok = IMPORTANT_SYM; return yyTok;} @@ -81,6 +87,8 @@ range \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??| U\+{range} {yyTok = UNICODERANGE; return yyTok;} U\+{h}{1,6}-{h}{1,6} {yyTok = UNICODERANGE; return yyTok;} +<mediaquery>"{" | +<mediaquery>";" {BEGIN(INITIAL); yyTok = *yytext; return yyTok; } . {yyTok = *yytext; return yyTok;} %% diff --git a/third_party/WebKit/WebCore/dom/DOMImplementation.cpp b/third_party/WebKit/WebCore/dom/DOMImplementation.cpp index bb1006a..17cfbd3 100644 --- a/third_party/WebKit/WebCore/dom/DOMImplementation.cpp +++ b/third_party/WebKit/WebCore/dom/DOMImplementation.cpp @@ -166,7 +166,7 @@ PassRefPtr<CSSStyleSheet> DOMImplementation::createCSSStyleSheet(const String&, ec = 0; CSSStyleSheet* const nullSheet = 0; RefPtr<CSSStyleSheet> sheet = new CSSStyleSheet(nullSheet); - sheet->setMedia(new MediaList(sheet.get(), media)); + sheet->setMedia(new MediaList(sheet.get(), media, true)); return sheet.release(); } diff --git a/third_party/WebKit/WebCore/html/HTMLLinkElement.cpp b/third_party/WebKit/WebCore/html/HTMLLinkElement.cpp index 051ea0b..c3fe9c6 100644 --- a/third_party/WebKit/WebCore/html/HTMLLinkElement.cpp +++ b/third_party/WebKit/WebCore/html/HTMLLinkElement.cpp @@ -32,6 +32,7 @@ #include "HTMLNames.h" #include "MediaList.h" #include "csshelper.h" +#include "MediaQueryEvaluator.h" namespace WebCore { @@ -168,7 +169,11 @@ void HTMLLinkElement::process() // no need to load style sheets which aren't for the screen output // ### there may be in some situations e.g. for an editor or script to manipulate // also, don't load style sheets for standalone documents - if (m_media.isNull() || m_media.contains("screen") || m_media.contains("all") || m_media.contains("print")) { + MediaQueryEvaluator allEval(true); + MediaQueryEvaluator screenEval("screen", true); + MediaQueryEvaluator printEval("print", true); + RefPtr<MediaList> media = new MediaList((CSSStyleSheet*)0, m_media, true); + if (allEval.eval(media.get()) || screenEval.eval(media.get()) || printEval.eval(media.get())) { // Add ourselves as a pending sheet, but only if we aren't an alternate // stylesheet. Alternate stylesheets don't hold up render tree construction. @@ -211,8 +216,8 @@ void HTMLLinkElement::setStyleSheet(const String& url, const String& sheetStr) m_sheet = new CSSStyleSheet(this, url); m_sheet->parseString(sheetStr, !document()->inCompatMode()); - MediaList* media = new MediaList(m_sheet.get(), m_media); - m_sheet->setMedia(media); + RefPtr<MediaList> media = new MediaList((CSSStyleSheet*)0, m_media, true); + m_sheet->setMedia(media.get()); m_loading = false; diff --git a/third_party/WebKit/WebCore/html/HTMLStyleElement.cpp b/third_party/WebKit/WebCore/html/HTMLStyleElement.cpp index 92a4e0c..fee08d55 100644 --- a/third_party/WebKit/WebCore/html/HTMLStyleElement.cpp +++ b/third_party/WebKit/WebCore/html/HTMLStyleElement.cpp @@ -27,6 +27,7 @@ #include "Document.h" #include "HTMLNames.h" #include "MediaList.h" +#include "MediaQueryEvaluator.h" namespace WebCore { @@ -83,15 +84,18 @@ void HTMLStyleElement::childrenChanged() } m_loading = false; - if ((m_type.isEmpty() || m_type == "text/css") // Type must be empty or CSS - && (m_media.isNull() || m_media.contains("screen") || m_media.contains("all") || m_media.contains("print"))) { - document()->addPendingSheet(); - m_loading = true; - m_sheet = new CSSStyleSheet(this); - m_sheet->parseString(text, !document()->inCompatMode()); - MediaList* media = new MediaList(m_sheet.get(), m_media); - m_sheet->setMedia(media); - m_loading = false; + if (m_type.isEmpty() || m_type == "text/css") { // Type must be empty or CSS + RefPtr<MediaList> media = new MediaList((CSSStyleSheet*)0, m_media, true); + MediaQueryEvaluator screenEval("screen", true); + MediaQueryEvaluator printEval("print", true); + if (screenEval.eval(media.get()) || printEval.eval(media.get())) { + document()->addPendingSheet(); + m_loading = true; + m_sheet = new CSSStyleSheet(this); + m_sheet->parseString(text, !document()->inCompatMode()); + m_sheet->setMedia(media.get()); + m_loading = false; + } } if (!isLoading() && m_sheet) diff --git a/third_party/WebKit/WebCore/ksvg2/svg/SVGDOMImplementation.cpp b/third_party/WebKit/WebCore/ksvg2/svg/SVGDOMImplementation.cpp index fdbe818..5e92c6a 100644 --- a/third_party/WebKit/WebCore/ksvg2/svg/SVGDOMImplementation.cpp +++ b/third_party/WebKit/WebCore/ksvg2/svg/SVGDOMImplementation.cpp @@ -191,7 +191,10 @@ PassRefPtr<CSSStyleSheet> SVGDOMImplementation::createCSSStyleSheet(StringImpl * CSSStyleSheet *parent = 0; RefPtr<CSSStyleSheet> sheet = new CSSStyleSheet(parent); //sheet->setTitle(title); - sheet->setMedia(new MediaList(sheet.get(), media)); + // http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-DOMImplementationCSS says + // that media descriptors should be used, even though svg:style has only + // css media types. Hence the third parameter (true). + sheet->setMedia(new MediaList(sheet.get(), media, true)); return sheet.release(); } diff --git a/third_party/WebKit/WebCore/ksvg2/svg/SVGStyleElement.cpp b/third_party/WebKit/WebCore/ksvg2/svg/SVGStyleElement.cpp index a4a7f00..7d134d9 100644 --- a/third_party/WebKit/WebCore/ksvg2/svg/SVGStyleElement.cpp +++ b/third_party/WebKit/WebCore/ksvg2/svg/SVGStyleElement.cpp @@ -30,6 +30,7 @@ #include "Document.h" #include "ExceptionCode.h" #include "MediaList.h" +#include "MediaQueryEvaluator.h" #include "PlatformString.h" namespace WebCore { @@ -96,17 +97,18 @@ void SVGStyleElement::childrenChanged() m_sheet = 0; m_loading = false; - const AtomicString& _media = media(); - if ((type().isEmpty() || type() == "text/css") && (_media.isNull() || _media.contains("screen") || _media.contains("all") || _media.contains("print"))) { + MediaQueryEvaluator screenEval("screen", true); + MediaQueryEvaluator printEval("print", true); + RefPtr<MediaList> mediaList = new MediaList((CSSStyleSheet*)0, media()); + if ((type().isEmpty() || type() == "text/css") && (screenEval.eval(mediaList.get()) || printEval.eval(mediaList.get()))) { ownerDocument()->addPendingSheet(); m_loading = true; m_sheet = new CSSStyleSheet(this); m_sheet->parseString(textContent()); // SVG css is always parsed in strict mode - - MediaList* mediaList = new MediaList(m_sheet.get(), _media); - m_sheet->setMedia(mediaList); + + m_sheet->setMedia(mediaList.get()); m_loading = false; } diff --git a/third_party/WebKit/WebCore/page/Frame.cpp b/third_party/WebKit/WebCore/page/Frame.cpp index b7b169d..aa13323 100644 --- a/third_party/WebKit/WebCore/page/Frame.cpp +++ b/third_party/WebKit/WebCore/page/Frame.cpp @@ -50,6 +50,7 @@ #include "HTMLFrameElement.h" #include "HTMLGenericFormElement.h" #include "HTMLNames.h" +#include "MediaFeatureNames.h" #include "HTMLObjectElement.h" #include "ImageDocument.h" #include "MouseEventWithHitTestResults.h" @@ -151,6 +152,7 @@ Frame::Frame(Page* page, RenderPart* ownerRenderer) EventNames::init(); HTMLNames::init(); QualifiedName::init(); + MediaFeatureNames::init(); #if SVG_SUPPORT SVGNames::init(); diff --git a/third_party/WebKit/WebCore/platform/Screen.h b/third_party/WebKit/WebCore/platform/Screen.h index 3adb800..e9d1433 100644 --- a/third_party/WebKit/WebCore/platform/Screen.h +++ b/third_party/WebKit/WebCore/platform/Screen.h @@ -32,6 +32,8 @@ namespace WebCore { class Widget; int screenDepth(Widget*); + int screenDepthPerComponent(Widget*); + bool screenIsMonochrome(Widget*); FloatRect screenRect(Widget*); FloatRect usableScreenRect(Widget*); diff --git a/third_party/WebKit/WebCore/platform/mac/ScreenMac.mm b/third_party/WebKit/WebCore/platform/mac/ScreenMac.mm index 35dd382..4cdeca6 100644 --- a/third_party/WebKit/WebCore/platform/mac/ScreenMac.mm +++ b/third_party/WebKit/WebCore/platform/mac/ScreenMac.mm @@ -86,6 +86,22 @@ int screenDepth(Widget* widget) return NSBitsPerPixelFromDepth([screen(widget) depth]); } +int screenDepthPerComponent(Widget* widget) +{ + return NSBitsPerSampleFromDepth([screen(widget) depth]); +} + +bool screenIsMonochrome(Widget* widget) +{ + NSScreen* s = screen(widget); + NSDictionary* dd = [s deviceDescription]; + NSString* colorSpaceName = [dd objectForKey:NSDeviceColorSpaceName]; + return colorSpaceName == NSCalibratedWhiteColorSpace + || colorSpaceName == NSCalibratedBlackColorSpace + || colorSpaceName == NSDeviceWhiteColorSpace + || colorSpaceName == NSDeviceBlackColorSpace; +} + // These methods scale between window and WebView coordinates because JavaScript/DOM operations // assume that the WebView and the window share the same coordinate system. |