1// Copyright 2014 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_COCOA_CONTENT_SETTINGS_COOKIES_TREE_CONTROLLER_BRIDGE_H_ 6#define CHROME_BROWSER_UI_COCOA_CONTENT_SETTINGS_COOKIES_TREE_CONTROLLER_BRIDGE_H_ 7 8#import <Cocoa/Cocoa.h> 9 10#import "base/mac/scoped_nsobject.h" 11#include "chrome/browser/browsing_data/cookies_tree_model.h" 12#import "chrome/browser/ui/cocoa/content_settings/cookie_tree_node.h" 13 14class CookiesTreeControllerBridge : public ui::TreeModelObserver { 15 public: 16 explicit CookiesTreeControllerBridge(CookiesTreeModel* model); 17 virtual ~CookiesTreeControllerBridge(); 18 19 // TreeModelObserver: 20 virtual void TreeNodesAdded(ui::TreeModel* model, 21 ui::TreeModelNode* parent, 22 int start, 23 int count) OVERRIDE; 24 virtual void TreeNodesRemoved(ui::TreeModel* model, 25 ui::TreeModelNode* parent, 26 int start, 27 int count) OVERRIDE; 28 virtual void TreeNodeChanged(ui::TreeModel* model, 29 ui::TreeModelNode* node) OVERRIDE; 30 31 CocoaCookieTreeNode* cocoa_model() const { return cocoa_model_.get(); } 32 33 private: 34 // Creates a CocoaCookieTreeNode from a platform-independent one. 35 // Return value is autoreleased. This creates child nodes recusively. 36 CocoaCookieTreeNode* CocoaNodeFromTreeNode(ui::TreeModelNode* node); 37 38 // Finds the Cocoa model node based on a platform-independent one. This is 39 // done by comparing the treeNode pointers. |start| is the node to start 40 // searching at. If |start| is nil, the root is used. 41 CocoaCookieTreeNode* FindCocoaNode(ui::TreeModelNode* node, 42 CocoaCookieTreeNode* start); 43 44 // The C++ model that this observes. 45 CookiesTreeModel* model_; // weak 46 47 // A copy of the model using Cocoa objects instead of C++ ones. 48 base::scoped_nsobject<CocoaCookieTreeNode> cocoa_model_; 49}; 50 51#endif // CHROME_BROWSER_UI_COCOA_CONTENT_SETTINGS_COOKIES_TREE_CONTROLLER_BRIDGE_H_ 52