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 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 SupervisedUserCreateConfirmOverlay
=
44 options
.SupervisedUserCreateConfirmOverlay
;
45 var SupervisedUserImportOverlay
= options
.SupervisedUserImportOverlay
;
46 var SupervisedUserLearnMoreOverlay
= options
.SupervisedUserLearnMoreOverlay
;
47 var SyncSetupOverlay
= options
.SyncSetupOverlay
;
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 /** @type {HTMLButtonElement} */($('do-not-track-confirm-ok')),
94 /** @type {HTMLButtonElement} */($('do-not-track-confirm-cancel')),
95 $('do-not-track-enabled')['pref'],
96 $('do-not-track-enabled')['metric']),
97 BrowserOptions
.getInstance());
98 PageManager
.registerOverlay(
101 loadTimeData
.getString('spellingConfirmOverlayTabTitle'),
102 'spelling-confirm-overlay',
103 /** @type {HTMLButtonElement} */($('spelling-confirm-ok')),
104 /** @type {HTMLButtonElement} */($('spelling-confirm-cancel')),
105 $('spelling-enabled-control')['pref'],
106 $('spelling-enabled-control')['metric']),
107 BrowserOptions
.getInstance());
108 PageManager
.registerOverlay(new HotwordConfirmDialog(),
109 BrowserOptions
.getInstance());
110 PageManager
.registerOverlay(ContentSettings
.getInstance(),
111 BrowserOptions
.getInstance(),
112 [$('privacyContentSettingsButton')]);
113 PageManager
.registerOverlay(ContentSettingsExceptionsArea
.getInstance(),
114 ContentSettings
.getInstance());
115 PageManager
.registerOverlay(CookiesView
.getInstance(),
116 ContentSettings
.getInstance(),
117 [$('privacyContentSettingsButton'),
118 $('show-cookies-button')]);
119 PageManager
.registerOverlay(CreateProfileOverlay
.getInstance(),
120 BrowserOptions
.getInstance());
121 PageManager
.registerOverlay(EasyUnlockTurnOffOverlay
.getInstance(),
122 BrowserOptions
.getInstance(),
123 [$('easy-unlock-turn-off-button')]);
125 PageManager
.registerOverlay(EditDictionaryOverlay
.getInstance(),
126 LanguageOptions
.getInstance(),
127 [$('edit-dictionary-button')]);
129 PageManager
.registerOverlay(FontSettings
.getInstance(),
130 BrowserOptions
.getInstance(),
131 [$('fontSettingsCustomizeFontsButton')]);
132 if (HandlerOptions
&& $('manage-handlers-button')) {
133 PageManager
.registerOverlay(HandlerOptions
.getInstance(),
134 ContentSettings
.getInstance(),
135 [$('manage-handlers-button')]);
137 PageManager
.registerOverlay(HomePageOverlay
.getInstance(),
138 BrowserOptions
.getInstance(),
139 [$('change-home-page')]);
140 PageManager
.registerOverlay(ImportDataOverlay
.getInstance(),
141 BrowserOptions
.getInstance());
142 PageManager
.registerOverlay(LanguageOptions
.getInstance(),
143 BrowserOptions
.getInstance(),
144 [$('language-button'),
145 $('manage-languages')]);
146 PageManager
.registerOverlay(ManageProfileOverlay
.getInstance(),
147 BrowserOptions
.getInstance());
148 if (!cr
.isChromeOS
) {
149 PageManager
.registerOverlay(SupervisedUserCreateConfirmOverlay
.
151 BrowserOptions
.getInstance());
152 PageManager
.registerOverlay(SupervisedUserImportOverlay
.getInstance(),
153 CreateProfileOverlay
.getInstance());
154 PageManager
.registerOverlay(SupervisedUserLearnMoreOverlay
.getInstance(),
155 CreateProfileOverlay
.getInstance());
157 PageManager
.registerOverlay(PasswordManager
.getInstance(),
158 BrowserOptions
.getInstance(),
159 [$('manage-passwords')]);
160 PageManager
.registerOverlay(ResetProfileSettingsOverlay
.getInstance(),
161 BrowserOptions
.getInstance(),
162 [$('reset-profile-settings')]);
163 PageManager
.registerOverlay(SearchEngineManager
.getInstance(),
164 BrowserOptions
.getInstance(),
165 [$('manage-default-search-engines')]);
166 PageManager
.registerOverlay(StartupOverlay
.getInstance(),
167 BrowserOptions
.getInstance());
168 PageManager
.registerOverlay(SyncSetupOverlay
.getInstance(),
169 BrowserOptions
.getInstance(),
170 [$('customize-sync')]);
171 if (loadTimeData
.getBoolean('showAbout')) {
172 PageManager
.registerOverlay(help
.HelpPage
.getInstance(),
173 BrowserOptions
.getInstance());
174 if (help
.ChannelChangePage
) {
175 PageManager
.registerOverlay(help
.ChannelChangePage
.getInstance(),
176 help
.HelpPage
.getInstance());
180 PageManager
.registerOverlay(AccountsOptions
.getInstance(),
181 BrowserOptions
.getInstance(),
182 [$('manage-accounts-button')]);
183 PageManager
.registerOverlay(BluetoothOptions
.getInstance(),
184 BrowserOptions
.getInstance(),
185 [$('bluetooth-add-device')]);
186 PageManager
.registerOverlay(BluetoothPairing
.getInstance(),
187 BrowserOptions
.getInstance());
188 PageManager
.registerOverlay(FactoryResetOverlay
.getInstance(),
189 BrowserOptions
.getInstance(),
190 [$('factory-reset-restart')]);
191 PageManager
.registerOverlay(ChangePictureOptions
.getInstance(),
192 BrowserOptions
.getInstance(),
193 [$('account-picture')]);
194 PageManager
.registerOverlay(ConsumerManagementOverlay
.getInstance(),
195 BrowserOptions
.getInstance());
196 PageManager
.registerOverlay(DetailsInternetPage
.getInstance(),
197 BrowserOptions
.getInstance());
198 PageManager
.registerOverlay(DisplayOptions
.getInstance(),
199 BrowserOptions
.getInstance(),
200 [$('display-options')]);
201 PageManager
.registerOverlay(DisplayOverscan
.getInstance(),
202 DisplayOptions
.getInstance());
203 PageManager
.registerOverlay(KeyboardOverlay
.getInstance(),
204 BrowserOptions
.getInstance(),
205 [$('keyboard-settings-button')]);
206 PageManager
.registerOverlay(PointerOverlay
.getInstance(),
207 BrowserOptions
.getInstance(),
208 [$('pointer-settings-button')]);
209 PageManager
.registerOverlay(PreferredNetworks
.getInstance(),
210 BrowserOptions
.getInstance());
211 PageManager
.registerOverlay(PowerOverlay
.getInstance(),
212 BrowserOptions
.getInstance(),
213 [$('power-settings-button')]);
214 PageManager
.registerOverlay(ThirdPartyImeConfirmOverlay
.getInstance(),
215 LanguageOptions
.getInstance());
218 if (!cr
.isWindows
&& !cr
.isMac
) {
219 PageManager
.registerOverlay(CertificateBackupOverlay
.getInstance(),
220 CertificateManager
.getInstance());
221 PageManager
.registerOverlay(CertificateEditCaTrustOverlay
.getInstance(),
222 CertificateManager
.getInstance());
223 PageManager
.registerOverlay(CertificateImportErrorOverlay
.getInstance(),
224 CertificateManager
.getInstance());
225 PageManager
.registerOverlay(CertificateManager
.getInstance(),
226 BrowserOptions
.getInstance(),
227 [$('certificatesManageButton')]);
228 PageManager
.registerOverlay(CertificateRestoreOverlay
.getInstance(),
229 CertificateManager
.getInstance());
232 OptionsFocusManager
.getInstance().initialize();
233 Preferences
.getInstance().initialize();
234 ResetProfileSettingsBanner
.getInstance().initialize();
235 AutomaticSettingsResetBanner
.getInstance().initialize();
236 OptionsPage
.initialize();
237 PageManager
.initialize(BrowserOptions
.getInstance());
238 PageManager
.addObserver(new uber
.PageManagerObserver());
239 uber
.onContentFrameLoaded();
241 var pageName
= PageManager
.getPageNameFromPath();
242 // Still update history so that chrome://settings/nonexistant redirects
243 // appropriately to chrome://settings/. If the URL matches, updateHistory_
244 // will avoid the extra replaceState.
245 var updateHistory
= true;
246 PageManager
.showPageByName(pageName
, updateHistory
,
247 {replaceState
: true, hash
: location
.hash
});
249 var subpagesNavTabs
= document
.querySelectorAll('.subpages-nav-tabs');
250 for (var i
= 0; i
< subpagesNavTabs
.length
; i
++) {
251 subpagesNavTabs
[i
].onclick = function(event
) {
252 OptionsPage
.showTab(event
.srcElement
);
256 window
.setTimeout(function() {
257 document
.documentElement
.classList
.remove('loading');
258 chrome
.send('onFinishedLoadingOptions');
262 document
.documentElement
.classList
.add('loading');
263 document
.addEventListener('DOMContentLoaded', load
);
266 * Listener for the |beforeunload| event.
268 window
.onbeforeunload = function() {
269 PageManager
.willClose();
273 * Listener for the |popstate| event.
274 * @param {Event} e The |popstate| event.
276 window
.onpopstate = function(e
) {
277 var pageName
= PageManager
.getPageNameFromPath();
278 PageManager
.setState(pageName
, location
.hash
, e
.state
);