summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/HTMLMeterElement.cpp
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2016-08-25 19:20:41 +0300
committerKonstantin Tokarev <annulen@yandex.ru>2017-02-02 12:30:55 +0000
commit6882a04fb36642862b11efe514251d32070c3d65 (patch)
treeb7959826000b061fd5ccc7512035c7478742f7b0 /Source/WebCore/html/HTMLMeterElement.cpp
parentab6df191029eeeb0b0f16f127d553265659f739e (diff)
downloadqtwebkit-6882a04fb36642862b11efe514251d32070c3d65.tar.gz
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/WebCore/html/HTMLMeterElement.cpp')
-rw-r--r--Source/WebCore/html/HTMLMeterElement.cpp51
1 files changed, 24 insertions, 27 deletions
diff --git a/Source/WebCore/html/HTMLMeterElement.cpp b/Source/WebCore/html/HTMLMeterElement.cpp
index 150cff080..36d27a72b 100644
--- a/Source/WebCore/html/HTMLMeterElement.cpp
+++ b/Source/WebCore/html/HTMLMeterElement.cpp
@@ -23,10 +23,10 @@
#include "HTMLMeterElement.h"
#include "Attribute.h"
+#include "ElementIterator.h"
#include "EventNames.h"
#include "ExceptionCode.h"
#include "FormDataList.h"
-#include "NodeRenderingContext.h"
#include "HTMLFormElement.h"
#include "HTMLNames.h"
#include "HTMLParserIdioms.h"
@@ -40,7 +40,7 @@ namespace WebCore {
using namespace HTMLNames;
-HTMLMeterElement::HTMLMeterElement(const QualifiedName& tagName, Document* document)
+HTMLMeterElement::HTMLMeterElement(const QualifiedName& tagName, Document& document)
: LabelableElement(tagName, document)
{
ASSERT(hasTagName(meterTag));
@@ -50,24 +50,24 @@ HTMLMeterElement::~HTMLMeterElement()
{
}
-PassRefPtr<HTMLMeterElement> HTMLMeterElement::create(const QualifiedName& tagName, Document* document)
+Ref<HTMLMeterElement> HTMLMeterElement::create(const QualifiedName& tagName, Document& document)
{
- RefPtr<HTMLMeterElement> meter = adoptRef(new HTMLMeterElement(tagName, document));
+ Ref<HTMLMeterElement> meter = adoptRef(*new HTMLMeterElement(tagName, document));
meter->ensureUserAgentShadowRoot();
return meter;
}
-RenderObject* HTMLMeterElement::createRenderer(RenderArena* arena, RenderStyle* style)
+RenderPtr<RenderElement> HTMLMeterElement::createElementRenderer(Ref<RenderStyle>&& style, const RenderTreePosition&)
{
- if (hasAuthorShadowRoot() || !document()->page()->theme()->supportsMeter(style->appearance()))
- return RenderObject::createObject(this, style);
+ if (!document().page()->theme().supportsMeter(style.get().appearance()))
+ return RenderElement::createFor(*this, WTFMove(style));
- return new (arena) RenderMeter(this);
+ return createRenderer<RenderMeter>(*this, WTFMove(style));
}
-bool HTMLMeterElement::childShouldCreateRenderer(const NodeRenderingContext& childContext) const
+bool HTMLMeterElement::childShouldCreateRenderer(const Node& child) const
{
- return childContext.isOnUpperEncapsulationBoundary() && HTMLElement::childShouldCreateRenderer(childContext);
+ return hasShadowRootParent(child) && HTMLElement::childShouldCreateRenderer(child);
}
void HTMLMeterElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
@@ -89,7 +89,7 @@ void HTMLMeterElement::setMin(double min, ExceptionCode& ec)
ec = NOT_SUPPORTED_ERR;
return;
}
- setAttribute(minAttr, String::number(min));
+ setAttribute(minAttr, AtomicString::number(min));
}
double HTMLMeterElement::max() const
@@ -103,7 +103,7 @@ void HTMLMeterElement::setMax(double max, ExceptionCode& ec)
ec = NOT_SUPPORTED_ERR;
return;
}
- setAttribute(maxAttr, String::number(max));
+ setAttribute(maxAttr, AtomicString::number(max));
}
double HTMLMeterElement::value() const
@@ -118,7 +118,7 @@ void HTMLMeterElement::setValue(double value, ExceptionCode& ec)
ec = NOT_SUPPORTED_ERR;
return;
}
- setAttribute(valueAttr, String::number(value));
+ setAttribute(valueAttr, AtomicString::number(value));
}
double HTMLMeterElement::low() const
@@ -133,7 +133,7 @@ void HTMLMeterElement::setLow(double low, ExceptionCode& ec)
ec = NOT_SUPPORTED_ERR;
return;
}
- setAttribute(lowAttr, String::number(low));
+ setAttribute(lowAttr, AtomicString::number(low));
}
double HTMLMeterElement::high() const
@@ -148,7 +148,7 @@ void HTMLMeterElement::setHigh(double high, ExceptionCode& ec)
ec = NOT_SUPPORTED_ERR;
return;
}
- setAttribute(highAttr, String::number(high));
+ setAttribute(highAttr, AtomicString::number(high));
}
double HTMLMeterElement::optimum() const
@@ -163,7 +163,7 @@ void HTMLMeterElement::setOptimum(double optimum, ExceptionCode& ec)
ec = NOT_SUPPORTED_ERR;
return;
}
- setAttribute(optimumAttr, String::number(optimum));
+ setAttribute(optimumAttr, AtomicString::number(optimum));
}
HTMLMeterElement::GaugeRegion HTMLMeterElement::gaugeRegion() const
@@ -220,28 +220,25 @@ void HTMLMeterElement::didElementStateChange()
RenderMeter* HTMLMeterElement::renderMeter() const
{
- if (renderer() && renderer()->isMeter())
- return static_cast<RenderMeter*>(renderer());
-
- RenderObject* renderObject = userAgentShadowRoot()->firstChild()->renderer();
- ASSERT(!renderObject || renderObject->isMeter());
- return static_cast<RenderMeter*>(renderObject);
+ if (is<RenderMeter>(renderer()))
+ return downcast<RenderMeter>(renderer());
+ return downcast<RenderMeter>(descendantsOfType<Element>(*userAgentShadowRoot()).first()->renderer());
}
void HTMLMeterElement::didAddUserAgentShadowRoot(ShadowRoot* root)
{
ASSERT(!m_value);
- RefPtr<MeterInnerElement> inner = MeterInnerElement::create(document());
- root->appendChild(inner);
+ Ref<MeterInnerElement> inner = MeterInnerElement::create(document());
+ root->appendChild(inner.copyRef());
- RefPtr<MeterBarElement> bar = MeterBarElement::create(document());
+ Ref<MeterBarElement> bar = MeterBarElement::create(document());
m_value = MeterValueElement::create(document());
m_value->setWidthPercentage(0);
m_value->updatePseudo();
- bar->appendChild(m_value, ASSERT_NO_EXCEPTION);
+ bar->appendChild(*m_value, ASSERT_NO_EXCEPTION);
- inner->appendChild(bar, ASSERT_NO_EXCEPTION);
+ inner->appendChild(WTFMove(bar), ASSERT_NO_EXCEPTION);
}
} // namespace