| Index: third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js b/third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js
|
| index b016d49103529b8d4afe3677afc641623bda8563..2229844043a037c2238ccf6864a77ac10a27a075 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/resources/ResourcesPanel.js
|
| @@ -88,7 +88,7 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
|
|
| cacheTreeElement.appendChild(this.applicationCacheListTreeElement);
|
|
|
| - this.resourcesListTreeElement = this._addSidebarSection(Common.UIString('Frames'));
|
| + this._resourcesSection = new Resources.ResourcesSection(this, this._addSidebarSection(Common.UIString('Frames')));
|
|
|
| var mainContainer = new UI.VBox();
|
| this.storageViews = mainContainer.element.createChild('div', 'vbox flex-auto');
|
| @@ -115,6 +115,8 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| this.panelSidebarElement().addEventListener('mouseleave', this._onmouseleave.bind(this), false);
|
|
|
| SDK.targetManager.observeTargets(this);
|
| + SDK.targetManager.addModelListener(
|
| + SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.FrameNavigated, this._frameNavigated, this);
|
| }
|
|
|
| /**
|
| @@ -191,6 +193,8 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| }
|
|
|
| _initialize() {
|
| + for (var frame of SDK.ResourceTreeModel.frames())
|
| + this._addCookieDocument(frame);
|
| this._databaseModel.enable();
|
|
|
| var indexedDBModel = Resources.IndexedDBModel.fromTarget(this._target);
|
| @@ -201,10 +205,8 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| if (cacheStorageModel)
|
| cacheStorageModel.enable();
|
| var resourceTreeModel = SDK.ResourceTreeModel.fromTarget(this._target);
|
| - if (resourceTreeModel) {
|
| - this._populateResourceTree(resourceTreeModel);
|
| + if (resourceTreeModel)
|
| this._populateApplicationCacheTree(resourceTreeModel);
|
| - }
|
| var domStorageModel = Resources.DOMStorageModel.fromTarget(this._target);
|
| if (domStorageModel)
|
| this._populateDOMStorageTree(domStorageModel);
|
| @@ -229,8 +231,7 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| }
|
|
|
| _resetWithFrames() {
|
| - this.resourcesListTreeElement.removeChildren();
|
| - this._treeElementForFrameId = {};
|
| + this._resourcesSection.reset();
|
| this._reset();
|
| }
|
|
|
| @@ -307,89 +308,16 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| this._sidebarTree.selectedTreeElement.deselect();
|
| }
|
|
|
| - /**
|
| - * @param {!SDK.ResourceTreeModel} resourceTreeModel
|
| - */
|
| - _populateResourceTree(resourceTreeModel) {
|
| - this._treeElementForFrameId = {};
|
| - resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.FrameAdded, this._frameAdded, this);
|
| - resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.FrameNavigated, this._frameNavigated, this);
|
| - resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.FrameDetached, this._frameDetached, this);
|
| - resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.ResourceAdded, this._resourceAdded, this);
|
| -
|
| - /**
|
| - * @param {!SDK.ResourceTreeFrame} frame
|
| - * @this {Resources.ResourcesPanel}
|
| - */
|
| - function populateFrame(frame) {
|
| - this._frameAdded({data: frame});
|
| - for (var i = 0; i < frame.childFrames.length; ++i)
|
| - populateFrame.call(this, frame.childFrames[i]);
|
| -
|
| - var resources = frame.resources();
|
| - for (var i = 0; i < resources.length; ++i)
|
| - this._resourceAdded({data: resources[i]});
|
| - }
|
| - populateFrame.call(this, resourceTreeModel.mainFrame);
|
| - }
|
| -
|
| - _frameAdded(event) {
|
| - var frame = event.data;
|
| - var parentFrame = frame.parentFrame;
|
| -
|
| - var parentTreeElement = parentFrame ? this._treeElementForFrameId[parentFrame.id] : this.resourcesListTreeElement;
|
| - if (!parentTreeElement) {
|
| - console.warn('No frame to route ' + frame.url + ' to.');
|
| - return;
|
| - }
|
| -
|
| - var frameTreeElement = new Resources.FrameTreeElement(this, frame);
|
| - this._treeElementForFrameId[frame.id] = frameTreeElement;
|
| - parentTreeElement.appendChild(frameTreeElement);
|
| - }
|
| -
|
| - _frameDetached(event) {
|
| - var frame = event.data;
|
| - var frameTreeElement = this._treeElementForFrameId[frame.id];
|
| - if (!frameTreeElement)
|
| - return;
|
| -
|
| - delete this._treeElementForFrameId[frame.id];
|
| - if (frameTreeElement.parent)
|
| - frameTreeElement.parent.removeChild(frameTreeElement);
|
| - }
|
| -
|
| - _resourceAdded(event) {
|
| - var resource = event.data;
|
| - var frameId = resource.frameId;
|
| -
|
| - if (resource.statusCode >= 301 && resource.statusCode <= 303)
|
| - return;
|
| -
|
| - var frameTreeElement = this._treeElementForFrameId[frameId];
|
| - if (!frameTreeElement) {
|
| - // This is a frame's main resource, it will be retained
|
| - // and re-added by the resource manager;
|
| - return;
|
| - }
|
| -
|
| - frameTreeElement.appendResource(resource);
|
| - }
|
| -
|
| _frameNavigated(event) {
|
| var frame = event.data;
|
|
|
| if (!frame.parentFrame)
|
| this._reset();
|
|
|
| - var frameId = frame.id;
|
| - var frameTreeElement = this._treeElementForFrameId[frameId];
|
| - if (frameTreeElement)
|
| - frameTreeElement.frameNavigated(frame);
|
| -
|
| - var applicationCacheFrameTreeElement = this._applicationCacheFrameElements[frameId];
|
| + var applicationCacheFrameTreeElement = this._applicationCacheFrameElements[frame.id];
|
| if (applicationCacheFrameTreeElement)
|
| applicationCacheFrameTreeElement.frameNavigated(frame);
|
| + this._addCookieDocument(frame);
|
| }
|
|
|
| /**
|
| @@ -404,7 +332,7 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| /**
|
| * @param {!SDK.ResourceTreeFrame} frame
|
| */
|
| - addCookieDocument(frame) {
|
| + _addCookieDocument(frame) {
|
| var parsedURL = frame.url.asParsedURL();
|
| if (!parsedURL || (parsedURL.scheme !== 'http' && parsedURL.scheme !== 'https' && parsedURL.scheme !== 'file'))
|
| return;
|
| @@ -489,7 +417,7 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| * @return {boolean}
|
| */
|
| showResource(resource, line, column) {
|
| - var resourceTreeElement = this._findTreeElementForResource(resource);
|
| + var resourceTreeElement = Resources.FrameResourceTreeElement.forResource(resource);
|
| if (resourceTreeElement)
|
| resourceTreeElement.revealAndSelect(true);
|
|
|
| @@ -501,43 +429,12 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| return true;
|
| }
|
|
|
| - _showResourceView(resource) {
|
| - var view = this._resourceViewForResource(resource);
|
| - if (!view) {
|
| - this.visibleView.detach();
|
| - return;
|
| - }
|
| - this._innerShowView(view);
|
| - }
|
| -
|
| - /**
|
| - * @param {!SDK.Resource} resource
|
| - * @return {?UI.Widget}
|
| - */
|
| - _resourceViewForResource(resource) {
|
| - if (resource.hasTextContent()) {
|
| - var treeElement = this._findTreeElementForResource(resource);
|
| - if (!treeElement)
|
| - return null;
|
| - return treeElement.sourceView();
|
| - }
|
| -
|
| - switch (resource.resourceType()) {
|
| - case Common.resourceTypes.Image:
|
| - return new SourceFrame.ImageView(resource.mimeType, resource);
|
| - case Common.resourceTypes.Font:
|
| - return new SourceFrame.FontView(resource.mimeType, resource);
|
| - default:
|
| - return new UI.EmptyWidget(resource.url);
|
| - }
|
| - }
|
| -
|
| /**
|
| * @param {!SDK.Resource} resource
|
| * @return {?SourceFrame.ResourceSourceFrame}
|
| */
|
| _resourceSourceFrameViewForResource(resource) {
|
| - var resourceView = this._resourceViewForResource(resource);
|
| + var resourceView = Resources.FrameResourceTreeElement.resourceViewForResource(resource);
|
| if (resourceView && resourceView instanceof SourceFrame.ResourceSourceFrame)
|
| return /** @type {!SourceFrame.ResourceSourceFrame} */ (resourceView);
|
| return null;
|
| @@ -780,10 +677,6 @@ Resources.ResourcesPanel = class extends UI.PanelWithSidebar {
|
| this._applicationCacheViews[manifestURL].updateNetworkState(isNowOnline);
|
| }
|
|
|
| - _findTreeElementForResource(resource) {
|
| - return resource[Resources.FrameResourceTreeElement._symbol];
|
| - }
|
| -
|
| showView(view) {
|
| if (view)
|
| this.showResource(view.resource);
|
| @@ -865,6 +758,18 @@ Resources.BaseStorageTreeElement = class extends UI.TreeElement {
|
| this._storagePanel._resourcesLastSelectedItemSetting.set(itemURL);
|
| return false;
|
| }
|
| +
|
| + /**
|
| + * @protected
|
| + * @param {?UI.Widget} view
|
| + */
|
| + showView(view) {
|
| + if (!view) {
|
| + this._storagePanel.visibleView.detach();
|
| + return;
|
| + }
|
| + this._storagePanel._innerShowView(view);
|
| + }
|
| };
|
|
|
| /**
|
| @@ -931,216 +836,6 @@ Resources.StorageCategoryTreeElement = class extends Resources.BaseStorageTreeEl
|
| /**
|
| * @unrestricted
|
| */
|
| -Resources.FrameTreeElement = class extends Resources.BaseStorageTreeElement {
|
| - /**
|
| - * @param {!Resources.ResourcesPanel} storagePanel
|
| - * @param {!SDK.ResourceTreeFrame} frame
|
| - */
|
| - constructor(storagePanel, frame) {
|
| - super(storagePanel, '', false);
|
| - this._frame = frame;
|
| - this.frameNavigated(frame);
|
| -
|
| - var icon = UI.Icon.create('largeicon-navigator-frame', 'navigator-tree-item');
|
| - icon.classList.add('navigator-frame-tree-item');
|
| - this.setLeadingIcons([icon]);
|
| - }
|
| -
|
| - frameNavigated(frame) {
|
| - this.removeChildren();
|
| - this._frameId = frame.id;
|
| - this.title = frame.displayName();
|
| - this._categoryElements = {};
|
| - this._treeElementForResource = {};
|
| -
|
| - this._storagePanel.addCookieDocument(frame);
|
| - }
|
| -
|
| - get itemURL() {
|
| - return 'frame://' + encodeURI(this.titleAsText());
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - * @return {boolean}
|
| - */
|
| - onselect(selectedByUser) {
|
| - super.onselect(selectedByUser);
|
| - this._storagePanel.showCategoryView(this.titleAsText());
|
| -
|
| - this.listItemElement.classList.remove('hovered');
|
| - SDK.DOMModel.hideDOMNodeHighlight();
|
| - return false;
|
| - }
|
| -
|
| - set hovered(hovered) {
|
| - if (hovered) {
|
| - this.listItemElement.classList.add('hovered');
|
| - var domModel = SDK.DOMModel.fromTarget(this._frame.target());
|
| - if (domModel)
|
| - domModel.highlightFrame(this._frameId);
|
| - } else {
|
| - this.listItemElement.classList.remove('hovered');
|
| - SDK.DOMModel.hideDOMNodeHighlight();
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * @param {!SDK.Resource} resource
|
| - */
|
| - appendResource(resource) {
|
| - var resourceType = resource.resourceType();
|
| - var categoryName = resourceType.name();
|
| - var categoryElement = resourceType === Common.resourceTypes.Document ? this : this._categoryElements[categoryName];
|
| - if (!categoryElement) {
|
| - categoryElement = new Resources.StorageCategoryTreeElement(
|
| - this._storagePanel, resource.resourceType().category().title, categoryName);
|
| - this._categoryElements[resourceType.name()] = categoryElement;
|
| - this._insertInPresentationOrder(this, categoryElement);
|
| - }
|
| - var resourceTreeElement = new Resources.FrameResourceTreeElement(this._storagePanel, resource);
|
| - this._insertInPresentationOrder(categoryElement, resourceTreeElement);
|
| - this._treeElementForResource[resource.url] = resourceTreeElement;
|
| - }
|
| -
|
| - /**
|
| - * @param {string} url
|
| - * @return {?SDK.Resource}
|
| - */
|
| - resourceByURL(url) {
|
| - var treeElement = this._treeElementForResource[url];
|
| - return treeElement ? treeElement._resource : null;
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - */
|
| - appendChild(treeElement) {
|
| - this._insertInPresentationOrder(this, treeElement);
|
| - }
|
| -
|
| - _insertInPresentationOrder(parentTreeElement, childTreeElement) {
|
| - // Insert in the alphabetical order, first frames, then resources. Document resource goes last.
|
| - function typeWeight(treeElement) {
|
| - if (treeElement instanceof Resources.StorageCategoryTreeElement)
|
| - return 2;
|
| - if (treeElement instanceof Resources.FrameTreeElement)
|
| - return 1;
|
| - return 3;
|
| - }
|
| -
|
| - function compare(treeElement1, treeElement2) {
|
| - var typeWeight1 = typeWeight(treeElement1);
|
| - var typeWeight2 = typeWeight(treeElement2);
|
| -
|
| - var result;
|
| - if (typeWeight1 > typeWeight2)
|
| - result = 1;
|
| - else if (typeWeight1 < typeWeight2)
|
| - result = -1;
|
| - else
|
| - result = treeElement1.titleAsText().localeCompare(treeElement2.titleAsText());
|
| - return result;
|
| - }
|
| -
|
| - var childCount = parentTreeElement.childCount();
|
| - var i;
|
| - for (i = 0; i < childCount; ++i) {
|
| - if (compare(childTreeElement, parentTreeElement.childAt(i)) < 0)
|
| - break;
|
| - }
|
| - parentTreeElement.insertChild(childTreeElement, i);
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * @unrestricted
|
| - */
|
| -Resources.FrameResourceTreeElement = class extends Resources.BaseStorageTreeElement {
|
| - /**
|
| - * @param {!Resources.ResourcesPanel} storagePanel
|
| - * @param {!SDK.Resource} resource
|
| - */
|
| - constructor(storagePanel, resource) {
|
| - super(storagePanel, resource.displayName, false);
|
| - /** @type {!SDK.Resource} */
|
| - this._resource = resource;
|
| - this.tooltip = resource.url;
|
| - this._resource[Resources.FrameResourceTreeElement._symbol] = this;
|
| -
|
| - var icon = UI.Icon.create('largeicon-navigator-file', 'navigator-tree-item');
|
| - icon.classList.add('navigator-file-tree-item');
|
| - icon.classList.add('navigator-' + resource.resourceType().name() + '-tree-item');
|
| - this.setLeadingIcons([icon]);
|
| - }
|
| -
|
| - get itemURL() {
|
| - return this._resource.url;
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - * @return {boolean}
|
| - */
|
| - onselect(selectedByUser) {
|
| - super.onselect(selectedByUser);
|
| - this._storagePanel._showResourceView(this._resource);
|
| - return false;
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - * @return {boolean}
|
| - */
|
| - ondblclick(event) {
|
| - InspectorFrontendHost.openInNewTab(this._resource.url);
|
| - return false;
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - */
|
| - onattach() {
|
| - super.onattach();
|
| - this.listItemElement.draggable = true;
|
| - this.listItemElement.addEventListener('dragstart', this._ondragstart.bind(this), false);
|
| - this.listItemElement.addEventListener('contextmenu', this._handleContextMenuEvent.bind(this), true);
|
| - }
|
| -
|
| - /**
|
| - * @param {!MouseEvent} event
|
| - * @return {boolean}
|
| - */
|
| - _ondragstart(event) {
|
| - event.dataTransfer.setData('text/plain', this._resource.content || '');
|
| - event.dataTransfer.effectAllowed = 'copy';
|
| - return true;
|
| - }
|
| -
|
| - _handleContextMenuEvent(event) {
|
| - var contextMenu = new UI.ContextMenu(event);
|
| - contextMenu.appendApplicableItems(this._resource);
|
| - contextMenu.show();
|
| - }
|
| -
|
| - /**
|
| - * @return {!SourceFrame.ResourceSourceFrame}
|
| - */
|
| - sourceView() {
|
| - if (!this._sourceView) {
|
| - var sourceFrame = new SourceFrame.ResourceSourceFrame(this._resource);
|
| - sourceFrame.setHighlighterType(this._resource.canonicalMimeType());
|
| - this._sourceView = sourceFrame;
|
| - }
|
| - return this._sourceView;
|
| - }
|
| -};
|
| -
|
| -Resources.FrameResourceTreeElement._symbol = Symbol('treeElement');
|
| -
|
| -/**
|
| - * @unrestricted
|
| - */
|
| Resources.DatabaseTreeElement = class extends Resources.BaseStorageTreeElement {
|
| /**
|
| * @param {!Resources.ResourcesPanel} storagePanel
|
| @@ -1382,7 +1077,7 @@ Resources.SWCacheTreeElement = class extends Resources.BaseStorageTreeElement {
|
| if (!this._view)
|
| this._view = new Resources.ServiceWorkerCacheView(this._model, this._cache);
|
|
|
| - this._storagePanel._innerShowView(this._view);
|
| + this.showView(this._view);
|
| return false;
|
| }
|
|
|
| @@ -1420,7 +1115,7 @@ Resources.ServiceWorkersTreeElement = class extends Resources.BaseStorageTreeEle
|
| super.onselect(selectedByUser);
|
| if (!this._view)
|
| this._view = new Resources.ServiceWorkersView();
|
| - this._storagePanel._innerShowView(this._view);
|
| + this.showView(this._view);
|
| return false;
|
| }
|
| };
|
| @@ -1453,7 +1148,7 @@ Resources.AppManifestTreeElement = class extends Resources.BaseStorageTreeElemen
|
| super.onselect(selectedByUser);
|
| if (!this._view)
|
| this._view = new Resources.AppManifestView();
|
| - this._storagePanel._innerShowView(this._view);
|
| + this.showView(this._view);
|
| return false;
|
| }
|
| };
|
| @@ -1486,7 +1181,7 @@ Resources.ClearStorageTreeElement = class extends Resources.BaseStorageTreeEleme
|
| super.onselect(selectedByUser);
|
| if (!this._view)
|
| this._view = new Resources.ClearStorageView(this._storagePanel);
|
| - this._storagePanel._innerShowView(this._view);
|
| + this.showView(this._view);
|
| return false;
|
| }
|
| };
|
| @@ -1694,7 +1389,7 @@ Resources.IDBDatabaseTreeElement = class extends Resources.BaseStorageTreeElemen
|
| if (!this._view)
|
| this._view = new Resources.IDBDatabaseView(this._model, this._database);
|
|
|
| - this._storagePanel._innerShowView(this._view);
|
| + this.showView(this._view);
|
| return false;
|
| }
|
|
|
| @@ -1817,7 +1512,7 @@ Resources.IDBObjectStoreTreeElement = class extends Resources.BaseStorageTreeEle
|
| if (!this._view)
|
| this._view = new Resources.IDBDataView(this._model, this._databaseId, this._objectStore, null);
|
|
|
| - this._storagePanel._innerShowView(this._view);
|
| + this.showView(this._view);
|
| return false;
|
| }
|
|
|
| @@ -1895,7 +1590,7 @@ Resources.IDBIndexTreeElement = class extends Resources.BaseStorageTreeElement {
|
| if (!this._view)
|
| this._view = new Resources.IDBDataView(this._model, this._databaseId, this._objectStore, this._index);
|
|
|
| - this._storagePanel._innerShowView(this._view);
|
| + this.showView(this._view);
|
| return false;
|
| }
|
|
|
|
|