Chromium Code Reviews| Index: Source/devtools/front_end/ScriptsPanel.js |
| diff --git a/Source/devtools/front_end/ScriptsPanel.js b/Source/devtools/front_end/ScriptsPanel.js |
| index ed44ed32cf1f1784b3284d48eacd1417ad41a472..d4c42ebeac59568f02575d5b9e9e4fc19ab2aeea 100644 |
| --- a/Source/devtools/front_end/ScriptsPanel.js |
| +++ b/Source/devtools/front_end/ScriptsPanel.js |
| @@ -461,6 +461,19 @@ WebInspector.ScriptsPanel.prototype = { |
| }, |
| /** |
| + * @param {WebInspector.TextEditorPositionHandle} from |
| + * @param {WebInspector.TextEditorPositionHandle} to |
| + */ |
| + _onJumpToPosition: function(uiSourceCode, from, to) |
| + { |
| + if (this._searchQuery) |
|
vsevik
2013/09/04 09:46:22
Please extract all jump specific logic to a separa
lushnikov
2014/01/02 14:06:09
Done.
|
| + return; |
| + var fromEntry = from ? new WebInspector.ScriptsPanelJumpHistoryEntry(this, uiSourceCode, from) : null; |
| + var toEntry = to ? new WebInspector.ScriptsPanelJumpHistoryEntry(this, uiSourceCode, to) : null; |
| + WebInspector.jumpHistoryManager.jumpToPosition(fromEntry, toEntry); |
| + }, |
| + |
| + /** |
| * @param {WebInspector.UISourceCode} uiSourceCode |
| * @return {WebInspector.SourceFrame} |
| */ |
| @@ -480,6 +493,7 @@ WebInspector.ScriptsPanel.prototype = { |
| break; |
| } |
| this._sourceFramesByUISourceCode.put(uiSourceCode, sourceFrame); |
| + sourceFrame.setJumpToPositionDelegate(this._onJumpToPosition.bind(this, uiSourceCode)); |
| return sourceFrame; |
| }, |
| @@ -566,6 +580,13 @@ WebInspector.ScriptsPanel.prototype = { |
| if (this._currentUISourceCode === uiSourceCode) |
| delete this._currentUISourceCode; |
| + function historyFilter(projectId, path, entry) |
| + { |
| + if (!(entry instanceof WebInspector.ScriptsPanelJumpHistoryEntry)) |
| + return false; |
| + return entry._path === path && entry._projectId === projectId; |
| + } |
| + WebInspector.jumpHistoryManager.filterHistoryEntries(historyFilter.bind(this, uiSourceCode.project().id(), uiSourceCode.path())); |
| // ScriptsNavigator does not need to update on EditorClosed. |
| this._updateScriptViewStatusBarItems(); |
| WebInspector.searchController.resetSearch(); |
| @@ -1447,3 +1468,62 @@ WebInspector.ScriptsPanel.prototype = { |
| __proto__: WebInspector.Panel.prototype |
| } |
| + |
| +/** |
| + * @constructor |
| + * @implements {WebInspector.JumpHistoryEntry} |
| + * @param {WebInspector.ScriptsPanel} scriptsPanel |
| + * @param {WebInspector.UISourceCode} uiSourceCode |
| + * @param {WebInspector.TextEditorPositionHandle} position |
| + */ |
| +WebInspector.ScriptsPanelJumpHistoryEntry = function(scriptsPanel, uiSourceCode, position) |
| +{ |
| + this._scriptsPanel = scriptsPanel; |
| + this._projectId = uiSourceCode.project().id(); |
| + this._path = uiSourceCode.path(); |
| + this._position = position; |
| +} |
| + |
| +WebInspector.ScriptsPanelJumpHistoryEntry.prototype = { |
| + /** |
| + * @return {boolean} |
| + */ |
| + valid: function() |
| + { |
| + return !!this._position.resolve(); |
| + }, |
| + |
| + /** |
| + * @param {WebInspector.JumpHistoryEntry} entry |
| + */ |
| + merge: function(entry) |
| + { |
| + if (!(entry instanceof WebInspector.ScriptsPanelJumpHistoryEntry)) |
| + return; |
| + if (entry._projectId === this._projectId && entry._path === this._path) |
| + this._position = entry._position; |
| + }, |
| + |
| + /** |
| + * @return {boolean} |
| + */ |
| + reveal: function() |
| + { |
| + if (!this._scriptsPanel.isShowing()) |
| + WebInspector.inspectorView.setCurrentPanel(this._scriptsPanel); |
| + var position = this._position.resolve(); |
| + var uiSourceCode = WebInspector.workspace.project(this._projectId).uiSourceCode(this._path); |
| + this._scriptsPanel._showSourceLocation(uiSourceCode, position.lineNumber, position.columnNumber); |
| + return true; |
| + }, |
| + |
| + /** |
| + * @param {WebInspector.JumpHistoryEntry} entry |
| + */ |
| + equal: function(entry) |
| + { |
| + if (!(entry instanceof WebInspector.ScriptsPanelJumpHistoryEntry)) |
| + return false; |
| + return entry._projectId === this._projectId && entry._path === this._path && entry._position.equal(this._position); |
| + } |
| +} |