Index: chrome/browser/resources/apps_debugger/js/pack_item_overlay.js |
diff --git a/chrome/browser/resources/apps_debugger/js/pack_item_overlay.js b/chrome/browser/resources/apps_debugger/js/pack_item_overlay.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f4ee5a21e3a1d4b5c4b907f28827976cc84da64c |
--- /dev/null |
+++ b/chrome/browser/resources/apps_debugger/js/pack_item_overlay.js |
@@ -0,0 +1,152 @@ |
+// Copyright (c) 2012 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('apps_dev_tool', function() { |
+ 'use strict'; |
+ |
+/** const*/ var AppsDevTool = apps_dev_tool.AppsDevTool; |
+ |
+ /** |
+ * Hides the present overlay showing. |
+ */ |
+ var hideOverlay = function() { |
+ AppsDevTool.showOverlay(null); |
+ }; |
+ |
+ /** |
+ * PackItemOverlay class |
+ * Encapsulated handling of the 'Pack Item' overlay page. |
+ * @constructor |
+ */ |
+ function PackItemOverlay() {} |
+ |
+ cr.addSingletonGetter(PackItemOverlay); |
+ |
+ PackItemOverlay.prototype = { |
+ initializePage: function() { |
+ var overlay = $('overlay'); |
+ cr.ui.overlay.setupOverlay(overlay); |
+ overlay.addEventListener('cancelOverlay', hideOverlay.bind(this)); |
+ |
+ $('pack-item-dismiss').addEventListener('click', |
+ hideOverlay.bind(this)); |
+ $('pack-item-commit').addEventListener('click', |
+ this.handleCommit_.bind(this)); |
+ $('browse-item-dir').addEventListener('click', |
+ this.handleBrowseItemDir_.bind(this)); |
+ $('browse-private-key').addEventListener('click', |
+ this.handleBrowsePrivateKey_.bind(this)); |
+ }, |
+ |
+ /** |
+ * Handles a click on the pack button. |
+ * @param {Event} e The click event. |
+ * @private |
+ */ |
+ handleCommit_: function(e) { |
+ var itemPath = $('item-root-dir').value; |
+ var privateKeyPath = $('item-private-key').value; |
+ chrome.developerPrivate.packDirectory( |
+ itemPath, privateKeyPath, 0, this.onCommit_); |
+ }, |
+ |
+ /** |
+ * Handles a commit on the pack request. |
+ * @param {string} response Message returned by packing api. |
+ * @private |
+ */ |
+ onCommit_: function(response) { |
+ if (response.status == 'SUCCESS') |
+ PackItemOverlay.showSuccessMessage(response); |
+ else if (response.status == 'ERROR') |
+ PackItemOverlay.showError(response); |
+ else |
+ PackItemOverlay.showWarningMessage(response); |
+ }, |
+ |
+ /** |
+ * Handles the showing of the item directory browser. |
+ * @param {Event} e Change event. |
+ * @private |
+ */ |
+ handleBrowseItemDir_: function(e) { |
+ chrome.developerPrivate.choosePath('FOLDER', 'LOAD', function(filePath) { |
+ $('item-root-dir').value = filePath; |
+ }); |
+ }, |
+ |
+ /** |
+ * Handles the showing of the item private key file. |
+ * @param {Event} e Change event. |
+ * @private |
+ */ |
+ handleBrowsePrivateKey_: function(e) { |
+ chrome.developerPrivate.choosePath('FILE', 'PEM', function(filePath) { |
+ $('item-private-key').value = filePath; |
+ }); |
+ }, |
+ }; |
+ |
+ /** |
+ * Wrap up the pack process by showing the success |message| and closing |
+ * the overlay. |
+ * @param {string} message The message to show to the user. |
+ */ |
+ PackItemOverlay.showSuccessMessage = function(response) { |
+ alertOverlay.setValues( |
+ loadTimeData.getString('packExtensionOverlay'), |
+ response.message, |
+ loadTimeData.getString('ok'), |
+ '', |
+ hideOverlay, |
+ null); |
+ AppsDevTool.showOverlay($('alertOverlay')); |
+ }; |
+ |
+ /** |
+ * An alert overlay showing |message|, and upon acknowledgement, close |
+ * the alert overlay and return to showing the PackItemOverlay. |
+ * @param {string} message The message to show to the user. |
+ */ |
+ PackItemOverlay.showError = function(response) { |
+ alertOverlay.setValues( |
+ loadTimeData.getString('packExtensionErrorTitle'), |
+ response.message /* message returned by the packiing api */, |
+ loadTimeData.getString('ok'), |
+ '', |
+ function() { |
+ AppsDevTool.showOverlay($('packItemOverlay')); |
+ }, |
+ null); |
+ AppsDevTool.showOverlay($('alertOverlay')); |
+ }; |
+ |
+ /** |
+ * An alert overlay showing |message| as warning and proceeding after the |
+ * user confirms the action. |
+ * @param {response} response returned by the packItem API. |
+ */ |
+ PackItemOverlay.showWarningMessage = function(response) { |
+ alertOverlay.setValues( |
+ loadTimeData.getString('packExtensionWarningTitle'), |
+ response.message /* message returned by the packing api */, |
+ loadTimeData.getString('packExtensionProceedAnyway'), |
+ loadTimeData.getString('cancel'), |
+ function() { |
+ chrome.developerPrivate.packDirectory( |
+ response.item_path, |
+ response.pem_path, |
+ response.override_flags, |
+ PackItemOverlay.showSuccessMessage); |
+ hideOverlay(); |
+ }, |
+ hideOverlay); |
+ AppsDevTool.showOverlay($('alertOverlay')); |
+ }; |
+ |
+ // Export |
+ return { |
+ PackItemOverlay: PackItemOverlay, |
+ }; |
+}); |