cookies_tree_model_adapter.h revision ddb351dbec246cf1fab5ec20d2d5520909041de1
1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_UI_WEBUI_COOKIES_TREE_MODEL_ADAPTER_H_ 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_UI_WEBUI_COOKIES_TREE_MODEL_ADAPTER_H_ 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/cookies_tree_model.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ListValue; 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Value; 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass WebUI; 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// CookiesTreeModelAdapter binds a CookiesTreeModel with a JS tree. It observes 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// tree model changes and forwards them to JS tree. It also provides a 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// a callback for JS tree to load children of a specific node. 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass CookiesTreeModelAdapter : public CookiesTreeModel::Observer { 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CookiesTreeModelAdapter(); 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~CookiesTreeModelAdapter(); 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Initializes with given WebUI. 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void Init(WebUI* web_ui); 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Sets up the bindings between js tree and |model|. 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Note that this class does not take ownership of the model. 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void Bind(const std::string& tree_id, CookiesTreeModel* model); 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // CookiesTreeModel::Observer implementation. 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void TreeNodesAdded(ui::TreeModel* model, 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ui::TreeModelNode* parent, 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int start, 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int count); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void TreeNodesRemoved(ui::TreeModel* model, 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ui::TreeModelNode* parent, 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int start, 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int count); 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void TreeNodeChanged(ui::TreeModel* model, ui::TreeModelNode* node) {} 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void TreeModelBeginBatch(CookiesTreeModel* model); 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void TreeModelEndBatch(CookiesTreeModel* model); 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // JS callback that gets the tree node using the tree path info in |args| and 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // call SendChildren to pass back children nodes data to WebUI. 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void RequestChildren(const ListValue* args); 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Get children nodes data and pass it to 'CookiesTree.loadChildren' to 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // update the WebUI. 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void SendChildren(CookieTreeNode* parent); 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Helper function to get a Value* representing id of |node|. 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Caller needs to free the returned Value. 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Value* GetTreeNodeId(CookieTreeNode* node); 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Hosting WebUI of the js tree. 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WebUI* web_ui_; 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Id of JS tree that is managed by this handler. 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string tree_id_; 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The Cookies Tree model. Note that we are not owning the model. 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CookiesTreeModel* model_; 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Flag to indicate whether there is a batch update in progress. 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool batch_update_; 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DISALLOW_COPY_AND_ASSIGN(CookiesTreeModelAdapter); 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // CHROME_BROWSER_UI_WEBUI_COOKIES_TREE_MODEL_ADAPTER_H_ 72