AuthorShadowDOM for meter element
authorshinyak@chromium.org <shinyak@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Aug 2012 07:48:15 +0000 (07:48 +0000)
committershinyak@chromium.org <shinyak@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Aug 2012 07:48:15 +0000 (07:48 +0000)
https://bugs.webkit.org/show_bug.cgi?id=91970

Reviewed by Hajime Morita.

Source/WebCore:

We add support for AuthorShadowDOM for a meter element.

According to the Shadow DOM spec, a meter element should behave like having a UserAgentShadowRoot and
an element in UserAgentShadowRoot draws a real 'meter' bar. In this patch, we change the inner structure
of a meter element so that we can distribute an element having RenderMeter to AuthorShadowDOM.

Before this patch, a meter element has the following inner structure.

    <meter>--UserAgentShadowRoot -- -- -- -- -- -- -- -- -- -- AuthorShadowRoot
                       |
                       +-- MeterBarElement
                       |
                       +-- MeterValueElement

After this patch, a meter element will have the following inner structure.

    <meter>--UserAgentShadowRoot -- -- -- -- -- -- -- -- -- -- AuthorShadowRoot
                       |
                       +-- MeterInnerElement
                                   |
                                   +-- MeterBarElement
                                   |
                                   +-- MeterValueElement

However, if RenderTheme supports rendering meter, MeterInnerElement will not create a renderer
unless an AuthorShadowDOM is attached to it so that we can keep the current rendering style.

Tests: fast/dom/shadow/shadowdom-for-meter-dynamic.html
       fast/dom/shadow/shadowdom-for-meter-multiple.html
       fast/dom/shadow/shadowdom-for-meter-with-style.html
       fast/dom/shadow/shadowdom-for-meter-without-appearance.html
       fast/dom/shadow/shadowdom-for-meter-without-shadow-element.html
       fast/dom/shadow/shadowdom-for-meter.html

* css/html.css:
(meter): Changed the display type. inline-box is not supported WebKit. inline-block is true.
(meter::-webkit-meter-inner-element):
* html/HTMLMeterElement.cpp:
(WebCore::HTMLMeterElement::HTMLMeterElement):
(WebCore::HTMLMeterElement::createRenderer):
(WebCore):
(WebCore::HTMLMeterElement::didElementStateChange):
(WebCore::HTMLMeterElement::willAddAuthorShadowRoot):
(WebCore::HTMLMeterElement::renderMeter):
(WebCore::HTMLMeterElement::createShadowSubtree):
* html/HTMLMeterElement.h:
(WebCore):
(WebCore::HTMLMeterElement::hasAuthorShadowRoot):
(HTMLMeterElement):
(WebCore::isHTMLMeterElement):
(WebCore::toHTMLMeterElement):
* html/shadow/MeterShadowElement.cpp:
(WebCore::MeterShadowElement::meterElement):
(WebCore::MeterShadowElement::rendererIsNeeded):
(WebCore):
(WebCore::MeterInnerElement::MeterInnerElement): We introduce a new element having RenderMeter
so that we can distribute an element having RenderMeter to AuthorShadowDOM.
(WebCore::MeterInnerElement::rendererIsNeeded): Different from a progress element, meter element will not be
rendered using a theme. So we don't need to check the style appearance.
(WebCore::MeterInnerElement::createRenderer):
(WebCore::MeterInnerElement::shadowPseudoId):
* html/shadow/MeterShadowElement.h:
(WebCore):
(MeterInnerElement):
(WebCore::MeterInnerElement::create):
* rendering/RenderMeter.cpp:
(WebCore::RenderMeter::RenderMeter):
(WebCore::RenderMeter::meterElement):
(WebCore):
(WebCore::RenderMeter::valueRatio):
* rendering/RenderMeter.h:
(RenderMeter):

LayoutTests:

Contains the following tests:
  (1) meter element with AuthorShadowDOM
  (2) meter element with multiple AuthorShadowDOM with a shadow element
  (3) meter element with multiple AuthorShadowDOM without a shadow element
  (4) meter element with AuthorShadowDOM with dynamic value update
  (5) meter element with AuthorShadowDOM with style
  (6) meter element with AuthorShadowDOM with -webkit-appearance: none

* fast/dom/HTMLMeterElement/meter-clone-expected.txt:
* fast/dom/HTMLMeterElement/meter-clone.html:
* fast/dom/HTMLMeterElement/meter-element-markup-expected.txt:
* fast/dom/shadow/resources/replaced-element-styles.css:
(.meter-like):
(.meter-inner-element-like):
* fast/dom/shadow/shadowdom-for-meter-dynamic-expected.html: Added.
* fast/dom/shadow/shadowdom-for-meter-dynamic.html: Added.
* fast/dom/shadow/shadowdom-for-meter-expected.html: Added.
* fast/dom/shadow/shadowdom-for-meter-multiple-expected.html: Added.
* fast/dom/shadow/shadowdom-for-meter-multiple.html: Added.
* fast/dom/shadow/shadowdom-for-meter-with-style-expected.html: Added.
* fast/dom/shadow/shadowdom-for-meter-with-style.html: Added.
* fast/dom/shadow/shadowdom-for-meter-without-appearance-expected.html: Added.
* fast/dom/shadow/shadowdom-for-meter-without-appearance.html: Added.
* fast/dom/shadow/shadowdom-for-meter-without-shadow-element-expected.html: Added.
* fast/dom/shadow/shadowdom-for-meter-without-shadow-element.html: Added.
* fast/dom/shadow/shadowdom-for-meter.html: Added.
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-appearances-capacity-expected.txt:
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-appearances-rating-relevancy-expected.txt:
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-boundary-values-expected.txt:
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-element-expected.txt:
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt:
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-optimums-expected.txt:
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.txt:
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-styles-expected.txt:
* platform/chromium-win/fast/dom/HTMLMeterElement/meter-writing-mode-expected.txt:
* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@125519 268f45cc-cd09-0410-ab3c-d52691b4dbfc

35 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/dom/HTMLMeterElement/meter-clone-expected.txt
LayoutTests/fast/dom/HTMLMeterElement/meter-clone.html
LayoutTests/fast/dom/HTMLMeterElement/meter-element-markup-expected.txt
LayoutTests/fast/dom/shadow/resources/replaced-element-styles.css
LayoutTests/fast/dom/shadow/shadowdom-for-meter-dynamic-expected.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-dynamic.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-expected.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-multiple-expected.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-multiple.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-with-style-expected.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-with-style.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-appearance-expected.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-appearance.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-shadow-element-expected.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-shadow-element.html [new file with mode: 0644]
LayoutTests/fast/dom/shadow/shadowdom-for-meter.html [new file with mode: 0644]
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-appearances-capacity-expected.txt
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-appearances-rating-relevancy-expected.txt
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-boundary-values-expected.txt
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-element-expected.txt
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-optimums-expected.txt
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.txt
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-styles-expected.txt
LayoutTests/platform/chromium-win/fast/dom/HTMLMeterElement/meter-writing-mode-expected.txt
LayoutTests/platform/mac/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/css/html.css
Source/WebCore/html/HTMLMeterElement.cpp
Source/WebCore/html/HTMLMeterElement.h
Source/WebCore/html/shadow/MeterShadowElement.cpp
Source/WebCore/html/shadow/MeterShadowElement.h
Source/WebCore/rendering/RenderMeter.cpp
Source/WebCore/rendering/RenderMeter.h

index 3190fca..d35d55a 100644 (file)
@@ -1,3 +1,47 @@
+2012-08-14  Shinya Kawanaka  <shinyak@chromium.org>
+
+        AuthorShadowDOM for meter element
+        https://bugs.webkit.org/show_bug.cgi?id=91970
+
+        Reviewed by Hajime Morita.
+
+        Contains the following tests:
+          (1) meter element with AuthorShadowDOM
+          (2) meter element with multiple AuthorShadowDOM with a shadow element
+          (3) meter element with multiple AuthorShadowDOM without a shadow element
+          (4) meter element with AuthorShadowDOM with dynamic value update
+          (5) meter element with AuthorShadowDOM with style
+          (6) meter element with AuthorShadowDOM with -webkit-appearance: none
+
+        * fast/dom/HTMLMeterElement/meter-clone-expected.txt:
+        * fast/dom/HTMLMeterElement/meter-clone.html:
+        * fast/dom/HTMLMeterElement/meter-element-markup-expected.txt:
+        * fast/dom/shadow/resources/replaced-element-styles.css:
+        (.meter-like):
+        (.meter-inner-element-like):
+        * fast/dom/shadow/shadowdom-for-meter-dynamic-expected.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-dynamic.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-expected.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-multiple-expected.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-multiple.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-with-style-expected.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-with-style.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-without-appearance-expected.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-without-appearance.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-without-shadow-element-expected.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter-without-shadow-element.html: Added.
+        * fast/dom/shadow/shadowdom-for-meter.html: Added.
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-appearances-capacity-expected.txt:
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-appearances-rating-relevancy-expected.txt:
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-boundary-values-expected.txt:
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-element-expected.txt:
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value-expected.txt:
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-optimums-expected.txt:
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.txt:
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-styles-expected.txt:
+        * platform/chromium-win/fast/dom/HTMLMeterElement/meter-writing-mode-expected.txt:
+        * platform/mac/TestExpectations:
+
 2012-08-14  Christophe Dumez  <christophe.dumez@intel.com>
 
         [EFL][WK2] inspector/debugger/debugger-pause-on-exception.html is duplicated in TestExpectations
