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

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: all tests pass 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..cedcc633a0c5b4d868b74acf0a859c6e1b62072a 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,12 @@ 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;
+ if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem)
+ path = WebInspector.FileSystemWorkspaceBinding.relativePath(uiSourceCode).slice(0, -1);
+ else
+ path = WebInspector.ParsedURL.splitURLIntoPathComponents(uiSourceCode.path()).slice(1, -1);
+ var folderNode = this._folderNode(uiSourceCode.project(), uiSourceCode.host(), path, isFromSourceMap);
var uiSourceCodeNode = new WebInspector.NavigatorUISourceCodeTreeNode(this, uiSourceCode);
this._uiSourceCodeNodes.set(uiSourceCode, uiSourceCodeNode);
folderNode.appendChild(uiSourceCodeNode);
@@ -153,69 +157,61 @@ WebInspector.NavigatorView.prototype = {
/**
* @param {!WebInspector.Project} project
- * @param {boolean} isFromSourceMap
+ * @param {string} projectHost
+ * @param {!Array<string>} path
+ * @param {boolean} fromSourceMap
* @return {!WebInspector.NavigatorTreeNode}
*/
- _projectNode: function(project, isFromSourceMap)
+ _folderNode: function(project, projectHost, path, fromSourceMap)
{
- if (!project.displayName())
+ if (project.type() === WebInspector.projectTypes.Snippets)
return this._rootNode;
- var projectNode = this._rootNode.child(project.id());
- if (!projectNode) {
- projectNode = this._createProjectNode(project, isFromSourceMap);
- this._rootNode.appendChild(projectNode);
+ var folderPath = path.join("/");
+ var folderId = project.id() + ":" + projectHost + ":" + folderPath;
+ var folderNode = this._subfolderNodes.get(folderId);
+ if (folderNode)
+ return folderNode;
+
+ var parentNode = path.length ? this._folderNode(project, projectHost, path.slice(0, -1), fromSourceMap) : this._rootNode;
+
+ var type = fromSourceMap ? WebInspector.NavigatorView.Types.SourceMapFolder : WebInspector.NavigatorView.Types.Folder;
+ var name = path[path.length - 1];
dgozman 2015/12/16 07:58:30 peekLast
pfeldman 2015/12/16 18:02:18 Acknowledged.
+ if (parentNode === this._rootNode) {
+ var target = WebInspector.NetworkProject.targetForProject(project);
+ if (target) {
+ name = this._computeProjectDisplayName(target, projectHost);
+ if (!fromSourceMap)
+ type = WebInspector.NavigatorView.Types.Domain;
+ } else {
+ name = project.displayName();
+ }
}
- 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;
+ folderNode = new WebInspector.NavigatorFolderTreeNode(this, project, folderId, type, folderPath, name);
+ this._subfolderNodes.set(folderId, folderNode);
+ parentNode.appendChild(folderNode);
+ return folderNode;
},
/**
- * @param {!WebInspector.NavigatorTreeNode} projectNode
- * @param {string} folderPath
- * @param {boolean} fromSourceMap
- * @return {!WebInspector.NavigatorTreeNode}
+ * @param {!WebInspector.Target} target
+ * @param {string} projectHost
+ * @return {string}
*/
- _folderNode: function(projectNode, folderPath, fromSourceMap)
+ _computeProjectDisplayName: function(target, projectHost)
{
- if (!folderPath)
- return projectNode;
-
- var subfolderNodes = this._subfolderNodes.get(projectNode);
- if (!subfolderNodes) {
- subfolderNodes = /** @type {!Map.<string, !WebInspector.NavigatorFolderTreeNode>} */ (new Map());
- this._subfolderNodes.set(projectNode, subfolderNodes);
+ for (var context of target.runtimeModel.executionContexts()) {
+ if (context.name && context.origin && projectHost.startsWith(context.origin))
+ return context.name;
}
- var folderNode = 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);
-
- 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);
- parentNode.appendChild(folderNode);
- return folderNode;
+ var targetSuffix = target.isPage() ? "" : " \u2014 " + target.name();
+ if (!projectHost)
+ return WebInspector.UIString("(no domain)") + targetSuffix;
+ var parsedURL = new WebInspector.ParsedURL(projectHost);
+ var prettyURL = parsedURL.isValid ? parsedURL.host + (parsedURL.port ? (":" + parsedURL.port) : "") : "";
+ return (prettyURL || projectHost) + targetSuffix;
},
/**
@@ -260,8 +256,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 +265,7 @@ WebInspector.NavigatorView.prototype = {
parentNode = node.parent;
if (!parentNode || !node.isEmpty())
break;
- if (subfolderNodes)
- subfolderNodes.remove(node._folderPath);
+ this._subfolderNodes.remove(uiSourceCode.project().id() + ":" + uiSourceCode.host() + ":" + node._folderPath);
parentNode.removeChild(node);
node = parentNode;
}
@@ -336,7 +329,7 @@ WebInspector.NavigatorView.prototype = {
var shouldExclude = window.confirm(WebInspector.UIString("Are you sure you want to exclude this folder?"));
if (shouldExclude) {
WebInspector.startBatchUpdate();
- project.excludeFolder(path);
+ project.excludeFolder("file:///" + path + "/");
dgozman 2015/12/16 07:58:30 This looks bad. Can we just pass |path| and left F
pfeldman 2015/12/16 18:02:18 There are no "path"s in the Workspace / UISourceCo
WebInspector.endBatchUpdate();
}
},
@@ -379,17 +372,12 @@ WebInspector.NavigatorView.prototype = {
*/
handleFolderContextMenu: function(event, node)
{
- var contextMenu = new WebInspector.ContextMenu(event);
- var path = "/";
- var projectNode = node;
- while (projectNode.parent !== this._rootNode) {
- path = "/" + projectNode.id + path;
- projectNode = projectNode.parent;
- }
+ var path = node._folderPath;
+ var project = node._project;
- var project = projectNode._project;
+ var contextMenu = new WebInspector.ContextMenu(event);
- 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 +392,7 @@ WebInspector.NavigatorView.prototype = {
project.remove();
}
- if (project.type() === WebInspector.projectTypes.FileSystem && node === projectNode) {
+ if (project.type() === WebInspector.projectTypes.FileSystem) {
var removeFolderLabel = WebInspector.UIString.capitalize("Remove ^folder from ^workspace");
contextMenu.appendItem(removeFolderLabel, removeFolder);
}
@@ -901,15 +889,6 @@ WebInspector.NavigatorTreeNode.prototype = {
},
/**
- * @param {string} id
- * @return {?WebInspector.NavigatorTreeNode}
- */
- child: function(id)
- {
- return this._children.get(id) || null;
- },
-
- /**
* @return {!Array.<!WebInspector.NavigatorTreeNode>}
*/
children: function()
@@ -985,7 +964,7 @@ WebInspector.NavigatorRootTreeNode.prototype = {
*/
WebInspector.NavigatorUISourceCodeTreeNode = function(navigatorView, uiSourceCode)
{
- WebInspector.NavigatorTreeNode.call(this, uiSourceCode.name());
+ WebInspector.NavigatorTreeNode.call(this, uiSourceCode.project().id() + ":" + uiSourceCode.path());
this._navigatorView = navigatorView;
this._uiSourceCode = uiSourceCode;
this._treeElement = null;
@@ -1034,7 +1013,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();
dgozman 2015/12/16 07:58:30 (from source map) is now gone. Restore?
pfeldman 2015/12/16 18:02:18 Okay
},
/**

Powered by Google App Engine
This is Rietveld 408576698