Initial support for HTMLMeterElement
https://bugs.webkit.org/show_bug.cgi?id=38140

Reviewed by Kent Tamura.

WebCore: 

This patch adds support for HTMLMeterElement, including default rendering
of the meter element. That is because some platforms do not have a native gauge.
The feature is turned on only for the Qt platform.

Tests: fast/dom/HTMLMeterElement/meter-element.html
       fast/dom/HTMLMeterElement/set-meter-properties.html

* DerivedSources.cpp:
* DerivedSources.make:
* GNUmakefile.am:
* WebCore.gypi:
* WebCore.pri:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
* css/CSSValueKeywords.in:
* css/html.css:
(meter):
(meter::-webkit-meter):
* html/HTMLAttributeNames.in:
* html/HTMLElement.cpp:
(WebCore::inlineTagList):
* html/HTMLElementsAllInOne.cpp:
* html/HTMLMeterElement.cpp: Added.
(WebCore::HTMLMeterElement::HTMLMeterElement):
(WebCore::HTMLMeterElement::create):
(WebCore::HTMLMeterElement::createRenderer):
(WebCore::HTMLMeterElement::formControlType):
(WebCore::HTMLMeterElement::parseMappedAttribute):
(WebCore::HTMLMeterElement::min):
(WebCore::HTMLMeterElement::setMin):
(WebCore::HTMLMeterElement::max):
(WebCore::HTMLMeterElement::setMax):
(WebCore::HTMLMeterElement::value):
(WebCore::HTMLMeterElement::setValue):
(WebCore::HTMLMeterElement::low):
(WebCore::HTMLMeterElement::setLow):
(WebCore::HTMLMeterElement::high):
(WebCore::HTMLMeterElement::setHigh):
(WebCore::HTMLMeterElement::optimum):
(WebCore::HTMLMeterElement::setOptimum):
* html/HTMLMeterElement.h: Added.
(WebCore::HTMLMeterElement::recalcWillValidate):
* html/HTMLMeterElement.idl: Added.
* html/HTMLTagNames.in:
* page/DOMWindow.idl:
* platform/ThemeTypes.h:
* rendering/RenderMeter.cpp: Added.
(WebCore::RenderMeter::RenderMeter):
(WebCore::RenderMeter::layout):
(WebCore::RenderMeter::updateFromElement):
* rendering/RenderMeter.h: Added.
(WebCore::RenderMeter::renderName):
(WebCore::RenderMeter::isMeter):
(WebCore::toRenderMeter):
* rendering/RenderObject.h:
(WebCore::RenderObject::isMeter):
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::adjustStyle):
(WebCore::RenderTheme::paint):
(WebCore::RenderTheme::paintBorderOnly):
(WebCore::RenderTheme::paintDecorations):
(WebCore::RenderTheme::adjustMeterStyle):
(WebCore::RenderTheme::paintMeter):
* rendering/RenderTheme.h:

LayoutTests: 

* fast/dom/HTMLMeterElement: Added.
* fast/dom/HTMLMeterElement/meter-element.html: Added.
* fast/dom/HTMLMeterElement/script-tests: Added.
* fast/dom/HTMLMeterElement/script-tests/TEMPLATE.html: Added.
* fast/dom/HTMLMeterElement/script-tests/set-meter-properties.js: Added.
* fast/dom/HTMLMeterElement/set-meter-properties-expected.txt: Added.
* fast/dom/HTMLMeterElement/set-meter-properties.html: Added.
* platform/chromium/test_expectations.txt:
* platform/gtk/Skipped:
* platform/mac/Skipped:
* platform/qt/fast/dom/HTMLMeterElement: Added.
* platform/qt/fast/dom/HTMLMeterElement/meter-element-expected.checksum: Added.
* platform/qt/fast/dom/HTMLMeterElement/meter-element-expected.png: Added.
* platform/qt/fast/dom/HTMLMeterElement/meter-element-expected.txt: Added.
* platform/win/Skipped:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@59541 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/rendering/RenderMeter.cpp b/WebCore/rendering/RenderMeter.cpp
new file mode 100644
index 0000000..9dc6a26
--- /dev/null
+++ b/WebCore/rendering/RenderMeter.cpp
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+#if ENABLE(METER_TAG)
+
+#include "RenderMeter.h"
+
+#include "HTMLMeterElement.h"
+#include "RenderTheme.h"
+
+using namespace std;
+
+namespace WebCore {
+
+using namespace HTMLNames;
+
+RenderMeter::RenderMeter(HTMLMeterElement* element)
+    : RenderBlock(element)
+{
+}
+
+void RenderMeter::layout()
+{
+    ASSERT(needsLayout());
+
+    LayoutRepainter repainter(*this, checkForRepaintDuringLayout());
+
+    calcWidth();
+    calcHeight();
+
+    m_overflow.clear();
+
+    repainter.repaintAfterLayout();
+
+    setNeedsLayout(false);
+}
+
+void RenderMeter::updateFromElement()
+{
+    repaint();
+}
+
+} // namespace WebCore
+#endif