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 <[email protected]>
+
+ 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 <[email protected]>
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 <[email protected]>
+
+ 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 <[email protected]>
[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.