OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * The reason why the controller is in state kIdle. | 6 * The reason why the controller is in state kIdle. |
7 * Must be kept in sync with ChromeCleanerController::IdleReason. | 7 * Must be kept in sync with ChromeCleanerController::IdleReason. |
8 * @enum {string} | 8 * @enum {string} |
9 */ | 9 */ |
10 settings.ChromeCleanupIdleReason = { | 10 settings.ChromeCleanupIdleReason = { |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 value: '', | 59 value: '', |
60 }, | 60 }, |
61 | 61 |
62 /** @private */ | 62 /** @private */ |
63 showDetails_: { | 63 showDetails_: { |
64 type: Boolean, | 64 type: Boolean, |
65 value: false, | 65 value: false, |
66 }, | 66 }, |
67 | 67 |
68 /** @private */ | 68 /** @private */ |
69 detailsDescription: { | 69 showLogsPermission_: { |
70 type: String, | 70 type: Boolean, |
71 value: '', | 71 value: false, |
72 }, | 72 }, |
73 | 73 |
74 /** @private */ | 74 /** @private */ |
75 showFilesToRemove_: { | 75 showFilesToRemove_: { |
76 type: Boolean, | 76 type: Boolean, |
77 value: false, | 77 value: false, |
78 }, | 78 }, |
79 | 79 |
80 /** @private */ | 80 /** @private */ |
81 filesToRemove_: { | 81 filesToRemove_: { |
82 type: Array, | 82 type: Array, |
83 value: [], | 83 value: [], |
84 }, | 84 }, |
85 | 85 |
86 /** @private */ | 86 /** @private */ |
87 statusIcon_: { | 87 statusIcon_: { |
88 type: String, | 88 type: String, |
89 value: '', | 89 value: '', |
90 }, | 90 }, |
91 | 91 |
92 /** @private */ | 92 /** @private */ |
93 statusIconClassName_: { | 93 statusIconClassName_: { |
94 type: String, | 94 type: String, |
95 value: '', | 95 value: '', |
96 }, | 96 }, |
| 97 |
| 98 /** @private {chrome.settingsPrivate.PrefObject} */ |
| 99 logsUploadPref_: { |
| 100 type: Object, |
| 101 value: function() { |
| 102 return /** @type {chrome.settingsPrivate.PrefObject} */ ({}); |
| 103 }, |
| 104 }, |
97 }, | 105 }, |
98 | 106 |
99 /** @private {?settings.ChromeCleanupProxy} */ | 107 /** @private {?settings.ChromeCleanupProxy} */ |
100 browserProxy_: null, | 108 browserProxy_: null, |
101 | 109 |
102 /** @private {?function()} */ | 110 /** @private {?function()} */ |
103 doAction_: null, | 111 doAction_: null, |
104 | 112 |
105 /** | 113 /** |
106 * If true, this settings page is waiting for cleanup results. | 114 * If true, this settings page is waiting for cleanup results. |
107 * @private {boolean} | 115 * @private {boolean} |
108 */ | 116 */ |
109 waitingForCleanupResults_: false, | 117 waitingForCleanupResults_: false, |
110 | 118 |
111 /** @override */ | 119 /** @override */ |
112 attached: function() { | 120 attached: function() { |
113 this.browserProxy_ = settings.ChromeCleanupProxyImpl.getInstance(); | 121 this.browserProxy_ = settings.ChromeCleanupProxyImpl.getInstance(); |
114 | 122 |
115 this.addWebUIListener('chrome-cleanup-on-idle', this.onIdle_.bind(this)); | 123 this.addWebUIListener('chrome-cleanup-on-idle', this.onIdle_.bind(this)); |
116 this.addWebUIListener( | 124 this.addWebUIListener( |
117 'chrome-cleanup-on-scanning', this.onScanning_.bind(this)); | 125 'chrome-cleanup-on-scanning', this.onScanning_.bind(this)); |
118 this.addWebUIListener( | 126 this.addWebUIListener( |
119 'chrome-cleanup-on-infected', this.onInfected_.bind(this)); | 127 'chrome-cleanup-on-infected', this.onInfected_.bind(this)); |
120 this.addWebUIListener( | 128 this.addWebUIListener( |
121 'chrome-cleanup-on-cleaning', this.onCleaning_.bind(this)); | 129 'chrome-cleanup-on-cleaning', this.onCleaning_.bind(this)); |
122 this.addWebUIListener( | 130 this.addWebUIListener( |
123 'chrome-cleanup-on-reboot-required', this.onRebootRequired_.bind(this)); | 131 'chrome-cleanup-on-reboot-required', this.onRebootRequired_.bind(this)); |
124 this.addWebUIListener( | 132 this.addWebUIListener( |
125 'chrome-cleanup-on-dismiss', this.onDismiss_.bind(this)); | 133 'chrome-cleanup-on-dismiss', this.onDismiss_.bind(this)); |
| 134 this.addWebUIListener( |
| 135 'chrome-cleanup-upload-permission-change', |
| 136 this.onUploadPermissionChange_.bind(this)); |
126 | 137 |
127 this.browserProxy_.registerChromeCleanerObserver(); | 138 this.browserProxy_.registerChromeCleanerObserver(); |
128 }, | 139 }, |
129 | 140 |
130 /** | 141 /** |
131 * Implements the action for the only visible button in the UI, which can be | 142 * Implements the action for the only visible button in the UI, which can be |
132 * either to start a cleanup or to restart the computer. | 143 * either to start a cleanup or to restart the computer. |
133 * @private | 144 * @private |
134 */ | 145 */ |
135 proceed_: function() { | 146 proceed_: function() { |
(...skipping 12 matching lines...) Expand all Loading... |
148 * Listener of event 'chrome-cleanup-on-idle'. | 159 * Listener of event 'chrome-cleanup-on-idle'. |
149 * @param {number} idleReason | 160 * @param {number} idleReason |
150 * @private | 161 * @private |
151 */ | 162 */ |
152 onIdle_: function(idleReason) { | 163 onIdle_: function(idleReason) { |
153 if (idleReason == settings.ChromeCleanupIdleReason.CLEANING_SUCCEEDED) { | 164 if (idleReason == settings.ChromeCleanupIdleReason.CLEANING_SUCCEEDED) { |
154 this.title_ = this.i18n('chromeCleanupTitleRemoved'); | 165 this.title_ = this.i18n('chromeCleanupTitleRemoved'); |
155 this.enableActionButton_( | 166 this.enableActionButton_( |
156 this.i18n('chromeCleanupDoneButtonLabel'), this.dismiss_.bind(this)); | 167 this.i18n('chromeCleanupDoneButtonLabel'), this.dismiss_.bind(this)); |
157 this.setIconDone_(); | 168 this.setIconDone_(); |
158 } else if (idleReason == settings.ChromeCleanupIdleReason.CLEANING_FAILED) { | 169 } else { |
| 170 // Scanning-related idle reasons are unexpected. Show an error message for |
| 171 // all reasons other than |CLEANING_SUCCEEDED|. |
159 this.title_ = this.i18n('chromeCleanupTitleErrorCantRemove'); | 172 this.title_ = this.i18n('chromeCleanupTitleErrorCantRemove'); |
160 this.enableActionButton_( | 173 this.enableActionButton_( |
161 this.i18n('chromeCleanupDoneButtonLabel'), this.dismiss_.bind(this)); | 174 this.i18n('chromeCleanupDoneButtonLabel'), this.dismiss_.bind(this)); |
162 this.setIconWarning_(); | 175 this.setIconWarning_(); |
163 } else { | |
164 // TODO(proberge): Handle other cases. | |
165 this.title_ = ''; | |
166 this.disableActionButton_(); | |
167 } | 176 } |
168 | 177 |
169 this.isRemoving_ = false; | 178 this.isRemoving_ = false; |
170 this.disableDetails_(); | 179 this.disableDetails_(); |
171 this.waitingForCleanupResults_ = false; | 180 this.waitingForCleanupResults_ = false; |
172 }, | 181 }, |
173 | 182 |
174 /** | 183 /** |
175 * Listener of event 'chrome-cleanup-on-scanning'. | 184 * Listener of event 'chrome-cleanup-on-scanning'. |
176 * No UI will be shown in the Settings page on that state, so we simply hide | 185 * No UI will be shown in the Settings page on that state, so we simply hide |
(...skipping 30 matching lines...) Expand all Loading... |
207 * @param {!Array<!string>} files The list of files to present to the user. | 216 * @param {!Array<!string>} files The list of files to present to the user. |
208 * @private | 217 * @private |
209 */ | 218 */ |
210 onCleaning_: function(files) { | 219 onCleaning_: function(files) { |
211 this.waitingForCleanupResults_ = true; | 220 this.waitingForCleanupResults_ = true; |
212 this.title_ = this.i18n('chromeCleanupTitleRemoving'); | 221 this.title_ = this.i18n('chromeCleanupTitleRemoving'); |
213 this.isRemoving_ = true; | 222 this.isRemoving_ = true; |
214 this.resetIcon_(); | 223 this.resetIcon_(); |
215 this.disableActionButton_(); | 224 this.disableActionButton_(); |
216 this.enableDetails_(files); | 225 this.enableDetails_(files); |
| 226 this.showLogsPermission_ = false; |
217 }, | 227 }, |
218 | 228 |
219 /** | 229 /** |
220 * Listener of event 'chrome-cleanup-on-reboot-required'. | 230 * Listener of event 'chrome-cleanup-on-reboot-required'. |
221 * No UI will be shown in the Settings page on that state, so we simply hide | 231 * No UI will be shown in the Settings page on that state, so we simply hide |
222 * the card and cleanup this element's fields. | 232 * the card and cleanup this element's fields. |
223 * @private | 233 * @private |
224 */ | 234 */ |
225 onRebootRequired_: function() { | 235 onRebootRequired_: function() { |
226 this.title_ = this.i18n('chromeCleanupTitleRestart'); | 236 this.title_ = this.i18n('chromeCleanupTitleRestart'); |
227 this.isRemoving_ = false; | 237 this.isRemoving_ = false; |
228 this.setIconWarning_(); | 238 this.setIconWarning_(); |
229 this.enableActionButton_( | 239 this.enableActionButton_( |
230 this.i18n('chromeCleanupRestartButtonLabel'), | 240 this.i18n('chromeCleanupRestartButtonLabel'), |
231 this.restartComputer_.bind(this)); | 241 this.restartComputer_.bind(this)); |
232 this.disableDetails_(); | 242 this.disableDetails_(); |
233 }, | 243 }, |
234 | 244 |
235 /** | 245 /** |
236 * Listener of event 'chrome-cleanup-dismiss'. | 246 * Listener of event 'chrome-cleanup-dismiss'. |
237 * Hides the Cleanup card. | 247 * Hides the Cleanup card. |
238 * @private | 248 * @private |
239 */ | 249 */ |
240 onDismiss_: function() { | 250 onDismiss_: function() { |
241 this.fire('chrome-cleanup-dismissed'); | 251 this.fire('chrome-cleanup-dismissed'); |
242 }, | 252 }, |
243 | 253 |
244 /** | 254 /** |
| 255 * @param {boolean} enabled Whether logs upload is enabled. |
| 256 * @private |
| 257 */ |
| 258 onUploadPermissionChange_: function(enabled) { |
| 259 this.logsUploadPref_ = { |
| 260 key: '', |
| 261 type: chrome.settingsPrivate.PrefType.BOOLEAN, |
| 262 value: enabled, |
| 263 }; |
| 264 }, |
| 265 |
| 266 /** |
| 267 * @param {boolean} enabled Whether to enable logs upload. |
| 268 * @private |
| 269 */ |
| 270 changeLogsPermission_: function(enabled) { |
| 271 var enabled = this.$.chromeCleanupLogsUploadControl.checked; |
| 272 this.browserProxy_.setLogsUploadPermission(enabled); |
| 273 }, |
| 274 |
| 275 /** |
245 * Dismiss the card. | 276 * Dismiss the card. |
246 * @private | 277 * @private |
247 */ | 278 */ |
248 dismiss_: function() { | 279 dismiss_: function() { |
249 this.browserProxy_.dismissCleanupPage(); | 280 this.browserProxy_.dismissCleanupPage(); |
250 }, | 281 }, |
251 | 282 |
252 /** | 283 /** |
253 * Hides the action button in the card when no action is available. | 284 * Hides the action button in the card when no action is available. |
254 * @private | 285 * @private |
(...skipping 16 matching lines...) Expand all Loading... |
271 this.actionButtonLabel_ = buttonLabel; | 302 this.actionButtonLabel_ = buttonLabel; |
272 this.doAction_ = action; | 303 this.doAction_ = action; |
273 }, | 304 }, |
274 | 305 |
275 /** | 306 /** |
276 * Disables the details section on the card. | 307 * Disables the details section on the card. |
277 * @private | 308 * @private |
278 */ | 309 */ |
279 disableDetails_: function() { | 310 disableDetails_: function() { |
280 this.showDetails_ = false; | 311 this.showDetails_ = false; |
281 this.detailsDescription = ''; | 312 this.showLogsPermission_ = false; |
282 this.showFilesToRemove_ = false; | 313 this.showFilesToRemove_ = false; |
283 this.filesToRemove_ = []; | 314 this.filesToRemove_ = []; |
284 }, | 315 }, |
285 | 316 |
286 /** | 317 /** |
287 * Enables the details section on the card. | 318 * Enables the details section on the card. |
288 * @param {!Array<!string>} files The list of files to present to the user. | 319 * @param {!Array<!string>} files The list of files to present to the user. |
289 * @private | 320 * @private |
290 */ | 321 */ |
291 enableDetails_: function(files) { | 322 enableDetails_: function(files) { |
292 this.showDetails_ = true; | 323 this.showDetails_ = true; |
293 this.detailsDescription = this.i18n('chromeCleanupExplanation'); | 324 this.showLogsPermission_ = true; |
294 // Note: doesn't change the state of this.showFilesToRemove_. | 325 // Note: doesn't change the state of this.showFilesToRemove_. |
295 this.filesToRemove_ = files; | 326 this.filesToRemove_ = files; |
296 }, | 327 }, |
297 | 328 |
298 /** | 329 /** |
299 * Sends an action to the browser proxy to start the cleanup. | 330 * Sends an action to the browser proxy to start the cleanup. |
300 * @private | 331 * @private |
301 */ | 332 */ |
302 startCleanup_: function() { | 333 startCleanup_: function() { |
303 this.browserProxy_.startCleanup(); | 334 this.browserProxy_.startCleanup( |
| 335 this.$.chromeCleanupLogsUploadControl.checked); |
304 }, | 336 }, |
305 | 337 |
306 /** | 338 /** |
307 * Sends an action to the browser proxy to restart the machine. | 339 * Sends an action to the browser proxy to restart the machine. |
308 * @private | 340 * @private |
309 */ | 341 */ |
310 restartComputer_: function() { | 342 restartComputer_: function() { |
311 this.browserProxy_.restartComputer(); | 343 this.browserProxy_.restartComputer(); |
312 }, | 344 }, |
313 | 345 |
(...skipping 27 matching lines...) Expand all Loading... |
341 | 373 |
342 /** | 374 /** |
343 * Resets the card's icon. | 375 * Resets the card's icon. |
344 * @private | 376 * @private |
345 */ | 377 */ |
346 resetIcon_: function() { | 378 resetIcon_: function() { |
347 this.statusIcon_ = ''; | 379 this.statusIcon_ = ''; |
348 this.statusIconClassName_ = ''; | 380 this.statusIconClassName_ = ''; |
349 }, | 381 }, |
350 }); | 382 }); |
OLD | NEW |