diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2016-08-25 19:20:41 +0300 |
---|---|---|
committer | Konstantin Tokarev <annulen@yandex.ru> | 2017-02-02 12:30:55 +0000 |
commit | 6882a04fb36642862b11efe514251d32070c3d65 (patch) | |
tree | b7959826000b061fd5ccc7512035c7478742f7b0 /Source/WebCore/html/HTMLMeterElement.cpp | |
parent | ab6df191029eeeb0b0f16f127d553265659f739e (diff) | |
download | qtwebkit-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.cpp | 51 |
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 |