| 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 |