CTTE: RenderSlider always has an HTMLInputElement.
<https://webkit.org/b/122728>
Reviewed by Anders Carlsson.
This renderer is never anonymous and always has a corresponding
HTMLInputElement. Tighten this up by having the constructor take
the element by reference, and override element() with a stronger
return type.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157370 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 2bd75d7..be34f52 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,5 +1,17 @@
2013-10-13 Andreas Kling <akling@apple.com>
+ CTTE: RenderSlider always has an HTMLInputElement.
+ <https://webkit.org/b/122728>
+
+ Reviewed by Anders Carlsson.
+
+ This renderer is never anonymous and always has a corresponding
+ HTMLInputElement. Tighten this up by having the constructor take
+ the element by reference, and override element() with a stronger
+ return type.
+
+2013-10-13 Andreas Kling <akling@apple.com>
+
Remove two unused AX functions for getting a FrameView*.
<https://webkit.org/b/122724>
diff --git a/Source/WebCore/html/RangeInputType.cpp b/Source/WebCore/html/RangeInputType.cpp
index 6284ab8..0e81e5c 100644
--- a/Source/WebCore/html/RangeInputType.cpp
+++ b/Source/WebCore/html/RangeInputType.cpp
@@ -288,7 +288,7 @@
RenderElement* RangeInputType::createRenderer(RenderArena& arena, RenderStyle&) const
{
- return new (arena) RenderSlider(&element());
+ return new (arena) RenderSlider(element());
}
Decimal RangeInputType::parseToNumber(const String& src, const Decimal& defaultValue) const
diff --git a/Source/WebCore/platform/efl/RenderThemeEfl.cpp b/Source/WebCore/platform/efl/RenderThemeEfl.cpp
index db788b3..009e133 100755
--- a/Source/WebCore/platform/efl/RenderThemeEfl.cpp
+++ b/Source/WebCore/platform/efl/RenderThemeEfl.cpp
@@ -327,8 +327,8 @@
return; // probably have -webkit-appearance: slider..
RenderSlider* renderSlider = toRenderSlider(object);
- HTMLInputElement* input = renderSlider->element()->toInputElement();
- double valueRange = input->maximum() - input->minimum();
+ HTMLInputElement& input = renderSlider->element();
+ double valueRange = input.maximum() - input.minimum();
OwnPtr<Edje_Message_Float_Set> msg = adoptPtr(static_cast<Edje_Message_Float_Set*>(::operator new (sizeof(Edje_Message_Float_Set) + sizeof(double))));
msg->count = 2;
@@ -342,7 +342,7 @@
else
msg->val[0] = 0;
- msg->val[1] = (input->valueAsNumber() - input->minimum()) / valueRange;
+ msg->val[1] = (input.valueAsNumber() - input.minimum()) / valueRange;
edje_object_message_send(edje, EDJE_MESSAGE_FLOAT_SET, 0, msg.get());
#if ENABLE(PROGRESS_ELEMENT)
} else if (type == ProgressBar) {
diff --git a/Source/WebCore/rendering/RenderSlider.cpp b/Source/WebCore/rendering/RenderSlider.cpp
index 633777c..907aa56 100644
--- a/Source/WebCore/rendering/RenderSlider.cpp
+++ b/Source/WebCore/rendering/RenderSlider.cpp
@@ -49,17 +49,22 @@
const int RenderSlider::defaultTrackLength = 129;
-RenderSlider::RenderSlider(HTMLInputElement* element)
- : RenderFlexibleBox(element)
+RenderSlider::RenderSlider(HTMLInputElement& element)
+ : RenderFlexibleBox(&element)
{
// We assume RenderSlider works only with <input type=range>.
- ASSERT(element->isRangeControl());
+ ASSERT(element.isRangeControl());
}
RenderSlider::~RenderSlider()
{
}
+HTMLInputElement& RenderSlider::element() const
+{
+ return toHTMLInputElement(nodeForNonAnonymous());
+}
+
bool RenderSlider::canBeReplacedWithInlineRunIn() const
{
return false;
@@ -110,7 +115,7 @@
StackStats::LayoutCheckPoint layoutCheckPoint;
// FIXME: Find a way to cascade appearance. http://webkit.org/b/62535
- RenderBox* thumbBox = toHTMLInputElement(*element()).sliderThumbElement()->renderBox();
+ RenderBox* thumbBox = element().sliderThumbElement()->renderBox();
if (thumbBox && thumbBox->isSliderThumb())
static_cast<RenderSliderThumb*>(thumbBox)->updateAppearance(style());
@@ -119,7 +124,7 @@
bool RenderSlider::inDragMode() const
{
- return toHTMLInputElement(*element()).sliderThumbElement()->active();
+ return element().sliderThumbElement()->active();
}
} // namespace WebCore
diff --git a/Source/WebCore/rendering/RenderSlider.h b/Source/WebCore/rendering/RenderSlider.h
index 02b5d5b..1c47c22 100644
--- a/Source/WebCore/rendering/RenderSlider.h
+++ b/Source/WebCore/rendering/RenderSlider.h
@@ -33,9 +33,11 @@
public:
static const int defaultTrackLength;
- explicit RenderSlider(HTMLInputElement*);
+ explicit RenderSlider(HTMLInputElement&);
virtual ~RenderSlider();
+ HTMLInputElement& element() const;
+
bool inDragMode() const;
private: