Index: chrome/browser/resources/options2/options.js |
diff --git a/chrome/browser/resources/options2/options.js b/chrome/browser/resources/options2/options.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5a744f3e98e7aa9aabd313d9570734034d991263 |
--- /dev/null |
+++ b/chrome/browser/resources/options2/options.js |
@@ -0,0 +1,247 @@ |
+// 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. |
+ |
+var AddLanguageOverlay = options.AddLanguageOverlay; |
+var AdvancedOptions = options.AdvancedOptions; |
+var AlertOverlay = options.AlertOverlay; |
+var AutofillEditAddressOverlay = options.AutofillEditAddressOverlay; |
+var AutofillEditCreditCardOverlay = options.AutofillEditCreditCardOverlay; |
+var AutofillOptions = options.AutofillOptions; |
+var BrowserOptions = options.BrowserOptions; |
+var ClearBrowserDataOverlay = options.ClearBrowserDataOverlay; |
+var ContentSettings = options.ContentSettings; |
+var ContentSettingsExceptionsArea = |
+ options.contentSettings.ContentSettingsExceptionsArea; |
+var CookiesView = options.CookiesView; |
+var ExtensionSettings = options.ExtensionSettings; |
+var FontSettings = options.FontSettings; |
+var HandlerOptions = options.HandlerOptions; |
+var ImportDataOverlay = options.ImportDataOverlay; |
+var IntentsView = options.IntentsView; |
+var InstantConfirmOverlay = options.InstantConfirmOverlay; |
+var LanguageOptions = options.LanguageOptions; |
+var OptionsPage = options.OptionsPage; |
+var PackExtensionOverlay = options.PackExtensionOverlay; |
+var PasswordManager = options.PasswordManager; |
+var PersonalOptions = options.PersonalOptions; |
+var Preferences = options.Preferences; |
+var ManageProfileOverlay = options.ManageProfileOverlay; |
+var ProxyOptions = options.ProxyOptions; |
+var SearchEngineManager = options.SearchEngineManager; |
+var SearchPage = options.SearchPage; |
+var SyncSetupOverlay = options.SyncSetupOverlay; |
+var VirtualKeyboardManager = options.VirtualKeyboardManager; |
+ |
+/** |
+ * DOMContentLoaded handler, sets up the page. |
+ */ |
+function load() { |
+ // Decorate the existing elements in the document. |
+ cr.ui.decorate('input[pref][type=checkbox]', options.PrefCheckbox); |
+ cr.ui.decorate('input[pref][type=number]', options.PrefNumber); |
+ cr.ui.decorate('input[pref][type=radio]', options.PrefRadio); |
+ cr.ui.decorate('input[pref][type=range]', options.PrefRange); |
+ cr.ui.decorate('select[pref]', options.PrefSelect); |
+ cr.ui.decorate('input[pref][type=text]', options.PrefTextField); |
+ cr.ui.decorate('input[pref][type=url]', options.PrefTextField); |
+ cr.ui.decorate('button[pref]', options.PrefButton); |
+ cr.ui.decorate('#content-settings-page input[type=radio]:not(.handler-radio)', |
+ options.ContentSettingsRadio); |
+ cr.ui.decorate('#content-settings-page input[type=radio].handler-radio', |
+ options.HandlersEnabledRadio); |
+ cr.ui.decorate('span.controlled-setting-indicator', |
+ options.ControlledSettingIndicator); |
+ |
+ var menuOffPattern = /(^\?|&)menu=off($|&)/; |
+ var menuDisabled = menuOffPattern.test(window.location.search); |
+ // document.documentElement.setAttribute('hide-menu', menuDisabled); |
+ // We can't use an attribute on the html element because of webkit bug |
+ // 12519. Instead, we add a class. |
+ if (menuDisabled) |
+ document.documentElement.classList.add('hide-menu'); |
+ |
+ localStrings = new LocalStrings(); |
+ |
+ OptionsPage.register(SearchPage.getInstance()); |
+ |
+ OptionsPage.register(BrowserOptions.getInstance()); |
+ OptionsPage.registerSubPage(SearchEngineManager.getInstance(), |
+ BrowserOptions.getInstance(), |
+ [$('defaultSearchManageEnginesButton')]); |
+ OptionsPage.register(PersonalOptions.getInstance()); |
+ OptionsPage.registerSubPage(AutofillOptions.getInstance(), |
+ PersonalOptions.getInstance(), |
+ [$('autofill-settings')]); |
+ OptionsPage.registerSubPage(PasswordManager.getInstance(), |
+ PersonalOptions.getInstance(), |
+ [$('manage-passwords')]); |
+ if (cr.isChromeOS) { |
+ OptionsPage.register(SystemOptions.getInstance()); |
+ OptionsPage.registerSubPage(AboutPage.getInstance(), |
+ SystemOptions.getInstance()); |
+ OptionsPage.registerSubPage(LanguageOptions.getInstance(), |
+ SystemOptions.getInstance(), |
+ [$('language-button')]); |
+ OptionsPage.registerSubPage( |
+ new OptionsPage('languageChewing', |
+ templateData.languageChewingPageTabTitle, |
+ 'languageChewingPage'), |
+ LanguageOptions.getInstance()); |
+ OptionsPage.registerSubPage( |
+ new OptionsPage('languageHangul', |
+ templateData.languageHangulPageTabTitle, |
+ 'languageHangulPage'), |
+ LanguageOptions.getInstance()); |
+ OptionsPage.registerSubPage( |
+ new OptionsPage('languageMozc', |
+ templateData.languageMozcPageTabTitle, |
+ 'languageMozcPage'), |
+ LanguageOptions.getInstance()); |
+ OptionsPage.registerSubPage( |
+ new OptionsPage('languagePinyin', |
+ templateData.languagePinyinPageTabTitle, |
+ 'languagePinyinPage'), |
+ LanguageOptions.getInstance()); |
+ // Only use the VirtualKeyboardManager if the keyboard DOM elements (which |
+ // it will assume exists) are present (i.e. if we were built with |
+ // USE_VIRTUAL_KEYBOARD). |
+ if ($('language-options-virtual-keyboard')) { |
+ OptionsPage.registerSubPage(VirtualKeyboardManager.getInstance(), |
+ LanguageOptions.getInstance()); |
+ } |
+ OptionsPage.register(InternetOptions.getInstance()); |
+ } |
+ OptionsPage.register(AdvancedOptions.getInstance()); |
+ OptionsPage.registerSubPage(ContentSettings.getInstance(), |
+ AdvancedOptions.getInstance(), |
+ [$('privacyContentSettingsButton')]); |
+ OptionsPage.registerSubPage(ContentSettingsExceptionsArea.getInstance(), |
+ ContentSettings.getInstance()); |
+ OptionsPage.registerSubPage(CookiesView.getInstance(), |
+ ContentSettings.getInstance(), |
+ [$('privacyContentSettingsButton'), |
+ $('show-cookies-button')]); |
+ // If HandlerOptions is null it means it got compiled out. |
+ if (HandlerOptions) { |
+ OptionsPage.registerSubPage(HandlerOptions.getInstance(), |
+ ContentSettings.getInstance(), |
+ [$('manage-handlers-button')]); |
+ } |
+ if (IntentsView && $('manage-intents-button')) { |
+ OptionsPage.registerSubPage(IntentsView.getInstance(), |
+ ContentSettings.getInstance(), |
+ [$('manage-intents-button')]); |
+ } |
+ OptionsPage.registerSubPage(FontSettings.getInstance(), |
+ AdvancedOptions.getInstance(), |
+ [$('fontSettingsCustomizeFontsButton')]); |
+ if (!cr.isChromeOS) { |
+ OptionsPage.registerSubPage(LanguageOptions.getInstance(), |
+ AdvancedOptions.getInstance(), |
+ [$('language-button')]); |
+ } |
+ if (!cr.isWindows && !cr.isMac) { |
+ OptionsPage.registerSubPage(CertificateManager.getInstance(), |
+ AdvancedOptions.getInstance(), |
+ [$('certificatesManageButton')]); |
+ OptionsPage.registerOverlay(CertificateRestoreOverlay.getInstance(), |
+ CertificateManager.getInstance()); |
+ OptionsPage.registerOverlay(CertificateBackupOverlay.getInstance(), |
+ CertificateManager.getInstance()); |
+ OptionsPage.registerOverlay(CertificateEditCaTrustOverlay.getInstance(), |
+ CertificateManager.getInstance()); |
+ OptionsPage.registerOverlay(CertificateImportErrorOverlay.getInstance(), |
+ CertificateManager.getInstance()); |
+ } |
+ OptionsPage.registerOverlay(AddLanguageOverlay.getInstance(), |
+ LanguageOptions.getInstance()); |
+ OptionsPage.registerOverlay(AlertOverlay.getInstance()); |
+ OptionsPage.registerOverlay(AutofillEditAddressOverlay.getInstance(), |
+ AutofillOptions.getInstance()); |
+ OptionsPage.registerOverlay(AutofillEditCreditCardOverlay.getInstance(), |
+ AutofillOptions.getInstance()); |
+ OptionsPage.registerOverlay(ClearBrowserDataOverlay.getInstance(), |
+ AdvancedOptions.getInstance(), |
+ [$('privacyClearDataButton')]); |
+ OptionsPage.registerOverlay(ImportDataOverlay.getInstance(), |
+ PersonalOptions.getInstance()); |
+ OptionsPage.registerOverlay(InstantConfirmOverlay.getInstance(), |
+ BrowserOptions.getInstance()); |
+ OptionsPage.registerOverlay(SyncSetupOverlay.getInstance(), |
+ PersonalOptions.getInstance()); |
+ OptionsPage.registerOverlay(ManageProfileOverlay.getInstance(), |
+ PersonalOptions.getInstance()); |
+ |
+ OptionsPage.register(ExtensionSettings.getInstance()); |
+ OptionsPage.registerOverlay(PackExtensionOverlay.getInstance(), |
+ ExtensionSettings.getInstance()); |
+ |
+ if (cr.isChromeOS) { |
+ OptionsPage.register(AccountsOptions.getInstance()); |
+ OptionsPage.registerSubPage(ProxyOptions.getInstance(), |
+ InternetOptions.getInstance()); |
+ OptionsPage.registerSubPage(ChangePictureOptions.getInstance(), |
+ PersonalOptions.getInstance(), |
+ [$('change-picture-button')]); |
+ OptionsPage.registerOverlay(DetailsInternetPage.getInstance(), |
+ InternetOptions.getInstance()); |
+ |
+ var languageModifierKeysOverlay = new OptionsPage( |
+ 'languageCustomizeModifierKeysOverlay', |
+ localStrings.getString('languageCustomizeModifierKeysOverlay'), |
+ 'languageCustomizeModifierKeysOverlay') |
+ $('languageCustomizeModifierKeysOverleyDismissButton').onclick = |
+ function() { |
+ OptionsPage.closeOverlay(); |
+ }; |
+ OptionsPage.registerOverlay(languageModifierKeysOverlay, |
+ SystemOptions.getInstance(), |
+ [$('modifier-keys-button')]); |
+ } |
+ |
+ Preferences.getInstance().initialize(); |
+ OptionsPage.initialize(); |
+ |
+ var path = document.location.pathname; |
+ |
+ if (path.length > 1) { |
+ // Skip starting slash and remove trailing slash (if any). |
+ var pageName = path.slice(1).replace(/\/$/, ''); |
+ // Proxy page is now per network and only reachable from internet details. |
+ if (pageName != 'proxy') { |
+ // Show page, but don't update history (there's already an entry for it). |
+ OptionsPage.showPageByName(pageName, false); |
+ } |
+ } else { |
+ OptionsPage.showDefaultPage(); |
+ } |
+ |
+ var subpagesNavTabs = document.querySelectorAll('.subpages-nav-tabs'); |
+ for(var i = 0; i < subpagesNavTabs.length; i++) { |
+ subpagesNavTabs[i].onclick = function(event) { |
+ OptionsPage.showTab(event.srcElement); |
+ } |
+ } |
+ |
+ // Allow platform specific CSS rules. |
+ cr.enablePlatformSpecificCSSRules(); |
+ |
+ if (navigator.plugins['Shockwave Flash']) |
+ document.documentElement.setAttribute('hasFlashPlugin', ''); |
+ |
+ // Clicking on the Settings title brings up the 'Basics' page. |
+ $('navbar-content-title').onclick = function() { |
+ OptionsPage.navigateToPage(BrowserOptions.getInstance().name); |
+ }; |
+} |
+ |
+document.addEventListener('DOMContentLoaded', load); |
+ |
+window.onpopstate = function(e) { |
+ options.OptionsPage.setState(e.state); |
+}; |
+ |
+window.onbeforeunload = function() { |
+ options.OptionsPage.willClose(); |
+}; |