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

Side by Side Diff: Source/core/dom/Node.cpp

Issue 24430002: Rename attach and detach to createRenderTree/destroyRenderTree (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
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, 2010, 2011 Apple Inc. All r ights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 setFlag(NotifyRendererWithIdenticalStyles); 738 setFlag(NotifyRendererWithIdenticalStyles);
739 739
740 StyleChangeType existingChangeType = styleChangeType(); 740 StyleChangeType existingChangeType = styleChangeType();
741 if (changeType > existingChangeType) 741 if (changeType > existingChangeType)
742 setStyleChange(changeType); 742 setStyleChange(changeType);
743 743
744 if (existingChangeType == NoStyleChange) 744 if (existingChangeType == NoStyleChange)
745 markAncestorsWithChildNeedsStyleRecalc(); 745 markAncestorsWithChildNeedsStyleRecalc();
746 } 746 }
747 747
748 void Node::lazyAttach() 748 void Node::scheduleRenderTreeCreation()
749 { 749 {
750 markAncestorsWithChildNeedsStyleRecalc(); 750 markAncestorsWithChildNeedsStyleRecalc();
751 for (Node* node = this; node; node = NodeTraversal::next(node, this)) { 751 for (Node* node = this; node; node = NodeTraversal::next(node, this)) {
752 node->setAttached(); 752 node->setAttached();
753 node->setStyleChange(LazyAttachStyleChange); 753 node->setStyleChange(DeferredRenderTreeCreationStyleChange);
754 if (node->isContainerNode()) 754 if (node->isContainerNode())
755 node->setChildNeedsStyleRecalc(); 755 node->setChildNeedsStyleRecalc();
756 for (ShadowRoot* root = node->youngestShadowRoot(); root; root = root->o lderShadowRoot()) 756 for (ShadowRoot* root = node->youngestShadowRoot(); root; root = root->o lderShadowRoot())
757 root->lazyAttach(); 757 root->scheduleRenderTreeCreation();
758 } 758 }
759 } 759 }
760 760
761 Node* Node::focusDelegate() 761 Node* Node::focusDelegate()
762 { 762 {
763 return this; 763 return this;
764 } 764 }
765 765
766 bool Node::shouldHaveFocusAppearance() const 766 bool Node::shouldHaveFocusAppearance() const
767 { 767 {
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 if (node == this) 936 if (node == this)
937 return true; 937 return true;
938 if (node->isDocumentFragment() && toDocumentFragment(node)->isTemplateCo ntent()) 938 if (node->isDocumentFragment() && toDocumentFragment(node)->isTemplateCo ntent())
939 node = static_cast<const TemplateContentDocumentFragment*>(node)->ho st(); 939 node = static_cast<const TemplateContentDocumentFragment*>(node)->ho st();
940 else 940 else
941 node = node->parentOrShadowHostNode(); 941 node = node->parentOrShadowHostNode();
942 } 942 }
943 return false; 943 return false;
944 } 944 }
945 945
946 inline void Node::detachNode(Node* root, const AttachContext& context) 946 inline void Node::destroyRenderTreeForNode(Node* root, const AttachContext& cont ext)
947 { 947 {
948 Node* node = root; 948 Node* node = root;
949 while (node) { 949 while (node) {
950 if (node->styleChangeType() == LazyAttachStyleChange) { 950 if (node->styleChangeType() == DeferredRenderTreeCreationStyleChange) {
951 // FIXME: This is needed because Node::lazyAttach marks nodes as bei ng attached even 951 // FIXME: This is needed because Node::scheduleRenderTreeCreation ma rks nodes as being attached even
952 // though they've never been through attach(). This allows us to avo id doing all the 952 // though they've never been through attach(). This allows us to avo id doing all the
953 // virtual calls to detach() and other associated work. 953 // virtual calls to detach() and other associated work.
954 node->clearAttached(); 954 node->clearAttached();
955 node->clearChildNeedsStyleRecalc(); 955 node->clearChildNeedsStyleRecalc();
956 956
957 for (ShadowRoot* shadowRoot = node->youngestShadowRoot(); shadowRoot ; shadowRoot = shadowRoot->olderShadowRoot()) 957 for (ShadowRoot* shadowRoot = node->youngestShadowRoot(); shadowRoot ; shadowRoot = shadowRoot->olderShadowRoot())
958 detachNode(shadowRoot, context); 958 destroyRenderTreeForNode(shadowRoot, context);
959 959
960 node = NodeTraversal::next(node, root); 960 node = NodeTraversal::next(node, root);
961 continue; 961 continue;
962 } 962 }
963 // Handle normal reattaches from style recalc (ex. display type changes) 963 // Handle normal reattaches from style recalc (ex. display type changes)
964 if (node->attached()) 964 if (node->attached())
965 node->detach(context); 965 node->destroyRenderTree(context);
966 node = NodeTraversal::nextSkippingChildren(node, root); 966 node = NodeTraversal::nextSkippingChildren(node, root);
967 } 967 }
968 } 968 }
969 969
970 void Node::reattach(const AttachContext& context) 970 void Node::recreateRenderTree(const AttachContext& context)
971 { 971 {
972 AttachContext reattachContext(context); 972 AttachContext reattachContext(context);
973 reattachContext.performingReattach = true; 973 reattachContext.reconstructingRenderTree = true;
974 974
975 detachNode(this, reattachContext); 975 destroyRenderTreeForNode(this, reattachContext);
976 attach(reattachContext); 976 createRenderTree(reattachContext);
977 } 977 }
978 978
979 void Node::attach(const AttachContext&) 979 void Node::createRenderTree(const AttachContext&)
980 { 980 {
981 ASSERT(document().inStyleRecalc() || isDocumentNode()); 981 ASSERT(document().inStyleRecalc() || isDocumentNode());
982 ASSERT(!attached()); 982 ASSERT(!attached());
983 ASSERT(!renderer() || (renderer()->style() && (renderer()->parent() || rende rer()->isRenderView()))); 983 ASSERT(!renderer() || (renderer()->style() && (renderer()->parent() || rende rer()->isRenderView())));
984 984
985 setAttached(); 985 setAttached();
986 clearNeedsStyleRecalc(); 986 clearNeedsStyleRecalc();
987 987
988 if (Document* doc = documentInternal()) { 988 if (Document* doc = documentInternal()) {
989 if (AXObjectCache* cache = doc->axObjectCache()) 989 if (AXObjectCache* cache = doc->axObjectCache())
990 cache->updateCacheAfterNodeIsAttached(this); 990 cache->updateCacheAfterNodeIsAttached(this);
991 } 991 }
992 } 992 }
993 993
994 #ifndef NDEBUG 994 #ifndef NDEBUG
995 static Node* detachingNode; 995 static Node* detachingNode;
996 996
997 bool Node::inDetach() const 997 bool Node::inDetach() const
998 { 998 {
999 return detachingNode == this; 999 return detachingNode == this;
1000 } 1000 }
1001 #endif 1001 #endif
1002 1002
1003 void Node::detach(const AttachContext& context) 1003 void Node::destroyRenderTree(const AttachContext& context)
1004 { 1004 {
1005 #ifndef NDEBUG 1005 #ifndef NDEBUG
1006 ASSERT(!detachingNode); 1006 ASSERT(!detachingNode);
1007 detachingNode = this; 1007 detachingNode = this;
1008 #endif 1008 #endif
1009 1009
1010 if (renderer()) 1010 if (renderer())
1011 renderer()->destroyAndCleanupAnonymousWrappers(); 1011 renderer()->destroyAndCleanupAnonymousWrappers();
1012 setRenderer(0); 1012 setRenderer(0);
1013 1013
1014 // Do not remove the element's hovered and active status 1014 // Do not remove the element's hovered and active status
1015 // if performing a reattach. 1015 // if performing a reattach.
1016 if (!context.performingReattach) { 1016 if (!context.reconstructingRenderTree) {
1017 Document& doc = document(); 1017 Document& doc = document();
1018 if (isUserActionElement()) { 1018 if (isUserActionElement()) {
1019 if (hovered()) 1019 if (hovered())
1020 doc.hoveredNodeDetached(this); 1020 doc.hoveredNodeDetached(this);
1021 if (inActiveChain()) 1021 if (inActiveChain())
1022 doc.activeChainNodeDetached(this); 1022 doc.activeChainNodeDetached(this);
1023 doc.userActionElements().didDetach(this); 1023 doc.userActionElements().didDetach(this);
1024 } 1024 }
1025 } 1025 }
1026 1026
(...skipping 1628 matching lines...) Expand 10 before | Expand all | Expand 10 after
2655 node->showTreeForThis(); 2655 node->showTreeForThis();
2656 } 2656 }
2657 2657
2658 void showNodePath(const WebCore::Node* node) 2658 void showNodePath(const WebCore::Node* node)
2659 { 2659 {
2660 if (node) 2660 if (node)
2661 node->showNodePathForThis(); 2661 node->showNodePathForThis();
2662 } 2662 }
2663 2663
2664 #endif 2664 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698