Move Node::supportsFocus() to Element.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 26 May 2013 09:39:24 +0000 (09:39 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 26 May 2013 09:39:24 +0000 (09:39 +0000)
<http://webkit.org/b/116778>

Reviewed by Antti Koivisto.

Node never supports focus, so move supportsFocus() to Element instead.

* dom/Element.h:
* dom/Node.cpp:
* dom/Node.h:

    Removed Node::supportsFocus(), it always returned false anyway.

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::canSetFocusAttribute):

    Check that the underlying Node is an Element before asking if it supports focus.

* html/HTMLAnchorElement.h:
* html/HTMLAreaElement.h:
* html/HTMLBodyElement.h:
* html/HTMLElement.h:
* html/HTMLFieldSetElement.h:
* html/HTMLFormControlElement.h:
* html/HTMLFrameElementBase.h:
* html/HTMLMediaElement.h:
* html/HTMLOptGroupElement.h:
* html/HTMLOptionElement.h:
* html/HTMLOutputElement.h:
* svg/SVGAElement.h:
* svg/SVGCircleElement.h:
* svg/SVGEllipseElement.h:
* svg/SVGGElement.h:
* svg/SVGImageElement.h:
* svg/SVGLineElement.h:
* svg/SVGPathElement.h:
* svg/SVGPolyElement.h:
* svg/SVGRectElement.h:
* svg/SVGSVGElement.h:
* svg/SVGSwitchElement.h:
* svg/SVGSymbolElement.h:
* svg/SVGTextElement.h:
* svg/SVGUseElement.h:

    OVERRIDE ALL THE THINGS!

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@150710 268f45cc-cd09-0410-ab3c-d52691b4dbfc

30 files changed:
Source/WebCore/ChangeLog
Source/WebCore/accessibility/AccessibilityNodeObject.cpp
Source/WebCore/dom/Element.h
Source/WebCore/dom/Node.cpp
Source/WebCore/dom/Node.h
Source/WebCore/html/HTMLAnchorElement.h
Source/WebCore/html/HTMLAreaElement.h
Source/WebCore/html/HTMLBodyElement.h
Source/WebCore/html/HTMLElement.h
Source/WebCore/html/HTMLFieldSetElement.h
Source/WebCore/html/HTMLFormControlElement.h
Source/WebCore/html/HTMLFrameElementBase.h
Source/WebCore/html/HTMLMediaElement.h
Source/WebCore/html/HTMLOptGroupElement.h
Source/WebCore/html/HTMLOptionElement.h
Source/WebCore/html/HTMLOutputElement.h
Source/WebCore/svg/SVGAElement.h
Source/WebCore/svg/SVGCircleElement.h
Source/WebCore/svg/SVGEllipseElement.h
Source/WebCore/svg/SVGGElement.h
Source/WebCore/svg/SVGImageElement.h
Source/WebCore/svg/SVGLineElement.h
Source/WebCore/svg/SVGPathElement.h
Source/WebCore/svg/SVGPolyElement.h
Source/WebCore/svg/SVGRectElement.h
Source/WebCore/svg/SVGSVGElement.h
Source/WebCore/svg/SVGSwitchElement.h
Source/WebCore/svg/SVGSymbolElement.h
Source/WebCore/svg/SVGTextElement.h
Source/WebCore/svg/SVGUseElement.h

index 5254173..0d7705c 100644 (file)
@@ -1,5 +1,53 @@
 2013-05-25  Andreas Kling  <akling@apple.com>
 
+        Move Node::supportsFocus() to Element.
+        <http://webkit.org/b/116778>
+
+        Reviewed by Antti Koivisto.
+
+        Node never supports focus, so move supportsFocus() to Element instead.
+
+        * dom/Element.h:
+        * dom/Node.cpp:
+        * dom/Node.h:
+
+            Removed Node::supportsFocus(), it always returned false anyway.
+
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::AccessibilityNodeObject::canSetFocusAttribute):
+
+            Check that the underlying Node is an Element before asking if it supports focus.
+
+        * html/HTMLAnchorElement.h:
+        * html/HTMLAreaElement.h:
+        * html/HTMLBodyElement.h:
+        * html/HTMLElement.h:
+        * html/HTMLFieldSetElement.h:
+        * html/HTMLFormControlElement.h:
+        * html/HTMLFrameElementBase.h:
+        * html/HTMLMediaElement.h:
+        * html/HTMLOptGroupElement.h:
+        * html/HTMLOptionElement.h:
+        * html/HTMLOutputElement.h:
+        * svg/SVGAElement.h:
+        * svg/SVGCircleElement.h:
+        * svg/SVGEllipseElement.h:
+        * svg/SVGGElement.h:
+        * svg/SVGImageElement.h:
+        * svg/SVGLineElement.h:
+        * svg/SVGPathElement.h:
+        * svg/SVGPolyElement.h:
+        * svg/SVGRectElement.h:
+        * svg/SVGSVGElement.h:
+        * svg/SVGSwitchElement.h:
+        * svg/SVGSymbolElement.h:
+        * svg/SVGTextElement.h:
+        * svg/SVGUseElement.h:
+
+            OVERRIDE ALL THE THINGS!
+
+2013-05-25  Andreas Kling  <akling@apple.com>
+
         Move Node::isFocusable() to Element.
         <http://webkit.org/b/116777>
 
