summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcsilv@chromium.org <csilv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-25 20:58:25 +0000
committercsilv@chromium.org <csilv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-25 20:58:25 +0000
commit227d5306e7c530f6256fc63475c22c2715d11def (patch)
treee30cc1a9642c059596cf58afe90d130bef053ea6
parent2b66f6ab8d167f9ae689d019f820f4ecf320a149 (diff)
downloadchromium_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.cc18
-rw-r--r--chrome/browser/dom_ui/advanced_options_handler.h4
-rw-r--r--chrome/browser/resources/options.html5
-rw-r--r--chrome/browser/resources/options/advanced_options.html3
-rw-r--r--chrome/browser/resources/options/advanced_options.js6
-rw-r--r--chrome/browser/resources/options/alert_overlay.css3
-rw-r--r--chrome/browser/resources/options/alert_overlay.html15
-rw-r--r--chrome/browser/resources/options/alert_overlay.js90
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
+ };
+
+});