Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js b/third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js |
| index 3655a9cea0236713f944dc39739bac1d20f50876..8cb0f2a28a2f318dda08e4e9a3c04aee85dcb50c 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js |
| @@ -43,7 +43,7 @@ WebInspector.NavigatorView = function() |
| /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.NavigatorUISourceCodeTreeNode>} */ |
| this._uiSourceCodeNodes = new Map(); |
| - /** @type {!Map.<!WebInspector.NavigatorTreeNode, !Map.<string, !WebInspector.NavigatorFolderTreeNode>>} */ |
| + /** @type {!Map.<string, !WebInspector.NavigatorFolderTreeNode>} */ |
| this._subfolderNodes = new Map(); |
| this._rootNode = new WebInspector.NavigatorRootTreeNode(this); |
| @@ -115,8 +115,8 @@ WebInspector.NavigatorView.prototype = { |
| if (!this.accept(uiSourceCode)) |
| return; |
| var isFromSourceMap = uiSourceCode.contentType().isFromSourceMap(); |
| - var projectNode = this._projectNode(uiSourceCode.project(), isFromSourceMap); |
| - var folderNode = this._folderNode(projectNode, uiSourceCode.parentPath(), isFromSourceMap); |
| + var path = WebInspector.ParsedURL.splitURLIntoPathComponents(uiSourceCode.path()); |
| + var folderNode = this._folderNode(uiSourceCode.project(), path.slice(0, -1), isFromSourceMap); |
| var uiSourceCodeNode = new WebInspector.NavigatorUISourceCodeTreeNode(this, uiSourceCode); |
| this._uiSourceCodeNodes.set(uiSourceCode, uiSourceCodeNode); |
| folderNode.appendChild(uiSourceCodeNode); |
| @@ -152,68 +152,41 @@ WebInspector.NavigatorView.prototype = { |
| }, |
| /** |
| - * @param {!WebInspector.Project} project |
| - * @param {boolean} isFromSourceMap |
| - * @return {!WebInspector.NavigatorTreeNode} |
| - */ |
| - _projectNode: function(project, isFromSourceMap) |
| - { |
| - if (!project.displayName()) |
| - return this._rootNode; |
| - |
| - var projectNode = this._rootNode.child(project.id()); |
| - if (!projectNode) { |
| - projectNode = this._createProjectNode(project, isFromSourceMap); |
| - this._rootNode.appendChild(projectNode); |
| - } |
| - return projectNode; |
| - }, |
| - |
| - /** |
| - * @param {!WebInspector.Project} project |
| - * @param {boolean} isFromSourceMap |
| - * @return {!WebInspector.NavigatorTreeNode} |
| - */ |
| - _createProjectNode: function(project, isFromSourceMap) |
| - { |
| - var type; |
| - if (isFromSourceMap) |
| - type = WebInspector.NavigatorView.Types.SourceMapFolder; |
| - else |
| - type = project.type() === WebInspector.projectTypes.FileSystem ? WebInspector.NavigatorView.Types.FileSystem : WebInspector.NavigatorView.Types.Domain; |
| - var projectNode = new WebInspector.NavigatorFolderTreeNode(this, project, project.id(), type, "", project.displayName()); |
| - return projectNode; |
| - }, |
| - |
| - /** |
| - * @param {!WebInspector.NavigatorTreeNode} projectNode |
| - * @param {string} folderPath |
| + * @param {!WebInspector.Project} project |
|
dgozman
2015/12/15 22:22:47
indentation off
pfeldman
2015/12/16 01:34:28
Done.
|
| + * @param {!Array<string>} path |
| * @param {boolean} fromSourceMap |
| * @return {!WebInspector.NavigatorTreeNode} |
| */ |
| - _folderNode: function(projectNode, folderPath, fromSourceMap) |
| + _folderNode: function(project, path, fromSourceMap) |
| { |
| - if (!folderPath) |
| - return projectNode; |
| + var folderPath = path.join("/"); |
| - var subfolderNodes = this._subfolderNodes.get(projectNode); |
| - if (!subfolderNodes) { |
| - subfolderNodes = /** @type {!Map.<string, !WebInspector.NavigatorFolderTreeNode>} */ (new Map()); |
| - this._subfolderNodes.set(projectNode, subfolderNodes); |
| - } |
| - |
| - var folderNode = subfolderNodes.get(folderPath); |
| + var folderNode = this._subfolderNodes.get(folderPath); |
| if (folderNode) |
| return folderNode; |
| - var parentNode = projectNode; |
| - var index = folderPath.lastIndexOf("/"); |
| - if (index !== -1) |
| - parentNode = this._folderNode(projectNode, folderPath.substring(0, index), fromSourceMap); |
| + if (path.length === 1 && path[0] === "file://") |
|
dgozman
2015/12/15 22:22:47
What is this for? Needs a comment.
pfeldman
2015/12/16 01:34:28
Done.
|
| + return this._rootNode; |
| + |
| + var parentNode = this._rootNode; |
| + if (path.length > 1) |
| + parentNode = this._folderNode(project, path.slice(0, -1), fromSourceMap); |
| + var type = fromSourceMap ? WebInspector.NavigatorView.Types.SourceMapFolder : WebInspector.NavigatorView.Types.Folder; |
| + |
| + var isFromNetwork = project.type() !== WebInspector.projectTypes.FileSystem; |
|
dgozman
2015/12/15 22:22:47
I'd rather call some NetworkProject method here.
pfeldman
2015/12/16 01:34:28
Done.
|
| + var name = path[path.length - 1]; |
| + if (parentNode === this._rootNode && isFromNetwork) { |
| + type = WebInspector.NavigatorView.Types.Domain; |
| + if (!name) |
| + name = WebInspector.UIString("(no domain)"); |
| + if (name.startsWith("http://")) |
| + name = name.substring(7); |
| + if (name.startsWith("https://")) |
| + name = name.substring(8); |
| + } |
| - var name = folderPath.substring(index + 1); |
| - folderNode = new WebInspector.NavigatorFolderTreeNode(this, null, name, fromSourceMap ? WebInspector.NavigatorView.Types.SourceMapFolder : WebInspector.NavigatorView.Types.Folder, folderPath, name); |
| - subfolderNodes.set(folderPath, folderNode); |
| + folderNode = new WebInspector.NavigatorFolderTreeNode(this, null, folderPath, type, folderPath, name); |
|
dgozman
2015/12/15 22:22:47
Why passing null as project?
dgozman
2015/12/15 22:22:47
3rd and 5th parameters are always equal. Remove on
pfeldman
2015/12/16 01:34:28
They are no longer equal.
pfeldman
2015/12/16 01:34:28
To preserve the behavior of context menu...
|
| + this._subfolderNodes.set(folderPath, folderNode); |
| parentNode.appendChild(folderNode); |
| return folderNode; |
| }, |
| @@ -260,8 +233,6 @@ WebInspector.NavigatorView.prototype = { |
| if (!node) |
| return; |
| - var projectNode = this._projectNode(uiSourceCode.project(), false); |
| - var subfolderNodes = this._subfolderNodes.get(projectNode); |
| var parentNode = node.parent; |
| this._uiSourceCodeNodes.remove(uiSourceCode); |
| parentNode.removeChild(node); |
| @@ -271,8 +242,7 @@ WebInspector.NavigatorView.prototype = { |
| parentNode = node.parent; |
| if (!parentNode || !node.isEmpty()) |
| break; |
| - if (subfolderNodes) |
| - subfolderNodes.remove(node._folderPath); |
| + this._subfolderNodes.remove(node._folderPath); |
| parentNode.removeChild(node); |
| node = parentNode; |
| } |
| @@ -381,15 +351,15 @@ WebInspector.NavigatorView.prototype = { |
| { |
| var contextMenu = new WebInspector.ContextMenu(event); |
| var path = "/"; |
| - var projectNode = node; |
| - while (projectNode.parent !== this._rootNode) { |
| - path = "/" + projectNode.id + path; |
| - projectNode = projectNode.parent; |
| + var folderNode = node; |
| + while (folderNode.parent !== this._rootNode) { |
| + path = "/" + folderNode.id + path; |
| + folderNode = folderNode.parent; |
| } |
| - var project = projectNode._project; |
| + var project = folderNode._project; |
| - if (project.type() === WebInspector.projectTypes.FileSystem) { |
| + if (project && project.type() === WebInspector.projectTypes.FileSystem) { |
| contextMenu.appendItem(WebInspector.UIString.capitalize("Refresh"), this._handleContextMenuRefresh.bind(this, project, path)); |
| contextMenu.appendItem(WebInspector.UIString.capitalize("New ^file"), this._handleContextMenuCreate.bind(this, project, path)); |
| contextMenu.appendItem(WebInspector.UIString.capitalize("Exclude ^folder"), this._handleContextMenuExclude.bind(this, project, path)); |
| @@ -404,7 +374,7 @@ WebInspector.NavigatorView.prototype = { |
| project.remove(); |
| } |
| - if (project.type() === WebInspector.projectTypes.FileSystem && node === projectNode) { |
| + if (project.type() === WebInspector.projectTypes.FileSystem && node === folderNode) { |
| var removeFolderLabel = WebInspector.UIString.capitalize("Remove ^folder from ^workspace"); |
| contextMenu.appendItem(removeFolderLabel, removeFolder); |
| } |
| @@ -1034,7 +1004,7 @@ WebInspector.NavigatorUISourceCodeTreeNode.prototype = { |
| if (this._uiSourceCode.contentType().isFromSourceMap()) |
| tooltip = WebInspector.UIString("%s (from source map)", this._uiSourceCode.displayName()); |
| this._treeElement.title = titleText; |
| - this._treeElement.tooltip = tooltip; |
| + this._treeElement.tooltip = this._uiSourceCode.originURL(); |
| }, |
| /** |