Home | History | Annotate | Download | only in options
      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   var OptionsPage = options.OptionsPage;
      7 
      8   /**
      9    * ClearBrowserDataOverlay class
     10    * Encapsulated handling of the 'Clear Browser Data' overlay page.
     11    * @class
     12    */
     13   function ClearBrowserDataOverlay() {
     14     OptionsPage.call(this, 'clearBrowserData',
     15                      templateData.clearBrowserDataOverlayTabTitle,
     16                      'clearBrowserDataOverlay');
     17   }
     18 
     19   cr.addSingletonGetter(ClearBrowserDataOverlay);
     20 
     21   ClearBrowserDataOverlay.prototype = {
     22     // Inherit ClearBrowserDataOverlay from OptionsPage.
     23     __proto__: OptionsPage.prototype,
     24 
     25     /**
     26      * Initialize the page.
     27      */
     28     initializePage: function() {
     29       // Call base class implementation to starts preference initialization.
     30       OptionsPage.prototype.initializePage.call(this);
     31 
     32       var f = this.updateCommitButtonState_.bind(this);
     33       var types = ['browser.clear_data.browsing_history',
     34                    'browser.clear_data.download_history',
     35                    'browser.clear_data.cache',
     36                    'browser.clear_data.cookies',
     37                    'browser.clear_data.passwords',
     38                    'browser.clear_data.form_data'];
     39       types.forEach(function(type) {
     40           Preferences.getInstance().addEventListener(type, f);
     41       });
     42 
     43       var checkboxes = document.querySelectorAll(
     44           '#cbdContentArea input[type=checkbox]');
     45       for (var i = 0; i < checkboxes.length; i++) {
     46         checkboxes[i].onclick = f;
     47       }
     48       this.updateCommitButtonState_();
     49 
     50       $('clearBrowserDataDismiss').onclick = function(event) {
     51         ClearBrowserDataOverlay.dismiss();
     52       };
     53       $('clearBrowserDataCommit').onclick = function(event) {
     54         chrome.send('performClearBrowserData');
     55       };
     56     },
     57 
     58     // Set the enabled state of the commit button.
     59     updateCommitButtonState_: function() {
     60       var checkboxes = document.querySelectorAll(
     61           '#cbdContentArea input[type=checkbox]');
     62       var isChecked = false;
     63       for (var i = 0; i < checkboxes.length; i++) {
     64         if (checkboxes[i].checked) {
     65           isChecked = true;
     66           break;
     67         }
     68       }
     69       $('clearBrowserDataCommit').disabled = !isChecked;
     70     },
     71   };
     72 
     73   //
     74   // Chrome callbacks
     75   //
     76   ClearBrowserDataOverlay.setClearingState = function(state) {
     77     $('deleteBrowsingHistoryCheckbox').disabled = state;
     78     $('deleteDownloadHistoryCheckbox').disabled = state;
     79     $('deleteCacheCheckbox').disabled = state;
     80     $('deleteCookiesCheckbox').disabled = state;
     81     $('deletePasswordsCheckbox').disabled = state;
     82     $('deleteFormDataCheckbox').disabled = state;
     83     $('clearBrowserDataTimePeriod').disabled = state;
     84     $('cbdThrobber').style.visibility = state ? 'visible' : 'hidden';
     85 
     86     if (state)
     87       $('clearBrowserDataCommit').disabled = true;
     88     else
     89       ClearBrowserDataOverlay.getInstance().updateCommitButtonState_();
     90   };
     91 
     92   ClearBrowserDataOverlay.doneClearing = function() {
     93     // The delay gives the user some feedback that the clearing
     94     // actually worked. Otherwise the dialog just vanishes instantly in most
     95     // cases.
     96     window.setTimeout(function() {
     97       ClearBrowserDataOverlay.dismiss();
     98     }, 200);
     99   };
    100 
    101   ClearBrowserDataOverlay.dismiss = function() {
    102     OptionsPage.closeOverlay();
    103     this.setClearingState(false);
    104   };
    105 
    106   // Export
    107   return {
    108     ClearBrowserDataOverlay: ClearBrowserDataOverlay
    109   };
    110 });
    111