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

Side by Side Diff: chrome/browser/autofill/autofill_dialog_controller_mac_unittest.mm

Issue 6621076: [Mac] Remove native/Cocoa preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase switch removal Created 9 years, 9 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/ref_counted.h"
6 #include "base/utf_string_conversions.h"
7 #include "base/values.h"
8 #import "chrome/browser/autofill/autofill_address_model_mac.h"
9 #import "chrome/browser/autofill/autofill_address_sheet_controller_mac.h"
10 #import "chrome/browser/autofill/autofill_credit_card_model_mac.h"
11 #import "chrome/browser/autofill/autofill_credit_card_sheet_controller_mac.h"
12 #import "chrome/browser/autofill/autofill_dialog_controller_mac.h"
13 #include "chrome/browser/autofill/autofill_profile.h"
14 #include "chrome/browser/autofill/personal_data_manager.h"
15 #include "chrome/browser/prefs/pref_service.h"
16 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/browser/ui/cocoa/browser_test_helper.h"
18 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
19 #include "chrome/common/pref_names.h"
20 #include "chrome/test/testing_browser_process.h"
21 #include "chrome/test/testing_pref_service.h"
22 #include "testing/gtest/include/gtest/gtest.h"
23
24 namespace {
25
26 // Simulated delay (in milliseconds) for web data loading.
27 const float kWebDataLoadDelayMilliseconds = 10.0;
28
29 // Mock PersonalDataManager that gives back canned profiles and credit cards
30 // as well as simulating delayed loading of web data using the
31 // |PersonalDataManager::Observer| interface.
32 class PersonalDataManagerMock : public PersonalDataManager {
33 public:
34 PersonalDataManagerMock()
35 : observer_(NULL),
36 test_data_is_loaded_(true) {}
37 virtual ~PersonalDataManagerMock() {}
38
39 virtual const std::vector<AutoFillProfile*>& web_profiles() {
40 return test_profiles_;
41 }
42 virtual const std::vector<CreditCard*>& credit_cards() {
43 return test_credit_cards_;
44 }
45 virtual bool IsDataLoaded() const { return test_data_is_loaded_; }
46 virtual void SetObserver(PersonalDataManager::Observer* observer) {
47 DCHECK(observer);
48 observer_ = observer;
49
50 // This delay allows the UI loop to run and display intermediate results
51 // while the data is loading. When notified that the data is available the
52 // UI updates with the new data. 10ms is a nice short amount of time to
53 // let the UI thread update but does not slow down the tests too much.
54 MessageLoop::current()->PostDelayedTask(
55 FROM_HERE,
56 new MessageLoop::QuitTask,
57 kWebDataLoadDelayMilliseconds);
58 MessageLoop::current()->Run();
59 observer_->OnPersonalDataLoaded();
60 }
61 virtual void RemoveObserver(PersonalDataManager::Observer* observer) {
62 observer_ = NULL;
63 }
64
65 std::vector<AutoFillProfile*> test_profiles_;
66 std::vector<CreditCard*> test_credit_cards_;
67 PersonalDataManager::Observer* observer_;
68 bool test_data_is_loaded_;
69
70 private:
71 DISALLOW_COPY_AND_ASSIGN(PersonalDataManagerMock);
72 };
73
74 // Mock profile that gives back our own mock |PersonalDataManager|.
75 class ProfileMock : public TestingProfile {
76 public:
77 ProfileMock() {
78 test_manager_ = new PersonalDataManagerMock;
79 }
80 virtual ~ProfileMock() {}
81
82 virtual PersonalDataManager* GetPersonalDataManager() {
83 return test_manager_.get();
84 }
85
86 scoped_refptr<PersonalDataManagerMock> test_manager_;
87
88 private:
89 DISALLOW_COPY_AND_ASSIGN(ProfileMock);
90 };
91
92 // Mock browser that gives back our own |BrowserMock| instance as the profile.
93 class BrowserMock : public BrowserTestHelper {
94 public:
95 BrowserMock() {
96 test_profile_.reset(new ProfileMock);
97 }
98 virtual ~BrowserMock() {}
99
100 // Override of |BrowserTestHelper::profile()|.
101 virtual TestingProfile* profile() const {
102 return test_profile_.get();
103 }
104
105 scoped_ptr<ProfileMock> test_profile_;
106
107 private:
108 DISALLOW_COPY_AND_ASSIGN(BrowserMock);
109 };
110
111 // Mock observer for the AutoFill settings dialog.
112 class AutoFillDialogObserverMock : public AutoFillDialogObserver {
113 public:
114 AutoFillDialogObserverMock()
115 : hit_(false) {}
116 virtual ~AutoFillDialogObserverMock() {}
117
118 virtual void OnAutoFillDialogApply(std::vector<AutoFillProfile>* profiles,
119 std::vector<CreditCard>* credit_cards) {
120 hit_ = true;
121
122 std::vector<AutoFillProfile>::iterator i;
123 profiles_.clear();
124 for (i = profiles->begin(); i != profiles->end(); ++i)
125 profiles_.push_back(*i);
126
127 std::vector<CreditCard>::iterator j;
128 credit_cards_.clear();
129 for (j = credit_cards->begin(); j != credit_cards->end(); ++j)
130 credit_cards_.push_back(*j);
131 }
132
133 bool hit_;
134 std::vector<AutoFillProfile> profiles_;
135 std::vector<CreditCard> credit_cards_;
136
137 private:
138 DISALLOW_COPY_AND_ASSIGN(AutoFillDialogObserverMock);
139 };
140
141 // Test fixture for setting up and tearing down our dialog controller under
142 // test. Also provides helper methods to access the source profiles and
143 // credit card information stored in mock |PersonalDataManager|.
144 class AutoFillDialogControllerTest : public CocoaTest {
145 public:
146 AutoFillDialogControllerTest()
147 : controller_(nil),
148 imported_profile_(NULL),
149 imported_credit_card_(NULL) {
150 }
151
152 void LoadDialog() {
153 controller_ = [AutoFillDialogController
154 controllerWithObserver:&observer_ profile:helper_.profile()];
155 [controller_ runModelessDialog];
156 }
157
158 std::vector<AutoFillProfile*>& profiles() {
159 return helper_.test_profile_->test_manager_->test_profiles_;
160 }
161 std::vector<CreditCard*>& credit_cards() {
162 return helper_.test_profile_->test_manager_->test_credit_cards_;
163 }
164
165 ScopedTestingBrowserProcess browser_process_;
166
167 BrowserMock helper_;
168 AutoFillDialogObserverMock observer_;
169 AutoFillDialogController* controller_; // weak reference
170 AutoFillProfile* imported_profile_; // weak reference
171 CreditCard* imported_credit_card_; // weak reference
172
173 private:
174 DISALLOW_COPY_AND_ASSIGN(AutoFillDialogControllerTest);
175 };
176
177 TEST_F(AutoFillDialogControllerTest, CloseButtonDoesNotInformObserver) {
178 LoadDialog();
179 [controller_ closeDialog];
180 ASSERT_FALSE(observer_.hit_);
181 }
182
183 TEST_F(AutoFillDialogControllerTest, NoEditsDoNotChangeObserverProfiles) {
184 AutoFillProfile profile;
185 profiles().push_back(&profile);
186 LoadDialog();
187 [controller_ closeDialog];
188
189 // Should not hit our observer.
190 ASSERT_FALSE(observer_.hit_);
191
192 // Observer should not have profiles.
193 ASSERT_EQ(0UL, observer_.profiles_.size());
194 }
195
196 TEST_F(AutoFillDialogControllerTest, NoEditsDoNotChangeObserverCreditCards) {
197 CreditCard credit_card;
198 credit_cards().push_back(&credit_card);
199 LoadDialog();
200 [controller_ closeDialog];
201
202 // Should not hit our observer.
203 ASSERT_FALSE(observer_.hit_);
204
205 // Observer should not have credit cards.
206 ASSERT_EQ(0UL, observer_.credit_cards_.size());
207 }
208
209 TEST_F(AutoFillDialogControllerTest, AutoFillDataMutation) {
210 AutoFillProfile profile;
211 profile.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("John"));
212 profile.SetInfo(AutofillType(NAME_MIDDLE), ASCIIToUTF16("C"));
213 profile.SetInfo(AutofillType(NAME_LAST), ASCIIToUTF16("Smith"));
214 profile.SetInfo(AutofillType(EMAIL_ADDRESS),
215 ASCIIToUTF16("john@chromium.org"));
216 profile.SetInfo(AutofillType(COMPANY_NAME), ASCIIToUTF16("Google Inc."));
217 profile.SetInfo(AutofillType(ADDRESS_HOME_LINE1),
218 ASCIIToUTF16("1122 Mountain View Road"));
219 profile.SetInfo(AutofillType(ADDRESS_HOME_LINE2), ASCIIToUTF16("Suite #1"));
220 profile.SetInfo(AutofillType(ADDRESS_HOME_CITY),
221 ASCIIToUTF16("Mountain View"));
222 profile.SetInfo(AutofillType(ADDRESS_HOME_STATE), ASCIIToUTF16("CA"));
223 profile.SetInfo(AutofillType(ADDRESS_HOME_ZIP), ASCIIToUTF16("94111"));
224 profile.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("USA"));
225 profile.SetInfo(AutofillType(PHONE_HOME_WHOLE_NUMBER),
226 ASCIIToUTF16("014155552258"));
227 profile.SetInfo(AutofillType(PHONE_FAX_WHOLE_NUMBER),
228 ASCIIToUTF16("024087172258"));
229 profiles().push_back(&profile);
230
231 LoadDialog();
232 [controller_ selectAddressAtIndex:0];
233 [controller_ editSelection:nil];
234
235 AutoFillAddressSheetController* sheet = [controller_ addressSheetController];
236 ASSERT_TRUE(sheet != nil);
237 AutoFillAddressModel* am = [sheet addressModel];
238 EXPECT_TRUE([[am fullName] isEqualToString:@"John C Smith"]);
239 EXPECT_TRUE([[am email] isEqualToString:@"john@chromium.org"]);
240 EXPECT_TRUE([[am companyName] isEqualToString:@"Google Inc."]);
241 EXPECT_TRUE([[am addressLine1] isEqualToString:@"1122 Mountain View Road"]);
242 EXPECT_TRUE([[am addressLine2] isEqualToString:@"Suite #1"]);
243 EXPECT_TRUE([[am addressCity] isEqualToString:@"Mountain View"]);
244 EXPECT_TRUE([[am addressState] isEqualToString:@"CA"]);
245 EXPECT_TRUE([[am addressZip] isEqualToString:@"94111"]);
246 EXPECT_TRUE([[am phoneWholeNumber] isEqualToString:@"014155552258"]);
247 EXPECT_TRUE([[am faxWholeNumber] isEqualToString:@"024087172258"]);
248
249 [sheet save:nil];
250 [controller_ closeDialog];
251
252 ASSERT_TRUE(observer_.hit_);
253 ASSERT_TRUE(observer_.profiles_.size() == 1);
254
255 ASSERT_EQ(0, observer_.profiles_[0].Compare(*profiles()[0]));
256 }
257
258 TEST_F(AutoFillDialogControllerTest, CreditCardDataMutation) {
259 CreditCard credit_card;
260 credit_card.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("DCH"));
261 credit_card.SetInfo(AutofillType(CREDIT_CARD_NUMBER),
262 ASCIIToUTF16("1234 5678 9101 1121"));
263 credit_card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("01"));
264 credit_card.SetInfo(AutofillType(CREDIT_CARD_EXP_4_DIGIT_YEAR),
265 ASCIIToUTF16("2012"));
266 credit_cards().push_back(&credit_card);
267
268 LoadDialog();
269 [controller_ selectCreditCardAtIndex:0];
270 [controller_ editSelection:nil];
271
272 AutoFillCreditCardSheetController* sheet =
273 [controller_ creditCardSheetController];
274 ASSERT_TRUE(sheet != nil);
275 AutoFillCreditCardModel* cm = [sheet creditCardModel];
276 EXPECT_TRUE([[cm nameOnCard] isEqualToString:@"DCH"]);
277 EXPECT_TRUE([[cm creditCardNumber] isEqualToString:@"1234567891011121"]);
278 EXPECT_TRUE([[cm expirationMonth] isEqualToString:@"01"]);
279 EXPECT_TRUE([[cm expirationYear] isEqualToString:@"2012"]);
280
281 // Check that user-visible text is obfuscated.
282 NSTextField* numberField = [sheet creditCardNumberField];
283 ASSERT_TRUE(numberField != nil);
284 EXPECT_TRUE([[numberField stringValue] isEqualToString:@"************1121"]);
285
286 [sheet save:nil];
287 [controller_ closeDialog];
288
289 ASSERT_TRUE(observer_.hit_);
290 ASSERT_TRUE(observer_.credit_cards_.size() == 1);
291 ASSERT_EQ(0, observer_.credit_cards_[0].Compare(*credit_cards()[0]));
292 }
293
294 TEST_F(AutoFillDialogControllerTest, TwoProfiles) {
295 AutoFillProfile profile1;
296 profile1.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Joe"));
297 profiles().push_back(&profile1);
298 AutoFillProfile profile2;
299 profile2.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Bob"));
300 profiles().push_back(&profile2);
301 LoadDialog();
302 [controller_ closeDialog];
303
304 // Should not hit our observer.
305 ASSERT_FALSE(observer_.hit_);
306
307 // Sizes should match. And should be 2.
308 ASSERT_EQ([controller_ profiles].size(), profiles().size());
309 ASSERT_EQ([controller_ profiles].size(), 2UL);
310
311 // Contents should match. With the exception of the |unique_id|.
312 for (size_t i = 0, count = profiles().size(); i < count; i++) {
313 ASSERT_EQ(0, [controller_ profiles][i].Compare(*profiles()[i]));
314 }
315 }
316
317 TEST_F(AutoFillDialogControllerTest, TwoCreditCards) {
318 CreditCard credit_card1;
319 credit_card1.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Joe"));
320 credit_cards().push_back(&credit_card1);
321 CreditCard credit_card2;
322 credit_card2.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Bob"));
323 credit_cards().push_back(&credit_card2);
324 LoadDialog();
325 [controller_ closeDialog];
326
327 // Should not hit our observer.
328 ASSERT_FALSE(observer_.hit_);
329
330 // Sizes should match. And should be 2.
331 ASSERT_EQ([controller_ creditCards].size(), credit_cards().size());
332 ASSERT_EQ([controller_ creditCards].size(), 2UL);
333
334 // Contents should match. With the exception of the |unique_id|.
335 for (size_t i = 0, count = credit_cards().size(); i < count; i++) {
336 ASSERT_EQ(0, [controller_ creditCards][i].Compare(*credit_cards()[i]));
337 }
338 }
339
340 TEST_F(AutoFillDialogControllerTest, AddNewProfile) {
341 AutoFillProfile profile;
342 profile.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Joe"));
343 profiles().push_back(&profile);
344 LoadDialog();
345 [controller_ addNewAddress:nil];
346 AutoFillAddressSheetController* sheet = [controller_ addressSheetController];
347 ASSERT_TRUE(sheet != nil);
348 AutoFillAddressModel* model = [sheet addressModel];
349 ASSERT_TRUE(model != nil);
350 [model setFullName:@"Don"];
351 [sheet save:nil];
352 [controller_ closeDialog];
353
354 // Should hit our observer.
355 ASSERT_TRUE(observer_.hit_);
356
357 // Sizes should be different. New size should be 2.
358 ASSERT_NE(observer_.profiles_.size(), profiles().size());
359 ASSERT_EQ(observer_.profiles_.size(), 2UL);
360
361 // New address should match. Don't compare labels.
362 AutoFillProfile new_profile;
363 new_profile.SetInfo(AutofillType(NAME_FULL), ASCIIToUTF16("Don"));
364 ASSERT_EQ(0, observer_.profiles_[1].Compare(new_profile));
365 }
366
367 TEST_F(AutoFillDialogControllerTest, AddNewCreditCard) {
368 CreditCard credit_card;
369 credit_card.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Joe"));
370 credit_cards().push_back(&credit_card);
371 LoadDialog();
372 [controller_ addNewCreditCard:nil];
373 AutoFillCreditCardSheetController* sheet =
374 [controller_ creditCardSheetController];
375 ASSERT_TRUE(sheet != nil);
376 AutoFillCreditCardModel* model = [sheet creditCardModel];
377 ASSERT_TRUE(model != nil);
378 [model setNameOnCard:@"Don"];
379 [sheet save:nil];
380 [controller_ closeDialog];
381
382 // Should hit our observer.
383 ASSERT_TRUE(observer_.hit_);
384
385 // Sizes should be different. New size should be 2.
386 ASSERT_NE(observer_.credit_cards_.size(), credit_cards().size());
387 ASSERT_EQ(observer_.credit_cards_.size(), 2UL);
388
389 // New credit card should match. Don't compare labels.
390 CreditCard new_credit_card;
391 new_credit_card.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Don"));
392 ASSERT_EQ(0, observer_.credit_cards_[1].Compare(new_credit_card));
393 }
394
395 TEST_F(AutoFillDialogControllerTest, AddNewEmptyProfile) {
396 AutoFillProfile profile;
397 profile.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Joe"));
398 profiles().push_back(&profile);
399 LoadDialog();
400 [controller_ addNewAddress:nil];
401 AutoFillAddressSheetController* sheet = [controller_ addressSheetController];
402 ASSERT_TRUE(sheet != nil);
403 [sheet save:nil];
404 [controller_ closeDialog];
405
406 // Should not hit our observer.
407 ASSERT_FALSE(observer_.hit_);
408
409 // Empty profile should not be saved.
410 ASSERT_EQ(0UL, observer_.profiles_.size());
411 }
412
413 TEST_F(AutoFillDialogControllerTest, AddNewEmptyCreditCard) {
414 CreditCard credit_card;
415 credit_card.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Joe"));
416 credit_cards().push_back(&credit_card);
417 LoadDialog();
418 [controller_ addNewCreditCard:nil];
419 AutoFillCreditCardSheetController* sheet =
420 [controller_ creditCardSheetController];
421 ASSERT_TRUE(sheet != nil);
422 [sheet save:nil];
423 [controller_ closeDialog];
424
425 // Should hit our observer.
426 ASSERT_FALSE(observer_.hit_);
427
428 // Empty credit card should not be saved.
429 ASSERT_EQ(0UL, observer_.credit_cards_.size());
430 }
431
432 TEST_F(AutoFillDialogControllerTest, DeleteProfile) {
433 AutoFillProfile profile;
434 profile.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Joe"));
435 profiles().push_back(&profile);
436 LoadDialog();
437 [controller_ selectAddressAtIndex:0];
438 [controller_ deleteSelection:nil];
439 [controller_ closeDialog];
440
441 // Should hit our observer.
442 ASSERT_TRUE(observer_.hit_);
443
444 // Sizes should be different. New size should be 0.
445 ASSERT_NE(observer_.profiles_.size(), profiles().size());
446 ASSERT_EQ(observer_.profiles_.size(), 0UL);
447 }
448
449 TEST_F(AutoFillDialogControllerTest, DeleteCreditCard) {
450 CreditCard credit_card;
451 credit_card.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Joe"));
452 credit_cards().push_back(&credit_card);
453 LoadDialog();
454 [controller_ selectCreditCardAtIndex:0];
455 [controller_ deleteSelection:nil];
456 [controller_ closeDialog];
457
458 // Should hit our observer.
459 ASSERT_TRUE(observer_.hit_);
460
461 // Sizes should be different. New size should be 0.
462 ASSERT_NE(observer_.credit_cards_.size(), credit_cards().size());
463 ASSERT_EQ(observer_.credit_cards_.size(), 0UL);
464 }
465
466 TEST_F(AutoFillDialogControllerTest, TwoProfilesDeleteOne) {
467 AutoFillProfile profile;
468 profile.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Joe"));
469 profiles().push_back(&profile);
470 AutoFillProfile profile2;
471 profile2.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Bob"));
472 profiles().push_back(&profile2);
473 LoadDialog();
474 [controller_ selectAddressAtIndex:1];
475 [controller_ deleteSelection:nil];
476 [controller_ closeDialog];
477
478 // Should hit our observer.
479 ASSERT_TRUE(observer_.hit_);
480
481 // Sizes should be different. New size should be 1.
482 ASSERT_NE(observer_.profiles_.size(), profiles().size());
483 ASSERT_EQ(observer_.profiles_.size(), 1UL);
484 ASSERT_EQ(0, observer_.profiles_[0].Compare(profile));
485 }
486
487 TEST_F(AutoFillDialogControllerTest, TwoCreditCardsDeleteOne) {
488 CreditCard credit_card;
489 credit_card.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Joe"));
490 credit_cards().push_back(&credit_card);
491 CreditCard credit_card2;
492 credit_card2.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Bob"));
493 credit_cards().push_back(&credit_card2);
494 LoadDialog();
495 [controller_ selectCreditCardAtIndex:1];
496 [controller_ deleteSelection:nil];
497 [controller_ closeDialog];
498
499 // Should hit our observer.
500 ASSERT_TRUE(observer_.hit_);
501
502 // Sizes should be different. New size should be 1.
503 ASSERT_NE(observer_.credit_cards_.size(), credit_cards().size());
504 ASSERT_EQ(observer_.credit_cards_.size(), 1UL);
505
506 // First credit card should match.
507 ASSERT_EQ(0, observer_.credit_cards_[0].Compare(credit_card));
508 }
509
510 TEST_F(AutoFillDialogControllerTest, DeleteMultiple) {
511 AutoFillProfile profile;
512 profile.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Joe"));
513 profiles().push_back(&profile);
514 AutoFillProfile profile2;
515 profile2.SetInfo(AutofillType(NAME_FIRST), ASCIIToUTF16("Bob"));
516 profiles().push_back(&profile2);
517
518 CreditCard credit_card;
519 credit_card.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Joe"));
520 credit_cards().push_back(&credit_card);
521 CreditCard credit_card2;
522 credit_card2.SetInfo(AutofillType(CREDIT_CARD_NAME), ASCIIToUTF16("Bob"));
523 credit_cards().push_back(&credit_card2);
524
525 LoadDialog();
526 [controller_ selectAddressAtIndex:1];
527 [controller_ addSelectedCreditCardAtIndex:0];
528 ASSERT_FALSE([controller_ editButtonEnabled]);
529 [controller_ deleteSelection:nil];
530 [controller_ selectAddressAtIndex:0];
531 ASSERT_TRUE([controller_ editButtonEnabled]);
532 [controller_ closeDialog];
533
534 // Should hit our observer.
535 ASSERT_TRUE(observer_.hit_);
536
537 // Sizes should be different. New size should be 1.
538 ASSERT_NE(observer_.profiles_.size(), profiles().size());
539 ASSERT_EQ(observer_.profiles_.size(), 1UL);
540
541 // Sizes should be different. New size should be 1.
542 ASSERT_NE(observer_.credit_cards_.size(), credit_cards().size());
543 ASSERT_EQ(observer_.credit_cards_.size(), 1UL);
544
545 // Profiles should match.
546 ASSERT_EQ(0, observer_.profiles_[0].Compare(profile));
547
548 // Second credit card should match.
549 ASSERT_EQ(0, observer_.credit_cards_[0].Compare(credit_card2));
550 }
551
552 // Auxilliary profiles are enabled by default.
553 TEST_F(AutoFillDialogControllerTest, AuxiliaryProfilesTrue) {
554 LoadDialog();
555 [controller_ closeDialog];
556
557 // Should not hit our observer.
558 ASSERT_FALSE(observer_.hit_);
559
560 // Auxiliary profiles setting should be unchanged.
561 ASSERT_TRUE(helper_.profile()->GetPrefs()->GetBoolean(
562 prefs::kAutoFillAuxiliaryProfilesEnabled));
563 }
564
565 TEST_F(AutoFillDialogControllerTest, AuxiliaryProfilesFalse) {
566 helper_.profile()->GetPrefs()->SetBoolean(
567 prefs::kAutoFillAuxiliaryProfilesEnabled, false);
568 LoadDialog();
569 [controller_ closeDialog];
570
571 // Should not hit our observer.
572 ASSERT_FALSE(observer_.hit_);
573
574 // Auxiliary profiles setting should be unchanged.
575 ASSERT_FALSE(helper_.profile()->GetPrefs()->GetBoolean(
576 prefs::kAutoFillAuxiliaryProfilesEnabled));
577 }
578
579 TEST_F(AutoFillDialogControllerTest, AuxiliaryProfilesChanged) {
580 helper_.profile()->GetPrefs()->SetBoolean(
581 prefs::kAutoFillAuxiliaryProfilesEnabled, false);
582 LoadDialog();
583 [controller_ setAuxiliaryEnabled:YES];
584 [controller_ closeDialog];
585
586 // Should not hit our observer.
587 ASSERT_FALSE(observer_.hit_);
588
589 // Auxiliary profiles setting should be unchanged.
590 ASSERT_TRUE(helper_.profile()->GetPrefs()->GetBoolean(
591 prefs::kAutoFillAuxiliaryProfilesEnabled));
592 }
593
594 TEST_F(AutoFillDialogControllerTest, WaitForDataToLoad) {
595 AutoFillProfile profile;
596 profiles().push_back(&profile);
597 CreditCard credit_card;
598 credit_cards().push_back(&credit_card);
599 helper_.test_profile_->test_manager_->test_data_is_loaded_ = false;
600 LoadDialog();
601 [controller_ closeDialog];
602
603 // Should not hit our observer.
604 ASSERT_FALSE(observer_.hit_);
605
606 // Sizes should match.
607 ASSERT_EQ([controller_ profiles].size(), profiles().size());
608 ASSERT_EQ([controller_ creditCards].size(), credit_cards().size());
609
610 // Contents should match.
611 size_t i = 0;
612 size_t count = profiles().size();
613 for (i = 0; i < count; i++) {
614 // Do not compare labels. Label is a derived field.
615 ASSERT_EQ([controller_ profiles][i], *profiles()[i]);
616 }
617 count = credit_cards().size();
618 for (i = 0; i < count; i++) {
619 ASSERT_EQ([controller_ creditCards][i], *credit_cards()[i]);
620 }
621 }
622
623 // AutoFill is enabled by default.
624 TEST_F(AutoFillDialogControllerTest, AutoFillEnabledTrue) {
625 LoadDialog();
626 [controller_ closeDialog];
627
628 // Should not hit our observer.
629 ASSERT_FALSE(observer_.hit_);
630
631 // AutoFill enabled setting should be unchanged.
632 ASSERT_TRUE(helper_.profile()->GetPrefs()->GetBoolean(
633 prefs::kAutoFillEnabled));
634 }
635
636 TEST_F(AutoFillDialogControllerTest, AutoFillEnabledFalse) {
637 helper_.profile()->GetPrefs()->SetBoolean(prefs::kAutoFillEnabled, false);
638 LoadDialog();
639 [controller_ closeDialog];
640
641 // Should not hit our observer.
642 ASSERT_FALSE(observer_.hit_);
643
644 // AutoFill enabled setting should be unchanged.
645 ASSERT_FALSE(helper_.profile()->GetPrefs()->GetBoolean(
646 prefs::kAutoFillEnabled));
647 }
648
649 TEST_F(AutoFillDialogControllerTest, AutoFillEnabledChanged) {
650 helper_.profile()->GetPrefs()->SetBoolean(
651 prefs::kAutoFillAuxiliaryProfilesEnabled, false);
652 LoadDialog();
653 [controller_ setAutoFillEnabled:YES];
654 [controller_ closeDialog];
655
656 // Should not hit our observer.
657 ASSERT_FALSE(observer_.hit_);
658
659 // Auxiliary profiles setting should be unchanged.
660 ASSERT_TRUE(helper_.profile()->GetPrefs()->GetBoolean(
661 prefs::kAutoFillEnabled));
662 }
663
664 TEST_F(AutoFillDialogControllerTest, PolicyRefresh) {
665 LoadDialog();
666 ASSERT_FALSE([controller_ autoFillManaged]);
667
668 // Disable AutoFill through configuration policy.
669 helper_.profile()->GetTestingPrefService()->SetManagedPref(
670 prefs::kAutoFillEnabled, Value::CreateBooleanValue(false));
671 ASSERT_TRUE([controller_ autoFillManaged]);
672 ASSERT_FALSE([controller_ autoFillEnabled]);
673
674 // Enabling through policy should switch to enabled but not editable.
675 helper_.profile()->GetTestingPrefService()->SetManagedPref(
676 prefs::kAutoFillEnabled, Value::CreateBooleanValue(true));
677 ASSERT_TRUE([controller_ autoFillManaged]);
678 ASSERT_TRUE([controller_ autoFillEnabled]);
679
680 [controller_ closeDialog];
681 }
682
683 TEST_F(AutoFillDialogControllerTest, PolicyDisabledAndSave) {
684 // Disable AutoFill through configuration policy.
685 helper_.profile()->GetTestingPrefService()->SetManagedPref(
686 prefs::kAutoFillEnabled, Value::CreateBooleanValue(false));
687 helper_.profile()->GetPrefs()->SetBoolean(
688 prefs::kAutoFillAuxiliaryProfilesEnabled, false);
689 LoadDialog();
690
691 // Save should be disabled.
692 ASSERT_TRUE([controller_ autoFillManagedAndDisabled]);
693
694 [controller_ setAuxiliaryEnabled:YES];
695 [controller_ closeDialog];
696
697 // Observer should not have been called.
698 ASSERT_FALSE(observer_.hit_);
699
700 // Auxiliary profiles setting should be unchanged.
701 ASSERT_FALSE(helper_.profile()->GetPrefs()->GetBoolean(
702 prefs::kAutoFillAuxiliaryProfilesEnabled));
703 }
704
705 TEST_F(AutoFillDialogControllerTest, PolicyEnabledAndSave) {
706 // Enable AutoFill through configuration policy.
707 helper_.profile()->GetTestingPrefService()->SetManagedPref(
708 prefs::kAutoFillEnabled, Value::CreateBooleanValue(true));
709 helper_.profile()->GetPrefs()->SetBoolean(
710 prefs::kAutoFillAuxiliaryProfilesEnabled, false);
711 LoadDialog();
712
713 // Save should be enabled.
714 ASSERT_FALSE([controller_ autoFillManagedAndDisabled]);
715
716 [controller_ setAuxiliaryEnabled:YES];
717 [controller_ closeDialog];
718
719 // Observer should not have been notified.
720 ASSERT_FALSE(observer_.hit_);
721
722 // Auxiliary profiles setting should have been saved.
723 ASSERT_TRUE(helper_.profile()->GetPrefs()->GetBoolean(
724 prefs::kAutoFillAuxiliaryProfilesEnabled));
725 }
726
727 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/autofill/autofill_dialog_controller_mac.mm ('k') | chrome/browser/autofill/autofill_dialog_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698