Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(113)

Side by Side Diff: chrome/browser/resources/options/personal_options.js

Issue 7003007: Apply content-security-policy to the HTML options page. This is a (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 cr.define('options', function() {
6
7 var OptionsPage = options.OptionsPage;
8
9 // State variables.
10 var syncEnabled = false;
11 var syncSetupCompleted = false;
12
13 /**
14 * Encapsulated handling of personal options page.
15 * @constructor
16 */
17 function PersonalOptions() {
18 OptionsPage.call(this, 'personal',
19 templateData.personalPageTabTitle,
20 'personal-page');
21 }
22
23 cr.addSingletonGetter(PersonalOptions);
24
25 PersonalOptions.prototype = {
26 // Inherit PersonalOptions from OptionsPage.
27 __proto__: options.OptionsPage.prototype,
28
29 // Initialize PersonalOptions page.
30 initializePage: function() {
31 // Call base class implementation to start preference initialization.
32 OptionsPage.prototype.initializePage.call(this);
33
34 var self = this;
35 $('sync-action-link').onclick = function(event) {
36 chrome.send('showSyncActionDialog');
37 };
38 $('start-stop-sync').onclick = function(event) {
39 if (self.syncSetupCompleted)
40 self.showStopSyncingOverlay_();
41 else
42 chrome.send('showSyncLoginDialog');
43 };
44 $('customize-sync').onclick = function(event) {
45 chrome.send('showCustomizeSyncDialog');
46 };
47 $('privacy-dashboard-link').onclick = function(event) {
48 chrome.send('openPrivacyDashboardTabAndActivate');
49 };
50 $('manage-passwords').onclick = function(event) {
51 OptionsPage.navigateToPage('passwords');
52 OptionsPage.showTab($('passwords-nav-tab'));
53 chrome.send('coreOptionsUserMetricsAction',
54 ['Options_ShowPasswordManager']);
55 };
56 $('autofill-settings').onclick = function(event) {
57 OptionsPage.navigateToPage('autofill');
58 chrome.send('coreOptionsUserMetricsAction',
59 ['Options_ShowAutofillSettings']);
60 };
61 $('themes-reset').onclick = function(event) {
62 chrome.send('themesReset');
63 };
64
65 if (!cr.isChromeOS) {
66 $('import-data').onclick = function(event) {
67 OptionsPage.navigateToPage('importData');
68 chrome.send('coreOptionsUserMetricsAction', ['Import_ShowDlg']);
69 };
70
71 if ($('themes-GTK-button')) {
72 $('themes-GTK-button').onclick = function(event) {
73 chrome.send('themesSetGTK');
74 };
75 }
76 } else {
77 $('change-picture-button').onclick = function(event) {
78 OptionsPage.navigateToPage('changePicture');
79 };
80 chrome.send('loadAccountPicture');
81 }
82
83 if (cr.commandLine.options['--bwsi']) {
84 // Disable the screen lock checkbox for the guest mode.
85 $('enable-screen-lock').disabled = true;
86 }
87
88 if (PersonalOptions.disablePasswordManagement()) {
89 $('passwords-offersave').disabled = true;
90 $('passwords-neversave').disabled = true;
91 $('passwords-offersave').value = false;
92 $('passwords-neversave').value = true;
93 $('manage-passwords').disabled = true;
94 }
95 },
96
97 showStopSyncingOverlay_: function() {
98 AlertOverlay.show(localStrings.getString('stop_syncing_title'),
99 localStrings.getString('stop_syncing_explanation'),
100 localStrings.getString('stop_syncing_confirm'),
101 localStrings.getString('cancel'),
102 function() { chrome.send('stopSyncing'); });
103 },
104
105 setElementVisible_: function(element, visible) {
106 element.hidden = !visible;
107 if (visible)
108 element.classList.remove('hidden');
109 else
110 element.classList.add('hidden');
111 },
112
113 setSyncEnabled_: function(enabled) {
114 this.syncEnabled = enabled;
115 },
116
117 setSyncSetupCompleted_: function(completed) {
118 this.syncSetupCompleted = completed;
119 this.setElementVisible_($('customize-sync'), completed);
120 $('privacy-dashboard-link').hidden = !completed;
121 },
122
123 setAccountPicture_: function(image) {
124 $('account-picture').src = image;
125 },
126
127 setSyncStatus_: function(status) {
128 var statusSet = status != '';
129 $('sync-overview').hidden = statusSet;
130 $('sync-status').hidden = !statusSet;
131 $('sync-status-text').textContent = status;
132 },
133
134 setSyncStatusErrorVisible_: function(visible) {
135 visible ? $('sync-status').classList.add('sync-error') :
136 $('sync-status').classList.remove('sync-error');
137 },
138
139 setSyncActionLinkEnabled_: function(enabled) {
140 $('sync-action-link').disabled = !enabled;
141 },
142
143 setSyncActionLinkLabel_: function(status) {
144 $('sync-action-link').textContent = status;
145
146 // link-button does is not zero-area when the contents of the button are
147 // empty, so explicitly hide the element.
148 this.setElementVisible_($('sync-action-link'), status.length != 0);
149 },
150
151 setProfilesSectionVisible_: function(visible) {
152 this.setElementVisible_($('profiles-create'), visible);
153 },
154
155 setNewProfileButtonEnabled_: function(enabled) {
156 $('new-profile').disabled = !enabled;
157 if (enabled)
158 $('profiles-create').classList.remove('disabled');
159 else
160 $('profiles-create').classList.add('disabled');
161 },
162
163 setStartStopButtonVisible_: function(visible) {
164 this.setElementVisible_($('start-stop-sync'), visible);
165 },
166
167 setStartStopButtonEnabled_: function(enabled) {
168 $('start-stop-sync').disabled = !enabled;
169 },
170
171 setStartStopButtonLabel_: function(label) {
172 $('start-stop-sync').textContent = label;
173 },
174
175 setGtkThemeButtonEnabled_: function(enabled) {
176 if (!cr.isChromeOS && navigator.platform.match(/linux|BSD/i)) {
177 $('themes-GTK-button').disabled = !enabled;
178 }
179 },
180
181 setThemesResetButtonEnabled_: function(enabled) {
182 $('themes-reset').disabled = !enabled;
183 },
184
185 hideSyncSection_: function() {
186 this.setElementVisible_($('sync-section'), false);
187 },
188
189 /**
190 * Toggles the visibility of the data type checkboxes based on whether they
191 * are enabled on not.
192 * @param {Object} dict A mapping from data type to a boolean indicating
193 * whether it is enabled.
194 * @private
195 */
196 setRegisteredDataTypes_: function(dict) {
197 for (var type in dict) {
198 if (type.match(/Registered$/) && !dict[type]) {
199 node = $(type.replace(/([a-z]+)Registered$/i, '$1').toLowerCase()
200 + '-check');
201 if (node)
202 node.parentNode.style.display = 'none';
203 }
204 }
205 },
206 };
207
208 /**
209 * Returns whether the user should be able to manage (view and edit) their
210 * stored passwords. Password management is disabled in guest mode.
211 * @return {boolean} True if password management should be disabled.
212 */
213 PersonalOptions.disablePasswordManagement = function() {
214 return cr.commandLine.options['--bwsi'];
215 };
216
217 // Forward public APIs to private implementations.
218 [
219 'setSyncEnabled',
220 'setSyncSetupCompleted',
221 'setAccountPicture',
222 'setSyncStatus',
223 'setSyncStatusErrorVisible',
224 'setSyncActionLinkEnabled',
225 'setSyncActionLinkLabel',
226 'setProfilesSectionVisible',
227 'setNewProfileButtonEnabled',
228 'setStartStopButtonVisible',
229 'setStartStopButtonEnabled',
230 'setStartStopButtonLabel',
231 'setGtkThemeButtonEnabled',
232 'setThemesResetButtonEnabled',
233 'hideSyncSection',
234 'setRegisteredDataTypes',
235 ].forEach(function(name) {
236 PersonalOptions[name] = function(value) {
237 PersonalOptions.getInstance()[name + '_'](value);
238 };
239 });
240
241 // Export
242 return {
243 PersonalOptions: PersonalOptions
244 };
245
246 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698