source: trunk/Source/WebCore/html/HTMLProgressElement.h @ 111009

Revision 111009, 2.1 KB checked in by commit-queue@webkit.org, 3 years ago (diff)

[Forms] The "progress" element should not be a form-associated element.
https://bugs.webkit.org/show_bug.cgi?id=80240

Patch by Yoshifumi Inoue <yosin@chromium.org> on 2012-03-16
Reviewed by Kent Tamura.

Source/WebCore:

This patch changes base class of HTMLProgressElement to LabelableElement from
HTMLFormControlElement for saving memory space and iteration time of
extra "progress" elements in HTMLFormElement::m_formAssociatedElements
and matching the HTML5 specification for ease of maintenance.

Changes of TextIterator is lead by usage of isFormControlElement. This
changes will be replaced with more meaningful predicate as part of
https://bugs.webkit.org/show_bug.cgi?id=80381

No new tests. Update existing tests to cover this change.

  • css/CSSStyleSelector.cpp:

(WebCore::CSSStyleSelector::canShareStyleWithElement): Moved the "progress" element support code from canShareStyleWithControl.
(WebCore::CSSStyleSelector::canShareStyleWithControl):

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOneSelector): Remove isFormControlElement check for PseudoIndeterminate.

  • editing/TextIterator.cpp:

(WebCore::TextIterator::advance): Check HTMLProgressElement in addition to isFormControlElement. This change is for text dump in LayoutTests implemented by document.innerText attribute.

  • html/HTMLProgressElement.cpp: Remove unused include file.

(WebCore::HTMLProgressElement::HTMLProgressElement): Changed base class to LabelableElement.
(WebCore::HTMLProgressElement::create): Remove form paraprogress.
(WebCore::HTMLProgressElement::parseAttribute): Replace HTMLFormControlElement to LabelableElement.
(WebCore::HTMLProgressElement::attach): Replace HTMLFormControlElement to LabelableElement.

  • html/HTMLProgressElement.h:

(HTMLProgressElement):

  • html/HTMLProgressElement.idl: Remove the "form" attribute which isn't listed in the HTML5 specification.
  • html/HTMLTagNames.in: Remove "constructorNeedsFormElement" for not passing "form" parameter in HTMLElementFactory.

LayoutTests:

This patch changes tests for non-existent "form" attribute of the
"progress" element. The "form" attribute is available only for
form-associate elements. However, the "progress" element isn't.

  • fast/dom/HTMLProgressElement/progress-element-form-expected.txt: Update expectation for test output changes.
  • fast/dom/HTMLProgressElement/progress-element-form.html: Changed for the "progress" element doesn't have IDL attribute "form".
  • fast/forms/form-attribute-expected.txt: Update expectation for test output changes.
  • fast/forms/form-attribute.html: Removed lines for the "progress" element.
  • Property svn:eol-style set to native
Line 
1/*
2 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB.  If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18 *
19 */
20
21#ifndef HTMLProgressElement_h
22#define HTMLProgressElement_h
23
24#if ENABLE(PROGRESS_TAG)
25#include "LabelableElement.h"
26
27namespace WebCore {
28
29class ProgressValueElement;
30
31class HTMLProgressElement : public LabelableElement {
32public:
33    static const double IndeterminatePosition;
34    static const double InvalidPosition;
35
36    static PassRefPtr<HTMLProgressElement> create(const QualifiedName&, Document*);
37
38    double value() const;
39    void setValue(double, ExceptionCode&);
40
41    double max() const;
42    void setMax(double, ExceptionCode&);
43
44    double position() const;
45
46    bool isDeterminate() const;
47   
48    virtual bool canContainRangeEndPoint() const { return false; }
49
50private:
51    HTMLProgressElement(const QualifiedName&, Document*);
52    virtual ~HTMLProgressElement();
53
54    virtual bool supportLabels() const OVERRIDE { return true; }
55
56    virtual bool supportsFocus() const;
57
58    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
59    virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const OVERRIDE;
60
61    virtual void parseAttribute(Attribute*) OVERRIDE;
62
63    virtual void attach();
64
65    void didElementStateChange();
66    void createShadowSubtree();
67
68    RefPtr<ProgressValueElement> m_value;
69};
70
71} // namespace
72
73#endif
74#endif
Note: See TracBrowser for help on using the repository browser.