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

Side by Side Diff: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc

Issue 23033016: Remove autocheckout code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Even more deletes, and Ilya review. Created 7 years, 3 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include <map> 5 #include <map>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/guid.h" 9 #include "base/guid.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 } 146 }
147 147
148 virtual void UpdateButtonStrip() OVERRIDE { 148 virtual void UpdateButtonStrip() OVERRIDE {
149 EXPECT_GE(updates_started_, 1); 149 EXPECT_GE(updates_started_, 1);
150 } 150 }
151 151
152 virtual void UpdateDetailArea() OVERRIDE { 152 virtual void UpdateDetailArea() OVERRIDE {
153 EXPECT_GE(updates_started_, 1); 153 EXPECT_GE(updates_started_, 1);
154 } 154 }
155 155
156 virtual void UpdateAutocheckoutStepsArea() OVERRIDE {
157 EXPECT_GE(updates_started_, 1);
158 }
159
160 virtual void UpdateSection(DialogSection section) OVERRIDE { 156 virtual void UpdateSection(DialogSection section) OVERRIDE {
161 EXPECT_GE(updates_started_, 1); 157 EXPECT_GE(updates_started_, 1);
162 } 158 }
163 159
164 virtual void FillSection(DialogSection section, 160 virtual void FillSection(DialogSection section,
165 const DetailInput& originating_input) OVERRIDE {}; 161 const DetailInput& originating_input) OVERRIDE {};
166 virtual void GetUserInput(DialogSection section, DetailOutputMap* output) 162 virtual void GetUserInput(DialogSection section, DetailOutputMap* output)
167 OVERRIDE { 163 OVERRIDE {
168 *output = outputs_[section]; 164 *output = outputs_[section];
169 } 165 }
170 virtual TestableAutofillDialogView* GetTestableView() OVERRIDE { 166 virtual TestableAutofillDialogView* GetTestableView() OVERRIDE {
171 return NULL; 167 return NULL;
172 } 168 }
173 169
174 virtual string16 GetCvc() OVERRIDE { return string16(); } 170 virtual string16 GetCvc() OVERRIDE { return string16(); }
175 virtual bool SaveDetailsLocally() OVERRIDE { return true; } 171 virtual bool SaveDetailsLocally() OVERRIDE { return true; }
176 virtual const content::NavigationController* ShowSignIn() OVERRIDE { 172 virtual const content::NavigationController* ShowSignIn() OVERRIDE {
177 return NULL; 173 return NULL;
178 } 174 }
179 virtual void HideSignIn() OVERRIDE {} 175 virtual void HideSignIn() OVERRIDE {}
180 virtual void UpdateProgressBar(double value) OVERRIDE {}
181 176
182 MOCK_METHOD0(ModelChanged, void()); 177 MOCK_METHOD0(ModelChanged, void());
183 MOCK_METHOD0(UpdateForErrors, void()); 178 MOCK_METHOD0(UpdateForErrors, void());
184 179
185 virtual void OnSignInResize(const gfx::Size& pref_size) OVERRIDE {} 180 virtual void OnSignInResize(const gfx::Size& pref_size) OVERRIDE {}
186 181
187 void SetUserInput(DialogSection section, const DetailOutputMap& map) { 182 void SetUserInput(DialogSection section, const DetailOutputMap& map) {
188 outputs_[section] = map; 183 outputs_[section] = map;
189 } 184 }
190 185
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 virtual DialogType GetDialogType() const OVERRIDE { 260 virtual DialogType GetDialogType() const OVERRIDE {
266 return dialog_type_; 261 return dialog_type_;
267 } 262 }
268 263
269 void set_dialog_type(DialogType dialog_type) { dialog_type_ = dialog_type; } 264 void set_dialog_type(DialogType dialog_type) { dialog_type_ = dialog_type; }
270 265
271 void SimulateSigninError() { 266 void SimulateSigninError() {
272 OnWalletSigninError(); 267 OnWalletSigninError();
273 } 268 }
274 269
275 bool AutocheckoutIsRunning() const {
276 return AUTOCHECKOUT_IN_PROGRESS == autocheckout_state();
277 }
278
279 MOCK_METHOD0(LoadRiskFingerprintData, void()); 270 MOCK_METHOD0(LoadRiskFingerprintData, void());
280 using AutofillDialogControllerImpl::OnDidLoadRiskFingerprintData; 271 using AutofillDialogControllerImpl::OnDidLoadRiskFingerprintData;
281 using AutofillDialogControllerImpl::IsEditingExistingData; 272 using AutofillDialogControllerImpl::IsEditingExistingData;
282 273
283 protected: 274 protected:
284 virtual PersonalDataManager* GetManager() OVERRIDE { 275 virtual PersonalDataManager* GetManager() OVERRIDE {
285 return &test_manager_; 276 return &test_manager_;
286 } 277 }
287 278
288 virtual wallet::WalletClient* GetWalletClient() OVERRIDE { 279 virtual wallet::WalletClient* GetWalletClient() OVERRIDE {
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 } 490 }
500 491
501 const MockNewCreditCardBubbleController* mock_new_card_bubble_controller() { 492 const MockNewCreditCardBubbleController* mock_new_card_bubble_controller() {
502 return mock_new_card_bubble_controller_.get(); 493 return mock_new_card_bubble_controller_.get();
503 } 494 }
504 495
505 private: 496 private:
506 void FinishedCallback(const FormStructure* form_structure, 497 void FinishedCallback(const FormStructure* form_structure,
507 const std::string& google_transaction_id) { 498 const std::string& google_transaction_id) {
508 form_structure_ = form_structure; 499 form_structure_ = form_structure;
509 if (controller()->GetDialogType() == DIALOG_TYPE_AUTOCHECKOUT)
510 EXPECT_TRUE(controller()->AutocheckoutIsRunning());
511 } 500 }
512 501
513 #if defined(OS_WIN) 502 #if defined(OS_WIN)
514 // http://crbug.com/227221 503 // http://crbug.com/227221
515 ui::ScopedOleInitializer ole_initializer_; 504 ui::ScopedOleInitializer ole_initializer_;
516 #endif 505 #endif
517 506
518 // The controller owns itself. 507 // The controller owns itself.
519 base::WeakPtr<TestAutofillDialogController> controller_; 508 base::WeakPtr<TestAutofillDialogController> controller_;
520 509
(...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1875 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument()); 1864 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument());
1876 controller()->OnDidGetWalletItems(wallet_items.Pass()); 1865 controller()->OnDidGetWalletItems(wallet_items.Pass());
1877 1866
1878 SwitchToAutofill(); 1867 SwitchToAutofill();
1879 EXPECT_EQ(0U, NotificationsOfType( 1868 EXPECT_EQ(0U, NotificationsOfType(
1880 DialogNotification::EXPLANATORY_MESSAGE).size()); 1869 DialogNotification::EXPLANATORY_MESSAGE).size());
1881 EXPECT_EQ(0U, NotificationsOfType( 1870 EXPECT_EQ(0U, NotificationsOfType(
1882 DialogNotification::WALLET_USAGE_CONFIRMATION).size()); 1871 DialogNotification::WALLET_USAGE_CONFIRMATION).size());
1883 } 1872 }
1884 1873
1885 TEST_F(AutofillDialogControllerTest, OnAutocheckoutError) {
1886 SwitchToAutofill();
1887 controller()->set_dialog_type(DIALOG_TYPE_AUTOCHECKOUT);
1888
1889 // We also have to simulate CC inputs to keep the controller happy.
1890 FillCreditCardInputs();
1891
1892 controller()->OnAccept();
1893 EXPECT_TRUE(ReadSetVisuallyDeemphasizedIpc());
1894 controller()->OnAutocheckoutError();
1895
1896 EXPECT_FALSE(controller()->GetDialogButtons() & ui::DIALOG_BUTTON_CANCEL);
1897 EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
1898 EXPECT_EQ(0U, NotificationsOfType(
1899 DialogNotification::AUTOCHECKOUT_SUCCESS).size());
1900 EXPECT_EQ(1U, NotificationsOfType(
1901 DialogNotification::AUTOCHECKOUT_ERROR).size());
1902
1903 controller()->ViewClosed();
1904 EXPECT_FALSE(ReadSetVisuallyDeemphasizedIpc());
1905 }
1906
1907 TEST_F(AutofillDialogControllerTest, OnAutocheckoutSuccess) {
1908 CommandLine* command_line = CommandLine::ForCurrentProcess();
1909 command_line->AppendSwitch(switches::kWalletServiceUseProd);
1910 controller()->set_dialog_type(DIALOG_TYPE_AUTOCHECKOUT);
1911
1912 // Simulate first run.
1913 profile()->GetPrefs()->SetBoolean(::prefs::kAutofillDialogHasPaidWithWallet,
1914 false);
1915 SetUpControllerWithFormData(DefaultFormData());
1916 controller()->set_dialog_type(DIALOG_TYPE_AUTOCHECKOUT);
1917
1918 // Sign in a user with a completed account.
1919 controller()->OnDidGetWalletItems(CompleteAndValidWalletItems());
1920
1921 // Full account; should show "Details from Wallet" message.
1922 EXPECT_EQ(1U, NotificationsOfType(
1923 DialogNotification::EXPLANATORY_MESSAGE).size());
1924 EXPECT_EQ(0U, NotificationsOfType(
1925 DialogNotification::WALLET_USAGE_CONFIRMATION).size());
1926
1927 AcceptAndLoadFakeFingerprint();
1928 EXPECT_TRUE(ReadSetVisuallyDeemphasizedIpc());
1929 controller()->OnDidGetFullWallet(wallet::GetTestFullWallet());
1930 EXPECT_TRUE(controller()->GetDialogOverlay().image.IsEmpty());
1931
1932 EXPECT_EQ(0U, NotificationsOfType(
1933 DialogNotification::EXPLANATORY_MESSAGE).size());
1934
1935 controller()->OnAutocheckoutSuccess();
1936 EXPECT_TRUE(controller()->GetDialogOverlay().image.IsEmpty());
1937
1938 EXPECT_FALSE(controller()->GetDialogButtons() & ui::DIALOG_BUTTON_CANCEL);
1939 EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
1940 EXPECT_EQ(1U, NotificationsOfType(
1941 DialogNotification::AUTOCHECKOUT_SUCCESS).size());
1942 EXPECT_EQ(0U, NotificationsOfType(
1943 DialogNotification::AUTOCHECKOUT_ERROR).size());
1944 EXPECT_EQ(0U, NotificationsOfType(
1945 DialogNotification::EXPLANATORY_MESSAGE).size());
1946 EXPECT_TRUE(profile()->GetPrefs()->GetBoolean(
1947 ::prefs::kAutofillDialogHasPaidWithWallet));
1948
1949 controller()->ViewClosed();
1950 EXPECT_FALSE(ReadSetVisuallyDeemphasizedIpc());
1951 }
1952
1953 TEST_F(AutofillDialogControllerTest, ViewCancelDoesntSetPref) { 1874 TEST_F(AutofillDialogControllerTest, ViewCancelDoesntSetPref) {
1954 ASSERT_FALSE(profile()->GetPrefs()->HasPrefPath( 1875 ASSERT_FALSE(profile()->GetPrefs()->HasPrefPath(
1955 ::prefs::kAutofillDialogPayWithoutWallet)); 1876 ::prefs::kAutofillDialogPayWithoutWallet));
1956 1877
1957 SwitchToAutofill(); 1878 SwitchToAutofill();
1958 1879
1959 controller()->OnCancel(); 1880 controller()->OnCancel();
1960 controller()->ViewClosed(); 1881 controller()->ViewClosed();
1961 1882
1962 EXPECT_FALSE(profile()->GetPrefs()->HasPrefPath( 1883 EXPECT_FALSE(profile()->GetPrefs()->HasPrefPath(
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
2332 CreateFullWallet("choose_another_instrument_or_address")); 2253 CreateFullWallet("choose_another_instrument_or_address"));
2333 EXPECT_EQ(1U, NotificationsOfType( 2254 EXPECT_EQ(1U, NotificationsOfType(
2334 DialogNotification::REQUIRED_ACTION).size()); 2255 DialogNotification::REQUIRED_ACTION).size());
2335 controller()->OnDidGetWalletItems(CompleteAndValidWalletItems()); 2256 controller()->OnDidGetWalletItems(CompleteAndValidWalletItems());
2336 2257
2337 controller()->OnAccept(); 2258 controller()->OnAccept();
2338 EXPECT_EQ(0U, NotificationsOfType( 2259 EXPECT_EQ(0U, NotificationsOfType(
2339 DialogNotification::REQUIRED_ACTION).size()); 2260 DialogNotification::REQUIRED_ACTION).size());
2340 } 2261 }
2341 2262
2342 // Make sure detailed steps for Autocheckout are added
2343 // and updated correctly.
2344 TEST_F(AutofillDialogControllerTest, DetailedSteps) {
2345 EXPECT_CALL(*controller()->GetTestingWalletClient(),
2346 GetFullWallet(_)).Times(1);
2347
2348 controller()->set_dialog_type(DIALOG_TYPE_AUTOCHECKOUT);
2349
2350 // Add steps as would normally be done by the AutocheckoutManager.
2351 controller()->AddAutocheckoutStep(AUTOCHECKOUT_STEP_SHIPPING);
2352 controller()->AddAutocheckoutStep(AUTOCHECKOUT_STEP_DELIVERY);
2353 controller()->AddAutocheckoutStep(AUTOCHECKOUT_STEP_BILLING);
2354
2355 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems();
2356 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument());
2357 wallet_items->AddAddress(wallet::GetTestShippingAddress());
2358 controller()->OnDidGetWalletItems(wallet_items.Pass());
2359 // Initiate flow - should add proxy card step since the user is using wallet
2360 // data.
2361 controller()->OnAccept();
2362 EXPECT_TRUE(ReadSetVisuallyDeemphasizedIpc());
2363 controller()->OnDidLoadRiskFingerprintData(GetFakeFingerprint().Pass());
2364
2365 SuggestionState suggestion_state =
2366 controller()->SuggestionStateForSection(SECTION_CC_BILLING);
2367 EXPECT_TRUE(suggestion_state.extra_text.empty());
2368
2369 // There should be four steps total, with the first being the card generation
2370 // step added by the dialog controller.
2371 EXPECT_EQ(4U, controller()->CurrentAutocheckoutSteps().size());
2372 EXPECT_EQ(AUTOCHECKOUT_STEP_PROXY_CARD,
2373 controller()->CurrentAutocheckoutSteps()[0].type());
2374 EXPECT_EQ(AUTOCHECKOUT_STEP_STARTED,
2375 controller()->CurrentAutocheckoutSteps()[0].status());
2376
2377 // Simulate a wallet error. This should remove the card generation step from
2378 // the flow, as we will have to proceed with local data.
2379 controller()->OnWalletError(wallet::WalletClient::UNKNOWN_ERROR);
2380
2381 AutofillProfile shipping_profile(test::GetVerifiedProfile());
2382 AutofillProfile billing_profile(test::GetVerifiedProfile2());
2383 CreditCard credit_card(test::GetVerifiedCreditCard());
2384 controller()->GetTestingManager()->AddTestingProfile(&shipping_profile);
2385 controller()->GetTestingManager()->AddTestingProfile(&billing_profile);
2386 controller()->GetTestingManager()->AddTestingCreditCard(&credit_card);
2387 ui::MenuModel* billing_model =
2388 controller()->MenuModelForSection(SECTION_BILLING);
2389 billing_model->ActivatedAt(1);
2390
2391 // Re-initiate flow.
2392 controller()->OnAccept();
2393 EXPECT_TRUE(ReadSetVisuallyDeemphasizedIpc());
2394
2395 // All steps should be initially unstarted.
2396 EXPECT_EQ(3U, controller()->CurrentAutocheckoutSteps().size());
2397 EXPECT_EQ(AUTOCHECKOUT_STEP_SHIPPING,
2398 controller()->CurrentAutocheckoutSteps()[0].type());
2399 EXPECT_EQ(AUTOCHECKOUT_STEP_UNSTARTED,
2400 controller()->CurrentAutocheckoutSteps()[0].status());
2401 EXPECT_EQ(AUTOCHECKOUT_STEP_DELIVERY,
2402 controller()->CurrentAutocheckoutSteps()[1].type());
2403 EXPECT_EQ(AUTOCHECKOUT_STEP_UNSTARTED,
2404 controller()->CurrentAutocheckoutSteps()[1].status());
2405 EXPECT_EQ(AUTOCHECKOUT_STEP_BILLING,
2406 controller()->CurrentAutocheckoutSteps()[2].type());
2407 EXPECT_EQ(AUTOCHECKOUT_STEP_UNSTARTED,
2408 controller()->CurrentAutocheckoutSteps()[2].status());
2409
2410 // Update steps in the same manner that we would expect to see from the
2411 // AutocheckoutManager while progressing through a flow.
2412 controller()->UpdateAutocheckoutStep(AUTOCHECKOUT_STEP_SHIPPING,
2413 AUTOCHECKOUT_STEP_STARTED);
2414 controller()->UpdateAutocheckoutStep(AUTOCHECKOUT_STEP_SHIPPING,
2415 AUTOCHECKOUT_STEP_COMPLETED);
2416 controller()->UpdateAutocheckoutStep(AUTOCHECKOUT_STEP_DELIVERY,
2417 AUTOCHECKOUT_STEP_STARTED);
2418
2419 // Verify that the steps were appropriately updated.
2420 EXPECT_EQ(3U, controller()->CurrentAutocheckoutSteps().size());
2421 EXPECT_EQ(AUTOCHECKOUT_STEP_SHIPPING,
2422 controller()->CurrentAutocheckoutSteps()[0].type());
2423 EXPECT_EQ(AUTOCHECKOUT_STEP_COMPLETED,
2424 controller()->CurrentAutocheckoutSteps()[0].status());
2425 EXPECT_EQ(AUTOCHECKOUT_STEP_DELIVERY,
2426 controller()->CurrentAutocheckoutSteps()[1].type());
2427 EXPECT_EQ(AUTOCHECKOUT_STEP_STARTED,
2428 controller()->CurrentAutocheckoutSteps()[1].status());
2429 EXPECT_EQ(AUTOCHECKOUT_STEP_BILLING,
2430 controller()->CurrentAutocheckoutSteps()[2].type());
2431 EXPECT_EQ(AUTOCHECKOUT_STEP_UNSTARTED,
2432 controller()->CurrentAutocheckoutSteps()[2].status());
2433
2434 controller()->ViewClosed();
2435 EXPECT_FALSE(ReadSetVisuallyDeemphasizedIpc());
2436 }
2437
2438 TEST_F(AutofillDialogControllerTest, NewCardBubbleShown) { 2263 TEST_F(AutofillDialogControllerTest, NewCardBubbleShown) {
2439 EXPECT_CALL(*test_generated_bubble_controller(), SetupAndShow(_, _)).Times(0); 2264 EXPECT_CALL(*test_generated_bubble_controller(), SetupAndShow(_, _)).Times(0);
2440 2265
2441 SwitchToAutofill(); 2266 SwitchToAutofill();
2442 FillCreditCardInputs(); 2267 FillCreditCardInputs();
2443 controller()->OnAccept(); 2268 controller()->OnAccept();
2444 controller()->ViewClosed(); 2269 controller()->ViewClosed();
2445 2270
2446 EXPECT_EQ(1, mock_new_card_bubble_controller()->bubbles_shown()); 2271 EXPECT_EQ(1, mock_new_card_bubble_controller()->bubbles_shown());
2447 } 2272 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2521 EXPECT_CALL(*controller()->GetTestingWalletClient(), GetWalletItems(_)); 2346 EXPECT_CALL(*controller()->GetTestingWalletClient(), GetWalletItems(_));
2522 controller()->TabActivated(); 2347 controller()->TabActivated();
2523 2348
2524 controller()->OnDidGetWalletItems(wallet::GetTestWalletItems()); 2349 controller()->OnDidGetWalletItems(wallet::GetTestWalletItems());
2525 2350
2526 EXPECT_FALSE(controller()->MenuModelForSection(SECTION_CC_BILLING)); 2351 EXPECT_FALSE(controller()->MenuModelForSection(SECTION_CC_BILLING));
2527 EXPECT_EQ( 2352 EXPECT_EQ(
2528 3, controller()->MenuModelForSection(SECTION_SHIPPING)->GetItemCount()); 2353 3, controller()->MenuModelForSection(SECTION_SHIPPING)->GetItemCount());
2529 } 2354 }
2530 2355
2531 TEST_F(AutofillDialogControllerTest, GeneratedCardBubbleNotShown) {
2532 EXPECT_CALL(*test_generated_bubble_controller(), SetupAndShow(_, _)).Times(0);
2533
2534 SubmitWithWalletItems(CompleteAndValidWalletItems());
2535 controller()->set_dialog_type(DIALOG_TYPE_AUTOCHECKOUT);
2536 controller()->OnDidGetFullWallet(wallet::GetTestFullWallet());
2537 controller()->OnAutocheckoutError();
2538 controller()->ViewClosed();
2539
2540 EXPECT_EQ(0, mock_new_card_bubble_controller()->bubbles_shown());
2541 }
2542
2543 } // namespace autofill 2356 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698