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 */