Title: [114285] trunk
Revision
114285
Author
an...@apple.com
Date
2012-04-16 11:45:29 -0700 (Mon, 16 Apr 2012)

Log Message

matchMedia() MediaQueryList not updating
https://bugs.webkit.org/show_bug.cgi?id=75903

Patch by Luiz Agostini <luiz.agost...@palm.com> on 2012-04-16
Reviewed by Antti Koivisto.

Source/WebCore: 

Test: fast/media/media-query-list-08.html

Viewport related MediaQueryList listeners were not triggered and the value
of matches were not updated if the document's style selector were not
affected by viewport changes.

The new method evaluateMediaQueries() is now called by FrameView instead of
styleSelectorChanged() if the style selector is not affected by viewport changes.

* dom/Document.cpp:
(WebCore::Document::evaluateMediaQueries):
(WebCore):
(WebCore::Document::styleSelectorChanged):
* dom/Document.h:
(Document):
* page/FrameView.cpp:
(WebCore::FrameView::layout):

LayoutTests: 

Testing MediaQueryLists listeners related to viewport changes.

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

Skipping the new test in Qt due to an issue in its DumpRenderTree.

* platform/qt/Skipped:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (114284 => 114285)


--- trunk/LayoutTests/ChangeLog	2012-04-16 18:41:37 UTC (rev 114284)
+++ trunk/LayoutTests/ChangeLog	2012-04-16 18:45:29 UTC (rev 114285)
@@ -1,3 +1,19 @@
+2012-04-16  Luiz Agostini  <luiz.agost...@palm.com>
+
+        matchMedia() MediaQueryList not updating
+        https://bugs.webkit.org/show_bug.cgi?id=75903
+
+        Reviewed by Antti Koivisto.
+
+        Testing MediaQueryLists listeners related to viewport changes.
+
+        * fast/media/media-query-list-08-expected.txt: Added.
+        * fast/media/media-query-list-08.html: Added.
+
+        Skipping the new test in Qt due to an issue in its DumpRenderTree.
+
+        * platform/qt/Skipped:
+
 2012-04-13  Simon Fraser  <simon.fra...@apple.com>
 
         Avoid using backing store for compositing layers that just need to clip

Added: trunk/LayoutTests/fast/media/media-query-list-08-expected.txt (0 => 114285)


--- trunk/LayoutTests/fast/media/media-query-list-08-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/media/media-query-list-08-expected.txt	2012-04-16 18:45:29 UTC (rev 114285)
@@ -0,0 +1,6 @@
+Test the MediaQueryList interface: http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface.
+
+Testing viewport related callbacks
+
+PASS
+

Added: trunk/LayoutTests/fast/media/media-query-list-08.html (0 => 114285)


--- trunk/LayoutTests/fast/media/media-query-list-08.html	                        (rev 0)
+++ trunk/LayoutTests/fast/media/media-query-list-08.html	2012-04-16 18:45:29 UTC (rev 114285)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<title>Test CSSOM View module: MediaQueryList interface</title>
+<script type="text/_javascript_" charset="utf-8">
+    if (window.layoutTestController) {
+        layoutTestController.dumpAsText();
+        layoutTestController.waitUntilDone();
+    }
+
+    function log(m) {
+        document.getElementById('results').innerHTML += m + '<br>';
+    }
+
+    function callback(query) {
+        log("PASS");
+        if (window.layoutTestController)
+            layoutTestController.notifyDone();
+    }
+
+    function runTests()
+    {
+        window.matchMedia("(max-width: 250px)").addListener(callback);
+        window.resizeTo(200, 300);
+    }
+
+</script>
+</head>
+<body _onload_="runTests()">
+    <p>Test the MediaQueryList interface: <a href="" title="CSSOM View Module">http://dev.w3.org/csswg/cssom-view/#the-mediaquerylist-interface</a>.</p>
+    <p>Testing viewport related callbacks</p>
+    <div id="results">
+    </div>
+</body>
+</html>

Modified: trunk/LayoutTests/platform/qt/Skipped (114284 => 114285)


--- trunk/LayoutTests/platform/qt/Skipped	2012-04-16 18:41:37 UTC (rev 114284)
+++ trunk/LayoutTests/platform/qt/Skipped	2012-04-16 18:45:29 UTC (rev 114285)
@@ -1108,6 +1108,9 @@
 fast/canvas/2d.backingStorePixelRatio.html
 fast/canvas/2d.imageDataHD.html
 
