Remove willAddAuthorShadowRoot and replace with alwaysCreateUserAgentShadowRoot
authoresprehn@chromium.org <esprehn@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 Jan 2013 19:41:07 +0000 (19:41 +0000)
committeresprehn@chromium.org <esprehn@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 Jan 2013 19:41:07 +0000 (19:41 +0000)
https://bugs.webkit.org/show_bug.cgi?id=108248

Reviewed by Dimitri Glazkov.

The only reason willAddAuthorShadowRoot exists is so that a handful of
other elements can create the user agent shadow root right before the
author shadow root is created. Instead of providing this generic hook
just expose a virtual method on Element that requests this behavior.

No new tests, just refactoring.

* dom/Element.cpp:
(WebCore::Element::createShadowRoot):
* dom/Element.h:
(Element):
(WebCore::Element::alwaysCreateUserAgentShadowRoot): Added.
* dom/ElementShadow.cpp:
(WebCore::ElementShadow::addShadowRoot): Remove willAddAuthorShadowRoot notification.
* html/HTMLButtonElement.cpp:
* html/HTMLButtonElement.h:
* html/HTMLFormControlElement.cpp:
* html/HTMLFormControlElement.h:
* html/HTMLMediaElement.cpp:
* html/HTMLMediaElement.h:

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

Source/WebCore/ChangeLog
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/Element.h
Source/WebCore/dom/ElementShadow.cpp
Source/WebCore/html/HTMLButtonElement.cpp
Source/WebCore/html/HTMLButtonElement.h
Source/WebCore/html/HTMLFormControlElement.cpp
Source/WebCore/html/HTMLFormControlElement.h
Source/WebCore/html/HTMLMediaElement.cpp
Source/WebCore/html/HTMLMediaElement.h

index 67accbd..bf29060 100644 (file)
@@ -1,3 +1,31 @@
+2013-01-30  Elliott Sprehn  <esprehn@chromium.org>
+
+        Remove willAddAuthorShadowRoot and replace with alwaysCreateUserAgentShadowRoot
+        https://bugs.webkit.org/show_bug.cgi?id=108248
+
+        Reviewed by Dimitri Glazkov.
+
+        The only reason willAddAuthorShadowRoot exists is so that a handful of
+        other elements can create the user agent shadow root right before the
+        author shadow root is created. Instead of providing this generic hook
+        just expose a virtual method on Element that requests this behavior.
+
+        No new tests, just refactoring.
+
+        * dom/Element.cpp:
+        (WebCore::Element::createShadowRoot):
+        * dom/Element.h:
+        (Element):
+        (WebCore::Element::alwaysCreateUserAgentShadowRoot): Added.
+        * dom/ElementShadow.cpp:
+        (WebCore::ElementShadow::addShadowRoot): Remove willAddAuthorShadowRoot notification.
+        * html/HTMLButtonElement.cpp:
+        * html/HTMLButtonElement.h:
+        * html/HTMLFormControlElement.cpp:
+        * html/HTMLFormControlElement.h:
+        * html/HTMLMediaElement.cpp:
+        * html/HTMLMediaElement.h:
+
 2013-01-30  Dominik Röttsches  <dominik.rottsches@intel.com>
 
         [HarfBuzz] Naming fixes after removing old HarfBuzz code
