diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js index c37189557..9a57c1ecd 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -685,6 +685,34 @@ Extensions.prototype = { Main.lookingGlass.close(); }, + _onViewErrors: function (actor) { + let meta = actor._extensionMeta; + let shouldShow = !actor._isShowing; + + if (shouldShow) { + let errors = ExtensionSystem.errors[meta.uuid]; + let errorDisplay = new St.BoxLayout({ vertical: true }); + if (errors && errors.length) { + for (let i = 0; i < errors.length; i ++) + errorDisplay.add(new St.Label({ text: errors[i] })); + } else { + /* Translators: argument is an extension UUID. */ + let message = _("%s has not emitted any errors.").format(meta.uuid); + errorDisplay.add(new St.Label({ text: message })); + } + + actor._errorDisplay = errorDisplay; + actor._parentBox.add(errorDisplay); + actor.label = _("Hide Errors"); + } else { + actor._errorDisplay.destroy(); + actor._errorDisplay = null; + actor.label = _("Show Errors"); + } + + actor._isShowing = shouldShow; + }, + _stateToString: function(extensionState) { switch (extensionState) { case ExtensionSystem.ExtensionState.ENABLED: @@ -729,6 +757,13 @@ Extensions.prototype = { metaBox.add(webpage.actor); } + let viewerrors = new Link.Link({ label: _("Show Errors") }); + viewerrors.actor._extensionMeta = meta; + viewerrors.actor._parentBox = box; + viewerrors.actor._isShowing = false; + viewerrors.actor.connect('clicked', Lang.bind(this, this._onViewErrors)); + metaBox.add(viewerrors.actor); + return box; } };