Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(658)

Unified Diff: chrome/browser/cocoa/collected_cookies_mac.mm

Issue 2884024: [Mac] Add buttons to the collected cookies dialog to add content exceptions. (Closed) Base URL: git://codf21.jail/chromium.git
Patch Set: remove session only button for allowed cookies. Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/cocoa/collected_cookies_mac.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 {
« no previous file with comments | « chrome/browser/cocoa/collected_cookies_mac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698