// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #import #include "app/tree_model.h" #include "base/cocoa_protocols_mac.h" #include "base/scoped_nsobject.h" #include "base/scoped_ptr.h" #include "chrome/browser/cocoa/constrained_window_mac.h" #import "chrome/browser/cocoa/cookie_tree_node.h" #include "chrome/browser/cookies_tree_model.h" #include "chrome/common/notification_registrar.h" @class CollectedCookiesWindowController; class TabContents; // The constrained window delegate reponsible for managing the collected // cookies dialog. class CollectedCookiesMac : public ConstrainedWindowMacDelegateCustomSheet, public NotificationObserver { public: CollectedCookiesMac(NSWindow* parent, TabContents* tab_contents); void OnSheetDidEnd(NSWindow* sheet); // ConstrainedWindowMacDelegateCustomSheet implementation. virtual void DeleteDelegate(); private: virtual ~CollectedCookiesMac(); // NotificationObserver implementation. void Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details); NotificationRegistrar registrar_; ConstrainedWindow* window_; TabContents* tab_contents_; CollectedCookiesWindowController* sheet_controller_; DISALLOW_COPY_AND_ASSIGN(CollectedCookiesMac); }; // Controller for the collected cookies dialog. This class stores an internal // copy of the CookiesTreeModel but with Cocoa-converted values (NSStrings and // NSImages instead of std::strings and SkBitmaps). Doing this allows us to use // bindings for the interface. Changes are pushed to this internal model via a // very thin bridge (see cookies_window_controller.h). @interface CollectedCookiesWindowController : NSWindowController { @private // Platform-independent model. scoped_ptr allowedTreeModel_; scoped_ptr blockedTreeModel_; // Cached array of icons. scoped_nsobject icons_; // Our Cocoa copy of the model. scoped_nsobject cocoaAllowedTreeModel_; scoped_nsobject cocoaBlockedTreeModel_; IBOutlet NSTreeController* allowedTreeController_; IBOutlet NSTreeController* blockedTreeController_; IBOutlet NSOutlineView* allowedOutlineView_; IBOutlet NSOutlineView* blockedOutlineView_; TabContents* tabContents_; // weak } @property (readonly, nonatomic) NSTreeController* allowedTreeController; @property (readonly, nonatomic) NSTreeController* blockedTreeController; // Designated initializer. TabContents cannot be NULL. - (id)initWithTabContents:(TabContents*)tabContents; // Closes the sheet and ends the modal loop. This will also cleanup the memory. - (IBAction)closeSheet:(id)sender; // Returns the cocoaAllowedTreeModel_ and cocoaBlockedTreeModel_. - (CocoaCookieTreeNode*)cocoaAllowedTreeModel; - (CocoaCookieTreeNode*)cocoaBlockedTreeModel; - (void)setCocoaAllowedTreeModel:(CocoaCookieTreeNode*)model; - (void)setCocoaBlockedTreeModel:(CocoaCookieTreeNode*)model; // Returns the allowedTreeModel_ and blockedTreeModel_. - (CookiesTreeModel*)allowedTreeModel; - (CookiesTreeModel*)blockedTreeModel; - (void)loadTreeModelFromTabContents; @end