index f6676f7..f840958 100644 (file)
@@ -1,8 +1,9 @@
 PASS cloned.value is target.value
 PASS internals.shadowPseudoId(clonedShadowRoot.firstChild) is internals.shadowPseudoId(targetShadowRoot.firstChild)
 PASS internals.shadowPseudoId(clonedShadowRoot.firstChild.firstChild) is internals.shadowPseudoId(targetShadowRoot.firstChild.firstChild)
-PASS clonedShadowRoot.firstChild.firstChild.style.width is "70%"
-PASS targetShadowRoot.firstChild.firstChild.style.width is "50%"
+PASS internals.shadowPseudoId(clonedShadowRoot.firstChild.firstChild.firstChild) is internals.shadowPseudoId(targetShadowRoot.firstChild.firstChild.firstChild)
+PASS clonedShadowRoot.firstChild.firstChild.firstChild.style.width is "70%"
+PASS targetShadowRoot.firstChild.firstChild.firstChild.style.width is "50%"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 7a1272f..95a9d3e 100644 (file)
     shouldBe("cloned.value", "target.value");
     shouldBe("internals.shadowPseudoId(clonedShadowRoot.firstChild)", "internals.shadowPseudoId(targetShadowRoot.firstChild)");
     shouldBe("internals.shadowPseudoId(clonedShadowRoot.firstChild.firstChild)", "internals.shadowPseudoId(targetShadowRoot.firstChild.firstChild)");
+    shouldBe("internals.shadowPseudoId(clonedShadowRoot.firstChild.firstChild.firstChild)", "internals.shadowPseudoId(targetShadowRoot.firstChild.firstChild.firstChild)");
+
     cloned.value = 70;
-    shouldBe("clonedShadowRoot.firstChild.firstChild.style.width", '"70%"');
-    shouldBe("targetShadowRoot.firstChild.firstChild.style.width", '"50%"');
+    shouldBe("clonedShadowRoot.firstChild.firstChild.firstChild.style.width", '"70%"');
+    shouldBe("targetShadowRoot.firstChild.firstChild.firstChild.style.width", '"50%"');
 })();
 </script>
 <script src="../../js/resources/js-test-post.js"></script>
index c17262d..60a384b 100644 (file)
@@ -7,10 +7,12 @@ Both meter elements should have a nested shadow box with a width specified:
 |   value="70"
 |   <shadow:root>
 |     <div>
-|       shadow:pseudoId="-webkit-meter-bar"
+|       shadow:pseudoId="-webkit-meter-inner-element"
 |       <div>
-|         style="width: 70%; "
-|         shadow:pseudoId="-webkit-meter-optimum-value"
+|         shadow:pseudoId="-webkit-meter-bar"
+|         <div>
+|           style="width: 70%; "
+|           shadow:pseudoId="-webkit-meter-optimum-value"
 | "
     "
 | <meter>
@@ -22,10 +24,12 @@ Both meter elements should have a nested shadow box with a width specified:
 |   value="10"
 |   <shadow:root>
 |     <div>
-|       shadow:pseudoId="-webkit-meter-bar"
+|       shadow:pseudoId="-webkit-meter-inner-element"
 |       <div>
-|         style="width: 100%; "
-|         shadow:pseudoId="-webkit-meter-suboptimum-value"
+|         shadow:pseudoId="-webkit-meter-bar"
+|         <div>
+|           style="width: 100%; "
+|           shadow:pseudoId="-webkit-meter-suboptimum-value"
 | "
     "
 | <meter>
@@ -37,9 +41,11 @@ Both meter elements should have a nested shadow box with a width specified:
 |   value="10"
 |   <shadow:root>
 |     <div>
-|       shadow:pseudoId="-webkit-meter-bar"
+|       shadow:pseudoId="-webkit-meter-inner-element"
 |       <div>
-|         style="width: 100%; "
-|         shadow:pseudoId="-webkit-meter-even-less-good-value"
+|         shadow:pseudoId="-webkit-meter-bar"
+|         <div>
+|           style="width: 100%; "
+|           shadow:pseudoId="-webkit-meter-even-less-good-value"
 | "
   "
index b35fef6..378364e 100644 (file)
     width: 100%;
     vertical-align: 0em;
 }
+
+.meter-like {
+    -webkit-appearance: meter;
+    -webkit-box-sizing: border-box;
+    display: inline-block;
+    height: 1em;
+    width: 5em;
+    vertical-align: -0.2em;
+    margin: 0;
+    padding: 0;
+}
+
+.meter-inner-element-like {
+    -webkit-appearance: meter;
+    -webkit-box-sizing: border-box;
+    -webkit-user-modify: read-only;
+    display: block;
+    height: 100%;
+    width: 100%;
+    vertical-align: 0em;
+}
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-dynamic-expected.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-dynamic-expected.html
new file mode 100644 (file)
index 0000000..2a3bde3
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="stylesheet" href="resources/replaced-element-styles.css">
+    <script src="resources/polyfill.js"></script>
+</head>
+<body>
+
+<div id="container">
+    <div class="meter-like"><meter class="meter-inner-element-like" min="0" max="100" value="30"></meter><span>(after)</span></div>
+</div>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-dynamic.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-dynamic.html
new file mode 100644 (file)
index 0000000..2a66e84
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="resources/polyfill.js"></script>
+
+<div id="container">
+    <meter id="host" min="0" max="100" value="50"></meter>
+</div>
+
+<script>
+if (window.testRunner)
+    testRunner.waitUntilDone();
+
+var shadowRoot = new WebKitShadowRoot(host);
+shadowRoot.innerHTML = "<shadow></shadow><span>(after)</span>";
+
+setTimeout(function() {
+    host.setAttribute('value', 30);
+    if (window.testRunner)
+        testRunner.notifyDone();
+}, 0);
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-expected.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-expected.html
new file mode 100644 (file)
index 0000000..612cc3a
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="stylesheet" href="resources/replaced-element-styles.css">
+    <script src="resources/polyfill.js"></script>
+</head>
+<body>
+
+<div id="container">
+    <div class="meter-like"><meter class="meter-inner-element-like" min="0" max="100" value="50"></meter><span>(after)</span></div>
+</div>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-multiple-expected.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-multiple-expected.html
new file mode 100644 (file)
index 0000000..a311217
--- /dev/null
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="stylesheet" href="resources/replaced-element-styles.css">
+    <script src="resources/polyfill.js"></script>
+</head>
+<body>
+
+<div id="container">
+    <div class="meter-like">
+        <div style="margin: 0 10px 0 10px; height: 1em; width: 5em;">
+            <meter class="meter-inner-element-like" min="0" max="100" value="50"></meter><span>(after)</span>
+        </div>
+    </div>
+</div>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-multiple.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-multiple.html
new file mode 100644 (file)
index 0000000..d9bd1cf
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="resources/polyfill.js"></script>
+<style>
+/* We have to write this for now. Please see Bug 92455. */
+meter::-webkit-meter-inner-element {
+    -webkit-appearance: meter;
+}
+</style>
+
+<div id="container">
+    <meter id="host" min="0" max="100" value="50"></meter>
+</div>
+
+<script>
+var shadowRoot = new WebKitShadowRoot(host);
+shadowRoot.innerHTML = "<shadow></shadow><span>(after)</span>";
+
+var younger = new WebKitShadowRoot(host);
+younger.innerHTML = "<div style='margin: 0 10px 0 10px; height: 1em; width: 5em;'><shadow></shadow></div>";
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-with-style-expected.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-with-style-expected.html
new file mode 100644 (file)
index 0000000..b20b3ae
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="resources/polyfill.js"></script>
+<style>
+div#wrapper {
+    display: block;
+    margin: 0;
+    padding: 0;
+    width: auto;
+    height: 3em;
+    vertical-align: 0;
+}
+
+meter {
+    display: block;
+    width: 15em;
+    height: 3em;
+}
+</style>
+
+<div id="container">
+    <div id="wrapper" class="meter-like">
+        <div style="margin-left: 100px;">
+            <meter id="with-style" class="meter-inner-element-like" min="0" max="100" value="50"></meter><span>(after)</span>
+        </div>
+    </div>
+</div>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-with-style.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-with-style.html
new file mode 100644 (file)
index 0000000..a85679d
--- /dev/null
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="resources/polyfill.js"></script>
+<style>
+meter {
+    display: block;
+    margin: 0;
+    padding: 0;
+    width: auto;
+    height: 3em;
+    vertical-align: 0;
+}
+
+meter::-webkit-meter-inner-element {
+    -webkit-appearance: meter; /* We have to have this for now. Please see Bug 92455. */
+    display: block;
+    width: 15em;
+    height: 3em;
+}
+</style>
+
+<div id="container">
+    <meter id="host" min="0" max="100" value="50"></meter>
+</div>
+
+<script>
+var shadowRoot = new WebKitShadowRoot(host);
+shadowRoot.innerHTML = "<div style='margin-left: 100px'><shadow></shadow><span>(after)</span></div>";
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-appearance-expected.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-appearance-expected.html
new file mode 100644 (file)
index 0000000..40d3263
--- /dev/null
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="stylesheet" href="resources/replaced-element-styles.css">
+    <script src="resources/polyfill.js"></script>
+</head>
+<body>
+
+<style>
+meter#meter {
+   -webkit-appearance: none;
+}
+</style>
+<div id="container">
+    <div class="meter-like"><meter id="meter" class="meter-inner-element-like" min="0" max="100" value="50"></meter><span>(after)<span></div>
+</div>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-appearance.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-appearance.html
new file mode 100644 (file)
index 0000000..6d34f5d
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="stylesheet" href="resources/replaced-element-styles.css">
+    <script src="resources/polyfill.js"></script>
+</head>
+<body>
+
+<style>
+meter {
+    -webkit-appearance: none;
+}
+</style>
+
+<div id="container">
+    <meter id="host" min="0" max="100" value="50"></meter>
+</div>
+
+<script>
+var shadowRoot = new WebKitShadowRoot(host);
+shadowRoot.innerHTML = "<shadow></shadow><span>(after)</span>";
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-shadow-element-expected.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-shadow-element-expected.html
new file mode 100644 (file)
index 0000000..00596bf
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <link rel="stylesheet" href="resources/replaced-element-styles.css">
+    <script src="resources/polyfill.js"></script>
+</head>
+<body>
+
+<div id="container">
+    <div class="meter-like"><span>no progress</span></div>
+</div>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-shadow-element.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter-without-shadow-element.html
new file mode 100644 (file)
index 0000000..5cf3313
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="resources/polyfill.js"></script>
+
+<div id="container">
+    <meter id="host" min="0" max="100" value="50"></meter>
+</div>
+
+<script>
+var shadowRoot = new WebKitShadowRoot(host);
+shadowRoot.innerHTML = "<span>no progress</span>"
+</script>
+
+</body>
+</html>
diff --git a/LayoutTests/fast/dom/shadow/shadowdom-for-meter.html b/LayoutTests/fast/dom/shadow/shadowdom-for-meter.html
new file mode 100644 (file)
index 0000000..13341be
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="resources/polyfill.js"></script>
+
+<div id="container">
+    <meter id="host" min="0" max="100" value="50"></meter>
+</div>
+
+<script>
+var shadowRoot = new WebKitShadowRoot(host);
+shadowRoot.innerHTML = "<shadow></shadow><span>(after)</span>";
+</script>
+
+</body>
+</html>
index f632e6b..9accb66 100644 (file)
@@ -15,72 +15,82 @@ layer at (0,0) size 785x605
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 86x19
               text run at (0,0) width 86: "value=10/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
                 RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 80x16
           RenderListItem {LI} at (40,20) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=8/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16
           RenderListItem {LI} at (40,40) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=5/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 40x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 40x16
           RenderListItem {LI} at (40,60) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=2/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 16x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 16x16
           RenderListItem {LI} at (40,80) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=0/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 0x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 0x16
           RenderListItem {LI} at (40,100) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 37x19
               text run at (0,0) width 37: "RTL:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (40,0) size 40x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (40,0) size 40x16
           RenderListItem {LI} at (40,120) size 729x50 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 31x19
               text run at (0,0) width 31: "Tall:"
