OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 * @fileoverview Oobe ARC Terms of Service screen implementation. | 6 * @fileoverview Oobe ARC Terms of Service screen implementation. |
7 */ | 7 */ |
8 | 8 |
9 login.createScreen('ArcTermsOfServiceScreen', 'arc-tos', | 9 login.createScreen('ArcTermsOfServiceScreen', 'arc-tos', function() { |
10 function() { return { | 10 return { |
11 EXTERNAL_API: [ | 11 EXTERNAL_API: [ |
12 'setMetricsMode', | 12 'setMetricsMode', 'setBackupAndRestoreMode', 'setLocationServicesMode', |
13 'setBackupAndRestoreMode', | |
14 'setLocationServicesMode', | |
15 'setCountryCode' | 13 'setCountryCode' |
16 ], | 14 ], |
17 | 15 |
18 /** @override */ | 16 /** @override */ |
19 decorate: function(element) { | 17 decorate: function(element) { |
20 // Valid newOobeUI is not available at this time. | 18 // Valid newOobeUI is not available at this time. |
21 }, | 19 }, |
22 | 20 |
23 /** | 21 /** |
24 * Makes sure that UI is initialized and MD mode is correctly set. | 22 * Makes sure that UI is initialized and MD mode is correctly set. |
(...skipping 16 matching lines...) Expand all Loading... |
41 } else { | 39 } else { |
42 $('arc-tos').removeAttribute('md-mode'); | 40 $('arc-tos').removeAttribute('md-mode'); |
43 } | 41 } |
44 | 42 |
45 var closeButtons = document.querySelectorAll('.arc-overlay-close-button'); | 43 var closeButtons = document.querySelectorAll('.arc-overlay-close-button'); |
46 for (var i = 0; i < closeButtons.length; i++) { | 44 for (var i = 0; i < closeButtons.length; i++) { |
47 closeButtons[i].addEventListener('click', this.hideOverlay.bind(this)); | 45 closeButtons[i].addEventListener('click', this.hideOverlay.bind(this)); |
48 } | 46 } |
49 | 47 |
50 var termsView = this.getElement_('arc-tos-view'); | 48 var termsView = this.getElement_('arc-tos-view'); |
51 var requestFilter = { | 49 var requestFilter = {urls: ['<all_urls>'], types: ['main_frame']}; |
52 urls: ['<all_urls>'], | |
53 types: ['main_frame'] | |
54 }; | |
55 | 50 |
56 termsView.request.onErrorOccurred.addListener( | 51 termsView.request.onErrorOccurred.addListener( |
57 this.onTermsViewErrorOccurred.bind(this), requestFilter); | 52 this.onTermsViewErrorOccurred.bind(this), requestFilter); |
58 termsView.addEventListener('contentload', | 53 termsView.addEventListener( |
59 this.onTermsViewContentLoad.bind(this)); | 54 'contentload', this.onTermsViewContentLoad.bind(this)); |
60 | 55 |
61 // Open links from webview in overlay dialog. | 56 // Open links from webview in overlay dialog. |
62 var self = this; | 57 var self = this; |
63 termsView.addEventListener('newwindow', function(event) { | 58 termsView.addEventListener('newwindow', function(event) { |
64 event.preventDefault(); | 59 event.preventDefault(); |
65 self.showUrlOverlay(event.targetUrl); | 60 self.showUrlOverlay(event.targetUrl); |
66 }); | 61 }); |
67 | 62 |
68 termsView.addContentScripts([ | 63 termsView.addContentScripts([{ |
69 { name: 'postProcess', | 64 name: 'postProcess', |
70 matches: ['https://play.google.com/*'], | 65 matches: ['https://play.google.com/*'], |
71 css: { files: ['playstore.css'] }, | 66 css: {files: ['playstore.css']}, |
72 js: { files: ['playstore.js'] }, | 67 js: {files: ['playstore.js']}, |
73 run_at: 'document_end' | 68 run_at: 'document_end' |
74 }]); | 69 }]); |
75 | 70 |
76 this.getElement_('arc-policy-link').onclick = function() { | 71 this.getElement_('arc-policy-link').onclick = function() { |
77 termsView.executeScript( | 72 termsView.executeScript( |
78 {code: 'getPrivacyPolicyLink();'}, | 73 {code: 'getPrivacyPolicyLink();'}, function(results) { |
79 function(results) { | |
80 if (results && results.length == 1 && | 74 if (results && results.length == 1 && |
81 typeof results[0] == 'string') { | 75 typeof results[0] == 'string') { |
82 self.showUrlOverlay(results[0]); | 76 self.showUrlOverlay(results[0]); |
83 } else { | 77 } else { |
84 // currentLanguage can be updated in OOBE but not in Login page. | 78 // currentLanguage can be updated in OOBE but not in Login page. |
85 // languageList exists in OOBE otherwise use navigator.language. | 79 // languageList exists in OOBE otherwise use navigator.language. |
86 var currentLanguage; | 80 var currentLanguage; |
87 var languageList = loadTimeData.getValue('languageList'); | 81 var languageList = loadTimeData.getValue('languageList'); |
88 if (languageList) { | 82 if (languageList) { |
89 currentLanguage = Oobe.getSelectedValue(languageList); | 83 currentLanguage = Oobe.getSelectedValue(languageList); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 preference.parentElement.disabled = managed; | 128 preference.parentElement.disabled = managed; |
135 }, | 129 }, |
136 | 130 |
137 /** | 131 /** |
138 * Sets current backup and restore mode. | 132 * Sets current backup and restore mode. |
139 * @param {boolean} enabled Defines the value for backup and restore | 133 * @param {boolean} enabled Defines the value for backup and restore |
140 * checkbox. | 134 * checkbox. |
141 * @param {boolean} managed Defines whether this setting is set by policy. | 135 * @param {boolean} managed Defines whether this setting is set by policy. |
142 */ | 136 */ |
143 setBackupAndRestoreMode: function(enabled, managed) { | 137 setBackupAndRestoreMode: function(enabled, managed) { |
144 this.setPreference('arc-enable-backup-restore', | 138 this.setPreference('arc-enable-backup-restore', enabled, managed); |
145 enabled, managed); | |
146 }, | 139 }, |
147 | 140 |
148 /** | 141 /** |
149 * Sets current usage of location service opt in mode. | 142 * Sets current usage of location service opt in mode. |
150 * @param {boolean} enabled Defines the value for location service opt in. | 143 * @param {boolean} enabled Defines the value for location service opt in. |
151 * @param {boolean} managed Defines whether this setting is set by policy. | 144 * @param {boolean} managed Defines whether this setting is set by policy. |
152 */ | 145 */ |
153 setLocationServicesMode: function(enabled, managed) { | 146 setLocationServicesMode: function(enabled, managed) { |
154 this.setPreference('arc-enable-location-service', | 147 this.setPreference('arc-enable-location-service', enabled, managed); |
155 enabled, managed); | |
156 }, | 148 }, |
157 | 149 |
158 /** | 150 /** |
159 * Sets current country code for ToS. | 151 * Sets current country code for ToS. |
160 * @param {string} countryCode Country code based on current timezone. | 152 * @param {string} countryCode Country code based on current timezone. |
161 */ | 153 */ |
162 setCountryCode: function(countryCode) { | 154 setCountryCode: function(countryCode) { |
163 var scriptSetParameters = 'document.countryCode = \'' + | 155 var scriptSetParameters = |
164 countryCode.toLowerCase() + '\';'; | 156 'document.countryCode = \'' + countryCode.toLowerCase() + '\';'; |
165 if (this.useMDOobe) { | 157 if (this.useMDOobe) { |
166 scriptSetParameters += 'document.viewMode = \'large-view\';'; | 158 scriptSetParameters += 'document.viewMode = \'large-view\';'; |
167 } | 159 } |
168 var termsView = this.getElement_('arc-tos-view'); | 160 var termsView = this.getElement_('arc-tos-view'); |
169 termsView.removeContentScripts(['preProcess']); | 161 termsView.removeContentScripts(['preProcess']); |
170 termsView.addContentScripts([ | 162 termsView.addContentScripts([{ |
171 { name: 'preProcess', | 163 name: 'preProcess', |
172 matches: ['https://play.google.com/*'], | 164 matches: ['https://play.google.com/*'], |
173 js: { code: scriptSetParameters }, | 165 js: {code: scriptSetParameters}, |
174 run_at: 'document_start' | 166 run_at: 'document_start' |
175 }]); | 167 }]); |
176 | 168 |
177 if (!$('arc-tos').hidden) { | 169 if (!$('arc-tos').hidden) { |
178 this.reloadPlayStore(); | 170 this.reloadPlayStore(); |
179 } | 171 } |
180 }, | 172 }, |
181 | 173 |
182 /** | 174 /** |
183 * Buttons in Oobe wizard's button strip. | 175 * Buttons in Oobe wizard's button strip. |
184 * @type {array} Array of Buttons. | 176 * @type {array} Array of Buttons. |
185 */ | 177 */ |
(...skipping 28 matching lines...) Expand all Loading... |
214 return buttons; | 206 return buttons; |
215 }, | 207 }, |
216 | 208 |
217 /** | 209 /** |
218 * Handles Accept button click. | 210 * Handles Accept button click. |
219 */ | 211 */ |
220 onAccept: function() { | 212 onAccept: function() { |
221 this.enableButtons_(false); | 213 this.enableButtons_(false); |
222 | 214 |
223 var isBackupRestoreEnabled = | 215 var isBackupRestoreEnabled = |
224 this.getElement_('arc-enable-backup-restore').checked; | 216 this.getElement_('arc-enable-backup-restore').checked; |
225 var isLocationServiceEnabled = | 217 var isLocationServiceEnabled = |
226 this.getElement_('arc-enable-location-service').checked; | 218 this.getElement_('arc-enable-location-service').checked; |
227 | 219 |
228 chrome.send('arcTermsOfServiceAccept', | 220 chrome.send( |
| 221 'arcTermsOfServiceAccept', |
229 [isBackupRestoreEnabled, isLocationServiceEnabled]); | 222 [isBackupRestoreEnabled, isLocationServiceEnabled]); |
230 }, | 223 }, |
231 | 224 |
232 /** | 225 /** |
233 * Handles Retry button click. | 226 * Handles Retry button click. |
234 */ | 227 */ |
235 onSkip: function() { | 228 onSkip: function() { |
236 this.enableButtons_(false); | 229 this.enableButtons_(false); |
237 | 230 |
238 chrome.send('arcTermsOfServiceSkip'); | 231 chrome.send('arcTermsOfServiceSkip'); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 this.enableButtons_(false); | 300 this.enableButtons_(false); |
308 }, | 301 }, |
309 | 302 |
310 /** | 303 /** |
311 * Adds new class to the list of classes of root OOBE MD style and legacy | 304 * Adds new class to the list of classes of root OOBE MD style and legacy |
312 * style root elements. | 305 * style root elements. |
313 * @param {string} className class to remove. | 306 * @param {string} className class to remove. |
314 * | 307 * |
315 * @private | 308 * @private |
316 */ | 309 */ |
317 addClass_: function (className) { | 310 addClass_: function(className) { |
318 this.classList.add(className); | 311 this.classList.add(className); |
319 $('arc-tos-md').getElement('arc-tos-dialog-md').classList.add(className); | 312 $('arc-tos-md').getElement('arc-tos-dialog-md').classList.add(className); |
320 }, | 313 }, |
321 | 314 |
322 /** | 315 /** |
323 * Removes class from the list of classes of root OOBE MD style and legacy | 316 * Removes class from the list of classes of root OOBE MD style and legacy |
324 * style root elements. | 317 * style root elements. |
325 * @param {string} className class to remove. | 318 * @param {string} className class to remove. |
326 * | 319 * |
327 * @private | 320 * @private |
328 */ | 321 */ |
329 removeClass_: function (className) { | 322 removeClass_: function(className) { |
330 this.classList.remove(className); | 323 this.classList.remove(className); |
331 $('arc-tos-md').getElement('arc-tos-dialog-md').classList. | 324 $('arc-tos-md') |
332 remove(className); | 325 .getElement('arc-tos-dialog-md') |
| 326 .classList.remove(className); |
333 }, | 327 }, |
334 | 328 |
335 /** | 329 /** |
336 * Handles event when terms view is loaded. | 330 * Handles event when terms view is loaded. |
337 */ | 331 */ |
338 onTermsViewContentLoad: function() { | 332 onTermsViewContentLoad: function() { |
339 if (this.termsError) { | 333 if (this.termsError) { |
340 return; | 334 return; |
341 } | 335 } |
342 | 336 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 */ | 373 */ |
380 onBeforeShow: function(data) { | 374 onBeforeShow: function(data) { |
381 this.setMDMode_(); | 375 this.setMDMode_(); |
382 this.setLearnMoreHandlers_(); | 376 this.setLearnMoreHandlers_(); |
383 | 377 |
384 Oobe.getInstance().headerHidden = true; | 378 Oobe.getInstance().headerHidden = true; |
385 | 379 |
386 // Reload caption image in case it was not loaded during the | 380 // Reload caption image in case it was not loaded during the |
387 // initialization phase. | 381 // initialization phase. |
388 $('arc-tos-logo').src = | 382 $('arc-tos-logo').src = |
389 'https://play.google.com/about/images/play_logo.png'; | 383 'https://play.google.com/about/images/play_logo.png'; |
390 | 384 |
391 this.hideOverlay(); | 385 this.hideOverlay(); |
392 this.reloadPlayStore(); | 386 this.reloadPlayStore(); |
393 }, | 387 }, |
394 | 388 |
395 /** | 389 /** |
396 * Returns requested element from related part of HTML determined by current | 390 * Returns requested element from related part of HTML determined by current |
397 * MD OOBE mode. | 391 * MD OOBE mode. |
398 * @param {string} id Id of an element to find. | 392 * @param {string} id Id of an element to find. |
399 * | 393 * |
(...skipping 19 matching lines...) Expand all Loading... |
419 * service options. | 413 * service options. |
420 * | 414 * |
421 * @private | 415 * @private |
422 */ | 416 */ |
423 setLearnMoreHandlers_: function() { | 417 setLearnMoreHandlers_: function() { |
424 var self = this; | 418 var self = this; |
425 | 419 |
426 var leanMoreBackupAndRestoreText = | 420 var leanMoreBackupAndRestoreText = |
427 loadTimeData.getString('arcLearnMoreBackupAndRestore'); | 421 loadTimeData.getString('arcLearnMoreBackupAndRestore'); |
428 var backupAndRestore = this.getElement_('arc-enable-backup-restore'); | 422 var backupAndRestore = this.getElement_('arc-enable-backup-restore'); |
429 backupAndRestore.parentElement.querySelector( | 423 backupAndRestore.parentElement |
430 '#learn-more-link-backup-restore').onclick = function(event) { | 424 .querySelector('#learn-more-link-backup-restore') |
| 425 .onclick = function(event) { |
431 event.stopPropagation(); | 426 event.stopPropagation(); |
432 self.showLearnMoreOverlay(leanMoreBackupAndRestoreText); | 427 self.showLearnMoreOverlay(leanMoreBackupAndRestoreText); |
433 }; | 428 }; |
434 | 429 |
435 var leanMoreLocationServiceText = | 430 var leanMoreLocationServiceText = |
436 loadTimeData.getString('arcLearnMoreLocationService'); | 431 loadTimeData.getString('arcLearnMoreLocationService'); |
437 var locationService = this.getElement_('arc-enable-location-service'); | 432 var locationService = this.getElement_('arc-enable-location-service'); |
438 locationService.parentElement.querySelector( | 433 locationService.parentElement |
439 '#learn-more-link-location-service').onclick = function(event) { | 434 .querySelector('#learn-more-link-location-service') |
| 435 .onclick = function(event) { |
440 event.stopPropagation(); | 436 event.stopPropagation(); |
441 self.showLearnMoreOverlay(leanMoreLocationServiceText); | 437 self.showLearnMoreOverlay(leanMoreLocationServiceText); |
442 }; | 438 }; |
443 } | 439 } |
444 }; | 440 }; |
445 }); | 441 }); |
OLD | NEW |