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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 } | 44 } |
45 | 45 |
46 /** | 46 /** |
47 * @constructor | 47 * @constructor |
48 * @implements {WebInspector.TargetManager.Observer} | 48 * @implements {WebInspector.TargetManager.Observer} |
49 * @param {!WebInspector.LinkifierFormatter=} formatter | 49 * @param {!WebInspector.LinkifierFormatter=} formatter |
50 */ | 50 */ |
51 WebInspector.Linkifier = function(formatter) | 51 WebInspector.Linkifier = function(formatter) |
52 { | 52 { |
53 this._formatter = formatter || new WebInspector.Linkifier.DefaultFormatter(W
ebInspector.Linkifier.MaxLengthForDisplayedURLs); | 53 this._formatter = formatter || new WebInspector.Linkifier.DefaultFormatter(W
ebInspector.Linkifier.MaxLengthForDisplayedURLs); |
| 54 /** @type {!Map.<!WebInspector.Target, !Array.<{anchor: !Element, location:
!WebInspector.LiveLocation}>>}*/ |
54 this._liveLocationsByTarget = new Map(); | 55 this._liveLocationsByTarget = new Map(); |
55 WebInspector.targetManager.observeTargets(this); | 56 WebInspector.targetManager.observeTargets(this); |
56 } | 57 } |
57 | 58 |
58 /** | 59 /** |
59 * @param {!WebInspector.Linkifier.LinkHandler} handler | 60 * @param {!WebInspector.Linkifier.LinkHandler} handler |
60 */ | 61 */ |
61 WebInspector.Linkifier.setLinkHandler = function(handler) | 62 WebInspector.Linkifier.setLinkHandler = function(handler) |
62 { | 63 { |
63 WebInspector.Linkifier._linkHandler = handler; | 64 WebInspector.Linkifier._linkHandler = handler; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 anchor.title = anchor.__fallbackAnchor.title; | 136 anchor.title = anchor.__fallbackAnchor.title; |
136 anchor.className = anchor.__fallbackAnchor.className; | 137 anchor.className = anchor.__fallbackAnchor.className; |
137 anchor.textContent = anchor.__fallbackAnchor.textContent; | 138 anchor.textContent = anchor.__fallbackAnchor.textContent; |
138 } | 139 } |
139 liveLocations[i].location.dispose(); | 140 liveLocations[i].location.dispose(); |
140 } | 141 } |
141 }, | 142 }, |
142 | 143 |
143 /** | 144 /** |
144 * @param {?WebInspector.Target} target | 145 * @param {?WebInspector.Target} target |
145 * @param {string} scriptId | 146 * @param {?string} scriptId |
146 * @param {string} sourceURL | 147 * @param {string} sourceURL |
147 * @param {number} lineNumber | 148 * @param {number} lineNumber |
148 * @param {number=} columnNumber | 149 * @param {number=} columnNumber |
149 * @param {string=} classes | 150 * @param {string=} classes |
150 * @return {?Element} | 151 * @return {!Element} |
151 */ | 152 */ |
152 linkifyLocationByScriptId: function(target, scriptId, sourceURL, lineNumber,
columnNumber, classes) | 153 linkifyScriptLocation: function(target, scriptId, sourceURL, lineNumber, col
umnNumber, classes) |
153 { | 154 { |
154 var rawLocation = target ? target.debuggerModel.createRawLocationByScrip
tId(scriptId, sourceURL, lineNumber, columnNumber || 0) : null; | 155 var rawLocation = target && !target.isDetached() ? target.debuggerModel.
createRawLocationByScriptId(scriptId, sourceURL, lineNumber, columnNumber || 0)
: null; |
155 var fallbackAnchor = WebInspector.linkifyResourceAsNode(sourceURL, lineN
umber, classes); | 156 var fallbackAnchor = WebInspector.linkifyResourceAsNode(sourceURL, lineN
umber, classes); |
156 if (!rawLocation) | 157 if (!rawLocation) |
157 return fallbackAnchor; | 158 return fallbackAnchor; |
158 | 159 |
159 var anchor = this.linkifyRawLocation(rawLocation, classes); | 160 var anchor = this._createAnchor(classes); |
| 161 var liveLocation = rawLocation.createLiveLocation(this._updateAnchor.bin
d(this, anchor)); |
| 162 this._liveLocationsByTarget.get(rawLocation.target()).push({anchor: anch
or, location: liveLocation}); |
160 anchor.__fallbackAnchor = fallbackAnchor; | 163 anchor.__fallbackAnchor = fallbackAnchor; |
161 return anchor; | 164 return anchor; |
162 | |
163 }, | |
164 | |
165 /** | |
166 * @param {!WebInspector.Target} target | |
167 * @param {string} sourceURL | |
168 * @param {number} lineNumber | |
169 * @param {number=} columnNumber | |
170 * @param {string=} classes | |
171 * @return {?Element} | |
172 */ | |
173 linkifyLocation: function(target, sourceURL, lineNumber, columnNumber, class
es) | |
174 { | |
175 var rawLocation = target.debuggerModel.createRawLocationByURL(sourceURL,
lineNumber, columnNumber || 0); | |
176 if (!rawLocation) | |
177 return WebInspector.linkifyResourceAsNode(sourceURL, lineNumber, cla
sses); | |
178 return this.linkifyRawLocation(rawLocation, classes); | |
179 }, | 165 }, |
180 | 166 |
181 /** | 167 /** |
182 * @param {!WebInspector.DebuggerModel.Location} rawLocation | 168 * @param {!WebInspector.DebuggerModel.Location} rawLocation |
| 169 * @param {string} fallbackUrl |
183 * @param {string=} classes | 170 * @param {string=} classes |
184 * @return {?Element} | 171 * @return {!Element} |
185 */ | 172 */ |
186 linkifyRawLocation: function(rawLocation, classes) | 173 linkifyRawLocation: function(rawLocation, fallbackUrl, classes) |
187 { | 174 { |
188 // FIXME: this check should not be here. | 175 return this.linkifyScriptLocation(rawLocation.target(), rawLocation.scri
ptId, fallbackUrl, rawLocation.lineNumber, rawLocation.columnNumber, classes); |
189 var script = rawLocation.target().debuggerModel.scriptForId(rawLocation.
scriptId); | |
190 if (!script) | |
191 return null; | |
192 var anchor = this._createAnchor(classes); | |
193 var liveLocation = WebInspector.debuggerWorkspaceBinding.createLiveLocat
ion(rawLocation, this._updateAnchor.bind(this, anchor)); | |
194 this._liveLocationsByTarget.get(rawLocation.target()).push({anchor: anch
or, location: liveLocation}); | |
195 return anchor; | |
196 }, | 176 }, |
197 | 177 |
198 /** | 178 /** |
| 179 * @param {?WebInspector.Target} target |
| 180 * @param {!ConsoleAgent.CallFrame} callFrame |
| 181 * @param {string=} classes |
| 182 * @return {!Element} |
| 183 */ |
| 184 linkifyConsoleCallFrame: function(target, callFrame, classes) |
| 185 { |
| 186 // FIXME(62725): console stack trace line/column numbers are one-based. |
| 187 var lineNumber = callFrame.lineNumber ? callFrame.lineNumber - 1 : 0; |
| 188 var columnNumber = callFrame.columnNumber ? callFrame.columnNumber - 1 :
0; |
| 189 return this.linkifyScriptLocation(target, callFrame.scriptId, callFrame.
url, lineNumber, columnNumber, classes); |
| 190 }, |
| 191 |
| 192 /** |
199 * @param {!WebInspector.CSSLocation} rawLocation | 193 * @param {!WebInspector.CSSLocation} rawLocation |
200 * @param {string=} classes | 194 * @param {string=} classes |
201 * @return {?Element} | 195 * @return {?Element} |
202 */ | 196 */ |
203 linkifyCSSLocation: function(rawLocation, classes) | 197 linkifyCSSLocation: function(rawLocation, classes) |
204 { | 198 { |
205 var anchor = this._createAnchor(classes); | 199 var anchor = this._createAnchor(classes); |
206 var liveLocation = WebInspector.cssWorkspaceBinding.createLiveLocation(r
awLocation, this._updateAnchor.bind(this, anchor)); | 200 var liveLocation = WebInspector.cssWorkspaceBinding.createLiveLocation(r
awLocation, this._updateAnchor.bind(this, anchor)); |
207 if (!liveLocation) | 201 if (!liveLocation) |
208 return null; | 202 return null; |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 */ | 352 */ |
359 WebInspector.Linkifier.liveLocationText = function(target, scriptId, lineNumber,
columnNumber) | 353 WebInspector.Linkifier.liveLocationText = function(target, scriptId, lineNumber,
columnNumber) |
360 { | 354 { |
361 var script = target.debuggerModel.scriptForId(scriptId); | 355 var script = target.debuggerModel.scriptForId(scriptId); |
362 if (!script) | 356 if (!script) |
363 return ""; | 357 return ""; |
364 var location = /** @type {!WebInspector.DebuggerModel.Location} */ (target.d
ebuggerModel.createRawLocation(script, lineNumber, columnNumber || 0)); | 358 var location = /** @type {!WebInspector.DebuggerModel.Location} */ (target.d
ebuggerModel.createRawLocation(script, lineNumber, columnNumber || 0)); |
365 var uiLocation = /** @type {!WebInspector.UILocation} */ (WebInspector.debug
gerWorkspaceBinding.rawLocationToUILocation(location)); | 359 var uiLocation = /** @type {!WebInspector.UILocation} */ (WebInspector.debug
gerWorkspaceBinding.rawLocationToUILocation(location)); |
366 return uiLocation.linkText(); | 360 return uiLocation.linkText(); |
367 } | 361 } |
OLD | NEW |