OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 cr.define('options', function() { | 5 cr.define('options', function() { |
6 | 6 |
7 var OptionsPage = options.OptionsPage; | 7 var OptionsPage = options.OptionsPage; |
8 | 8 |
9 /** | 9 /** |
10 * ClearBrowserData class | 10 * ClearBrowserDataOverlay class |
11 * Encapsulated handling of the 'Clear Browser Data' overlay page. | 11 * Encapsulated handling of the 'Clear Browser Data' overlay page. |
12 * @class | 12 * @class |
13 */ | 13 */ |
14 function ClearBrowserDataPage() { | 14 function ClearBrowserDataOverlay() { |
15 OptionsPage.call(this, 'clearBrowserDataPage', | 15 OptionsPage.call(this, 'clearBrowserDataOverlay', |
16 templateData.clearBrowserDataTitle, | 16 templateData.clearBrowserDataTitle, |
17 'clearBrowserDataPage'); | 17 'clearBrowserDataOverlay'); |
18 } | 18 } |
19 | 19 |
20 ClearBrowserDataPage.throbIntervalId = 0; | 20 ClearBrowserDataOverlay.throbIntervalId = 0; |
21 | 21 |
22 cr.addSingletonGetter(ClearBrowserDataPage); | 22 cr.addSingletonGetter(ClearBrowserDataOverlay); |
23 | 23 |
24 ClearBrowserDataPage.prototype = { | 24 ClearBrowserDataOverlay.prototype = { |
25 // Inherit ClearBrowserDataPage from OptionsPage. | 25 // Inherit ClearBrowserDataOverlay from OptionsPage. |
26 __proto__: OptionsPage.prototype, | 26 __proto__: OptionsPage.prototype, |
27 | 27 |
28 /** | 28 /** |
29 * Initialize the page. | 29 * Initialize the page. |
30 */ | 30 */ |
31 initializePage: function() { | 31 initializePage: function() { |
32 // Call base class implementation to starts preference initialization. | 32 // Call base class implementation to starts preference initialization. |
33 OptionsPage.prototype.initializePage.call(this); | 33 OptionsPage.prototype.initializePage.call(this); |
34 | 34 |
35 var f = this.updateCommitButtonState_.bind(this); | 35 var f = this.updateCommitButtonState_.bind(this); |
36 var types = ['browser.clear_data.browsing_history', | 36 var types = ['browser.clear_data.browsing_history', |
37 'browser.clear_data.download_history', | 37 'browser.clear_data.download_history', |
38 'browser.clear_data.cache', | 38 'browser.clear_data.cache', |
39 'browser.clear_data.cookies', | 39 'browser.clear_data.cookies', |
40 'browser.clear_data.passwords', | 40 'browser.clear_data.passwords', |
41 'browser.clear_data.form_data']; | 41 'browser.clear_data.form_data']; |
42 types.forEach(function(type) { | 42 types.forEach(function(type) { |
43 Preferences.getInstance().addEventListener(type, f); | 43 Preferences.getInstance().addEventListener(type, f); |
44 }); | 44 }); |
45 | 45 |
46 var checkboxes = document.querySelectorAll( | 46 var checkboxes = document.querySelectorAll( |
47 '#checkboxListData input[type=checkbox]'); | 47 '#cbdContentArea input[type=checkbox]'); |
48 for (var i = 0; i < checkboxes.length; i++) { | 48 for (var i = 0; i < checkboxes.length; i++) { |
49 checkboxes[i].onclick = f; | 49 checkboxes[i].onclick = f; |
50 } | 50 } |
51 this.updateCommitButtonState_(); | 51 this.updateCommitButtonState_(); |
52 | 52 |
53 // Setup click handler for the clear(Ok) button. | 53 $('clearBrowserDataDismiss').onclick = function(event) { |
54 $('clearBrowsingDataCommit').onclick = function(event) { | 54 ClearBrowserDataOverlay.dismiss(); |
| 55 }; |
| 56 $('clearBrowserDataCommit').onclick = function(event) { |
55 chrome.send('performClearBrowserData'); | 57 chrome.send('performClearBrowserData'); |
56 }; | 58 }; |
57 }, | 59 }, |
58 | 60 |
59 // Set the enabled state of the commit button. | 61 // Set the enabled state of the commit button. |
60 updateCommitButtonState_: function() { | 62 updateCommitButtonState_: function() { |
61 var checkboxes = document.querySelectorAll( | 63 var checkboxes = document.querySelectorAll( |
62 '#checkboxListData input[type=checkbox]'); | 64 '#cbdContentArea input[type=checkbox]'); |
63 var isChecked = false; | 65 var isChecked = false; |
64 for (var i = 0; i < checkboxes.length; i++) { | 66 for (var i = 0; i < checkboxes.length; i++) { |
65 if (checkboxes[i].checked) { | 67 if (checkboxes[i].checked) { |
66 isChecked = true; | 68 isChecked = true; |
67 break; | 69 break; |
68 } | 70 } |
69 } | 71 } |
70 $('clearBrowsingDataCommit').disabled = !isChecked; | 72 $('clearBrowserDataCommit').disabled = !isChecked; |
71 }, | 73 }, |
72 }; | 74 }; |
73 | 75 |
74 // | 76 // |
75 // Chrome callbacks | 77 // Chrome callbacks |
76 // | 78 // |
77 ClearBrowserDataPage.setClearingState = function(state) { | 79 ClearBrowserDataOverlay.setClearingState = function(state) { |
78 $('deleteBrowsingHistoryCheckbox').disabled = state; | 80 $('deleteBrowsingHistoryCheckbox').disabled = state; |
79 $('deleteDownloadHistoryCheckbox').disabled = state; | 81 $('deleteDownloadHistoryCheckbox').disabled = state; |
80 $('deleteCacheCheckbox').disabled = state; | 82 $('deleteCacheCheckbox').disabled = state; |
81 $('deleteCookiesCheckbox').disabled = state; | 83 $('deleteCookiesCheckbox').disabled = state; |
82 $('deletePasswordsCheckbox').disabled = state; | 84 $('deletePasswordsCheckbox').disabled = state; |
83 $('deleteFormDataCheckbox').disabled = state; | 85 $('deleteFormDataCheckbox').disabled = state; |
84 $('clearBrowsingDataTimePeriod').disabled = state; | 86 $('clearBrowserDataTimePeriod').disabled = state; |
85 $('cbdThrobber').style.visibility = state ? 'visible' : 'hidden'; | 87 $('cbdThrobber').style.visibility = state ? 'visible' : 'hidden'; |
86 | 88 |
87 if (state) | 89 if (state) |
88 $('clearBrowsingDataCommit').disabled = true; | 90 $('clearBrowserDataCommit').disabled = true; |
89 else | 91 else |
90 ClearBrowserDataPage.getInstance().updateCommitButtonState_(); | 92 ClearBrowserDataOverlay.getInstance().updateCommitButtonState_(); |
91 | 93 |
92 function advanceThrobber() { | 94 function advanceThrobber() { |
93 var throbber = $('cbdThrobber'); | 95 var throbber = $('cbdThrobber'); |
94 // TODO(csilv): make this smoother using time-based animation? | 96 // TODO(csilv): make this smoother using time-based animation? |
95 throbber.style.backgroundPositionX = | 97 throbber.style.backgroundPositionX = |
96 ((parseInt(getComputedStyle(throbber).backgroundPositionX, 10) - 16) % | 98 ((parseInt(getComputedStyle(throbber).backgroundPositionX, 10) - 16) % |
97 576) + 'px'; | 99 576) + 'px'; |
98 } | 100 } |
99 if (state) { | 101 if (state) { |
100 ClearBrowserDataPage.throbIntervalId = | 102 ClearBrowserDataOverlay.throbIntervalId = |
101 setInterval(advanceThrobber, 30); | 103 setInterval(advanceThrobber, 30); |
102 } else { | 104 } else { |
103 clearInterval(ClearBrowserDataPage.throbIntervalId); | 105 clearInterval(ClearBrowserDataOverlay.throbIntervalId); |
104 } | 106 } |
105 } | 107 }; |
106 | 108 |
107 ClearBrowserDataPage.setClearLocalDataLabel = function(label) { | 109 ClearBrowserDataOverlay.setClearLocalDataLabel = function(label) { |
108 $('deleteCookiesLabel').innerText = label; | 110 $('deleteCookiesLabel').innerText = label; |
109 }; | 111 }; |
110 | 112 |
111 ClearBrowserDataPage.dismiss = function() { | 113 ClearBrowserDataOverlay.doneClearing = function() { |
| 114 // The delay gives the user some feedback that the clearing |
| 115 // actually worked. Otherwise the dialog just vanishes instantly in most |
| 116 // cases. |
| 117 window.setTimeout(function() { |
| 118 ClearBrowserDataOverlay.dismiss(); |
| 119 }, 200); |
| 120 }; |
| 121 |
| 122 ClearBrowserDataOverlay.dismiss = function() { |
112 OptionsPage.clearOverlays(); | 123 OptionsPage.clearOverlays(); |
113 this.setClearingState(false); | 124 this.setClearingState(false); |
114 } | 125 }; |
115 | 126 |
116 // Export | 127 // Export |
117 return { | 128 return { |
118 ClearBrowserDataPage: ClearBrowserDataPage | 129 ClearBrowserDataOverlay: ClearBrowserDataOverlay |
119 }; | 130 }; |
120 | |
121 }); | 131 }); |
122 | |
OLD | NEW |