index c545a36..4ed2752 100644 (file)
@@ -1785,10 +1785,15 @@ bool AccessibilityNodeObject::canSetFocusAttribute() const
     if (!node)
         return false;
 
-    if (isDisabledFormControl(node))
+    if (!node->isElementNode())
+        return false;
+
+    Element* element = toElement(node);
+
+    if (element->isDisabledFormControl())
         return false;
 
-    return node->supportsFocus();
+    return element->supportsFocus();
 }
 
 AccessibilityRole AccessibilityNodeObject::determineAriaRoleAttribute() const
index 28313da..3a3a629 100644 (file)
@@ -432,6 +432,7 @@ public:
     virtual void setHovered(bool flag = true);
     virtual void setFocus(bool flag);
 
+    virtual bool supportsFocus() const;
     virtual bool isFocusable() const;
     virtual bool isKeyboardFocusable(KeyboardEvent*) const;
     virtual bool isMouseFocusable() const;
@@ -655,7 +656,6 @@ protected:
 
     void clearTabIndexExplicitlyIfNeeded();    
     void setTabIndexExplicitly(short);
-    virtual bool supportsFocus() const OVERRIDE;
 
     PassRefPtr<HTMLCollection> ensureCachedHTMLCollection(CollectionType);
     HTMLCollection* cachedHTMLCollection(CollectionType);
index 4bbc9dc..32122f4 100644 (file)
@@ -845,11 +845,6 @@ void Node::lazyAttach(ShouldSetAttached shouldSetAttached)
     markAncestorsWithChildNeedsStyleRecalc();
 }
 
