Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: third_party/WebKit/Source/core/dom/ContainerNode.cpp

Issue 1420653003: Fix an optimisation in ContainerNode::notifyNodeInsertedInternal (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix assertion Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2013 Apple Inc. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 } 829 }
830 } 830 }
831 831
832 void ContainerNode::notifyNodeInsertedInternal(Node& root, NodeVector& postInser tionNotificationTargets) 832 void ContainerNode::notifyNodeInsertedInternal(Node& root, NodeVector& postInser tionNotificationTargets)
833 { 833 {
834 EventDispatchForbiddenScope assertNoEventDispatch; 834 EventDispatchForbiddenScope assertNoEventDispatch;
835 ScriptForbiddenScope forbidScript; 835 ScriptForbiddenScope forbidScript;
836 836
837 for (Node& node : NodeTraversal::inclusiveDescendantsOf(root)) { 837 for (Node& node : NodeTraversal::inclusiveDescendantsOf(root)) {
838 // As an optimization we don't notify leaf nodes when when inserting 838 // As an optimization we don't notify leaf nodes when when inserting
839 // into detached subtrees. 839 // into detached subtrees that are not in a shadow tree.
840 if (!inDocument() && !node.isContainerNode()) 840 if (!inDocument() && !isInShadowTree() && !node.isContainerNode())
841 continue; 841 continue;
842 if (Node::InsertionShouldCallDidNotifySubtreeInsertions == node.inserted Into(this)) 842 if (Node::InsertionShouldCallDidNotifySubtreeInsertions == node.inserted Into(this))
843 postInsertionNotificationTargets.append(&node); 843 postInsertionNotificationTargets.append(&node);
844 for (ShadowRoot* shadowRoot = node.youngestShadowRoot(); shadowRoot; sha dowRoot = shadowRoot->olderShadowRoot()) 844 for (ShadowRoot* shadowRoot = node.youngestShadowRoot(); shadowRoot; sha dowRoot = shadowRoot->olderShadowRoot())
845 notifyNodeInsertedInternal(*shadowRoot, postInsertionNotificationTar gets); 845 notifyNodeInsertedInternal(*shadowRoot, postInsertionNotificationTar gets);
846 } 846 }
847 } 847 }
848 848
849 void ContainerNode::notifyNodeRemoved(Node& root) 849 void ContainerNode::notifyNodeRemoved(Node& root)
850 { 850 {
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
1524 return true; 1524 return true;
1525 1525
1526 if (node->isElementNode() && toElement(node)->shadow()) 1526 if (node->isElementNode() && toElement(node)->shadow())
1527 return true; 1527 return true;
1528 1528
1529 return false; 1529 return false;
1530 } 1530 }
1531 #endif 1531 #endif
1532 1532
1533 } // namespace blink 1533 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698