OLD | NEW |
(Empty) | |
| 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 |
| 5 var AddLanguageOverlay = options.AddLanguageOverlay; |
| 6 var AdvancedOptions = options.AdvancedOptions; |
| 7 var AlertOverlay = options.AlertOverlay; |
| 8 var AutofillEditAddressOverlay = options.AutofillEditAddressOverlay; |
| 9 var AutofillEditCreditCardOverlay = options.AutofillEditCreditCardOverlay; |
| 10 var AutofillOptions = options.AutofillOptions; |
| 11 var BrowserOptions = options.BrowserOptions; |
| 12 var ClearBrowserDataOverlay = options.ClearBrowserDataOverlay; |
| 13 var ContentSettings = options.ContentSettings; |
| 14 var ContentSettingsExceptionsArea = |
| 15 options.contentSettings.ContentSettingsExceptionsArea; |
| 16 var CookiesView = options.CookiesView; |
| 17 var ExtensionSettings = options.ExtensionSettings; |
| 18 var FontSettings = options.FontSettings; |
| 19 var HandlerOptions = options.HandlerOptions; |
| 20 var ImportDataOverlay = options.ImportDataOverlay; |
| 21 var IntentsView = options.IntentsView; |
| 22 var InstantConfirmOverlay = options.InstantConfirmOverlay; |
| 23 var LanguageOptions = options.LanguageOptions; |
| 24 var OptionsPage = options.OptionsPage; |
| 25 var PackExtensionOverlay = options.PackExtensionOverlay; |
| 26 var PasswordManager = options.PasswordManager; |
| 27 var PersonalOptions = options.PersonalOptions; |
| 28 var Preferences = options.Preferences; |
| 29 var ManageProfileOverlay = options.ManageProfileOverlay; |
| 30 var ProxyOptions = options.ProxyOptions; |
| 31 var SearchEngineManager = options.SearchEngineManager; |
| 32 var SearchPage = options.SearchPage; |
| 33 var SyncSetupOverlay = options.SyncSetupOverlay; |
| 34 var VirtualKeyboardManager = options.VirtualKeyboardManager; |
| 35 |
| 36 /** |
| 37 * DOMContentLoaded handler, sets up the page. |
| 38 */ |
| 39 function load() { |
| 40 // Decorate the existing elements in the document. |
| 41 cr.ui.decorate('input[pref][type=checkbox]', options.PrefCheckbox); |
| 42 cr.ui.decorate('input[pref][type=number]', options.PrefNumber); |
| 43 cr.ui.decorate('input[pref][type=radio]', options.PrefRadio); |
| 44 cr.ui.decorate('input[pref][type=range]', options.PrefRange); |
| 45 cr.ui.decorate('select[pref]', options.PrefSelect); |
| 46 cr.ui.decorate('input[pref][type=text]', options.PrefTextField); |
| 47 cr.ui.decorate('input[pref][type=url]', options.PrefTextField); |
| 48 cr.ui.decorate('button[pref]', options.PrefButton); |
| 49 cr.ui.decorate('#content-settings-page input[type=radio]:not(.handler-radio)', |
| 50 options.ContentSettingsRadio); |
| 51 cr.ui.decorate('#content-settings-page input[type=radio].handler-radio', |
| 52 options.HandlersEnabledRadio); |
| 53 cr.ui.decorate('span.controlled-setting-indicator', |
| 54 options.ControlledSettingIndicator); |
| 55 |
| 56 var menuOffPattern = /(^\?|&)menu=off($|&)/; |
| 57 var menuDisabled = menuOffPattern.test(window.location.search); |
| 58 // document.documentElement.setAttribute('hide-menu', menuDisabled); |
| 59 // We can't use an attribute on the html element because of webkit bug |
| 60 // 12519. Instead, we add a class. |
| 61 if (menuDisabled) |
| 62 document.documentElement.classList.add('hide-menu'); |
| 63 |
| 64 localStrings = new LocalStrings(); |
| 65 |
| 66 OptionsPage.register(SearchPage.getInstance()); |
| 67 |
| 68 OptionsPage.register(BrowserOptions.getInstance()); |
| 69 OptionsPage.registerSubPage(SearchEngineManager.getInstance(), |
| 70 BrowserOptions.getInstance(), |
| 71 [$('defaultSearchManageEnginesButton')]); |
| 72 OptionsPage.register(PersonalOptions.getInstance()); |
| 73 OptionsPage.registerSubPage(AutofillOptions.getInstance(), |
| 74 PersonalOptions.getInstance(), |
| 75 [$('autofill-settings')]); |
| 76 OptionsPage.registerSubPage(PasswordManager.getInstance(), |
| 77 PersonalOptions.getInstance(), |
| 78 [$('manage-passwords')]); |
| 79 if (cr.isChromeOS) { |
| 80 OptionsPage.register(SystemOptions.getInstance()); |
| 81 OptionsPage.registerSubPage(AboutPage.getInstance(), |
| 82 SystemOptions.getInstance()); |
| 83 OptionsPage.registerSubPage(LanguageOptions.getInstance(), |
| 84 SystemOptions.getInstance(), |
| 85 [$('language-button')]); |
| 86 OptionsPage.registerSubPage( |
| 87 new OptionsPage('languageChewing', |
| 88 templateData.languageChewingPageTabTitle, |
| 89 'languageChewingPage'), |
| 90 LanguageOptions.getInstance()); |
| 91 OptionsPage.registerSubPage( |
| 92 new OptionsPage('languageHangul', |
| 93 templateData.languageHangulPageTabTitle, |
| 94 'languageHangulPage'), |
| 95 LanguageOptions.getInstance()); |
| 96 OptionsPage.registerSubPage( |
| 97 new OptionsPage('languageMozc', |
| 98 templateData.languageMozcPageTabTitle, |
| 99 'languageMozcPage'), |
| 100 LanguageOptions.getInstance()); |
| 101 OptionsPage.registerSubPage( |
| 102 new OptionsPage('languagePinyin', |
| 103 templateData.languagePinyinPageTabTitle, |
| 104 'languagePinyinPage'), |
| 105 LanguageOptions.getInstance()); |
| 106 // Only use the VirtualKeyboardManager if the keyboard DOM elements (which |
| 107 // it will assume exists) are present (i.e. if we were built with |
| 108 // USE_VIRTUAL_KEYBOARD). |
| 109 if ($('language-options-virtual-keyboard')) { |
| 110 OptionsPage.registerSubPage(VirtualKeyboardManager.getInstance(), |
| 111 LanguageOptions.getInstance()); |
| 112 } |
| 113 OptionsPage.register(InternetOptions.getInstance()); |
| 114 } |
| 115 OptionsPage.register(AdvancedOptions.getInstance()); |
| 116 OptionsPage.registerSubPage(ContentSettings.getInstance(), |
| 117 AdvancedOptions.getInstance(), |
| 118 [$('privacyContentSettingsButton')]); |
| 119 OptionsPage.registerSubPage(ContentSettingsExceptionsArea.getInstance(), |
| 120 ContentSettings.getInstance()); |
| 121 OptionsPage.registerSubPage(CookiesView.getInstance(), |
| 122 ContentSettings.getInstance(), |
| 123 [$('privacyContentSettingsButton'), |
| 124 $('show-cookies-button')]); |
| 125 // If HandlerOptions is null it means it got compiled out. |
| 126 if (HandlerOptions) { |
| 127 OptionsPage.registerSubPage(HandlerOptions.getInstance(), |
| 128 ContentSettings.getInstance(), |
| 129 [$('manage-handlers-button')]); |
| 130 } |
| 131 if (IntentsView && $('manage-intents-button')) { |
| 132 OptionsPage.registerSubPage(IntentsView.getInstance(), |
| 133 ContentSettings.getInstance(), |
| 134 [$('manage-intents-button')]); |
| 135 } |
| 136 OptionsPage.registerSubPage(FontSettings.getInstance(), |
| 137 AdvancedOptions.getInstance(), |
| 138 [$('fontSettingsCustomizeFontsButton')]); |
| 139 if (!cr.isChromeOS) { |
| 140 OptionsPage.registerSubPage(LanguageOptions.getInstance(), |
| 141 AdvancedOptions.getInstance(), |
| 142 [$('language-button')]); |
| 143 } |
| 144 if (!cr.isWindows && !cr.isMac) { |
| 145 OptionsPage.registerSubPage(CertificateManager.getInstance(), |
| 146 AdvancedOptions.getInstance(), |
| 147 [$('certificatesManageButton')]); |
| 148 OptionsPage.registerOverlay(CertificateRestoreOverlay.getInstance(), |
| 149 CertificateManager.getInstance()); |
| 150 OptionsPage.registerOverlay(CertificateBackupOverlay.getInstance(), |
| 151 CertificateManager.getInstance()); |
| 152 OptionsPage.registerOverlay(CertificateEditCaTrustOverlay.getInstance(), |
| 153 CertificateManager.getInstance()); |
| 154 OptionsPage.registerOverlay(CertificateImportErrorOverlay.getInstance(), |
| 155 CertificateManager.getInstance()); |
| 156 } |
| 157 OptionsPage.registerOverlay(AddLanguageOverlay.getInstance(), |
| 158 LanguageOptions.getInstance()); |
| 159 OptionsPage.registerOverlay(AlertOverlay.getInstance()); |
| 160 OptionsPage.registerOverlay(AutofillEditAddressOverlay.getInstance(), |
| 161 AutofillOptions.getInstance()); |
| 162 OptionsPage.registerOverlay(AutofillEditCreditCardOverlay.getInstance(), |
| 163 AutofillOptions.getInstance()); |
| 164 OptionsPage.registerOverlay(ClearBrowserDataOverlay.getInstance(), |
| 165 AdvancedOptions.getInstance(), |
| 166 [$('privacyClearDataButton')]); |
| 167 OptionsPage.registerOverlay(ImportDataOverlay.getInstance(), |
| 168 PersonalOptions.getInstance()); |
| 169 OptionsPage.registerOverlay(InstantConfirmOverlay.getInstance(), |
| 170 BrowserOptions.getInstance()); |
| 171 OptionsPage.registerOverlay(SyncSetupOverlay.getInstance(), |
| 172 PersonalOptions.getInstance()); |
| 173 OptionsPage.registerOverlay(ManageProfileOverlay.getInstance(), |
| 174 PersonalOptions.getInstance()); |
| 175 |
| 176 OptionsPage.register(ExtensionSettings.getInstance()); |
| 177 OptionsPage.registerOverlay(PackExtensionOverlay.getInstance(), |
| 178 ExtensionSettings.getInstance()); |
| 179 |
| 180 if (cr.isChromeOS) { |
| 181 OptionsPage.register(AccountsOptions.getInstance()); |
| 182 OptionsPage.registerSubPage(ProxyOptions.getInstance(), |
| 183 InternetOptions.getInstance()); |
| 184 OptionsPage.registerSubPage(ChangePictureOptions.getInstance(), |
| 185 PersonalOptions.getInstance(), |
| 186 [$('change-picture-button')]); |
| 187 OptionsPage.registerOverlay(DetailsInternetPage.getInstance(), |
| 188 InternetOptions.getInstance()); |
| 189 |
| 190 var languageModifierKeysOverlay = new OptionsPage( |
| 191 'languageCustomizeModifierKeysOverlay', |
| 192 localStrings.getString('languageCustomizeModifierKeysOverlay'), |
| 193 'languageCustomizeModifierKeysOverlay') |
| 194 $('languageCustomizeModifierKeysOverleyDismissButton').onclick = |
| 195 function() { |
| 196 OptionsPage.closeOverlay(); |
| 197 }; |
| 198 OptionsPage.registerOverlay(languageModifierKeysOverlay, |
| 199 SystemOptions.getInstance(), |
| 200 [$('modifier-keys-button')]); |
| 201 } |
| 202 |
| 203 Preferences.getInstance().initialize(); |
| 204 OptionsPage.initialize(); |
| 205 |
| 206 var path = document.location.pathname; |
| 207 |
| 208 if (path.length > 1) { |
| 209 // Skip starting slash and remove trailing slash (if any). |
| 210 var pageName = path.slice(1).replace(/\/$/, ''); |
| 211 // Proxy page is now per network and only reachable from internet details. |
| 212 if (pageName != 'proxy') { |
| 213 // Show page, but don't update history (there's already an entry for it). |
| 214 OptionsPage.showPageByName(pageName, false); |
| 215 } |
| 216 } else { |
| 217 OptionsPage.showDefaultPage(); |
| 218 } |
| 219 |
| 220 var subpagesNavTabs = document.querySelectorAll('.subpages-nav-tabs'); |
| 221 for(var i = 0; i < subpagesNavTabs.length; i++) { |
| 222 subpagesNavTabs[i].onclick = function(event) { |
| 223 OptionsPage.showTab(event.srcElement); |
| 224 } |
| 225 } |
| 226 |
| 227 // Allow platform specific CSS rules. |
| 228 cr.enablePlatformSpecificCSSRules(); |
| 229 |
| 230 if (navigator.plugins['Shockwave Flash']) |
| 231 document.documentElement.setAttribute('hasFlashPlugin', ''); |
| 232 |
| 233 // Clicking on the Settings title brings up the 'Basics' page. |
| 234 $('navbar-content-title').onclick = function() { |
| 235 OptionsPage.navigateToPage(BrowserOptions.getInstance().name); |
| 236 }; |
| 237 } |
| 238 |
| 239 document.addEventListener('DOMContentLoaded', load); |
| 240 |
| 241 window.onpopstate = function(e) { |
| 242 options.OptionsPage.setState(e.state); |
| 243 }; |
| 244 |
| 245 window.onbeforeunload = function() { |
| 246 options.OptionsPage.willClose(); |
| 247 }; |
OLD | NEW |