index 1afe26d..3971377 100644 (file)
@@ -1450,6 +1450,9 @@ void Element::didAffectSelector(AffectedSelectorMask mask)
 
 PassRefPtr<ShadowRoot> Element::createShadowRoot(ExceptionCode& ec)
 {
+    if (alwaysCreateUserAgentShadowRoot())
+        ensureUserAgentShadowRoot();
+
 #if ENABLE(SHADOW_DOM)
     if (RuntimeEnabledFeatures::authorShadowDOMForAnyElementEnabled())
         return ensureShadow()->addShadowRoot(this, ShadowRoot::AuthorShadowRoot);
index 1863c9a..23c569c 100644 (file)
@@ -533,6 +533,7 @@ private:
 
     virtual bool areAuthorShadowsAllowed() const { return true; }
     virtual void didAddUserAgentShadowRoot(ShadowRoot*) { }
+    virtual bool alwaysCreateUserAgentShadowRoot() const { return false; }
 
     // FIXME: Remove the need for Attr to call willModifyAttribute/didModifyAttribute.
     friend class Attr;
index 24f5360..e6ebfa3 100644 (file)
@@ -36,9 +36,6 @@ ShadowRoot* ElementShadow::addShadowRoot(Element* shadowHost, ShadowRoot::Shadow
 {
     RefPtr<ShadowRoot> shadowRoot = ShadowRoot::create(shadowHost->document(), type);
 
-    if (type == ShadowRoot::AuthorShadowRoot)
-        shadowHost->willAddAuthorShadowRoot();
-
     shadowRoot->setHost(shadowHost);
     m_shadowRoots.push(shadowRoot.get());
     m_distributor.didShadowBoundaryChange(shadowHost);
index eff6fd8..c102b19 100644 (file)
@@ -63,10 +63,6 @@ RenderObject* HTMLButtonElement::createRenderer(RenderArena* arena, RenderStyle*
     return new (arena) RenderButton(this);
 }
 
-void HTMLButtonElement::willAddAuthorShadowRoot()
-{
-}
-
 const AtomicString& HTMLButtonElement::formControlType() const
 {
     switch (m_type) {
index 44731ea..19f9001 100644 (file)
@@ -44,10 +44,11 @@ private:
     enum Type { SUBMIT, RESET, BUTTON };
 
     virtual const AtomicString& formControlType() const;
-        
+
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
 
-    virtual void willAddAuthorShadowRoot() OVERRIDE;
+    // HTMLFormControlElement always creates one, but buttons don't need it.
+    virtual bool alwaysCreateUserAgentShadowRoot() const OVERRIDE { return false; }
 
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
index 185d9d0..77618da 100644 (file)
@@ -70,11 +70,6 @@ HTMLFormControlElement::~HTMLFormControlElement()
 {
 }
 
-void HTMLFormControlElement::willAddAuthorShadowRoot()
-{
-    ensureUserAgentShadowRoot();
-}
-
 String HTMLFormControlElement::formEnctype() const
 {
     return FormSubmission::Attributes::parseEncodingType(fastGetAttribute(formenctypeAttr));
index 44777c0..7b4d1ff 100644 (file)
@@ -45,8 +45,6 @@ public:
 
     HTMLFormElement* form() const { return FormAssociatedElement::form(); }
 
-    void willAddAuthorShadowRoot() OVERRIDE;
-
     String formEnctype() const;
     void setFormEnctype(const String&);
     String formMethod() const;
@@ -139,6 +137,7 @@ private:
     virtual void derefFormAssociatedElement() { deref(); }
 
     virtual bool isFormControlElement() const { return true; }
+    virtual bool alwaysCreateUserAgentShadowRoot() const OVERRIDE { return true; }
 
     virtual short tabIndex() const;
 
index feb0508..24c1db4 100644 (file)
@@ -1981,12 +1981,6 @@ void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*)
     }
 }
 
-void HTMLMediaElement::willAddAuthorShadowRoot()
-{
-    if (!userAgentShadowRoot())
-        ensureUserAgentShadowRoot();
-}
-
 void HTMLMediaElement::rewind(float timeDelta)
 {
     LOG(Media, "HTMLMediaElement::rewind(%f)", timeDelta);
index c75e1e1..e52ce41 100644 (file)
@@ -88,8 +88,6 @@ class HTMLMediaElement : public HTMLElement, public MediaPlayerClient, public Me
 public:
     MediaPlayer* player() const { return m_player.get(); }
 
-    virtual void willAddAuthorShadowRoot() OVERRIDE;
-
     virtual bool isVideo() const = 0;
     virtual bool hasVideo() const { return false; }
     virtual bool hasAudio() const;
@@ -382,6 +380,7 @@ protected:
 private:
     void createMediaPlayer();
 
+    virtual bool alwaysCreateUserAgentShadowRoot() const OVERRIDE { return true; }
     virtual bool areAuthorShadowsAllowed() const OVERRIDE { return false; }
 
     virtual bool hasCustomFocusLogic() const OVERRIDE;