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

Unified Diff: Source/devtools/front_end/sources/SourcesPanel.js

Issue 625843002: DevTools: Extract workspace mapping suggesting logic from sources panel. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 months 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: Source/devtools/front_end/sources/SourcesPanel.js
diff --git a/Source/devtools/front_end/sources/SourcesPanel.js b/Source/devtools/front_end/sources/SourcesPanel.js
index 57bbcac50c4cdc430e0d46d95c4fff214d4bffa9..b2782fb170e8fa36e14c1db9d6637a0500e232fb 100644
--- a/Source/devtools/front_end/sources/SourcesPanel.js
+++ b/Source/devtools/front_end/sources/SourcesPanel.js
@@ -111,12 +111,11 @@ WebInspector.SourcesPanel = function(workspaceForTest)
WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.ConsoleCommandEvaluatedInSelectedCallFrame, this._consoleCommandEvaluatedInSelectedCallFrame, this);
WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
WebInspector.targetManager.observeTargets(this);
+ new WebInspector.WorkspaceMappingSuggester(this, this._workspace);
}
WebInspector.SourcesPanel.minToolbarWidth = 215;
-WebInspector.SourcesPanel._infobarSymbol = Symbol("infobar");
-
WebInspector.SourcesPanel.prototype = {
/**
* @param {?WebInspector.Target} target
@@ -482,129 +481,6 @@ WebInspector.SourcesPanel.prototype = {
{
var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
this._editorChanged(uiSourceCode);
- if (Runtime.experiments.isEnabled("suggestUsingWorkspace")) {
- if (this._editorSelectedTimer)
- clearTimeout(this._editorSelectedTimer);
- this._editorSelectedTimer = setTimeout(this._updateSuggestedMappingInfobar.bind(this, uiSourceCode), 3000);
- }
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- */
- _updateSuggestedMappingInfobar: function(uiSourceCode)
- {
- if (!this.isShowing())
- return;
- if (uiSourceCode[WebInspector.SourcesPanel._infobarSymbol])
- return;
-
- // First try mapping filesystem -> network.
- var uiSourceCodeFrame = this._sourcesView.viewForFile(uiSourceCode);
- if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem) {
- var hasMappings = !!uiSourceCode.url;
- if (hasMappings)
- return;
-
- var targets = WebInspector.targetManager.targets();
- for (var i = 0; i < targets.length; ++i)
- targets[i].resourceTreeModel.forAllResources(matchResource.bind(this));
- }
-
- /**
- * @param {!WebInspector.Resource} resource
- * @return {boolean}
- * @this {WebInspector.SourcesPanel}
- */
- function matchResource(resource)
- {
- if (resource.contentURL().endsWith(uiSourceCode.name())) {
- createMappingInfobar.call(this, false);
- return true;
- }
- return false;
- }
-
- // Then map network -> filesystem.
- if (uiSourceCode.project().type() === WebInspector.projectTypes.Network || uiSourceCode.project().type() === WebInspector.projectTypes.ContentScripts) {
- if (this._workspace.uiSourceCodeForURL(uiSourceCode.url) !== uiSourceCode)
- return;
-
- var filesystemProjects = this._workspace.projectsForType(WebInspector.projectTypes.FileSystem);
- for (var i = 0; i < filesystemProjects.length; ++i) {
- var name = uiSourceCode.name();
- var fsUiSourceCodes = filesystemProjects[i].uiSourceCodes();
- for (var j = 0; j < fsUiSourceCodes.length; ++j) {
- if (fsUiSourceCodes[j].name() === name) {
- createMappingInfobar.call(this, true);
- return;
- }
- }
- }
-
- // There are no matching filesystems. Suggest adding a filesystem in case of localhost.
- var originURL = uiSourceCode.originURL().asParsedURL();
- if (originURL && originURL.host === "localhost")
- createWorkspaceInfobar();
- }
-
- /**
- * @param {boolean} isNetwork
- * @this {WebInspector.SourcesPanel}
- */
- function createMappingInfobar(isNetwork)
- {
- var title;
- if (isNetwork)
- title = WebInspector.UIString("Map network resource '%s' to workspace?", uiSourceCode.originURL());
- else
- title = WebInspector.UIString("Map workspace resource '%s' to network?", uiSourceCode.path());
-
- var infobar = new WebInspector.UISourceCodeFrame.Infobar(WebInspector.UISourceCodeFrame.Infobar.Level.Info, title);
- infobar.createDetailsRowMessage(WebInspector.UIString("You can map files in your workspace to the ones loaded over the network. As a result, changes made in DevTools will be persisted to disk."));
- infobar.createDetailsRowMessage(WebInspector.UIString("Use context menu to establish the mapping at any time."));
- var actionLink = infobar.createDetailsRowMessage("").createChild("a");
- actionLink.href = "";
- actionLink.onclick = establishTheMapping.bind(this);
- actionLink.textContent = WebInspector.UIString("Establish the mapping now...");
- appendInfobar(infobar);
- }
-
- /**
- * @param {?Event} event
- * @this {WebInspector.SourcesPanel}
- */
- function establishTheMapping(event)
- {
- event.consume(true);
- if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem)
- this._mapFileSystemToNetwork(uiSourceCode);
- else
- this._mapNetworkToFileSystem(uiSourceCode);
- }
-
- function createWorkspaceInfobar()
- {
- var infobar = new WebInspector.UISourceCodeFrame.Infobar(WebInspector.UISourceCodeFrame.Infobar.Level.Info, WebInspector.UIString("Serving from the file system? Add your files into the workspace."));
- infobar.createDetailsRowMessage(WebInspector.UIString("If you add files into your DevTools workspace, your changes will be persisted to disk."));
- infobar.createDetailsRowMessage(WebInspector.UIString("To add a folder into the workspace, drag and drop it into the Sources panel."));
- appendInfobar(infobar);
- }
-
- /**
- * @param {!WebInspector.UISourceCodeFrame.Infobar} infobar
- */
- function appendInfobar(infobar)
- {
- infobar.createDetailsRowMessage("").createChild("br");
- var rowElement = infobar.createDetailsRowMessage(WebInspector.UIString("For more information on workspaces, refer to the "));
- var a = rowElement.createChild("a");
- a.textContent = "workspaces documentation";
- a.href = "https://developer.chrome.com/devtools/docs/workspaces";
- rowElement.createTextChild(".");
- uiSourceCode[WebInspector.SourcesPanel._infobarSymbol] = infobar;
- uiSourceCodeFrame.attachInfobars([infobar]);
- }
},
/**
@@ -916,7 +792,7 @@ WebInspector.SourcesPanel.prototype = {
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
*/
- _mapFileSystemToNetwork: function(uiSourceCode)
+ mapFileSystemToNetwork: function(uiSourceCode)
{
WebInspector.SelectUISourceCodeForProjectTypesDialog.show(uiSourceCode.name(), [WebInspector.projectTypes.Network, WebInspector.projectTypes.ContentScripts], mapFileSystemToNetwork.bind(this), this.editorView.mainElement())
@@ -932,20 +808,9 @@ WebInspector.SourcesPanel.prototype = {
},
/**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- */
- _removeNetworkMapping: function(uiSourceCode)
- {
- if (confirm(WebInspector.UIString("Are you sure you want to remove network mapping?"))) {
- this._workspace.removeMapping(uiSourceCode);
- this._suggestReload();
- }
- },
-
- /**
* @param {!WebInspector.UISourceCode} networkUISourceCode
*/
- _mapNetworkToFileSystem: function(networkUISourceCode)
+ mapNetworkToFileSystem: function(networkUISourceCode)
{
WebInspector.SelectUISourceCodeForProjectTypesDialog.show(networkUISourceCode.name(), [WebInspector.projectTypes.FileSystem], mapNetworkToFileSystem.bind(this), this.editorView.mainElement())
@@ -961,6 +826,17 @@ WebInspector.SourcesPanel.prototype = {
},
/**
+ * @param {!WebInspector.UISourceCode} uiSourceCode
+ */
+ _removeNetworkMapping: function(uiSourceCode)
+ {
+ if (confirm(WebInspector.UIString("Are you sure you want to remove network mapping?"))) {
+ this._workspace.removeMapping(uiSourceCode);
+ this._suggestReload();
+ }
+ },
+
+ /**
* @param {!WebInspector.ContextMenu} contextMenu
* @param {!WebInspector.UISourceCode} uiSourceCode
*/
@@ -969,7 +845,7 @@ WebInspector.SourcesPanel.prototype = {
if (uiSourceCode.project().type() === WebInspector.projectTypes.FileSystem) {
var hasMappings = !!uiSourceCode.url;
if (!hasMappings)
- contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Map to network resource\u2026" : "Map to Network Resource\u2026"), this._mapFileSystemToNetwork.bind(this, uiSourceCode));
+ contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Map to network resource\u2026" : "Map to Network Resource\u2026"), this.mapFileSystemToNetwork.bind(this, uiSourceCode));
else
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove network mapping" : "Remove Network Mapping"), this._removeNetworkMapping.bind(this, uiSourceCode));
}
@@ -986,7 +862,7 @@ WebInspector.SourcesPanel.prototype = {
if (!this._workspace.projects().filter(filterProject).length)
return;
if (this._workspace.uiSourceCodeForURL(uiSourceCode.url) === uiSourceCode)
- contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Map to file system resource\u2026" : "Map to File System Resource\u2026"), this._mapNetworkToFileSystem.bind(this, uiSourceCode));
+ contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Map to file system resource\u2026" : "Map to File System Resource\u2026"), this.mapNetworkToFileSystem.bind(this, uiSourceCode));
}
},

Powered by Google App Engine
This is Rietveld 408576698