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

Side by Side Diff: chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm

Issue 885373004: Use customization mode by default in permission bubbles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test fixes etc. Created 5 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.h " 5 #import "chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.h "
6 6
7 #include "base/mac/foundation_util.h" 7 #include "base/mac/foundation_util.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 122
123 void ChangePermissionMenuSelection(NSButton* menu_button, int next_title_id) { 123 void ChangePermissionMenuSelection(NSButton* menu_button, int next_title_id) {
124 NSMenu* menu = [base::mac::ObjCCastStrict<NSPopUpButton>(menu_button) menu]; 124 NSMenu* menu = [base::mac::ObjCCastStrict<NSPopUpButton>(menu_button) menu];
125 NSString* next_title = l10n_util::GetNSString(next_title_id); 125 NSString* next_title = l10n_util::GetNSString(next_title_id);
126 EXPECT_EQ([[menu itemWithTitle:[menu_button title]] state], NSOnState); 126 EXPECT_EQ([[menu itemWithTitle:[menu_button title]] state], NSOnState);
127 NSMenuItem* next_item = [menu itemWithTitle:next_title]; 127 NSMenuItem* next_item = [menu itemWithTitle:next_title];
128 EXPECT_EQ([next_item state], NSOffState); 128 EXPECT_EQ([next_item state], NSOffState);
129 [menu performActionForItemAtIndex:[menu indexOfItem:next_item]]; 129 [menu performActionForItemAtIndex:[menu indexOfItem:next_item]];
130 } 130 }
131 131
132 NSMenuItem* FindCustomizeMenuItem() {
133 NSButton* button = FindButtonWithTitle(IDS_PERMISSION_DENY);
134 if (!button || ![button isKindOfClass:[SplitBlockButton class]])
135 return nil;
136 NSString* customize = l10n_util::GetNSString(IDS_PERMISSION_CUSTOMIZE);
137 SplitBlockButton* block_button =
138 base::mac::ObjCCast<SplitBlockButton>(button);
139 for (NSMenuItem* item in [[block_button menu] itemArray]) {
140 if ([[item title] isEqualToString:customize])
141 return item;
142 }
143 return nil;
144 }
145
146 protected: 132 protected:
147 PermissionBubbleController* controller_; // Weak; it deletes itself. 133 PermissionBubbleController* controller_; // Weak; it deletes itself.
148 scoped_ptr<PermissionBubbleCocoa> bridge_; 134 scoped_ptr<PermissionBubbleCocoa> bridge_;
149 std::vector<PermissionBubbleRequest*> requests_; 135 std::vector<PermissionBubbleRequest*> requests_;
150 std::vector<bool> accept_states_; 136 std::vector<bool> accept_states_;
151 }; 137 };
152 138
153 TEST_F(PermissionBubbleControllerTest, ShowAndClose) { 139 TEST_F(PermissionBubbleControllerTest, ShowAndClose) {
154 EXPECT_FALSE([[controller_ window] isVisible]); 140 EXPECT_FALSE([[controller_ window] isVisible]);
155 [controller_ showWindow:nil]; 141 [controller_ showWindow:nil];
156 EXPECT_TRUE([[controller_ window] isVisible]); 142 EXPECT_TRUE([[controller_ window] isVisible]);
157 } 143 }
158 144
159 TEST_F(PermissionBubbleControllerTest, ShowSinglePermission) { 145 TEST_F(PermissionBubbleControllerTest, ShowSinglePermission) {
160 [controller_ showAtAnchor:NSZeroPoint 146 [controller_ showAtAnchor:NSZeroPoint
161 withDelegate:this 147 withDelegate:this
162 forRequests:requests_ 148 forRequests:requests_
163 acceptStates:accept_states_ 149 acceptStates:accept_states_];
164 customizationMode:NO];
165 150
166 EXPECT_TRUE(FindTextFieldWithString(kPermissionA)); 151 EXPECT_TRUE(FindTextFieldWithString(kPermissionA));
167 EXPECT_TRUE(FindButtonWithTitle(IDS_PERMISSION_ALLOW)); 152 EXPECT_TRUE(FindButtonWithTitle(IDS_PERMISSION_ALLOW));
168 EXPECT_TRUE(FindButtonWithTitle(IDS_PERMISSION_DENY)); 153 EXPECT_TRUE(FindButtonWithTitle(IDS_PERMISSION_DENY));
169 EXPECT_FALSE(FindButtonWithTitle(IDS_OK)); 154 EXPECT_FALSE(FindButtonWithTitle(IDS_OK));
170 EXPECT_FALSE(FindCustomizeMenuItem());
171 } 155 }
172 156
173 TEST_F(PermissionBubbleControllerTest, ShowMultiplePermissions) { 157 TEST_F(PermissionBubbleControllerTest, ShowMultiplePermissions) {
174 AddRequest(kPermissionB); 158 AddRequest(kPermissionB);
175 AddRequest(kPermissionC); 159 AddRequest(kPermissionC);
176 160
161 accept_states_.push_back(true); // A
162 accept_states_.push_back(true); // B
163 accept_states_.push_back(true); // C
164
177 [controller_ showAtAnchor:NSZeroPoint 165 [controller_ showAtAnchor:NSZeroPoint
178 withDelegate:this 166 withDelegate:this
179 forRequests:requests_ 167 forRequests:requests_
180 acceptStates:accept_states_ 168 acceptStates:accept_states_];
181 customizationMode:NO];
182 169
183 EXPECT_TRUE(FindTextFieldWithString(kPermissionA)); 170 EXPECT_TRUE(FindTextFieldWithString(kPermissionA));
184 EXPECT_TRUE(FindTextFieldWithString(kPermissionB)); 171 EXPECT_TRUE(FindTextFieldWithString(kPermissionB));
185 EXPECT_TRUE(FindTextFieldWithString(kPermissionC)); 172 EXPECT_TRUE(FindTextFieldWithString(kPermissionC));
186 173
187 EXPECT_TRUE(FindButtonWithTitle(IDS_PERMISSION_ALLOW)); 174 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_ALLOW));
188 EXPECT_TRUE(FindButtonWithTitle(IDS_PERMISSION_DENY)); 175 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_DENY));
189 EXPECT_TRUE(FindCustomizeMenuItem()); 176 EXPECT_TRUE(FindButtonWithTitle(IDS_OK));
190 EXPECT_FALSE(FindButtonWithTitle(IDS_OK));
191 } 177 }
192 178
193 TEST_F(PermissionBubbleControllerTest, ShowCustomizationModeAllow) { 179 TEST_F(PermissionBubbleControllerTest, ShowMultiplePermissionsAllow) {
194 accept_states_.push_back(true); 180 AddRequest(kPermissionB);
181
182 accept_states_.push_back(true); // A
183 accept_states_.push_back(true); // B
184
195 [controller_ showAtAnchor:NSZeroPoint 185 [controller_ showAtAnchor:NSZeroPoint
196 withDelegate:this 186 withDelegate:this
197 forRequests:requests_ 187 forRequests:requests_
198 acceptStates:accept_states_ 188 acceptStates:accept_states_];
199 customizationMode:YES];
200 189
201 // Test that there is one menu, with 'Allow' visible. 190 // Test that all menus have 'Allow' visible.
202 EXPECT_TRUE(FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW)); 191 EXPECT_TRUE(FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW));
203 EXPECT_FALSE(FindMenuButtonWithTitle(IDS_PERMISSION_DENY)); 192 EXPECT_FALSE(FindMenuButtonWithTitle(IDS_PERMISSION_DENY));
204 193
205 EXPECT_TRUE(FindButtonWithTitle(IDS_OK)); 194 EXPECT_TRUE(FindButtonWithTitle(IDS_OK));
206 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_ALLOW)); 195 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_ALLOW));
207 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_DENY)); 196 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_DENY));
208 EXPECT_FALSE(FindCustomizeMenuItem());
209 } 197 }
210 198
211 TEST_F(PermissionBubbleControllerTest, ShowCustomizationModeBlock) { 199 TEST_F(PermissionBubbleControllerTest, ShowMultiplePermissionsBlock) {
212 accept_states_.push_back(false); 200 AddRequest(kPermissionB);
201
202 accept_states_.push_back(false); // A
203 accept_states_.push_back(false); // B
204
213 [controller_ showAtAnchor:NSZeroPoint 205 [controller_ showAtAnchor:NSZeroPoint
214 withDelegate:this 206 withDelegate:this
215 forRequests:requests_ 207 forRequests:requests_
216 acceptStates:accept_states_ 208 acceptStates:accept_states_];
217 customizationMode:YES];
218 209
219 // Test that there is one menu, with 'Block' visible. 210 // Test that all menus have 'Block' visible.
220 EXPECT_TRUE(FindMenuButtonWithTitle(IDS_PERMISSION_DENY)); 211 EXPECT_TRUE(FindMenuButtonWithTitle(IDS_PERMISSION_DENY));
221 EXPECT_FALSE(FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW)); 212 EXPECT_FALSE(FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW));
222 213
223 EXPECT_TRUE(FindButtonWithTitle(IDS_OK)); 214 EXPECT_TRUE(FindButtonWithTitle(IDS_OK));
224 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_ALLOW)); 215 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_ALLOW));
225 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_DENY)); 216 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_DENY));
226 EXPECT_FALSE(FindCustomizeMenuItem()); 217 }
218
219 TEST_F(PermissionBubbleControllerTest, ShowMultiplePermissionsMixed) {
220 AddRequest(kPermissionB);
221 AddRequest(kPermissionC);
222
223 accept_states_.push_back(false); // A
224 accept_states_.push_back(false); // B
225 accept_states_.push_back(true); // C
226
227 [controller_ showAtAnchor:NSZeroPoint
228 withDelegate:this
229 forRequests:requests_
230 acceptStates:accept_states_];
231
232 // Test that both 'allow' and 'deny' are visible.
233 EXPECT_TRUE(FindMenuButtonWithTitle(IDS_PERMISSION_DENY));
234 EXPECT_TRUE(FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW));
235
236 EXPECT_TRUE(FindButtonWithTitle(IDS_OK));
237 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_ALLOW));
238 EXPECT_FALSE(FindButtonWithTitle(IDS_PERMISSION_DENY));
227 } 239 }
228 240
229 TEST_F(PermissionBubbleControllerTest, OK) { 241 TEST_F(PermissionBubbleControllerTest, OK) {
230 accept_states_.push_back(true); 242 AddRequest(kPermissionB);
243
244 accept_states_.push_back(true); // A
245 accept_states_.push_back(true); // B
246
231 [controller_ showAtAnchor:NSZeroPoint 247 [controller_ showAtAnchor:NSZeroPoint
232 withDelegate:this 248 withDelegate:this
233 forRequests:requests_ 249 forRequests:requests_
234 acceptStates:accept_states_ 250 acceptStates:accept_states_];
235 customizationMode:YES];
236 251
237 EXPECT_CALL(*this, Closing()).Times(1); 252 EXPECT_CALL(*this, Closing()).Times(1);
238 [FindButtonWithTitle(IDS_OK) performClick:nil]; 253 [FindButtonWithTitle(IDS_OK) performClick:nil];
239 } 254 }
240 255
241 TEST_F(PermissionBubbleControllerTest, Allow) { 256 TEST_F(PermissionBubbleControllerTest, Allow) {
242 [controller_ showAtAnchor:NSZeroPoint 257 [controller_ showAtAnchor:NSZeroPoint
243 withDelegate:this 258 withDelegate:this
244 forRequests:requests_ 259 forRequests:requests_
245 acceptStates:accept_states_ 260 acceptStates:accept_states_];
246 customizationMode:NO];
247 261
248 EXPECT_CALL(*this, Accept()).Times(1); 262 EXPECT_CALL(*this, Accept()).Times(1);
249 [FindButtonWithTitle(IDS_PERMISSION_ALLOW) performClick:nil]; 263 [FindButtonWithTitle(IDS_PERMISSION_ALLOW) performClick:nil];
250 } 264 }
251 265
252 TEST_F(PermissionBubbleControllerTest, Deny) { 266 TEST_F(PermissionBubbleControllerTest, Deny) {
253 [controller_ showAtAnchor:NSZeroPoint 267 [controller_ showAtAnchor:NSZeroPoint
254 withDelegate:this 268 withDelegate:this
255 forRequests:requests_ 269 forRequests:requests_
256 acceptStates:accept_states_ 270 acceptStates:accept_states_];
257 customizationMode:NO];
258 271
259 EXPECT_CALL(*this, Deny()).Times(1); 272 EXPECT_CALL(*this, Deny()).Times(1);
260 [FindButtonWithTitle(IDS_PERMISSION_DENY) performClick:nil]; 273 [FindButtonWithTitle(IDS_PERMISSION_DENY) performClick:nil];
261 } 274 }
262 275
263 TEST_F(PermissionBubbleControllerTest, ChangePermissionSelection) { 276 TEST_F(PermissionBubbleControllerTest, ChangePermissionSelection) {
264 AddRequest(kPermissionB); 277 AddRequest(kPermissionB);
265 278
266 accept_states_.push_back(true); 279 accept_states_.push_back(true); // A
267 accept_states_.push_back(false); 280 accept_states_.push_back(false); // B
268 281
269 [controller_ showAtAnchor:NSZeroPoint 282 [controller_ showAtAnchor:NSZeroPoint
270 withDelegate:this 283 withDelegate:this
271 forRequests:requests_ 284 forRequests:requests_
272 acceptStates:accept_states_ 285 acceptStates:accept_states_];
273 customizationMode:YES];
274 286
275 EXPECT_CALL(*this, ToggleAccept(0, false)).Times(1); 287 EXPECT_CALL(*this, ToggleAccept(0, false)).Times(1);
276 EXPECT_CALL(*this, ToggleAccept(1, true)).Times(1); 288 EXPECT_CALL(*this, ToggleAccept(1, true)).Times(1);
277 NSButton* menu_a = FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW); 289 NSButton* menu_a = FindMenuButtonWithTitle(IDS_PERMISSION_ALLOW);
278 NSButton* menu_b = FindMenuButtonWithTitle(IDS_PERMISSION_DENY); 290 NSButton* menu_b = FindMenuButtonWithTitle(IDS_PERMISSION_DENY);
279 ChangePermissionMenuSelection(menu_a, IDS_PERMISSION_DENY); 291 ChangePermissionMenuSelection(menu_a, IDS_PERMISSION_DENY);
280 ChangePermissionMenuSelection(menu_b, IDS_PERMISSION_ALLOW); 292 ChangePermissionMenuSelection(menu_b, IDS_PERMISSION_ALLOW);
281 } 293 }
282
283 TEST_F(PermissionBubbleControllerTest, ClickCustomize) {
284 AddRequest(kPermissionB);
285 [controller_ showAtAnchor:NSZeroPoint
286 withDelegate:this
287 forRequests:requests_
288 acceptStates:accept_states_
289 customizationMode:NO];
290
291 EXPECT_CALL(*this, SetCustomizationMode()).Times(1);
292 NSMenuItem* customize_item = FindCustomizeMenuItem();
293 EXPECT_TRUE(customize_item);
294 NSMenu* menu = [customize_item menu];
295 [menu performActionForItemAtIndex:[menu indexOfItem:customize_item]];
296 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698