| Index: chrome/browser/resources/extensions/extension_error_overlay.js
|
| diff --git a/chrome/browser/resources/extensions/extension_error_overlay.js b/chrome/browser/resources/extensions/extension_error_overlay.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3e8087b5ab88520cd6389c96efd463790086deb5
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/extensions/extension_error_overlay.js
|
| @@ -0,0 +1,85 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +cr.define('extensions', function() {
|
| + 'use strict';
|
| +
|
| + /**
|
| + * The ExtensionErrorOverlay will show the contents of a file which pertains
|
| + * to the ExtensionError; this is either the manifest file (for manifest
|
| + * errors) or a source file (for runtime errors). If possible, the portion
|
| + * of the file which caused the error will be highlighted.
|
| + * @constructor
|
| + */
|
| + function ExtensionErrorOverlay() {
|
| + }
|
| +
|
| + cr.addSingletonGetter(ExtensionErrorOverlay);
|
| +
|
| + ExtensionErrorOverlay.prototype = {
|
| + /**
|
| + * Initialize the page.
|
| + */
|
| + initializePage: function() {
|
| + var overlay = $('overlay');
|
| + cr.ui.overlay.setupOverlay(overlay);
|
| + cr.ui.overlay.globalInitialization();
|
| + overlay.addEventListener('cancelOverlay', this.handleDismiss_.bind(this));
|
| +
|
| + $('extension-error-overlay-dismiss').addEventListener(
|
| + 'click', this.handleDismiss_.bind(this));
|
| + },
|
| +
|
| + /**
|
| + * Handles a click on the dismiss button.
|
| + * @param {Event} e The click event.
|
| + * @private
|
| + */
|
| + handleDismiss_: function(e) {
|
| + $('extension-error-overlay-content').innerHTML = '';
|
| + extensions.ExtensionSettings.showOverlay(null);
|
| + },
|
| + };
|
| +
|
| + /**
|
| + * Called by the ExtensionErrorHandler responding to the request for a file's
|
| + * source. Populate the content area of the overlay and display the overlay.
|
| + * @param {Object} result An object with four strings - the title,
|
| + * beforeHighlight, afterHighlight, and highlight. The three 'highlight'
|
| + * strings represent three portions of the file's content to display - the
|
| + * portion which is most relevant and should be emphasized (highlight),
|
| + * and the parts both before and after this portion. These may be empty.
|
| + */
|
| + ExtensionErrorOverlay.requestFileSourceResponse = function(result) {
|
| + var content = $('extension-error-overlay-content');
|
| + document.querySelector(
|
| + '#extension-error-overlay .extension-error-overlay-title').
|
| + innerText = result.title;
|
| +
|
| + var createSpan = function(source, isHighlighted) {
|
| + var span = document.createElement('span');
|
| + span.className = isHighlighted ? 'highlighted-source' : 'normal-source';
|
| + source = source.replace(/ /g, ' ').replace(/\n|\r/g, '<br>');
|
| + span.innerHTML = source;
|
| + return span;
|
| + };
|
| +
|
| + if (result.beforeHighlight)
|
| + content.appendChild(createSpan(result.beforeHighlight, false));
|
| + if (result.highlight) {
|
| + var highlightSpan = createSpan(result.highlight, true);
|
| + highlightSpan.title = result.message;
|
| + content.appendChild(highlightSpan);
|
| + }
|
| + if (result.afterHighlight)
|
| + content.appendChild(createSpan(result.afterHighlight, false));
|
| +
|
| + extensions.ExtensionSettings.showOverlay($('extension-error-overlay'));
|
| + };
|
| +
|
| + // Export
|
| + return {
|
| + ExtensionErrorOverlay: ExtensionErrorOverlay
|
| + };
|
| +});
|
|
|