options.js revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5var AddLanguageOverlay = options.AddLanguageOverlay; 6var AddStartupPageOverlay = options.AddStartupPageOverlay; 7var AdvancedOptions = options.AdvancedOptions; 8var AlertOverlay = options.AlertOverlay; 9var AutoFillEditAddressOverlay = options.AutoFillEditAddressOverlay; 10var AutoFillEditCreditCardOverlay = options.AutoFillEditCreditCardOverlay; 11var AutoFillOptions = options.AutoFillOptions; 12var BrowserOptions = options.BrowserOptions; 13var ClearBrowserDataOverlay = options.ClearBrowserDataOverlay; 14var ContentSettings = options.ContentSettings; 15var ContentSettingsExceptionsArea = 16 options.contentSettings.ContentSettingsExceptionsArea; 17var CookiesView = options.CookiesView; 18var FontSettings = options.FontSettings; 19var ImportDataOverlay = options.ImportDataOverlay; 20var InstantConfirmOverlay = options.InstantConfirmOverlay; 21var LanguageOptions = options.LanguageOptions; 22var OptionsPage = options.OptionsPage; 23var PasswordManager = options.PasswordManager; 24var PersonalOptions = options.PersonalOptions; 25var Preferences = options.Preferences; 26var ProxyOptions = options.ProxyOptions; 27var SearchEngineManager = options.SearchEngineManager; 28var SearchPage = options.SearchPage; 29 30/** 31 * DOMContentLoaded handler, sets up the page. 32 */ 33function load() { 34 // Decorate the existing elements in the document. 35 cr.ui.decorate('input[pref][type=checkbox]', options.PrefCheckbox); 36 cr.ui.decorate('input[pref][type=number]', options.PrefNumber); 37 cr.ui.decorate('input[pref][type=radio]', options.PrefRadio); 38 cr.ui.decorate('input[pref][type=range]', options.PrefRange); 39 cr.ui.decorate('select[pref]', options.PrefSelect); 40 cr.ui.decorate('input[pref][type=text]', options.PrefTextField); 41 cr.ui.decorate('input[pref][type=url]', options.PrefTextField); 42 cr.ui.decorate('#content-settings-page input[type=radio]', 43 options.ContentSettingsRadio); 44 45 var menuOffPattern = /(^\?|&)menu=off($|&)/; 46 var menuDisabled = menuOffPattern.test(window.location.search); 47 document.documentElement.setAttribute('hide-menu', menuDisabled); 48 49 localStrings = new LocalStrings(); 50 51 OptionsPage.register(SearchPage.getInstance()); 52 53 OptionsPage.register(BrowserOptions.getInstance()); 54 OptionsPage.registerSubPage(SearchEngineManager.getInstance(), 55 BrowserOptions.getInstance(), 56 [$('defaultSearchManageEnginesButton')]); 57 OptionsPage.register(PersonalOptions.getInstance()); 58 OptionsPage.registerSubPage(AutoFillOptions.getInstance(), 59 PersonalOptions.getInstance(), 60 [$('autofill-settings')]); 61 OptionsPage.registerSubPage(PasswordManager.getInstance(), 62 PersonalOptions.getInstance(), 63 [$('manage-passwords')]); 64 if (cr.isChromeOS) { 65 OptionsPage.register(SystemOptions.getInstance()); 66 OptionsPage.registerSubPage(AboutPage.getInstance(), 67 SystemOptions.getInstance()); 68 OptionsPage.registerSubPage(LanguageOptions.getInstance(), 69 SystemOptions.getInstance(), 70 [$('language-button')]); 71 OptionsPage.registerSubPage( 72 new OptionsPage('languageChewing', 73 templateData.languageChewingPageTabTitle, 74 'languageChewingPage'), 75 LanguageOptions.getInstance()); 76 OptionsPage.registerSubPage( 77 new OptionsPage('languageHangul', 78 templateData.languageHangulPageTabTitle, 79 'languageHangulPage'), 80 LanguageOptions.getInstance()); 81 OptionsPage.registerSubPage( 82 new OptionsPage('languageMozc', 83 templateData.languageMozcPageTabTitle, 84 'languageMozcPage'), 85 LanguageOptions.getInstance()); 86 OptionsPage.registerSubPage( 87 new OptionsPage('languagePinyin', 88 templateData.languagePinyinPageTabTitle, 89 'languagePinyinPage'), 90 LanguageOptions.getInstance()); 91 OptionsPage.register(InternetOptions.getInstance()); 92 } 93 OptionsPage.register(AdvancedOptions.getInstance()); 94 OptionsPage.registerSubPage(ContentSettings.getInstance(), 95 AdvancedOptions.getInstance(), 96 [$('privacyContentSettingsButton')]); 97 OptionsPage.registerSubPage(ContentSettingsExceptionsArea.getInstance(), 98 ContentSettings.getInstance()); 99 OptionsPage.registerSubPage(CookiesView.getInstance(), 100 ContentSettings.getInstance(), 101 [$('privacyContentSettingsButton'), 102 $('show-cookies-button')]); 103 OptionsPage.registerSubPage(FontSettings.getInstance(), 104 AdvancedOptions.getInstance(), 105 [$('fontSettingsCustomizeFontsButton')]); 106 if (!cr.isChromeOS) { 107 OptionsPage.registerSubPage(LanguageOptions.getInstance(), 108 AdvancedOptions.getInstance(), 109 [$('language-button')]); 110 } 111 if (!cr.isWindows && !cr.isMac) { 112 OptionsPage.registerSubPage(CertificateManager.getInstance(), 113 AdvancedOptions.getInstance(), 114 [$('show-cookies-button')]); 115 OptionsPage.registerOverlay(CertificateRestoreOverlay.getInstance(), 116 CertificateManager.getInstance()); 117 OptionsPage.registerOverlay(CertificateBackupOverlay.getInstance(), 118 CertificateManager.getInstance()); 119 OptionsPage.registerOverlay(CertificateEditCaTrustOverlay.getInstance(), 120 CertificateManager.getInstance()); 121 OptionsPage.registerOverlay(CertificateImportErrorOverlay.getInstance(), 122 CertificateManager.getInstance()); 123 } 124 OptionsPage.registerOverlay(AddLanguageOverlay.getInstance(), 125 LanguageOptions.getInstance()); 126 OptionsPage.registerOverlay(AddStartupPageOverlay.getInstance(), 127 BrowserOptions.getInstance()); 128 OptionsPage.registerOverlay(AlertOverlay.getInstance()); 129 OptionsPage.registerOverlay(AutoFillEditAddressOverlay.getInstance(), 130 AutoFillOptions.getInstance()); 131 OptionsPage.registerOverlay(AutoFillEditCreditCardOverlay.getInstance(), 132 AutoFillOptions.getInstance()); 133 OptionsPage.registerOverlay(ClearBrowserDataOverlay.getInstance(), 134 AdvancedOptions.getInstance(), 135 [$('privacyClearDataButton')]); 136 OptionsPage.registerOverlay(ImportDataOverlay.getInstance(), 137 PersonalOptions.getInstance()); 138 OptionsPage.registerOverlay(InstantConfirmOverlay.getInstance(), 139 BrowserOptions.getInstance()); 140 141 if (cr.isChromeOS) { 142 OptionsPage.register(AccountsOptions.getInstance()); 143 OptionsPage.registerSubPage(ProxyOptions.getInstance(), 144 AdvancedOptions.getInstance(), 145 [$('proxiesConfigureButton')]); 146 OptionsPage.registerOverlay(new OptionsPage('detailsInternetPage', 147 'detailsInternetPage', 148 'detailsInternetPage'), 149 InternetOptions.getInstance()); 150 151 var languageModifierKeysOverlay = new OptionsPage( 152 'languageCustomizeModifierKeysOverlay', 153 localStrings.getString('languageCustomizeModifierKeysOverlay'), 154 'languageCustomizeModifierKeysOverlay') 155 OptionsPage.registerOverlay(languageModifierKeysOverlay, 156 SystemOptions.getInstance(), 157 [$('modifier-keys-button')]); 158 } 159 160 Preferences.getInstance().initialize(); 161 OptionsPage.initialize(); 162 163 var path = document.location.pathname; 164 165 if (path.length > 1) { 166 var pageName = path.slice(1); 167 // Show page, but don't update history (there's already an entry for it). 168 OptionsPage.showPageByName(pageName, false); 169 } else { 170 OptionsPage.showDefaultPage(); 171 } 172 173 var subpagesNavTabs = document.querySelectorAll('.subpages-nav-tabs'); 174 for(var i = 0; i < subpagesNavTabs.length; i++) { 175 subpagesNavTabs[i].onclick = function(event) { 176 OptionsPage.showTab(event.srcElement); 177 } 178 } 179 180 // Allow platform specific CSS rules. 181 if (cr.isMac) 182 document.documentElement.setAttribute('os', 'mac'); 183 if (cr.isWindows) 184 document.documentElement.setAttribute('os', 'windows'); 185 if (cr.isChromeOS) 186 document.documentElement.setAttribute('os', 'chromeos'); 187 if (cr.isLinux) { 188 document.documentElement.setAttribute('os', 'linux'); 189 document.documentElement.setAttribute('toolkit', 'gtk'); 190 } 191 if (cr.isViews) 192 document.documentElement.setAttribute('toolkit', 'views'); 193 194 // Clicking on the Settings title brings up the 'Basics' page. 195 $('settings-title').onclick = function() { 196 OptionsPage.navigateToPage(BrowserOptions.getInstance().name); 197 }; 198} 199 200document.addEventListener('DOMContentLoaded', load); 201 202window.onpopstate = function(e) { 203 options.OptionsPage.setState(e.state); 204}; 205