blob: 5ff959eaed03d15152227f16aeeb1d0d5a8132b0 [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';
/**
* AppsDevTool constructor.
* @constructor
* @extends {HTMLDivElement}
*/
function AppsDevTool() {}
AppsDevTool.prototype = {
__proto__: HTMLDivElement.prototype,
/**
* Perform initial setup.
*/
initialize: function() {
cr.ui.decorate('tabbox', cr.ui.TabBox);
// Set up the three buttons (load unpacked, pack and update).
document.querySelector('#apps-tab .load-unpacked').
addEventListener('click', this.handleLoadUnpackedItem_.bind(this));
document.querySelector('#extensions-tab .load-unpacked').
addEventListener('click', this.handleLoadUnpackedItem_.bind(this));
document.querySelector('#apps-tab .update-items-now').
addEventListener('click', this.handleUpdateItemNow_.bind(this,
document.querySelector('#apps-tab .update-items-progress')));
document.querySelector('#extensions-tab .update-items-now').
addEventListener('click', this.handleUpdateItemNow_.bind(this,
document.querySelector('#extensions-tab .update-items-progress')));
var packItemOverlay =
apps_dev_tool.PackItemOverlay.getInstance().initializePage();
preventDefaultOnPoundLinkClicks(); // From webui/js/util.js
},
/**
* Handles the Load Unpacked Extension button.
* @param {!Event} e Click event.
* @private
*/
handleLoadUnpackedItem_: function(e) {
chrome.developerPrivate.loadUnpacked();
},
/**
* Handles the Update Extension Now Button.
* @param {!Element} tabNode Element containing the progress label.
* @param {!Event} e Click event.
* @private
*/
handleUpdateItemNow_: function(progressLabelNode, e) {
progressLabelNode.classList.add('updating');
chrome.developerPrivate.autoUpdate(function(response) {
// autoUpdate() will run too fast. We wait for 2 sec
// before hiding the label so that the user can see it.
setTimeout(function() {
progressLabelNode.classList.remove('updating');
}, 2000);
});
},
};
/**
* Returns the current overlay or null if one does not exist.
* @return {Element} The overlay element.
*/
AppsDevTool.getCurrentOverlay = function() {
return document.querySelector('#overlay .page.showing');
};
/**
* Shows |el|. If there's another overlay showing, hide it.
* @param {HTMLElement} el The overlay page to show. If falsey, all overlays
* are hidden.
*/
AppsDevTool.showOverlay = function(el) {
var currentlyShowingOverlay = AppsDevTool.getCurrentOverlay();
if (currentlyShowingOverlay)
currentlyShowingOverlay.classList.remove('showing');
if (el)
el.classList.add('showing');
overlay.hidden = !el;
uber.invokeMethodOnParent(el ? 'beginInterceptingEvents' :
'stopInterceptingEvents');
};
/**
* Loads translated strings.
*/
AppsDevTool.initStrings = function() {
chrome.developerPrivate.getStrings(function(strings) {
loadTimeData.data = strings;
i18nTemplate.process(document, loadTimeData);
// Check managed profiles.
chrome.developerPrivate.isProfileManaged(function(isManaged) {
if (!isManaged)
return;
alertOverlay.setValues(
loadTimeData.getString('managedProfileDialogTitle'),
loadTimeData.getString('managedProfileDialogDescription'),
loadTimeData.getString('managedProfileDialogCloseButton'),
null,
function() {
AppsDevTool.showOverlay(null);
window.close();
},
null);
AppsDevTool.showOverlay($('alertOverlay'));
});
});
};
return {
AppsDevTool: AppsDevTool,
};
});