collected_cookies_mac.h revision ddb351dbec246cf1fab5ec20d2d5520909041de1
1// Copyright (c) 2011 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#import <Cocoa/Cocoa.h> 6 7#import "base/mac/cocoa_protocols.h" 8#include "base/memory/scoped_nsobject.h" 9#include "base/memory/scoped_ptr.h" 10#include "chrome/browser/cookies_tree_model.h" 11#include "chrome/browser/ui/cocoa/constrained_window_mac.h" 12#import "chrome/browser/ui/cocoa/content_settings/cookie_tree_node.h" 13#include "content/common/notification_registrar.h" 14 15@class CollectedCookiesWindowController; 16@class CookieDetailsViewController; 17@class VerticalGradientView; 18class TabContents; 19 20// The constrained window delegate reponsible for managing the collected 21// cookies dialog. 22class CollectedCookiesMac : public ConstrainedWindowMacDelegateCustomSheet, 23 public NotificationObserver { 24 public: 25 CollectedCookiesMac(NSWindow* parent, TabContents* tab_contents); 26 27 void OnSheetDidEnd(NSWindow* sheet); 28 29 // ConstrainedWindowMacDelegateCustomSheet implementation. 30 virtual void DeleteDelegate(); 31 32 private: 33 virtual ~CollectedCookiesMac(); 34 35 // NotificationObserver implementation. 36 virtual void Observe(NotificationType type, 37 const NotificationSource& source, 38 const NotificationDetails& details); 39 40 NotificationRegistrar registrar_; 41 42 ConstrainedWindow* window_; 43 44 TabContents* tab_contents_; 45 46 CollectedCookiesWindowController* sheet_controller_; 47 48 DISALLOW_COPY_AND_ASSIGN(CollectedCookiesMac); 49}; 50 51// Controller for the collected cookies dialog. This class stores an internal 52// copy of the CookiesTreeModel but with Cocoa-converted values (NSStrings and 53// NSImages instead of std::strings and SkBitmaps). Doing this allows us to use 54// bindings for the interface. Changes are pushed to this internal model via a 55// very thin bridge (see cookies_window_controller.h). 56@interface CollectedCookiesWindowController : NSWindowController 57 <NSOutlineViewDelegate, 58 NSTabViewDelegate, 59 NSWindowDelegate> { 60 @private 61 // Platform-independent model. 62 scoped_ptr<CookiesTreeModel> allowedTreeModel_; 63 scoped_ptr<CookiesTreeModel> blockedTreeModel_; 64 65 // Cached array of icons. 66 scoped_nsobject<NSMutableArray> icons_; 67 68 // Our Cocoa copy of the model. 69 scoped_nsobject<CocoaCookieTreeNode> cocoaAllowedTreeModel_; 70 scoped_nsobject<CocoaCookieTreeNode> cocoaBlockedTreeModel_; 71 72 BOOL allowedCookiesButtonsEnabled_; 73 BOOL blockedCookiesButtonsEnabled_; 74 75 IBOutlet NSTreeController* allowedTreeController_; 76 IBOutlet NSTreeController* blockedTreeController_; 77 IBOutlet NSOutlineView* allowedOutlineView_; 78 IBOutlet NSOutlineView* blockedOutlineView_; 79 IBOutlet VerticalGradientView* infoBar_; 80 IBOutlet NSImageView* infoBarIcon_; 81 IBOutlet NSTextField* infoBarText_; 82 IBOutlet NSTabView* tabView_; 83 IBOutlet NSScrollView* blockedScrollView_; 84 IBOutlet NSTextField* blockedCookiesText_; 85 IBOutlet NSView* cookieDetailsViewPlaceholder_; 86 87 scoped_nsobject<NSViewAnimation> animation_; 88 89 scoped_nsobject<CookieDetailsViewController> detailsViewController_; 90 91 TabContents* tabContents_; // weak 92 93 BOOL infoBarVisible_; 94 95 BOOL contentSettingsChanged_; 96} 97@property(readonly, nonatomic) NSTreeController* allowedTreeController; 98@property(readonly, nonatomic) NSTreeController* blockedTreeController; 99 100@property(assign, nonatomic) BOOL allowedCookiesButtonsEnabled; 101@property(assign, nonatomic) BOOL blockedCookiesButtonsEnabled; 102 103// Designated initializer. TabContents cannot be NULL. 104- (id)initWithTabContents:(TabContents*)tabContents; 105 106// Closes the sheet and ends the modal loop. This will also cleanup the memory. 107- (IBAction)closeSheet:(id)sender; 108 109- (IBAction)allowOrigin:(id)sender; 110- (IBAction)allowForSessionFromOrigin:(id)sender; 111- (IBAction)blockOrigin:(id)sender; 112 113// Returns the |cocoaAllowedTreeModel_| and |cocoaBlockedTreeModel_|. 114- (CocoaCookieTreeNode*)cocoaAllowedTreeModel; 115- (CocoaCookieTreeNode*)cocoaBlockedTreeModel; 116- (void)setCocoaAllowedTreeModel:(CocoaCookieTreeNode*)model; 117- (void)setCocoaBlockedTreeModel:(CocoaCookieTreeNode*)model; 118 119// Returns the |allowedTreeModel_| and |blockedTreeModel_|. 120- (CookiesTreeModel*)allowedTreeModel; 121- (CookiesTreeModel*)blockedTreeModel; 122 123- (void)loadTreeModelFromTabContents; 124@end 125