diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js')
-rw-r--r-- | Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js | 813 |
1 files changed, 0 insertions, 813 deletions
diff --git a/Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js b/Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js deleted file mode 100644 index dac5a5c6d..000000000 --- a/Source/WebInspectorUI/UserInterface/ResourceSidebarPanel.js +++ /dev/null @@ -1,813 +0,0 @@ -/* - * Copyright (C) 2013 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -WebInspector.ResourceSidebarPanel = function() { - WebInspector.NavigationSidebarPanel.call(this, "resource", WebInspector.UIString("Resources"), "Images/NavigationItemStorage.svg", "1", true, false, true); - - var searchElement = document.createElement("div"); - searchElement.classList.add("search-bar"); - this.element.appendChild(searchElement); - - this._inputElement = document.createElement("input"); - this._inputElement.type = "search"; - this._inputElement.spellcheck = false; - this._inputElement.addEventListener("search", this._searchFieldChanged.bind(this)); - this._inputElement.addEventListener("input", this._searchFieldInput.bind(this)); - this._inputElement.setAttribute("results", 5); - this._inputElement.setAttribute("autosave", "inspector-search"); - this._inputElement.setAttribute("placeholder", WebInspector.UIString("Search Resource Content")); - searchElement.appendChild(this._inputElement); - - this.filterBar.placeholder = WebInspector.UIString("Filter Resource List"); - - this._waitingForInitialMainFrame = true; - this._lastSearchedPageSetting = new WebInspector.Setting("last-searched-page", null); - - this._searchQuerySetting = new WebInspector.Setting("search-sidebar-query", ""); - this._inputElement.value = this._searchQuerySetting.value; - - this._searchKeyboardShortcut = new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl | WebInspector.KeyboardShortcut.Modifier.Shift, "F", this._focusSearchField.bind(this)); - - this._localStorageRootTreeElement = null; - this._sessionStorageRootTreeElement = null; - - this._databaseRootTreeElement = null; - this._databaseHostTreeElementMap = {}; - - this._cookieStorageRootTreeElement = null; - - this._applicationCacheRootTreeElement = null; - this._applicationCacheURLTreeElementMap = {}; - - WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.CookieStorageObjectWasAdded, this._cookieStorageObjectWasAdded, this); - WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasAdded, this._domStorageObjectWasAdded, this); - WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasInspected, this._domStorageObjectWasInspected, this); - WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasAdded, this._databaseWasAdded, this); - WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasInspected, this._databaseWasInspected, this); - WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.Cleared, this._storageCleared, this); - - WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestAdded, this._frameManifestAdded, this); - WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestRemoved, this._frameManifestRemoved, this); - - WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange, this._mainFrameDidChange, this); - WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.FrameWasAdded, this._frameWasAdded, this); - - WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.DOMNodeWasInspected, this._domNodeWasInspected, this); - - WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, this._scriptWasAdded, this); - WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptsCleared, this._scriptsCleared, this); - - this._resourcesContentTreeOutline = this.contentTreeOutline; - this._searchContentTreeOutline = this.createContentTreeOutline(); - - this._resourcesContentTreeOutline.onselect = this._treeElementSelected.bind(this); - this._searchContentTreeOutline.onselect = this._treeElementSelected.bind(this); - - this._resourcesContentTreeOutline.includeSourceMapResourceChildren = true; - - if (WebInspector.debuggableType === WebInspector.DebuggableType.JavaScript) - this._resourcesContentTreeOutline.element.classList.add(WebInspector.NavigationSidebarPanel.HideDisclosureButtonsStyleClassName); -}; - -WebInspector.ResourceSidebarPanel.prototype = { - constructor: WebInspector.ResourceSidebarPanel, - - // Public - - get contentTreeOutlineToAutoPrune() - { - return this._searchContentTreeOutline; - }, - - showMainFrameDOMTree: function(nodeToSelect, preventFocusChange) - { - var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(WebInspector.frameResourceManager.mainFrame); - contentView.showDOMTree(nodeToSelect, preventFocusChange); - WebInspector.contentBrowser.showContentView(contentView); - }, - - showMainFrameSourceCode: function() - { - var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(WebInspector.frameResourceManager.mainFrame); - contentView.showSourceCode(); - WebInspector.contentBrowser.showContentView(contentView); - }, - - showContentFlowDOMTree: function(contentFlow, nodeToSelect, preventFocusChange) - { - var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(contentFlow); - if (nodeToSelect) - contentView.selectAndRevealDOMNode(nodeToSelect, preventFocusChange); - WebInspector.contentBrowser.showContentView(contentView); - }, - - showSourceCodeForFrame: function(frameIdentifier, revealAndSelectTreeElement) - { - delete this._frameIdentifierToShowSourceCodeWhenAvailable; - - // We can't show anything until we have the main frame in the sidebar. - // Otherwise the path components in the navigation bar would be missing. - var frame = WebInspector.frameResourceManager.frameForIdentifier(frameIdentifier); - if (!frame || !this._mainFrameTreeElement) { - this._frameIdentifierToShowSourceCodeWhenAvailable = frameIdentifier; - return; - } - - var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(frame); - console.assert(contentView); - if (!contentView) - return; - - contentView.showSourceCode(); - WebInspector.contentBrowser.showContentView(contentView); - - if (revealAndSelectTreeElement) - this.treeElementForRepresentedObject(frame).revealAndSelect(true, true, true, true); - }, - - showSourceCode: function(sourceCode, positionToReveal, textRangeToSelect, forceUnformatted) - { - console.assert(!positionToReveal || positionToReveal instanceof WebInspector.SourceCodePosition, positionToReveal); - var representedObject = sourceCode; - - if (representedObject instanceof WebInspector.Script) { - // A script represented by a resource should always show the resource. - representedObject = representedObject.resource || representedObject; - } - - // A main resource is always represented by its parent frame. - if (representedObject instanceof WebInspector.Resource && representedObject.isMainResource()) - representedObject = representedObject.parentFrame; - - var cookie = positionToReveal ? {lineNumber: positionToReveal.lineNumber, columnNumber: positionToReveal.columnNumber} : {}; - WebInspector.contentBrowser.showContentViewForRepresentedObject(representedObject, cookie); - }, - - showSourceCodeLocation: function(sourceCodeLocation) - { - this.showSourceCode(sourceCodeLocation.displaySourceCode, sourceCodeLocation.displayPosition()); - }, - - showOriginalUnformattedSourceCodeLocation: function(sourceCodeLocation) - { - this.showSourceCode(sourceCodeLocation.sourceCode, sourceCodeLocation.position(), undefined, true); - }, - - showOriginalOrFormattedSourceCodeLocation: function(sourceCodeLocation) - { - this.showSourceCode(sourceCodeLocation.sourceCode, sourceCodeLocation.formattedPosition()); - }, - - showSourceCodeTextRange: function(sourceCodeTextRange) - { - var textRangeToSelect = sourceCodeTextRange.displayTextRange; - this.showSourceCode(sourceCodeTextRange.displaySourceCode, textRangeToSelect.startPosition(), textRangeToSelect); - }, - - showOriginalOrFormattedSourceCodeTextRange: function(sourceCodeTextRange) - { - var textRangeToSelect = sourceCodeTextRange.formattedTextRange; - this.showSourceCode(sourceCodeTextRange.sourceCode, textRangeToSelect.startPosition(), textRangeToSelect); - }, - - showResource: function(resource) - { - WebInspector.contentBrowser.showContentViewForRepresentedObject(resource.isMainResource() ? resource.parentFrame : resource); - }, - - showResourceRequest: function(resource) - { - var contentView = WebInspector.contentBrowser.contentViewForRepresentedObject(resource.isMainResource() ? resource.parentFrame : resource); - - if (contentView instanceof WebInspector.FrameContentView) - var resourceContentView = contentView.showResource(); - else if (contentView instanceof WebInspector.ResourceClusterContentView) - var resourceContentView = contentView; - - console.assert(resourceContentView instanceof WebInspector.ResourceClusterContentView); - if (!(resourceContentView instanceof WebInspector.ResourceClusterContentView)) - return; - - resourceContentView.showRequest(); - - WebInspector.contentBrowser.showContentView(contentView); - }, - - treeElementForRepresentedObject: function(representedObject) - { - // A custom implementation is needed for this since the frames are populated lazily. - - // The Frame is used as the representedObject instead of the main resource in our tree. - if (representedObject instanceof WebInspector.Resource && representedObject.parentFrame && representedObject.parentFrame.mainResource === representedObject) - representedObject = representedObject.parentFrame; - - function isAncestor(ancestor, resourceOrFrame) - { - // SourceMapResources are descendants of another SourceCode object. - if (resourceOrFrame instanceof WebInspector.SourceMapResource) { - if (resourceOrFrame.sourceMap.originalSourceCode === ancestor) - return true; - - // Not a direct ancestor, so check the ancestors of the parent SourceCode object. - resourceOrFrame = resourceOrFrame.sourceMap.originalSourceCode; - } - - var currentFrame = resourceOrFrame.parentFrame; - while (currentFrame) { - if (currentFrame === ancestor) - return true; - currentFrame = currentFrame.parentFrame; - } - - return false; - } - - function getParent(resourceOrFrame) - { - // SourceMapResources are descendants of another SourceCode object. - if (resourceOrFrame instanceof WebInspector.SourceMapResource) - return resourceOrFrame.sourceMap.originalSourceCode; - return resourceOrFrame.parentFrame; - } - - var treeElement = this._resourcesContentTreeOutline.findTreeElement(representedObject, isAncestor, getParent); - if (treeElement) - return treeElement; - - // Only special case Script objects. - if (!(representedObject instanceof WebInspector.Script)) { - console.error("Didn't find a TreeElement for a representedObject associated with the ResourceSidebarPanel."); - return null; - } - - // If the Script has a URL we should have found it earlier. - if (representedObject.url) { - console.error("Didn't find a ScriptTreeElement for a Script with a URL."); - return null; - } - - // Since the Script does not have a URL we consider it an 'anonymous' script. These scripts happen from calls to - // window.eval() or browser features like Auto Fill and Reader. They are not normally added to the sidebar, but since - // we have a ScriptContentView asking for the tree element we will make a ScriptTreeElement on demand and add it. - - if (!this._anonymousScriptsFolderTreeElement) - this._anonymousScriptsFolderTreeElement = new WebInspector.FolderTreeElement(WebInspector.UIString("Anonymous Scripts")); - - if (!this._anonymousScriptsFolderTreeElement.parent) { - var index = insertionIndexForObjectInListSortedByFunction(this._anonymousScriptsFolderTreeElement, this._resourcesContentTreeOutline.children, this._compareTreeElements); - this._resourcesContentTreeOutline.insertChild(this._anonymousScriptsFolderTreeElement, index); - } - - var scriptTreeElement = new WebInspector.ScriptTreeElement(representedObject); - this._anonymousScriptsFolderTreeElement.appendChild(scriptTreeElement); - - return scriptTreeElement; - }, - - performSearch: function(searchTerm) - { - // Before performing a new search, clear the old search. - this._searchContentTreeOutline.removeChildren(); - - this._inputElement.value = searchTerm; - this._searchQuerySetting.value = searchTerm; - this._lastSearchedPageSetting.value = searchTerm && WebInspector.frameResourceManager.mainFrame ? WebInspector.frameResourceManager.mainFrame.url.hash : null; - - this.hideEmptyContentPlaceholder(); - - searchTerm = searchTerm.trim(); - if (!searchTerm.length) { - this.filterBar.placeholder = WebInspector.UIString("Filter Resource List"); - this.contentTreeOutline = this._resourcesContentTreeOutline; - return; - } - - this.filterBar.placeholder = WebInspector.UIString("Filter Search Results"); - this.contentTreeOutline = this._searchContentTreeOutline; - - var updateEmptyContentPlaceholderTimeout = null; - - function updateEmptyContentPlaceholderSoon() - { - if (updateEmptyContentPlaceholderTimeout) - return; - updateEmptyContentPlaceholderTimeout = setTimeout(updateEmptyContentPlaceholder.bind(this), 100); - } - - function updateEmptyContentPlaceholder() - { - if (updateEmptyContentPlaceholderTimeout) { - clearTimeout(updateEmptyContentPlaceholderTimeout); - updateEmptyContentPlaceholderTimeout = null; - } - - this.updateEmptyContentPlaceholder(WebInspector.UIString("No Search Results")); - } - - function resourcesCallback(error, result) - { - updateEmptyContentPlaceholderSoon.call(this); - - if (error) - return; - - for (var i = 0; i < result.length; ++i) { - var searchResult = result[i]; - if (!searchResult.url || !searchResult.frameId) - continue; - - function resourceCallback(url, error, resourceMatches) - { - updateEmptyContentPlaceholderSoon.call(this); - - if (error || !resourceMatches || !resourceMatches.length) - return; - - var frame = WebInspector.frameResourceManager.frameForIdentifier(searchResult.frameId); - if (!frame) - return; - - var resource = frame.url === url ? frame.mainResource : frame.resourceForURL(url); - if (!resource) - return; - - var resourceTreeElement = this._searchTreeElementForResource(resource); - - for (var i = 0; i < resourceMatches.length; ++i) { - var match = resourceMatches[i]; - - var lineMatch; - var searchRegex = new RegExp(searchTerm.escapeForRegExp(), "gi"); - while ((searchRegex.lastIndex < match.lineContent.length) && (lineMatch = searchRegex.exec(match.lineContent))) { - var matchObject = new WebInspector.ResourceSearchMatchObject(resource, match.lineContent, searchTerm, new WebInspector.TextRange(match.lineNumber, lineMatch.index, match.lineNumber, searchRegex.lastIndex)); - var matchTreeElement = new WebInspector.SearchResultTreeElement(matchObject); - resourceTreeElement.appendChild(matchTreeElement); - } - } - - updateEmptyContentPlaceholder.call(this); - } - - PageAgent.searchInResource(searchResult.frameId, searchResult.url, searchTerm, false, false, resourceCallback.bind(this, searchResult.url)); - } - } - - function domCallback(error, searchId, resultsCount) - { - updateEmptyContentPlaceholderSoon.call(this); - - if (error || !resultsCount) - return; - - this._domSearchIdentifier = searchId; - - function domSearchResults(error, nodeIds) - { - updateEmptyContentPlaceholderSoon.call(this); - - if (error) - return; - - for (var i = 0; i < nodeIds.length; ++i) { - // If someone started a new search, then return early and stop showing seach results from the old query. - if (this._domSearchIdentifier !== searchId) - return; - - var domNode = WebInspector.domTreeManager.nodeForId(nodeIds[i]); - if (!domNode || !domNode.ownerDocument) - continue; - - // We do not display the document node when the search query is "/". We don't have anything to display in the content view for it. - if (domNode.nodeType() === Node.DOCUMENT_NODE) - continue; - - // FIXME: Use this should use a frame to do resourceForURL, but DOMAgent does not provide a frameId. - var resource = WebInspector.frameResourceManager.resourceForURL(domNode.ownerDocument.documentURL); - if (!resource) - continue; - - var resourceTreeElement = this._searchTreeElementForResource(resource); - - var domNodeTitle = WebInspector.DOMSearchMatchObject.titleForDOMNode(domNode); - var searchRegex = new RegExp(searchTerm.escapeForRegExp(), "gi"); - - // Textual matches. - var lineMatch; - var didFindTextualMatch = false; - while ((searchRegex.lastIndex < domNodeTitle.length) && (lineMatch = searchRegex.exec(domNodeTitle))) { - var matchObject = new WebInspector.DOMSearchMatchObject(resource, domNode, domNodeTitle, searchTerm, new WebInspector.TextRange(0, lineMatch.index, 0, searchRegex.lastIndex)); - var matchTreeElement = new WebInspector.SearchResultTreeElement(matchObject); - resourceTreeElement.appendChild(matchTreeElement); - didFindTextualMatch = true; - } - - // Non-textual matches are CSS Selector or XPath matches. In such cases, display the node entirely highlighted. - if (!didFindTextualMatch) { - var matchObject = new WebInspector.DOMSearchMatchObject(resource, domNode, domNodeTitle, domNodeTitle, new WebInspector.TextRange(0, 0, 0, domNodeTitle.length)); - var matchTreeElement = new WebInspector.SearchResultTreeElement(matchObject); - resourceTreeElement.appendChild(matchTreeElement); - } - - updateEmptyContentPlaceholder.call(this); - } - } - - DOMAgent.getSearchResults(searchId, 0, resultsCount, domSearchResults.bind(this)); - } - - WebInspector.domTreeManager.requestDocument(); - - // FIXME: Should we be searching for regexes or just plain text? - PageAgent.searchInResources(searchTerm, false, false, resourcesCallback.bind(this)); - - if ("_domSearchIdentifier" in this) { - DOMAgent.discardSearchResults(this._domSearchIdentifier); - delete this._domSearchIdentifier; - } - - DOMAgent.performSearch(searchTerm, domCallback.bind(this)); - }, - - // Private - - _searchFieldChanged: function(event) - { - this.performSearch(event.target.value); - }, - - _searchFieldInput: function(event) - { - // If the search field is cleared, immediately clear the search results tree outline. - if (!event.target.value.length && this.contentTreeOutline === this._searchContentTreeOutline) - this.performSearch(""); - }, - - _searchTreeElementForResource: function(resource) - { - // FIXME: This should take a frame ID (if one is available) - so we can differentiate between multiple resources - // with the same URL. - - var resourceTreeElement = this._searchContentTreeOutline.getCachedTreeElement(resource); - if (!resourceTreeElement) { - resourceTreeElement = new WebInspector.ResourceTreeElement(resource); - resourceTreeElement.hasChildren = true; - resourceTreeElement.expand(); - - this._searchContentTreeOutline.appendChild(resourceTreeElement); - } - - return resourceTreeElement; - }, - - _focusSearchField: function(keyboardShortcut, event) - { - this.show(); - - this._inputElement.select(); - }, - - _mainFrameDidChange: function(event) - { - if (this._mainFrameTreeElement) { - this._mainFrameTreeElement.frame.removeEventListener(WebInspector.Frame.Event.MainResourceDidChange, this._mainFrameMainResourceDidChange, this); - this._resourcesContentTreeOutline.removeChild(this._mainFrameTreeElement); - this._mainFrameTreeElement = null; - } - - var newFrame = WebInspector.frameResourceManager.mainFrame; - if (newFrame) { - newFrame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange, this._mainFrameMainResourceDidChange, this); - this._mainFrameTreeElement = new WebInspector.FrameTreeElement(newFrame); - this._resourcesContentTreeOutline.insertChild(this._mainFrameTreeElement, 0); - - // Select by default. Allow onselect if we aren't showing a content view. - if (!this._resourcesContentTreeOutline.selectedTreeElement) - this._mainFrameTreeElement.revealAndSelect(true, false, !!WebInspector.contentBrowser.currentContentView); - - if (this._frameIdentifierToShowSourceCodeWhenAvailable) - this.showSourceCodeForFrame(this._frameIdentifierToShowSourceCodeWhenAvailable, true); - } - - // We only care about the first time the main frame changes. - if (!this._waitingForInitialMainFrame) - return; - - // Only if there is a main frame. - if (!newFrame) - return; - - delete this._waitingForInitialMainFrame; - - // Only if the last page searched is the same as the current page. - if (this._lastSearchedPageSetting.value !== newFrame.url.hash) - return; - - // Search for whatever is in the input field. This was populated with the last used search term. - this.performSearch(this._inputElement.value); - }, - - _mainFrameMainResourceDidChange: function(event) - { - var currentContentView = WebInspector.contentBrowser.currentContentView; - var wasShowingResourceContentView = currentContentView instanceof WebInspector.ResourceContentView - || currentContentView instanceof WebInspector.FrameContentView || currentContentView instanceof WebInspector.ScriptContentView; - - // Close all resource and frame content views since the main frame has navigated and all resources are cleared. - WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ResourceClusterContentView); - WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.FrameContentView); - WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ScriptContentView); - - function delayedWork() - { - // Show the main frame since there is no content view showing or we were showing a resource before. - // FIXME: We could try to select the same resource that was selected before in the case of a reload. - if (!WebInspector.contentBrowser.currentContentView || wasShowingResourceContentView) - this._mainFrameTreeElement.revealAndSelect(true, false); - } - - // Delay this work because other listeners of this event might not have fired yet. So selecting the main frame - // before those listeners do their work might cause the content of the old page to show instead of the new page. - setTimeout(delayedWork.bind(this), 0); - }, - - _frameWasAdded: function(event) - { - if (!this._frameIdentifierToShowSourceCodeWhenAvailable) - return; - - var frame = event.data.frame; - if (frame.id !== this._frameIdentifierToShowSourceCodeWhenAvailable) - return; - - this.showSourceCodeForFrame(frame.id, true); - }, - - _scriptWasAdded: function(event) - { - var script = event.data.script; - - // We don't add scripts without URLs here. Those scripts can quickly clutter the interface and - // are usually more transient. They will get added if/when they need to be shown in a content view. - if (!script.url) - return; - - // Exclude inspector scripts. - if (script.url.indexOf("__WebInspector") === 0) - return; - - // If the script URL matches a resource we can assume it is part of that resource and does not need added. - if (script.resource) - return; - - var insertIntoTopLevel = false; - - if (script.injected) { - if (!this._extensionScriptsFolderTreeElement) - this._extensionScriptsFolderTreeElement = new WebInspector.FolderTreeElement(WebInspector.UIString("Extension Scripts")); - var parentFolderTreeElement = this._extensionScriptsFolderTreeElement; - } else { - if (WebInspector.debuggableType === WebInspector.DebuggableType.JavaScript) - insertIntoTopLevel = true; - else { - if (!this._extraScriptsFolderTreeElement) - this._extraScriptsFolderTreeElement = new WebInspector.FolderTreeElement(WebInspector.UIString("Extra Scripts")); - var parentFolderTreeElement = this._extraScriptsFolderTreeElement; - } - } - - var scriptTreeElement = new WebInspector.ScriptTreeElement(script); - - if (insertIntoTopLevel) { - var index = insertionIndexForObjectInListSortedByFunction(scriptTreeElement, this._resourcesContentTreeOutline.children, this._compareTreeElements); - this._resourcesContentTreeOutline.insertChild(scriptTreeElement, index); - } else { - if (!parentFolderTreeElement.parent) { - var index = insertionIndexForObjectInListSortedByFunction(parentFolderTreeElement, this._resourcesContentTreeOutline.children, this._compareTreeElements); - this._resourcesContentTreeOutline.insertChild(parentFolderTreeElement, index); - } - - parentFolderTreeElement.appendChild(scriptTreeElement); - } - }, - - _scriptsCleared: function(event) - { - if (this._extensionScriptsFolderTreeElement) { - if (this._extensionScriptsFolderTreeElement.parent) - this._extensionScriptsFolderTreeElement.parent.removeChild(this._extensionScriptsFolderTreeElement); - this._extensionScriptsFolderTreeElement = null; - } - - if (this._extraScriptsFolderTreeElement) { - if (this._extraScriptsFolderTreeElement.parent) - this._extraScriptsFolderTreeElement.parent.removeChild(this._extraScriptsFolderTreeElement); - this._extraScriptsFolderTreeElement = null; - } - - if (this._anonymousScriptsFolderTreeElement) { - if (this._anonymousScriptsFolderTreeElement.parent) - this._anonymousScriptsFolderTreeElement.parent.removeChild(this._anonymousScriptsFolderTreeElement); - this._anonymousScriptsFolderTreeElement = null; - } - }, - - _treeElementSelected: function(treeElement, selectedByUser) - { - if (treeElement instanceof WebInspector.FolderTreeElement || treeElement instanceof WebInspector.DatabaseHostTreeElement) - return; - - if (treeElement instanceof WebInspector.ResourceTreeElement || treeElement instanceof WebInspector.ScriptTreeElement || - treeElement instanceof WebInspector.StorageTreeElement || treeElement instanceof WebInspector.DatabaseTableTreeElement || - treeElement instanceof WebInspector.DatabaseTreeElement || treeElement instanceof WebInspector.ApplicationCacheFrameTreeElement || - treeElement instanceof WebInspector.ContentFlowTreeElement) { - WebInspector.contentBrowser.showContentViewForRepresentedObject(treeElement.representedObject); - return; - } - - console.assert(treeElement instanceof WebInspector.SearchResultTreeElement); - if (!(treeElement instanceof WebInspector.SearchResultTreeElement)) - return; - - if (treeElement.representedObject instanceof WebInspector.DOMSearchMatchObject) - this.showMainFrameDOMTree(treeElement.representedObject.domNode, true); - else if (treeElement.representedObject instanceof WebInspector.ResourceSearchMatchObject) - this.showOriginalOrFormattedSourceCodeTextRange(treeElement.representedObject.sourceCodeTextRange); - }, - - _domNodeWasInspected: function(event) - { - this.showMainFrameDOMTree(event.data.node); - }, - - _domStorageObjectWasAdded: function(event) - { - var domStorage = event.data.domStorage; - var storageElement = new WebInspector.DOMStorageTreeElement(domStorage); - - if (domStorage.isLocalStorage()) - this._localStorageRootTreeElement = this._addStorageChild(storageElement, this._localStorageRootTreeElement, WebInspector.UIString("Local Storage")); - else - this._sessionStorageRootTreeElement = this._addStorageChild(storageElement, this._sessionStorageRootTreeElement, WebInspector.UIString("Session Storage")); - }, - - _domStorageObjectWasInspected: function(event) - { - var domStorage = event.data.domStorage; - var treeElement = this.treeElementForRepresentedObject(domStorage); - treeElement.revealAndSelect(true); - }, - - _databaseWasAdded: function(event) - { - var database = event.data.database; - - console.assert(database instanceof WebInspector.DatabaseObject); - - if (!this._databaseHostTreeElementMap[database.host]) { - this._databaseHostTreeElementMap[database.host] = new WebInspector.DatabaseHostTreeElement(database.host); - this._databaseRootTreeElement = this._addStorageChild(this._databaseHostTreeElementMap[database.host], this._databaseRootTreeElement, WebInspector.UIString("Databases")); - } - - var databaseElement = new WebInspector.DatabaseTreeElement(database); - this._databaseHostTreeElementMap[database.host].appendChild(databaseElement); - }, - - _databaseWasInspected: function(event) - { - var database = event.data.database; - var treeElement = this.treeElementForRepresentedObject(database); - treeElement.revealAndSelect(true); - }, - - _cookieStorageObjectWasAdded: function(event) - { - console.assert(event.data.cookieStorage instanceof WebInspector.CookieStorageObject); - - var cookieElement = new WebInspector.CookieStorageTreeElement(event.data.cookieStorage); - this._cookieStorageRootTreeElement = this._addStorageChild(cookieElement, this._cookieStorageRootTreeElement, WebInspector.UIString("Cookies")); - }, - - _frameManifestAdded: function(event) - { - var frameManifest = event.data.frameManifest; - console.assert(frameManifest instanceof WebInspector.ApplicationCacheFrame); - - var manifest = frameManifest.manifest; - var manifestURL = manifest.manifestURL; - if (!this._applicationCacheURLTreeElementMap[manifestURL]) { - this._applicationCacheURLTreeElementMap[manifestURL] = new WebInspector.ApplicationCacheManifestTreeElement(manifest); - this._applicationCacheRootTreeElement = this._addStorageChild(this._applicationCacheURLTreeElementMap[manifestURL], this._applicationCacheRootTreeElement, WebInspector.UIString("Application Cache")); - } - - var frameCacheElement = new WebInspector.ApplicationCacheFrameTreeElement(frameManifest); - this._applicationCacheURLTreeElementMap[manifestURL].appendChild(frameCacheElement); - }, - - _frameManifestRemoved: function(event) - { - // FIXME: Implement this. - }, - - _compareTreeElements: function(a, b) - { - // Always sort the main frame element first. - if (a instanceof WebInspector.FrameTreeElement) - return -1; - if (b instanceof WebInspector.FrameTreeElement) - return 1; - - console.assert(a.mainTitle); - console.assert(b.mainTitle); - - return (a.mainTitle || "").localeCompare(b.mainTitle || ""); - }, - - _addStorageChild: function(childElement, parentElement, folderName) - { - if (!parentElement) { - childElement.flattened = true; - - this._resourcesContentTreeOutline.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, this._resourcesContentTreeOutline.children, this._compareTreeElements)); - - return childElement; - } - - if (parentElement instanceof WebInspector.StorageTreeElement) { - console.assert(parentElement.flattened); - - var previousOnlyChild = parentElement; - previousOnlyChild.flattened = false; - this._resourcesContentTreeOutline.removeChild(previousOnlyChild); - - var folderElement = new WebInspector.FolderTreeElement(folderName, null, null); - this._resourcesContentTreeOutline.insertChild(folderElement, insertionIndexForObjectInListSortedByFunction(folderElement, this._resourcesContentTreeOutline.children, this._compareTreeElements)); - - folderElement.appendChild(previousOnlyChild); - folderElement.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, folderElement.children, this._compareTreeElements)); - - return folderElement; - } - - console.assert(parentElement instanceof WebInspector.FolderTreeElement); - parentElement.insertChild(childElement, insertionIndexForObjectInListSortedByFunction(childElement, parentElement.children, this._compareTreeElements)); - - return parentElement; - }, - - _storageCleared: function(event) - { - // Close all DOM and cookie storage content views since the main frame has navigated and all storages are cleared. - WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.CookieStorageContentView); - WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DOMStorageContentView); - WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseTableContentView); - WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.DatabaseContentView); - WebInspector.contentBrowser.contentViewContainer.closeAllContentViewsOfPrototype(WebInspector.ApplicationCacheFrameContentView); - - if (this._localStorageRootTreeElement && this._localStorageRootTreeElement.parent) - this._localStorageRootTreeElement.parent.removeChild(this._localStorageRootTreeElement); - - if (this._sessionStorageRootTreeElement && this._sessionStorageRootTreeElement.parent) - this._sessionStorageRootTreeElement.parent.removeChild(this._sessionStorageRootTreeElement); - - if (this._databaseRootTreeElement && this._databaseRootTreeElement.parent) - this._databaseRootTreeElement.parent.removeChild(this._databaseRootTreeElement); - - if (this._cookieStorageRootTreeElement && this._cookieStorageRootTreeElement.parent) - this._cookieStorageRootTreeElement.parent.removeChild(this._cookieStorageRootTreeElement); - - if (this._applicationCacheRootTreeElement && this._applicationCacheRootTreeElement.parent) - this._applicationCacheRootTreeElement.parent.removeChild(this._applicationCacheRootTreeElement); - - this._localStorageRootTreeElement = null; - this._sessionStorageRootTreeElement = null; - this._databaseRootTreeElement = null; - this._databaseHostTreeElementMap = {}; - this._cookieStorageRootTreeElement = null; - this._applicationCacheRootTreeElement = null; - this._applicationCacheURLTreeElementMap = {}; - } -}; - -WebInspector.ResourceSidebarPanel.prototype.__proto__ = WebInspector.NavigationSidebarPanel.prototype; |