cookies_view_handler.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
197bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten// Copyright (c) 2012 The Chromium Authors. All rights reserved.
297bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten// Use of this source code is governed by a BSD-style license that can be
397bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten// found in the LICENSE file.
497bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
597bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_COOKIES_VIEW_HANDLER_H_
697bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten#define CHROME_BROWSER_UI_WEBUI_OPTIONS_COOKIES_VIEW_HANDLER_H_
797bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
897bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten#include "base/compiler_specific.h"
997bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten#include "base/memory/scoped_ptr.h"
1097bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten#include "chrome/browser/browsing_data/cookies_tree_model.h"
1197bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten#include "chrome/browser/ui/webui/options/options_ui.h"
1297bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
1397bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kastenclass CookiesTreeModelUtil;
1497bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
1597bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kastennamespace options {
1697bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
1797bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kastenclass CookiesViewHandler : public OptionsPageUIHandler,
1897bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten                           public CookiesTreeModel::Observer {
1997bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten public:
20b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  CookiesViewHandler();
2197bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  virtual ~CookiesViewHandler();
2297bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
2397bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  // OptionsPageUIHandler implementation.
2497bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  virtual void GetLocalizedValues(
2597bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten      base::DictionaryValue* localized_strings) OVERRIDE;
2697bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  virtual void RegisterMessages() OVERRIDE;
2797bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
28b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // CookiesTreeModel::Observer implementation.
29b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  virtual void TreeNodesAdded(ui::TreeModel* model,
3097bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten                              ui::TreeModelNode* parent,
31b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten                              int start,
3297bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten                              int count) OVERRIDE;
33b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  virtual void TreeNodesRemoved(ui::TreeModel* model,
34b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten                                ui::TreeModelNode* parent,
35b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten                                int start,
36ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten                                int count) OVERRIDE;
3797bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  virtual void TreeNodeChanged(ui::TreeModel* model,
38b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten                               ui::TreeModelNode* node) OVERRIDE {}
39b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  virtual void TreeModelBeginBatch(CookiesTreeModel* model) OVERRIDE;
40b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  virtual void TreeModelEndBatch(CookiesTreeModel* model) OVERRIDE;
4197bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
42b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten private:
4397bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  // Creates the CookiesTreeModel if neccessary.
44b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  void EnsureCookiesTreeModelCreated();
45b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
46b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // Updates search filter for cookies tree model.
47b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  void UpdateSearchResults(const base::ListValue* args);
48b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
49b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // Remove all sites data.
50b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  void RemoveAll(const base::ListValue* args);
51b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
52b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // Remove selected sites data.
53b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  void Remove(const base::ListValue* args);
54b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
55b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // Get the tree node using the tree path info in |args| and call
56b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // SendChildren to pass back children nodes data to WebUI.
57b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  void LoadChildren(const base::ListValue* args);
58b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
59b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // Get children nodes data and pass it to 'CookiesView.loadChildren' to
60b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // update the WebUI.
61b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  void SendChildren(const CookieTreeNode* parent);
62b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
63b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  // Reloads the CookiesTreeModel and passes the nodes to
6497bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  // 'CookiesView.loadChildren' to update the WebUI.
6597bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  void ReloadCookies(const base::ListValue* args);
6697bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
6797bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  // The Cookies Tree model
6897bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  scoped_ptr<CookiesTreeModel> cookies_tree_model_;
6997bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
7097bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten  // Flag to indicate whether there is a batch update in progress.
71b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  bool batch_update_;
72b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
73b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  scoped_ptr<CookiesTreeModelUtil> model_util_;
74b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
75b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten  DISALLOW_COPY_AND_ASSIGN(CookiesViewHandler);
7697bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten};
77b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten
7897bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten}  // namespace options
7997bdbe13fc48640babe6c1ce270660476f04c3dfGlenn Kasten
80b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten#endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_COOKIES_VIEW_HANDLER_H_
81b66b0745d45f4c0c7620749185f7fb3306804ce3Glenn Kasten