+# window.resizeTo() does not trigger a relayout in our DumpRenderTree
+fast/media/media-query-list-08.html
+
 # This requires didClearWindowObjectForFrameInIsolatedWorld foo in FrameLoaderClient
 http/tests/security/isolatedWorld/didClearWindowObject.html
 # This needs more investigation

Modified: trunk/Source/WebCore/ChangeLog (114284 => 114285)


--- trunk/Source/WebCore/ChangeLog	2012-04-16 18:41:37 UTC (rev 114284)
+++ trunk/Source/WebCore/ChangeLog	2012-04-16 18:45:29 UTC (rev 114285)
@@ -1,3 +1,28 @@
+2012-04-16  Luiz Agostini  <luiz.agost...@palm.com>
+
+        matchMedia() MediaQueryList not updating
+        https://bugs.webkit.org/show_bug.cgi?id=75903
+
+        Reviewed by Antti Koivisto.
+
+        Test: fast/media/media-query-list-08.html
+
+        Viewport related MediaQueryList listeners were not triggered and the value
+        of matches were not updated if the document's style selector were not
+        affected by viewport changes.
+
+        The new method evaluateMediaQueries() is now called by FrameView instead of
+        styleSelectorChanged() if the style selector is not affected by viewport changes.
+
+        * dom/Document.cpp:
+        (WebCore::Document::evaluateMediaQueries):
+        (WebCore):
+        (WebCore::Document::styleSelectorChanged):
+        * dom/Document.h:
+        (Document):
+        * page/FrameView.cpp:
+        (WebCore::FrameView::layout):
+
 2012-04-16  James Robinson  <jam...@chromium.org>
 
         [chromium] Delete uncalled unreserveContentsTextures function

Modified: trunk/Source/WebCore/dom/Document.cpp (114284 => 114285)


--- trunk/Source/WebCore/dom/Document.cpp	2012-04-16 18:41:37 UTC (rev 114284)
+++ trunk/Source/WebCore/dom/Document.cpp	2012-04-16 18:45:29 UTC (rev 114285)
@@ -3145,6 +3145,12 @@
         view()->scrollToFragment(m_url);
 }
 
+void Document::evaluateMediaQueryList()
+{
+    if (m_mediaQueryMatcher)
+        m_mediaQueryMatcher->styleSelectorChanged();
+}
+
 void Document::styleSelectorChanged(StyleSelectorUpdateFlag updateFlag)
 {
     // Don't bother updating, since we haven't loaded all our style info yet
@@ -3194,8 +3200,7 @@
             view()->scheduleRelayout();
     }
 
-    if (m_mediaQueryMatcher)
-        m_mediaQueryMatcher->styleSelectorChanged();
+    evaluateMediaQueryList();
 }
 
 void Document::addStyleSheetCandidateNode(Node* node, bool createdByParser)

Modified: trunk/Source/WebCore/dom/Document.h (114284 => 114285)


--- trunk/Source/WebCore/dom/Document.h	2012-04-16 18:41:37 UTC (rev 114284)
+++ trunk/Source/WebCore/dom/Document.h	2012-04-16 18:45:29 UTC (rev 114285)
@@ -505,6 +505,8 @@
      */
     void styleSelectorChanged(StyleSelectorUpdateFlag);
 
+    void evaluateMediaQueryList();
+
     bool usesSiblingRules() const { return m_usesSiblingRules || m_usesSiblingRulesOverride; }
     void setUsesSiblingRules(bool b) { m_usesSiblingRulesOverride = b; }
     bool usesFirstLineRules() const { return m_usesFirstLineRules; }

Modified: trunk/Source/WebCore/page/FrameView.cpp (114284 => 114285)


--- trunk/Source/WebCore/page/FrameView.cpp	2012-04-16 18:41:37 UTC (rev 114284)
+++ trunk/Source/WebCore/page/FrameView.cpp	2012-04-16 18:45:29 UTC (rev 114285)
@@ -976,7 +976,8 @@
         if (document->styleSelector()->affectedByViewportChange()) {
             document->styleSelectorChanged(RecalcStyleImmediately);
             InspectorInstrumentation::mediaQueryResultChanged(document);
-        }
+        } else
+            document->evaluateMediaQueryList();
 
         // Always ensure our style info is up-to-date. This can happen in situations where
         // the layout beats any sort of style recalc update that needs to occur.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to