Title: [95599] trunk
Revision
95599
Author
[email protected]
Date
2011-09-20 22:41:27 -0700 (Tue, 20 Sep 2011)

Log Message

<meter> doesn't update rendering when its value is changed.
https://bugs.webkit.org/show_bug.cgi?id=67614

Reviewed by Dimitri Glazkov.

Source/WebCore:

It lacks repaint() when the value is changed.

For non-native appearance it works because the indicator is
implemented in shadow DOM, for native appearance, repainting should be
handled explicitly.

Test: fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html

* html/HTMLMeterElement.cpp:
(WebCore::HTMLMeterElement::didElementStateChange):
* rendering/RenderMeter.cpp:
(WebCore::RenderMeter::updateFromElement):
* rendering/RenderMeter.h:
* rendering/RenderProgress.cpp:
(WebCore::RenderProgress::updateAnimationState):

LayoutTests:

* fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.png: Added.
* platform/chromium/test_expectations.txt:
* platform/mac/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt: Added.
* platform/mac/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (95598 => 95599)


--- trunk/LayoutTests/ChangeLog	2011-09-21 05:38:48 UTC (rev 95598)
+++ trunk/LayoutTests/ChangeLog	2011-09-21 05:41:27 UTC (rev 95599)
@@ -1,3 +1,15 @@
+2011-09-20  MORITA Hajime  <[email protected]>
+
+        <meter> doesn't update rendering when its value is changed.
+        https://bugs.webkit.org/show_bug.cgi?id=67614
+
+        Reviewed by Dimitri Glazkov.
+
+        * fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.png: Added.
+        * platform/chromium/test_expectations.txt:
+        * platform/mac/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt: Added.
+        * platform/mac/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html: Added.
+
 2011-09-20  Keishi Hattori  <[email protected]>
 
         [chromium] changed test expectations for zoom-svg-through-object-with-auto-size.html:wq

Added: trunk/LayoutTests/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html (0 => 95599)


--- trunk/LayoutTests/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html	                        (rev 0)
+++ trunk/LayoutTests/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html	2011-09-21 05:41:27 UTC (rev 95599)
@@ -0,0 +1,21 @@
+<html>
+<head>
+<body>
+<meter id="native" value="0" min="0" max="100"></meter>
+<meter id="shadow" value="0" min="0" max="100" style="-webkit-appearance: none;"></meter>
+<script>
+if (window.layoutTestController)
+    layoutTestController.waitUntilDone();
+document.body._onload_ = function() {
+    window.setTimeout(function() {
+        document.getElementById("native").value = 50;
+        document.getElementById("shadow").value = 50;
+        window.setTimeout(function() {
+             if (window.layoutTestController)
+                 layoutTestController.notifyDone();
+        }, 0);
+    }, 50);
+}
+</script>
+</body>
+</html>
Property changes on: trunk/LayoutTests/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (95598 => 95599)


--- trunk/LayoutTests/platform/chromium/test_expectations.txt	2011-09-21 05:38:48 UTC (rev 95598)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt	2011-09-21 05:41:27 UTC (rev 95599)
@@ -3712,6 +3712,8 @@
 
 BUGCR95972 WIN DEBUG : webaudio/sample-accurate-scheduling.html = CRASH
 
+// Needs expectation.
+BUGWK67614 : fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html = MISSING 
 
 // Failing after r94912.
 BUGWK67913 WIN LINUX SNOWLEOPARD : media/video-zoom-controls.html = TEXT

Added: trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.png


(Binary files differ)
Property changes on: trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.png ___________________________________________________________________

Added: svn:mime-type

Added: trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt (0 => 95599)


--- trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt	2011-09-21 05:41:27 UTC (rev 95599)
@@ -0,0 +1,13 @@
+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 784x584
+      RenderMeter {METER} at (0,1) size 80x16
+      RenderText {#text} at (80,0) size 4x18
+        text run at (80,0) width 4: " "
+      RenderMeter {METER} at (84,1) size 80x16
+        RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {DIV} at (0,0) size 40x16
+      RenderText {#text} at (0,0) size 0x0
+      RenderText {#text} at (0,0) size 0x0
Property changes on: trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/Source/WebCore/ChangeLog (95598 => 95599)


--- trunk/Source/WebCore/ChangeLog	2011-09-21 05:38:48 UTC (rev 95598)
+++ trunk/Source/WebCore/ChangeLog	2011-09-21 05:41:27 UTC (rev 95599)
@@ -1,3 +1,26 @@
+2011-09-20  MORITA Hajime  <[email protected]>
+
+        <meter> doesn't update rendering when its value is changed.
+        https://bugs.webkit.org/show_bug.cgi?id=67614
+
+        Reviewed by Dimitri Glazkov.
+
+        It lacks repaint() when the value is changed. 
+        
+        For non-native appearance it works because the indicator is
+        implemented in shadow DOM, for native appearance, repainting should be
+        handled explicitly.
+        
+        Test: fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html
+
+        * html/HTMLMeterElement.cpp:
+        (WebCore::HTMLMeterElement::didElementStateChange):
+        * rendering/RenderMeter.cpp:
+        (WebCore::RenderMeter::updateFromElement):
+        * rendering/RenderMeter.h:
+        * rendering/RenderProgress.cpp:
+        (WebCore::RenderProgress::updateAnimationState):
+
 2011-09-20  Kent Tamura  <[email protected]>
 
         Move RenderObject::markContainingBlocksForLayout() to RenderObject.cpp.

Modified: trunk/Source/WebCore/html/HTMLMeterElement.cpp (95598 => 95599)


--- trunk/Source/WebCore/html/HTMLMeterElement.cpp	2011-09-21 05:38:48 UTC (rev 95598)
+++ trunk/Source/WebCore/html/HTMLMeterElement.cpp	2011-09-21 05:41:27 UTC (rev 95599)
@@ -228,6 +228,8 @@
 void HTMLMeterElement::didElementStateChange()
 {
     m_value->setWidthPercentage(valueRatio()*100);
+    if (RenderObject* render = renderer())
+        render->updateFromElement();
 }
 
 void HTMLMeterElement::createShadowSubtree()

Modified: trunk/Source/WebCore/rendering/RenderMeter.cpp (95598 => 95599)


--- trunk/Source/WebCore/rendering/RenderMeter.cpp	2011-09-21 05:38:48 UTC (rev 95598)
+++ trunk/Source/WebCore/rendering/RenderMeter.cpp	2011-09-21 05:41:27 UTC (rev 95599)
@@ -60,6 +60,11 @@
     return static_cast<HTMLMeterElement*>(node())->valueRatio();
 }
 
+void RenderMeter::updateFromElement()
+{
+    repaint();
+}
+
 } // namespace WebCore
 
 #endif

Modified: trunk/Source/WebCore/rendering/RenderMeter.h (95598 => 95599)


--- trunk/Source/WebCore/rendering/RenderMeter.h	2011-09-21 05:38:48 UTC (rev 95598)
+++ trunk/Source/WebCore/rendering/RenderMeter.h	2011-09-21 05:41:27 UTC (rev 95599)
@@ -43,6 +43,7 @@
     virtual bool isMeter() const { return true; }
     virtual bool requiresForcedStyleRecalcPropagation() const { return true; }
     virtual bool canHaveChildren() const { return false; }
+    virtual void updateFromElement();
 
     double valueRatio() const;
 };

Modified: trunk/Source/WebCore/rendering/RenderProgress.cpp (95598 => 95599)


--- trunk/Source/WebCore/rendering/RenderProgress.cpp	2011-09-21 05:38:48 UTC (rev 95598)
+++ trunk/Source/WebCore/rendering/RenderProgress.cpp	2011-09-21 05:41:27 UTC (rev 95599)
@@ -88,6 +88,7 @@
     if (animating == m_animating)
         return;
 
+    repaint();
     m_animating = animating;
     if (m_animating) {
         m_animationStartTime = currentTime();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to