blob: 6b2f3616012b7135ad8ee4a535de41a6f68283f5 [file] [log] [blame]
// 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);
cr.ui.overlay.globalInitialization();
overlay.addEventListener('cancelOverlay', hideOverlay.bind(this));
$('pack-item-dismiss').addEventListener('click',
hideOverlay.bind(this));
$('pack-item-commit').addEventListener('click',
this.handleCommit_.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 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,
};
});