2011-04-04  MORITA Hajime  <morrita@google.com>

        Reviewed by Kent Tamura.

        Convert <meter> shadow DOM to a DOM-based shadow.
        https://bugs.webkit.org/show_bug.cgi?id=50661

        Updated expectations due to shadow structure chagne.
        Also updated meter-styles.html pixel result because the render tree is now laid out
        as normal flexboxes and its layout result is actually different,
        especially if there are non-zero borders on shadow elements.

        * fast/dom/HTMLMeterElement/meter-styles.html:
        * platform/mac/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.txt:
        * platform/mac/fast/dom/HTMLMeterElement/meter-styles-expected.checksum:
        * platform/mac/fast/dom/HTMLMeterElement/meter-styles-expected.png:
        * platform/mac/fast/dom/HTMLMeterElement/meter-styles-expected.txt:
2011-04-04  MORITA Hajime  <morrita@google.com>

        Reviewed by Kent Tamura.

        Convert <meter> shadow DOM to a DOM-based shadow.
        https://bugs.webkit.org/show_bug.cgi?id=50661

        Eliminated a large part of <meter> custom layout code,
        which is replaced by a shadow tree.
        Note that the shadow tree is created on construction time and
        will remain during the host HTMLMeterElement lifecycle.

        * Android.mk:
        * CMakeLists.txt:
        * GNUmakefile.am:
        * WebCore.gypi:
        * WebCore.pro:
        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * css/CSSMutableStyleDeclaration.cpp:
        (WebCore::CSSMutableStyleDeclaration::setProperty):
        * css/CSSMutableStyleDeclaration.h:
        * css/CSSSelector.cpp:
        (WebCore::CSSSelector::pseudoId):
        (WebCore::nameToPseudoTypeMap):
        (WebCore::CSSSelector::extractPseudoType):
        * css/CSSSelector.h:
        * css/html.css:
        (meter):
        (meter::-webkit-meter-bar):
        (meter::-webkit-meter-optimum-value):
        (meter::-webkit-meter-suboptimum-value):
        (meter::-webkit-meter-even-less-good-value):
        * html/HTMLMeterElement.cpp:
        (WebCore::HTMLMeterElement::~HTMLMeterElement):
        (WebCore::HTMLMeterElement::parseMappedAttribute):
        (WebCore::HTMLMeterElement::attach):
        (WebCore::HTMLMeterElement::valueRatio):
        (WebCore::HTMLMeterElement::didElementStateChange):
        (WebCore::HTMLMeterElement::createShadowSubtree):
        * html/HTMLMeterElement.h:
        * html/shadow/MeterShadowElement.cpp: Added.
        (WebCore::MeterShadowElement::MeterShadowElement):
        (WebCore::MeterShadowElement::meterElement):
        (WebCore::MeterShadowElement::rendererIsNeeded):
        (WebCore::MeterBarElement::shadowPseudoId):
        (WebCore::MeterValueElement::shadowPseudoId):
        (WebCore::MeterValueElement::setWidthPercentage):
        * html/shadow/MeterShadowElement.h: Added.
        (WebCore::MeterBarElement::MeterBarElement):
        (WebCore::MeterBarElement::create):
        (WebCore::MeterValueElement::MeterValueElement):
        (WebCore::MeterValueElement::create):
        * rendering/RenderMeter.cpp:
        (WebCore::RenderMeter::RenderMeter):
        (WebCore::RenderMeter::~RenderMeter):
        (WebCore::RenderMeter::valueRatio):
        * rendering/RenderMeter.h:
        (WebCore::RenderMeter::renderName):
        (WebCore::RenderMeter::isMeter):
        (WebCore::RenderMeter::requiresForcedStyleRecalcPropagation):
        (WebCore::RenderMeter::canHaveChildren):

git-svn-id: svn://svn.chromium.org/blink/trunk@82899 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/Source/WebCore/css/html.css b/Source/WebCore/css/html.css
index 4b6362f..ed61740 100644
--- a/Source/WebCore/css/html.css
+++ b/Source/WebCore/css/html.css
@@ -673,34 +673,35 @@
 
 meter {
     -webkit-appearance: meter;
-    display: inline-block;
+    -webkit-box-sizing: border-box;
+    display: inline-box;
     height: 1em;
     width: 5em;
     vertical-align: -0.2em;
 }
 
-meter::-webkit-meter {
-    -webkit-appearance: meter;
-}
-
 meter::-webkit-meter-bar {
-    -webkit-appearance: meter;
     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%;
+    -webkit-box-sizing: border-box;
 }
 
 meter::-webkit-meter-optimum-value {
-    -webkit-appearance: meter;
     background: -webkit-gradient(linear, left top, left bottom, from(#ad7), to(#ad7), color-stop(0.20, #cea), color-stop(0.45, #7a3), color-stop(0.55, #7a3));
+    height: 100%;
+    -webkit-box-sizing: border-box;
 }
 
-meter::-webkit-meter-suboptimal-value {
-    -webkit-appearance: meter;
+meter::-webkit-meter-suboptimum-value {
     background: -webkit-gradient(linear, left top, left bottom, from(#fe7), to(#fe7), color-stop(0.20, #ffc), color-stop(0.45, #db3), color-stop(0.55, #db3));
+    height: 100%;
+    -webkit-box-sizing: border-box;
 }
 
 meter::-webkit-meter-even-less-good-value {
-    -webkit-appearance: meter;
     background: -webkit-gradient(linear, left top, left bottom, from(#f77), to(#f77), color-stop(0.20, #fcc), color-stop(0.45, #d44), color-stop(0.55, #d44));
+    height: 100%;
+    -webkit-box-sizing: border-box;
 }
 
 /* progress */