| // Copyright 2017 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'; |
| |
| /** @interface */ |
| class LoadErrorDelegate { |
| /** |
| * Attempts to load the previously-attempted unpacked extension. |
| * @param {string} retryId |
| * @return {!Promise} |
| */ |
| retryLoadUnpacked(retryId) {} |
| } |
| |
| const LoadError = Polymer({ |
| is: 'extensions-load-error', |
| properties: { |
| /** @type {extensions.LoadErrorDelegate} */ |
| delegate: Object, |
| |
| /** @type {chrome.developerPrivate.LoadError} */ |
| loadError: Object, |
| |
| /** @private */ |
| retrying_: Boolean, |
| }, |
| |
| observers: [ |
| 'observeLoadErrorChanges_(loadError)', |
| ], |
| |
| show: function() { |
| /** @type {!CrDialogElement} */ (this.$.dialog).showModal(); |
| }, |
| |
| close: function() { |
| /** @type {!CrDialogElement} */ (this.$.dialog).close(); |
| }, |
| |
| /** @private */ |
| onRetryTap_: function() { |
| this.retrying_ = true; |
| this.delegate.retryLoadUnpacked(this.loadError.retryGuid) |
| .then( |
| () => { |
| this.close(); |
| }, |
| loadError => { |
| this.loadError = |
| /** @type {chrome.developerPrivate.LoadError} */ ( |
| loadError); |
| this.retrying_ = false; |
| }); |
| }, |
| |
| /** @private */ |
| observeLoadErrorChanges_: function() { |
| assert(this.loadError); |
| const source = this.loadError.source; |
| // CodeSection expects a RequestFileSourceResponse, rather than an |
| // ErrorFileSource. Massage into place. |
| // TODO(devlin): Make RequestFileSourceResponse use ErrorFileSource. |
| /** @type {!chrome.developerPrivate.RequestFileSourceResponse} */ |
| const codeSectionProperties = { |
| beforeHighlight: source ? source.beforeHighlight : '', |
| highlight: source ? source.highlight : '', |
| afterHighlight: source ? source.afterHighlight : '', |
| title: '', |
| message: this.loadError.error, |
| }; |
| |
| this.$.code.code = codeSectionProperties; |
| }, |
| }); |
| |
| return {LoadError: LoadError, LoadErrorDelegate: LoadErrorDelegate}; |
| }); |