| OLD | NEW |
| 1 | 1 |
| 2 // Copyright 2014 The Chromium Authors. All rights reserved. | 2 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
| 4 // found in the LICENSE file. | 4 // found in the LICENSE file. |
| 5 | 5 |
| 6 /** | 6 /** |
| 7 * @constructor | 7 * @constructor |
| 8 * @param {!WebInspector.SourcesPanel} sourcesPanel | 8 * @param {!WebInspector.SourcesPanel} sourcesPanel |
| 9 * @param {!WebInspector.Workspace} workspace | 9 * @param {!WebInspector.Workspace} workspace |
| 10 */ | 10 */ |
| 11 WebInspector.WorkspaceMappingTip = function(sourcesPanel, workspace) | 11 WebInspector.WorkspaceMappingTip = function(sourcesPanel, workspace) |
| 12 { | 12 { |
| 13 this._sourcesPanel = sourcesPanel; | 13 this._sourcesPanel = sourcesPanel; |
| 14 this._workspace = workspace; | 14 this._workspace = workspace; |
| 15 | 15 |
| 16 this._sourcesView = this._sourcesPanel.sourcesView(); | 16 this._sourcesView = this._sourcesPanel.sourcesView(); |
| 17 this._workspaceInfobarDisabledSetting = WebInspector.settings.createSetting(
"workspaceInfobarDisabled", false); | 17 this._workspaceInfobarDisabledSetting = WebInspector.settings.createSetting(
"workspaceInfobarDisabled", false); |
| 18 this._workspaceMappingInfobarDisabledSetting = WebInspector.settings.createS
etting("workspaceMappingInfobarDisabled", false); | 18 this._workspaceMappingInfobarDisabledSetting = WebInspector.settings.createS
etting("workspaceMappingInfobarDisabled", false); |
| 19 | 19 |
| 20 if (this._workspaceInfobarDisabledSetting.get() && this._workspaceMappingInf
obarDisabledSetting.get()) | 20 if (this._workspaceInfobarDisabledSetting.get() && this._workspaceMappingInf
obarDisabledSetting.get()) |
| 21 return; | 21 return; |
| 22 this._sourcesView.addEventListener(WebInspector.SourcesView.Events.EditorSel
ected, this._editorSelected.bind(this)); | 22 this._sourcesView.addEventListener(WebInspector.SourcesView.Events.EditorSel
ected, this._editorSelected.bind(this)); |
| 23 WebInspector.persistence.addEventListener(WebInspector.Persistence.Events.Bi
ndingCreated, this._bindingCreated, this); |
| 23 } | 24 } |
| 24 | 25 |
| 25 WebInspector.WorkspaceMappingTip._infobarSymbol = Symbol("infobar"); | 26 WebInspector.WorkspaceMappingTip._infobarSymbol = Symbol("infobar"); |
| 26 | 27 |
| 27 WebInspector.WorkspaceMappingTip.prototype = { | 28 WebInspector.WorkspaceMappingTip.prototype = { |
| 28 /** | 29 /** |
| 29 * @param {!WebInspector.Event} event | 30 * @param {!WebInspector.Event} event |
| 30 */ | 31 */ |
| 32 _bindingCreated: function(event) |
| 33 { |
| 34 var binding = /** @type {!WebInspector.PersistenceBinding} */(event.data
); |
| 35 if (binding.network[WebInspector.WorkspaceMappingTip._infobarSymbol]) |
| 36 binding.network[WebInspector.WorkspaceMappingTip._infobarSymbol].dis
pose(); |
| 37 if (binding.persistent[WebInspector.WorkspaceMappingTip._infobarSymbol]) |
| 38 binding.persistent[WebInspector.WorkspaceMappingTip._infobarSymbol].
dispose(); |
| 39 }, |
| 40 |
| 41 /** |
| 42 * @param {!WebInspector.Event} event |
| 43 */ |
| 31 _editorSelected: function(event) | 44 _editorSelected: function(event) |
| 32 { | 45 { |
| 33 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data
); | 46 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data
); |
| 34 if (this._editorSelectedTimer) | 47 if (this._editorSelectedTimer) |
| 35 clearTimeout(this._editorSelectedTimer); | 48 clearTimeout(this._editorSelectedTimer); |
| 36 this._editorSelectedTimer = setTimeout(this._updateSuggestedMappingInfob
ar.bind(this, uiSourceCode), 3000); | 49 this._editorSelectedTimer = setTimeout(this._updateSuggestedMappingInfob
ar.bind(this, uiSourceCode), 3000); |
| 37 }, | 50 }, |
| 38 | 51 |
| 39 /** | 52 /** |
| 40 * @param {!WebInspector.UISourceCode} uiSourceCode | 53 * @param {!WebInspector.UISourceCode} uiSourceCode |
| 41 */ | 54 */ |
| 42 _updateSuggestedMappingInfobar: function(uiSourceCode) | 55 _updateSuggestedMappingInfobar: function(uiSourceCode) |
| 43 { | 56 { |
| 44 var uiSourceCodeFrame = this._sourcesView.viewForFile(uiSourceCode); | 57 var uiSourceCodeFrame = this._sourcesView.viewForFile(uiSourceCode); |
| 45 | 58 |
| 46 if (!uiSourceCodeFrame.isShowing()) | 59 if (!uiSourceCodeFrame.isShowing()) |
| 47 return; | 60 return; |
| 48 if (uiSourceCode[WebInspector.WorkspaceMappingTip._infobarSymbol]) | 61 if (uiSourceCode[WebInspector.WorkspaceMappingTip._infobarSymbol]) |
| 49 return; | 62 return; |
| 50 | 63 |
| 51 // First try mapping filesystem -> network. | 64 // First try mapping filesystem -> network. |
| 52 if (!this._workspaceMappingInfobarDisabledSetting.get() && uiSourceCode.
project().type() === WebInspector.projectTypes.FileSystem) { | 65 if (!this._workspaceMappingInfobarDisabledSetting.get() && uiSourceCode.
project().type() === WebInspector.projectTypes.FileSystem) { |
| 53 var networkURL = WebInspector.networkMapping.networkURL(uiSourceCode
); | 66 if (WebInspector.persistence.binding(uiSourceCode)) |
| 54 var hasMappings = !!networkURL; | |
| 55 if (hasMappings) | |
| 56 return; | 67 return; |
| 57 | 68 |
| 58 var networkProjects = this._workspace.projectsForType(WebInspector.p
rojectTypes.Network); | 69 var networkProjects = this._workspace.projectsForType(WebInspector.p
rojectTypes.Network); |
| 59 networkProjects = networkProjects.concat(this._workspace.projectsFor
Type(WebInspector.projectTypes.ContentScripts)); | 70 networkProjects = networkProjects.concat(this._workspace.projectsFor
Type(WebInspector.projectTypes.ContentScripts)); |
| 60 for (var i = 0; i < networkProjects.length; ++i) { | 71 for (var i = 0; i < networkProjects.length; ++i) { |
| 61 var name = uiSourceCode.name(); | 72 var name = uiSourceCode.name(); |
| 62 var networkUiSourceCodes = networkProjects[i].uiSourceCodes(); | 73 var networkUiSourceCodes = networkProjects[i].uiSourceCodes(); |
| 63 for (var j = 0; j < networkUiSourceCodes.length; ++j) { | 74 for (var j = 0; j < networkUiSourceCodes.length; ++j) { |
| 64 if (networkUiSourceCodes[j].name() === name && this._isLocal
Host(networkUiSourceCodes[j].url())) { | 75 if (networkUiSourceCodes[j].name() === name && this._isLocal
Host(networkUiSourceCodes[j].url())) { |
| 65 this._showMappingInfobar(uiSourceCode, false); | 76 this._showMappingInfobar(uiSourceCode, false); |
| 66 return; | 77 return; |
| 67 } | 78 } |
| 68 } | 79 } |
| 69 } | 80 } |
| 70 } | 81 } |
| 71 | 82 |
| 72 // Then map network -> filesystem. | 83 // Then map network -> filesystem. |
| 73 if (uiSourceCode.project().type() === WebInspector.projectTypes.Network
|| uiSourceCode.project().type() === WebInspector.projectTypes.ContentScripts) { | 84 if (uiSourceCode.project().type() === WebInspector.projectTypes.Network
|| uiSourceCode.project().type() === WebInspector.projectTypes.ContentScripts) { |
| 74 // Suggest for localhost only. | 85 // Suggest for localhost only. |
| 75 if (!this._isLocalHost(uiSourceCode.url())) | 86 if (!this._isLocalHost(uiSourceCode.url()) || WebInspector.persisten
ce.binding(uiSourceCode)) |
| 76 return; | |
| 77 var networkURL = WebInspector.networkMapping.networkURL(uiSourceCode
); | |
| 78 if (WebInspector.networkMapping.uiSourceCodeForURLForAnyTarget(netwo
rkURL) !== uiSourceCode) | |
| 79 return; | 87 return; |
| 80 | 88 |
| 81 var filesystemProjects = this._workspace.projectsForType(WebInspecto
r.projectTypes.FileSystem); | 89 var filesystemProjects = this._workspace.projectsForType(WebInspecto
r.projectTypes.FileSystem); |
| 82 for (var i = 0; i < filesystemProjects.length; ++i) { | 90 for (var i = 0; i < filesystemProjects.length; ++i) { |
| 83 var name = uiSourceCode.name(); | 91 var name = uiSourceCode.name(); |
| 84 var fsUiSourceCodes = filesystemProjects[i].uiSourceCodes(); | 92 var fsUiSourceCodes = filesystemProjects[i].uiSourceCodes(); |
| 85 for (var j = 0; j < fsUiSourceCodes.length; ++j) { | 93 for (var j = 0; j < fsUiSourceCodes.length; ++j) { |
| 86 if (fsUiSourceCodes[j].name() === name) { | 94 if (fsUiSourceCodes[j].name() === name) { |
| 87 this._showMappingInfobar(uiSourceCode, true); | 95 this._showMappingInfobar(uiSourceCode, true); |
| 88 return; | 96 return; |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 var uiSourceCodeFrame = this._sourcesView.viewForFile(uiSourceCode); | 171 var uiSourceCodeFrame = this._sourcesView.viewForFile(uiSourceCode); |
| 164 | 172 |
| 165 var rowElement = infobar.createDetailsRowMessage(WebInspector.UIString("
For more information on workspaces, refer to the ")); | 173 var rowElement = infobar.createDetailsRowMessage(WebInspector.UIString("
For more information on workspaces, refer to the ")); |
| 166 rowElement.appendChild(WebInspector.linkifyDocumentationURLAsNode("../se
tup/setup-workflow", WebInspector.UIString("workspaces documentation"))); | 174 rowElement.appendChild(WebInspector.linkifyDocumentationURLAsNode("../se
tup/setup-workflow", WebInspector.UIString("workspaces documentation"))); |
| 167 rowElement.createTextChild("."); | 175 rowElement.createTextChild("."); |
| 168 uiSourceCode[WebInspector.WorkspaceMappingTip._infobarSymbol] = infobar; | 176 uiSourceCode[WebInspector.WorkspaceMappingTip._infobarSymbol] = infobar; |
| 169 uiSourceCodeFrame.attachInfobars([infobar]); | 177 uiSourceCodeFrame.attachInfobars([infobar]); |
| 170 WebInspector.runCSSAnimationOnce(infobar.element, "source-frame-infobar-
animation"); | 178 WebInspector.runCSSAnimationOnce(infobar.element, "source-frame-infobar-
animation"); |
| 171 } | 179 } |
| 172 } | 180 } |
| OLD | NEW |