cookies_view_handler.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
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#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_COOKIES_VIEW_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_OPTIONS_COOKIES_VIEW_HANDLER_H_
7
8#include "base/compiler_specific.h"
9#include "base/memory/scoped_ptr.h"
10#include "chrome/browser/browsing_data/cookies_tree_model.h"
11#include "chrome/browser/ui/webui/options/options_ui.h"
12
13class CookiesTreeModelUtil;
14
15namespace options {
16
17class CookiesViewHandler : public OptionsPageUIHandler,
18                           public CookiesTreeModel::Observer {
19 public:
20  CookiesViewHandler();
21  virtual ~CookiesViewHandler();
22
23  // OptionsPageUIHandler implementation.
24  virtual void GetLocalizedValues(
25      base::DictionaryValue* localized_strings) OVERRIDE;
26  virtual void RegisterMessages() OVERRIDE;
27
28  // CookiesTreeModel::Observer implementation.
29  virtual void TreeNodesAdded(ui::TreeModel* model,
30                              ui::TreeModelNode* parent,
31                              int start,
32                              int count) OVERRIDE;
33  virtual void TreeNodesRemoved(ui::TreeModel* model,
34                                ui::TreeModelNode* parent,
35                                int start,
36                                int count) OVERRIDE;
37  virtual void TreeNodeChanged(ui::TreeModel* model,
38                               ui::TreeModelNode* node) OVERRIDE {}
39  virtual void TreeModelBeginBatch(CookiesTreeModel* model) OVERRIDE;
40  virtual void TreeModelEndBatch(CookiesTreeModel* model) OVERRIDE;
41
42 private:
43  // Creates the CookiesTreeModel if neccessary.
44  void EnsureCookiesTreeModelCreated();
45
46  // Updates search filter for cookies tree model.
47  void UpdateSearchResults(const base::ListValue* args);
48
49  // Remove all sites data.
50  void RemoveAll(const base::ListValue* args);
51
52  // Remove selected sites data.
53  void Remove(const base::ListValue* args);
54
55  // Get the tree node using the tree path info in |args| and call
56  // SendChildren to pass back children nodes data to WebUI.
57  void LoadChildren(const base::ListValue* args);
58
59  // Get children nodes data and pass it to 'CookiesView.loadChildren' to
60  // update the WebUI.
61  void SendChildren(const CookieTreeNode* parent);
62
63  // Set the context in which this view is used - regular cookies window or
64  // the apps cookies window.
65  void SetViewContext(const base::ListValue* args);
66
67  // Reloads the CookiesTreeModel and passes the nodes to
68  // 'CookiesView.loadChildren' to update the WebUI.
69  void ReloadCookies(const base::ListValue* args);
70
71  // Return the proper callback string, depending on whether the model is
72  // in regular cookies mode or apps cookies mode.
73  std::string GetCallback(std::string method, CookiesTreeModel* model);
74
75  // Return the proper tree model, depending on the context in which the
76  // view operates.
77  CookiesTreeModel* GetTreeModel();
78
79  // The Cookies Tree model
80  scoped_ptr<CookiesTreeModel> cookies_tree_model_;
81  scoped_ptr<CookiesTreeModel> app_cookies_tree_model_;
82
83  // Flag to indicate whether there is a batch update in progress.
84  bool batch_update_;
85
86  // A flag to indicate which view is active - the apps dialog or the regular
87  // cookies one. This will cause different JavaScript functions to be called.
88  bool app_context_;
89
90  scoped_ptr<CookiesTreeModelUtil> model_util_;
91
92  DISALLOW_COPY_AND_ASSIGN(CookiesViewHandler);
93};
94
95}  // namespace options
96
97#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_COOKIES_VIEW_HANDLER_H_
98