Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / resources / options / cookies_view.js
1 // Copyright (c) 2012 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 Page = cr.ui.pageManager.Page;
8   var PageManager = cr.ui.pageManager.PageManager;
9
10   /////////////////////////////////////////////////////////////////////////////
11   // CookiesView class:
12
13   /**
14    * Encapsulated handling of the cookies and other site data page.
15    * @constructor
16    * @extends {cr.ui.pageManager.Page}
17    */
18   function CookiesView(model) {
19     Page.call(this, 'cookies',
20               loadTimeData.getString('cookiesViewPageTabTitle'),
21               'cookies-view-page');
22   }
23
24   cr.addSingletonGetter(CookiesView);
25
26   CookiesView.prototype = {
27     __proto__: Page.prototype,
28
29     /**
30      * The timer id of the timer set on search query change events.
31      * @type {number}
32      * @private
33      */
34     queryDelayTimerId_: 0,
35
36     /**
37      * The most recent search query, empty string if the query is empty.
38      * @type {string}
39      * @private
40      */
41     lastQuery_: '',
42
43     /** @override */
44     initializePage: function() {
45       Page.prototype.initializePage.call(this);
46
47       var searchBox = this.pageDiv.querySelector('.cookies-search-box');
48       searchBox.addEventListener(
49           'search', this.handleSearchQueryChange_.bind(this));
50       searchBox.onkeydown = function(e) {
51         // Prevent the overlay from handling this event.
52         if (e.keyIdentifier == 'Enter')
53           e.stopPropagation();
54       };
55
56       this.pageDiv.querySelector('.remove-all-cookies-button').onclick =
57           function(e) {
58             chrome.send('removeAllCookies');
59           };
60
61       var cookiesList = this.pageDiv.querySelector('.cookies-list');
62       options.CookiesList.decorate(cookiesList);
63
64       this.addEventListener('visibleChange', this.handleVisibleChange_);
65
66       this.pageDiv.querySelector('.cookies-view-overlay-confirm').onclick =
67           PageManager.closeOverlay.bind(PageManager);
68     },
69
70     /** @override */
71     didShowPage: function() {
72       this.pageDiv.querySelector('.cookies-search-box').value = '';
73       this.lastQuery_ = '';
74     },
75
76     /**
77      * Search cookie using text in |cookies-search-box|.
78      */
79     searchCookie: function() {
80       this.queryDelayTimerId_ = 0;
81       var filter = this.pageDiv.querySelector('.cookies-search-box').value;
82       if (this.lastQuery_ != filter) {
83         this.lastQuery_ = filter;
84         chrome.send('updateCookieSearchResults', [filter]);
85       }
86     },
87
88     /**
89      * Handles search query changes.
90      * @param {!Event} e The event object.
91      * @private
92      */
93     handleSearchQueryChange_: function(e) {
94       var stringId = document.querySelector('.cookies-search-box').value ?
95           'remove_all_shown_cookie' : 'remove_all_cookie';
96       document.querySelector('.remove-all-cookies-button').innerHTML =
97           loadTimeData.getString(stringId);
98       if (this.queryDelayTimerId_)
99         window.clearTimeout(this.queryDelayTimerId_);
100
101       this.queryDelayTimerId_ = window.setTimeout(
102           this.searchCookie.bind(this), 500);
103     },
104
105     initialized_: false,
106
107     /**
108      * Handler for Page's visible property change event.
109      * @param {Event} e Property change event.
110      * @private
111      */
112     handleVisibleChange_: function(e) {
113       if (!this.visible)
114         return;
115
116       chrome.send('reloadCookies');
117
118       if (!this.initialized_) {
119         this.initialized_ = true;
120         this.searchCookie();
121       } else {
122         this.pageDiv.querySelector('.cookies-list').redraw();
123       }
124
125       this.pageDiv.querySelector('.cookies-search-box').focus();
126     },
127   };
128
129   // CookiesViewHandler callbacks.
130   CookiesView.onTreeItemAdded = function(args) {
131     $('cookies-list').addByParentId(args[0], args[1], args[2]);
132   };
133
134   CookiesView.onTreeItemRemoved = function(args) {
135     $('cookies-list').removeByParentId(args[0], args[1], args[2]);
136   };
137
138   CookiesView.loadChildren = function(args) {
139     $('cookies-list').loadChildren(args[0], args[1]);
140   };
141
142   // Export
143   return {
144     CookiesView: CookiesView
145   };
146
147 });