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.
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="pp_ifdef('enable_google_now')">
22 var GeolocationOptions = options.GeolocationOptions;
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 MediaGalleriesManager = options.MediaGalleriesManager;
34 var OptionsFocusManager = options.OptionsFocusManager;
35 var OptionsPage = options.OptionsPage;
36 var PasswordManager = options.PasswordManager;
37 var Preferences = options.Preferences;
38 var PreferredNetworks = options.PreferredNetworks;
39 var ResetProfileSettingsBanner = options.ResetProfileSettingsBanner;
40 var ResetProfileSettingsOverlay = options.ResetProfileSettingsOverlay;
41 var SearchEngineManager = options.SearchEngineManager;
42 var SearchPage = options.SearchPage;
43 var StartupOverlay = options.StartupOverlay;
44 var SyncSetupOverlay = options.SyncSetupOverlay;
47 * DOMContentLoaded handler, sets up the page.
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);
67 OptionsPage.register(SearchPage.getInstance());
68 OptionsPage.register(BrowserOptions.getInstance());
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(
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
96 if ($('spelling-enabled-control')) {
97 OptionsPage.registerOverlay(
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());
108 OptionsPage.registerOverlay(
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());
130 OptionsPage.registerOverlay(EditDictionaryOverlay.getInstance(),
131 LanguageOptions.getInstance(),
132 [$('edit-dictionary-button')]);
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')]);
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 if (!loadTimeData.getBoolean('disableCreateExistingManagedUsers')) {
157 OptionsPage.registerOverlay(ManagedUserImportOverlay.getInstance(),
158 BrowserOptions.getInstance());
160 OptionsPage.registerOverlay(ManagedUserLearnMoreOverlay.getInstance(),
161 CreateProfileOverlay.getInstance());
163 OptionsPage.registerOverlay(MediaGalleriesManager.getInstance(),
164 ContentSettings.getInstance(),
165 [$('manage-galleries-button')]);
166 OptionsPage.registerOverlay(PasswordManager.getInstance(),
167 BrowserOptions.getInstance(),
168 [$('manage-passwords')]);
169 OptionsPage.registerOverlay(ResetProfileSettingsOverlay.getInstance(),
170 BrowserOptions.getInstance(),
171 [$('reset-profile-settings')]);
172 OptionsPage.registerOverlay(SearchEngineManager.getInstance(),
173 BrowserOptions.getInstance(),
174 [$('manage-default-search-engines')]);
175 OptionsPage.registerOverlay(StartupOverlay.getInstance(),
176 BrowserOptions.getInstance());
177 OptionsPage.registerOverlay(SyncSetupOverlay.getInstance(),
178 BrowserOptions.getInstance(),
179 [$('customize-sync')]);
181 OptionsPage.registerOverlay(AccountsOptions.getInstance(),
182 BrowserOptions.getInstance(),
183 [$('manage-accounts-button')]);
184 OptionsPage.registerOverlay(BluetoothOptions.getInstance(),
185 BrowserOptions.getInstance(),
186 [$('bluetooth-add-device')]);
187 OptionsPage.registerOverlay(BluetoothPairing.getInstance(),
188 BrowserOptions.getInstance());
189 OptionsPage.registerOverlay(FactoryResetOverlay.getInstance(),
190 BrowserOptions.getInstance(),
191 [$('factory-reset-restart')]);
192 OptionsPage.registerOverlay(ChangePictureOptions.getInstance(),
193 BrowserOptions.getInstance(),
194 [$('account-picture')]);
195 OptionsPage.registerOverlay(DetailsInternetPage.getInstance(),
196 BrowserOptions.getInstance());
197 OptionsPage.registerOverlay(DisplayOptions.getInstance(),
198 BrowserOptions.getInstance(),
199 [$('display-options')]);
200 OptionsPage.registerOverlay(DisplayOverscan.getInstance(),
201 DisplayOptions.getInstance());
202 OptionsPage.registerOverlay(KeyboardOverlay.getInstance(),
203 BrowserOptions.getInstance(),
204 [$('keyboard-settings-button')]);
205 OptionsPage.registerOverlay(PointerOverlay.getInstance(),
206 BrowserOptions.getInstance(),
207 [$('pointer-settings-button')]);
208 OptionsPage.registerOverlay(PreferredNetworks.getInstance(),
209 BrowserOptions.getInstance());
212 if (!cr.isWindows && !cr.isMac) {
213 OptionsPage.registerOverlay(CertificateBackupOverlay.getInstance(),
214 CertificateManager.getInstance());
215 OptionsPage.registerOverlay(CertificateEditCaTrustOverlay.getInstance(),
216 CertificateManager.getInstance());
217 OptionsPage.registerOverlay(CertificateImportErrorOverlay.getInstance(),
218 CertificateManager.getInstance());
219 OptionsPage.registerOverlay(CertificateManager.getInstance(),
220 BrowserOptions.getInstance(),
221 [$('certificatesManageButton')]);
222 OptionsPage.registerOverlay(CertificateRestoreOverlay.getInstance(),
223 CertificateManager.getInstance());
226 cr.ui.FocusManager.disableMouseFocusOnButtons();
227 OptionsFocusManager.getInstance().initialize();
228 Preferences.getInstance().initialize();
229 ResetProfileSettingsBanner.getInstance().initialize();
230 AutomaticSettingsResetBanner.getInstance().initialize();
231 OptionsPage.initialize();
233 var path = document.location.pathname;
235 if (path.length > 1) {
236 // Skip starting slash and remove trailing slash (if any).
237 var pageName = path.slice(1).replace(/\/$/, '');
238 OptionsPage.showPageByName(pageName, true, {replaceState: true});
240 OptionsPage.showDefaultPage();
243 var subpagesNavTabs = document.querySelectorAll('.subpages-nav-tabs');
244 for (var i = 0; i < subpagesNavTabs.length; i++) {
245 subpagesNavTabs[i].onclick = function(event) {
246 OptionsPage.showTab(event.srcElement);
250 window.setTimeout(function() {
251 document.documentElement.classList.remove('loading');
255 document.documentElement.classList.add('loading');
256 document.addEventListener('DOMContentLoaded', load);
259 * Listener for the |beforeunload| event.
261 window.onbeforeunload = function() {
262 options.OptionsPage.willClose();
266 * Listener for the |popstate| event.
267 * @param {Event} e The |popstate| event.
269 window.onpopstate = function(e) {
270 options.OptionsPage.setState(e.state);