Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(644)

Unified Diff: third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js

Issue 1523193002: DevTools: merge UISourceCode's parentPath, name, originURL and uri. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
},
/**

Powered by Google App Engine
This is Rietveld 408576698