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 
      7   var OptionsPage = options.OptionsPage;
      8 
      9   /////////////////////////////////////////////////////////////////////////////
     10   // CookiesView class:
     11 
     12   /**
     13    * Encapsulated handling of the cookies and other site data page.
     14    * @constructor
     15    */
     16   function CookiesView(model) {
     17     OptionsPage.call(this, 'cookies',
     18                      templateData.cookiesViewPageTabTitle,
     19                      'cookiesViewPage');
     20   }
     21 
     22   cr.addSingletonGetter(CookiesView);
     23 
     24   CookiesView.prototype = {
     25     __proto__: OptionsPage.prototype,
     26 
     27     initializePage: function() {
     28       OptionsPage.prototype.initializePage.call(this);
     29 
     30       $('cookies-search-box').addEventListener('search',
     31           this.handleSearchQueryChange_.bind(this));
     32 
     33       $('remove-all-cookies-button').onclick = function(e) {
     34         chrome.send('removeAllCookies', []);
     35       };
     36 
     37       var cookiesList = $('cookies-list');
     38       options.CookiesList.decorate(cookiesList);
     39 
     40       this.addEventListener('visibleChange', this.handleVisibleChange_);
     41     },
     42 
     43     lastQuery_ : null,
     44 
     45     /**
     46      * Search cookie using text in cookiesSearchBox.
     47      */
     48     searchCookie: function() {
     49       this.queryDelayTimerId_ = 0;
     50       var filter = $('cookies-search-box').value;
     51       if (this.lastQuery_ != filter) {
     52         this.lastQuery_ = filter;
     53         chrome.send('updateCookieSearchResults', [filter]);
     54       }
     55     },
     56 
     57     queryDelayTimerId_: 0,
     58 
     59     /**
     60      * Handles search query changes.
     61      * @private
     62      * @param {!Event} e The event object.
     63      */
     64     handleSearchQueryChange_: function(e) {
     65       if (this.queryDelayTimerId_)
     66         window.clearTimeout(this.queryDelayTimerId_);
     67 
     68       this.queryDelayTimerId_ = window.setTimeout(
     69           this.searchCookie.bind(this), 500);
     70     },
     71 
     72     initialized_: false,
     73 
     74     /**
     75      * Handler for OptionsPage's visible property change event.
     76      * @private
     77      * @param {Event} e Property change event.
     78      */
     79     handleVisibleChange_: function(e) {
     80       if (!this.visible)
     81         return;
     82       if (!this.initialized_) {
     83         this.initialized_ = true;
     84         this.searchCookie();
     85       } else {
     86         $('cookies-list').redraw();
     87       }
     88     },
     89   };
     90 
     91   // CookiesViewHandler callbacks.
     92   CookiesView.onTreeItemAdded = function(args) {
     93     $('cookies-list').addByParentId(args[0], args[1], args[2]);
     94   };
     95 
     96   CookiesView.onTreeItemRemoved = function(args) {
     97     $('cookies-list').removeByParentId(args[0], args[1], args[2]);
     98   };
     99 
    100   CookiesView.loadChildren = function(args) {
    101     $('cookies-list').loadChildren(args[0], args[1]);
    102   };
    103 
    104   // Export
    105   return {
    106     CookiesView: CookiesView
    107   };
    108 
    109 });
    110