summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/shadow
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-07-24 17:03:20 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-07-24 17:03:20 +0200
commit08d4a74d56ca431877819fc4566e27eafe150342 (patch)
treeebd8530838ab390c015c6b7e659a22852c1663ae /Source/WebCore/html/shadow
parent1de6cd4794bbd5a52189384189a2b8df1848b39b (diff)
downloadqtwebkit-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')
-rw-r--r--Source/WebCore/html/shadow/DetailsMarkerControl.cpp6
-rw-r--r--Source/WebCore/html/shadow/MediaControlElements.cpp6
-rw-r--r--Source/WebCore/html/shadow/MeterShadowElement.cpp6
-rw-r--r--Source/WebCore/html/shadow/ProgressShadowElement.cpp6
-rw-r--r--Source/WebCore/html/shadow/SliderThumbElement.cpp12
-rw-r--r--Source/WebCore/html/shadow/TextControlInnerElements.cpp36
-rw-r--r--Source/WebCore/html/shadow/TextControlInnerElements.h4
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();