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

Side by Side Diff: Source/core/events/TreeScopeEventContext.cpp

Issue 794123004: Make TreeScopeEventContext have a RefPtr to TreeScope.rootNode to guard TreeScope. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Yet another miinimization Created 6 years 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
« no previous file with comments | « Source/core/events/TreeScopeEventContext.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All Rights Reserved. 2 * Copyright (C) 2014 Google Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 24 matching lines...) Expand all
35 namespace blink { 35 namespace blink {
36 36
37 PassRefPtrWillBeRawPtr<StaticNodeList> TreeScopeEventContext::ensureEventPath(Ev entPath& path) 37 PassRefPtrWillBeRawPtr<StaticNodeList> TreeScopeEventContext::ensureEventPath(Ev entPath& path)
38 { 38 {
39 if (m_eventPath) 39 if (m_eventPath)
40 return m_eventPath; 40 return m_eventPath;
41 41
42 WillBeHeapVector<RefPtrWillBeMember<Node>> nodes; 42 WillBeHeapVector<RefPtrWillBeMember<Node>> nodes;
43 nodes.reserveInitialCapacity(path.size()); 43 nodes.reserveInitialCapacity(path.size());
44 for (size_t i = 0; i < path.size(); ++i) { 44 for (size_t i = 0; i < path.size(); ++i) {
45 TreeScope& treeScope = path[i].treeScopeEventContext().treeScope(); 45 Node& rootNode = path[i].treeScopeEventContext().rootNode();
46 if (treeScope.rootNode().isShadowRoot() && toShadowRoot(treeScope).type( ) == ShadowRoot::AuthorShadowRoot) 46 if (rootNode.isShadowRoot() && toShadowRoot(rootNode).type() == ShadowRo ot::AuthorShadowRoot)
47 nodes.append(path[i].node()); 47 nodes.append(path[i].node());
48 else if (path[i].treeScopeEventContext().isInclusiveAncestorOf(*this)) 48 else if (path[i].treeScopeEventContext().isInclusiveAncestorOf(*this))
49 nodes.append(path[i].node()); 49 nodes.append(path[i].node());
50 } 50 }
51 m_eventPath = StaticNodeList::adopt(nodes); 51 m_eventPath = StaticNodeList::adopt(nodes);
52 return m_eventPath; 52 return m_eventPath;
53 } 53 }
54 54
55 TouchEventContext* TreeScopeEventContext::ensureTouchEventContext() 55 TouchEventContext* TreeScopeEventContext::ensureTouchEventContext()
56 { 56 {
57 if (!m_touchEventContext) 57 if (!m_touchEventContext)
58 m_touchEventContext = TouchEventContext::create(); 58 m_touchEventContext = TouchEventContext::create();
59 return m_touchEventContext.get(); 59 return m_touchEventContext.get();
60 } 60 }
61 61
62 PassRefPtrWillBeRawPtr<TreeScopeEventContext> TreeScopeEventContext::create(Tree Scope& treeScope) 62 PassRefPtrWillBeRawPtr<TreeScopeEventContext> TreeScopeEventContext::create(Tree Scope& treeScope)
63 { 63 {
64 return adoptRefWillBeNoop(new TreeScopeEventContext(treeScope)); 64 return adoptRefWillBeNoop(new TreeScopeEventContext(treeScope));
65 } 65 }
66 66
67 TreeScopeEventContext::TreeScopeEventContext(TreeScope& treeScope) 67 TreeScopeEventContext::TreeScopeEventContext(TreeScope& treeScope)
68 : m_treeScope(treeScope) 68 : m_treeScope(treeScope)
69 , m_rootNode(treeScope.rootNode())
69 , m_preOrder(-1) 70 , m_preOrder(-1)
70 , m_postOrder(-1) 71 , m_postOrder(-1)
71 { 72 {
72 } 73 }
73 74
74 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(TreeScopeEventContext) 75 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(TreeScopeEventContext)
75 76
76 void TreeScopeEventContext::trace(Visitor* visitor) 77 void TreeScopeEventContext::trace(Visitor* visitor)
77 { 78 {
78 visitor->trace(m_treeScope); 79 visitor->trace(m_treeScope);
80 visitor->trace(m_rootNode);
79 visitor->trace(m_target); 81 visitor->trace(m_target);
80 visitor->trace(m_relatedTarget); 82 visitor->trace(m_relatedTarget);
81 visitor->trace(m_eventPath); 83 visitor->trace(m_eventPath);
82 visitor->trace(m_touchEventContext); 84 visitor->trace(m_touchEventContext);
83 #if ENABLE(OILPAN) 85 #if ENABLE(OILPAN)
84 visitor->trace(m_children); 86 visitor->trace(m_children);
85 #endif 87 #endif
86 } 88 }
87 89
88 int TreeScopeEventContext::calculatePrePostOrderNumber(int orderNumber) 90 int TreeScopeEventContext::calculatePrePostOrderNumber(int orderNumber)
89 { 91 {
90 m_preOrder = orderNumber; 92 m_preOrder = orderNumber;
91 for (size_t i = 0; i < m_children.size(); ++i) 93 for (size_t i = 0; i < m_children.size(); ++i)
92 orderNumber = m_children[i]->calculatePrePostOrderNumber(orderNumber + 1 ); 94 orderNumber = m_children[i]->calculatePrePostOrderNumber(orderNumber + 1 );
93 m_postOrder = orderNumber + 1; 95 m_postOrder = orderNumber + 1;
94 return orderNumber + 1; 96 return orderNumber + 1;
95 } 97 }
96 98
97 } 99 }
OLDNEW
« no previous file with comments | « Source/core/events/TreeScopeEventContext.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698