| Index: chrome/browser/resources/options2/import_data_overlay.js
|
| diff --git a/chrome/browser/resources/options2/import_data_overlay.js b/chrome/browser/resources/options2/import_data_overlay.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2671aad956c1fcecf6bbc700a5a09de22afe33f9
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/options2/import_data_overlay.js
|
| @@ -0,0 +1,222 @@
|
| +// Copyright (c) 2011 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('options', function() {
|
| + var OptionsPage = options.OptionsPage;
|
| +
|
| + /**
|
| + * ImportDataOverlay class
|
| + * Encapsulated handling of the 'Import Data' overlay page.
|
| + * @class
|
| + */
|
| + function ImportDataOverlay() {
|
| + OptionsPage.call(this,
|
| + 'importData',
|
| + templateData.importDataOverlayTabTitle,
|
| + 'import-data-overlay');
|
| + }
|
| +
|
| + cr.addSingletonGetter(ImportDataOverlay);
|
| +
|
| + ImportDataOverlay.prototype = {
|
| + // Inherit from OptionsPage.
|
| + __proto__: OptionsPage.prototype,
|
| +
|
| + /**
|
| + * Initialize the page.
|
| + */
|
| + initializePage: function() {
|
| + // Call base class implementation to start preference initialization.
|
| + OptionsPage.prototype.initializePage.call(this);
|
| +
|
| + var self = this;
|
| + var checkboxes =
|
| + document.querySelectorAll('#import-checkboxes input[type=checkbox]');
|
| + for (var i = 0; i < checkboxes.length; i++) {
|
| + checkboxes[i].onchange = function() {
|
| + self.validateCommitButton_();
|
| + };
|
| + }
|
| +
|
| + $('import-browsers').onchange = function() {
|
| + self.updateCheckboxes_();
|
| + self.validateCommitButton_();
|
| + };
|
| +
|
| + $('import-data-commit').onclick = function() {
|
| + chrome.send('importData', [
|
| + String($('import-browsers').selectedIndex),
|
| + String($('import-history').checked),
|
| + String($('import-favorites').checked),
|
| + String($('import-passwords').checked),
|
| + String($('import-search').checked)]);
|
| + };
|
| +
|
| + $('import-data-cancel').onclick = function() {
|
| + ImportDataOverlay.dismiss();
|
| + };
|
| +
|
| + $('import-data-show-bookmarks-bar').onchange = function() {
|
| + // Note: The callback 'toggleShowBookmarksBar' is handled within the
|
| + // browser options handler -- rather than the import data handler --
|
| + // as the implementation is shared by several clients.
|
| + chrome.send('toggleShowBookmarksBar');
|
| + }
|
| +
|
| + $('import-data-confirm').onclick = function() {
|
| + ImportDataOverlay.dismiss();
|
| + };
|
| +
|
| + // Form controls are disabled until the profile list has been loaded.
|
| + self.setControlsSensitive_(false);
|
| + },
|
| +
|
| + /**
|
| + * Set enabled and checked state of the commit button.
|
| + * @private
|
| + */
|
| + validateCommitButton_: function() {
|
| + var somethingToImport =
|
| + $('import-history').checked || $('import-favorites').checked ||
|
| + $('import-passwords').checked || $('import-search').checked;
|
| + $('import-data-commit').disabled = !somethingToImport;
|
| + },
|
| +
|
| + /**
|
| + * Sets the sensitivity of all the checkboxes and the commit button.
|
| + * @private
|
| + */
|
| + setControlsSensitive_: function(sensitive) {
|
| + var checkboxes =
|
| + document.querySelectorAll('#import-checkboxes input[type=checkbox]');
|
| + for (var i = 0; i < checkboxes.length; i++)
|
| + this.setUpCheckboxState_(checkboxes[i], sensitive);
|
| + $('import-data-commit').disabled = !sensitive;
|
| + },
|
| +
|
| + /**
|
| + * Set enabled and checked states a checkbox element.
|
| + * @param {Object} checkbox A checkbox element.
|
| + * @param {boolean} enabled The enabled state of the chekbox.
|
| + * @private
|
| + */
|
| + setUpCheckboxState_: function(checkbox, enabled) {
|
| + checkbox.setDisabled("noProfileData", !enabled);
|
| + },
|
| +
|
| + /**
|
| + * Update the enabled and checked states of all checkboxes.
|
| + * @private
|
| + */
|
| + updateCheckboxes_: function() {
|
| + var index = $('import-browsers').selectedIndex;
|
| + var browserProfile;
|
| + if (this.browserProfiles.length > index)
|
| + browserProfile = this.browserProfiles[index];
|
| + var importOptions = ['history', 'favorites', 'passwords', 'search'];
|
| + for (var i = 0; i < importOptions.length; i++) {
|
| + var checkbox = $('import-' + importOptions[i]);
|
| + var enable = browserProfile && browserProfile[importOptions[i]];
|
| + this.setUpCheckboxState_(checkbox, enable);
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Update the supported browsers popup with given entries.
|
| + * @param {array} browsers List of supported browsers name.
|
| + * @private
|
| + */
|
| + updateSupportedBrowsers_: function(browsers) {
|
| + this.browserProfiles = browsers;
|
| + var browserSelect = $('import-browsers');
|
| + browserSelect.remove(0); // Remove the 'Loading...' option.
|
| + browserSelect.textContent = '';
|
| + var browserCount = browsers.length;
|
| +
|
| + if (browserCount == 0) {
|
| + var option = new Option(templateData.noProfileFound, 0);
|
| + browserSelect.appendChild(option);
|
| +
|
| + this.setControlsSensitive_(false);
|
| + } else {
|
| + this.setControlsSensitive_(true);
|
| + for (var i = 0; i < browserCount; i++) {
|
| + var browser = browsers[i]
|
| + var option = new Option(browser['name'], browser['index']);
|
| + browserSelect.appendChild(option);
|
| + }
|
| +
|
| + this.updateCheckboxes_();
|
| + this.validateCommitButton_();
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Clear import prefs set when user checks/unchecks a checkbox so that each
|
| + * checkbox goes back to the default "checked" state (or alternatively, to
|
| + * the state set by a recommended policy).
|
| + * @private
|
| + */
|
| + clearUserPrefs_: function() {
|
| + var importPrefs = ['import_history',
|
| + 'import_bookmarks',
|
| + 'import_saved_passwords',
|
| + 'import_search_engine'];
|
| + for (var i = 0; i < importPrefs.length; i++)
|
| + Preferences.clearPref(importPrefs[i], undefined);
|
| + },
|
| + };
|
| +
|
| + ImportDataOverlay.clearUserPrefs = function() {
|
| + ImportDataOverlay.getInstance().clearUserPrefs_();
|
| + };
|
| +
|
| + /**
|
| + * Update the supported browsers popup with given entries.
|
| + * @param {array} list of supported browsers name.
|
| + */
|
| + ImportDataOverlay.updateSupportedBrowsers = function(browsers) {
|
| + ImportDataOverlay.getInstance().updateSupportedBrowsers_(browsers);
|
| + };
|
| +
|
| + /**
|
| + * Update the UI to reflect whether an import operation is in progress.
|
| + * @param {boolean} state True if an import operation is in progress.
|
| + */
|
| + ImportDataOverlay.setImportingState = function(state) {
|
| + var checkboxes =
|
| + document.querySelectorAll('#import-checkboxes input[type=checkbox]');
|
| + for (var i = 0; i < checkboxes.length; i++)
|
| + checkboxes[i].setDisabled("Importing", state);
|
| + if (!state)
|
| + ImportDataOverlay.getInstance().updateCheckboxes_();
|
| + $('import-browsers').disabled = state;
|
| + $('import-throbber').style.visibility = state ? "visible" : "hidden";
|
| + ImportDataOverlay.getInstance().validateCommitButton_();
|
| + };
|
| +
|
| + /**
|
| + * Remove the import overlay from display.
|
| + */
|
| + ImportDataOverlay.dismiss = function() {
|
| + ImportDataOverlay.clearUserPrefs();
|
| + OptionsPage.closeOverlay();
|
| + };
|
| +
|
| + /**
|
| + * Show a message confirming the success of the import operation.
|
| + */
|
| + ImportDataOverlay.confirmSuccess = function() {
|
| + var showBookmarksMessage = $('import-favorites').checked;
|
| + ImportDataOverlay.setImportingState(false);
|
| + $('import-data-configure').hidden = true;
|
| + $('import-data-success').hidden = false;
|
| + $('import-find-your-bookmarks').hidden = !showBookmarksMessage;
|
| + };
|
| +
|
| + // Export
|
| + return {
|
| + ImportDataOverlay: ImportDataOverlay
|
| + };
|
| +});
|
|
|