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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js

Issue 2610963005: [DevTools] Pass the frame payload (Closed)
Patch Set: [DevTools] Pass the frame payload Created 3 years, 11 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) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 isInterstitialShowing() { 122 isInterstitialShowing() {
123 return this._isInterstitialShowing; 123 return this._isInterstitialShowing;
124 } 124 }
125 125
126 /** 126 /**
127 * @param {!SDK.ResourceTreeFrame} frame 127 * @param {!SDK.ResourceTreeFrame} frame
128 * @param {boolean=} aboutToNavigate 128 * @param {boolean=} aboutToNavigate
129 */ 129 */
130 _addFrame(frame, aboutToNavigate) { 130 _addFrame(frame, aboutToNavigate) {
131 this._frames.set(frame.id, frame); 131 this._frames.set(frame.id, frame);
132 if (frame.isMainFrame()) { 132 if (frame.isMainFrame())
133 this.mainFrame = frame; 133 this.mainFrame = frame;
134 this._securityOriginManager.setMainSecurityOrigin(frame.url);
135 }
136 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameAdded, frame ); 134 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameAdded, frame );
137 if (!aboutToNavigate) 135 if (!aboutToNavigate)
138 this._securityOriginManager.addSecurityOrigin(frame.securityOrigin); 136 this._updateSecurityOrigins();
pfeldman 2017/01/09 20:06:13 You should unconditionally update origins.
eostroukhov 2017/01/09 20:32:01 Done.
139 } 137 }
140 138
141 /** 139 /**
142 * @param {!SDK.ResourceTreeFrame} mainFrame
143 */
144 _handleMainFrameDetached(mainFrame) {
145 /**
146 * @param {!SDK.ResourceTreeFrame} frame
147 * @this {SDK.ResourceTreeModel}
148 */
149 function removeOriginForFrame(frame) {
150 for (var i = 0; i < frame.childFrames.length; ++i)
151 removeOriginForFrame.call(this, frame.childFrames[i]);
152 if (!frame.isMainFrame())
153 this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin);
154 }
155 removeOriginForFrame.call(this, mainFrame);
156 }
157
158 /**
159 * @param {!Protocol.Page.FrameId} frameId 140 * @param {!Protocol.Page.FrameId} frameId
160 * @param {?Protocol.Page.FrameId} parentFrameId 141 * @param {?Protocol.Page.FrameId} parentFrameId
161 * @return {?SDK.ResourceTreeFrame} 142 * @return {?SDK.ResourceTreeFrame}
162 */ 143 */
163 _frameAttached(frameId, parentFrameId) { 144 _frameAttached(frameId, parentFrameId) {
164 // Do nothing unless cached resource tree is processed - it will overwrite e verything. 145 // Do nothing unless cached resource tree is processed - it will overwrite e verything.
165 if (!this._cachedResourcesProcessed && parentFrameId) 146 if (!this._cachedResourcesProcessed && parentFrameId)
166 return null; 147 return null;
167 if (this._frames.has(frameId)) 148 if (this._frames.has(frameId))
168 return null; 149 return null;
169 150
170 var parentFrame = parentFrameId ? (this._frames.get(parentFrameId) || null) : null; 151 var parentFrame = parentFrameId ? (this._frames.get(parentFrameId) || null) : null;
171 var frame = new SDK.ResourceTreeFrame(this, parentFrame, frameId); 152 var frame = new SDK.ResourceTreeFrame(this, parentFrame, frameId);
172 if (frame.isMainFrame() && this.mainFrame) { 153 if (frame.isMainFrame() && this.mainFrame) {
173 this._handleMainFrameDetached(this.mainFrame);
174 // Navigation to the new backend process. 154 // Navigation to the new backend process.
175 this._frameDetached(this.mainFrame.id); 155 this._frameDetached(this.mainFrame.id);
176 } 156 }
177 this._addFrame(frame, true); 157 this._addFrame(frame, true);
178 return frame; 158 return frame;
179 } 159 }
180 160
181 /** 161 /**
182 * @param {!Protocol.Page.Frame} framePayload 162 * @param {!Protocol.Page.Frame} framePayload
183 */ 163 */
184 _frameNavigated(framePayload) { 164 _frameNavigated(framePayload) {
185 // Do nothing unless cached resource tree is processed - it will overwrite e verything. 165 // Do nothing unless cached resource tree is processed - it will overwrite e verything.
186 if (!this._cachedResourcesProcessed && framePayload.parentId) 166 if (!this._cachedResourcesProcessed && framePayload.parentId)
187 return; 167 return;
188 var frame = this._frames.get(framePayload.id); 168 var frame = this._frames.get(framePayload.id);
189 if (!frame) { 169 if (!frame) {
190 // Simulate missed "frameAttached" for a main frame navigation to the new backend process. 170 // Simulate missed "frameAttached" for a main frame navigation to the new backend process.
191 console.assert(!framePayload.parentId, 'Main frame shouldn\'t have parent frame id.'); 171 console.assert(!framePayload.parentId, 'Main frame shouldn\'t have parent frame id.');
192 frame = this._frameAttached(framePayload.id, framePayload.parentId || ''); 172 frame = this._frameAttached(framePayload.id, framePayload.parentId || '');
193 console.assert(frame); 173 console.assert(frame);
194 } 174 }
195 175
196 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameWillNavigate , frame); 176 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameWillNavigate , frame);
177 frame._navigate(framePayload);
178 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameNavigated, f rame);
197 179
198 this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin);
199 frame._navigate(framePayload);
200 var addedOrigin = frame.securityOrigin;
201
202 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameNavigated, f rame);
203 if (frame.isMainFrame()) { 180 if (frame.isMainFrame()) {
204 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.MainFrameNaviga ted, frame); 181 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.MainFrameNaviga ted, frame);
205 if (Common.moduleSetting('preserveConsoleLog').get()) 182 if (Common.moduleSetting('preserveConsoleLog').get())
206 Common.console.log(Common.UIString('Navigated to %s', frame.url)); 183 Common.console.log(Common.UIString('Navigated to %s', frame.url));
207 } 184 }
208 if (addedOrigin)
209 this._securityOriginManager.addSecurityOrigin(addedOrigin);
210 185
211 // Fill frame with retained resources (the ones loaded using new loader). 186 // Fill frame with retained resources (the ones loaded using new loader).
212 var resources = frame.resources(); 187 var resources = frame.resources();
213 for (var i = 0; i < resources.length; ++i) 188 for (var i = 0; i < resources.length; ++i)
214 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.ResourceAdded, resources[i]); 189 this.dispatchEventToListeners(SDK.ResourceTreeModel.Events.ResourceAdded, resources[i]);
215 190
216 if (frame.isMainFrame()) 191 if (frame.isMainFrame())
217 this.target().setInspectedURL(frame.url); 192 this.target().setInspectedURL(frame.url);
193 this._updateSecurityOrigins();
218 } 194 }
219 195
220 /** 196 /**
221 * @param {!Protocol.Page.FrameId} frameId 197 * @param {!Protocol.Page.FrameId} frameId
222 */ 198 */
223 _frameDetached(frameId) { 199 _frameDetached(frameId) {
224 // Do nothing unless cached resource tree is processed - it will overwrite e verything. 200 // Do nothing unless cached resource tree is processed - it will overwrite e verything.
225 if (!this._cachedResourcesProcessed) 201 if (!this._cachedResourcesProcessed)
226 return; 202 return;
227 203
228 var frame = this._frames.get(frameId); 204 var frame = this._frames.get(frameId);
229 if (!frame) 205 if (!frame)
230 return; 206 return;
231 207
232 this._securityOriginManager.removeSecurityOrigin(frame.securityOrigin);
233 if (frame.parentFrame) 208 if (frame.parentFrame)
234 frame.parentFrame._removeChildFrame(frame); 209 frame.parentFrame._removeChildFrame(frame);
235 else 210 else
236 frame._remove(); 211 frame._remove();
pfeldman 2017/01/09 20:06:13 You should update origins here as well.
237 } 212 }
238 213
239 /** 214 /**
240 * @param {!Protocol.Page.FrameId} frameId 215 * @param {!Protocol.Page.FrameId} frameId
241 */ 216 */
242 _frameStartedLoading(frameId) { 217 _frameStartedLoading(frameId) {
243 // Do nothing unless cached resource tree is processed - it will overwrite e verything. 218 // Do nothing unless cached resource tree is processed - it will overwrite e verything.
244 if (!this._cachedResourcesProcessed) 219 if (!this._cachedResourcesProcessed)
245 return; 220 return;
246 221
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 return -1; 419 return -1;
445 420
446 if (!frameB && frameA) 421 if (!frameB && frameA)
447 return 1; 422 return 1;
448 423
449 if (frameA && frameB) 424 if (frameA && frameB)
450 return frameA.id.localeCompare(frameB.id); 425 return frameA.id.localeCompare(frameB.id);
451 426
452 return SDK.ExecutionContext.comparator(a, b); 427 return SDK.ExecutionContext.comparator(a, b);
453 } 428 }
429
430 _updateSecurityOrigins() {
431 var securityOrigins = [];
pfeldman 2017/01/09 20:06:13 You should use Set here, otherwise you report same
eostroukhov 2017/01/09 20:32:01 Done.
432 var mainSecurityOrigin = null;
433 for (var frame of this._frames.values()) {
434 var origin = frame.securityOrigin;
435 if (!origin)
436 continue;
437 securityOrigins.push(origin);
438 if (frame.isMainFrame())
439 mainSecurityOrigin = origin;
440 }
441 this._securityOriginManager.updateSecurityOrigins(securityOrigins);
442 this._securityOriginManager.setMainSecurityOrigin(mainSecurityOrigin || '');
443 }
454 }; 444 };
455 445
456 /** @enum {symbol} */ 446 /** @enum {symbol} */
457 SDK.ResourceTreeModel.Events = { 447 SDK.ResourceTreeModel.Events = {
458 FrameAdded: Symbol('FrameAdded'), 448 FrameAdded: Symbol('FrameAdded'),
459 FrameNavigated: Symbol('FrameNavigated'), 449 FrameNavigated: Symbol('FrameNavigated'),
460 FrameDetached: Symbol('FrameDetached'), 450 FrameDetached: Symbol('FrameDetached'),
461 FrameResized: Symbol('FrameResized'), 451 FrameResized: Symbol('FrameResized'),
462 FrameWillNavigate: Symbol('FrameWillNavigate'), 452 FrameWillNavigate: Symbol('FrameWillNavigate'),
463 MainFrameNavigated: Symbol('MainFrameNavigated'), 453 MainFrameNavigated: Symbol('MainFrameNavigated'),
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 _removeChildFrames() { 641 _removeChildFrames() {
652 var frames = this._childFrames; 642 var frames = this._childFrames;
653 this._childFrames = []; 643 this._childFrames = [];
654 for (var i = 0; i < frames.length; ++i) 644 for (var i = 0; i < frames.length; ++i)
655 frames[i]._remove(); 645 frames[i]._remove();
656 } 646 }
657 647
658 _remove() { 648 _remove() {
659 this._removeChildFrames(); 649 this._removeChildFrames();
660 this._model._frames.delete(this.id); 650 this._model._frames.delete(this.id);
651 this._model._updateSecurityOrigins();
pfeldman 2017/01/09 20:06:13 You are calling this in a loop, I'd rather interce
eostroukhov 2017/01/09 20:32:01 Done.
661 this._model.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameDetac hed, this); 652 this._model.dispatchEventToListeners(SDK.ResourceTreeModel.Events.FrameDetac hed, this);
662 } 653 }
663 654
664 /** 655 /**
665 * @param {!SDK.Resource} resource 656 * @param {!SDK.Resource} resource
666 */ 657 */
667 addResource(resource) { 658 addResource(resource) {
668 if (this._resourcesMap[resource.url] === resource) { 659 if (this._resourcesMap[resource.url] === resource) {
669 // Already in the tree, we just got an extra update. 660 // Already in the tree, we just got an extra update.
670 return; 661 return;
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
893 this._resourceTreeModel.dispatchEventToListeners(SDK.ResourceTreeModel.Event s.InterstitialHidden); 884 this._resourceTreeModel.dispatchEventToListeners(SDK.ResourceTreeModel.Event s.InterstitialHidden);
894 } 885 }
895 886
896 /** 887 /**
897 * @override 888 * @override
898 */ 889 */
899 navigationRequested() { 890 navigationRequested() {
900 // Frontend is not interested in when navigations are requested. 891 // Frontend is not interested in when navigations are requested.
901 } 892 }
902 }; 893 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698