Changeset 90026 in webkit


Ignore:
Timestamp:
Jun 29, 2011 10:46:56 AM (13 years ago)
Author:
Dimitri Glazkov
Message:

2011-06-29 Dimitri Glazkov <Dimitri Glazkov>

Reviewed by Adam Barth.

Extract setShadowRoot function, harden it in preparation to be exposed to script.
https://bugs.webkit.org/show_bug.cgi?id=63596

Refactoring, covered by existing tests.

  • dom/Element.cpp: (WebCore::validateShadowRoot): Added. (WebCore::Element::setShadowRoot): Extracted from ensureShadowRoot. (WebCore::Element::ensureShadowRoot): Changed to use setShadowRoot.
  • dom/Element.h: Added decl.
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r90022 r90026  
     12011-06-29  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Reviewed by Adam Barth.
     4
     5        Extract setShadowRoot function, harden it in preparation to be exposed to script.
     6        https://bugs.webkit.org/show_bug.cgi?id=63596
     7
     8        Refactoring, covered by existing tests.
     9
     10        * dom/Element.cpp:
     11        (WebCore::validateShadowRoot): Added.
     12        (WebCore::Element::setShadowRoot): Extracted from ensureShadowRoot.
     13        (WebCore::Element::ensureShadowRoot): Changed to use setShadowRoot.
     14        * dom/Element.h: Added decl.
     15
    1162011-06-29  Vsevolod Vlasov  <vsevik@chromium.org>
    217
  • trunk/Source/WebCore/dom/Element.cpp

    r90004 r90026  
    11971197}
    11981198
     1199static bool validateShadowRoot(Document* document, ShadowRoot* shadowRoot, ExceptionCode& ec)
     1200{
     1201    if (!shadowRoot)
     1202        return true;
     1203
     1204    if (shadowRoot->shadowHost()) {
     1205        ec = HIERARCHY_REQUEST_ERR;
     1206        return false;
     1207    }
     1208
     1209    if (shadowRoot->document() != document) {
     1210        ec = WRONG_DOCUMENT_ERR;
     1211        return false;
     1212    }
     1213
     1214    return true;
     1215}
     1216
     1217void Element::setShadowRoot(PassRefPtr<ShadowRoot> prpShadowRoot, ExceptionCode& ec)
     1218{
     1219    RefPtr<ShadowRoot> shadowRoot = prpShadowRoot;
     1220    if (!validateShadowRoot(document(), shadowRoot.get(), ec))
     1221        return;
     1222
     1223    removeShadowRoot();
     1224
     1225    ensureRareData()->m_shadowRoot = shadowRoot.get();
     1226    shadowRoot->setShadowHost(this);
     1227    if (inDocument())
     1228        shadowRoot->insertedIntoDocument();
     1229    if (attached())
     1230        shadowRoot->lazyAttach();
     1231}
     1232
    11991233ShadowRoot* Element::ensureShadowRoot()
    12001234{
     
    12021236        return existingRoot;
    12031237
    1204     RefPtr<ShadowRoot> newRoot = ShadowRoot::create(document());
    1205     ensureRareData()->m_shadowRoot = newRoot.get();
    1206     newRoot->setShadowHost(this);
    1207     if (inDocument())
    1208         newRoot->insertedIntoDocument();
    1209     if (attached())
    1210         newRoot->lazyAttach();
    1211     return newRoot.get();
     1238    ExceptionCode ec = 0;
     1239    setShadowRoot(ShadowRoot::create(document()), ec);
     1240    ASSERT(!ec);
     1241    return shadowRoot();
    12121242}
    12131243
  • trunk/Source/WebCore/dom/Element.h

    r89989 r90026  
    232232
    233233    ShadowRoot* shadowRoot() const;
     234    void setShadowRoot(PassRefPtr<ShadowRoot>, ExceptionCode&);
    234235    ShadowRoot* ensureShadowRoot();
    235236    void removeShadowRoot();
Note: See TracChangeset for help on using the changeset viewer.