Commit db0dd431 authored by luiz@webkit.org's avatar luiz@webkit.org

2010-10-21 Luiz Agostini <luiz.agostini@openbossa.org>

        Reviewed by Darin Adler.

        Implement CSSOM View matchMedia interface
        https://bugs.webkit.org/show_bug.cgi?id=37205

        New property matchMedia was added to window.

        * fast/dom/Window/window-properties-expected.txt:
        * fast/dom/Window/window-property-descriptors-expected.txt:

        window.matchMedia and MediaQueryList tests.

        * fast/media/media-query-list-01-expected.txt: Added.
        * fast/media/media-query-list-01.html: Added.

        The following tests depend on LayoutTestController::setViewModeMediaFeature() to work.
        As it is only implemented by Qt and Gtk the tests needed to be skipped in all other platforms.

        * fast/media/media-query-list-02-expected.txt: Added.
        * fast/media/media-query-list-02.html: Added.
        * fast/media/media-query-list-03-expected.txt: Added.
        * fast/media/media-query-list-03.html: Added.
        * fast/media/media-query-list-04-expected.txt: Added.
        * fast/media/media-query-list-04.html: Added.
        * fast/media/media-query-list-05-expected.txt: Added.
        * fast/media/media-query-list-05.html: Added.
        * fast/media/media-query-list-06-expected.txt: Added.
        * fast/media/media-query-list-06.html: Added.
        * fast/media/media-query-list-07-expected.txt: Added.
        * fast/media/media-query-list-07.html: Added.
        * platform/chromium/test_expectations.txt:
        * platform/mac/Skipped:
        * platform/win/Skipped:
