Changeset 82889 in webkit
- Timestamp:
- Apr 4, 2011 4:17:49 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 deleted
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r82887 r82889 1 2011-04-04 Adrienne Walker <enne@google.com> 2 3 Unreviewed, rolling out r82880. 4 http://trac.webkit.org/changeset/82880 5 https://bugs.webkit.org/show_bug.cgi?id=50661 6 7 Meter elements not rendered in Chromium Linux layout tests. 8 9 * fast/dom/HTMLMeterElement/meter-styles.html: 10 * platform/mac/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.txt: 11 * platform/mac/fast/dom/HTMLMeterElement/meter-styles-expected.checksum: 12 * platform/mac/fast/dom/HTMLMeterElement/meter-styles-expected.png: 13 * platform/mac/fast/dom/HTMLMeterElement/meter-styles-expected.txt: 14 1 15 2011-04-04 Dirk Pranke <dpranke@chromium.org> 2 16 -
trunk/LayoutTests/fast/dom/HTMLMeterElement/meter-styles.html
r82880 r82889 13 13 meter.barstyled::-webkit-meter-bar { background: gray; border-style: solid; border-width: 2px; border-color: #222; } 14 14 meter.valstyled::-webkit-meter-optimum-value { background: green; border-style: solid; border-width: 2px; border-color: #7c7; } 15 meter#bar-paddings { -webkit-appearance: none; }16 meter#bar-paddings::-webkit-meter-bar { padding: 5px; }17 15 </style> 18 16 </head> … … 58 56 </ul> 59 57 </div> 60 <h2>Providing bar paddings</h2>61 <div style="background-color: #eee">62 <meter id="bar-paddings" min="0" max="100" low="30" high="60" optimum="50" value="50" ></meter> has "padding" on the bar.63 </ul>64 </div>65 58 </body> 66 59 </html> -
trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-styles-changing-pseudo-expected.txt
r82880 r82889 13 13 RenderMeter {METER} at (0,0) size 80x16 14 14 RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] 15 15 RenderBlock {DIV} at (0,0) size 72x16 [bgcolor=#008000] 16 16 RenderText {#text} at (0,0) size 0x0 -
trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-styles-expected.checksum
r82880 r82889 1 f284e9ed2b55b4536bd76d97dcd4188b 1 68de127fae2b71bbf82c2d53c2787cc1 -
trunk/LayoutTests/platform/mac/fast/dom/HTMLMeterElement/meter-styles-expected.txt
r82880 r82889 11 11 RenderMeter {METER} at (0,1) size 80x16 12 12 RenderBlock {DIV} at (0,0) size 80x16 13 13 RenderBlock {DIV} at (0,0) size 20x16 14 14 RenderText {#text} at (80,0) size 4x18 15 15 text run at (80,0) width 4: " " 16 16 RenderMeter {METER} at (84,1) size 80x16 17 17 RenderBlock {DIV} at (0,0) size 80x16 18 18 RenderBlock {DIV} at (0,0) size 36x16 19 19 RenderText {#text} at (164,0) size 4x18 20 20 text run at (164,0) width 4: " " 21 21 RenderMeter {METER} at (168,1) size 80x16 22 22 RenderBlock {DIV} at (0,0) size 80x16 23 23 RenderBlock {DIV} at (0,0) size 60x16 24 24 RenderListItem {LI} at (43,21) size 732x41 25 25 RenderMeter {METER} at (0,0) size 30x40 … … 33 33 RenderText {#text} at (0,0) size 150x18 34 34 text run at (0,0) width 150: "Providing meter styles" 35 RenderBlock {DIV} at (0,107) size 784x 74[bgcolor=#EEEEEE]36 RenderBlock {UL} at (3,0) size 778x 7437 RenderListItem {LI} at (43,0) size 732x 1838 RenderMeter {METER} at (0, 1) size 150x16[bgcolor=#AAAACC] [border: (10px solid #222244) (50px solid #222244) (5px solid #222244) (100px solid #222244)]39 RenderBlock {DIV} at (100,10) size 0x140 RenderBlock {DIV} at (0,0) size 0x141 RenderText {#text} at ( 150,0) size 70x1842 text run at ( 150,0) width 70: " has border"43 RenderListItem {LI} at (43, 21) size 732x1844 RenderMeter {METER} at (0, 1) size 150x16[bgcolor=#AAAACC]45 RenderBlock {DIV} at (100,10) size 0x146 RenderBlock {DIV} at (0,0) size 0x147 RenderText {#text} at ( 150,0) size 80x1848 text run at ( 150,0) width 80: " has padding"49 RenderListItem {LI} at (43, 42) size 732x3235 RenderBlock {DIV} at (0,107) size 784x102 [bgcolor=#EEEEEE] 36 RenderBlock {UL} at (3,0) size 778x102 37 RenderListItem {LI} at (43,0) size 732x32 38 RenderMeter {METER} at (0,0) size 230x31 [bgcolor=#AAAACC] [border: (10px solid #222244) (50px solid #222244) (5px solid #222244) (100px solid #222244)] 39 RenderBlock {DIV} at (100,10) size 80x16 40 RenderBlock {DIV} at (100,10) size 64x16 41 RenderText {#text} at (230,14) size 70x18 42 text run at (230,14) width 70: " has border" 43 RenderListItem {LI} at (43,35) size 732x32 44 RenderMeter {METER} at (0,0) size 230x31 [bgcolor=#AAAACC] 45 RenderBlock {DIV} at (100,10) size 80x16 46 RenderBlock {DIV} at (100,10) size 64x16 47 RenderText {#text} at (230,14) size 80x18 48 text run at (230,14) width 80: " has padding" 49 RenderListItem {LI} at (43,70) size 732x32 50 50 RenderMeter {METER} at (100,10) size 80x16 [bgcolor=#AAAACC] 51 51 RenderBlock {DIV} at (0,0) size 80x16 52 52 RenderBlock {DIV} at (0,0) size 64x16 53 53 RenderText {#text} at (230,14) size 73x18 54 54 text run at (230,14) width 73: " has margin" 55 RenderBlock {H2} at (3, 184) size 778x1855 RenderBlock {H2} at (3,212) size 778x18 56 56 RenderText {#text} at (0,0) size 224x18 57 57 text run at (0,0) width 224: "Providing bar and/or value styles" 58 RenderBlock {DIV} at (0,2 05) size 784x165 [bgcolor=#EEEEEE]58 RenderBlock {DIV} at (0,233) size 784x165 [bgcolor=#EEEEEE] 59 59 RenderBlock {UL} at (3,0) size 778x81 60 60 RenderBlock (anonymous) at (40,0) size 738x18 … … 80 80 RenderMeter {METER} at (0,1) size 80x16 81 81 RenderBlock {DIV} at (0,0) size 80x16 82 82 RenderBlock {DIV} at (0,0) size 64x16 [bgcolor=#008000] [border: (2px solid #77CC77)] 83 83 RenderText {#text} at (80,0) size 270x18 84 84 text run at (80,0) width 270: " has bar style, should have solid value part." … … 86 86 RenderMeter {METER} at (0,1) size 80x16 87 87 RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)] 88 RenderBlock {DIV} at (2,2) size 60x1288 RenderBlock {DIV} at (0,0) size 64x16 89 89 RenderText {#text} at (80,0) size 255x18 90 90 text run at (80,0) width 255: " has value style, should be solid bar part." … … 92 92 RenderMeter {METER} at (0,1) size 80x16 93 93 RenderBlock {DIV} at (0,0) size 80x16 [bgcolor=#808080] [border: (2px solid #222222)] 94 RenderBlock {DIV} at (2,2) size 60x12[bgcolor=#008000] [border: (2px solid #77CC77)]94 RenderBlock {DIV} at (0,0) size 64x16 [bgcolor=#008000] [border: (2px solid #77CC77)] 95 95 RenderText {#text} at (80,0) size 235x18 96 96 text run at (80,0) width 235: " should have solid bar and value part." 97 RenderBlock {H2} at (3, 373) size 778x1897 RenderBlock {H2} at (3,401) size 778x18 98 98 RenderText {#text} at (0,0) size 156x18 99 99 text run at (0,0) width 156: "Providing appearances" 100 RenderBlock {DIV} at (0, 394) size 784x39 [bgcolor=#EEEEEE]100 RenderBlock {DIV} at (0,422) size 784x39 [bgcolor=#EEEEEE] 101 101 RenderBlock {UL} at (3,0) size 778x39 102 102 RenderListItem {LI} at (43,0) size 732x18 103 103 RenderMeter {METER} at (0,1) size 80x16 104 104 RenderBlock {DIV} at (0,0) size 80x16 105 105 RenderBlock {DIV} at (0,0) size 64x16 106 106 RenderText {#text} at (80,0) size 375x18 107 107 text run at (80,0) width 375: " has \"none\" appearance, should be styled with default style." … … 110 110 RenderText {#text} at (80,0) size 276x18 111 111 text run at (80,0) width 276: " has \"meter\" appearance, should be themed." 112 RenderBlock {H2} at (3,436) size 778x18113 RenderText {#text} at (0,0) size 161x18114 text run at (0,0) width 161: "Providing bar paddings"115 RenderBlock {DIV} at (0,457) size 784x18 [bgcolor=#EEEEEE]116 RenderMeter {METER} at (0,1) size 80x16117 RenderBlock {DIV} at (0,0) size 80x16118 RenderBlock {DIV} at (5,5) size 35x6119 RenderText {#text} at (80,0) size 165x18120 text run at (80,0) width 165: " has \"padding\" on the bar." -
trunk/Source/WebCore/Android.mk
r82882 r82889 356 356 \ 357 357 html/shadow/MediaControls.cpp \ 358 html/shadow/MeterShadowElement.cpp \359 358 html/shadow/SliderThumbElement.cpp \ 360 359 html/shadow/TextControlInnerElements.cpp \ -
trunk/Source/WebCore/CMakeLists.txt
r82882 r82889 875 875 876 876 html/shadow/MediaControls.cpp 877 html/shadow/MeterShadowElement.cpp878 877 html/shadow/SliderThumbElement.cpp 879 878 html/shadow/TextControlInnerElements.cpp -
trunk/Source/WebCore/ChangeLog
r82886 r82889 1 2011-04-04 Adrienne Walker <enne@google.com> 2 3 Unreviewed, rolling out r82880. 4 http://trac.webkit.org/changeset/82880 5 https://bugs.webkit.org/show_bug.cgi?id=50661 6 7 Meter elements not rendered in Chromium Linux layout tests 8 9 * Android.mk: 10 * CMakeLists.txt: 11 * GNUmakefile.am: 12 * WebCore.gypi: 13 * WebCore.pro: 14 * WebCore.vcproj/WebCore.vcproj: 15 * WebCore.xcodeproj/project.pbxproj: 16 * css/CSSMutableStyleDeclaration.cpp: 17 * css/CSSMutableStyleDeclaration.h: 18 * css/CSSSelector.cpp: 19 (WebCore::CSSSelector::pseudoId): 20 (WebCore::nameToPseudoTypeMap): 21 (WebCore::CSSSelector::extractPseudoType): 22 * css/CSSSelector.h: 23 * css/html.css: 24 (meter): 25 (meter::-webkit-meter): 26 (meter::-webkit-meter-bar): 27 (meter::-webkit-meter-optimum-value): 28 (meter::-webkit-meter-suboptimal-value): 29 (meter::-webkit-meter-even-less-good-value): 30 * html/HTMLMeterElement.cpp: 31 (WebCore::HTMLMeterElement::create): 32 (WebCore::HTMLMeterElement::parseMappedAttribute): 33 (WebCore::HTMLMeterElement::attach): 34 * html/HTMLMeterElement.h: 35 * html/shadow/MeterShadowElement.cpp: Removed. 36 * html/shadow/MeterShadowElement.h: Removed. 37 * rendering/RenderMeter.cpp: 38 (WebCore::RenderMeter::RenderMeter): 39 (WebCore::RenderMeter::~RenderMeter): 40 (WebCore::RenderMeter::createPart): 41 (WebCore::RenderMeter::updateFromElement): 42 (WebCore::RenderMeter::layoutParts): 43 (WebCore::RenderMeter::styleDidChange): 44 (WebCore::RenderMeter::shouldHaveParts): 45 (WebCore::RenderMeter::valueRatio): 46 (WebCore::RenderMeter::barPartRect): 47 (WebCore::RenderMeter::valuePartRect): 48 (WebCore::RenderMeter::valuePseudoId): 49 (WebCore::RenderMeter::barPseudoId): 50 (WebCore::RenderMeter::detachShadows): 51 (WebCore::RenderMeter::updateShadows): 52 * rendering/RenderMeter.h: 53 (WebCore::RenderMeter::renderName): 54 (WebCore::RenderMeter::isMeter): 55 (WebCore::RenderMeter::shadowAttached): 56 1 57 2011-04-04 Chang Shu <cshu@webkit.org> 2 58 -
trunk/Source/WebCore/GNUmakefile.am
r82882 r82889 1924 1924 Source/WebCore/html/shadow/MediaControls.cpp \ 1925 1925 Source/WebCore/html/shadow/MediaControls.h \ 1926 Source/WebCore/html/shadow/MeterShadowElement.cpp \1927 Source/WebCore/html/shadow/MeterShadowElement.h \1928 1926 Source/WebCore/html/shadow/ProgressBarValueElement.h \ 1929 1927 Source/WebCore/html/shadow/SliderThumbElement.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r82882 r82889 3148 3148 'html/shadow/MediaControls.cpp', 3149 3149 'html/shadow/MediaControls.h', 3150 'html/shadow/MeterShadowElement.cpp',3151 'html/shadow/MeterShadowElement.h',3152 3150 'html/shadow/ProgressBarValueElement.h', 3153 3151 'html/shadow/SliderThumbElement.cpp', -
trunk/Source/WebCore/WebCore.pro
r82882 r82889 802 802 html/parser/XSSFilter.cpp \ 803 803 html/shadow/MediaControls.cpp \ 804 html/shadow/MeterShadowElement.cpp \805 804 html/shadow/SliderThumbElement.cpp \ 806 805 html/shadow/TextControlInnerElements.cpp \ -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r82882 r82889 56358 56358 </File> 56359 56359 <File 56360 RelativePath="..\html\shadow\MeterShadowElement.cpp"56361 >56362 </File>56363 <File56364 RelativePath="..\html\shadow\MeterShadowElement.h"56365 >56366 </File>56367 <File56368 56360 RelativePath="..\html\shadow\ProgressBarValueElement.h" 56369 56361 > -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r82882 r82889 3219 3219 A77D0012133B0AEB00D6658C /* TextChecking.h in Headers */ = {isa = PBXBuildFile; fileRef = A77D0011133B0AEB00D6658C /* TextChecking.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3220 3220 A784941B0B5FE507001E237A /* Clipboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A784941A0B5FE507001E237A /* Clipboard.cpp */; }; 3221 A78E526F1346BD1700AD9C31 /* MeterShadowElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A78E526D1346BD1700AD9C31 /* MeterShadowElement.cpp */; };3222 A78E52701346BD1700AD9C31 /* MeterShadowElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A78E526E1346BD1700AD9C31 /* MeterShadowElement.h */; };3223 3221 A78FE13B12366B1000ACE8D0 /* SpellChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A78FE13912366B1000ACE8D0 /* SpellChecker.cpp */; }; 3224 3222 A78FE13C12366B1000ACE8D0 /* SpellChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = A78FE13A12366B1000ACE8D0 /* SpellChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 9735 9733 A77D0011133B0AEB00D6658C /* TextChecking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextChecking.h; sourceTree = "<group>"; }; 9736 9734 A784941A0B5FE507001E237A /* Clipboard.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Clipboard.cpp; sourceTree = "<group>"; }; 9737 A78E526D1346BD1700AD9C31 /* MeterShadowElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MeterShadowElement.cpp; sourceTree = "<group>"; };9738 A78E526E1346BD1700AD9C31 /* MeterShadowElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MeterShadowElement.h; sourceTree = "<group>"; };9739 9735 A78FE13912366B1000ACE8D0 /* SpellChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpellChecker.cpp; sourceTree = "<group>"; }; 9740 9736 A78FE13A12366B1000ACE8D0 /* SpellChecker.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = SpellChecker.h; sourceTree = "<group>"; }; … … 13418 13414 4157AF7F12F1FB0400A8C6F5 /* MediaControls.cpp */, 13419 13415 4157AF7E12F1FB0400A8C6F5 /* MediaControls.h */, 13420 A78E526D1346BD1700AD9C31 /* MeterShadowElement.cpp */,13421 A78E526E1346BD1700AD9C31 /* MeterShadowElement.h */,13422 13416 A7FE819B12FA677700850C1E /* ProgressBarValueElement.h */, 13423 13417 4150F9F012B6E0E70008C860 /* SliderThumbElement.cpp */, … … 21839 21833 89878569122CA064003AABDA /* Metadata.h in Headers */, 21840 21834 8987856A122CA064003AABDA /* MetadataCallback.h in Headers */, 21841 A78E52701346BD1700AD9C31 /* MeterShadowElement.h in Headers */,21842 21835 BC772C4F0C4EB3040083285F /* MIMETypeRegistry.h in Headers */, 21843 21836 C6D74AD509AA282E000B0A52 /* ModifySelectionListLevel.h in Headers */, … … 24724 24717 E1ADECC00E76ACF1004A1A5E /* MessagePort.cpp in Sources */, 24725 24718 41BF700B0FE86F49005E8DEC /* MessagePortChannel.cpp in Sources */, 24726 A78E526F1346BD1700AD9C31 /* MeterShadowElement.cpp in Sources */,24727 24719 BC772C4E0C4EB3040083285F /* MIMETypeRegistry.cpp in Sources */, 24728 24720 BC772C5E0C4EB3440083285F /* MIMETypeRegistryMac.mm in Sources */, -
trunk/Source/WebCore/css/CSSMutableStyleDeclaration.cpp
r82880 r82889 606 606 } 607 607 608 bool CSSMutableStyleDeclaration::setProperty(int propertyID, double value, CSSPrimitiveValue::UnitTypes unit, bool important, bool notifyChanged)609 {610 CSSProperty property(propertyID, CSSPrimitiveValue::create(value, unit), important);611 setPropertyInternal(property);612 if (notifyChanged)613 setNeedsStyleRecalc();614 return true;615 }616 617 608 void CSSMutableStyleDeclaration::setStringProperty(int propertyId, const String &value, CSSPrimitiveValue::UnitTypes type, bool important) 618 609 { -
trunk/Source/WebCore/css/CSSMutableStyleDeclaration.h
r82880 r82889 110 110 111 111 bool setProperty(int propertyID, int value, bool important = false, bool notifyChanged = true); 112 bool setProperty(int propertyId, double value, CSSPrimitiveValue::UnitTypes, bool important = false, bool notifyChanged = true);113 112 bool setProperty(int propertyID, const String& value, bool important = false, bool notifyChanged = true); 114 113 … … 119 118 void setStringProperty(int propertyId, const String& value, CSSPrimitiveValue::UnitTypes, bool important = false); // parsed string value 120 119 void setImageProperty(int propertyId, const String& url, bool important = false); 121 120 122 121 // The following parses an entire new style declaration. 123 122 void parseDeclaration(const String& styleDeclaration); -
trunk/Source/WebCore/css/CSSSelector.cpp
r82880 r82889 161 161 case PseudoOuterSpinButton: 162 162 return OUTER_SPIN_BUTTON; 163 #if ENABLE(METER_TAG) 164 case PseudoMeterBar: 165 return METER_BAR; 166 case PseudoMeterOptimum: 167 return METER_OPTIMUM; 168 case PseudoMeterSuboptimal: 169 return METER_SUBOPTIMAL; 170 case PseudoMeterEvenLessGood: 171 return METER_EVEN_LESS_GOOD; 172 #else 173 case PseudoMeterBar: 174 case PseudoMeterOptimum: 175 case PseudoMeterSuboptimal: 176 case PseudoMeterEvenLessGood: 177 ASSERT_NOT_REACHED(); 178 return NOPSEUDO; 179 #endif 180 163 181 #if ENABLE(FULLSCREEN_API) 164 182 case PseudoFullScreen: … … 286 304 DEFINE_STATIC_LOCAL(AtomicString, optional, ("optional")); 287 305 DEFINE_STATIC_LOCAL(AtomicString, outerSpinButton, ("-webkit-outer-spin-button")); 306 #if ENABLE(METER_TAG) 307 DEFINE_STATIC_LOCAL(AtomicString, meterBar, ("-webkit-meter-bar")); 308 DEFINE_STATIC_LOCAL(AtomicString, meterOptimumValue, ("-webkit-meter-optimum-value")); 309 DEFINE_STATIC_LOCAL(AtomicString, meterSuboptimalValue, ("-webkit-meter-suboptimal-value")); 310 DEFINE_STATIC_LOCAL(AtomicString, meterEvenLessGoodValue, ("-webkit-meter-even-less-good-value")); 311 #endif 312 288 313 DEFINE_STATIC_LOCAL(AtomicString, required, ("required")); 289 314 DEFINE_STATIC_LOCAL(AtomicString, resizer, ("-webkit-resizer")); … … 373 398 nameToPseudoType->set(nthLastOfType.impl(), CSSSelector::PseudoNthLastOfType); 374 399 nameToPseudoType->set(outerSpinButton.impl(), CSSSelector::PseudoOuterSpinButton); 400 #if ENABLE(METER_TAG) 401 nameToPseudoType->set(meterBar.impl(), CSSSelector::PseudoMeterBar); 402 nameToPseudoType->set(meterOptimumValue.impl(), CSSSelector::PseudoMeterOptimum); 403 nameToPseudoType->set(meterSuboptimalValue.impl(), CSSSelector::PseudoMeterSuboptimal); 404 nameToPseudoType->set(meterEvenLessGoodValue.impl(), CSSSelector::PseudoMeterEvenLessGood); 405 #endif 375 406 nameToPseudoType->set(root.impl(), CSSSelector::PseudoRoot); 376 407 nameToPseudoType->set(windowInactive.impl(), CSSSelector::PseudoWindowInactive); … … 447 478 #endif 448 479 case PseudoInnerSpinButton: 480 case PseudoMeterBar: 481 case PseudoMeterOptimum: 482 case PseudoMeterSuboptimal: 483 case PseudoMeterEvenLessGood: 484 case PseudoOuterSpinButton: 449 485 case PseudoResizer: 450 486 case PseudoScrollbar: -
trunk/Source/WebCore/css/CSSSelector.h
r82880 r82889 183 183 PseudoSearchResultsDecoration, 184 184 PseudoSearchResultsButton, 185 PseudoMeterBar, 186 PseudoMeterOptimum, 187 PseudoMeterSuboptimal, 188 PseudoMeterEvenLessGood, 185 189 PseudoInputListButton, 186 190 #if ENABLE(INPUT_SPEECH) -
trunk/Source/WebCore/css/html.css
r82880 r82889 674 674 meter { 675 675 -webkit-appearance: meter; 676 -webkit-box-sizing: border-box; 677 display: inline-box; 676 display: inline-block; 678 677 height: 1em; 679 678 width: 5em; … … 681 680 } 682 681 682 meter::-webkit-meter { 683 -webkit-appearance: meter; 684 } 685 683 686 meter::-webkit-meter-bar { 687 -webkit-appearance: meter; 684 688 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)); 685 height: 100%;686 -webkit-box-sizing: border-box;687 689 } 688 690 689 691 meter::-webkit-meter-optimum-value { 692 -webkit-appearance: meter; 690 693 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)); 691 height: 100%; 692 -webkit-box-sizing: border-box; 693 } 694 695 meter::-webkit-meter-suboptimum-value { 694 } 695 696 meter::-webkit-meter-suboptimal-value { 697 -webkit-appearance: meter; 696 698 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)); 697 height: 100%;698 -webkit-box-sizing: border-box;699 699 } 700 700 701 701 meter::-webkit-meter-even-less-good-value { 702 -webkit-appearance: meter; 702 703 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)); 703 height: 100%;704 -webkit-box-sizing: border-box;705 704 } 706 705 -
trunk/Source/WebCore/html/HTMLMeterElement.cpp
r82880 r82889 30 30 #include "HTMLNames.h" 31 31 #include "HTMLParserIdioms.h" 32 #include "MeterShadowElement.h"33 32 #include "RenderMeter.h" 34 33 #include <wtf/StdLibExtras.h> … … 44 43 } 45 44 46 HTMLMeterElement::~HTMLMeterElement()47 {48 }49 50 45 PassRefPtr<HTMLMeterElement> HTMLMeterElement::create(const QualifiedName& tagName, Document* document, HTMLFormElement* form) 51 46 { 52 RefPtr<HTMLMeterElement> meter = adoptRef(new HTMLMeterElement(tagName, document, form)); 53 meter->createShadowSubtree(); 54 return meter; 47 return adoptRef(new HTMLMeterElement(tagName, document, form)); 55 48 } 56 49 … … 68 61 void HTMLMeterElement::parseMappedAttribute(Attribute* attribute) 69 62 { 70 if (attribute->name() == valueAttr || attribute->name() == minAttr || attribute->name() == maxAttr || attribute->name() == lowAttr || attribute->name() == highAttr || attribute->name() == optimumAttr) 71 didElementStateChange(); 72 else 63 if (attribute->name() == valueAttr || attribute->name() == minAttr || attribute->name() == maxAttr || attribute->name() == lowAttr || attribute->name() == highAttr || attribute->name() == optimumAttr) { 64 if (renderer()) 65 renderer()->updateFromElement(); 66 } else 73 67 HTMLFormControlElement::parseMappedAttribute(attribute); 74 68 } … … 77 71 { 78 72 HTMLFormControlElement::attach(); 79 didElementStateChange(); 73 if (renderer()) 74 renderer()->updateFromElement(); 80 75 } 81 76 … … 209 204 } 210 205 211 double HTMLMeterElement::valueRatio() const212 {213 double min = this->min();214 double max = this->max();215 double value = this->value();216 217 if (max <= min)218 return 0;219 return (value - min) / (max - min);220 }221 222 void HTMLMeterElement::didElementStateChange()223 {224 m_value->setWidthPercentage(valueRatio()*100);225 }226 227 void HTMLMeterElement::createShadowSubtree()228 {229 RefPtr<MeterBarElement> bar = MeterBarElement::create(document());230 m_value = MeterValueElement::create(document());231 ExceptionCode ec = 0;232 bar->appendChild(m_value, ec);233 setShadowRoot(bar);234 }235 236 206 } // namespace 237 207 #endif -
trunk/Source/WebCore/html/HTMLMeterElement.h
r82880 r82889 26 26 27 27 namespace WebCore { 28 29 class MeterValueElement;30 28 31 29 class HTMLMeterElement : public HTMLFormControlElement { … … 57 55 void setOptimum(double, ExceptionCode&); 58 56 59 double valueRatio() const;60 57 GaugeRegion gaugeRegion() const; 61 62 58 private: 63 59 HTMLMeterElement(const QualifiedName&, Document*, HTMLFormElement*); 64 virtual ~HTMLMeterElement();65 60 66 61 virtual bool recalcWillValidate() const { return false; } 62 67 63 virtual const AtomicString& formControlType() const; 64 68 65 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 66 69 67 virtual void parseMappedAttribute(Attribute*); 68 70 69 virtual void attach(); 71 72 void didElementStateChange();73 void createShadowSubtree();74 75 RefPtr<MeterValueElement> m_value;76 70 }; 77 71 -
trunk/Source/WebCore/rendering/RenderMeter.cpp
r82880 r82889 37 37 38 38 RenderMeter::RenderMeter(HTMLMeterElement* element) 39 : Render Block(element)39 : RenderIndicator(element) 40 40 { 41 41 } … … 43 43 RenderMeter::~RenderMeter() 44 44 { 45 detachShadows(); 46 } 47 48 PassRefPtr<ShadowBlockElement> RenderMeter::createPart(PseudoId pseudoId) 49 { 50 RefPtr<ShadowBlockElement> element = ShadowBlockElement::createForPart(toHTMLElement(node()), pseudoId); 51 if (element->renderer()) 52 addChild(element->renderer()); 53 return element; 54 } 55 56 void RenderMeter::updateFromElement() 57 { 58 updateShadows(); 59 RenderIndicator::updateFromElement(); 45 60 } 46 61 … … 57 72 } 58 73 74 void RenderMeter::layoutParts() 75 { 76 if (shadowAttached()) { 77 m_barPart->layoutAsPart(barPartRect()); 78 m_valuePart->layoutAsPart(valuePartRect()); 79 } 80 } 81 82 void RenderMeter::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) 83 { 84 RenderBlock::styleDidChange(diff, oldStyle); 85 86 if (!oldStyle) 87 return; 88 89 if (oldStyle->appearance() != style()->appearance()) { 90 detachShadows(); 91 updateShadows(); 92 } 93 } 94 95 bool RenderMeter::shouldHaveParts() const 96 { 97 return !theme()->supportsMeter(style()->appearance()); 98 } 99 59 100 double RenderMeter::valueRatio() const 60 101 { 61 return static_cast<HTMLMeterElement*>(node())->valueRatio(); 102 HTMLMeterElement* element = static_cast<HTMLMeterElement*>(node()); 103 double min = element->min(); 104 double max = element->max(); 105 double value = element->value(); 106 107 if (max <= min) 108 return 0; 109 return (value - min) / (max - min); 110 } 111 112 IntRect RenderMeter::barPartRect() const 113 { 114 return IntRect(borderLeft() + paddingLeft(), borderTop() + paddingTop(), lround(width() - borderLeft() - paddingLeft() - borderRight() - paddingRight()), height() - borderTop() - paddingTop() - borderBottom() - paddingBottom()); 115 } 116 117 IntRect RenderMeter::valuePartRect() const 118 { 119 IntRect rect = barPartRect(); 120 int width = static_cast<int>(rect.width()*valueRatio()); 121 if (!style()->isLeftToRightDirection()) { 122 rect.setX(rect.x() + (rect.width() - width)); 123 rect.setWidth(width); 124 } else 125 rect.setWidth(width); 126 127 return rect; 128 } 129 130 PseudoId RenderMeter::valuePseudoId() const 131 { 132 HTMLMeterElement* element = static_cast<HTMLMeterElement*>(node()); 133 134 switch (element->gaugeRegion()) { 135 case HTMLMeterElement::GaugeRegionOptimum: 136 return METER_OPTIMUM; 137 case HTMLMeterElement::GaugeRegionSuboptimal: 138 return METER_SUBOPTIMAL; 139 case HTMLMeterElement::GaugeRegionEvenLessGood: 140 return METER_EVEN_LESS_GOOD; 141 } 142 143 ASSERT_NOT_REACHED(); 144 return NOPSEUDO; 145 } 146 147 PseudoId RenderMeter::barPseudoId() const 148 { 149 return METER_BAR; 150 } 151 152 void RenderMeter::detachShadows() 153 { 154 if (shadowAttached()) { 155 m_valuePart->detach(); 156 m_valuePart = 0; 157 m_barPart->detach(); 158 m_barPart = 0; 159 } 160 } 161 162 void RenderMeter::updateShadows() 163 { 164 if (!shadowAttached() && shouldHaveParts()) { 165 m_barPart = createPart(barPseudoId()); 166 m_valuePart = createPart(valuePseudoId()); 167 } 168 169 if (shadowAttached()) { 170 m_barPart->updateStyleForPart(barPseudoId()); 171 m_valuePart->updateStyleForPart(valuePseudoId()); 172 } 62 173 } 63 174 -
trunk/Source/WebCore/rendering/RenderMeter.h
r82880 r82889 33 33 class ShadowBlockElement; 34 34 35 class RenderMeter : public Render Block{35 class RenderMeter : public RenderIndicator { 36 36 public: 37 37 RenderMeter(HTMLMeterElement*); … … 39 39 40 40 private: 41 virtual const char* renderName() const { return "RenderMeter"; } 42 virtual bool isMeter() const { return true; } 43 virtual void updateFromElement(); 41 44 virtual void computeLogicalWidth(); 42 45 virtual void computeLogicalHeight(); 43 46 44 virtual const char* renderName() const { return "RenderMeter"; } 45 virtual bool isMeter() const { return true; } 46 virtual bool requiresForcedStyleRecalcPropagation() const { return true; } 47 virtual bool canHaveChildren() const { return false; } 47 virtual void layoutParts(); 48 virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); 49 50 void updateShadows(); 51 void detachShadows(); 52 53 bool shadowAttached() const { return m_barPart; } 54 IntRect valuePartRect() const; 55 PseudoId valuePseudoId() const; 56 IntRect barPartRect() const; 57 PseudoId barPseudoId() const; 48 58 49 59 double valueRatio() const; 60 bool shouldHaveParts() const; 61 PassRefPtr<ShadowBlockElement> createPart(PseudoId); 62 63 RefPtr<ShadowBlockElement> m_barPart; 64 RefPtr<ShadowBlockElement> m_valuePart; 50 65 }; 51 66
Note: See TracChangeset
for help on using the changeset viewer.