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