| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 * @param {!SDK.DebuggerModel} debuggerModel | 36 * @param {!SDK.DebuggerModel} debuggerModel |
| 37 * @param {!Workspace.Workspace} workspace | 37 * @param {!Workspace.Workspace} workspace |
| 38 * @param {!Bindings.DebuggerWorkspaceBinding} debuggerWorkspaceBinding | 38 * @param {!Bindings.DebuggerWorkspaceBinding} debuggerWorkspaceBinding |
| 39 */ | 39 */ |
| 40 constructor(debuggerModel, workspace, debuggerWorkspaceBinding) { | 40 constructor(debuggerModel, workspace, debuggerWorkspaceBinding) { |
| 41 this._debuggerModel = debuggerModel; | 41 this._debuggerModel = debuggerModel; |
| 42 this._debuggerWorkspaceBinding = debuggerWorkspaceBinding; | 42 this._debuggerWorkspaceBinding = debuggerWorkspaceBinding; |
| 43 var projectId = Bindings.DefaultScriptMapping.projectIdForTarget(debuggerMod
el.target()); | 43 var projectId = Bindings.DefaultScriptMapping.projectIdForTarget(debuggerMod
el.target()); |
| 44 this._project = new Bindings.ContentProviderBasedProject( | 44 this._project = new Bindings.ContentProviderBasedProject( |
| 45 workspace, projectId, Workspace.projectTypes.Debugger, '', true /* isSer
viceProject */); | 45 workspace, projectId, Workspace.projectTypes.Debugger, '', true /* isSer
viceProject */); |
| 46 /** @type {!Map.<string, !Workspace.UISourceCode>} */ | |
| 47 this._uiSourceCodeForScriptId = new Map(); | |
| 48 /** @type {!Map.<!Workspace.UISourceCode, string>} */ | |
| 49 this._scriptIdForUISourceCode = new Map(); | |
| 50 this._eventListeners = | 46 this._eventListeners = |
| 51 [debuggerModel.addEventListener(SDK.DebuggerModel.Events.GlobalObjectCle
ared, this._debuggerReset, this)]; | 47 [debuggerModel.addEventListener(SDK.DebuggerModel.Events.GlobalObjectCle
ared, this._debuggerReset, this)]; |
| 52 } | 48 } |
| 53 | 49 |
| 54 /** | 50 /** |
| 55 * @param {!Workspace.UISourceCode} uiSourceCode | 51 * @param {!Workspace.UISourceCode} uiSourceCode |
| 56 * @return {?SDK.Script} | 52 * @return {?SDK.Script} |
| 57 */ | 53 */ |
| 58 static scriptForUISourceCode(uiSourceCode) { | 54 static scriptForUISourceCode(uiSourceCode) { |
| 59 return uiSourceCode[Bindings.DefaultScriptMapping._scriptSymbol] || null; | 55 return uiSourceCode[Bindings.DefaultScriptMapping._scriptSymbol] || null; |
| 60 } | 56 } |
| 61 | 57 |
| 62 /** | 58 /** |
| 63 * @param {!SDK.Target} target | 59 * @param {!SDK.Target} target |
| 64 * @return {string} | 60 * @return {string} |
| 65 */ | 61 */ |
| 66 static projectIdForTarget(target) { | 62 static projectIdForTarget(target) { |
| 67 return 'debugger:' + target.id(); | 63 return 'debugger:' + target.id(); |
| 68 } | 64 } |
| 69 | 65 |
| 70 /** | 66 /** |
| 71 * @override | 67 * @override |
| 72 * @param {!SDK.DebuggerModel.Location} rawLocation | 68 * @param {!SDK.DebuggerModel.Location} rawLocation |
| 73 * @return {!Workspace.UILocation} | 69 * @return {!Workspace.UILocation} |
| 74 */ | 70 */ |
| 75 rawLocationToUILocation(rawLocation) { | 71 rawLocationToUILocation(rawLocation) { |
| 76 var debuggerModelLocation = /** @type {!SDK.DebuggerModel.Location} */ (rawL
ocation); | 72 var debuggerModelLocation = /** @type {!SDK.DebuggerModel.Location} */ (rawL
ocation); |
| 77 var script = debuggerModelLocation.script(); | 73 var script = debuggerModelLocation.script(); |
| 78 var uiSourceCode = this._uiSourceCodeForScriptId.get(script.scriptId); | 74 var uiSourceCode = script[Bindings.DefaultScriptMapping._uiSourceCodeSymbol]
; |
| 79 var lineNumber = debuggerModelLocation.lineNumber - (script.isInlineScriptWi
thSourceURL() ? script.lineOffset : 0); | 75 var lineNumber = debuggerModelLocation.lineNumber - (script.isInlineScriptWi
thSourceURL() ? script.lineOffset : 0); |
| 80 var columnNumber = debuggerModelLocation.columnNumber || 0; | 76 var columnNumber = debuggerModelLocation.columnNumber || 0; |
| 81 if (script.isInlineScriptWithSourceURL() && !lineNumber && columnNumber) | 77 if (script.isInlineScriptWithSourceURL() && !lineNumber && columnNumber) |
| 82 columnNumber -= script.columnOffset; | 78 columnNumber -= script.columnOffset; |
| 83 return uiSourceCode.uiLocation(lineNumber, columnNumber); | 79 return uiSourceCode.uiLocation(lineNumber, columnNumber); |
| 84 } | 80 } |
| 85 | 81 |
| 86 /** | 82 /** |
| 87 * @override | 83 * @override |
| 88 * @param {!Workspace.UISourceCode} uiSourceCode | 84 * @param {!Workspace.UISourceCode} uiSourceCode |
| 89 * @param {number} lineNumber | 85 * @param {number} lineNumber |
| 90 * @param {number} columnNumber | 86 * @param {number} columnNumber |
| 91 * @return {?SDK.DebuggerModel.Location} | 87 * @return {?SDK.DebuggerModel.Location} |
| 92 */ | 88 */ |
| 93 uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber) { | 89 uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber) { |
| 94 var scriptId = this._scriptIdForUISourceCode.get(uiSourceCode); | 90 var script = uiSourceCode[Bindings.DefaultScriptMapping._scriptSymbol]; |
| 95 var script = this._debuggerModel.scriptForId(scriptId); | |
| 96 if (script.isInlineScriptWithSourceURL()) { | 91 if (script.isInlineScriptWithSourceURL()) { |
| 97 return this._debuggerModel.createRawLocation( | 92 return this._debuggerModel.createRawLocation( |
| 98 script, lineNumber + script.lineOffset, lineNumber ? columnNumber : co
lumnNumber + script.columnOffset); | 93 script, lineNumber + script.lineOffset, lineNumber ? columnNumber : co
lumnNumber + script.columnOffset); |
| 99 } | 94 } |
| 100 return this._debuggerModel.createRawLocation(script, lineNumber, columnNumbe
r); | 95 return this._debuggerModel.createRawLocation(script, lineNumber, columnNumbe
r); |
| 101 } | 96 } |
| 102 | 97 |
| 103 /** | 98 /** |
| 104 * @param {!SDK.Script} script | 99 * @param {!SDK.Script} script |
| 105 */ | 100 */ |
| 106 addScript(script) { | 101 addScript(script) { |
| 107 var name = Common.ParsedURL.extractName(script.sourceURL); | 102 var name = Common.ParsedURL.extractName(script.sourceURL); |
| 108 var url = 'debugger:///VM' + script.scriptId + (name ? ' ' + name : ''); | 103 var url = 'debugger:///VM' + script.scriptId + (name ? ' ' + name : ''); |
| 109 | 104 |
| 110 var uiSourceCode = this._project.createUISourceCode(url, Common.resourceType
s.Script); | 105 var uiSourceCode = this._project.createUISourceCode(url, Common.resourceType
s.Script); |
| 111 uiSourceCode[Bindings.DefaultScriptMapping._scriptSymbol] = script; | 106 uiSourceCode[Bindings.DefaultScriptMapping._scriptSymbol] = script; |
| 112 this._uiSourceCodeForScriptId.set(script.scriptId, uiSourceCode); | 107 script[Bindings.DefaultScriptMapping._uiSourceCodeSymbol] = uiSourceCode; |
| 113 this._scriptIdForUISourceCode.set(uiSourceCode, script.scriptId); | |
| 114 this._project.addUISourceCodeWithProvider(uiSourceCode, script, null); | 108 this._project.addUISourceCodeWithProvider(uiSourceCode, script, null); |
| 115 | 109 |
| 116 this._debuggerWorkspaceBinding.setSourceMapping(this._debuggerModel.target()
, uiSourceCode, this); | 110 this._debuggerWorkspaceBinding.setSourceMapping(this._debuggerModel.target()
, uiSourceCode, this); |
| 117 this._debuggerWorkspaceBinding.pushSourceMapping(script, this); | 111 this._debuggerWorkspaceBinding.pushSourceMapping(script, this); |
| 118 } | 112 } |
| 119 | 113 |
| 120 /** | 114 /** |
| 121 * @override | 115 * @override |
| 122 * @return {boolean} | 116 * @return {boolean} |
| 123 */ | 117 */ |
| 124 isIdentity() { | 118 isIdentity() { |
| 125 return true; | 119 return true; |
| 126 } | 120 } |
| 127 | 121 |
| 128 /** | 122 /** |
| 129 * @override | 123 * @override |
| 130 * @param {!Workspace.UISourceCode} uiSourceCode | 124 * @param {!Workspace.UISourceCode} uiSourceCode |
| 131 * @param {number} lineNumber | 125 * @param {number} lineNumber |
| 132 * @return {boolean} | 126 * @return {boolean} |
| 133 */ | 127 */ |
| 134 uiLineHasMapping(uiSourceCode, lineNumber) { | 128 uiLineHasMapping(uiSourceCode, lineNumber) { |
| 135 return true; | 129 return true; |
| 136 } | 130 } |
| 137 | 131 |
| 138 _debuggerReset() { | 132 _debuggerReset() { |
| 139 this._uiSourceCodeForScriptId.clear(); | |
| 140 this._scriptIdForUISourceCode.clear(); | |
| 141 this._project.reset(); | 133 this._project.reset(); |
| 142 } | 134 } |
| 143 | 135 |
| 144 dispose() { | 136 dispose() { |
| 145 Common.EventTarget.removeEventListeners(this._eventListeners); | 137 Common.EventTarget.removeEventListeners(this._eventListeners); |
| 146 this._debuggerReset(); | 138 this._debuggerReset(); |
| 147 this._project.dispose(); | 139 this._project.dispose(); |
| 148 } | 140 } |
| 149 }; | 141 }; |
| 150 | 142 |
| 151 Bindings.DefaultScriptMapping._scriptSymbol = Symbol('symbol'); | 143 Bindings.DefaultScriptMapping._scriptSymbol = Symbol('symbol'); |
| 144 Bindings.DefaultScriptMapping._uiSourceCodeSymbol = Symbol('uiSourceCodeSymbol')
; |
| OLD | NEW |