Replace WTF::move with WTFMove
[WebKit-https.git] / Source / WebCore / html / HTMLMeterElement.cpp
index 562d20a..36d27a7 100644 (file)
 #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"
 #include "RenderMeter.h"
 #include "RenderTheme.h"
 #include "ShadowRoot.h"
-#include <wtf/StdLibExtras.h>
 
 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));
@@ -51,29 +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);
-}
-
-bool HTMLMeterElement::supportsFocus() const
-{
-    return HTMLElement::supportsFocus() && !disabled();
+    return hasShadowRootParent(child) && HTMLElement::childShouldCreateRenderer(child);
 }
 
 void HTMLMeterElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
@@ -91,11 +85,11 @@ double HTMLMeterElement::min() const
 
 void HTMLMeterElement::setMin(double min, ExceptionCode& ec)
 {
-    if (!isfinite(min)) {
+    if (!std::isfinite(min)) {
         ec = NOT_SUPPORTED_ERR;
         return;
     }
-    setAttribute(minAttr, String::number(min));
+    setAttribute(minAttr, AtomicString::number(min));
 }
 
 double HTMLMeterElement::max() const
@@ -105,11 +99,11 @@ double HTMLMeterElement::max() const
 
 void HTMLMeterElement::setMax(double max, ExceptionCode& ec)
 {
-    if (!isfinite(max)) {
+    if (!std::isfinite(max)) {
         ec = NOT_SUPPORTED_ERR;
         return;
     }
-    setAttribute(maxAttr, String::number(max));
+    setAttribute(maxAttr, AtomicString::number(max));
 }
 
 double HTMLMeterElement::value() const
@@ -120,11 +114,11 @@ double HTMLMeterElement::value() const
 
 void HTMLMeterElement::setValue(double value, ExceptionCode& ec)
 {
-    if (!isfinite(value)) {
+    if (!std::isfinite(value)) {
         ec = NOT_SUPPORTED_ERR;
         return;
     }
-    setAttribute(valueAttr, String::number(value));
+    setAttribute(valueAttr, AtomicString::number(value));
 }
 
 double HTMLMeterElement::low() const
@@ -135,11 +129,11 @@ double HTMLMeterElement::low() const
 
 void HTMLMeterElement::setLow(double low, ExceptionCode& ec)
 {
-    if (!isfinite(low)) {
+    if (!std::isfinite(low)) {
         ec = NOT_SUPPORTED_ERR;
         return;
     }
-    setAttribute(lowAttr, String::number(low));
+    setAttribute(lowAttr, AtomicString::number(low));
 }
 
 double HTMLMeterElement::high() const
@@ -150,11 +144,11 @@ double HTMLMeterElement::high() const
 
 void HTMLMeterElement::setHigh(double high, ExceptionCode& ec)
 {
-    if (!isfinite(high)) {
+    if (!std::isfinite(high)) {
         ec = NOT_SUPPORTED_ERR;
         return;
     }
-    setAttribute(highAttr, String::number(high));
+    setAttribute(highAttr, AtomicString::number(high));
 }
 
 double HTMLMeterElement::optimum() const
@@ -165,11 +159,11 @@ double HTMLMeterElement::optimum() const
 
 void HTMLMeterElement::setOptimum(double optimum, ExceptionCode& ec)
 {
-    if (!isfinite(optimum)) {
+    if (!std::isfinite(optimum)) {
         ec = NOT_SUPPORTED_ERR;
         return;
     }
-    setAttribute(optimumAttr, String::number(optimum));
+    setAttribute(optimumAttr, AtomicString::number(optimum));
 }
 
 HTMLMeterElement::GaugeRegion HTMLMeterElement::gaugeRegion() const
@@ -226,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