-            RenderMeter {METER} at (649,0) size 80x50
-              RenderBlock {DIV} at (0,0) size 80x50
-                RenderBlock {DIV} at (0,0) size 40x50
+            RenderBlock (floating) {METER} at (649,0) size 80x50
+              RenderMeter {DIV} at (0,0) size 80x50
+                RenderBlock {DIV} at (0,0) size 80x50
+                  RenderBlock {DIV} at (0,0) size 40x50
           RenderListItem {LI} at (40,170) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 41x19
               text run at (0,0) width 41: "Short:"
-            RenderMeter {METER} at (649,0) size 80x5
-              RenderBlock {DIV} at (0,0) size 80x5
-                RenderBlock {DIV} at (0,0) size 24x5
+            RenderBlock (floating) {METER} at (649,0) size 80x5
+              RenderMeter {DIV} at (0,0) size 80x5
+                RenderBlock {DIV} at (0,0) size 80x5
+                  RenderBlock {DIV} at (0,0) size 24x5
           RenderListItem {LI} at (40,190) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 40x19
               text run at (0,0) width 40: "Wide:"
-            RenderMeter {METER} at (429,0) size 300x16
-              RenderBlock {DIV} at (0,0) size 300x16
-                RenderBlock {DIV} at (0,0) size 150x16
+            RenderBlock (floating) {METER} at (429,0) size 300x16
+              RenderMeter {DIV} at (0,0) size 300x16
+                RenderBlock {DIV} at (0,0) size 300x16
+                  RenderBlock {DIV} at (0,0) size 150x16
           RenderListItem {LI} at (40,210) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 55x19
               text run at (0,0) width 55: "Narrow:"
