Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8612)

Unified Diff: chrome/browser/resources/options2/import_data_overlay.js

Issue 8895023: Options2: Pull the trigger. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DIAF. Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
+ };
+});
« no previous file with comments | « chrome/browser/resources/options2/import_data_overlay.html ('k') | chrome/browser/resources/options2/inline_editable_list.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698