2010-10-21  Luiz Agostini  <luiz.agostini@openbossa.org>

        Reviewed by Darin Adler.

        Implement CSSOM View matchMedia interface
        https://bugs.webkit.org/show_bug.cgi?id=37205

        New interfaces may be used to evaluate media queries and to associate listeners
        to media queries. Those listeners are called whenever the associated query changes.
        Specification may be found at http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface

        operator== added to JS version of ScriptValue.
        Method isFunction added to JS and V8 versions of ScriptValue.

        * bindings/js/ScriptValue.cpp:
        (WebCore::ScriptValue::isFunction):
        * bindings/js/ScriptValue.h:
        (WebCore::ScriptValue::operator==):
        * bindings/v8/ScriptValue.h:
        (WebCore::ScriptValue::isFunction):

        Some changes were needed to the code generators to handle type MediaQueryListListener.

        * bindings/scripts/CodeGeneratorGObject.pm:
        * bindings/scripts/CodeGeneratorJS.pm:
        * bindings/scripts/CodeGeneratorV8.pm:

        Some changes to the bindings test results that were previously added.

        * bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.cpp:
        * bindings/scripts/test/GObject/WebKitDOMTestMediaQueryListListener.h:
        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
        (WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod):
        * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp:
        (WebCore::TestMediaQueryListListenerInternal::methodCallback):
        (WebCore::ConfigureV8TestMediaQueryListListenerTemplate):

        New interfaces:

        * css/MediaQueryList.cpp: Added.
        * css/MediaQueryList.h: Added.
        * css/MediaQueryList.idl: Added.

        * css/MediaQueryListListener.cpp: Added.
        * css/MediaQueryListListener.h: Added.
        * css/MediaQueryListListener.idl: Added.

        To avoid adding code to classes DOMWindow and Document a new class MediaQueryMatcher was created.

        * css/MediaQueryMatcher.cpp: Added.
        * css/MediaQueryMatcher.h: Added.

        Document and DOMWindow have changed to support new features. DOMWindow is the class that
        publishes methods matchMedia but for page cache to work properly the reference to the
        MediaQueryMatcher must be in Document.

        * dom/Document.cpp:
        (WebCore::Document::~Document):
        (WebCore::Document::mediaQueryMatcher):
        (WebCore::Document::styleSelectorChanged):
        * dom/Document.h:
        * page/DOMWindow.cpp:
        (WebCore::DOMWindow::matchMedia):
        * page/DOMWindow.h:
        * page/DOMWindow.idl:

        Build systems

        * CMakeLists.txt:
        * DerivedSources.make:
        * GNUmakefile.am:
        * WebCore.gypi:
        * WebCore.pri:
        * WebCore.pro:
        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * bindings/gobject/GNUmakefile.am:

        Tests: fast/media/media-query-list-01.html
               fast/media/media-query-list-02.html
               fast/media/media-query-list-03.html
               fast/media/media-query-list-04.html
               fast/media/media-query-list-05.html
               fast/media/media-query-list-06.html
               fast/media/media-query-list-07.html

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72552 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 5024ba46
2010-10-21 Luiz Agostini <luiz.agostini@openbossa.org>
Reviewed by Darin Adler.
Implement CSSOM View matchMedia interface
https://bugs.webkit.org/show_bug.cgi?id=37205
New property matchMedia was added to window.
* fast/dom/Window/window-properties-expected.txt:
* fast/dom/Window/window-property-descriptors-expected.txt:
window.matchMedia and MediaQueryList tests.
* fast/media/media-query-list-01-expected.txt: Added.
* fast/media/media-query-list-01.html: Added.
The following tests depend on LayoutTestController::setViewModeMediaFeature() to work.
As it is only implemented by Qt and Gtk the tests needed to be skipped in all other platforms.
* fast/media/media-query-list-02-expected.txt: Added.
* fast/media/media-query-list-02.html: Added.
* fast/media/media-query-list-03-expected.txt: Added.
* fast/media/media-query-list-03.html: Added.
* fast/media/media-query-list-04-expected.txt: Added.
* fast/media/media-query-list-04.html: Added.
* fast/media/media-query-list-05-expected.txt: Added.
* fast/media/media-query-list-05.html: Added.
* fast/media/media-query-list-06-expected.txt: Added.
* fast/media/media-query-list-06.html: Added.
* fast/media/media-query-list-07-expected.txt: Added.
* fast/media/media-query-list-07.html: Added.
* platform/chromium/test_expectations.txt:
* platform/mac/Skipped:
* platform/win/Skipped:
2010-11-22 Ryosuke Niwa <rniwa@webkit.org>
Unreviewed update of Windows Skipped list.
......@@ -2281,6 +2281,7 @@ window.locationbar.visible [boolean]
window.log [function]
window.logProperties [function]
window.logValue [function]
window.matchMedia [function]
window.menubar [object BarInfo]
window.menubar.visible [boolean]
window.moveBy [function]
......
......@@ -507,6 +507,7 @@ PASS Object.getOwnPropertyDescriptor(window, 'getMatchedCSSRules') is undefined.
PASS Object.getOwnPropertyDescriptor(window, 'getSelection') is undefined.
PASS Object.getOwnPropertyDescriptor(window, 'hasOwnProperty') is undefined.
PASS Object.getOwnPropertyDescriptor(window, 'isPrototypeOf') is undefined.
PASS Object.getOwnPropertyDescriptor(window, 'matchMedia') is undefined.
PASS Object.getOwnPropertyDescriptor(window, 'moveBy') is undefined.
PASS Object.getOwnPropertyDescriptor(window, 'moveTo') is undefined.
PASS Object.getOwnPropertyDescriptor(window, 'open') is undefined.
......
Test the MediaQueryList interface: http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface.
"screen" evaluates to true: PASS
"projection" evaluates to false: PASS
"all and (color)" evaluates to true: PASS
"not projection and (color)" evaluates to true: PASS
"(color)" evaluates to true: PASS
"(color" evaluates to false: PASS
"color" evaluates to false: PASS
"garbage" evaluates to false: PASS
"(min-device-width: 100px)" evaluates to true: PASS
"(min-device-width: 50000px)" evaluates to false: PASS
"(-webkit-animation: 1)" evaluates to true: PASS
"(-webkit-transform-2d)" evaluates to true: PASS
<html>
<head>
<title>Test CSSOM View module: MediaQueryList interface</title>
<style type="text/css">
</style>
<script type="text/javascript" charset="utf-8">
if (window.layoutTestController)
layoutTestController.dumpAsText();
function log(m)
{
var results = document.getElementById('results');
results.innerHTML += m + '<br>';
}
function testQuery(query, expected)
{
var isTrue = window.matchMedia(query).matches;
var message = '\"' + query + '\" evaluates to ' + (isTrue ? 'true' : 'false');
message += (isTrue == expected) ? ': PASS' : ': FAIL';
log(message);
}
function runTests()
{
testQuery('screen', true);
testQuery('projection', false);
testQuery('all and (color)', true);
testQuery('not projection and (color)', true);
testQuery('(color)', true);
testQuery('(color', false);
testQuery('color', false);
testQuery('garbage', false);
testQuery('(min-device-width: 100px)', true);
testQuery('(min-device-width: 50000px)', false);
testQuery('(-webkit-animation: 1)', true);
testQuery('(-webkit-transform-2d)', true);
}
</script>
</head>
<body onload="runTests()">
<p>Test the MediaQueryList interface: <a href="http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface" title="CSSOM View Module">http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface</a>.</p>
<div id="results">
</div>
</body>
</html>
Test the MediaQueryList interface: http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface.
Testing addListener in different MediaQueryList objects and the callback call sequence
------------- minimized -------------
[1] - query (-webkit-view-mode: windowed) changed to false
[1] - query (-webkit-view-mode: minimized) changed to true
[2] - query (-webkit-view-mode: windowed) changed to false
[2] - query (-webkit-view-mode: minimized) changed to true
------------- maximized -------------
[1] - query (-webkit-view-mode: minimized) changed to false
[1] - query (-webkit-view-mode: maximized) changed to true
[2] - query (-webkit-view-mode: minimized) changed to false
[2] - query (-webkit-view-mode: maximized) changed to true
------------- windowed -------------
[1] - query (-webkit-view-mode: windowed) changed to true
[1] - query (-webkit-view-mode: maximized) changed to false
[2] - query (-webkit-view-mode: windowed) changed to true
[2] - query (-webkit-view-mode: maximized) changed to false
------------- floating -------------
[1] - query (-webkit-view-mode: windowed) changed to false
[1] - query (-webkit-view-mode: floating) changed to true
[2] - query (-webkit-view-mode: windowed) changed to false
[2] - query (-webkit-view-mode: floating) changed to true
<html>
<head>
<title>Test CSSOM View module: MediaQueryList interface</title>
<style type="text/css">
</style>
<script type="text/javascript" charset="utf-8">
if (window.layoutTestController)
layoutTestController.dumpAsText();
function log(m) {
document.getElementById('results').innerHTML += m + '<br>';
}
function callback1(query) {
log("[1] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function callback2(query) {
log("[2] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function runTests()
{
if (!window.layoutTestController)
return;
layoutTestController.setViewModeMediaFeature("windowed");
windowedQuery = window.matchMedia("(-webkit-view-mode: windowed)");
floatingQuery = window.matchMedia("(-webkit-view-mode: floating)");
minimizedQuery = window.matchMedia("(-webkit-view-mode: minimized)");
maximizedQuery = window.matchMedia("(-webkit-view-mode: maximized)");
windowedQuery.addListener(callback1);
floatingQuery.addListener(callback1);
minimizedQuery.addListener(callback1);
maximizedQuery.addListener(callback1);
windowedQuery.addListener(callback2);
floatingQuery.addListener(callback2);
minimizedQuery.addListener(callback2);
maximizedQuery.addListener(callback2);
log("------------- minimized -------------");
layoutTestController.setViewModeMediaFeature("minimized");
log("------------- maximized -------------");
layoutTestController.setViewModeMediaFeature("maximized");
log("------------- windowed -------------");
layoutTestController.setViewModeMediaFeature("windowed");
log("------------- floating -------------");
layoutTestController.setViewModeMediaFeature("floating");
}
</script>
</head>
<body onload="runTests()">
<p>Test the MediaQueryList interface: <a href="http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface" title="CSSOM View Module">http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface</a>.</p>
<p>Testing addListener in different MediaQueryList objects and the callback call sequence</p>
<div id="results">
</div>
</body>
</html>
Test the MediaQueryList interface: http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface.
Testing removeListener in different MediaQueryList objects and the callback call sequence
adding windowed[1], minimized[1], windowed[2] and minimized[2]
------------- minimized -------------
[1] - query (-webkit-view-mode: windowed) changed to false
[1] - query (-webkit-view-mode: minimized) changed to true
[2] - query (-webkit-view-mode: windowed) changed to false
[2] - query (-webkit-view-mode: minimized) changed to true
------------- windowed -------------
[1] - query (-webkit-view-mode: windowed) changed to true
[1] - query (-webkit-view-mode: minimized) changed to false
[2] - query (-webkit-view-mode: windowed) changed to true
[2] - query (-webkit-view-mode: minimized) changed to false
removing windowed[1] and minimized[2]
------------- minimized -------------
[1] - query (-webkit-view-mode: minimized) changed to true
[2] - query (-webkit-view-mode: windowed) changed to false
------------- windowed -------------
[1] - query (-webkit-view-mode: minimized) changed to false
[2] - query (-webkit-view-mode: windowed) changed to true
adding windowed[1] and minimized[2]
------------- minimized -------------
[1] - query (-webkit-view-mode: minimized) changed to true
[2] - query (-webkit-view-mode: windowed) changed to false
[1] - query (-webkit-view-mode: windowed) changed to false
[2] - query (-webkit-view-mode: minimized) changed to true
------------- windowed -------------
[1] - query (-webkit-view-mode: minimized) changed to false
[2] - query (-webkit-view-mode: windowed) changed to true
[1] - query (-webkit-view-mode: windowed) changed to true
[2] - query (-webkit-view-mode: minimized) changed to false
<html>
<head>
<title>Test CSSOM View module: MediaQueryList interface</title>
<style type="text/css">
</style>
<script type="text/javascript" charset="utf-8">
if (window.layoutTestController)
layoutTestController.dumpAsText();
function log(m) {
document.getElementById('results').innerHTML += m + '<br>';
}
function callback1(query) {
log("[1] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function callback2(query) {
log("[2] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function runTests()
{
if (!window.layoutTestController)
return;
layoutTestController.setViewModeMediaFeature("windowed");
windowedQuery = window.matchMedia("(-webkit-view-mode: windowed)");
minimizedQuery = window.matchMedia("(-webkit-view-mode: minimized)");
log("adding windowed[1], minimized[1], windowed[2] and minimized[2]<br>");
windowedQuery.addListener(callback1);
minimizedQuery.addListener(callback1);
windowedQuery.addListener(callback2);
minimizedQuery.addListener(callback2);
log("------------- minimized -------------");
layoutTestController.setViewModeMediaFeature("minimized");
log("------------- windowed -------------");
layoutTestController.setViewModeMediaFeature("windowed");
log("<br><br>removing windowed[1] and minimized[2]<br>");
windowedQuery.removeListener(callback1);
minimizedQuery.removeListener(callback2);
log("------------- minimized -------------");
layoutTestController.setViewModeMediaFeature("minimized");
log("------------- windowed -------------");
layoutTestController.setViewModeMediaFeature("windowed");
log("<br><br>adding windowed[1] and minimized[2]<br>");
windowedQuery.addListener(callback1);
minimizedQuery.addListener(callback2);
log("------------- minimized -------------");
layoutTestController.setViewModeMediaFeature("minimized");
log("------------- windowed -------------");
layoutTestController.setViewModeMediaFeature("windowed");
}
</script>
</head>
<body onload="runTests()">
<p>Test the MediaQueryList interface: <a href="http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface" title="CSSOM View Module">http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface</a>.</p>
<p>Testing removeListener in different MediaQueryList objects and the callback call sequence</p>
<div id="results">
</div>
</body>
</html>
Test the MediaQueryList interface: http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface.
Testing page cache
------------- minimized -------------
[1] - query (-webkit-view-mode: windowed) changed to false
[1] - query (-webkit-view-mode: minimized) changed to true
[2] - query (-webkit-view-mode: windowed) changed to false
[2] - query (-webkit-view-mode: minimized) changed to true
------------- maximized -------------
[1] - query (-webkit-view-mode: minimized) changed to false
[1] - query (-webkit-view-mode: maximized) changed to true
[2] - query (-webkit-view-mode: minimized) changed to false
[2] - query (-webkit-view-mode: maximized) changed to true
------------- windowed -------------
[1] - query (-webkit-view-mode: windowed) changed to true
[1] - query (-webkit-view-mode: maximized) changed to false
[2] - query (-webkit-view-mode: windowed) changed to true
[2] - query (-webkit-view-mode: maximized) changed to false
------------- floating -------------
[1] - query (-webkit-view-mode: windowed) changed to false
[1] - query (-webkit-view-mode: floating) changed to true
[2] - query (-webkit-view-mode: windowed) changed to false
[2] - query (-webkit-view-mode: floating) changed to true
<html>
<head>
<title>Test CSSOM View module: MediaQueryList interface</title>
<script type="text/javascript" charset="utf-8">
if (window.layoutTestController) {
layoutTestController.dumpAsText();
layoutTestController.waitUntilDone();
layoutTestController.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
}
function log(m) {
document.getElementById('results').innerHTML += m + '<br>';
}
function callback1(query) {
log("[1] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function callback2(query) {
log("[2] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function pageshow(evt)
{
if (!evt.persisted) {
// this will run only when the page is loaded for the first time.
windowedQuery = window.matchMedia("(-webkit-view-mode: windowed)");
floatingQuery = window.matchMedia("(-webkit-view-mode: floating)");
minimizedQuery = window.matchMedia("(-webkit-view-mode: minimized)");
maximizedQuery = window.matchMedia("(-webkit-view-mode: maximized)");
windowedQuery.addListener(callback1);
floatingQuery.addListener(callback1);
minimizedQuery.addListener(callback1);
maximizedQuery.addListener(callback1);
windowedQuery.addListener(callback2);
floatingQuery.addListener(callback2);
minimizedQuery.addListener(callback2);
maximizedQuery.addListener(callback2);
setTimeout('window.location = "data:text/html,<script>history.back()<" + "/script>"', 0);
} else {
// if this point is reached the page is comming from the page cache.
log("------------- minimized -------------");
layoutTestController.setViewModeMediaFeature("minimized");
log("------------- maximized -------------");
layoutTestController.setViewModeMediaFeature("maximized");
log("------------- windowed -------------");
layoutTestController.setViewModeMediaFeature("windowed");
log("------------- floating -------------");
layoutTestController.setViewModeMediaFeature("floating");
setTimeout(function() { if (window.layoutTestController) layoutTestController.notifyDone(); }, 0);
}
}
if (window.layoutTestController) {
layoutTestController.setViewModeMediaFeature("windowed");
window.onpageshow = pageshow;
}
</script>
</head>
<body>
<p>Test the MediaQueryList interface: <a href="http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface" title="CSSOM View Module">http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface</a>.</p>
<p>Testing page cache</p>
<div id="results"></div>
</body>
</html>
Test the MediaQueryList interface: http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface.
Testing listener comparison. Two callbacks are expected.
[1] - query (-webkit-view-mode: windowed) changed to false
[2] - query (-webkit-view-mode: windowed) changed to false
<html>
<head>
<title>Test CSSOM View module: MediaQueryList interface</title>
<style type="text/css">
</style>
<script type="text/javascript" charset="utf-8">
if (window.layoutTestController)
layoutTestController.dumpAsText();
function log(m) {
document.getElementById('results').innerHTML += m + '<br>';
}
function callback1(query) {
log("[1] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function callback2(query) {
log("[2] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function runTests()
{
if (!window.layoutTestController)
return;
layoutTestController.setViewModeMediaFeature("windowed");
var query = window.matchMedia("(-webkit-view-mode: windowed)");
query.addListener(callback1);
query.addListener(callback1);
query.addListener(callback2);
layoutTestController.setViewModeMediaFeature("minimized");
}
</script>
</head>
<body onload="runTests()">
<p>Test the MediaQueryList interface: <a href="http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface" title="CSSOM View Module">http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface</a>.</p>
<p>Testing listener comparison. Two callbacks are expected.</p>
<div id="results">
</div>
</body>
</html>
Test the MediaQueryList interface: http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface.
Testing queries that have no registered listener.
Query result before changing view-mode: true
Query result after changing view-mode: false
<html>
<head>
<title>Test CSSOM View module: MediaQueryList interface</title>
<style type="text/css">
</style>
<script type="text/javascript" charset="utf-8">
if (window.layoutTestController)
layoutTestController.dumpAsText();
function log(m) {
document.getElementById('results').innerHTML += m + '<br>';
}
function runTests()
{
if (!window.layoutTestController)
return;
layoutTestController.setViewModeMediaFeature("windowed");
var query = window.matchMedia("(-webkit-view-mode: windowed)");
log('Query result before changing view-mode: ' + query.matches);
layoutTestController.setViewModeMediaFeature("minimized");
log('Query result after changing view-mode: ' + query.matches);
}
</script>
</head>
<body onload="runTests()">
<p>Test the MediaQueryList interface: <a href="http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface" title="CSSOM View Module">http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface</a>.</p>
<p>Testing queries that have no registered listener.</p>
<div id="results">
</div>
</body>
</html>
Test the MediaQueryList interface: http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface.
Invalid listeners. Two callbacks are expected.
[1] - query (-webkit-view-mode: windowed) changed to false
[2] - query (-webkit-view-mode: windowed) changed to false
<html>
<head>
<title>Test CSSOM View module: MediaQueryList interface</title>
<style type="text/css">
</style>
<script type="text/javascript" charset="utf-8">
if (window.layoutTestController)
layoutTestController.dumpAsText();
function log(m) {
document.getElementById('results').innerHTML += m + '<br>';
}
function callback1(query) {
log("[1] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function callback2(query) {
log("[2] - query " + query.media + " changed to " + (query.matches ? "true" : "false"));
}
function runTests()
{
if (!window.layoutTestController)
return;
layoutTestController.setViewModeMediaFeature("windowed");
var query = window.matchMedia("(-webkit-view-mode: windowed)");
query.addListener(callback1);
query.addListener(5);
query.addListener('cinco');
query.addListener([1,2]);
query.addListener(callback2);
layoutTestController.setViewModeMediaFeature("minimized");
}
</script>
</head>
<body onload="runTests()">
<p>Test the MediaQueryList interface: <a href="http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface" title="CSSOM View Module">http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface</a>.</p>
<p>Invalid listeners. Two callbacks are expected.</p>
<div id="results">
</div>
</body>
</html>
......@@ -2252,8 +2252,14 @@ BUG38578 : plugins/override-node-method.html = TEXT
// Needs layoutTestController.setMediaType() (implemented on Qt only)
BUG38656 : fast/media/print-restores-previous-mediatype.html = TEXT
// Needs layoutTestController.setViewModeMediaFeature() (implemented on Qt only)
// Needs layoutTestController.setViewModeMediaFeature()