| Index: chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
|
| diff --git a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
|
| index 1a7a93c4f2e30c4ceae606b3145d7a6d736478d1..c20f0ac2fa3740e5d17a6205a9971b66462c8605 100644
|
| --- a/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
|
| +++ b/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
|
| @@ -19,6 +19,8 @@
|
| #import "ui/events/test/cocoa_test_event_utils.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
|
|
| +@class ConstrainedWindowButton;
|
| +
|
| @interface PermissionBubbleController (ExposedForTesting)
|
| - (void)ok:(id)sender;
|
| - (void)onAllow:(id)sender;
|
| @@ -73,19 +75,28 @@ class PermissionBubbleControllerTest : public CocoaTest,
|
| }
|
|
|
| NSButton* FindButtonWithTitle(const std::string& title) {
|
| - return FindButtonWithTitle(base::SysUTF8ToNSString(title));
|
| + return FindButtonWithTitle(base::SysUTF8ToNSString(title),
|
| + [ConstrainedWindowButton class]);
|
| }
|
|
|
| NSButton* FindButtonWithTitle(int title_id) {
|
| - return FindButtonWithTitle(l10n_util::GetNSString(title_id));
|
| + return FindButtonWithTitle(l10n_util::GetNSString(title_id),
|
| + [ConstrainedWindowButton class]);
|
| }
|
|
|
| - NSButton* FindButtonWithTitle(NSString* title) {
|
| - NSView* parent = base::mac::ObjCCastStrict<NSView>([controller_ bubble]);
|
| - for (NSView* child in [parent subviews]) {
|
| - NSButton* button = base::mac::ObjCCast<NSButton>(child);
|
| - if ([title isEqualToString:[button title]]) {
|
| - return button;
|
| + NSButton* FindMenuButtonWithTitle(int title_id) {
|
| + return FindButtonWithTitle(l10n_util::GetNSString(title_id),
|
| + [NSPopUpButton class]);
|
| + }
|
| +
|
| + // IDS_PERMISSION_ALLOW and IDS_PERMISSION_DENY are used for two distinct
|
| + // UI elements, both of which derive from NSButton. So check the expected
|
| + // class, not just NSButton, as well as the title.
|
| + NSButton* FindButtonWithTitle(NSString* title, Class button_class) {
|
| + for (NSButton* view in [[controller_ bubble] subviews]) {
|
| + if ([view isKindOfClass:button_class] &&
|
| + [title isEqualToString:[view title]]) {
|
| + return view;
|
| }
|
| }
|
| return nil;
|
| @@ -109,6 +120,15 @@ class PermissionBubbleControllerTest : public CocoaTest,
|
| return textField;
|
| }
|
|
|
| + void ChangePermissionMenuSelection(NSButton* menu_button, int next_title_id) {
|
| + NSMenu* menu = [base::mac::ObjCCastStrict<NSPopUpButton>(menu_button) menu];
|
| + NSString* next_title = l10n_util::GetNSString(next_title_id);
|
| + EXPECT_EQ([[menu itemWithTitle:[menu_button title]] state], NSOnState);
|
| + NSMenuItem* next_item = [menu itemWithTitle:next_title];
|
| + EXPECT_EQ([next_item state], NSOffState);
|
| + [menu performActionForItemAtIndex:[menu indexOfItem:next_item]];
|
| + }
|
| +
|
| NSMenuItem* FindCustomizeMenuItem() {
|
| NSButton* button = FindButtonWithTitle(IDS_PERMISSION_DENY);
|
| if (!button || ![button isKindOfClass:[SplitBlockButton class]])
|
| @@ -170,25 +190,35 @@ TEST_F(PermissionBubbleControllerTest, ShowMultiplePermissions) {
|
| EXPECT_FALSE(FindButtonWithTitle(IDS_OK));
|
| }
|
|
|
| -TEST_F(PermissionBubbleControllerTest, ShowCustomizationMode) {
|
| - AddRequest(kPermissionB);
|
| -
|
| +TEST_F(PermissionBubbleControllerTest, ShowCustomizationModeAllow) {
|
| accept_states_.push_back(true);
|
| - accept_states_.push_back(false);
|
| + [controller_ showAtAnchor:NSZeroPoint
|
| + withDelegate:this
|
| + forRequests:requests_
|
| + acceptStates:accept_states_
|
| + customizationMode:YES];
|
| +
|
| + // Test that there is one menu, with 'Allow' visible.
|
| + EXPECT_TRUE(FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW));
|
| + EXPECT_FALSE(FindMenuButtonWithTitle(IDS_PERMISSION_DENY));
|
|
|
| + EXPECT_TRUE(FindButtonWithTitle(IDS_OK));
|
| + EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_ALLOW));
|
| + EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_DENY));
|
| + EXPECT_FALSE(FindCustomizeMenuItem());
|
| +}
|
| +
|
| +TEST_F(PermissionBubbleControllerTest, ShowCustomizationModeBlock) {
|
| + accept_states_.push_back(false);
|
| [controller_ showAtAnchor:NSZeroPoint
|
| withDelegate:this
|
| forRequests:requests_
|
| acceptStates:accept_states_
|
| customizationMode:YES];
|
|
|
| - // Test that each checkbox is visible and only the first is checked.
|
| - NSButton* checkbox_a = FindButtonWithTitle(kPermissionA);
|
| - NSButton* checkbox_b = FindButtonWithTitle(kPermissionB);
|
| - EXPECT_TRUE(checkbox_a);
|
| - EXPECT_TRUE(checkbox_b);
|
| - EXPECT_EQ(NSOnState, [checkbox_a state]);
|
| - EXPECT_EQ(NSOffState, [checkbox_b state]);
|
| + // Test that there is one menu, with 'Block' visible.
|
| + EXPECT_TRUE(FindMenuButtonWithTitle(IDS_PERMISSION_DENY));
|
| + EXPECT_FALSE(FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW));
|
|
|
| EXPECT_TRUE(FindButtonWithTitle(IDS_OK));
|
| EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_ALLOW));
|
| @@ -230,7 +260,7 @@ TEST_F(PermissionBubbleControllerTest, Deny) {
|
| [FindButtonWithTitle(IDS_PERMISSION_DENY) performClick:nil];
|
| }
|
|
|
| -TEST_F(PermissionBubbleControllerTest, ToggleCheckbox) {
|
| +TEST_F(PermissionBubbleControllerTest, ChangePermissionSelection) {
|
| AddRequest(kPermissionB);
|
|
|
| accept_states_.push_back(true);
|
| @@ -244,8 +274,10 @@ TEST_F(PermissionBubbleControllerTest, ToggleCheckbox) {
|
|
|
| EXPECT_CALL(*this, ToggleAccept(0, false)).Times(1);
|
| EXPECT_CALL(*this, ToggleAccept(1, true)).Times(1);
|
| - [FindButtonWithTitle(kPermissionA) performClick:nil];
|
| - [FindButtonWithTitle(kPermissionB) performClick:nil];
|
| + NSButton* menu_a = FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW);
|
| + NSButton* menu_b = FindMenuButtonWithTitle(IDS_PERMISSION_DENY);
|
| + ChangePermissionMenuSelection(menu_a, IDS_PERMISSION_DENY);
|
| + ChangePermissionMenuSelection(menu_b, IDS_PERMISSION_ALLOW);
|
| }
|
|
|
| TEST_F(PermissionBubbleControllerTest, ClickCustomize) {
|
|
|