Commit a0b55196 authored by Nathan Bruer's avatar Nathan Bruer Committed by Commit Bot

[Devtools] Root folders will always show in workspaces if of filesystem

If the filesystem is empty the root folder of a filesystem type project
will always exist in the filesystem navigator.

R=lushnikov,einbinder,pfeldman
BUG=760316,704053

Change-Id: I7364829b247b712bd4b8aa59b490cbdeb514cea2
Reviewed-on: https://chromium-review.googlesource.com/716872Reviewed-by: default avatarAndrey Lushnikov <lushnikov@chromium.org>
Commit-Queue: Blaise Bruer <allada@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509440}
parent 6588f9b2
......@@ -226,7 +226,11 @@ Sources.NavigatorView = class extends UI.VBox {
this._workspace = workspace;
this._workspace.addEventListener(Workspace.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this);
this._workspace.addEventListener(Workspace.Workspace.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this);
this._workspace.addEventListener(
Workspace.Workspace.Events.ProjectAdded,
event => this._projectAdded(/** @type {!Workspace.Project} */ (event.data)), this);
this._workspace.addEventListener(Workspace.Workspace.Events.ProjectRemoved, this._projectRemoved.bind(this), this);
this._workspace.projects().forEach(this._projectAdded.bind(this));
}
/**
......@@ -238,11 +242,11 @@ Sources.NavigatorView = class extends UI.VBox {
}
/**
* @param {!Workspace.UISourceCode} uiSourceCode
* @param {!Workspace.Project} project
* @return {boolean}
*/
accept(uiSourceCode) {
return !uiSourceCode.project().isServiceProject();
acceptProject(project) {
return !project.isServiceProject();
}
/**
......@@ -276,7 +280,7 @@ Sources.NavigatorView = class extends UI.VBox {
* @return {boolean}
*/
_acceptsUISourceCode(uiSourceCode) {
if (!this.accept(uiSourceCode))
if (!this.acceptProject(uiSourceCode.project()))
return false;
var binding = Persistence.persistence.binding(uiSourceCode);
......@@ -345,6 +349,17 @@ Sources.NavigatorView = class extends UI.VBox {
this._removeUISourceCode(uiSourceCode);
}
/**
* @param {!Workspace.Project} project
*/
_projectAdded(project) {
if (!this.acceptProject(project) || project.type() !== Workspace.projectTypes.FileSystem)
return;
var fileSystemNode = new Sources.NavigatorGroupTreeNode(
this, project, project.id(), Sources.NavigatorView.Types.FileSystem, project.displayName());
this._rootNode.appendChild(fileSystemNode);
}
/**
* @param {!Common.Event} event
*/
......@@ -354,6 +369,12 @@ Sources.NavigatorView = class extends UI.VBox {
var uiSourceCodes = project.uiSourceCodes();
for (var i = 0; i < uiSourceCodes.length; ++i)
this._removeUISourceCode(uiSourceCodes[i]);
if (project.type() !== Workspace.projectTypes.FileSystem)
return;
var fileSystemNode = this._rootNode.child(project.id());
if (!fileSystemNode)
return;
this._rootNode.removeChild(fileSystemNode);
}
/**
......@@ -397,13 +418,7 @@ Sources.NavigatorView = class extends UI.VBox {
if (!path.length) {
if (target)
return this._domainNode(uiSourceCode, project, target, frame, projectOrigin);
var fileSystemNode = this._rootNode.child(project.id());
if (!fileSystemNode) {
fileSystemNode = new Sources.NavigatorGroupTreeNode(
this, project, project.id(), Sources.NavigatorView.Types.FileSystem, project.displayName());
this._rootNode.appendChild(fileSystemNode);
}
return fileSystemNode;
return /** @type {!Sources.NavigatorTreeNode} */ (this._rootNode.child(project.id()));
}
var parentNode =
......@@ -586,6 +601,8 @@ Sources.NavigatorView = class extends UI.VBox {
parentNode = node.parent;
if (!parentNode || !node.isEmpty())
break;
if (parentNode === this._rootNode && project.type() === Workspace.projectTypes.FileSystem)
break;
if (!(node instanceof Sources.NavigatorGroupTreeNode || node instanceof Sources.NavigatorFolderTreeNode))
break;
if (node._type === Sources.NavigatorView.Types.Frame) {
......
......@@ -37,14 +37,14 @@ Sources.SourcesNavigatorView = class extends Sources.NavigatorView {
/**
* @override
* @param {!Workspace.UISourceCode} uiSourceCode
* @param {!Workspace.Project} project
* @return {boolean}
*/
accept(uiSourceCode) {
if (!super.accept(uiSourceCode))
acceptProject(project) {
if (!super.acceptProject(project))
return false;
return uiSourceCode.project().type() !== Workspace.projectTypes.ContentScripts &&
uiSourceCode.project().type() !== Workspace.projectTypes.Snippets;
return project.type() !== Workspace.projectTypes.ContentScripts &&
project.type() !== Workspace.projectTypes.Snippets;
}
/**
......@@ -58,7 +58,7 @@ Sources.SourcesNavigatorView = class extends Sources.NavigatorView {
if (!inspectedURL)
return;
for (var uiSourceCode of this.workspace().uiSourceCodes()) {
if (this.accept(uiSourceCode) && uiSourceCode.url() === inspectedURL)
if (this.acceptProject(uiSourceCode.project()) && uiSourceCode.url() === inspectedURL)
this.revealUISourceCode(uiSourceCode, true);
}
}
......@@ -98,11 +98,11 @@ Sources.NetworkNavigatorView = class extends Sources.NavigatorView {
/**
* @override
* @param {!Workspace.UISourceCode} uiSourceCode
* @param {!Workspace.Project} project
* @return {boolean}
*/
accept(uiSourceCode) {
return uiSourceCode.project().type() === Workspace.projectTypes.Network;
acceptProject(project) {
return project.type() === Workspace.projectTypes.Network;
}
/**
......@@ -116,7 +116,7 @@ Sources.NetworkNavigatorView = class extends Sources.NavigatorView {
if (!inspectedURL)
return;
for (var uiSourceCode of this.workspace().uiSourceCodes()) {
if (this.accept(uiSourceCode) && uiSourceCode.url() === inspectedURL)
if (this.acceptProject(uiSourceCode.project()) && uiSourceCode.url() === inspectedURL)
this.revealUISourceCode(uiSourceCode, true);
}
}
......@@ -152,11 +152,11 @@ Sources.FilesNavigatorView = class extends Sources.NavigatorView {
/**
* @override
* @param {!Workspace.UISourceCode} uiSourceCode
* @param {!Workspace.Project} project
* @return {boolean}
*/
accept(uiSourceCode) {
return uiSourceCode.project().type() === Workspace.projectTypes.FileSystem;
acceptProject(project) {
return project.type() === Workspace.projectTypes.FileSystem;
}
/**
......@@ -180,11 +180,11 @@ Sources.ContentScriptsNavigatorView = class extends Sources.NavigatorView {
/**
* @override
* @param {!Workspace.UISourceCode} uiSourceCode
* @param {!Workspace.Project} project
* @return {boolean}
*/
accept(uiSourceCode) {
return uiSourceCode.project().type() === Workspace.projectTypes.ContentScripts;
acceptProject(project) {
return project.type() === Workspace.projectTypes.ContentScripts;
}
};
......@@ -203,11 +203,11 @@ Sources.SnippetsNavigatorView = class extends Sources.NavigatorView {
/**
* @override
* @param {!Workspace.UISourceCode} uiSourceCode
* @param {!Workspace.Project} project
* @return {boolean}
*/
accept(uiSourceCode) {
return uiSourceCode.project().type() === Workspace.projectTypes.Snippets;
acceptProject(project) {
return project.type() === Workspace.projectTypes.Snippets;
}
/**
......
......@@ -390,7 +390,7 @@ Sources.SourcesPanel = class extends UI.Panel {
for (var i = 0; i < objects.length; ++i) {
var navigatorView = /** @type {!Sources.NavigatorView} */ (objects[i]);
var viewId = extensions[i].descriptor()['viewId'];
if (navigatorView.accept(uiSourceCode)) {
if (navigatorView.acceptProject(uiSourceCode.project())) {
navigatorView.revealUISourceCode(uiSourceCode, true);
if (skipReveal)
this._navigatorTabbedLocation.tabbedPane().selectTab(viewId);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment