Changeset 77112 in webkit
- Timestamp:
- Jan 30, 2011 10:18:13 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r77110 r77112 1 2011-01-30 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r77107. 4 http://trac.webkit.org/changeset/77107 5 https://bugs.webkit.org/show_bug.cgi?id=53412 6 7 Caused 5 new form-related test crashes (Requested by smfr on 8 #webkit). 9 10 * css/CSSSelector.cpp: 11 (WebCore::CSSSelector::pseudoId): 12 (WebCore::nameToPseudoTypeMap): 13 (WebCore::CSSSelector::extractPseudoType): 14 * css/CSSSelector.h: 15 * html/HTMLProgressElement.cpp: 16 (WebCore::HTMLProgressElement::parseMappedAttribute): 17 (WebCore::HTMLProgressElement::attach): 18 * html/HTMLProgressElement.h: 19 * rendering/RenderProgress.cpp: 20 (WebCore::RenderProgress::~RenderProgress): 21 (WebCore::RenderProgress::updateFromElement): 22 (WebCore::RenderProgress::layoutParts): 23 (WebCore::RenderProgress::shouldHaveParts): 24 * rendering/RenderProgress.h: 25 * rendering/style/RenderStyleConstants.h: 26 1 27 2011-01-30 Simon Fraser <simon.fraser@apple.com> 2 28 -
trunk/Source/WebCore/css/CSSSelector.cpp
r77107 r77112 169 169 case PseudoOuterSpinButton: 170 170 return OUTER_SPIN_BUTTON; 171 case PseudoProgressBarValue: 172 #if ENABLE(PROGRESS_TAG) 173 return PROGRESS_BAR_VALUE; 174 #else 175 ASSERT_NOT_REACHED(); 176 return NOPSEUDO; 177 #endif 178 171 179 #if ENABLE(METER_TAG) 172 180 case PseudoMeterHorizontalBar: … … 328 336 DEFINE_STATIC_LOCAL(AtomicString, optional, ("optional")); 329 337 DEFINE_STATIC_LOCAL(AtomicString, outerSpinButton, ("-webkit-outer-spin-button")); 338 #if ENABLE(PROGRESS_TAG) 339 DEFINE_STATIC_LOCAL(AtomicString, progressBarValue, ("-webkit-progress-bar-value")); 340 #endif 341 330 342 #if ENABLE(METER_TAG) 331 343 DEFINE_STATIC_LOCAL(AtomicString, meterHorizontalBar, ("-webkit-meter-horizontal-bar")); … … 431 443 nameToPseudoType->set(nthLastOfType.impl(), CSSSelector::PseudoNthLastOfType); 432 444 nameToPseudoType->set(outerSpinButton.impl(), CSSSelector::PseudoOuterSpinButton); 445 #if ENABLE(PROGRESS_TAG) 446 nameToPseudoType->set(progressBarValue.impl(), CSSSelector::PseudoProgressBarValue); 447 #endif 433 448 #if ENABLE(METER_TAG) 434 449 nameToPseudoType->set(meterHorizontalBar.impl(), CSSSelector::PseudoMeterHorizontalBar); … … 530 545 case PseudoMeterVerticalEvenLessGood: 531 546 case PseudoOuterSpinButton: 547 case PseudoProgressBarValue: 532 548 case PseudoResizer: 533 549 case PseudoScrollbar: -
trunk/Source/WebCore/css/CSSSelector.h
r77107 r77112 196 196 PseudoInnerSpinButton, 197 197 PseudoOuterSpinButton, 198 PseudoProgressBarValue, 198 199 PseudoLeftPage, 199 200 PseudoRightPage, -
trunk/Source/WebCore/html/HTMLProgressElement.cpp
r77107 r77112 31 31 #include "HTMLParserIdioms.h" 32 32 #include "RenderProgress.h" 33 #include "ShadowElement.h"34 33 #include <wtf/StdLibExtras.h> 35 34 … … 37 36 38 37 using namespace HTMLNames; 39 40 class ProgressBarValueElement : public ShadowBlockElement {41 public:42 ProgressBarValueElement(HTMLElement* shadowParent)43 : ShadowBlockElement(shadowParent)44 {45 }46 47 virtual const AtomicString& shadowPseudoId() const48 {49 DEFINE_STATIC_LOCAL(AtomicString, pseudId, ("-webkit-progress-bar-value"));50 return pseudId;51 }52 53 static PassRefPtr<ProgressBarValueElement> create(HTMLElement* shadowParent)54 {55 return adoptRef(new ProgressBarValueElement(shadowParent));56 }57 58 };59 38 60 39 HTMLProgressElement::HTMLProgressElement(const QualifiedName& tagName, Document* document, HTMLFormElement* form) … … 82 61 void HTMLProgressElement::parseMappedAttribute(Attribute* attribute) 83 62 { 84 if (attribute->name() == valueAttr) 85 didElementStateChange(); 86 else if (attribute->name() == maxAttr) 87 didElementStateChange(); 88 else 63 if (attribute->name() == valueAttr) { 64 if (renderer()) 65 renderer()->updateFromElement(); 66 } else if (attribute->name() == maxAttr) { 67 if (renderer()) 68 renderer()->updateFromElement(); 69 } else 89 70 HTMLFormControlElement::parseMappedAttribute(attribute); 90 71 } … … 92 73 void HTMLProgressElement::attach() 93 74 { 94 createShadowSubtreeIfNeeded();95 75 HTMLFormControlElement::attach(); 96 didElementStateChange(); 76 if (renderer()) 77 renderer()->updateFromElement(); 97 78 } 98 79 … … 141 122 } 142 123 143 ShadowBlockElement* HTMLProgressElement::valuePart()144 {145 return static_cast<ShadowBlockElement*>(shadowRoot());146 }147 148 void HTMLProgressElement::didElementStateChange()149 {150 if (renderer())151 renderer()->updateFromElement();152 }153 154 void HTMLProgressElement::createShadowSubtreeIfNeeded()155 {156 if (shadowRoot())157 return;158 setShadowRoot(ProgressBarValueElement::create(this).get());159 }160 161 124 } // namespace 162 125 #endif -
trunk/Source/WebCore/html/HTMLProgressElement.h
r77107 r77112 27 27 namespace WebCore { 28 28 29 class ShadowBlockElement;30 31 29 class HTMLProgressElement : public HTMLFormControlElement { 32 30 public: … … 41 39 double position() const; 42 40 43 ShadowBlockElement* valuePart();44 41 private: 45 42 HTMLProgressElement(const QualifiedName&, Document*, HTMLFormElement*); … … 54 51 55 52 virtual void attach(); 56 57 void didElementStateChange();58 void createShadowSubtreeIfNeeded();59 53 }; 60 54 -
trunk/Source/WebCore/rendering/RenderProgress.cpp
r77107 r77112 50 50 RenderProgress::~RenderProgress() 51 51 { 52 if (m_valuePart) 53 m_valuePart->detach(); 52 54 } 53 55 54 56 void RenderProgress::updateFromElement() 55 57 { 58 if (!m_valuePart) { 59 m_valuePart = ShadowBlockElement::createForPart(static_cast<HTMLElement*>(node()), PROGRESS_BAR_VALUE); 60 if (m_valuePart->renderer()) 61 addChild(m_valuePart->renderer()); 62 } 63 56 64 if (shouldHaveParts()) 57 65 style()->setAppearance(NoControlPart); 58 else if ( valuePart()->renderer())59 valuePart()->renderer()->style()->setVisibility(HIDDEN);66 else if (m_valuePart->renderer()) 67 m_valuePart->renderer()->style()->setVisibility(HIDDEN); 60 68 61 69 HTMLProgressElement* element = progressElement(); … … 95 103 void RenderProgress::layoutParts() 96 104 { 97 valuePart()->layoutAsPart(valuePartRect());105 m_valuePart->layoutAsPart(valuePartRect()); 98 106 updateAnimationState(); 99 107 } … … 103 111 if (!style()->hasAppearance()) 104 112 return true; 105 if ( !(valuePart()->renderer() && valuePart()->renderer()->style()->hasAppearance()))113 if (ShadowBlockElement::partShouldHaveStyle(this, PROGRESS_BAR_VALUE)) 106 114 return true; 107 115 return false; … … 138 146 } 139 147 140 ShadowBlockElement* RenderProgress::valuePart() const141 {142 return progressElement()->valuePart();143 }144 145 148 } // namespace WebCore 146 149 -
trunk/Source/WebCore/rendering/RenderProgress.h
r77107 r77112 58 58 void updateAnimationState(); 59 59 60 ShadowBlockElement* valuePart() const;61 62 60 double m_position; 63 61 double m_animationStartTime; … … 66 64 bool m_animating; 67 65 Timer<RenderProgress> m_animationTimer; 66 RefPtr<ShadowBlockElement> m_valuePart; 68 67 }; 69 68 -
trunk/Source/WebCore/rendering/style/RenderStyleConstants.h
r77107 r77112 72 72 MEDIA_CONTROLS_TIMELINE_CONTAINER, MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER, MEDIA_CONTROLS_CURRENT_TIME_DISPLAY, MEDIA_CONTROLS_TIME_REMAINING_DISPLAY, 73 73 MEDIA_CONTROLS_STATUS_DISPLAY, SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER, 74 INPUT_LIST_BUTTON, INPUT_SPEECH_BUTTON, INNER_SPIN_BUTTON, OUTER_SPIN_BUTTON, VISITED_LINK, 74 INPUT_LIST_BUTTON, INPUT_SPEECH_BUTTON, INNER_SPIN_BUTTON, OUTER_SPIN_BUTTON, VISITED_LINK, PROGRESS_BAR_VALUE, 75 75 METER_HORIZONTAL_BAR, METER_HORIZONTAL_OPTIMUM, METER_HORIZONTAL_SUBOPTIMAL, METER_HORIZONTAL_EVEN_LESS_GOOD, 76 76 METER_VERTICAL_BAR, METER_VERTICAL_OPTIMUM, METER_VERTICAL_SUBOPTIMAL, METER_VERTICAL_EVEN_LESS_GOOD,
Note: See TracChangeset
for help on using the changeset viewer.