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