-            RenderMeter {METER} at (699,0) size 30x16
-              RenderBlock {DIV} at (0,0) size 30x16
-                RenderBlock {DIV} at (0,0) size 15x16
+            RenderBlock (floating) {METER} at (699,0) size 30x16
+              RenderMeter {DIV} at (0,0) size 30x16
+                RenderBlock {DIV} at (0,0) size 30x16
+                  RenderBlock {DIV} at (0,0) size 15x16
       RenderBlock {H2} at (0,315) size 769x21
         RenderText {#text} at (0,0) size 231x19
           text run at (0,0) width 231: "continuous-capacity-level-indicator"
@@ -90,69 +100,79 @@ layer at (0,0) size 785x605
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 86x19
               text run at (0,0) width 86: "value=10/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
                 RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 80x16
           RenderListItem {LI} at (40,20) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=8/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16
           RenderListItem {LI} at (40,40) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=5/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 40x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 40x16
           RenderListItem {LI} at (40,60) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=2/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 16x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 16x16
           RenderListItem {LI} at (40,80) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=0/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 0x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 0x16
           RenderListItem {LI} at (40,100) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 37x19
               text run at (0,0) width 37: "RTL:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (40,0) size 40x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (40,0) size 40x16
           RenderListItem {LI} at (40,120) size 729x50 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 31x19
               text run at (0,0) width 31: "Tall:"
-            RenderMeter {METER} at (649,0) size 80x50
-              RenderBlock {DIV} at (0,0) size 80x50
-                RenderBlock {DIV} at (0,0) size 40x50
+            RenderBlock (floating) {METER} at (649,0) size 80x50
+              RenderMeter {DIV} at (0,0) size 80x50
+                RenderBlock {DIV} at (0,0) size 80x50
+                  RenderBlock {DIV} at (0,0) size 40x50
           RenderListItem {LI} at (40,170) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 41x19
               text run at (0,0) width 41: "Short:"
-            RenderMeter {METER} at (649,0) size 80x5
-              RenderBlock {DIV} at (0,0) size 80x5
-                RenderBlock {DIV} at (0,0) size 24x5
+            RenderBlock (floating) {METER} at (649,0) size 80x5
+              RenderMeter {DIV} at (0,0) size 80x5
+                RenderBlock {DIV} at (0,0) size 80x5
+                  RenderBlock {DIV} at (0,0) size 24x5
           RenderListItem {LI} at (40,190) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 40x19
               text run at (0,0) width 40: "Wide:"
-            RenderMeter {METER} at (429,0) size 300x16
-              RenderBlock {DIV} at (0,0) size 300x16
-                RenderBlock {DIV} at (0,0) size 150x16
+            RenderBlock (floating) {METER} at (429,0) size 300x16
+              RenderMeter {DIV} at (0,0) size 300x16
+                RenderBlock {DIV} at (0,0) size 300x16
+                  RenderBlock {DIV} at (0,0) size 150x16
           RenderListItem {LI} at (40,210) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 55x19
               text run at (0,0) width 55: "Narrow:"
-            RenderMeter {METER} at (699,0) size 30x16
-              RenderBlock {DIV} at (0,0) size 30x16
-                RenderBlock {DIV} at (0,0) size 15x16
+            RenderBlock (floating) {METER} at (699,0) size 30x16
+              RenderMeter {DIV} at (0,0) size 30x16
+                RenderBlock {DIV} at (0,0) size 30x16
+                  RenderBlock {DIV} at (0,0) size 15x16
index 5e92a89..2df5f60 100644 (file)
@@ -15,72 +15,82 @@ layer at (0,0) size 785x605
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 86x19
               text run at (0,0) width 86: "value=10/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
                 RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 80x16
           RenderListItem {LI} at (40,20) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=8/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16
           RenderListItem {LI} at (40,40) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=5/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 40x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 40x16
           RenderListItem {LI} at (40,60) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=2/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 16x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 16x16
           RenderListItem {LI} at (40,80) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=0/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 0x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 0x16
           RenderListItem {LI} at (40,100) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 37x19
               text run at (0,0) width 37: "RTL:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (40,0) size 40x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (40,0) size 40x16
           RenderListItem {LI} at (40,120) size 729x50 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 31x19
               text run at (0,0) width 31: "Tall:"
-            RenderMeter {METER} at (649,0) size 80x50
-              RenderBlock {DIV} at (0,0) size 80x50
-                RenderBlock {DIV} at (0,0) size 40x50
+            RenderBlock (floating) {METER} at (649,0) size 80x50
+              RenderMeter {DIV} at (0,0) size 80x50
+                RenderBlock {DIV} at (0,0) size 80x50
+                  RenderBlock {DIV} at (0,0) size 40x50
           RenderListItem {LI} at (40,170) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 41x19
               text run at (0,0) width 41: "Short:"
-            RenderMeter {METER} at (649,0) size 80x5
-              RenderBlock {DIV} at (0,0) size 80x5
-                RenderBlock {DIV} at (0,0) size 24x5
+            RenderBlock (floating) {METER} at (649,0) size 80x5
+              RenderMeter {DIV} at (0,0) size 80x5
+                RenderBlock {DIV} at (0,0) size 80x5
+                  RenderBlock {DIV} at (0,0) size 24x5
           RenderListItem {LI} at (40,190) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 40x19
               text run at (0,0) width 40: "Wide:"
-            RenderMeter {METER} at (429,0) size 300x16
-              RenderBlock {DIV} at (0,0) size 300x16
-                RenderBlock {DIV} at (0,0) size 150x16
+            RenderBlock (floating) {METER} at (429,0) size 300x16
+              RenderMeter {DIV} at (0,0) size 300x16
+                RenderBlock {DIV} at (0,0) size 300x16
+                  RenderBlock {DIV} at (0,0) size 150x16
           RenderListItem {LI} at (40,210) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 55x19
               text run at (0,0) width 55: "Narrow:"
-            RenderMeter {METER} at (699,0) size 30x16
-              RenderBlock {DIV} at (0,0) size 30x16
-                RenderBlock {DIV} at (0,0) size 15x16
+            RenderBlock (floating) {METER} at (699,0) size 30x16
+              RenderMeter {DIV} at (0,0) size 30x16
+                RenderBlock {DIV} at (0,0) size 30x16
+                  RenderBlock {DIV} at (0,0) size 15x16
       RenderBlock {H2} at (0,315) size 769x21
         RenderText {#text} at (0,0) size 165x19
           text run at (0,0) width 165: "relevancy-level-indicator"
@@ -90,69 +100,79 @@ layer at (0,0) size 785x605
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 86x19
               text run at (0,0) width 86: "value=10/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
                 RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 80x16
           RenderListItem {LI} at (40,20) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=8/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16
           RenderListItem {LI} at (40,40) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=5/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 40x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 40x16
           RenderListItem {LI} at (40,60) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=2/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 16x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 16x16
           RenderListItem {LI} at (40,80) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 78x19
               text run at (0,0) width 78: "value=0/10:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 0x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 0x16
           RenderListItem {LI} at (40,100) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 37x19
               text run at (0,0) width 37: "RTL:"
-            RenderMeter {METER} at (649,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (40,0) size 40x16
+            RenderBlock (floating) {METER} at (649,0) size 80x16
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (40,0) size 40x16
           RenderListItem {LI} at (40,120) size 729x50 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 31x19
               text run at (0,0) width 31: "Tall:"
-            RenderMeter {METER} at (649,0) size 80x50
-              RenderBlock {DIV} at (0,0) size 80x50
-                RenderBlock {DIV} at (0,0) size 40x50
+            RenderBlock (floating) {METER} at (649,0) size 80x50
+              RenderMeter {DIV} at (0,0) size 80x50
+                RenderBlock {DIV} at (0,0) size 80x50
+                  RenderBlock {DIV} at (0,0) size 40x50
           RenderListItem {LI} at (40,170) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 41x19
               text run at (0,0) width 41: "Short:"
-            RenderMeter {METER} at (649,0) size 80x5
-              RenderBlock {DIV} at (0,0) size 80x5
-                RenderBlock {DIV} at (0,0) size 24x5
+            RenderBlock (floating) {METER} at (649,0) size 80x5
+              RenderMeter {DIV} at (0,0) size 80x5
+                RenderBlock {DIV} at (0,0) size 80x5
+                  RenderBlock {DIV} at (0,0) size 24x5
           RenderListItem {LI} at (40,190) size 729x20 [bgcolor=#EEEEEE]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 40x19
               text run at (0,0) width 40: "Wide:"
-            RenderMeter {METER} at (429,0) size 300x16
-              RenderBlock {DIV} at (0,0) size 300x16
-                RenderBlock {DIV} at (0,0) size 150x16
+            RenderBlock (floating) {METER} at (429,0) size 300x16
+              RenderMeter {DIV} at (0,0) size 300x16
+                RenderBlock {DIV} at (0,0) size 300x16
+                  RenderBlock {DIV} at (0,0) size 150x16
           RenderListItem {LI} at (40,210) size 729x20 [bgcolor=#CCCCCC]
             RenderListMarker at (-18,0) size 7x19: bullet
             RenderText {#text} at (0,0) size 55x19
               text run at (0,0) width 55: "Narrow:"
-            RenderMeter {METER} at (699,0) size 30x16
-              RenderBlock {DIV} at (0,0) size 30x16
-                RenderBlock {DIV} at (0,0) size 15x16
+            RenderBlock (floating) {METER} at (699,0) size 30x16
+              RenderMeter {DIV} at (0,0) size 30x16
+                RenderBlock {DIV} at (0,0) size 30x16
+                  RenderBlock {DIV} at (0,0) size 15x16
index af772ff..9a37d5c 100644 (file)
@@ -18,9 +18,10 @@ layer at (0,0) size 800x600
               text run at (0,0) width 8: "9"
           RenderText {#text} at (8,0) size 106x19
             text run at (8,0) width 106: "|10,20,30,40,50: "
-          RenderMeter {METER} at (114,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 0x16
+          RenderBlock {METER} at (114,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 0x16
         RenderListItem {LI} at (40,40) size 744x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderInline {B} at (0,0) size 16x19
@@ -28,9 +29,10 @@ layer at (0,0) size 800x600
               text run at (0,0) width 16: "10"
           RenderText {#text} at (16,0) size 87x19
             text run at (16,0) width 87: ",20,30,40,50: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 0x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 0x16
         RenderListItem {LI} at (40,60) size 744x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 20x19
@@ -40,9 +42,10 @@ layer at (0,0) size 800x600
               text run at (20,0) width 16: "20"
           RenderText {#text} at (36,0) size 67x19
             text run at (36,0) width 67: ",30,40,50: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 20x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 20x16
           RenderText {#text} at (183,0) size 105x19
             text run at (183,0) width 105: "(should be green)"
         RenderListItem {LI} at (40,80) size 744x20
@@ -54,9 +57,10 @@ layer at (0,0) size 800x600
               text run at (40,0) width 16: "30"
           RenderText {#text} at (56,0) size 47x19
             text run at (56,0) width 47: ",40,50: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 40x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 40x16
           RenderText {#text} at (183,0) size 105x19
             text run at (183,0) width 105: "(should be green)"
         RenderListItem {LI} at (40,100) size 744x20
@@ -68,9 +72,10 @@ layer at (0,0) size 800x600
               text run at (60,0) width 16: "40"
           RenderText {#text} at (76,0) size 27x19
             text run at (76,0) width 27: ",50: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 60x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 60x16
           RenderText {#text} at (183,0) size 105x19
             text run at (183,0) width 105: "(should be green)"
         RenderListItem {LI} at (40,120) size 744x20
@@ -82,9 +87,10 @@ layer at (0,0) size 800x600
               text run at (80,0) width 16: "50"
           RenderText {#text} at (96,0) size 7x19
             text run at (96,0) width 7: ": "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
               RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
           RenderText {#text} at (183,0) size 111x19
             text run at (183,0) width 111: "(should be yellow)"
         RenderListItem {LI} at (40,140) size 744x20
@@ -96,9 +102,10 @@ layer at (0,0) size 800x600
               text run at (99,0) width 16: "51"
           RenderText {#text} at (115,0) size 7x19
             text run at (115,0) width 7: ": "
-          RenderMeter {METER} at (122,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {METER} at (122,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
               RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
           RenderText {#text} at (202,0) size 111x19
             text run at (202,0) width 111: "(should be yellow)"
         RenderListItem {LI} at (40,160) size 744x20
@@ -110,9 +117,10 @@ layer at (0,0) size 800x600
               text run at (20,0) width 16: "10"
           RenderText {#text} at (36,0) size 67x19
             text run at (36,0) width 67: ",30,40,50: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 0x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 0x16
         RenderListItem {LI} at (40,180) size 744x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 60x19
@@ -122,9 +130,10 @@ layer at (0,0) size 800x600
               text run at (60,0) width 16: "40"
           RenderText {#text} at (76,0) size 27x19
             text run at (76,0) width 27: ",40: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
               RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
           RenderText {#text} at (183,0) size 105x19
             text run at (183,0) width 105: "(should be green)"
         RenderListItem {LI} at (40,200) size 744x20
@@ -134,9 +143,10 @@ layer at (0,0) size 800x600
               text run at (0,0) width 8: "9"
           RenderText {#text} at (8,0) size 106x19
             text run at (8,0) width 106: "|10,10,10,20,30: "
-          RenderMeter {METER} at (114,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 0x16
+          RenderBlock {METER} at (114,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 0x16
         RenderListItem {LI} at (40,220) size 744x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 40x19
@@ -146,9 +156,10 @@ layer at (0,0) size 800x600
               text run at (40,0) width 16: "10"
           RenderText {#text} at (56,0) size 47x19
             text run at (56,0) width 47: ",20,30: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 0x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 0x16
         RenderListItem {LI} at (40,240) size 744x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 40x19
@@ -158,9 +169,10 @@ layer at (0,0) size 800x600
               text run at (40,0) width 16: "30"
           RenderText {#text} at (56,0) size 47x19
             text run at (56,0) width 47: ",30,30: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
               RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
           RenderText {#text} at (183,0) size 105x19
             text run at (183,0) width 105: "(should be green)"
         RenderListItem {LI} at (40,260) size 744x20
@@ -172,9 +184,10 @@ layer at (0,0) size 800x600
               text run at (99,0) width 16: "31"
           RenderText {#text} at (115,0) size 7x19
             text run at (115,0) width 7: ": "
-          RenderMeter {METER} at (122,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {METER} at (122,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
               RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
           RenderText {#text} at (202,0) size 105x19
             text run at (202,0) width 105: "(should be green)"
         RenderListItem {LI} at (40,280) size 744x20
@@ -186,8 +199,9 @@ layer at (0,0) size 800x600
               text run at (40,0) width 16: "20"
           RenderText {#text} at (56,0) size 47x19
             text run at (56,0) width 47: ",20,30: "
-          RenderMeter {METER} at (103,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 40x16
+          RenderBlock {METER} at (103,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 40x16
           RenderText {#text} at (183,0) size 105x19
             text run at (183,0) width 105: "(should be green)"
index 4938e76..276200d 100644 (file)
@@ -3,10 +3,12 @@ layer 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,43) size 80x17
-        RenderBlock {DIV} at (0,0) size 80x16
-          RenderBlock {DIV} at (0,0) size 18x16
-      RenderMeter {METER} at (80,-1) size 10x61
-        RenderBlock {DIV} at (0,0) size 10x60
-          RenderBlock {DIV} at (0,0) size 7x60
+      RenderBlock {METER} at (0,43) size 80x17
+        RenderMeter {DIV} at (0,0) size 80x16
+          RenderBlock {DIV} at (0,0) size 80x16
+            RenderBlock {DIV} at (0,0) size 18x16
+      RenderBlock {METER} at (80,-1) size 10x61
+        RenderMeter {DIV} at (0,0) size 10x60
+          RenderBlock {DIV} at (0,0) size 10x60
+            RenderBlock {DIV} at (0,0) size 7x60
       RenderText {#text} at (0,0) size 0x0
index 1f04665..7e6c533 100644 (file)
@@ -3,13 +3,15 @@ layer 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,2) size 80x17
-        RenderBlock {DIV} at (0,0) size 80x16
-          RenderBlock {DIV} at (0,0) size 40x16
+      RenderBlock {METER} at (0,2) size 80x17
+        RenderMeter {DIV} at (0,0) size 80x16
+          RenderBlock {DIV} at (0,0) size 80x16
+            RenderBlock {DIV} at (0,0) size 40x16
       RenderText {#text} at (80,0) size 4x19
         text run at (80,0) width 4: " "
-      RenderMeter {METER} at (84,2) size 80x17
-        RenderBlock {DIV} at (0,0) size 80x16
-          RenderBlock {DIV} at (0,0) size 40x16
+      RenderBlock {METER} at (84,2) size 80x17
+        RenderMeter {DIV} at (0,0) 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
index 4addddb..010a633 100644 (file)
@@ -17,37 +17,42 @@ layer at (0,0) size 785x603
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=150: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 20x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 20x16
         RenderListItem {LI} at (40,20) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=450: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 36x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 36x16
         RenderListItem {LI} at (40,40) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=750: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 60x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 60x16
         RenderListItem {LI} at (40,60) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 55x19
             text run at (0,0) width 55: "value=0: "
-          RenderMeter {METER} at (55,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 0x16
+          RenderBlock {METER} at (55,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 0x16
         RenderListItem {LI} at (40,80) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 79x19
             text run at (0,0) width 79: "value=1000: "
-          RenderMeter {METER} at (79,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {METER} at (79,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
               RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
       RenderBlock {H2} at (0,265) size 769x28
         RenderText {#text} at (0,0) size 141x26
           text run at (0,0) width 141: "optimum=150"
@@ -56,37 +61,42 @@ layer at (0,0) size 785x603
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=150: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 20x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 20x16
         RenderListItem {LI} at (40,20) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=450: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 36x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 36x16
         RenderListItem {LI} at (40,40) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=750: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 60x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 60x16
         RenderListItem {LI} at (40,60) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 55x19
             text run at (0,0) width 55: "value=0: "
-          RenderMeter {METER} at (55,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 0x16
+          RenderBlock {METER} at (55,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 0x16
         RenderListItem {LI} at (40,80) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 79x19
             text run at (0,0) width 79: "value=1000: "
-          RenderMeter {METER} at (79,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {METER} at (79,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
               RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
       RenderBlock {H2} at (0,432) size 769x28
         RenderText {#text} at (0,0) size 141x26
           text run at (0,0) width 141: "optimum=750"
@@ -95,34 +105,39 @@ layer at (0,0) size 785x603
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=150: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 20x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 20x16
         RenderListItem {LI} at (40,20) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=450: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 36x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 36x16
         RenderListItem {LI} at (40,40) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 71x19
             text run at (0,0) width 71: "value=750: "
-          RenderMeter {METER} at (71,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 60x16
+          RenderBlock {METER} at (71,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 60x16
         RenderListItem {LI} at (40,60) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 55x19
             text run at (0,0) width 55: "value=0: "
-          RenderMeter {METER} at (55,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 0x16
+          RenderBlock {METER} at (55,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 0x16
         RenderListItem {LI} at (40,80) size 729x20
           RenderListMarker at (-18,0) size 7x19: bullet
           RenderText {#text} at (0,0) size 79x19
             text run at (0,0) width 79: "value=1000: "
-          RenderMeter {METER} at (79,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
+          RenderBlock {METER} at (79,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
               RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
index defc109..0ed0e48 100644 (file)
@@ -10,7 +10,8 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,0) size 610x19
           text run at (0,0) width 610: "Following meter gauge should be solid green - Changing the paseudo class by changing value attribute"
       RenderBlock (anonymous) at (0,94) size 784x16
-        RenderMeter {METER} at (0,-1) size 80x17
-          RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080]
-            RenderBlock {DIV} at (0,0) size 72x16 [bgcolor=#008000]
+        RenderBlock {METER} at (0,-1) size 80x17
+          RenderMeter {DIV} at (0,0) size 80x16
+            RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080]
+              RenderBlock {DIV} at (0,0) size 72x16 [bgcolor=#008000]
         RenderText {#text} at (0,0) size 0x0
index 35d5c96..f6d7419 100644 (file)
@@ -8,54 +8,63 @@ layer at (0,0) size 800x600
           text run at (0,0) width 343: "Horizontal meters with the non-themed default style"
       RenderBlock {UL} at (3,23) size 778x65
         RenderListItem {LI} at (43,0) size 732x20
-          RenderMeter {METER} at (0,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 20x16
+          RenderBlock {METER} at (0,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 20x16
           RenderText {#text} at (80,0) size 4x19
             text run at (80,0) width 4: " "
-          RenderMeter {METER} at (84,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 36x16
+          RenderBlock {METER} at (84,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 36x16
           RenderText {#text} at (164,0) size 4x19
             text run at (164,0) width 4: " "
-          RenderMeter {METER} at (168,2) size 80x17
-            RenderBlock {DIV} at (0,0) size 80x16
-              RenderBlock {DIV} at (0,0) size 60x16
+          RenderBlock {METER} at (168,2) size 80x17
+            RenderMeter {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 60x16
         RenderListItem {LI} at (43,23) size 732x42
-          RenderMeter {METER} at (0,-1) size 30x41
-            RenderBlock {DIV} at (0,0) size 30x40
-              RenderBlock {DIV} at (0,0) size 8x40
+          RenderBlock {METER} at (0,-1) size 30x41
+            RenderMeter {DIV} at (0,0) size 30x40
+              RenderBlock {DIV} at (0,0) size 30x40
+                RenderBlock {DIV} at (0,0) size 8x40
           RenderText {#text} at (30,21) size 4x19
             text run at (30,21) width 4: " "
-          RenderMeter {METER} at (34,-1) size 30x41
-            RenderBlock {DIV} at (0,0) size 30x40
-              RenderBlock {DIV} at (0,0) size 14x40
+          RenderBlock {METER} at (34,-1) size 30x41
+            RenderMeter {DIV} at (0,0) size 30x40
+              RenderBlock {DIV} at (0,0) size 30x40
+                RenderBlock {DIV} at (0,0) size 14x40
           RenderText {#text} at (64,21) size 4x19
             text run at (64,21) width 4: " "
-          RenderMeter {METER} at (68,-1) size 30x41
-            RenderBlock {DIV} at (0,0) size 30x40
-              RenderBlock {DIV} at (0,0) size 23x40
+          RenderBlock {METER} at (68,-1) size 30x41
+            RenderMeter {DIV} at (0,0) size 30x40
+              RenderBlock {DIV} at (0,0) size 30x40
+                RenderBlock {DIV} at (0,0) size 23x40
       RenderBlock {H2} at (3,90) size 778x21
         RenderText {#text} at (0,0) size 149x19
           text run at (0,0) width 149: "Providing meter styles"
       RenderBlock {DIV} at (0,113) size 784x75 [bgcolor=#EEEEEE]
         RenderBlock {UL} at (3,0) size 778x74
           RenderListItem {LI} at (43,0) size 732x20
-            RenderMeter {METER} at (0,2) size 80x17 [bgcolor=#AAAACC] [border: (5px solid #222244) (20px solid #222244) (5px solid #222244) (10px solid #222244)]
-              RenderBlock {DIV} at (10,5) size 50x6
-                RenderBlock {DIV} at (0,0) size 40x6
+            RenderBlock {METER} at (0,2) size 80x17 [bgcolor=#AAAACC] [border: (5px solid #222244) (20px solid #222244) (5px solid #222244) (10px solid #222244)]
+              RenderMeter {DIV} at (10,5) size 50x6
+                RenderBlock {DIV} at (0,0) size 50x6
+                  RenderBlock {DIV} at (0,0) size 40x6
             RenderText {#text} at (80,0) size 69x19
               text run at (80,0) width 69: " has border"
           RenderListItem {LI} at (43,23) size 732x21
-            RenderMeter {METER} at (0,2) size 80x17 [bgcolor=#AAAACC]
-              RenderBlock {DIV} at (10,5) size 50x6
-                RenderBlock {DIV} at (0,0) size 40x6
+            RenderBlock {METER} at (0,2) size 80x17 [bgcolor=#AAAACC]
+              RenderMeter {DIV} at (10,5) size 50x6
+                RenderBlock {DIV} at (0,0) size 50x6
+                  RenderBlock {DIV} at (0,0) size 40x6
             RenderText {#text} at (80,0) size 76x19
               text run at (80,0) width 76: " has padding"
           RenderListItem {LI} at (43,46) size 732x28
-            RenderMeter {METER} at (10,4) size 80x17 [bgcolor=#AAAACC]
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16
+            RenderBlock {METER} at (10,4) size 80x17 [bgcolor=#AAAACC]
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16
             RenderText {#text} at (110,7) size 68x19
               text run at (110,7) width 68: " has margin"
       RenderBlock {H2} at (3,190) size 778x21
@@ -67,21 +76,24 @@ layer at (0,0) size 800x600
             RenderText {#text} at (0,0) size 456x19
               text run at (0,0) width 456: "default -webkit-appearance, thus should use platform theme (only for Mac.)"
           RenderListItem {LI} at (43,23) size 732x21
-            RenderMeter {METER} at (0,2) size 80x17
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16 [bgcolor=#008000] [border: (2px solid #77CC77)]
+            RenderBlock {METER} at (0,2) size 80x17
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16 [bgcolor=#008000] [border: (2px solid #77CC77)]
             RenderText {#text} at (80,0) size 201x19
               text run at (80,0) width 201: " has bar style but should ignore it."
           RenderListItem {LI} at (43,46) size 732x21
-            RenderMeter {METER} at (0,2) size 80x17
-              RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)]
-                RenderBlock {DIV} at (2,2) size 61x12
+            RenderBlock {METER} at (0,2) size 80x17
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)]
+                  RenderBlock {DIV} at (2,2) size 61x12
             RenderText {#text} at (80,0) size 212x19
               text run at (80,0) width 212: " has value style but should ignore it."
           RenderListItem {LI} at (43,69) size 732x21
-            RenderMeter {METER} at (0,2) size 80x17
-              RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)]
-                RenderBlock {DIV} at (2,2) size 61x12 [bgcolor=#008000] [border: (2px solid #77CC77)]
+            RenderBlock {METER} at (0,2) size 80x17
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)]
+                  RenderBlock {DIV} at (2,2) size 61x12 [bgcolor=#008000] [border: (2px solid #77CC77)]
             RenderText {#text} at (80,0) size 236x19
               text run at (80,0) width 236: " has both styles but should ignore them."
         RenderBlock {UL} at (3,92) size 778x91
@@ -89,21 +101,24 @@ layer at (0,0) size 800x600
             RenderText {#text} at (0,0) size 442x19
               text run at (0,0) width 442: "-webkit-appearance: none, thus custom styled elements should be shown."
           RenderListItem {LI} at (43,23) size 732x21
-            RenderMeter {METER} at (0,2) size 80x17
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16 [bgcolor=#008000] [border: (2px solid #77CC77)]
+            RenderBlock {METER} at (0,2) size 80x17
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16 [bgcolor=#008000] [border: (2px solid #77CC77)]
             RenderText {#text} at (80,0) size 257x19
               text run at (80,0) width 257: " has bar style, should have solid value part."
           RenderListItem {LI} at (43,46) size 732x21
-            RenderMeter {METER} at (0,2) size 80x17
-              RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)]
-                RenderBlock {DIV} at (2,2) size 61x12
+            RenderBlock {METER} at (0,2) size 80x17
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)]
+                  RenderBlock {DIV} at (2,2) size 61x12
             RenderText {#text} at (80,0) size 244x19
               text run at (80,0) width 244: " has value style, should be solid bar part."
           RenderListItem {LI} at (43,69) size 732x21
-            RenderMeter {METER} at (0,2) size 80x17
-              RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)]
-                RenderBlock {DIV} at (2,2) size 61x12 [bgcolor=#008000] [border: (2px solid #77CC77)]
+            RenderBlock {METER} at (0,2) size 80x17
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)]
+                  RenderBlock {DIV} at (2,2) size 61x12 [bgcolor=#008000] [border: (2px solid #77CC77)]
             RenderText {#text} at (80,0) size 224x19
               text run at (80,0) width 224: " should have solid bar and value part."
       RenderBlock {H2} at (3,399) size 778x21
@@ -112,23 +127,26 @@ layer at (0,0) size 800x600
       RenderBlock {DIV} at (0,422) size 784x44 [bgcolor=#EEEEEE]
         RenderBlock {UL} at (3,0) size 778x44
           RenderListItem {LI} at (43,0) size 732x20
-            RenderMeter {METER} at (0,2) size 80x17
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16
+            RenderBlock {METER} at (0,2) size 80x17
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16
             RenderText {#text} at (80,0) size 354x19
               text run at (80,0) width 354: " has \"none\" appearance, should be styled with default style."
           RenderListItem {LI} at (43,23) size 732x21
-            RenderMeter {METER} at (0,2) size 80x17
-              RenderBlock {DIV} at (0,0) size 80x16
-                RenderBlock {DIV} at (0,0) size 64x16
+            RenderBlock {METER} at (0,2) size 80x17
+              RenderMeter {DIV} at (0,0) size 80x16
+                RenderBlock {DIV} at (0,0) size 80x16
+                  RenderBlock {DIV} at (0,0) size 64x16
             RenderText {#text} at (80,0) size 264x19
               text run at (80,0) width 264: " has \"meter\" appearance, should be themed."
       RenderBlock {H2} at (3,468) size 778x21
         RenderText {#text} at (0,0) size 152x19
           text run at (0,0) width 152: "Providing bar paddings"
       RenderBlock {DIV} at (0,492) size 784x20 [bgcolor=#EEEEEE]
-        RenderMeter {METER} at (0,2) size 80x17
-          RenderBlock {DIV} at (0,0) size 80x16
-            RenderBlock {DIV} at (5,5) size 35x6
+        RenderBlock {METER} at (0,2) size 80x17
+          RenderMeter {DIV} at (0,0) size 80x16
+            RenderBlock {DIV} at (0,0) size 80x16
+              RenderBlock {DIV} at (5,5) size 35x6
         RenderText {#text} at (80,0) size 155x19
           text run at (80,0) width 155: " has \"padding\" on the bar."
index da0e52e..cd6631c 100644 (file)
@@ -3,22 +3,26 @@ layer 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 50x51 [bgcolor=#FF0000]
-        RenderBlock {DIV} at (0,0) size 50x50
-          RenderBlock {DIV} at (0,0) size 15x50
+      RenderBlock {METER} at (0,-1) size 50x51 [bgcolor=#FF0000]
+        RenderMeter {DIV} at (0,0) size 50x50
+          RenderBlock {DIV} at (0,0) size 50x50
+            RenderBlock {DIV} at (0,0) size 15x50
       RenderText {#text} at (50,31) size 4x19
         text run at (50,31) width 4: " "
-      RenderMeter {METER} at (54,-1) size 50x51 [bgcolor=#FF0000]
-        RenderBlock {DIV} at (0,0) size 50x50
-          RenderBlock {DIV} at (0,0) size 15x50
+      RenderBlock {METER} at (54,-1) size 50x51 [bgcolor=#FF0000]
+        RenderMeter {DIV} at (0,0) size 50x50
+          RenderBlock {DIV} at (0,0) size 50x50
+            RenderBlock {DIV} at (0,0) size 15x50
       RenderText {#text} at (104,31) size 4x19
         text run at (104,31) width 4: " "
-      RenderMeter {METER} at (108,-1) size 50x51 [bgcolor=#FF0000]
-        RenderBlock {DIV} at (0,0) size 50x50
-          RenderBlock {DIV} at (0,0) size 15x50
+      RenderBlock {METER} at (108,-1) size 50x51 [bgcolor=#FF0000]
+        RenderMeter {DIV} at (0,0) size 50x50
+          RenderBlock {DIV} at (0,0) size 50x50
+            RenderBlock {DIV} at (0,0) size 15x50
       RenderText {#text} at (158,31) size 4x19
         text run at (158,31) width 4: " "
-      RenderMeter {METER} at (162,-1) size 50x51 [bgcolor=#FF0000]
-        RenderBlock {DIV} at (0,0) size 50x50
-          RenderBlock {DIV} at (0,0) size 15x50
+      RenderBlock {METER} at (162,-1) size 50x51 [bgcolor=#FF0000]
+        RenderMeter {DIV} at (0,0) size 50x50
+          RenderBlock {DIV} at (0,0) size 50x50
+            RenderBlock {DIV} at (0,0) size 15x50
       RenderText {#text} at (0,0) size 0x0
index 904d3b7..f92cb22 100644 (file)
@@ -349,6 +349,19 @@ BUGWK91969 : fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element.html
 BUGWK91969 : fast/dom/HTMLProgressElement/progress-writing-mode.html = TEXT
 BUGWK91969 : fast/dom/HTMLProgressElement/indeterminate-progress-001.html = TEXT
 
+// Needs rebaseline after https://bugs.webkit.org/show_bug.cgi?id=91970
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-appearances-capacity.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-appearances-rating-relevancy.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-boundary-values.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-clone.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-element-markup.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-element.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-optimums.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-styles-changing-pseudo.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-styles.html
+BUGWK91970 : fast/dom/HTMLMeterElement/meter-writing-mode.html
+
 // Require rebaseline after bug 93148
 BUGWK93148 : tables/mozilla_expected_failures/bugs/bug106966.html = TEXT
 BUGWK93148 : tables/mozilla_expected_failures/marvin/table_overflow_hidden_tbody.html = TEXT
index 02f0817..0f31caa 100644 (file)
@@ -1,3 +1,83 @@
+2012-08-14  Shinya Kawanaka  <shinyak@chromium.org>
+
+        AuthorShadowDOM for meter element
+        https://bugs.webkit.org/show_bug.cgi?id=91970
+
+        Reviewed by Hajime Morita.
+
+        We add support for AuthorShadowDOM for a meter element.
+
+        According to the Shadow DOM spec, a meter element should behave like having a UserAgentShadowRoot and
+        an element in UserAgentShadowRoot draws a real 'meter' bar. In this patch, we change the inner structure
+        of a meter element so that we can distribute an element having RenderMeter to AuthorShadowDOM.
+
+        Before this patch, a meter element has the following inner structure.
+
+            <meter>--UserAgentShadowRoot -- -- -- -- -- -- -- -- -- -- AuthorShadowRoot
+                               |
+                               +-- MeterBarElement
+                               |
+                               +-- MeterValueElement
+
+        After this patch, a meter element will have the following inner structure.
+
+            <meter>--UserAgentShadowRoot -- -- -- -- -- -- -- -- -- -- AuthorShadowRoot
+                               |
+                               +-- MeterInnerElement
+                                           |
+                                           +-- MeterBarElement
+                                           |
+                                           +-- MeterValueElement
+
+        However, if RenderTheme supports rendering meter, MeterInnerElement will not create a renderer
+        unless an AuthorShadowDOM is attached to it so that we can keep the current rendering style.
+
+        Tests: fast/dom/shadow/shadowdom-for-meter-dynamic.html
+               fast/dom/shadow/shadowdom-for-meter-multiple.html
+               fast/dom/shadow/shadowdom-for-meter-with-style.html
+               fast/dom/shadow/shadowdom-for-meter-without-appearance.html
+               fast/dom/shadow/shadowdom-for-meter-without-shadow-element.html
+               fast/dom/shadow/shadowdom-for-meter.html
+
+        * css/html.css:
+        (meter): Changed the display type. inline-box is not supported WebKit. inline-block is true.
+        (meter::-webkit-meter-inner-element):
+        * html/HTMLMeterElement.cpp:
+        (WebCore::HTMLMeterElement::HTMLMeterElement):
+        (WebCore::HTMLMeterElement::createRenderer):
+        (WebCore):
+        (WebCore::HTMLMeterElement::didElementStateChange):
+        (WebCore::HTMLMeterElement::willAddAuthorShadowRoot):
+        (WebCore::HTMLMeterElement::renderMeter):
+        (WebCore::HTMLMeterElement::createShadowSubtree):
+        * html/HTMLMeterElement.h:
+        (WebCore):
+        (WebCore::HTMLMeterElement::hasAuthorShadowRoot):
+        (HTMLMeterElement):
+        (WebCore::isHTMLMeterElement):
+        (WebCore::toHTMLMeterElement):
+        * html/shadow/MeterShadowElement.cpp:
+        (WebCore::MeterShadowElement::meterElement):
+        (WebCore::MeterShadowElement::rendererIsNeeded):
+        (WebCore):
+        (WebCore::MeterInnerElement::MeterInnerElement): We introduce a new element having RenderMeter
+        so that we can distribute an element having RenderMeter to AuthorShadowDOM.
+        (WebCore::MeterInnerElement::rendererIsNeeded): Different from a progress element, meter element will not be
+        rendered using a theme. So we don't need to check the style appearance.
+        (WebCore::MeterInnerElement::createRenderer):
+        (WebCore::MeterInnerElement::shadowPseudoId):
+        * html/shadow/MeterShadowElement.h:
+        (WebCore):
+        (MeterInnerElement):
+        (WebCore::MeterInnerElement::create):
+        * rendering/RenderMeter.cpp:
+        (WebCore::RenderMeter::RenderMeter):
+        (WebCore::RenderMeter::meterElement):
+        (WebCore):
+        (WebCore::RenderMeter::valueRatio):
+        * rendering/RenderMeter.h:
+        (RenderMeter):
+
 2012-08-14  Christophe Dumez  <christophe.dumez@intel.com>
 
         regression(r124510) webintents/web-intents-obj-constructor.html is crashing
index 43b65a1..0ab746d 100644 (file)
@@ -894,12 +894,20 @@ output {
 meter {
     -webkit-appearance: meter;
     -webkit-box-sizing: border-box;
-    display: inline-box;
+    display: inline-block;
     height: 1em;
     width: 5em;
     vertical-align: -0.2em;
 }
 
+meter::-webkit-meter-inner-element {
+    -webkit-appearance: inherit;
+    -webkit-box-sizing: inherit;
+    -webkit-user-modify: read-only !important;
+    height: 100%;
+    width: 100%;
+}
+
 meter::-webkit-meter-bar {
     background: -webkit-gradient(linear, left top, left bottom, from(#ddd), to(#ddd), color-stop(0.20, #eee), color-stop(0.45, #ccc), color-stop(0.55, #ccc));
     height: 100%;
index 290de5b..54b7e40 100644 (file)
@@ -31,7 +31,9 @@
 #include "HTMLNames.h"
 #include "HTMLParserIdioms.h"
 #include "MeterShadowElement.h"
+#include "Page.h"
 #include "RenderMeter.h"
+#include "RenderTheme.h"
 #include "ShadowRoot.h"
 #include <wtf/StdLibExtras.h>
 
@@ -41,6 +43,7 @@ using namespace HTMLNames;
 
 HTMLMeterElement::HTMLMeterElement(const QualifiedName& tagName, Document* document)
     : LabelableElement(tagName, document)
+    , m_hasAuthorShadowRoot(false)
 {
     ASSERT(hasTagName(meterTag));
 }
@@ -56,8 +59,11 @@ PassRefPtr<HTMLMeterElement> HTMLMeterElement::create(const QualifiedName& tagNa
     return meter;
 }
 
-RenderObject* HTMLMeterElement::createRenderer(RenderArena* arena, RenderStyle*)
+RenderObject* HTMLMeterElement::createRenderer(RenderArena* arena, RenderStyle* style)
 {
+    if (hasAuthorShadowRoot() || !document()->page()->theme()->supportsMeter(style->appearance()))
+        return RenderObject::createObject(this, style);
+
     return new (arena) RenderMeter(this);
 }
 
@@ -214,22 +220,40 @@ double HTMLMeterElement::valueRatio() const
 void HTMLMeterElement::didElementStateChange()
 {
     m_value->setWidthPercentage(valueRatio()*100);
-    if (RenderObject* render = renderer())
+    if (RenderMeter* render = renderMeter())
         render->updateFromElement();
 }
 
+void HTMLMeterElement::willAddAuthorShadowRoot()
+{
+    m_hasAuthorShadowRoot = true;
+}
+
+RenderMeter* HTMLMeterElement::renderMeter() const
+{
+    if (renderer() && renderer()->isMeter())
+        return static_cast<RenderMeter*>(renderer());
+
+    RenderObject* renderObject = userAgentShadowRoot()->firstChild()->renderer();
+    ASSERT(!renderObject || renderObject->isMeter());
+    return static_cast<RenderMeter*>(renderObject);
+}
+
 void HTMLMeterElement::createShadowSubtree()
 {
-    ASSERT(!shadow());
+    ASSERT(!userAgentShadowRoot());
+           
+    RefPtr<ShadowRoot> root = ShadowRoot::create(this, ShadowRoot::UserAgentShadowRoot, ASSERT_NO_EXCEPTION);
+
+    RefPtr<MeterInnerElement> inner = MeterInnerElement::create(document());
+    root->appendChild(inner);
 
     RefPtr<MeterBarElement> bar = MeterBarElement::create(document());
     m_value = MeterValueElement::create(document());
     m_value->setWidthPercentage(0);
-    ExceptionCode ec = 0;
-    bar->appendChild(m_value, ec);
+    bar->appendChild(m_value, ASSERT_NO_EXCEPTION);
 
-    RefPtr<ShadowRoot> root = ShadowRoot::create(this, ShadowRoot::UserAgentShadowRoot);
-    root->appendChild(bar, ec);
+    inner->appendChild(bar, ASSERT_NO_EXCEPTION);
 }
 
 } // namespace
index 1883091..c1b611e 100644 (file)
@@ -27,6 +27,7 @@
 namespace WebCore {
 
 class MeterValueElement;
+class RenderMeter;
 
 class HTMLMeterElement : public LabelableElement {
 public:
@@ -38,6 +39,8 @@ public:
         GaugeRegionEvenLessGood
     };
 
+    bool hasAuthorShadowRoot() const { return m_hasAuthorShadowRoot; }
+
     double min() const;
     void setMin(double, ExceptionCode&);
 
@@ -65,6 +68,9 @@ private:
     HTMLMeterElement(const QualifiedName&, Document*);
     virtual ~HTMLMeterElement();
 
+    virtual void willAddAuthorShadowRoot() OVERRIDE;
+    RenderMeter* renderMeter() const;
+
     virtual bool supportLabels() const OVERRIDE { return true; }
 
     virtual bool supportsFocus() const;
@@ -78,8 +84,20 @@ private:
     void createShadowSubtree();
 
     RefPtr<MeterValueElement> m_value;
+    bool m_hasAuthorShadowRoot;
 };
 
+inline bool isHTMLMeterElement(Node* node)
+{
+    return node->hasTagName(HTMLNames::meterTag);
+}
+
+inline HTMLMeterElement* toHTMLMeterElement(Node* node)
+{
+    ASSERT(!node || isHTMLMeterElement(node));
+    return static_cast<HTMLMeterElement*>(node);
+}
+
 } // namespace
 
 #endif
index 3101bd1..441f013 100644 (file)
@@ -37,6 +37,7 @@
 #include "HTMLNames.h"
 #include "RenderMeter.h"
 #include "RenderTheme.h"
+#include "ShadowRoot.h"
 #include "StylePropertySet.h"
 
 namespace WebCore {
@@ -50,15 +51,38 @@ MeterShadowElement::MeterShadowElement(Document* document)
 
 HTMLMeterElement* MeterShadowElement::meterElement() const
 {
-    Element* element = shadowHost();
-    ASSERT(!element || element->hasTagName(meterTag));
-    return static_cast<HTMLMeterElement*>(element);
+    return toHTMLMeterElement(shadowHost());
 }
 
 bool MeterShadowElement::rendererIsNeeded(const NodeRenderingContext& context)
 {
-    RenderMeter* meterRenderer = toRenderMeter(meterElement()->renderer());
-    return meterRenderer && !meterRenderer->theme()->supportsMeter(meterRenderer->style()->appearance()) && HTMLDivElement::rendererIsNeeded(context);
+    RenderObject* render = meterElement()->renderer();
+    return render && !render->theme()->supportsMeter(render->style()->appearance()) && HTMLDivElement::rendererIsNeeded(context);
+}
+
+MeterInnerElement::MeterInnerElement(Document* document)
+    : MeterShadowElement(document)
+{
+}
+
+bool MeterInnerElement::rendererIsNeeded(const NodeRenderingContext& context)
+{
+    if (meterElement()->hasAuthorShadowRoot())
+        return HTMLDivElement::rendererIsNeeded(context);
+
+    RenderObject* render = meterElement()->renderer();
+    return render && !render->theme()->supportsMeter(render->style()->appearance()) && HTMLDivElement::rendererIsNeeded(context);
+}
+
+RenderObject* MeterInnerElement::createRenderer(RenderArena* arena, RenderStyle*)
+{
+    return new (arena) RenderMeter(this);
+}
+
+const AtomicString& MeterInnerElement::shadowPseudoId() const
+{
+    DEFINE_STATIC_LOCAL(AtomicString, pseudId, ("-webkit-meter-inner-element"));
+    return pseudId;
 }
 
 const AtomicString& MeterBarElement::shadowPseudoId() const
@@ -67,7 +91,6 @@ const AtomicString& MeterBarElement::shadowPseudoId() const
     return pseudId;
 }
 
-
 const AtomicString& MeterValueElement::shadowPseudoId() const
 {
     DEFINE_STATIC_LOCAL(AtomicString, optimumPseudId, ("-webkit-meter-optimum-value"));
index 6b8bf62..b67e0c1 100644 (file)
@@ -38,6 +38,7 @@
 namespace WebCore {
 
 class HTMLMeterElement;
+class RenderMeter;
 
 class MeterShadowElement : public HTMLDivElement {
 public:
@@ -48,6 +49,22 @@ private:
     virtual bool rendererIsNeeded(const NodeRenderingContext&);
 };
 
+class MeterInnerElement : public MeterShadowElement {
+public:
+    MeterInnerElement(Document*);
+    static PassRefPtr<MeterInnerElement> create(Document*);
+
+private:
+    virtual bool rendererIsNeeded(const NodeRenderingContext&) OVERRIDE;
+    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) OVERRIDE;
+    virtual const AtomicString& shadowPseudoId() const OVERRIDE;
+};
+
+inline PassRefPtr<MeterInnerElement> MeterInnerElement::create(Document* document)
+{
+    return adoptRef(new MeterInnerElement(document));
+}
+
 class MeterBarElement : public MeterShadowElement {
 public:
     MeterBarElement(Document* document) 
@@ -64,7 +81,6 @@ inline PassRefPtr<MeterBarElement> MeterBarElement::create(Document* document)
     return adoptRef(new MeterBarElement(document));
 }
 
-
 class MeterValueElement : public MeterShadowElement {
 public:
     MeterValueElement(Document* document) 
index 93b0172..497bef9 100644 (file)
@@ -32,7 +32,7 @@ namespace WebCore {
 
 using namespace HTMLNames;
 
-RenderMeter::RenderMeter(HTMLMeterElement* element)
+RenderMeter::RenderMeter(HTMLElement* element)
     : RenderBlock(element)
 {
 }
@@ -41,6 +41,17 @@ RenderMeter::~RenderMeter()
 {
 }
 
+HTMLMeterElement* RenderMeter::meterElement() const
+{
+    ASSERT(node());
+
+    if (isHTMLMeterElement(node()))
+        return toHTMLMeterElement(node());
+
+    ASSERT(node()->shadowHost());
+    return toHTMLMeterElement(node()->shadowHost());
+}
+
 void RenderMeter::computeLogicalWidth()
 {
     RenderBox::computeLogicalWidth();
@@ -55,7 +66,7 @@ void RenderMeter::computeLogicalHeight()
 
 double RenderMeter::valueRatio() const
 {
-    return static_cast<HTMLMeterElement*>(node())->valueRatio();
+    return meterElement()->valueRatio();
 }
 
 void RenderMeter::updateFromElement()
index 7306cae..edcb5b0 100644 (file)
@@ -32,17 +32,19 @@ class HTMLMeterElement;
 
 class RenderMeter : public RenderBlock {
 public:
-    RenderMeter(HTMLMeterElement*);
+    RenderMeter(HTMLElement*);
     virtual ~RenderMeter();
 
+    virtual void updateFromElement();
 private:
+    HTMLMeterElement* meterElement() const;
+    
     virtual void computeLogicalWidth();
     virtual void computeLogicalHeight();
 
     virtual const char* renderName() const { return "RenderMeter"; }
     virtual bool isMeter() const { return true; }
     virtual bool requiresForcedStyleRecalcPropagation() const { return true; }
-    virtual void updateFromElement();
 
     double valueRatio() const;
 };