diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-24 17:03:20 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-24 17:03:20 +0200 |
commit | 08d4a74d56ca431877819fc4566e27eafe150342 (patch) | |
tree | ebd8530838ab390c015c6b7e659a22852c1663ae /Source/WebCore/html/shadow | |
parent | 1de6cd4794bbd5a52189384189a2b8df1848b39b (diff) | |
download | qtwebkit-08d4a74d56ca431877819fc4566e27eafe150342.tar.gz |
Imported WebKit commit 0fbd41c4e13f5a190faf160bf993eee614e6e18e (http://svn.webkit.org/repository/webkit/trunk@123477)
New snapshot that adapts to latest Qt API changes
Diffstat (limited to 'Source/WebCore/html/shadow')
7 files changed, 41 insertions, 35 deletions
diff --git a/Source/WebCore/html/shadow/DetailsMarkerControl.cpp b/Source/WebCore/html/shadow/DetailsMarkerControl.cpp index b3be3c45c..b109ef8eb 100644 --- a/Source/WebCore/html/shadow/DetailsMarkerControl.cpp +++ b/Source/WebCore/html/shadow/DetailsMarkerControl.cpp @@ -63,9 +63,9 @@ const AtomicString& DetailsMarkerControl::shadowPseudoId() const HTMLSummaryElement* DetailsMarkerControl::summaryElement() { - Node* node = this->shadowAncestorNode(); - ASSERT(!node || toElement(node)->hasTagName(summaryTag)); - return static_cast<HTMLSummaryElement*>(node); + Element* element = shadowHost(); + ASSERT(!element || element->hasTagName(summaryTag)); + return static_cast<HTMLSummaryElement*>(element); } } diff --git a/Source/WebCore/html/shadow/MediaControlElements.cpp b/Source/WebCore/html/shadow/MediaControlElements.cpp index 74f6788a2..731449610 100644 --- a/Source/WebCore/html/shadow/MediaControlElements.cpp +++ b/Source/WebCore/html/shadow/MediaControlElements.cpp @@ -68,7 +68,11 @@ static const float cScanMaximumRate = 8; HTMLMediaElement* toParentMediaElement(Node* node) { - Node* mediaNode = node ? node->shadowAncestorNode() : 0; + if (!node) + return 0; + Node* mediaNode = node->shadowHost(); + if (!mediaNode) + mediaNode = node; if (!mediaNode || !mediaNode->isElementNode() || !static_cast<Element*>(mediaNode)->isMediaElement()) return 0; diff --git a/Source/WebCore/html/shadow/MeterShadowElement.cpp b/Source/WebCore/html/shadow/MeterShadowElement.cpp index 2d4d84481..3101bd124 100644 --- a/Source/WebCore/html/shadow/MeterShadowElement.cpp +++ b/Source/WebCore/html/shadow/MeterShadowElement.cpp @@ -50,9 +50,9 @@ MeterShadowElement::MeterShadowElement(Document* document) HTMLMeterElement* MeterShadowElement::meterElement() const { - Node* node = const_cast<MeterShadowElement*>(this)->shadowAncestorNode(); - ASSERT(!node || meterTag == toElement(node)->tagQName()); - return static_cast<HTMLMeterElement*>(node); + Element* element = shadowHost(); + ASSERT(!element || element->hasTagName(meterTag)); + return static_cast<HTMLMeterElement*>(element); } bool MeterShadowElement::rendererIsNeeded(const NodeRenderingContext& context) diff --git a/Source/WebCore/html/shadow/ProgressShadowElement.cpp b/Source/WebCore/html/shadow/ProgressShadowElement.cpp index 780815212..800f22351 100644 --- a/Source/WebCore/html/shadow/ProgressShadowElement.cpp +++ b/Source/WebCore/html/shadow/ProgressShadowElement.cpp @@ -47,9 +47,9 @@ ProgressShadowElement::ProgressShadowElement(Document* document) HTMLProgressElement* ProgressShadowElement::progressElement() const { - Node* node = const_cast<ProgressShadowElement*>(this)->shadowAncestorNode(); - ASSERT(!node || progressTag == toElement(node)->tagQName()); - return static_cast<HTMLProgressElement*>(node); + Element* element = shadowHost(); + ASSERT(!element || element->hasTagName(progressTag)); + return static_cast<HTMLProgressElement*>(element); } bool ProgressShadowElement::rendererIsNeeded(const NodeRenderingContext& context) diff --git a/Source/WebCore/html/shadow/SliderThumbElement.cpp b/Source/WebCore/html/shadow/SliderThumbElement.cpp index bb5948690..cccad81ef 100644 --- a/Source/WebCore/html/shadow/SliderThumbElement.cpp +++ b/Source/WebCore/html/shadow/SliderThumbElement.cpp @@ -113,7 +113,7 @@ void RenderSliderThumb::layout() { // Do not cast node() to SliderThumbElement. This renderer is used for // TrackLimitElement too. - HTMLInputElement* input = node()->shadowAncestorNode()->toInputElement(); + HTMLInputElement* input = node()->shadowHost()->toInputElement(); bool isVertical = hasVerticalAppearance(input); double fraction = (sliderPosition(input) * 100).toDouble(); @@ -142,7 +142,7 @@ private: void RenderSliderContainer::layout() { - HTMLInputElement* input = node()->shadowAncestorNode()->toInputElement(); + HTMLInputElement* input = node()->shadowHost()->toInputElement(); bool isVertical = hasVerticalAppearance(input); style()->setBoxOrient(isVertical ? VERTICAL : HORIZONTAL); // Sets the concrete height if the height of the <input> is not fixed or a @@ -343,8 +343,8 @@ void SliderThumbElement::detach() HTMLInputElement* SliderThumbElement::hostInput() const { // Only HTMLInputElement creates SliderThumbElement instances as its shadow nodes. - // So, shadowAncestorNode() must be an HTMLInputElement. - return shadowAncestorNode()->toInputElement(); + // So, shadowHost() must be an HTMLInputElement. + return shadowHost()->toInputElement(); } static const AtomicString& sliderThumbShadowPseudoId() @@ -403,7 +403,7 @@ RenderObject* TrackLimiterElement::createRenderer(RenderArena* arena, RenderStyl const AtomicString& TrackLimiterElement::shadowPseudoId() const { - HTMLInputElement* input = shadowAncestorNode()->toInputElement(); + HTMLInputElement* input = shadowHost()->toInputElement(); if (!input) return sliderThumbShadowPseudoId(); @@ -453,7 +453,7 @@ const AtomicString& SliderContainerElement::shadowPseudoId() const DEFINE_STATIC_LOCAL(const AtomicString, mediaSliderContainer, ("-webkit-media-slider-container")); DEFINE_STATIC_LOCAL(const AtomicString, sliderContainer, ("-webkit-slider-container")); - HTMLInputElement* input = shadowAncestorNode()->toInputElement(); + HTMLInputElement* input = shadowHost()->toInputElement(); if (!input) return sliderContainer; diff --git a/Source/WebCore/html/shadow/TextControlInnerElements.cpp b/Source/WebCore/html/shadow/TextControlInnerElements.cpp index c04fb55f8..e3097bb5e 100644 --- a/Source/WebCore/html/shadow/TextControlInnerElements.cpp +++ b/Source/WebCore/html/shadow/TextControlInnerElements.cpp @@ -63,7 +63,7 @@ PassRefPtr<TextControlInnerElement> TextControlInnerElement::create(Document* do PassRefPtr<RenderStyle> TextControlInnerElement::customStyleForRenderer() { - RenderTextControlSingleLine* parentRenderer = toRenderTextControlSingleLine(shadowAncestorNode()->renderer()); + RenderTextControlSingleLine* parentRenderer = toRenderTextControlSingleLine(shadowHost()->renderer()); return parentRenderer->createInnerBlockStyle(parentRenderer->style()); } @@ -86,11 +86,13 @@ void TextControlInnerTextElement::defaultEventHandler(Event* event) // Then we would add one to the text field's inner div, and we wouldn't need this subclass. // Or possibly we could just use a normal event listener. if (event->isBeforeTextInsertedEvent() || event->type() == eventNames().webkitEditableContentChangedEvent) { - Node* shadowAncestor = shadowAncestorNode(); - // A TextControlInnerTextElement can be its own shadow ancestor if its been detached, but kept alive by an EditCommand. - // In this case, an undo/redo can cause events to be sent to the TextControlInnerTextElement. - // To prevent an infinite loop, we must check for this case before sending the event up the chain. - if (shadowAncestor && shadowAncestor != this) + Element* shadowAncestor = shadowHost(); + // A TextControlInnerTextElement can have no host if its been detached, + // but kept alive by an EditCommand. In this case, an undo/redo can + // cause events to be sent to the TextControlInnerTextElement. To + // prevent an infinite loop, we must check for this case before sending + // the event up the chain. + if (shadowAncestor) shadowAncestor->defaultEventHandler(event); } if (!event->defaultHandled()) @@ -100,7 +102,7 @@ void TextControlInnerTextElement::defaultEventHandler(Event* event) RenderObject* TextControlInnerTextElement::createRenderer(RenderArena* arena, RenderStyle*) { bool multiLine = false; - Node* shadowAncestor = shadowAncestorNode(); + Element* shadowAncestor = shadowHost(); if (shadowAncestor && shadowAncestor->renderer()) { ASSERT(shadowAncestor->renderer()->isTextField() || shadowAncestor->renderer()->isTextArea()); multiLine = shadowAncestor->renderer()->isTextArea(); @@ -110,7 +112,7 @@ RenderObject* TextControlInnerTextElement::createRenderer(RenderArena* arena, Re PassRefPtr<RenderStyle> TextControlInnerTextElement::customStyleForRenderer() { - RenderTextControl* parentRenderer = toRenderTextControl(shadowAncestorNode()->renderer()); + RenderTextControl* parentRenderer = toRenderTextControl(shadowHost()->renderer()); return parentRenderer->createInnerTextStyle(parentRenderer->style()); } @@ -131,7 +133,7 @@ const AtomicString& SearchFieldResultsButtonElement::shadowPseudoId() const DEFINE_STATIC_LOCAL(AtomicString, resultsId, ("-webkit-search-results-button")); DEFINE_STATIC_LOCAL(AtomicString, resultsDecorationId, ("-webkit-search-results-decoration")); DEFINE_STATIC_LOCAL(AtomicString, decorationId, ("-webkit-search-decoration")); - Node* host = shadowAncestorNode(); + Element* host = shadowHost(); if (!host) return resultsId; if (HTMLInputElement* input = host->toInputElement()) { @@ -147,7 +149,7 @@ const AtomicString& SearchFieldResultsButtonElement::shadowPseudoId() const void SearchFieldResultsButtonElement::defaultEventHandler(Event* event) { // On mousedown, bring up a menu, if needed - HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowAncestorNode()); + HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowHost()); if (event->type() == eventNames().mousedownEvent && event->isMouseEvent() && static_cast<MouseEvent*>(event)->button() == LeftButton) { input->focus(); input->select(); @@ -195,7 +197,7 @@ void SearchFieldCancelButtonElement::detach() void SearchFieldCancelButtonElement::defaultEventHandler(Event* event) { // If the element is visible, on mouseup, clear the value, and set selection - RefPtr<HTMLInputElement> input(static_cast<HTMLInputElement*>(shadowAncestorNode())); + RefPtr<HTMLInputElement> input(static_cast<HTMLInputElement*>(shadowHost())); if (input->disabled() || input->isReadOnlyFormControl()) { if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); @@ -276,7 +278,7 @@ void SpinButtonElement::defaultEventHandler(Event* event) return; } - RefPtr<HTMLInputElement> input(static_cast<HTMLInputElement*>(shadowAncestorNode())); + RefPtr<HTMLInputElement> input(static_cast<HTMLInputElement*>(shadowHost())); if (input->disabled() || input->isReadOnlyFormControl()) { if (!event->defaultHandled()) HTMLDivElement::defaultEventHandler(event); @@ -362,7 +364,7 @@ void SpinButtonElement::stopRepeatingTimer() void SpinButtonElement::step(int amount) { - HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowAncestorNode()); + HTMLInputElement* input = static_cast<HTMLInputElement*>(shadowHost()); if (input->disabled() || input->isReadOnlyFormControl()) return; // On Mac OS, NSStepper updates the value for the button under the mouse @@ -427,7 +429,7 @@ void InputFieldSpeechButtonElement::defaultEventHandler(Event* event) // The call to focus() below dispatches a focus event, and an event handler in the page might // remove the input element from DOM. To make sure it remains valid until we finish our work // here, we take a temporary reference. - RefPtr<HTMLInputElement> input(static_cast<HTMLInputElement*>(shadowAncestorNode())); + RefPtr<HTMLInputElement> input(static_cast<HTMLInputElement*>(shadowHost())); if (input->disabled() || input->isReadOnlyFormControl()) { if (!event->defaultHandled()) @@ -481,7 +483,7 @@ void InputFieldSpeechButtonElement::setState(SpeechInputState state) { if (m_state != state) { m_state = state; - shadowAncestorNode()->renderer()->repaint(); + shadowHost()->renderer()->repaint(); } } @@ -507,7 +509,7 @@ void InputFieldSpeechButtonElement::setRecognitionResult(int, const SpeechInputR // The call to setValue() below dispatches an event, and an event handler in the page might // remove the input element from DOM. To make sure it remains valid until we finish our work // here, we take a temporary reference. - RefPtr<HTMLInputElement> input(static_cast<HTMLInputElement*>(shadowAncestorNode())); + RefPtr<HTMLInputElement> input(static_cast<HTMLInputElement*>(shadowHost())); if (input->disabled() || input->isReadOnlyFormControl()) return; @@ -560,7 +562,7 @@ void InputFieldSpeechButtonElement::startSpeechInput() if (m_state != Idle) return; - RefPtr<HTMLInputElement> input = static_cast<HTMLInputElement*>(shadowAncestorNode()); + RefPtr<HTMLInputElement> input = static_cast<HTMLInputElement*>(shadowHost()); AtomicString language = input->computeInheritedLanguage(); String grammar = input->getAttribute(webkitgrammarAttr); // FIXME: this should probably respect transforms diff --git a/Source/WebCore/html/shadow/TextControlInnerElements.h b/Source/WebCore/html/shadow/TextControlInnerElements.h index 6f1a9993a..33d5890a9 100644 --- a/Source/WebCore/html/shadow/TextControlInnerElements.h +++ b/Source/WebCore/html/shadow/TextControlInnerElements.h @@ -119,8 +119,8 @@ private: virtual const AtomicString& shadowPseudoId() const; virtual void detach(); virtual bool isSpinButtonElement() const { return true; } - virtual bool isEnabledFormControl() const { return static_cast<Element*>(shadowAncestorNode())->isEnabledFormControl(); } - virtual bool isReadOnlyFormControl() const { return static_cast<Element*>(shadowAncestorNode())->isReadOnlyFormControl(); } + virtual bool isEnabledFormControl() const { return shadowHost()->isEnabledFormControl(); } + virtual bool isReadOnlyFormControl() const { return shadowHost()->isReadOnlyFormControl(); } virtual void defaultEventHandler(Event*); void doStepAction(int); void startRepeatingTimer(); |