| Index: chrome/browser/cocoa/collected_cookies_mac.mm
|
| diff --git a/chrome/browser/cocoa/collected_cookies_mac.mm b/chrome/browser/cocoa/collected_cookies_mac.mm
|
| index 25cc43c7f85c9fa887a129ce7fce93efc703e42c..693c8e417b89bb0807bb7c8585adda7eb18f9b67 100644
|
| --- a/chrome/browser/cocoa/collected_cookies_mac.mm
|
| +++ b/chrome/browser/cocoa/collected_cookies_mac.mm
|
| @@ -10,6 +10,8 @@
|
| #include "app/resource_bundle.h"
|
| #import "base/mac_util.h"
|
| #include "base/sys_string_conversions.h"
|
| +#include "chrome/browser/cocoa/content_settings_dialog_controller.h"
|
| +#include "chrome/browser/profile.h"
|
| #include "chrome/browser/tab_contents/tab_contents.h"
|
| #include "chrome/common/notification_service.h"
|
| #include "grit/generated_resources.h"
|
| @@ -18,6 +20,8 @@
|
| #include "third_party/apple/ImageAndTextCell.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
|
|
| +static const CGFloat kMinCollectedCookiesViewHeight = 116;
|
| +
|
| #pragma mark Bridge between the constrained window delegate and the sheet
|
|
|
| // The delegate used to forward the events from the sheet to the constrained
|
| @@ -99,6 +103,11 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) {
|
|
|
| @implementation CollectedCookiesWindowController
|
|
|
| +@synthesize allowedCookiesButtonsEnabled =
|
| + allowedCookiesButtonsEnabled_;
|
| +@synthesize blockedCookiesButtonsEnabled =
|
| + blockedCookiesButtonsEnabled_;
|
| +
|
| @synthesize allowedTreeController = allowedTreeController_;
|
| @synthesize blockedTreeController = blockedTreeController_;
|
|
|
| @@ -125,6 +134,57 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) {
|
| [NSApp endSheet:[self window]];
|
| }
|
|
|
| +- (void)addException:(ContentSetting)setting
|
| + forTreeController:(NSTreeController*)controller {
|
| + NSArray* nodes = [controller selectedNodes];
|
| + for (NSTreeNode* treeNode in nodes) {
|
| + CocoaCookieTreeNode* node = [treeNode representedObject];
|
| + CookieTreeNode* cookie = static_cast<CookieTreeNode*>([node treeNode]);
|
| + if (cookie->GetDetailedInfo().node_type !=
|
| + CookieTreeNode::DetailedInfo::TYPE_ORIGIN) {
|
| + continue;
|
| + }
|
| + CookieTreeOriginNode* origin_node =
|
| + static_cast<CookieTreeOriginNode*>(cookie);
|
| + origin_node->CreateContentException(
|
| + tabContents_->profile()->GetHostContentSettingsMap(),
|
| + setting);
|
| + }
|
| + [[ContentSettingsDialogController
|
| + showContentSettingsForType:CONTENT_SETTINGS_TYPE_COOKIES
|
| + profile:tabContents_->profile()]
|
| + showCookieExceptions:self];
|
| +}
|
| +
|
| +- (IBAction)allowOrigin:(id)sender {
|
| + [self addException:CONTENT_SETTING_ALLOW
|
| + forTreeController:blockedTreeController_];
|
| +}
|
| +
|
| +- (IBAction)allowForSessionFromOrigin:(id)sender {
|
| + [self addException:CONTENT_SETTING_SESSION_ONLY
|
| + forTreeController:blockedTreeController_];
|
| +}
|
| +
|
| +- (IBAction)blockOrigin:(id)sender {
|
| + [self addException:CONTENT_SETTING_BLOCK
|
| + forTreeController:allowedTreeController_];
|
| +}
|
| +
|
| +- (CGFloat) splitView:(NSSplitView *)sender
|
| + constrainMinCoordinate:(CGFloat)proposedMin
|
| + ofSubviewAt:(NSInteger)offset {
|
| + return proposedMin + kMinCollectedCookiesViewHeight;
|
| +}
|
| +- (CGFloat) splitView:(NSSplitView *)sender
|
| + constrainMaxCoordinate:(CGFloat)proposedMax
|
| + ofSubviewAt:(NSInteger)offset {
|
| + return proposedMax - kMinCollectedCookiesViewHeight;
|
| +}
|
| +- (BOOL)splitView:(NSSplitView *)sender canCollapseSubview:(NSView *)subview {
|
| + return YES;
|
| +}
|
| +
|
| - (CocoaCookieTreeNode*)cocoaAllowedTreeModel {
|
| return cocoaAllowedTreeModel_.get();
|
| }
|
| @@ -166,6 +226,45 @@ void CollectedCookiesMac::OnSheetDidEnd(NSWindow* sheet) {
|
| [static_cast<ImageAndTextCell*>(cell) setImage:icon];
|
| }
|
|
|
| +- (void)outlineViewSelectionDidChange:(NSNotification*)notif {
|
| + BOOL isAllowedOutlineView;
|
| + if ([notif object] == allowedOutlineView_) {
|
| + isAllowedOutlineView = YES;
|
| + } else if ([notif object] == blockedOutlineView_) {
|
| + isAllowedOutlineView = NO;
|
| + } else {
|
| + NOTREACHED();
|
| + return;
|
| + }
|
| + NSTreeController* controller =
|
| + isAllowedOutlineView ? allowedTreeController_ : blockedTreeController_;
|
| +
|
| + NSArray* nodes = [controller selectedNodes];
|
| + for (NSTreeNode* treeNode in nodes) {
|
| + CocoaCookieTreeNode* node = [treeNode representedObject];
|
| + CookieTreeNode* cookie = static_cast<CookieTreeNode*>([node treeNode]);
|
| + if (cookie->GetDetailedInfo().node_type !=
|
| + CookieTreeNode::DetailedInfo::TYPE_ORIGIN) {
|
| + continue;
|
| + }
|
| + CookieTreeOriginNode* origin_node =
|
| + static_cast<CookieTreeOriginNode*>(cookie);
|
| + if (origin_node->CanCreateContentException()) {
|
| + if (isAllowedOutlineView) {
|
| + [self setAllowedCookiesButtonsEnabled:YES];
|
| + } else {
|
| + [self setBlockedCookiesButtonsEnabled:YES];
|
| + }
|
| + return;
|
| + }
|
| + }
|
| + if (isAllowedOutlineView) {
|
| + [self setAllowedCookiesButtonsEnabled:NO];
|
| + } else {
|
| + [self setBlockedCookiesButtonsEnabled:NO];
|
| + }
|
| +}
|
| +
|
| // Initializes the |allowedTreeModel_| and |blockedTreeModel_|, and builds
|
| // the |cocoaAllowedTreeModel_| and |cocoaBlockedTreeModel_|.
|
| - (void)loadTreeModelFromTabContents {
|
|
|