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