Index: chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm |
diff --git a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm |
index 5d8df94028728e71101f9ef22d563b3c37de2f90..403ae4a20e06029716664a39d93c8827f89079ed 100644 |
--- a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm |
+++ b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm |
@@ -57,9 +57,6 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
ui::Accelerator* accelerator) override { |
return false; |
} |
- void ExecuteCommand(int command_id, int event_flags) override { |
- [bubble_controller_ onMenuItemClicked:command_id]; |
- } |
private: |
PermissionBubbleController* bubble_controller_; // Weak, owns us. |
DISALLOW_COPY_AND_ASSIGN(MenuDelegate); |
@@ -68,8 +65,8 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
} // namespace |
// NSPopUpButton with a menu containing two items: allow and block. |
-// One AllowBlockMenuButton is used for each requested permission, but only when |
-// the permission bubble is in 'customize' mode. |
+// One AllowBlockMenuButton is used for each requested permission when there are |
+// multiple permissions in the bubble. |
@interface AllowBlockMenuButton : NSPopUpButton { |
@private |
scoped_ptr<PermissionMenuModel> menuModel_; |
@@ -183,10 +180,6 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
// Returns an autoreleased NSView displaying a block button. |
- (NSView*)blockButton; |
-// Returns an autoreleased NSView with a block button and a drop-down menu |
-// with one item, which will change the UI to allow customizing the permissions. |
-- (NSView*)blockButtonWithCustomizeMenu; |
- |
// Returns an autoreleased NSView displaying the close 'x' button. |
- (NSView*)closeButton; |
@@ -202,9 +195,6 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
// Called when the 'close' button is pressed. |
- (void)onClose:(id)sender; |
-// Called when the 'customize' button is pressed. |
-- (void)onCustomize:(id)sender; |
- |
// Sets the width of both |viewA| and |viewB| to be the larger of the |
// two views' widths. Does not change either view's origin or height. |
+ (CGFloat)matchWidthsOf:(NSView*)viewA andOf:(NSView*)viewB; |
@@ -267,32 +257,31 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
- (void)showAtAnchor:(NSPoint)anchorPoint |
withDelegate:(PermissionBubbleView::Delegate*)delegate |
forRequests:(const std::vector<PermissionBubbleRequest*>&)requests |
- acceptStates:(const std::vector<bool>&)acceptStates |
- customizationMode:(BOOL)customizationMode { |
+ acceptStates:(const std::vector<bool>&)acceptStates { |
DCHECK(!requests.empty()); |
DCHECK(delegate); |
- DCHECK(!customizationMode || (requests.size() == acceptStates.size())); |
delegate_ = delegate; |
NSView* contentView = [[self window] contentView]; |
[contentView setSubviews:@[]]; |
+ BOOL singlePermission = requests.size() == 1; |
+ |
// Create one button to use as a guide for the permissions' y-offsets. |
base::scoped_nsobject<NSView> allowOrOkButton; |
- if (customizationMode) { |
- NSString* okTitle = l10n_util::GetNSString(IDS_OK); |
- allowOrOkButton.reset([[self buttonWithTitle:okTitle |
- action:@selector(ok:)] retain]); |
- } else { |
+ if (singlePermission) { |
NSString* allowTitle = l10n_util::GetNSString(IDS_PERMISSION_ALLOW); |
allowOrOkButton.reset([[self buttonWithTitle:allowTitle |
action:@selector(onAllow:)] retain]); |
+ } else { |
+ NSString* okTitle = l10n_util::GetNSString(IDS_OK); |
+ allowOrOkButton.reset([[self buttonWithTitle:okTitle |
+ action:@selector(ok:)] retain]); |
} |
CGFloat yOffset = 2 * kVerticalPadding + NSMaxY([allowOrOkButton frame]); |
- BOOL singlePermission = requests.size() == 1; |
base::scoped_nsobject<NSMutableArray> permissionMenus; |
- if (customizationMode) |
+ if (!singlePermission) |
permissionMenus.reset([[NSMutableArray alloc] init]); |
CGFloat maxPermissionLineWidth = 0; |
@@ -305,7 +294,7 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
[permissionView setFrameOrigin:origin]; |
[contentView addSubview:permissionView]; |
- if (customizationMode) { |
+ if (!singlePermission) { |
int index = it - requests.begin(); |
base::scoped_nsobject<NSView> menu( |
[[self menuForRequest:(*it) |
@@ -342,7 +331,7 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
bubbleFrame.size.height = NSMaxY([titleView frame]) + kVerticalPadding + |
info_bubble::kBubbleArrowHeight; |
- if (customizationMode) { |
+ if (!singlePermission) { |
// Add the maximum menu width to the bubble width. |
CGFloat maxMenuWidth = 0; |
for (AllowBlockMenuButton* button in permissionMenus.get()) { |
@@ -380,20 +369,9 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
[allowOrOkButton setFrameOrigin:NSMakePoint(xOrigin, kVerticalPadding)]; |
[contentView addSubview:allowOrOkButton]; |
- if (customizationMode) { |
- // Adjust the horizontal origin for each menu so that its right edge |
- // lines up with the right edge of the ok button. |
- CGFloat rightEdge = NSMaxX([allowOrOkButton frame]); |
- for (NSView* view in permissionMenus.get()) { |
- [view setFrameOrigin:NSMakePoint(rightEdge - NSWidth([view frame]), |
- NSMinY([view frame]))]; |
- } |
- } else { |
+ if (singlePermission) { |
base::scoped_nsobject<NSView> blockButton; |
- if (singlePermission) |
- blockButton.reset([[self blockButton] retain]); |
- else |
- blockButton.reset([[self blockButtonWithCustomizeMenu] retain]); |
+ blockButton.reset([[self blockButton] retain]); |
CGFloat width = [PermissionBubbleController matchWidthsOf:blockButton |
andOf:allowOrOkButton]; |
// Ensure the allow/ok button is still in the correct position. |
@@ -403,6 +381,14 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
xOrigin = NSMinX([allowOrOkButton frame]) - width - kBetweenButtonsPadding; |
[blockButton setFrameOrigin:NSMakePoint(xOrigin, kVerticalPadding)]; |
[contentView addSubview:blockButton]; |
+ } else { |
+ // Adjust the horizontal origin for each menu so that its right edge |
+ // lines up with the right edge of the ok button. |
+ CGFloat rightEdge = NSMaxX([allowOrOkButton frame]); |
+ for (NSView* view in permissionMenus.get()) { |
+ [view setFrameOrigin:NSMakePoint(rightEdge - NSWidth([view frame]), |
+ NSMinY([view frame]))]; |
+ } |
} |
bubbleFrame = [[self window] frameRectForContentRect:bubbleFrame]; |
@@ -518,17 +504,6 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
action:@selector(onBlock:)]; |
} |
-- (NSView*)blockButtonWithCustomizeMenu { |
- menuDelegate_.reset(new MenuDelegate(self)); |
- base::scoped_nsobject<SplitBlockButton> blockButton([[SplitBlockButton alloc] |
- initWithMenuDelegate:menuDelegate_.get()]); |
- [blockButton sizeToFit]; |
- [blockButton setEnabled:YES]; |
- [blockButton setAction:@selector(onBlock:)]; |
- [blockButton setTarget:self]; |
- return blockButton.autorelease(); |
-} |
- |
- (NSView*)closeButton { |
int dimension = chrome_style::GetCloseButtonSize(); |
NSRect frame = NSMakeRect(0, 0, dimension, dimension); |
@@ -559,16 +534,6 @@ class MenuDelegate : public ui::SimpleMenuModel::Delegate { |
delegate_->Closing(); |
} |
-- (void)onCustomize:(id)sender { |
- DCHECK(delegate_); |
- delegate_->SetCustomizationMode(); |
-} |
- |
-- (void)onMenuItemClicked:(int)commandId { |
- DCHECK(commandId == 0); |
- [self onCustomize:nil]; |
-} |
- |
- (void)activateTabWithContents:(content::WebContents*)newContents |
previousContents:(content::WebContents*)oldContents |
atIndex:(NSInteger)index |