-bool Node::supportsFocus() const
-{
-    return false;
-}
-    
 unsigned Node::nodeIndex() const
 {
     Node *_tempNode = previousSibling();
index a21a0ae..3d59415 100644 (file)
@@ -399,10 +399,6 @@ public:
 
     virtual void setActive(bool flag = true, bool pause = false);
 
-    // Whether this kind of node can receive focus by default. Most nodes are
-    // not focusable but some elements, such as form controls and links, are.
-    virtual bool supportsFocus() const;
-
     enum UserSelectAllTreatment {
         UserSelectAllDoesNotAffectEditability,
         UserSelectAllIsAlwaysNonEditable
index 669b1bc..b370ea6 100644 (file)
@@ -108,7 +108,7 @@ protected:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
 
 private:
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual bool isMouseFocusable() const OVERRIDE;
     virtual bool isKeyboardFocusable(KeyboardEvent*) const OVERRIDE;
     virtual void defaultEventHandler(Event*);
index 9ce2999..49ee008 100644 (file)
@@ -51,7 +51,7 @@ private:
     HTMLAreaElement(const QualifiedName&, Document*);
 
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual String target() const;
     virtual bool isKeyboardFocusable(KeyboardEvent*) const OVERRIDE;
     virtual bool isMouseFocusable() const OVERRIDE;
index 640c04f..f89ce7a 100644 (file)
@@ -79,7 +79,7 @@ private:
     
     virtual bool isURLAttribute(const Attribute&) const OVERRIDE;
     
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
 
     virtual int scrollLeft();
     virtual void setScrollLeft(int scrollLeft);
index 093d46c..5052f5d 100644 (file)
@@ -65,7 +65,7 @@ public:
     void insertAdjacentText(const String& where, const String& text, ExceptionCode&);
 
     virtual bool hasCustomFocusLogic() const;
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
 
     String contentEditable() const;
     void setContentEditable(const String&, ExceptionCode&);
index a6aaef1..3a5935a 100644 (file)
@@ -49,7 +49,7 @@ private:
     HTMLFieldSetElement(const QualifiedName&, Document*, HTMLFormElement*);
 
     virtual bool isEnumeratable() const { return true; }
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
     virtual const AtomicString& formControlType() const;
     virtual bool recalcWillValidate() const { return false; }
index 8741077..956aa74 100644 (file)
@@ -115,7 +115,7 @@ protected:
     virtual void removedFrom(ContainerNode*) OVERRIDE;
     virtual void didMoveToNewDocument(Document* oldDocument) OVERRIDE;
 
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual bool isKeyboardFocusable(KeyboardEvent*) const OVERRIDE;
     virtual bool isMouseFocusable() const OVERRIDE;
 
index 4e711a4..0c06017 100644 (file)
@@ -55,7 +55,7 @@ protected:
     virtual void attach();
 
 private:
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual void setFocus(bool) OVERRIDE;
     
     virtual bool isURLAttribute(const Attribute&) const OVERRIDE;
index 2b15ed1..c1a82fd 100644 (file)
@@ -430,7 +430,7 @@ private:
     virtual bool areAuthorShadowsAllowed() const OVERRIDE { return false; }
 
     virtual bool hasCustomFocusLogic() const OVERRIDE;
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual bool isMouseFocusable() const OVERRIDE;
     virtual bool rendererIsNeeded(const NodeRenderingContext&);
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
index 6a253d2..775f507 100644 (file)
@@ -43,8 +43,8 @@ private:
     HTMLOptGroupElement(const QualifiedName&, Document*);
 
     virtual const AtomicString& formControlType() const;
-    virtual bool supportsFocus() const;
-    virtual bool isFocusable() const;
+    virtual bool supportsFocus() const OVERRIDE;
+    virtual bool isFocusable() const OVERRIDE;
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual bool rendererIsNeeded(const NodeRenderingContext&) { return false; }
     virtual void attach();
index ee0903a..27b5fcf 100644 (file)
@@ -69,7 +69,7 @@ public:
 private:
     HTMLOptionElement(const QualifiedName&, Document*);
 
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual bool isFocusable() const OVERRIDE;
     virtual bool rendererIsNeeded(const NodeRenderingContext&) { return false; }
     virtual void attach();
index c6e7a99..368536e 100644 (file)
@@ -59,7 +59,7 @@ private:
     virtual const AtomicString& formControlType() const;
     virtual bool isEnumeratable() const { return true; }
     virtual bool supportLabels() const OVERRIDE { return true; }
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual void childrenChanged(bool createdByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
     virtual void reset();
 
index 7d89d03..143c1b7 100644 (file)
@@ -56,7 +56,7 @@ private:
 
     virtual void defaultEventHandler(Event*);
     
-    virtual bool supportsFocus() const;
+    virtual bool supportsFocus() const OVERRIDE;
     virtual bool isMouseFocusable() const OVERRIDE;
     virtual bool isKeyboardFocusable(KeyboardEvent*) const OVERRIDE;
     virtual bool isFocusable() const OVERRIDE;
index 3d3421a..5455ee3 100644 (file)
@@ -42,7 +42,7 @@ private:
     SVGCircleElement(const QualifiedName&, Document*);
 
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index 8e92754..48172a0 100644 (file)
@@ -42,7 +42,7 @@ private:
     SVGEllipseElement(const QualifiedName&, Document*);
     
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index 33b20cc..8661974 100644 (file)
@@ -44,7 +44,7 @@ protected:
 
 private:
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index f80df1f..f63b39a 100644 (file)
@@ -46,7 +46,7 @@ private:
     SVGImageElement(const QualifiedName&, Document*);
     
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index 65ca85f..4e9bfdf 100644 (file)
@@ -42,7 +42,7 @@ private:
     SVGLineElement(const QualifiedName&, Document*);
     
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index cddd883..2753b5e 100644 (file)
@@ -106,7 +106,7 @@ private:
     SVGPathElement(const QualifiedName&, Document*);
 
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index 562489c..e8f0537 100644 (file)
@@ -49,7 +49,7 @@ protected:
 
 private:
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; 
index ea1c926..6b07167 100644 (file)
@@ -42,7 +42,7 @@ private:
     SVGRectElement(const QualifiedName&, Document*);
     
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index d3ebb05..22ed977 100644 (file)
@@ -55,7 +55,7 @@ public:
     using SVGStyledTransformableElement::deref;
 
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     // 'SVGSVGElement' functions
     const AtomicString& contentScriptType() const;
index 7b5c34d..3c0af4a 100644 (file)
@@ -41,7 +41,7 @@ private:
     SVGSwitchElement(const QualifiedName&, Document*);
     
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const;
 
index ecdcdfa..d72babe 100644 (file)
@@ -42,7 +42,7 @@ public:
 private:
     SVGSymbolElement(const QualifiedName&, Document*);
 
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index fae57e2..ffb98cb 100644 (file)
@@ -44,7 +44,7 @@ public:
 private:
     SVGTextElement(const QualifiedName&, Document*);
 
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     bool isSupportedAttribute(const QualifiedName&);
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index 0fd0c8c..007ff2d 100644 (file)
@@ -59,7 +59,7 @@ private:
     SVGUseElement(const QualifiedName&, Document*, bool wasInsertedByParser);
 
     virtual bool isValid() const { return SVGTests::isValid(); }
-    virtual bool supportsFocus() const { return true; }
+    virtual bool supportsFocus() const OVERRIDE { return true; }
 
     virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE;
     virtual void removedFrom(ContainerNode*) OVERRIDE;