Changeset 59541 in webkit


Ignore:
Timestamp:
May 15, 2010 9:41:06 AM (14 years ago)
Author:
yael.aharon@nokia.com
Message:

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:
Location:
trunk
Files:
16 added
26 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r59540 r59541  
     12010-05-15  Yael Aharon  <yael.aharon@nokia.com>
     2
     3        Reviewed by Kent Tamura.
     4
     5        Initial support for HTMLMeterElement
     6        https://bugs.webkit.org/show_bug.cgi?id=38140
     7
     8        * fast/dom/HTMLMeterElement: Added.
     9        * fast/dom/HTMLMeterElement/meter-element.html: Added.
     10        * fast/dom/HTMLMeterElement/script-tests: Added.
     11        * fast/dom/HTMLMeterElement/script-tests/TEMPLATE.html: Added.
     12        * fast/dom/HTMLMeterElement/script-tests/set-meter-properties.js: Added.
     13        * fast/dom/HTMLMeterElement/set-meter-properties-expected.txt: Added.
     14        * fast/dom/HTMLMeterElement/set-meter-properties.html: Added.
     15        * platform/chromium/test_expectations.txt:
     16        * platform/gtk/Skipped:
     17        * platform/mac/Skipped:
     18        * platform/qt/fast/dom/HTMLMeterElement: Added.
     19        * platform/qt/fast/dom/HTMLMeterElement/meter-element-expected.checksum: Added.
     20        * platform/qt/fast/dom/HTMLMeterElement/meter-element-expected.png: Added.
     21        * platform/qt/fast/dom/HTMLMeterElement/meter-element-expected.txt: Added.
     22        * platform/win/Skipped:
     23
    1242010-05-15  Eric Uhrhane  <ericu@chromium.org>
    225
  • trunk/LayoutTests/platform/chromium/test_expectations.txt

    r59446 r59541  
    26272627BUG38227 SKIP : fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element.html = FAIL
    26282628
     2629// HTMLMeterElement related tests deferred due to https://bugs.webkit.org/show_bug.cgi?id=37074.
     2630BUGWK37074 DEFER : fast/dom/HTMLMeterElement/meter-element.html = MISSING
     2631BUGWK37074 DEFER : fast/dom/HTMLMeterElement/set-meter-properties.html = TEXT
     2632
    26292633// WebKit roll 56004 -> 56026
    26302634BUG38278 : fast/events/continuous-platform-wheelevent-in-scrolling-div.html = TIMEOUT
  • trunk/LayoutTests/platform/gtk/Skipped

    r59535 r59541  
    57155715fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element.html
    57165716
     5717# meter element is not supported
     5718fast/dom/HTMLMeterElement/meter-element.html
     5719fast/dom/HTMLMeterElement/set-meter-properties.html
     5720
    57175721# Needs mock support, and build slave Geolocation service
    57185722# See https://bugs.webkit.org/show_bug.cgi?id=36053
  • trunk/LayoutTests/platform/mac/Skipped

    r59142 r59541  
    143143fast/dom/HTMLProgressElement/progress-element.html
    144144
     145# meter element is not supported
     146fast/dom/HTMLMeterElement/meter-element.html
     147fast/dom/HTMLMeterElement/set-meter-properties.html
     148
    145149# event.dataTransfer.setData('text/uri-list') not correctly implemented on Mac
    146150editing/pasteboard/dataTransfer-setData-getData.html
  • trunk/LayoutTests/platform/win/Skipped

    r59203 r59541  
    835835fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element.html
    836836
     837# meter element is not supported
     838fast/dom/HTMLMeterElement/meter-element.html
     839fast/dom/HTMLMeterElement/set-meter-properties.html
     840
    837841# No Widgets 1.0 support
    838842fast/media/media-feature-wgt-view-mode.html
  • trunk/WebCore/ChangeLog

    r59540 r59541  
     12010-05-15  Yael Aharon  <yael.aharon@nokia.com>
     2
     3        Reviewed by Kent Tamura.
     4
     5        Initial support for HTMLMeterElement
     6        https://bugs.webkit.org/show_bug.cgi?id=38140
     7
     8        This patch adds support for HTMLMeterElement, including default rendering
     9        of the meter element. That is because some platforms do not have a native gauge.
     10        The feature is turned on only for the Qt platform.
     11
     12        Tests: fast/dom/HTMLMeterElement/meter-element.html
     13               fast/dom/HTMLMeterElement/set-meter-properties.html
     14
     15        * DerivedSources.cpp:
     16        * DerivedSources.make:
     17        * GNUmakefile.am:
     18        * WebCore.gypi:
     19        * WebCore.pri:
     20        * WebCore.pro:
     21        * WebCore.vcproj/WebCore.vcproj:
     22        * css/CSSPrimitiveValueMappings.h:
     23        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
     24        * css/CSSValueKeywords.in:
     25        * css/html.css:
     26        (meter):
     27        (meter::-webkit-meter):
     28        * html/HTMLAttributeNames.in:
     29        * html/HTMLElement.cpp:
     30        (WebCore::inlineTagList):
     31        * html/HTMLElementsAllInOne.cpp:
     32        * html/HTMLMeterElement.cpp: Added.
     33        (WebCore::HTMLMeterElement::HTMLMeterElement):
     34        (WebCore::HTMLMeterElement::create):
     35        (WebCore::HTMLMeterElement::createRenderer):
     36        (WebCore::HTMLMeterElement::formControlType):
     37        (WebCore::HTMLMeterElement::parseMappedAttribute):
     38        (WebCore::HTMLMeterElement::min):
     39        (WebCore::HTMLMeterElement::setMin):
     40        (WebCore::HTMLMeterElement::max):
     41        (WebCore::HTMLMeterElement::setMax):
     42        (WebCore::HTMLMeterElement::value):
     43        (WebCore::HTMLMeterElement::setValue):
     44        (WebCore::HTMLMeterElement::low):
     45        (WebCore::HTMLMeterElement::setLow):
     46        (WebCore::HTMLMeterElement::high):
     47        (WebCore::HTMLMeterElement::setHigh):
     48        (WebCore::HTMLMeterElement::optimum):
     49        (WebCore::HTMLMeterElement::setOptimum):
     50        * html/HTMLMeterElement.h: Added.
     51        (WebCore::HTMLMeterElement::recalcWillValidate):
     52        * html/HTMLMeterElement.idl: Added.
     53        * html/HTMLTagNames.in:
     54        * page/DOMWindow.idl:
     55        * platform/ThemeTypes.h:
     56        * rendering/RenderMeter.cpp: Added.
     57        (WebCore::RenderMeter::RenderMeter):
     58        (WebCore::RenderMeter::layout):
     59        (WebCore::RenderMeter::updateFromElement):
     60        * rendering/RenderMeter.h: Added.
     61        (WebCore::RenderMeter::renderName):
     62        (WebCore::RenderMeter::isMeter):
     63        (WebCore::toRenderMeter):
     64        * rendering/RenderObject.h:
     65        (WebCore::RenderObject::isMeter):
     66        * rendering/RenderTheme.cpp:
     67        (WebCore::RenderTheme::adjustStyle):
     68        (WebCore::RenderTheme::paint):
     69        (WebCore::RenderTheme::paintBorderOnly):
     70        (WebCore::RenderTheme::paintDecorations):
     71        (WebCore::RenderTheme::adjustMeterStyle):
     72        (WebCore::RenderTheme::paintMeter):
     73        * rendering/RenderTheme.h:
     74
    1752010-05-15  Eric Uhrhane  <ericu@chromium.org>
    276
  • trunk/WebCore/DerivedSources.cpp

    r59162 r59541  
    141141#include "JSHTMLMenuElement.cpp"
    142142#include "JSHTMLMetaElement.cpp"
     143#include "JSHTMLMeterElement.cpp"
    143144#include "JSHTMLModElement.cpp"
    144145#include "JSHTMLObjectElement.cpp"
  • trunk/WebCore/DerivedSources.make

    r59499 r59541  
    183183    HTMLMenuElement \
    184184    HTMLMetaElement \
     185    HTMLMeterElement \
    185186    HTMLModElement \
    186187    HTMLOListElement \
     
    645646endif
    646647
     648ifeq ($(findstring ENABLE_METER_TAG,$(FEATURE_DEFINES)), ENABLE_METER_TAG)
     649    HTML_FLAGS := $(HTML_FLAGS) ENABLE_METER_TAG=1
     650endif
     651
    647652ifeq ($(findstring ENABLE_PROGRESS_TAG,$(FEATURE_DEFINES)), ENABLE_PROGRESS_TAG)
    648653    HTML_FLAGS := $(HTML_FLAGS) ENABLE_PROGRESS_TAG=1
  • trunk/WebCore/GNUmakefile.am

    r59526 r59541  
    245245        WebCore/html/HTMLMenuElement.idl \
    246246        WebCore/html/HTMLMetaElement.idl \
     247        WebCore/html/HTMLMeterElement.idl \
    247248        WebCore/html/HTMLModElement.idl \
    248249        WebCore/html/HTMLOListElement.idl \
     
    11681169        WebCore/html/HTMLMetaElement.cpp \
    11691170        WebCore/html/HTMLMetaElement.h \
     1171        WebCore/html/HTMLMeterElement.cpp \
     1172        WebCore/html/HTMLMeterElement.h \
    11701173        WebCore/html/HTMLModElement.cpp \
    11711174        WebCore/html/HTMLModElement.h \
     
    19011904        WebCore/rendering/RenderMenuList.cpp \
    19021905        WebCore/rendering/RenderMenuList.h \
     1906        WebCore/rendering/RenderMeter.cpp \
     1907        WebCore/rendering/RenderMeter.h \
    19031908        WebCore/rendering/RenderObject.cpp \
    19041909        WebCore/rendering/RenderObject.h \
     
    22462251webcore_cppflags += \
    22472252        -DENABLE_DATAGRID=0
     2253
     2254# ----
     2255# HTML Meter Element - disable for now.
     2256# ----
     2257FEATURE_DEFINES += ENABLE_METER_TAG=0
     2258
     2259webcore_cppflags += \
     2260    -DENABLE_METER_TAG=0
    22482261
    22492262# ----
  • trunk/WebCore/WebCore.gypi

    r59499 r59541  
    159159            'html/HTMLMenuElement.idl',
    160160            'html/HTMLMetaElement.idl',
     161            'html/HTMLMeterElement.idl',
    161162            'html/HTMLModElement.idl',
    162163            'html/HTMLOListElement.idl',
     
    15611562            'html/HTMLMetaElement.cpp',
    15621563            'html/HTMLMetaElement.h',
     1564            'html/HTMLMeterElement.cpp',
     1565            'html/HTMLMeterElement.h',
    15631566            'html/HTMLModElement.cpp',
    15641567            'html/HTMLModElement.h',
     
    31383141            'rendering/RenderMenuList.cpp',
    31393142            'rendering/RenderMenuList.h',
     3143            'rendering/RenderMeter.cpp',
     3144            'rendering/RenderMeter.h',
    31403145            'rendering/RenderObject.cpp',
    31413146            'rendering/RenderObject.h',
  • trunk/WebCore/WebCore.pri

    r59499 r59541  
    5959!contains(DEFINES, ENABLE_RUBY=.): DEFINES += ENABLE_RUBY=1
    6060!contains(DEFINES, ENABLE_SANDBOX=.): DEFINES += ENABLE_SANDBOX=1
     61!contains(DEFINES, ENABLE_METER_TAG=.): DEFINES += ENABLE_METER_TAG=1
    6162!contains(DEFINES, ENABLE_PROGRESS_TAG=.): DEFINES += ENABLE_PROGRESS_TAG=1
    6263!contains(DEFINES, ENABLE_BLOB_SLICE=.): DEFINES += ENABLE_BLOB_SLICE=0
     
    164165contains(DEFINES, ENABLE_TILED_BACKING_STORE=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_TILED_BACKING_STORE=1
    165166contains(DEFINES, ENABLE_NOTIFICATIONS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_NOTIFICATIONS=1
     167contains(DEFINES, ENABLE_METER_TAG=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_METER_TAG=1
    166168contains(DEFINES, ENABLE_PROGRESS_TAG=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_PROGRESS_TAG=1
    167169
     
    378380    html/HTMLMenuElement.idl \
    379381    html/HTMLMetaElement.idl \
     382    html/HTMLMeterElement.idl \
    380383    html/HTMLModElement.idl \
    381384    html/HTMLObjectElement.idl \
  • trunk/WebCore/WebCore.pro

    r59526 r59541  
    656656    html/HTMLMenuElement.cpp \
    657657    html/HTMLMetaElement.cpp \
     658    html/HTMLMeterElement.cpp \
    658659    html/HTMLModElement.cpp \
    659660    html/HTMLNameCollection.cpp \
     
    937938    rendering/RenderMarquee.cpp \
    938939    rendering/RenderMenuList.cpp \
     940    rendering/RenderMeter.cpp \
    939941    rendering/RenderObject.cpp \
    940942    rendering/RenderObjectChildList.cpp \
     
    13771379    html/HTMLMenuElement.h \
    13781380    html/HTMLMetaElement.h \
     1381    html/HTMLMeterElement.h \
    13791382    html/HTMLModElement.h \
    13801383    html/HTMLNameCollection.h \
     
    17161719    rendering/RenderMedia.h \
    17171720    rendering/RenderMenuList.h \
     1721    rendering/RenderMeter.h \
    17181722    rendering/RenderObjectChildList.h \
    17191723    rendering/RenderObject.h \
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r59526 r59541  
    65666566                        </File>
    65676567                        <File
     6568                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSHTMLMeterElement.cpp"
     6569                                >
     6570                                <FileConfiguration
     6571                                        Name="Debug|Win32"
     6572                                        ExcludedFromBuild="true"
     6573                                        >
     6574                                        <Tool
     6575                                                Name="VCCLCompilerTool"
     6576                                        />
     6577                                </FileConfiguration>
     6578                                <FileConfiguration
     6579                                        Name="Release|Win32"
     6580                                        ExcludedFromBuild="true"
     6581                                        >
     6582                                        <Tool
     6583                                                Name="VCCLCompilerTool"
     6584                                        />
     6585                                </FileConfiguration>
     6586                                <FileConfiguration
     6587                                        Name="Debug_Internal|Win32"
     6588                                        ExcludedFromBuild="true"
     6589                                        >
     6590                                        <Tool
     6591                                                Name="VCCLCompilerTool"
     6592                                        />
     6593                                </FileConfiguration>
     6594                                <FileConfiguration
     6595                                        Name="Debug_Cairo|Win32"
     6596                                        ExcludedFromBuild="true"
     6597                                        >
     6598                                        <Tool
     6599                                                Name="VCCLCompilerTool"
     6600                                        />
     6601                                </FileConfiguration>
     6602                                <FileConfiguration
     6603                                        Name="Release_Cairo|Win32"
     6604                                        ExcludedFromBuild="true"
     6605                                        >
     6606                                        <Tool
     6607                                                Name="VCCLCompilerTool"
     6608                                        />
     6609                                </FileConfiguration>
     6610                                <FileConfiguration
     6611                                        Name="Debug_All|Win32"
     6612                                        ExcludedFromBuild="true"
     6613                                        >
     6614                                        <Tool
     6615                                                Name="VCCLCompilerTool"
     6616                                        />
     6617                                </FileConfiguration>
     6618                        </File>
     6619                        <File
     6620                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSHTMLMeterElement.h"
     6621                                >
     6622                        </File>
     6623                        <File
    65686624                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSHTMLModElement.cpp"
    65696625                                >
     
    2798228038                        </File>
    2798328039                        <File
     28040                                RelativePath="..\rendering\RenderMeter.cpp"
     28041                                >
     28042                        </File>
     28043                        <File
     28044                                RelativePath="..\rendering\RenderMeter.h"
     28045                                >
     28046                        </File>
     28047                        <File
    2798428048                                RelativePath="..\rendering\RenderObject.cpp"
    2798528049                                >
     
    3331133375                        <File
    3331233376                                RelativePath="..\html\HTMLMetaElement.h"
     33377                                >
     33378                        </File>
     33379                        <File
     33380                                RelativePath="..\html\HTMLMeterElement.cpp"
     33381                                >
     33382                                <FileConfiguration
     33383                                        Name="Debug|Win32"
     33384                                        ExcludedFromBuild="true"
     33385                                        >
     33386                                        <Tool
     33387                                                Name="VCCLCompilerTool"
     33388                                        />
     33389                                </FileConfiguration>
     33390                                <FileConfiguration
     33391                                        Name="Release|Win32"
     33392                                        ExcludedFromBuild="true"
     33393                                        >
     33394                                        <Tool
     33395                                                Name="VCCLCompilerTool"
     33396                                        />
     33397                                </FileConfiguration>
     33398                                <FileConfiguration
     33399                                        Name="Debug_Internal|Win32"
     33400                                        ExcludedFromBuild="true"
     33401                                        >
     33402                                        <Tool
     33403                                                Name="VCCLCompilerTool"
     33404                                        />
     33405                                </FileConfiguration>
     33406                                <FileConfiguration
     33407                                        Name="Debug_Cairo|Win32"
     33408                                        ExcludedFromBuild="true"
     33409                                        >
     33410                                        <Tool
     33411                                                Name="VCCLCompilerTool"
     33412                                        />
     33413                                </FileConfiguration>
     33414                                <FileConfiguration
     33415                                        Name="Release_Cairo|Win32"
     33416                                        ExcludedFromBuild="true"
     33417                                        >
     33418                                        <Tool
     33419                                                Name="VCCLCompilerTool"
     33420                                        />
     33421                                </FileConfiguration>
     33422                                <FileConfiguration
     33423                                        Name="Debug_All|Win32"
     33424                                        ExcludedFromBuild="true"
     33425                                        >
     33426                                        <Tool
     33427                                                Name="VCCLCompilerTool"
     33428                                        />
     33429                                </FileConfiguration>
     33430                        </File>
     33431                        <File
     33432                                RelativePath="..\html\HTMLMeterElement.h"
    3331333433                                >
    3331433434                        </File>
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r59526 r59541  
    25722572                A43BF59C1149292800C643CA /* RenderProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A43BF59A1149292800C643CA /* RenderProgress.cpp */; };
    25732573                A43BF59D1149292800C643CA /* RenderProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = A43BF59B1149292800C643CA /* RenderProgress.h */; };
     2574                A454424A119B3661009BE912 /* HTMLMeterElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A4544248119B3661009BE912 /* HTMLMeterElement.cpp */; };
     2575                A454424B119B3661009BE912 /* HTMLMeterElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A4544249119B3661009BE912 /* HTMLMeterElement.h */; };
     2576                A454424E119B3687009BE912 /* RenderMeter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A454424C119B3687009BE912 /* RenderMeter.cpp */; };
     2577                A454424F119B3687009BE912 /* RenderMeter.h in Headers */ = {isa = PBXBuildFile; fileRef = A454424D119B3687009BE912 /* RenderMeter.h */; };
    25742578                A513B3D7114B1666001C429B /* KeyEventCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C974CF11485FF10066F2AB /* KeyEventCocoa.h */; };
    25752579                A513B3D8114B166A001C429B /* KeyEventCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5C974D011485FF10066F2AB /* KeyEventCocoa.mm */; };
     
    80978101                A43BF59A1149292800C643CA /* RenderProgress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderProgress.cpp; sourceTree = "<group>"; };
    80988102                A43BF59B1149292800C643CA /* RenderProgress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderProgress.h; sourceTree = "<group>"; };
     8103                A4544248119B3661009BE912 /* HTMLMeterElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMeterElement.cpp; sourceTree = "<group>"; };
     8104                A4544249119B3661009BE912 /* HTMLMeterElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLMeterElement.h; sourceTree = "<group>"; };
     8105                A454424C119B3687009BE912 /* RenderMeter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMeter.cpp; sourceTree = "<group>"; };
     8106                A454424D119B3687009BE912 /* RenderMeter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMeter.h; sourceTree = "<group>"; };
    80998107                A59E3C1C11580F510072928E /* KeyEventCodesIPhone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyEventCodesIPhone.h; path = iphone/KeyEventCodesIPhone.h; sourceTree = "<group>"; };
    81008108                A59E3C1D11580F510072928E /* KeyEventIPhone.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = KeyEventIPhone.mm; path = iphone/KeyEventIPhone.mm; sourceTree = "<group>"; };
     
    1339813406                                A871DC180A15205700B12A68 /* HTMLMetaElement.h */,
    1339913407                                A80E79FC0A19C307007FB8C5 /* HTMLMetaElement.idl */,
     13408                                A4544248119B3661009BE912 /* HTMLMeterElement.cpp */,
     13409                                A4544249119B3661009BE912 /* HTMLMeterElement.h */,
    1340013410                                A8CFF79F0A156978000A4234 /* HTMLModElement.cpp */,
    1340113411                                A8CFF79D0A156978000A4234 /* HTMLModElement.h */,
     
    1616516175                                ABDDFE730A5C6E6F00A3E11D /* RenderMenuList.cpp */,
    1616616176                                ABDDFE740A5C6E7000A3E11D /* RenderMenuList.h */,
     16177                                A454424C119B3687009BE912 /* RenderMeter.cpp */,
     16178                                A454424D119B3687009BE912 /* RenderMeter.h */,
    1616716179                                BCEA4840097D93020094C9E4 /* RenderObject.cpp */,
    1616816180                                BCEA4841097D93020094C9E4 /* RenderObject.h */,
     
    1917019182                                2E94F4511192096A00B7F75D /* FileReader.h in Headers */,
    1917119183                                E440A2D71191A523000820B0 /* SVGFELighting.h in Headers */,
     19184                                A454424B119B3661009BE912 /* HTMLMeterElement.h in Headers */,
     19185                                A454424F119B3687009BE912 /* RenderMeter.h in Headers */,
    1917219186                                B5B5DC6A119BB3D5002A8790 /* AbstractDatabase.h in Headers */,
    1917319187                                4FD8D0F3119C718B002FA825 /* ScriptGCEvent.h in Headers */,
     
    2144021454                                2E94F4501192096400B7F75D /* FileReader.cpp in Sources */,
    2144121455                                E440A2D51191A50B000820B0 /* SVGFELighting.cpp in Sources */,
     21456                                A454424A119B3661009BE912 /* HTMLMeterElement.cpp in Sources */,
     21457                                A454424E119B3687009BE912 /* RenderMeter.cpp in Sources */,
    2144221458                                B5B5DC69119BB3D5002A8790 /* AbstractDatabase.cpp in Sources */,
    2144321459                                4FD8D0F2119C718B002FA825 /* ScriptGCEvent.cpp in Sources */,
  • trunk/WebCore/css/CSSPrimitiveValueMappings.h

    r59386 r59541  
    276276            m_value.ident = CSSValueMenulistTextfield;
    277277            break;
     278        case MeterPart:
     279            m_value.ident = CSSValueMeter;
     280            break;
    278281        case OuterSpinButtonPart:
    279282            m_value.ident = CSSValueOuterSpinButton;
  • trunk/WebCore/css/CSSValueKeywords.in

    r58384 r59541  
    590590menulist-text
    591591menulist-textfield
     592meter
    592593outer-spin-button
    593594progress-bar
  • trunk/WebCore/css/html.css

    r58564 r59541  
    518518}
    519519
     520/* meter */
     521
     522meter {
     523    -webkit-appearance: meter;
     524    display: inline-block;
     525    height: 1em;
     526    width: 5em;
     527    vertical-align: -0.2em;
     528}
     529
     530meter::-webkit-meter {
     531    -webkit-appearance: meter;
     532}
     533
    520534/* progress */
    521535
  • trunk/WebCore/html/HTMLAttributeNames.in

    r56402 r59541  
    9999height
    100100hidden
     101high
    101102href
    102103hreflang
     
    116117longdesc
    117118loop
     119low
    118120playcount
    119121loopend
     
    220222onwebkitendfullscreen
    221223onwebkittransitionend
     224optimum
    222225pattern
    223226placeholder
  • trunk/WebCore/html/HTMLElement.cpp

    r58914 r59541  
    862862        tagList.add(progressTag.localName().impl());
    863863#endif
     864        tagList.add(meterTag.localName().impl());
    864865    }
    865866    return &tagList;
  • trunk/WebCore/html/HTMLElementsAllInOne.cpp

    r55980 r59541  
    7878#include "HTMLMenuElement.cpp"
    7979#include "HTMLMetaElement.cpp"
     80#include "HTMLMeterElement.cpp"
    8081#include "HTMLModElement.cpp"
    8182#include "HTMLOListElement.cpp"
  • trunk/WebCore/html/HTMLTagNames.in

    r55980 r59541  
    7878menu createWithNew
    7979meta createWithNew
     80meter interfaceName=HTMLMeterElement, conditional=METER_TAG
    8081nav interfaceName=HTMLElement
    8182nobr interfaceName=HTMLElement
  • trunk/WebCore/page/DOMWindow.idl

    r59499 r59541  
    413413        attribute HTMLMenuElementConstructor HTMLMenuElement;
    414414        attribute HTMLMetaElementConstructor HTMLMetaElement;
     415#if defined(ENABLE_METER_TAG) && ENABLE_METER_TAG
     416        attribute HTMLMeterElementConstructor HTMLMeterElement;
     417#endif
    415418        attribute HTMLModElementConstructor HTMLModElement;
    416419        attribute HTMLOListElementConstructor HTMLOListElement;
  • trunk/WebCore/platform/ThemeTypes.h

    r58228 r59541  
    5353    MediaSliderPart, MediaSliderThumbPart, MediaVolumeSliderContainerPart, MediaVolumeSliderPart, MediaVolumeSliderThumbPart,
    5454    MediaControlsBackgroundPart, MediaCurrentTimePart, MediaTimeRemainingPart,
    55     MenulistPart, MenulistButtonPart, MenulistTextPart, MenulistTextFieldPart, OuterSpinButtonPart, ProgressBarPart, ProgressBarValuePart,
     55    MenulistPart, MenulistButtonPart, MenulistTextPart, MenulistTextFieldPart, MeterPart, OuterSpinButtonPart, ProgressBarPart, ProgressBarValuePart,
    5656    SliderHorizontalPart, SliderVerticalPart, SliderThumbHorizontalPart,
    5757    SliderThumbVerticalPart, CaretPart, SearchFieldPart, SearchFieldDecorationPart,
  • trunk/WebCore/rendering/RenderObject.h

    r58570 r59541  
    277277    virtual bool isMedia() const { return false; }
    278278    virtual bool isMenuList() const { return false; }
     279#if ENABLE(METER_TAG)
     280    virtual bool isMeter() const { return false; }
     281#endif
    279282#if ENABLE(PROGRESS_TAG)
    280283    virtual bool isProgress() const { return false; }
  • trunk/WebCore/rendering/RenderTheme.cpp

    r58564 r59541  
    2525#include "CSSValueKeywords.h"
    2626#include "Document.h"
     27#include "FloatConversion.h"
    2728#include "FocusController.h"
    2829#include "FontSelector.h"
     
    3839#include "Settings.h"
    3940#include "TextControlInnerElements.h"
     41
     42#if ENABLE(METER_TAG)
     43#include "HTMLMeterElement.h"
     44#include "RenderMeter.h"
     45#endif
    4046
    4147// The methods in this file are shared by all themes on every platform.
     
    215221            return adjustProgressBarStyle(selector, style, e);
    216222#endif
     223#if ENABLE(Meter_TAG)
     224        case MeterPart:
     225            return adjustMeterStyle(selector, style, e);
     226#endif
    217227        default:
    218228            break;
     
    273283        case MenulistPart:
    274284            return paintMenuList(o, paintInfo, r);
     285#if ENABLE(METER_TAG)
     286        case MeterPart:
     287            return paintMeter(o, paintInfo, r);
     288#endif
    275289#if ENABLE(PROGRESS_TAG)
    276290        case ProgressBarPart:
     
    367381        case ButtonPart:
    368382        case MenulistPart:
     383#if ENABLE(METER_TAG)
     384        case MeterPart:
     385#endif
    369386#if ENABLE(PROGRESS_TAG)
    370387        case ProgressBarPart:
     
    405422        case ButtonPart:
    406423        case MenulistPart:
     424#if ENABLE(METER_TAG)
     425        case MeterPart:
     426#endif
    407427#if ENABLE(PROGRESS_TAG)
    408428        case ProgressBarPart:
     
    867887{
    868888}
     889
     890#if ENABLE(METER_TAG)
     891void RenderTheme::adjustMeterStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
     892{
     893    style->setBoxShadow(0);
     894}
     895
     896bool RenderTheme::paintMeter(RenderObject* renderObject, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
     897{
     898    // Some platforms do not have a native gauge widget, so we draw here a default implementation.
     899    RenderMeter* renderMeter = toRenderMeter(renderObject);
     900    RenderStyle* style = renderObject->style();
     901    int left = style->borderLeft().width() + style->paddingLeft().value();
     902    int top = style->borderTop().width() + style->paddingTop().value();
     903    int right = style->borderRight().width() + style->paddingRight().value();
     904    int bottom = style->borderBottom().width() + style->paddingBottom().value();
     905    FloatRect innerRect(rect.x() + left, rect.y() + top, rect.width() - left - right, rect.height() - top - bottom);
     906
     907    HTMLMeterElement* element = static_cast<HTMLMeterElement*>(renderMeter->node());
     908    double min = element->min();
     909    double max = element->max();
     910    double value = element->value();
     911
     912    if (min >= max) {
     913        paintInfo.context->fillRect(innerRect, Color::black, style->colorSpace());
     914        return false;
     915    }
     916
     917    // Paint the background first
     918    paintInfo.context->fillRect(innerRect, Color::lightGray, style->colorSpace());
     919
     920    FloatRect valueRect;
     921
     922    if (rect.width() < rect.height()) {
     923        // Vertical gauge
     924        double scale = innerRect.height() / (max - min);
     925        valueRect.setLocation(FloatPoint(innerRect.x(), innerRect.y() + narrowPrecisionToFloat((max - value) * scale)));
     926        valueRect.setSize(FloatSize(innerRect.width(), narrowPrecisionToFloat((value - min) * scale)));
     927    } else if (renderMeter->style()->direction() == RTL) {
     928        // right to left horizontal gauge
     929        double scale = innerRect.width() / (max - min);
     930        valueRect.setLocation(FloatPoint(innerRect.x() + narrowPrecisionToFloat((max - value) * scale), innerRect.y()));
     931        valueRect.setSize(FloatSize(narrowPrecisionToFloat((value - min) * scale), innerRect.height()));
     932    } else {
     933        // left to right horizontal gauge
     934        double scale = innerRect.width() / (max - min);
     935        valueRect.setLocation(innerRect.location());
     936        valueRect.setSize(FloatSize(narrowPrecisionToFloat((value - min)) * scale, innerRect.height()));
     937    }
     938    if (!valueRect.isEmpty())
     939        paintInfo.context->fillRect(valueRect, Color::black, style->colorSpace());
     940
     941    return false;
     942}
     943#endif
    869944
    870945#if ENABLE(PROGRESS_TAG)
  • trunk/WebCore/rendering/RenderTheme.h

    r58564 r59541  
    237237    virtual void adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
    238238    virtual bool paintMenuListButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; }
     239
     240#if ENABLE(METER_TAG)
     241    virtual void adjustMeterStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
     242    virtual bool paintMeter(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     243#endif
    239244
    240245#if ENABLE(PROGRESS_TAG)
Note: See TracChangeset for help on using the changeset viewer.