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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
142 /** | 142 /** |
143 * @param {?SDK.Target} target | 143 * @param {?SDK.Target} target |
144 * @param {?string} scriptId | 144 * @param {?string} scriptId |
145 * @param {string} sourceURL | 145 * @param {string} sourceURL |
146 * @param {number} lineNumber | 146 * @param {number} lineNumber |
147 * @param {number=} columnNumber | 147 * @param {number=} columnNumber |
148 * @param {string=} classes | 148 * @param {string=} classes |
149 * @return {?Element} | 149 * @return {?Element} |
150 */ | 150 */ |
151 maybeLinkifyScriptLocation(target, scriptId, sourceURL, lineNumber, columnNumb er, classes) { | 151 maybeLinkifyScriptLocation(target, scriptId, sourceURL, lineNumber, columnNumb er, classes) { |
152 var fallbackAnchor = sourceURL ? | 152 var fallbackAnchor = null; |
153 Components.Linkifier.linkifyURL( | 153 if (sourceURL) { |
154 sourceURL, undefined, classes, lineNumber, columnNumber, undefined, this._maxLength) : | 154 fallbackAnchor = Components.Linkifier.linkifyURL({ |
155 null; | 155 url: sourceURL, |
156 className: classes, | |
157 lineNumber: lineNumber, | |
158 columnNumber: columnNumber, | |
159 maxLength: this._maxLength | |
160 }); | |
161 } | |
156 if (!target || target.isDisposed()) | 162 if (!target || target.isDisposed()) |
157 return fallbackAnchor; | 163 return fallbackAnchor; |
158 var debuggerModel = target.model(SDK.DebuggerModel); | 164 var debuggerModel = target.model(SDK.DebuggerModel); |
159 if (!debuggerModel) | 165 if (!debuggerModel) |
160 return fallbackAnchor; | 166 return fallbackAnchor; |
161 | 167 |
162 var rawLocation = | 168 var rawLocation = |
163 (scriptId ? debuggerModel.createRawLocationByScriptId(scriptId, lineNumb er, columnNumber || 0) : null) || | 169 (scriptId ? debuggerModel.createRawLocationByScriptId(scriptId, lineNumb er, columnNumber || 0) : null) || |
164 debuggerModel.createRawLocationByURL(sourceURL, lineNumber, columnNumber || 0); | 170 debuggerModel.createRawLocationByURL(sourceURL, lineNumber, columnNumber || 0); |
165 if (!rawLocation) | 171 if (!rawLocation) |
(...skipping 15 matching lines...) Expand all Loading... | |
181 /** | 187 /** |
182 * @param {?SDK.Target} target | 188 * @param {?SDK.Target} target |
183 * @param {?string} scriptId | 189 * @param {?string} scriptId |
184 * @param {string} sourceURL | 190 * @param {string} sourceURL |
185 * @param {number} lineNumber | 191 * @param {number} lineNumber |
186 * @param {number=} columnNumber | 192 * @param {number=} columnNumber |
187 * @param {string=} classes | 193 * @param {string=} classes |
188 * @return {!Element} | 194 * @return {!Element} |
189 */ | 195 */ |
190 linkifyScriptLocation(target, scriptId, sourceURL, lineNumber, columnNumber, c lasses) { | 196 linkifyScriptLocation(target, scriptId, sourceURL, lineNumber, columnNumber, c lasses) { |
191 return this.maybeLinkifyScriptLocation(target, scriptId, sourceURL, lineNumb er, columnNumber, classes) || | 197 var scriptLink = this.maybeLinkifyScriptLocation(target, scriptId, sourceURL , lineNumber, columnNumber, classes); |
192 Components.Linkifier.linkifyURL( | 198 return scriptLink || Components.Linkifier.linkifyURL({ |
193 sourceURL, undefined, classes, lineNumber, columnNumber, undefined, this._maxLength); | 199 url: sourceURL, |
200 className: classes, | |
201 lineNumber: lineNumber, | |
202 columnNumber: columnNumber, | |
203 maxLength: this._maxLength | |
204 }); | |
194 } | 205 } |
195 | 206 |
196 /** | 207 /** |
197 * @param {!SDK.DebuggerModel.Location} rawLocation | 208 * @param {!SDK.DebuggerModel.Location} rawLocation |
198 * @param {string} fallbackUrl | 209 * @param {string} fallbackUrl |
199 * @param {string=} classes | 210 * @param {string=} classes |
200 * @return {!Element} | 211 * @return {!Element} |
201 */ | 212 */ |
202 linkifyRawLocation(rawLocation, fallbackUrl, classes) { | 213 linkifyRawLocation(rawLocation, fallbackUrl, classes) { |
203 return this.linkifyScriptLocation( | 214 return this.linkifyScriptLocation( |
(...skipping 15 matching lines...) Expand all Loading... | |
219 /** | 230 /** |
220 * @param {!SDK.Target} target | 231 * @param {!SDK.Target} target |
221 * @param {!Protocol.Runtime.StackTrace} stackTrace | 232 * @param {!Protocol.Runtime.StackTrace} stackTrace |
222 * @param {string=} classes | 233 * @param {string=} classes |
223 * @return {!Element} | 234 * @return {!Element} |
224 */ | 235 */ |
225 linkifyStackTraceTopFrame(target, stackTrace, classes) { | 236 linkifyStackTraceTopFrame(target, stackTrace, classes) { |
226 console.assert(stackTrace.callFrames && stackTrace.callFrames.length); | 237 console.assert(stackTrace.callFrames && stackTrace.callFrames.length); |
227 | 238 |
228 var topFrame = stackTrace.callFrames[0]; | 239 var topFrame = stackTrace.callFrames[0]; |
229 var fallbackAnchor = Components.Linkifier.linkifyURL( | 240 var fallbackAnchor = Components.Linkifier.linkifyURL({ |
230 topFrame.url, undefined, classes, topFrame.lineNumber, topFrame.columnNu mber, undefined, this._maxLength); | 241 url: topFrame.url, |
242 className: classes, | |
243 lineNumber: topFrame.lineNumber, | |
244 columnNumber: topFrame.columnNumber, | |
245 maxLength: this._maxLength | |
246 }); | |
231 if (target.isDisposed()) | 247 if (target.isDisposed()) |
232 return fallbackAnchor; | 248 return fallbackAnchor; |
233 | 249 |
234 var debuggerModel = target.model(SDK.DebuggerModel); | 250 var debuggerModel = target.model(SDK.DebuggerModel); |
235 var rawLocations = debuggerModel.createRawLocationsByStackTrace(stackTrace); | 251 var rawLocations = debuggerModel.createRawLocationsByStackTrace(stackTrace); |
236 if (rawLocations.length === 0) | 252 if (rawLocations.length === 0) |
237 return fallbackAnchor; | 253 return fallbackAnchor; |
238 | 254 |
239 var anchor = Components.Linkifier._createLink('', classes || ''); | 255 var anchor = Components.Linkifier._createLink('', classes || ''); |
240 var info = Components.Linkifier._linkInfo(anchor); | 256 var info = Components.Linkifier._linkInfo(anchor); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
316 anchor.removeChild(info.icon); | 332 anchor.removeChild(info.icon); |
317 var icon = Components.Linkifier._decorator.linkIcon(info.uiLocation.uiSource Code); | 333 var icon = Components.Linkifier._decorator.linkIcon(info.uiLocation.uiSource Code); |
318 if (icon) { | 334 if (icon) { |
319 icon.style.setProperty('margin-right', '2px'); | 335 icon.style.setProperty('margin-right', '2px'); |
320 anchor.insertBefore(icon, anchor.firstChild); | 336 anchor.insertBefore(icon, anchor.firstChild); |
321 } | 337 } |
322 info.icon = icon; | 338 info.icon = icon; |
323 } | 339 } |
324 | 340 |
325 /** | 341 /** |
326 * @param {string} url | 342 * @param {!Components.LinkifyURLOptions} options |
327 * @param {string=} text | |
328 * @param {string=} className | |
329 * @param {number=} lineNumber | |
330 * @param {number=} columnNumber | |
331 * @param {boolean=} preventClick | |
332 * @param {number=} maxLength | |
333 * @return {!Element} | 343 * @return {!Element} |
334 */ | 344 */ |
335 static linkifyURL(url, text, className, lineNumber, columnNumber, preventClick , maxLength) { | 345 static linkifyURL(options) { |
pfeldman
2017/05/31 21:54:59
In my original review, I was suggesting to only co
luoe
2017/06/02 18:21:12
I see. Looks better to me!
| |
346 var url = options.url; | |
347 var text = options.text; | |
348 var className = options.className || ''; | |
349 var lineNumber = options.lineNumber; | |
350 var columnNumber = options.columnNumber; | |
351 var preventClick = options.preventClick; | |
352 var maxLength = maxLength || UI.MaxLengthForDisplayedURLs; | |
336 if (!url || url.trim().toLowerCase().startsWith('javascript:')) { | 353 if (!url || url.trim().toLowerCase().startsWith('javascript:')) { |
337 var element = createElementWithClass('span', className); | 354 var element = createElementWithClass('span', className); |
338 element.textContent = text || url || Common.UIString('(unknown)'); | 355 element.textContent = text || url || Common.UIString('(unknown)'); |
339 return element; | 356 return element; |
340 } | 357 } |
341 | 358 |
342 var linkText = text || Bindings.displayNameForURL(url); | 359 var linkText = text || Bindings.displayNameForURL(url); |
343 if (typeof lineNumber === 'number' && !text) | 360 if (typeof lineNumber === 'number' && !text) |
344 linkText += ':' + (lineNumber + 1); | 361 linkText += ':' + (lineNumber + 1); |
345 var title = linkText !== url ? url : ''; | 362 var title = linkText !== url ? url : ''; |
346 var link = Components.Linkifier._createLink( | 363 var link = Components.Linkifier._createLink(linkText, className, maxLength, title, url, preventClick); |
347 linkText, className || '', maxLength || UI.MaxLengthForDisplayedURLs, ti tle, url, preventClick); | |
348 var info = Components.Linkifier._linkInfo(link); | 364 var info = Components.Linkifier._linkInfo(link); |
349 if (typeof lineNumber === 'number') | 365 if (typeof lineNumber === 'number') |
350 info.lineNumber = lineNumber; | 366 info.lineNumber = lineNumber; |
351 if (typeof columnNumber === 'number') | 367 if (typeof columnNumber === 'number') |
352 info.columnNumber = columnNumber; | 368 info.columnNumber = columnNumber; |
353 return link; | 369 return link; |
354 } | 370 } |
355 | 371 |
356 /** | 372 /** |
357 * @param {!Object} revealable | 373 * @param {!Object} revealable |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
600 * url: ?string, | 616 * url: ?string, |
601 * lineNumber: ?number, | 617 * lineNumber: ?number, |
602 * columnNumber: ?number, | 618 * columnNumber: ?number, |
603 * revealable: ?Object, | 619 * revealable: ?Object, |
604 * fallback: ?Element | 620 * fallback: ?Element |
605 * }} | 621 * }} |
606 */ | 622 */ |
607 Components._LinkInfo; | 623 Components._LinkInfo; |
608 | 624 |
609 /** | 625 /** |
626 * @typedef {{ | |
627 * url: string, | |
628 * text: (string|undefined), | |
629 * className: (string|undefined), | |
630 * lineNumber: (number|undefined), | |
631 * columnNumber: (number|undefined), | |
632 * preventClick: (boolean|undefined), | |
633 * maxLength: (number|undefined) | |
634 * }} | |
635 */ | |
636 Components.LinkifyURLOptions; | |
637 | |
638 /** | |
610 * The maximum length before strings are considered too long for finding URLs. | 639 * The maximum length before strings are considered too long for finding URLs. |
611 * @const | 640 * @const |
612 * @type {number} | 641 * @type {number} |
613 */ | 642 */ |
614 Components.Linkifier.MaxLengthToIgnoreLinkifier = 10000; | 643 Components.Linkifier.MaxLengthToIgnoreLinkifier = 10000; |
615 | 644 |
616 /** | 645 /** |
617 * @typedef {function(!Common.ContentProvider, number)} | 646 * @typedef {function(!Common.ContentProvider, number)} |
618 */ | 647 */ |
619 Components.Linkifier.LinkHandler; | 648 Components.Linkifier.LinkHandler; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
685 */ | 714 */ |
686 Components.linkifyStringAsFragment = function(string) { | 715 Components.linkifyStringAsFragment = function(string) { |
687 /** | 716 /** |
688 * @param {string} title | 717 * @param {string} title |
689 * @param {string} url | 718 * @param {string} url |
690 * @param {number=} lineNumber | 719 * @param {number=} lineNumber |
691 * @param {number=} columnNumber | 720 * @param {number=} columnNumber |
692 * @return {!Node} | 721 * @return {!Node} |
693 */ | 722 */ |
694 function linkifier(title, url, lineNumber, columnNumber) { | 723 function linkifier(title, url, lineNumber, columnNumber) { |
695 return Components.Linkifier.linkifyURL(url, title, undefined, lineNumber, co lumnNumber); | 724 return Components.Linkifier.linkifyURL({url: url, text: title, lineNumber: l ineNumber, columnNumber: columnNumber}); |
696 } | 725 } |
697 | 726 |
698 return Components.linkifyStringAsFragmentWithCustomLinkifier(string, linkifier ); | 727 return Components.linkifyStringAsFragmentWithCustomLinkifier(string, linkifier ); |
699 }; | 728 }; |
700 | 729 |
701 /** | 730 /** |
702 * @implements {UI.ContextMenu.Provider} | 731 * @implements {UI.ContextMenu.Provider} |
703 * @unrestricted | 732 * @unrestricted |
704 */ | 733 */ |
705 Components.Linkifier.LinkContextMenuProvider = class { | 734 Components.Linkifier.LinkContextMenuProvider = class { |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
820 contextMenu.appendSeparator(); | 849 contextMenu.appendSeparator(); |
821 contextMenu.appendItem(Common.UIString('Save'), save.bind(null, false)); | 850 contextMenu.appendItem(Common.UIString('Save'), save.bind(null, false)); |
822 | 851 |
823 if (contentProvider instanceof Workspace.UISourceCode) { | 852 if (contentProvider instanceof Workspace.UISourceCode) { |
824 var uiSourceCode = /** @type {!Workspace.UISourceCode} */ (contentProvider ); | 853 var uiSourceCode = /** @type {!Workspace.UISourceCode} */ (contentProvider ); |
825 if (!uiSourceCode.project().canSetFileContent()) | 854 if (!uiSourceCode.project().canSetFileContent()) |
826 contextMenu.appendItem(Common.UIString.capitalize('Save ^as...'), save.b ind(null, true)); | 855 contextMenu.appendItem(Common.UIString.capitalize('Save ^as...'), save.b ind(null, true)); |
827 } | 856 } |
828 } | 857 } |
829 }; | 858 }; |
OLD | NEW |