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

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

Issue 1296763003: Rename state -> nextState in DocumentLifecycle::canAdvanceTo and co. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « no previous file | 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 , m_detachCount(0) 66 , m_detachCount(0)
67 { 67 {
68 } 68 }
69 69
70 DocumentLifecycle::~DocumentLifecycle() 70 DocumentLifecycle::~DocumentLifecycle()
71 { 71 {
72 } 72 }
73 73
74 #if ENABLE(ASSERT) 74 #if ENABLE(ASSERT)
75 75
76 bool DocumentLifecycle::canAdvanceTo(State state) const 76 bool DocumentLifecycle::canAdvanceTo(State nextState) const
77 { 77 {
78 // We can stop from anywhere. 78 // We can stop from anywhere.
79 if (state == Stopping) 79 if (nextState == Stopping)
80 return true; 80 return true;
81 81
82 switch (m_state) { 82 switch (m_state) {
83 case Uninitialized: 83 case Uninitialized:
84 return state == Inactive; 84 return nextState == Inactive;
85 case Inactive: 85 case Inactive:
86 if (state == StyleClean) 86 if (nextState == StyleClean)
87 return true; 87 return true;
88 if (state == Disposed) 88 if (nextState == Disposed)
89 return true; 89 return true;
90 break; 90 break;
91 case VisualUpdatePending: 91 case VisualUpdatePending:
92 if (state == InPreLayout) 92 if (nextState == InPreLayout)
93 return true; 93 return true;
94 if (state == InStyleRecalc) 94 if (nextState == InStyleRecalc)
95 return true; 95 return true;
96 if (state == InPerformLayout) 96 if (nextState == InPerformLayout)
97 return true; 97 return true;
98 break; 98 break;
99 case InStyleRecalc: 99 case InStyleRecalc:
100 return state == StyleClean; 100 return nextState == StyleClean;
101 case StyleClean: 101 case StyleClean:
102 // We can synchronously recalc style. 102 // We can synchronously recalc style.
103 if (state == InStyleRecalc) 103 if (nextState == InStyleRecalc)
104 return true; 104 return true;
105 // We can notify layout objects that subtrees changed. 105 // We can notify layout objects that subtrees changed.
106 if (state == InLayoutSubtreeChange) 106 if (nextState == InLayoutSubtreeChange)
107 return true; 107 return true;
108 // We can synchronously perform layout. 108 // We can synchronously perform layout.
109 if (state == InPreLayout) 109 if (nextState == InPreLayout)
110 return true; 110 return true;
111 if (state == InPerformLayout) 111 if (nextState == InPerformLayout)
112 return true; 112 return true;
113 // We can redundant arrive in the style clean state. 113 // We can redundant arrive in the style clean state.
114 if (state == StyleClean) 114 if (nextState == StyleClean)
115 return true; 115 return true;
116 if (state == LayoutClean) 116 if (nextState == LayoutClean)
117 return true; 117 return true;
118 if (state == InCompositingUpdate) 118 if (nextState == InCompositingUpdate)
119 return true; 119 return true;
120 break; 120 break;
121 case InLayoutSubtreeChange: 121 case InLayoutSubtreeChange:
122 return state == LayoutSubtreeChangeClean; 122 return nextState == LayoutSubtreeChangeClean;
123 case LayoutSubtreeChangeClean: 123 case LayoutSubtreeChangeClean:
124 // We can synchronously recalc style. 124 // We can synchronously recalc style.
125 if (state == InStyleRecalc) 125 if (nextState == InStyleRecalc)
126 return true; 126 return true;
127 // We can synchronously perform layout. 127 // We can synchronously perform layout.
128 if (state == InPreLayout) 128 if (nextState == InPreLayout)
129 return true; 129 return true;
130 if (state == InPerformLayout) 130 if (nextState == InPerformLayout)
131 return true; 131 return true;
132 // Can move back to style clean. 132 // Can move back to style clean.
133 if (state == StyleClean) 133 if (nextState == StyleClean)
134 return true; 134 return true;
135 if (state == LayoutClean) 135 if (nextState == LayoutClean)
136 return true; 136 return true;
137 if (state == InCompositingUpdate) 137 if (nextState == InCompositingUpdate)
138 return true; 138 return true;
139 break; 139 break;
140 case InPreLayout: 140 case InPreLayout:
141 if (state == InStyleRecalc) 141 if (nextState == InStyleRecalc)
142 return true; 142 return true;
143 if (state == StyleClean) 143 if (nextState == StyleClean)
144 return true; 144 return true;
145 if (state == InPreLayout) 145 if (nextState == InPreLayout)
146 return true; 146 return true;
147 break; 147 break;
148 case InPerformLayout: 148 case InPerformLayout:
149 return state == AfterPerformLayout; 149 return nextState == AfterPerformLayout;
150 case AfterPerformLayout: 150 case AfterPerformLayout:
151 // We can synchronously recompute layout in AfterPerformLayout. 151 // We can synchronously recompute layout in AfterPerformLayout.
152 // FIXME: Ideally, we would unnest this recursion into a loop. 152 // FIXME: Ideally, we would unnest this recursion into a loop.
153 if (state == InPreLayout) 153 if (nextState == InPreLayout)
154 return true; 154 return true;
155 if (state == LayoutClean) 155 if (nextState == LayoutClean)
156 return true; 156 return true;
157 break; 157 break;
158 case LayoutClean: 158 case LayoutClean:
159 // We can synchronously recalc style. 159 // We can synchronously recalc style.
160 if (state == InStyleRecalc) 160 if (nextState == InStyleRecalc)
161 return true; 161 return true;
162 // We can synchronously perform layout. 162 // We can synchronously perform layout.
163 if (state == InPreLayout) 163 if (nextState == InPreLayout)
164 return true; 164 return true;
165 if (state == InPerformLayout) 165 if (nextState == InPerformLayout)
166 return true; 166 return true;
167 // We can redundant arrive in the layout clean state. This situation 167 // We can redundant arrive in the layout clean state. This situation
168 // can happen when we call layout recursively and we unwind the stack. 168 // can happen when we call layout recursively and we unwind the stack.
169 if (state == LayoutClean) 169 if (nextState == LayoutClean)
170 return true; 170 return true;
171 if (state == StyleClean) 171 if (nextState == StyleClean)
172 return true; 172 return true;
173 if (state == InCompositingUpdate) 173 if (nextState == InCompositingUpdate)
174 return true; 174 return true;
175 break; 175 break;
176 case InCompositingUpdate: 176 case InCompositingUpdate:
177 return state == CompositingClean; 177 return nextState == CompositingClean;
178 case CompositingClean: 178 case CompositingClean:
179 if (state == InStyleRecalc) 179 if (nextState == InStyleRecalc)
180 return true; 180 return true;
181 if (state == InPreLayout) 181 if (nextState == InPreLayout)
182 return true; 182 return true;
183 if (state == InCompositingUpdate) 183 if (nextState == InCompositingUpdate)
184 return true; 184 return true;
185 if (state == InPaintInvalidation) 185 if (nextState == InPaintInvalidation)
186 return true; 186 return true;
187 break; 187 break;
188 case InPaintInvalidation: 188 case InPaintInvalidation:
189 return state == PaintInvalidationClean; 189 return nextState == PaintInvalidationClean;
190 case PaintInvalidationClean: 190 case PaintInvalidationClean:
191 if (state == InStyleRecalc) 191 if (nextState == InStyleRecalc)
192 return true; 192 return true;
193 if (state == InPreLayout) 193 if (nextState == InPreLayout)
194 return true; 194 return true;
195 if (state == InCompositingUpdate) 195 if (nextState == InCompositingUpdate)
196 return true; 196 return true;
197 break; 197 break;
198 case Stopping: 198 case Stopping:
199 return state == Stopped; 199 return nextState == Stopped;
200 case Stopped: 200 case Stopped:
201 return state == Disposed; 201 return nextState == Disposed;
202 case Disposed: 202 case Disposed:
203 // FIXME: We can dispose a document multiple times. This seems wrong. 203 // FIXME: We can dispose a document multiple times. This seems wrong.
204 // See https://code.google.com/p/chromium/issues/detail?id=301668. 204 // See https://code.google.com/p/chromium/issues/detail?id=301668.
205 return state == Disposed; 205 return nextState == Disposed;
206 } 206 }
207 return false; 207 return false;
208 } 208 }
209 209
210 bool DocumentLifecycle::canRewindTo(State state) const 210 bool DocumentLifecycle::canRewindTo(State nextState) const
211 { 211 {
212 // This transition is bogus, but we've whitelisted it anyway. 212 // This transition is bogus, but we've whitelisted it anyway.
213 if (s_deprecatedTransitionStack && m_state == s_deprecatedTransitionStack->f rom() && state == s_deprecatedTransitionStack->to()) 213 if (s_deprecatedTransitionStack && m_state == s_deprecatedTransitionStack->f rom() && nextState == s_deprecatedTransitionStack->to())
214 return true; 214 return true;
215 return m_state == StyleClean || m_state == LayoutSubtreeChangeClean || m_sta te == AfterPerformLayout || m_state == LayoutClean || m_state == CompositingClea n || m_state == PaintInvalidationClean; 215 return m_state == StyleClean || m_state == LayoutSubtreeChangeClean || m_sta te == AfterPerformLayout || m_state == LayoutClean || m_state == CompositingClea n || m_state == PaintInvalidationClean;
216 } 216 }
217 217
218 #endif 218 #endif
219 219
220 void DocumentLifecycle::advanceTo(State state) 220 void DocumentLifecycle::advanceTo(State nextState)
221 { 221 {
222 ASSERT(canAdvanceTo(state)); 222 ASSERT(canAdvanceTo(nextState));
223 m_state = state; 223 m_state = nextState;
224 } 224 }
225 225
226 void DocumentLifecycle::ensureStateAtMost(State state) 226 void DocumentLifecycle::ensureStateAtMost(State state)
227 { 227 {
228 ASSERT(state == VisualUpdatePending || state == StyleClean || state == Layou tClean); 228 ASSERT(state == VisualUpdatePending || state == StyleClean || state == Layou tClean);
229 if (m_state <= state) 229 if (m_state <= state)
230 return; 230 return;
231 ASSERT(canRewindTo(state)); 231 ASSERT(canRewindTo(state));
232 m_state = state; 232 m_state = state;
233 } 233 }
234 234
235 } 235 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698