| Index: third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js
|
| index 1666aee502f4572b43883777869beb07b5300ff9..ad320b41eb1dad3ede9e2ef9c3939df61c2054ad 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/sdk/ResourceTreeModel.js
|
| @@ -59,12 +59,71 @@ SDK.ResourceTreeModel = class extends SDK.SDKModel {
|
| }
|
|
|
| /**
|
| + * @param {!SDK.ResourceTreeFrame} frame
|
| + * @return {?SDK.ResourceTreeFrame}
|
| + */
|
| + static _parentFrameAcrossTargets(frame) {
|
| + var parentFrame = frame.parentFrame;
|
| + if (parentFrame)
|
| + return parentFrame;
|
| + var parentTarget = frame.resourceTreeModel().target().parentTarget();
|
| + var otherModel = parentTarget && parentTarget.model(SDK.ResourceTreeModel);
|
| + if (!otherModel)
|
| + return null;
|
| + return otherModel.mainFrame;
|
| + }
|
| +
|
| + /**
|
| + * @param {!SDK.ResourceTreeFrame} frame
|
| + * @return {!Array<!SDK.ResourceTreeFrame>}
|
| + */
|
| + static framePath(frame) {
|
| + var path = [];
|
| + var currentFrame = frame;
|
| + while (currentFrame) {
|
| + path.push(currentFrame);
|
| + currentFrame = SDK.ResourceTreeModel._parentFrameAcrossTargets(currentFrame);
|
| + }
|
| + return path.reverse();
|
| + }
|
| +
|
| + /**
|
| + * @param {?SDK.ResourceTreeFrame} a
|
| + * @param {?SDK.ResourceTreeFrame} b
|
| + * @return {number}
|
| + */
|
| + static _frameComparator(a, b) {
|
| + var framesA = a ? SDK.ResourceTreeModel.framePath(a) : [];
|
| + var framesB = b ? SDK.ResourceTreeModel.framePath(b) : [];
|
| + var frameA;
|
| + var frameB;
|
| + for (var i = 0;; i++) {
|
| + if (!framesA[i] || !framesB[i] || (framesA[i] !== framesB[i])) {
|
| + frameA = framesA[i];
|
| + frameB = framesB[i];
|
| + break;
|
| + }
|
| + }
|
| + if (!frameA && frameB)
|
| + return -1;
|
| +
|
| + if (!frameB && frameA)
|
| + return 1;
|
| +
|
| + if (frameA && frameB)
|
| + return frameA.id.localeCompare(frameB.id);
|
| +
|
| + return 0;
|
| + }
|
| +
|
| + /**
|
| * @return {!Array.<!SDK.ResourceTreeFrame>}
|
| */
|
| static frames() {
|
| var result = [];
|
| for (var resourceTreeModel of SDK.targetManager.models(SDK.ResourceTreeModel))
|
| result = result.concat(resourceTreeModel._frames.valuesArray());
|
| + result.sort(SDK.ResourceTreeModel._frameComparator);
|
| return result;
|
| }
|
|
|
| @@ -420,49 +479,23 @@ SDK.ResourceTreeModel = class extends SDK.SDKModel {
|
| callback(url, data || null, errors);
|
| }
|
| }
|
| +
|
| /**
|
| * @param {!SDK.ExecutionContext} a
|
| * @param {!SDK.ExecutionContext} b
|
| * @return {number}
|
| */
|
| _executionContextComparator(a, b) {
|
| - /**
|
| - * @param {!SDK.ResourceTreeFrame} frame
|
| - */
|
| - function framePath(frame) {
|
| - var currentFrame = frame;
|
| - var parents = [];
|
| - while (currentFrame) {
|
| - parents.push(currentFrame);
|
| - currentFrame = currentFrame.parentFrame;
|
| - }
|
| - return parents.reverse();
|
| - }
|
| -
|
| if (a.target() !== b.target())
|
| return SDK.ExecutionContext.comparator(a, b);
|
|
|
| - var framesA = a.frameId ? framePath(this.frameForId(a.frameId)) : [];
|
| - var framesB = b.frameId ? framePath(this.frameForId(b.frameId)) : [];
|
| - var frameA;
|
| - var frameB;
|
| - for (var i = 0;; i++) {
|
| - if (!framesA[i] || !framesB[i] || (framesA[i] !== framesB[i])) {
|
| - frameA = framesA[i];
|
| - frameB = framesB[i];
|
| - break;
|
| - }
|
| - }
|
| - if (!frameA && frameB)
|
| - return -1;
|
| -
|
| - if (!frameB && frameA)
|
| - return 1;
|
| + var frameA = a.frameId ? this.frameForId(a.frameId) : null;
|
| + var frameB = b.frameId ? this.frameForId(b.frameId) : null;
|
|
|
| - if (frameA && frameB)
|
| - return frameA.id.localeCompare(frameB.id);
|
| + if (!frameA && !frameB)
|
| + return SDK.ExecutionContext.comparator(a, b);
|
|
|
| - return SDK.ExecutionContext.comparator(a, b);
|
| + return SDK.ResourceTreeModel._frameComparator(frameA, frameB);
|
| }
|
|
|
| _updateSecurityOrigins() {
|
|
|