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