 Chromium Code Reviews
 Chromium Code Reviews Issue 1413583002:
  Make ElementShadow::youngestShadowRoot() return a reference  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1413583002:
  Make ElementShadow::youngestShadowRoot() return a reference  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| Index: third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp | 
| diff --git a/third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp b/third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp | 
| index 906fa2a83679cff8eb30572e2461d7d3ba7ac693..5a572112b31f6058a106ad3dff44621452f29fad 100644 | 
| --- a/third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp | 
| +++ b/third_party/WebKit/Source/core/dom/shadow/ElementShadow.cpp | 
| @@ -149,9 +149,9 @@ ShadowRoot& ElementShadow::addShadowRoot(Element& shadowHost, ShadowRootType typ | 
| ScriptForbiddenScope forbidScript; | 
| if (type == ShadowRootType::V0) { | 
| - if (!youngestShadowRoot()) { | 
| + if (m_shadowRoots.isEmpty()) { | 
| 
hayato
2015/10/19 06:58:19
Updated: Use m_shadowRoots.isEmpty() here because
 
kochi
2015/10/19 07:02:03
Acknowledged.
 | 
| shadowHost.willAddFirstAuthorShadowRoot(); | 
| - } else if (youngestShadowRoot()->type() == ShadowRootType::UserAgent) { | 
| + } else if (m_shadowRoots.tail()->type() == ShadowRootType::UserAgent) { | 
| shadowHost.willAddFirstAuthorShadowRoot(); | 
| UseCounter::countDeprecation(shadowHost.document(), UseCounter::ElementCreateShadowRootMultipleWithUserAgentShadowRoot); | 
| } else { | 
| @@ -161,7 +161,7 @@ ShadowRoot& ElementShadow::addShadowRoot(Element& shadowHost, ShadowRootType typ | 
| shadowHost.willAddFirstAuthorShadowRoot(); | 
| } | 
| - for (ShadowRoot* root = youngestShadowRoot(); root; root = root->olderShadowRoot()) | 
| + for (ShadowRoot* root = m_shadowRoots.tail(); root; root = root->olderShadowRoot()) | 
| 
kochi
2015/10/19 07:02:03
Should this be m_shadowRoots.head() instead of m_s
 
hayato
2015/10/19 07:12:11
Done. Nice catch!
 | 
| root->lazyReattachIfAttached(); | 
| RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = ShadowRoot::create(shadowHost.document(), type); | 
| @@ -203,7 +203,7 @@ void ElementShadow::attach(const Node::AttachContext& context) | 
| Node::AttachContext childrenContext(context); | 
| childrenContext.resolvedStyle = 0; | 
| - for (ShadowRoot* root = youngestShadowRoot(); root; root = root->olderShadowRoot()) { | 
| + for (ShadowRoot* root = &youngestShadowRoot(); root; root = root->olderShadowRoot()) { | 
| if (root->needsAttach()) | 
| root->attach(childrenContext); | 
| } | 
| @@ -214,7 +214,7 @@ void ElementShadow::detach(const Node::AttachContext& context) | 
| Node::AttachContext childrenContext(context); | 
| childrenContext.resolvedStyle = 0; | 
| - for (ShadowRoot* root = youngestShadowRoot(); root; root = root->olderShadowRoot()) | 
| + for (ShadowRoot* root = &youngestShadowRoot(); root; root = root->olderShadowRoot()) | 
| root->detach(childrenContext); | 
| } | 
| @@ -229,8 +229,8 @@ void ElementShadow::setNeedsDistributionRecalc() | 
| bool ElementShadow::hasSameStyles(const ElementShadow* other) const | 
| { | 
| - ShadowRoot* root = youngestShadowRoot(); | 
| - ShadowRoot* otherRoot = other->youngestShadowRoot(); | 
| + ShadowRoot* root = &youngestShadowRoot(); | 
| + ShadowRoot* otherRoot = &other->youngestShadowRoot(); | 
| while (root || otherRoot) { | 
| if (!root || !otherRoot) | 
| return false; | 
| @@ -280,7 +280,7 @@ void ElementShadow::distribute() | 
| WillBeHeapVector<RawPtrWillBeMember<HTMLShadowElement>, 32> shadowInsertionPoints; | 
| DistributionPool pool(*host()); | 
| - for (ShadowRoot* root = youngestShadowRoot(); root; root = root->olderShadowRoot()) { | 
| + for (ShadowRoot* root = &youngestShadowRoot(); root; root = root->olderShadowRoot()) { | 
| HTMLShadowElement* shadowInsertionPoint = 0; | 
| const WillBeHeapVector<RefPtrWillBeMember<InsertionPoint>>& insertionPoints = root->descendantInsertionPoints(); | 
| for (size_t i = 0; i < insertionPoints.size(); ++i) { | 
| @@ -372,7 +372,7 @@ void ElementShadow::clearDistribution() | 
| { | 
| m_nodeToInsertionPoints.clear(); | 
| - for (ShadowRoot* root = youngestShadowRoot(); root; root = root->olderShadowRoot()) | 
| + for (ShadowRoot* root = &youngestShadowRoot(); root; root = root->olderShadowRoot()) | 
| root->setShadowInsertionPointOfYoungerShadowRoot(nullptr); | 
| } |