172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsencr.define('options', function() {
6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  var OptionsPage = options.OptionsPage;
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  /////////////////////////////////////////////////////////////////////////////
10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // CookiesView class:
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  /**
13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen   * Encapsulated handling of the cookies and other site data page.
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen   * @constructor
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen   */
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  function CookiesView(model) {
17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    OptionsPage.call(this, 'cookies',
1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                     templateData.cookiesViewPageTabTitle,
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                     'cookiesViewPage');
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  }
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  cr.addSingletonGetter(CookiesView);
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  CookiesView.prototype = {
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    __proto__: OptionsPage.prototype,
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    initializePage: function() {
28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      OptionsPage.prototype.initializePage.call(this);
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      $('cookies-search-box').addEventListener('search',
31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen          this.handleSearchQueryChange_.bind(this));
32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      $('remove-all-cookies-button').onclick = function(e) {
34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen        chrome.send('removeAllCookies', []);
35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      };
36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      var cookiesList = $('cookies-list');
38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      options.CookiesList.decorate(cookiesList);
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      this.addEventListener('visibleChange', this.handleVisibleChange_);
41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    },
42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    lastQuery_ : null,
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    /**
46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     * Search cookie using text in cookiesSearchBox.
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     */
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    searchCookie: function() {
49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      this.queryDelayTimerId_ = 0;
50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      var filter = $('cookies-search-box').value;
51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      if (this.lastQuery_ != filter) {
52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen        this.lastQuery_ = filter;
53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen        chrome.send('updateCookieSearchResults', [filter]);
54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      }
55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    },
56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    queryDelayTimerId_: 0,
58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    /**
60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen     * Handles search query changes.
61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     * @private
62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     * @param {!Event} e The event object.
63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     */
64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    handleSearchQueryChange_: function(e) {
65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      if (this.queryDelayTimerId_)
66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen        window.clearTimeout(this.queryDelayTimerId_);
67bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      this.queryDelayTimerId_ = window.setTimeout(
69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen          this.searchCookie.bind(this), 500);
70bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    },
71bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    initialized_: false,
73bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
74bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    /**
75bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     * Handler for OptionsPage's visible property change event.
76bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     * @private
77bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     * @param {Event} e Property change event.
78bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen     */
79bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    handleVisibleChange_: function(e) {
80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      if (!this.visible)
81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        return;
82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      if (!this.initialized_) {
83dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen        this.initialized_ = true;
84bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen        this.searchCookie();
85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      } else {
86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        $('cookies-list').redraw();
87bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      }
8821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    },
89bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  };
90bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
91bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // CookiesViewHandler callbacks.
92bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  CookiesView.onTreeItemAdded = function(args) {
93dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    $('cookies-list').addByParentId(args[0], args[1], args[2]);
94bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  };
95bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
96bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  CookiesView.onTreeItemRemoved = function(args) {
97dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    $('cookies-list').removeByParentId(args[0], args[1], args[2]);
98bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  };
99bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
100731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  CookiesView.loadChildren = function(args) {
101dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen    $('cookies-list').loadChildren(args[0], args[1]);
102731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  };
103731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
104bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Export
105bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  return {
106bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    CookiesView: CookiesView
107bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  };
108bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
109bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen});
110