OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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 AdvancedOptions = options.AdvancedOptions; | |
7 var AlertOverlay = options.AlertOverlay; | |
8 var AutofillEditAddressOverlay = options.AutofillEditAddressOverlay; | |
9 var AutofillEditCreditCardOverlay = options.AutofillEditCreditCardOverlay; | |
10 var AutofillOptions = options.AutofillOptions; | |
11 var BrowserOptions = options.BrowserOptions; | |
12 var ClearBrowserDataOverlay = options.ClearBrowserDataOverlay; | |
13 var ContentSettings = options.ContentSettings; | |
14 var ContentSettingsExceptionsArea = | |
15 options.contentSettings.ContentSettingsExceptionsArea; | |
16 var CookiesView = options.CookiesView; | |
17 var ExtensionSettings = options.ExtensionSettings; | |
18 var FontSettings = options.FontSettings; | |
19 var HandlerOptions = options.HandlerOptions; | |
20 var ImportDataOverlay = options.ImportDataOverlay; | |
21 var IntentsView = options.IntentsView; | |
22 var InstantConfirmOverlay = options.InstantConfirmOverlay; | |
23 var LanguageOptions = options.LanguageOptions; | |
24 var OptionsPage = options.OptionsPage; | |
25 var PackExtensionOverlay = options.PackExtensionOverlay; | |
26 var PasswordManager = options.PasswordManager; | |
27 var PersonalOptions = options.PersonalOptions; | |
28 var Preferences = options.Preferences; | |
29 var ManageProfileOverlay = options.ManageProfileOverlay; | |
30 var ProxyOptions = options.ProxyOptions; | |
31 var SearchEngineManager = options.SearchEngineManager; | |
32 var SearchPage = options.SearchPage; | |
33 var SyncSetupOverlay = options.SyncSetupOverlay; | |
34 var VirtualKeyboardManager = options.VirtualKeyboardManager; | |
35 | |
36 /** | |
37 * DOMContentLoaded handler, sets up the page. | |
38 */ | |
39 function load() { | |
40 // Decorate the existing elements in the document. | |
41 cr.ui.decorate('input[pref][type=checkbox]', options.PrefCheckbox); | |
42 cr.ui.decorate('input[pref][type=number]', options.PrefNumber); | |
43 cr.ui.decorate('input[pref][type=radio]', options.PrefRadio); | |
44 cr.ui.decorate('input[pref][type=range]', options.PrefRange); | |
45 cr.ui.decorate('select[pref]', options.PrefSelect); | |
46 cr.ui.decorate('input[pref][type=text]', options.PrefTextField); | |
47 cr.ui.decorate('input[pref][type=url]', options.PrefTextField); | |
48 cr.ui.decorate('button[pref]', options.PrefButton); | |
49 cr.ui.decorate('#content-settings-page input[type=radio]:not(.handler-radio)', | |
50 options.ContentSettingsRadio); | |
51 cr.ui.decorate('#content-settings-page input[type=radio].handler-radio', | |
52 options.HandlersEnabledRadio); | |
53 cr.ui.decorate('span.controlled-setting-indicator', | |
54 options.ControlledSettingIndicator); | |
55 | |
56 var menuOffPattern = /(^\?|&)menu=off($|&)/; | |
57 var menuDisabled = menuOffPattern.test(window.location.search); | |
58 // document.documentElement.setAttribute('hide-menu', menuDisabled); | |
59 // We can't use an attribute on the html element because of webkit bug | |
60 // 12519. Instead, we add a class. | |
61 if (menuDisabled) | |
62 document.documentElement.classList.add('hide-menu'); | |
63 | |
64 localStrings = new LocalStrings(); | |
65 | |
66 OptionsPage.register(SearchPage.getInstance()); | |
67 | |
68 OptionsPage.register(BrowserOptions.getInstance()); | |
69 OptionsPage.registerSubPage(SearchEngineManager.getInstance(), | |
70 BrowserOptions.getInstance(), | |
71 [$('defaultSearchManageEnginesButton')]); | |
72 OptionsPage.register(PersonalOptions.getInstance()); | |
73 OptionsPage.registerSubPage(AutofillOptions.getInstance(), | |
74 PersonalOptions.getInstance(), | |
75 [$('autofill-settings')]); | |
76 OptionsPage.registerSubPage(PasswordManager.getInstance(), | |
77 PersonalOptions.getInstance(), | |
78 [$('manage-passwords')]); | |
79 if (cr.isChromeOS) { | |
80 OptionsPage.register(SystemOptions.getInstance()); | |
81 OptionsPage.registerSubPage(AboutPage.getInstance(), | |
82 SystemOptions.getInstance()); | |
83 OptionsPage.registerSubPage(LanguageOptions.getInstance(), | |
84 SystemOptions.getInstance(), | |
85 [$('language-button')]); | |
86 OptionsPage.registerSubPage( | |
87 new OptionsPage('languageChewing', | |
88 templateData.languageChewingPageTabTitle, | |
89 'languageChewingPage'), | |
90 LanguageOptions.getInstance()); | |
91 OptionsPage.registerSubPage( | |
92 new OptionsPage('languageHangul', | |
93 templateData.languageHangulPageTabTitle, | |
94 'languageHangulPage'), | |
95 LanguageOptions.getInstance()); | |
96 OptionsPage.registerSubPage( | |
97 new OptionsPage('languageMozc', | |
98 templateData.languageMozcPageTabTitle, | |
99 'languageMozcPage'), | |
100 LanguageOptions.getInstance()); | |
101 OptionsPage.registerSubPage( | |
102 new OptionsPage('languagePinyin', | |
103 templateData.languagePinyinPageTabTitle, | |
104 'languagePinyinPage'), | |
105 LanguageOptions.getInstance()); | |
106 // Only use the VirtualKeyboardManager if the keyboard DOM elements (which | |
107 // it will assume exists) are present (i.e. if we were built with | |
108 // USE_VIRTUAL_KEYBOARD). | |
109 if ($('language-options-virtual-keyboard')) { | |
110 OptionsPage.registerSubPage(VirtualKeyboardManager.getInstance(), | |
111 LanguageOptions.getInstance()); | |
112 } | |
113 OptionsPage.register(InternetOptions.getInstance()); | |
114 } | |
115 OptionsPage.register(AdvancedOptions.getInstance()); | |
116 OptionsPage.registerSubPage(ContentSettings.getInstance(), | |
117 AdvancedOptions.getInstance(), | |
118 [$('privacyContentSettingsButton')]); | |
119 OptionsPage.registerSubPage(ContentSettingsExceptionsArea.getInstance(), | |
120 ContentSettings.getInstance()); | |
121 OptionsPage.registerSubPage(CookiesView.getInstance(), | |
122 ContentSettings.getInstance(), | |
123 [$('privacyContentSettingsButton'), | |
124 $('show-cookies-button')]); | |
125 // If HandlerOptions is null it means it got compiled out. | |
126 if (HandlerOptions) { | |
127 OptionsPage.registerSubPage(HandlerOptions.getInstance(), | |
128 ContentSettings.getInstance(), | |
129 [$('manage-handlers-button')]); | |
130 } | |
131 if (IntentsView && $('manage-intents-button')) { | |
132 OptionsPage.registerSubPage(IntentsView.getInstance(), | |
133 ContentSettings.getInstance(), | |
134 [$('manage-intents-button')]); | |
135 } | |
136 OptionsPage.registerSubPage(FontSettings.getInstance(), | |
137 AdvancedOptions.getInstance(), | |
138 [$('fontSettingsCustomizeFontsButton')]); | |
139 if (!cr.isChromeOS) { | |
140 OptionsPage.registerSubPage(LanguageOptions.getInstance(), | |
141 AdvancedOptions.getInstance(), | |
142 [$('language-button')]); | |
143 } | |
144 if (!cr.isWindows && !cr.isMac) { | |
145 OptionsPage.registerSubPage(CertificateManager.getInstance(), | |
146 AdvancedOptions.getInstance(), | |
147 [$('certificatesManageButton')]); | |
148 OptionsPage.registerOverlay(CertificateRestoreOverlay.getInstance(), | |
149 CertificateManager.getInstance()); | |
150 OptionsPage.registerOverlay(CertificateBackupOverlay.getInstance(), | |
151 CertificateManager.getInstance()); | |
152 OptionsPage.registerOverlay(CertificateEditCaTrustOverlay.getInstance(), | |
153 CertificateManager.getInstance()); | |
154 OptionsPage.registerOverlay(CertificateImportErrorOverlay.getInstance(), | |
155 CertificateManager.getInstance()); | |
156 } | |
157 OptionsPage.registerOverlay(AddLanguageOverlay.getInstance(), | |
158 LanguageOptions.getInstance()); | |
159 OptionsPage.registerOverlay(AlertOverlay.getInstance()); | |
160 OptionsPage.registerOverlay(AutofillEditAddressOverlay.getInstance(), | |
161 AutofillOptions.getInstance()); | |
162 OptionsPage.registerOverlay(AutofillEditCreditCardOverlay.getInstance(), | |
163 AutofillOptions.getInstance()); | |
164 OptionsPage.registerOverlay(ClearBrowserDataOverlay.getInstance(), | |
165 AdvancedOptions.getInstance(), | |
166 [$('privacyClearDataButton')]); | |
167 OptionsPage.registerOverlay(ImportDataOverlay.getInstance(), | |
168 PersonalOptions.getInstance()); | |
169 OptionsPage.registerOverlay(InstantConfirmOverlay.getInstance(), | |
170 BrowserOptions.getInstance()); | |
171 OptionsPage.registerOverlay(SyncSetupOverlay.getInstance(), | |
172 PersonalOptions.getInstance()); | |
173 OptionsPage.registerOverlay(ManageProfileOverlay.getInstance(), | |
174 PersonalOptions.getInstance()); | |
175 | |
176 OptionsPage.register(ExtensionSettings.getInstance()); | |
177 OptionsPage.registerOverlay(PackExtensionOverlay.getInstance(), | |
178 ExtensionSettings.getInstance()); | |
179 | |
180 if (cr.isChromeOS) { | |
181 OptionsPage.register(AccountsOptions.getInstance()); | |
182 OptionsPage.registerSubPage(ProxyOptions.getInstance(), | |
183 InternetOptions.getInstance()); | |
184 OptionsPage.registerSubPage(ChangePictureOptions.getInstance(), | |
185 PersonalOptions.getInstance(), | |
186 [$('change-picture-button')]); | |
187 OptionsPage.registerOverlay(DetailsInternetPage.getInstance(), | |
188 InternetOptions.getInstance()); | |
189 | |
190 var languageModifierKeysOverlay = new OptionsPage( | |
191 'languageCustomizeModifierKeysOverlay', | |
192 localStrings.getString('languageCustomizeModifierKeysOverlay'), | |
193 'languageCustomizeModifierKeysOverlay') | |
194 $('languageCustomizeModifierKeysOverleyDismissButton').onclick = | |
195 function() { | |
196 OptionsPage.closeOverlay(); | |
197 }; | |
198 OptionsPage.registerOverlay(languageModifierKeysOverlay, | |
199 SystemOptions.getInstance(), | |
200 [$('modifier-keys-button')]); | |
201 } | |
202 | |
203 Preferences.getInstance().initialize(); | |
204 OptionsPage.initialize(); | |
205 | |
206 var path = document.location.pathname; | |
207 | |
208 if (path.length > 1) { | |
209 // Skip starting slash and remove trailing slash (if any). | |
210 var pageName = path.slice(1).replace(/\/$/, ''); | |
211 // Proxy page is now per network and only reachable from internet details. | |
212 if (pageName != 'proxy') { | |
213 // Show page, but don't update history (there's already an entry for it). | |
214 OptionsPage.showPageByName(pageName, false); | |
215 } | |
216 } else { | |
217 OptionsPage.showDefaultPage(); | |
218 } | |
219 | |
220 var subpagesNavTabs = document.querySelectorAll('.subpages-nav-tabs'); | |
221 for(var i = 0; i < subpagesNavTabs.length; i++) { | |
222 subpagesNavTabs[i].onclick = function(event) { | |
223 OptionsPage.showTab(event.srcElement); | |
224 } | |
225 } | |
226 | |
227 // Allow platform specific CSS rules. | |
228 cr.enablePlatformSpecificCSSRules(); | |
229 | |
230 if (navigator.plugins['Shockwave Flash']) | |
231 document.documentElement.setAttribute('hasFlashPlugin', ''); | |
232 | |
233 // Clicking on the Settings title brings up the 'Basics' page. | |
234 $('navbar-content-title').onclick = function() { | |
235 OptionsPage.navigateToPage(BrowserOptions.getInstance().name); | |
236 }; | |
237 } | |
238 | |
239 document.addEventListener('DOMContentLoaded', load); | |
240 | |
241 window.onpopstate = function(e) { | |
242 options.OptionsPage.setState(e.state); | |
243 }; | |
244 | |
245 window.onbeforeunload = function() { | |
246 options.OptionsPage.willClose(); | |
247 }; | |
OLD | NEW |