| 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 sourceURL, |
| 156 {className: classes, lineNumber: lineNumber, columnNumber: columnNumbe
r, maxLength: this._maxLength}); |
| 157 } |
| 156 if (!target || target.isDisposed()) | 158 if (!target || target.isDisposed()) |
| 157 return fallbackAnchor; | 159 return fallbackAnchor; |
| 158 var debuggerModel = target.model(SDK.DebuggerModel); | 160 var debuggerModel = target.model(SDK.DebuggerModel); |
| 159 if (!debuggerModel) | 161 if (!debuggerModel) |
| 160 return fallbackAnchor; | 162 return fallbackAnchor; |
| 161 | 163 |
| 162 var rawLocation = | 164 var rawLocation = |
| 163 (scriptId ? debuggerModel.createRawLocationByScriptId(scriptId, lineNumb
er, columnNumber || 0) : null) || | 165 (scriptId ? debuggerModel.createRawLocationByScriptId(scriptId, lineNumb
er, columnNumber || 0) : null) || |
| 164 debuggerModel.createRawLocationByURL(sourceURL, lineNumber, columnNumber
|| 0); | 166 debuggerModel.createRawLocationByURL(sourceURL, lineNumber, columnNumber
|| 0); |
| 165 if (!rawLocation) | 167 if (!rawLocation) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 181 /** | 183 /** |
| 182 * @param {?SDK.Target} target | 184 * @param {?SDK.Target} target |
| 183 * @param {?string} scriptId | 185 * @param {?string} scriptId |
| 184 * @param {string} sourceURL | 186 * @param {string} sourceURL |
| 185 * @param {number} lineNumber | 187 * @param {number} lineNumber |
| 186 * @param {number=} columnNumber | 188 * @param {number=} columnNumber |
| 187 * @param {string=} classes | 189 * @param {string=} classes |
| 188 * @return {!Element} | 190 * @return {!Element} |
| 189 */ | 191 */ |
| 190 linkifyScriptLocation(target, scriptId, sourceURL, lineNumber, columnNumber, c
lasses) { | 192 linkifyScriptLocation(target, scriptId, sourceURL, lineNumber, columnNumber, c
lasses) { |
| 191 return this.maybeLinkifyScriptLocation(target, scriptId, sourceURL, lineNumb
er, columnNumber, classes) || | 193 var scriptLink = this.maybeLinkifyScriptLocation(target, scriptId, sourceURL
, lineNumber, columnNumber, classes); |
| 194 return scriptLink || |
| 192 Components.Linkifier.linkifyURL( | 195 Components.Linkifier.linkifyURL( |
| 193 sourceURL, undefined, classes, lineNumber, columnNumber, undefined,
this._maxLength); | 196 sourceURL, |
| 197 {className: classes, lineNumber: lineNumber, columnNumber: columnNum
ber, maxLength: this._maxLength}); |
| 194 } | 198 } |
| 195 | 199 |
| 196 /** | 200 /** |
| 197 * @param {!SDK.DebuggerModel.Location} rawLocation | 201 * @param {!SDK.DebuggerModel.Location} rawLocation |
| 198 * @param {string} fallbackUrl | 202 * @param {string} fallbackUrl |
| 199 * @param {string=} classes | 203 * @param {string=} classes |
| 200 * @return {!Element} | 204 * @return {!Element} |
| 201 */ | 205 */ |
| 202 linkifyRawLocation(rawLocation, fallbackUrl, classes) { | 206 linkifyRawLocation(rawLocation, fallbackUrl, classes) { |
| 203 return this.linkifyScriptLocation( | 207 return this.linkifyScriptLocation( |
| (...skipping 15 matching lines...) Expand all Loading... |
| 219 /** | 223 /** |
| 220 * @param {!SDK.Target} target | 224 * @param {!SDK.Target} target |
| 221 * @param {!Protocol.Runtime.StackTrace} stackTrace | 225 * @param {!Protocol.Runtime.StackTrace} stackTrace |
| 222 * @param {string=} classes | 226 * @param {string=} classes |
| 223 * @return {!Element} | 227 * @return {!Element} |
| 224 */ | 228 */ |
| 225 linkifyStackTraceTopFrame(target, stackTrace, classes) { | 229 linkifyStackTraceTopFrame(target, stackTrace, classes) { |
| 226 console.assert(stackTrace.callFrames && stackTrace.callFrames.length); | 230 console.assert(stackTrace.callFrames && stackTrace.callFrames.length); |
| 227 | 231 |
| 228 var topFrame = stackTrace.callFrames[0]; | 232 var topFrame = stackTrace.callFrames[0]; |
| 229 var fallbackAnchor = Components.Linkifier.linkifyURL( | 233 var fallbackAnchor = Components.Linkifier.linkifyURL(topFrame.url, { |
| 230 topFrame.url, undefined, classes, topFrame.lineNumber, topFrame.columnNu
mber, undefined, this._maxLength); | 234 className: classes, |
| 235 lineNumber: topFrame.lineNumber, |
| 236 columnNumber: topFrame.columnNumber, |
| 237 maxLength: this._maxLength |
| 238 }); |
| 231 if (target.isDisposed()) | 239 if (target.isDisposed()) |
| 232 return fallbackAnchor; | 240 return fallbackAnchor; |
| 233 | 241 |
| 234 var debuggerModel = target.model(SDK.DebuggerModel); | 242 var debuggerModel = target.model(SDK.DebuggerModel); |
| 235 var rawLocations = debuggerModel.createRawLocationsByStackTrace(stackTrace); | 243 var rawLocations = debuggerModel.createRawLocationsByStackTrace(stackTrace); |
| 236 if (rawLocations.length === 0) | 244 if (rawLocations.length === 0) |
| 237 return fallbackAnchor; | 245 return fallbackAnchor; |
| 238 | 246 |
| 239 var anchor = Components.Linkifier._createLink('', classes || ''); | 247 var anchor = Components.Linkifier._createLink('', classes || ''); |
| 240 var info = Components.Linkifier._linkInfo(anchor); | 248 var info = Components.Linkifier._linkInfo(anchor); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 var icon = Components.Linkifier._decorator.linkIcon(info.uiLocation.uiSource
Code); | 325 var icon = Components.Linkifier._decorator.linkIcon(info.uiLocation.uiSource
Code); |
| 318 if (icon) { | 326 if (icon) { |
| 319 icon.style.setProperty('margin-right', '2px'); | 327 icon.style.setProperty('margin-right', '2px'); |
| 320 anchor.insertBefore(icon, anchor.firstChild); | 328 anchor.insertBefore(icon, anchor.firstChild); |
| 321 } | 329 } |
| 322 info.icon = icon; | 330 info.icon = icon; |
| 323 } | 331 } |
| 324 | 332 |
| 325 /** | 333 /** |
| 326 * @param {string} url | 334 * @param {string} url |
| 327 * @param {string=} text | 335 * @param {!Components.LinkifyURLOptions=} options |
| 328 * @param {string=} className | |
| 329 * @param {number=} lineNumber | |
| 330 * @param {number=} columnNumber | |
| 331 * @param {boolean=} preventClick | |
| 332 * @param {number=} maxLength | |
| 333 * @return {!Element} | 336 * @return {!Element} |
| 334 */ | 337 */ |
| 335 static linkifyURL(url, text, className, lineNumber, columnNumber, preventClick
, maxLength) { | 338 static linkifyURL(url, options) { |
| 339 options = options || {}; |
| 340 var text = options.text; |
| 341 var className = options.className || ''; |
| 342 var lineNumber = options.lineNumber; |
| 343 var columnNumber = options.columnNumber; |
| 344 var preventClick = options.preventClick; |
| 345 var maxLength = options.maxLength || UI.MaxLengthForDisplayedURLs; |
| 336 if (!url || url.trim().toLowerCase().startsWith('javascript:')) { | 346 if (!url || url.trim().toLowerCase().startsWith('javascript:')) { |
| 337 var element = createElementWithClass('span', className); | 347 var element = createElementWithClass('span', className); |
| 338 element.textContent = text || url || Common.UIString('(unknown)'); | 348 element.textContent = text || url || Common.UIString('(unknown)'); |
| 339 return element; | 349 return element; |
| 340 } | 350 } |
| 341 | 351 |
| 342 var linkText = text || Bindings.displayNameForURL(url); | 352 var linkText = text || Bindings.displayNameForURL(url); |
| 343 if (typeof lineNumber === 'number' && !text) | 353 if (typeof lineNumber === 'number' && !text) |
| 344 linkText += ':' + (lineNumber + 1); | 354 linkText += ':' + (lineNumber + 1); |
| 345 var title = linkText !== url ? url : ''; | 355 var title = linkText !== url ? url : ''; |
| 346 var link = Components.Linkifier._createLink( | 356 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); | 357 var info = Components.Linkifier._linkInfo(link); |
| 349 if (typeof lineNumber === 'number') | 358 if (typeof lineNumber === 'number') |
| 350 info.lineNumber = lineNumber; | 359 info.lineNumber = lineNumber; |
| 351 if (typeof columnNumber === 'number') | 360 if (typeof columnNumber === 'number') |
| 352 info.columnNumber = columnNumber; | 361 info.columnNumber = columnNumber; |
| 353 return link; | 362 return link; |
| 354 } | 363 } |
| 355 | 364 |
| 356 /** | 365 /** |
| 357 * @param {!Object} revealable | 366 * @param {!Object} revealable |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 600 * url: ?string, | 609 * url: ?string, |
| 601 * lineNumber: ?number, | 610 * lineNumber: ?number, |
| 602 * columnNumber: ?number, | 611 * columnNumber: ?number, |
| 603 * revealable: ?Object, | 612 * revealable: ?Object, |
| 604 * fallback: ?Element | 613 * fallback: ?Element |
| 605 * }} | 614 * }} |
| 606 */ | 615 */ |
| 607 Components._LinkInfo; | 616 Components._LinkInfo; |
| 608 | 617 |
| 609 /** | 618 /** |
| 619 * @typedef {{ |
| 620 * text: (string|undefined), |
| 621 * className: (string|undefined), |
| 622 * lineNumber: (number|undefined), |
| 623 * columnNumber: (number|undefined), |
| 624 * preventClick: (boolean|undefined), |
| 625 * maxLength: (number|undefined) |
| 626 * }} |
| 627 */ |
| 628 Components.LinkifyURLOptions; |
| 629 |
| 630 /** |
| 610 * The maximum length before strings are considered too long for finding URLs. | 631 * The maximum length before strings are considered too long for finding URLs. |
| 611 * @const | 632 * @const |
| 612 * @type {number} | 633 * @type {number} |
| 613 */ | 634 */ |
| 614 Components.Linkifier.MaxLengthToIgnoreLinkifier = 10000; | 635 Components.Linkifier.MaxLengthToIgnoreLinkifier = 10000; |
| 615 | 636 |
| 616 /** | 637 /** |
| 617 * @typedef {function(!Common.ContentProvider, number)} | 638 * @typedef {function(!Common.ContentProvider, number)} |
| 618 */ | 639 */ |
| 619 Components.Linkifier.LinkHandler; | 640 Components.Linkifier.LinkHandler; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 685 */ | 706 */ |
| 686 Components.linkifyStringAsFragment = function(string) { | 707 Components.linkifyStringAsFragment = function(string) { |
| 687 /** | 708 /** |
| 688 * @param {string} title | 709 * @param {string} title |
| 689 * @param {string} url | 710 * @param {string} url |
| 690 * @param {number=} lineNumber | 711 * @param {number=} lineNumber |
| 691 * @param {number=} columnNumber | 712 * @param {number=} columnNumber |
| 692 * @return {!Node} | 713 * @return {!Node} |
| 693 */ | 714 */ |
| 694 function linkifier(title, url, lineNumber, columnNumber) { | 715 function linkifier(title, url, lineNumber, columnNumber) { |
| 695 return Components.Linkifier.linkifyURL(url, title, undefined, lineNumber, co
lumnNumber); | 716 return Components.Linkifier.linkifyURL(url, {text: title, lineNumber: lineNu
mber, columnNumber: columnNumber}); |
| 696 } | 717 } |
| 697 | 718 |
| 698 return Components.linkifyStringAsFragmentWithCustomLinkifier(string, linkifier
); | 719 return Components.linkifyStringAsFragmentWithCustomLinkifier(string, linkifier
); |
| 699 }; | 720 }; |
| 700 | 721 |
| 701 /** | 722 /** |
| 702 * @implements {UI.ContextMenu.Provider} | 723 * @implements {UI.ContextMenu.Provider} |
| 703 * @unrestricted | 724 * @unrestricted |
| 704 */ | 725 */ |
| 705 Components.Linkifier.LinkContextMenuProvider = class { | 726 Components.Linkifier.LinkContextMenuProvider = class { |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 contextMenu.appendSeparator(); | 841 contextMenu.appendSeparator(); |
| 821 contextMenu.appendItem(Common.UIString('Save'), save.bind(null, false)); | 842 contextMenu.appendItem(Common.UIString('Save'), save.bind(null, false)); |
| 822 | 843 |
| 823 if (contentProvider instanceof Workspace.UISourceCode) { | 844 if (contentProvider instanceof Workspace.UISourceCode) { |
| 824 var uiSourceCode = /** @type {!Workspace.UISourceCode} */ (contentProvider
); | 845 var uiSourceCode = /** @type {!Workspace.UISourceCode} */ (contentProvider
); |
| 825 if (!uiSourceCode.project().canSetFileContent()) | 846 if (!uiSourceCode.project().canSetFileContent()) |
| 826 contextMenu.appendItem(Common.UIString.capitalize('Save ^as...'), save.b
ind(null, true)); | 847 contextMenu.appendItem(Common.UIString.capitalize('Save ^as...'), save.b
ind(null, true)); |
| 827 } | 848 } |
| 828 } | 849 } |
| 829 }; | 850 }; |
| OLD | NEW |