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(); |
}, |
/** |