1 // Copyright (c) 2012 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 AlertOverlay = options.AlertOverlay; 7 var AutofillEditAddressOverlay = options.AutofillEditAddressOverlay; 8 var AutofillEditCreditCardOverlay = options.AutofillEditCreditCardOverlay; 9 var AutofillOptions = options.AutofillOptions; 10 var AutomaticSettingsResetBanner = options.AutomaticSettingsResetBanner; 11 var BrowserOptions = options.BrowserOptions; 12 var ClearBrowserDataOverlay = options.ClearBrowserDataOverlay; 13 var ConfirmDialog = options.ConfirmDialog; 14 var ContentSettingsExceptionsArea = 15 options.contentSettings.ContentSettingsExceptionsArea; 16 var ContentSettings = options.ContentSettings; 17 var CookiesView = options.CookiesView; 18 var CreateProfileOverlay = options.CreateProfileOverlay; 19 var EditDictionaryOverlay = cr.IsMac ? null : options.EditDictionaryOverlay; 20 var FactoryResetOverlay = options.FactoryResetOverlay; 21 <if expr="enable_google_now"> 22 var GeolocationOptions = options.GeolocationOptions; 23 </if> 24 var FontSettings = options.FontSettings; 25 var HandlerOptions = options.HandlerOptions; 26 var HomePageOverlay = options.HomePageOverlay; 27 var ImportDataOverlay = options.ImportDataOverlay; 28 var LanguageOptions = options.LanguageOptions; 29 var ManageProfileOverlay = options.ManageProfileOverlay; 30 var ManagedUserCreateConfirmOverlay = options.ManagedUserCreateConfirmOverlay; 31 var ManagedUserImportOverlay = options.ManagedUserImportOverlay; 32 var ManagedUserLearnMoreOverlay = options.ManagedUserLearnMoreOverlay; 33 var OptionsFocusManager = options.OptionsFocusManager; 34 var OptionsPage = options.OptionsPage; 35 var PasswordManager = options.PasswordManager; 36 var Preferences = options.Preferences; 37 var PreferredNetworks = options.PreferredNetworks; 38 var ResetProfileSettingsBanner = options.ResetProfileSettingsBanner; 39 var ResetProfileSettingsOverlay = options.ResetProfileSettingsOverlay; 40 var SearchEngineManager = options.SearchEngineManager; 41 var SearchPage = options.SearchPage; 42 var StartupOverlay = options.StartupOverlay; 43 var SyncSetupOverlay = options.SyncSetupOverlay; 44 var ThirdPartyImeConfirmOverlay = options.ThirdPartyImeConfirmOverlay; 45 46 /** 47 * DOMContentLoaded handler, sets up the page. 48 */ 49 function load() { 50 // Decorate the existing elements in the document. 51 cr.ui.decorate('input[pref][type=checkbox]', options.PrefCheckbox); 52 cr.ui.decorate('input[pref][type=number]', options.PrefNumber); 53 cr.ui.decorate('input[pref][type=radio]', options.PrefRadio); 54 cr.ui.decorate('input[pref][type=range]', options.PrefRange); 55 cr.ui.decorate('select[pref]', options.PrefSelect); 56 cr.ui.decorate('input[pref][type=text]', options.PrefTextField); 57 cr.ui.decorate('input[pref][type=url]', options.PrefTextField); 58 cr.ui.decorate('button[pref]', options.PrefButton); 59 cr.ui.decorate('#content-settings-page input[type=radio]:not(.handler-radio)', 60 options.ContentSettingsRadio); 61 cr.ui.decorate('#content-settings-page input[type=radio].handler-radio', 62 options.HandlersEnabledRadio); 63 cr.ui.decorate('span.controlled-setting-indicator', 64 options.ControlledSettingIndicator); 65 66 // Top level pages. 67 OptionsPage.register(SearchPage.getInstance()); 68 OptionsPage.register(BrowserOptions.getInstance()); 69 70 // Overlays. 71 OptionsPage.registerOverlay(AddLanguageOverlay.getInstance(), 72 LanguageOptions.getInstance()); 73 OptionsPage.registerOverlay(AlertOverlay.getInstance()); 74 OptionsPage.registerOverlay(AutofillEditAddressOverlay.getInstance(), 75 AutofillOptions.getInstance()); 76 OptionsPage.registerOverlay(AutofillEditCreditCardOverlay.getInstance(), 77 AutofillOptions.getInstance()); 78 OptionsPage.registerOverlay(AutofillOptions.getInstance(), 79 BrowserOptions.getInstance(), 80 [$('autofill-settings')]); 81 OptionsPage.registerOverlay(ClearBrowserDataOverlay.getInstance(), 82 BrowserOptions.getInstance(), 83 [$('privacyClearDataButton')]); 84 OptionsPage.registerOverlay( 85 new ConfirmDialog( 86 'doNotTrackConfirm', 87 loadTimeData.getString('doNotTrackConfirmOverlayTabTitle'), 88 'do-not-track-confirm-overlay', 89 $('do-not-track-confirm-ok'), 90 $('do-not-track-confirm-cancel'), 91 $('do-not-track-enabled').pref, 92 $('do-not-track-enabled').metric), 93 BrowserOptions.getInstance()); 94 // 'spelling-enabled-control' element is only present on Chrome branded 95 // builds. 96 if ($('spelling-enabled-control')) { 97 OptionsPage.registerOverlay( 98 new ConfirmDialog( 99 'spellingConfirm', 100 loadTimeData.getString('spellingConfirmOverlayTabTitle'), 101 'spelling-confirm-overlay', 102 $('spelling-confirm-ok'), 103 $('spelling-confirm-cancel'), 104 $('spelling-enabled-control').pref, 105 $('spelling-enabled-control').metric), 106 BrowserOptions.getInstance()); 107 } 108 OptionsPage.registerOverlay( 109 new ConfirmDialog( 110 'hotwordConfirm', 111 loadTimeData.getString('hotwordConfirmOverlayTabTitle'), 112 'hotword-confirm-overlay', 113 $('hotword-confirm-ok'), 114 $('hotword-confirm-cancel'), 115 $('hotword-search-enable').pref, 116 $('hotword-search-enable').metric), 117 BrowserOptions.getInstance()); 118 OptionsPage.registerOverlay(ContentSettings.getInstance(), 119 BrowserOptions.getInstance(), 120 [$('privacyContentSettingsButton')]); 121 OptionsPage.registerOverlay(ContentSettingsExceptionsArea.getInstance(), 122 ContentSettings.getInstance()); 123 OptionsPage.registerOverlay(CookiesView.getInstance(), 124 ContentSettings.getInstance(), 125 [$('privacyContentSettingsButton'), 126 $('show-cookies-button')]); 127 OptionsPage.registerOverlay(CreateProfileOverlay.getInstance(), 128 BrowserOptions.getInstance()); 129 if (!cr.isMac) { 130 OptionsPage.registerOverlay(EditDictionaryOverlay.getInstance(), 131 LanguageOptions.getInstance(), 132 [$('edit-dictionary-button')]); 133 } 134 OptionsPage.registerOverlay(FontSettings.getInstance(), 135 BrowserOptions.getInstance(), 136 [$('fontSettingsCustomizeFontsButton')]); 137 if (HandlerOptions && $('manage-handlers-button')) { 138 OptionsPage.registerOverlay(HandlerOptions.getInstance(), 139 ContentSettings.getInstance(), 140 [$('manage-handlers-button')]); 141 } 142 OptionsPage.registerOverlay(HomePageOverlay.getInstance(), 143 BrowserOptions.getInstance(), 144 [$('change-home-page')]); 145 OptionsPage.registerOverlay(ImportDataOverlay.getInstance(), 146 BrowserOptions.getInstance()); 147 OptionsPage.registerOverlay(LanguageOptions.getInstance(), 148 BrowserOptions.getInstance(), 149 [$('language-button'), 150 $('manage-languages')]); 151 OptionsPage.registerOverlay(ManageProfileOverlay.getInstance(), 152 BrowserOptions.getInstance()); 153 if (!cr.isChromeOS) { 154 OptionsPage.registerOverlay(ManagedUserCreateConfirmOverlay.getInstance(), 155 BrowserOptions.getInstance()); 156 OptionsPage.registerOverlay(ManagedUserImportOverlay.getInstance(), 157 CreateProfileOverlay.getInstance()); 158 OptionsPage.registerOverlay(ManagedUserLearnMoreOverlay.getInstance(), 159 CreateProfileOverlay.getInstance()); 160 } 161 OptionsPage.registerOverlay(PasswordManager.getInstance(), 162 BrowserOptions.getInstance(), 163 [$('manage-passwords')]); 164 OptionsPage.registerOverlay(ResetProfileSettingsOverlay.getInstance(), 165 BrowserOptions.getInstance(), 166 [$('reset-profile-settings')]); 167 OptionsPage.registerOverlay(SearchEngineManager.getInstance(), 168 BrowserOptions.getInstance(), 169 [$('manage-default-search-engines')]); 170 OptionsPage.registerOverlay(StartupOverlay.getInstance(), 171 BrowserOptions.getInstance()); 172 OptionsPage.registerOverlay(SyncSetupOverlay.getInstance(), 173 BrowserOptions.getInstance(), 174 [$('customize-sync')]); 175 if (cr.isChromeOS) { 176 OptionsPage.registerOverlay(AccountsOptions.getInstance(), 177 BrowserOptions.getInstance(), 178 [$('manage-accounts-button')]); 179 OptionsPage.registerOverlay(BluetoothOptions.getInstance(), 180 BrowserOptions.getInstance(), 181 [$('bluetooth-add-device')]); 182 OptionsPage.registerOverlay(BluetoothPairing.getInstance(), 183 BrowserOptions.getInstance()); 184 OptionsPage.registerOverlay(FactoryResetOverlay.getInstance(), 185 BrowserOptions.getInstance(), 186 [$('factory-reset-restart')]); 187 OptionsPage.registerOverlay(ChangePictureOptions.getInstance(), 188 BrowserOptions.getInstance(), 189 [$('account-picture')]); 190 OptionsPage.registerOverlay(DetailsInternetPage.getInstance(), 191 BrowserOptions.getInstance()); 192 OptionsPage.registerOverlay(DisplayOptions.getInstance(), 193 BrowserOptions.getInstance(), 194 [$('display-options')]); 195 OptionsPage.registerOverlay(DisplayOverscan.getInstance(), 196 DisplayOptions.getInstance()); 197 OptionsPage.registerOverlay(KeyboardOverlay.getInstance(), 198 BrowserOptions.getInstance(), 199 [$('keyboard-settings-button')]); 200 OptionsPage.registerOverlay(PointerOverlay.getInstance(), 201 BrowserOptions.getInstance(), 202 [$('pointer-settings-button')]); 203 OptionsPage.registerOverlay(PreferredNetworks.getInstance(), 204 BrowserOptions.getInstance()); 205 OptionsPage.registerOverlay(ThirdPartyImeConfirmOverlay.getInstance(), 206 LanguageOptions.getInstance()); 207 } 208 209 if (!cr.isWindows && !cr.isMac) { 210 OptionsPage.registerOverlay(CertificateBackupOverlay.getInstance(), 211 CertificateManager.getInstance()); 212 OptionsPage.registerOverlay(CertificateEditCaTrustOverlay.getInstance(), 213 CertificateManager.getInstance()); 214 OptionsPage.registerOverlay(CertificateImportErrorOverlay.getInstance(), 215 CertificateManager.getInstance()); 216 OptionsPage.registerOverlay(CertificateManager.getInstance(), 217 BrowserOptions.getInstance(), 218 [$('certificatesManageButton')]); 219 OptionsPage.registerOverlay(CertificateRestoreOverlay.getInstance(), 220 CertificateManager.getInstance()); 221 } 222 223 cr.ui.FocusManager.disableMouseFocusOnButtons(); 224 OptionsFocusManager.getInstance().initialize(); 225 Preferences.getInstance().initialize(); 226 ResetProfileSettingsBanner.getInstance().initialize(); 227 AutomaticSettingsResetBanner.getInstance().initialize(); 228 OptionsPage.initialize(); 229 230 var pageName = OptionsPage.getPageNameFromPath(); 231 // Still update history so that chrome://settings/nonexistant redirects 232 // appropriately to chrome://settings/. If the URL matches, updateHistory_ 233 // will avoid the extra replaceState. 234 OptionsPage.showPageByName(pageName, true, {replaceState: true}); 235 236 var subpagesNavTabs = document.querySelectorAll('.subpages-nav-tabs'); 237 for (var i = 0; i < subpagesNavTabs.length; i++) { 238 subpagesNavTabs[i].onclick = function(event) { 239 OptionsPage.showTab(event.srcElement); 240 }; 241 } 242 243 window.setTimeout(function() { 244 document.documentElement.classList.remove('loading'); 245 chrome.send('onFinishedLoadingOptions'); 246 }); 247 } 248 249 document.documentElement.classList.add('loading'); 250 document.addEventListener('DOMContentLoaded', load); 251 252 /** 253 * Listener for the |beforeunload| event. 254 */ 255 window.onbeforeunload = function() { 256 options.OptionsPage.willClose(); 257 }; 258 259 /** 260 * Listener for the |popstate| event. 261 * @param {Event} e The |popstate| event. 262 */ 263 window.onpopstate = function(e) { 264 var pageName = options.OptionsPage.getPageNameFromPath(); 265 options.OptionsPage.setState(pageName, e.state); 266 }; 267