| Index: chrome/browser/resources/extensions/extension_error.js
|
| diff --git a/chrome/browser/resources/extensions/extension_error.js b/chrome/browser/resources/extensions/extension_error.js
|
| index 0433e5d3e3da4f21d92d828346ed8219fa534e64..d53f9084368662151bb8890fc288b0d38be15e2f 100644
|
| --- a/chrome/browser/resources/extensions/extension_error.js
|
| +++ b/chrome/browser/resources/extensions/extension_error.js
|
| @@ -41,46 +41,6 @@ cr.define('extensions', function() {
|
| return div;
|
| }
|
|
|
| - /**
|
| - * The manifest filename.
|
| - * @type {string}
|
| - * @const
|
| - * @private
|
| - */
|
| - ExtensionError.MANIFEST_FILENAME_ = 'manifest.json';
|
| -
|
| - /**
|
| - * Determine whether or not chrome can load the source for a given file; this
|
| - * can only be done if the file belongs to the extension.
|
| - * @param {string} file The file to load.
|
| - * @param {string} extensionUrl The url for the extension, in the form
|
| - * chrome-extension://<extension-id>/.
|
| - * @return {boolean} True if the file can be loaded, false otherwise.
|
| - * @private
|
| - */
|
| - ExtensionError.canLoadFileSource_ = function(file, extensionUrl) {
|
| - return RegExp('^' + extensionUrl).test(file) ||
|
| - file.toLowerCase() == ExtensionError.MANIFEST_FILENAME_;
|
| - };
|
| -
|
| - /**
|
| - * Determine whether or not there are any user-friendly (non-internal) frames
|
| - * in the error's stack trace.
|
| - * @param {Object} error The error to examine.
|
| - * @return {boolean} True if there are user-friendly stack frames for the
|
| - * error, false otherwise.
|
| - * @private
|
| - */
|
| - ExtensionError.hasExternalStackFrames_ = function(error) {
|
| - // All our internal source begins with the "extensions::" prefix.
|
| - var extensionPrefix = /^extensions::/;
|
| - for (var i = 0; i < error.stackTrace.length; ++i) {
|
| - if (!extensionPrefix.test(error.stackTrace[i].url))
|
| - return true;
|
| - }
|
| - return false;
|
| - };
|
| -
|
| ExtensionError.prototype = {
|
| __proto__: HTMLDivElement.prototype,
|
|
|
| @@ -107,49 +67,19 @@ cr.define('extensions', function() {
|
|
|
| // If we cannot open the file source and there are no external frames in
|
| // the stack, then there are no details to display.
|
| - if (!ExtensionError.canLoadFileSource_(error.source, extensionUrl) &&
|
| - !ExtensionError.hasExternalStackFrames_(error)) {
|
| + if (!extensions.ExtensionErrorOverlay.canShowOverlayForError(
|
| + error, extensionUrl)) {
|
| viewDetailsLink.hidden = true;
|
| - return;
|
| - }
|
| -
|
| - // The relative url is the url without the preceeding
|
| - // "chrome-extension://<id>"; this is the format which the
|
| - // requestFileSource call expects.
|
| - var relativeUrl =
|
| - error.source.substring(0, extensionUrl.length) == extensionUrl ?
|
| - error.source.substring(extensionUrl.length) : error.source;
|
| -
|
| - var requestFileSourceArgs = {extensionId: error.extensionId,
|
| - message: error.message,
|
| - pathSuffix: relativeUrl};
|
| -
|
| - var viewDetailsStringId;
|
| - if (relativeUrl.toLowerCase() == 'manifest.json') {
|
| - requestFileSourceArgs.manifestKey = error.manifestKey;
|
| - requestFileSourceArgs.manifestSpecific = error.manifestSpecific;
|
| - viewDetailsStringId = 'extensionErrorViewManifest';
|
| } else {
|
| - requestFileSourceArgs.lineNumber =
|
| - error.stackTrace && error.stackTrace[0] ?
|
| - error.stackTrace[0].lineNumber : 0;
|
| - viewDetailsStringId = 'extensionErrorViewDetails';
|
| + var stringId = extensionUrl.toLowerCase() == 'manifest.json' ?
|
| + 'extensionErrorViewManifest' : 'extensionErrorViewDetails';
|
| + viewDetailsLink.textContent = loadTimeData.getString(stringId);
|
| +
|
| + viewDetailsLink.addEventListener('click', function(e) {
|
| + extensions.ExtensionErrorOverlay.getInstance().setErrorAndShowOverlay(
|
| + error, extensionUrl);
|
| + });
|
| }
|
| - viewDetailsLink.textContent = loadTimeData.getString(viewDetailsStringId);
|
| -
|
| - viewDetailsLink.addEventListener('click', function(e) {
|
| - var overlay = extensions.ExtensionErrorOverlay.getInstance();
|
| - overlay.setError(error);
|
| -
|
| - // If we can, request the file source to show to the user in the
|
| - // overlay. Otherwise, simply show the overlay.
|
| - if (ExtensionError.canLoadFileSource_(error.source, extensionUrl)) {
|
| - chrome.send('extensionErrorRequestFileSource',
|
| - [requestFileSourceArgs]);
|
| - } else {
|
| - overlay.requestFileSourceResponse(null);
|
| - }
|
| - }.bind(this));
|
| },
|
| };
|
|
|
|
|