diff options
author | csilv@chromium.org <csilv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-25 20:58:25 +0000 |
---|---|---|
committer | csilv@chromium.org <csilv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-25 20:58:25 +0000 |
commit | 227d5306e7c530f6256fc63475c22c2715d11def (patch) | |
tree | e30cc1a9642c059596cf58afe90d130bef053ea6 | |
parent | 2b66f6ab8d167f9ae689d019f820f4ecf320a149 (diff) | |
download | chromium_src-227d5306e7c530f6256fc63475c22c2715d11def.zip chromium_src-227d5306e7c530f6256fc63475c22c2715d11def.tar.gz chromium_src-227d5306e7c530f6256fc63475c22c2715d11def.tar.bz2 |
dom-ui options: Implement the 'Reset to Defaults' button. Also add a general AlertOverlay class.
BUG=53241
TEST=Exercice the 'Reset to Defaults' button in the dom-ui options window.
Review URL: http://codereview.chromium.org/3140027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57382 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/dom_ui/advanced_options_handler.cc | 18 | ||||
-rw-r--r-- | chrome/browser/dom_ui/advanced_options_handler.h | 4 | ||||
-rw-r--r-- | chrome/browser/resources/options.html | 5 | ||||
-rw-r--r-- | chrome/browser/resources/options/advanced_options.html | 3 | ||||
-rw-r--r-- | chrome/browser/resources/options/advanced_options.js | 6 | ||||
-rw-r--r-- | chrome/browser/resources/options/alert_overlay.css | 3 | ||||
-rw-r--r-- | chrome/browser/resources/options/alert_overlay.html | 15 | ||||
-rw-r--r-- | chrome/browser/resources/options/alert_overlay.js | 90 |
8 files changed, 143 insertions, 1 deletions
diff --git a/chrome/browser/dom_ui/advanced_options_handler.cc b/chrome/browser/dom_ui/advanced_options_handler.cc index 7a3aa1a..24568ca 100644 --- a/chrome/browser/dom_ui/advanced_options_handler.cc +++ b/chrome/browser/dom_ui/advanced_options_handler.cc @@ -12,9 +12,10 @@ #include "chrome/browser/dom_ui/options_managed_banner_handler.h" #include "chrome/browser/download/download_manager.h" #include "chrome/browser/metrics/user_metrics.h" +#include "chrome/browser/options_util.h" +#include "chrome/browser/options_window.h" #include "chrome/browser/pref_service.h" #include "chrome/browser/profile.h" -#include "chrome/browser/options_window.h" #include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/browser/tab_contents/tab_contents_view.h" #include "chrome/common/notification_service.h" @@ -123,6 +124,14 @@ void AdvancedOptionsHandler::GetLocalizedValues( l10n_util::GetStringUTF16(IDS_OPTIONS_ENABLE_LOGGING)); localized_strings->SetString("disableServices", l10n_util::GetStringUTF16(IDS_OPTIONS_DISABLE_SERVICES)); + localized_strings->SetString("optionsReset", + l10n_util::GetStringUTF16(IDS_OPTIONS_RESET)); + localized_strings->SetString("optionsResetMessage", + l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_MESSAGE)); + localized_strings->SetString("optionsResetOkLabel", + l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_OKLABEL)); + localized_strings->SetString("optionsResetCancelLabel", + l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_CANCELLABEL)); } void AdvancedOptionsHandler::Initialize() { @@ -165,6 +174,9 @@ void AdvancedOptionsHandler::RegisterMessages() { dom_ui_->RegisterMessageCallback("autoOpenFileTypesAction", NewCallback(this, &AdvancedOptionsHandler::HandleAutoOpenButton)); + dom_ui_->RegisterMessageCallback("resetToDefaults", + NewCallback(this, + &AdvancedOptionsHandler::HandleResetToDefaults)); #if !defined(OS_CHROMEOS) dom_ui_->RegisterMessageCallback("showManageSSLCertificates", NewCallback(this, @@ -232,6 +244,10 @@ void AdvancedOptionsHandler::HandleAutoOpenButton(const ListValue* args) { if (manager) manager->ResetAutoOpenFiles(); } +void AdvancedOptionsHandler::HandleResetToDefaults(const ListValue* args) { + OptionsUtil::ResetToDefaults(dom_ui_->GetProfile()); +} + #if defined(OS_WIN) void AdvancedOptionsHandler::HandleCheckRevocationCheckbox( const ListValue* args) { diff --git a/chrome/browser/dom_ui/advanced_options_handler.h b/chrome/browser/dom_ui/advanced_options_handler.h index e09ee2d..7e2fb76 100644 --- a/chrome/browser/dom_ui/advanced_options_handler.h +++ b/chrome/browser/dom_ui/advanced_options_handler.h @@ -46,6 +46,10 @@ class AdvancedOptionsHandler // remove all auto-open file-type settings. void HandleAutoOpenButton(const ListValue* args); + // Callback for the "resetToDefaults" message. This will ask the user if + // they want to reset all options to their default values. + void HandleResetToDefaults(const ListValue* args); + #if defined(OS_WIN) // Callback for the "Check SSL Revocation" checkbox. This is needed so we // can support manual handling on Windows. diff --git a/chrome/browser/resources/options.html b/chrome/browser/resources/options.html index 50bf629..bb0fed0 100644 --- a/chrome/browser/resources/options.html +++ b/chrome/browser/resources/options.html @@ -47,6 +47,7 @@ <script src="options/add_startup_page_overlay.js"></script> <script src="options/add_startup_page_recent_pages_list.js"></script> <script src="options/advanced_options.js"></script> +<script src="options/alert_overlay.js"></script> <script src="options/autofill_edit_address_overlay.js"></script> <script src="options/autofill_edit_creditcard_overlay.js"></script> <script src="options/autofill_options.js"></script> @@ -71,6 +72,7 @@ var AddStartupPageOverlay = options.AddStartupPageOverlay; var AdvancedOptions = options.AdvancedOptions; +var AlertOverlay = options.AlertOverlay; var AutoFillEditAddressOverlay = options.AutoFillEditAddressOverlay; var AutoFillEditCreditCardOverlay = options.AutoFillEditCreditCardOverlay; var AutoFillOptions = options.AutoFillOptions; @@ -109,6 +111,7 @@ function load() { OptionsPage.registerSubPage(PasswordsExceptions.getInstance()); OptionsPage.registerSubPage(SearchEngineManager.getInstance()); OptionsPage.registerOverlay(AddStartupPageOverlay.getInstance()); + OptionsPage.registerOverlay(AlertOverlay.getInstance()); OptionsPage.registerOverlay(AutoFillEditAddressOverlay.getInstance()); OptionsPage.registerOverlay(AutoFillEditCreditCardOverlay.getInstance()); OptionsPage.registerOverlay(ClearBrowserDataOverlay.getInstance()); @@ -191,6 +194,7 @@ window.onpopstate = function(e) { <link rel="stylesheet" href="dom_ui.css"> <link rel="stylesheet" href="options/options_page.css"> <link rel="stylesheet" href="options/add_startup_page_overlay.css"> +<link rel="stylesheet" href="options/alert_overlay.css"> <link rel="stylesheet" href="options/autofill_edit_address_overlay.css"> <link rel="stylesheet" href="options/autofill_edit_creditcard_overlay.css"> <link rel="stylesheet" href="options/autofill_options_page.css"> @@ -218,6 +222,7 @@ window.onpopstate = function(e) { </div> <div id="overlay" class="overlay hidden"> <include src="options/add_startup_page_overlay.html"> + <include src="options/alert_overlay.html"> <include src="options/autofill_edit_address_overlay.html"> <include src="options/autofill_edit_creditcard_overlay.html"> <include src="options/clear_browser_data_overlay.html"> diff --git a/chrome/browser/resources/options/advanced_options.html b/chrome/browser/resources/options/advanced_options.html index de1cbeb..2d87697 100644 --- a/chrome/browser/resources/options/advanced_options.html +++ b/chrome/browser/resources/options/advanced_options.html @@ -128,5 +128,8 @@ <if expr="not pp_ifdef('chromeos')"> </div> </section> + <div class="button-strip"> + <button id="optionsReset" i18n-content="optionsReset"></button> + </div> </if> </div> diff --git a/chrome/browser/resources/options/advanced_options.js b/chrome/browser/resources/options/advanced_options.js index d03e26e..fac525d 100644 --- a/chrome/browser/resources/options/advanced_options.js +++ b/chrome/browser/resources/options/advanced_options.js @@ -44,6 +44,12 @@ var OptionsPage = options.OptionsPage; OptionsPage.showOverlay('fontSettingsOverlay'); chrome.send('coreOptionsUserMetricsAction', ['Options_FontSettings']); }; + $('optionsReset').onclick = function(event) { + AlertOverlay.show(localStrings.getString('optionsResetMessage'), + localStrings.getString('optionsResetOkLabel'), + localStrings.getString('optionsResetCancelLabel'), + function() { chrome.send('resetToDefaults'); }); + } if (!cr.isChromeOS) { $('proxiesConfigureButton').onclick = function(event) { diff --git a/chrome/browser/resources/options/alert_overlay.css b/chrome/browser/resources/options/alert_overlay.css new file mode 100644 index 0000000..de5c236 --- /dev/null +++ b/chrome/browser/resources/options/alert_overlay.css @@ -0,0 +1,3 @@ +#alertOverlayMessage { + width: 400px; +} diff --git a/chrome/browser/resources/options/alert_overlay.html b/chrome/browser/resources/options/alert_overlay.html new file mode 100644 index 0000000..dd86d4a --- /dev/null +++ b/chrome/browser/resources/options/alert_overlay.html @@ -0,0 +1,15 @@ +<div class="page hidden" id="alertOverlay"> + <div id="alertOverlayMessage"></div> + <div class="button-strip"> + <if expr="os != 'darwin'"> + <button type="submit" id="alertOverlayOk" + onclick="AlertOverlay.handleOk();"></button> + </if> + <button type="reset" id="alertOverlayCancel" + onclick="AlertOverlay.handleCancel();"></button> + <if expr="os == 'darwin'"> + <button type="submit" id="alertOverlayOk" + onclick="AlertOverlay.handleOk();"></button> + </if> + </div> +</div> diff --git a/chrome/browser/resources/options/alert_overlay.js b/chrome/browser/resources/options/alert_overlay.js new file mode 100644 index 0000000..4fa3379 --- /dev/null +++ b/chrome/browser/resources/options/alert_overlay.js @@ -0,0 +1,90 @@ +// Copyright (c) 2010 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; + + /** + * AlertOverlay class + * Encapsulated handling of a generic alert. + * @class + */ + function AlertOverlay() { + OptionsPage.call(this, 'alertOverlay', '', 'alertOverlay'); + } + + cr.addSingletonGetter(AlertOverlay); + + AlertOverlay.prototype = { + // Inherit AlertOverlay from OptionsPage. + __proto__: OptionsPage.prototype, + + /** + * Initialize the page. + */ + initializePage: function() { + // Call base class implementation to start preference initialization. + OptionsPage.prototype.initializePage.call(this); + } + }; + + /** + * Show an alert overlay with the given message, button titles, and + * callbacks. + * @param {string} message The message to dispaly to the user. + * @param {string} okTitle The title of the OK button. Can be undefined. + * @param {string} cancelTitle The title of the cancel button. Can be + * undefined. + * @param {function} okCallback A function to be called when the user presses + * the ok button. The alert window will be closed automatically. Can be + * undefined. + * @param {function} cancelCallback A function to be called when the user + * presses the cancel button. The alert window will be closed + * automatically. Can be undefined. + */ + AlertOverlay.show = function(message, okTitle, cancelTitle, okCallback, + cancelCallback) { + $('alertOverlayMessage').textContent = message; + $('alertOverlayOk').textContent = + (okTitle != undefined ? okTitle + : LocalStrings.getString('ok')); + $('alertOverlayCancel').textContent = + (cancelTitle != undefined ? cancelTitle + : LocalStrings.getString('cancel')); + + AlertOverlay.getInstance().okCallback = okCallback; + AlertOverlay.getInstance().cancelCallback = cancelCallback; + + OptionsPage.showOverlay('alertOverlay'); + } + + /** + * Handle the 'ok' button. Clear the overlay and call the ok callback if + * available. + */ + AlertOverlay.handleOk = function() { + OptionsPage.clearOverlays(); + if (AlertOverlay.getInstance().okCallback != undefined) { + AlertOverlay.getInstance().okCallback.call(); + } + } + + /** + * Handle the 'cancel' button. Clear the overlay and call the cancel callback + * if available. + */ + AlertOverlay.handleCancel = function() { + OptionsPage.clearOverlays(); + if (AlertOverlay.getInstance().cancelCallback != undefined) { + AlertOverlay.getInstance().cancelCallback.call(); + } + } + + // Export + return { + AlertOverlay: AlertOverlay + }; + +}); |