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