OLD | NEW |
---|---|
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 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
234 const std::string&)>& callback, | 234 const std::string&)>& callback, |
235 MockNewCreditCardBubbleController* mock_new_card_bubble_controller) | 235 MockNewCreditCardBubbleController* mock_new_card_bubble_controller) |
236 : AutofillDialogControllerImpl(contents, | 236 : AutofillDialogControllerImpl(contents, |
237 form_structure, | 237 form_structure, |
238 source_url, | 238 source_url, |
239 callback), | 239 callback), |
240 metric_logger_(metric_logger), | 240 metric_logger_(metric_logger), |
241 mock_wallet_client_( | 241 mock_wallet_client_( |
242 Profile::FromBrowserContext(contents->GetBrowserContext())-> | 242 Profile::FromBrowserContext(contents->GetBrowserContext())-> |
243 GetRequestContext(), this), | 243 GetRequestContext(), this), |
244 mock_new_card_bubble_controller_(mock_new_card_bubble_controller) {} | 244 mock_new_card_bubble_controller_(mock_new_card_bubble_controller), |
245 submit_button_delay_number_(0) {} | |
245 | 246 |
246 virtual ~TestAutofillDialogController() {} | 247 virtual ~TestAutofillDialogController() {} |
247 | 248 |
248 virtual AutofillDialogView* CreateView() OVERRIDE { | 249 virtual AutofillDialogView* CreateView() OVERRIDE { |
249 return new testing::NiceMock<TestAutofillDialogView>(); | 250 return new testing::NiceMock<TestAutofillDialogView>(); |
250 } | 251 } |
251 | 252 |
252 void Init(content::BrowserContext* browser_context) { | 253 void Init(content::BrowserContext* browser_context) { |
253 test_manager_.Init(browser_context); | 254 test_manager_.Init(browser_context); |
254 } | 255 } |
(...skipping 16 matching lines...) Expand all Loading... | |
271 OnWalletSigninError(); | 272 OnWalletSigninError(); |
272 } | 273 } |
273 | 274 |
274 // Skips past the 2 second wait between FinishSubmit and DoFinishSubmit. | 275 // Skips past the 2 second wait between FinishSubmit and DoFinishSubmit. |
275 void ForceFinishSubmit() { | 276 void ForceFinishSubmit() { |
276 #if defined(TOOLKIT_VIEWS) | 277 #if defined(TOOLKIT_VIEWS) |
277 DoFinishSubmit(); | 278 DoFinishSubmit(); |
278 #endif | 279 #endif |
279 } | 280 } |
280 | 281 |
282 void SimulateSubmitButtonDelayBegin() { | |
283 AutofillDialogControllerImpl::SubmitButtonDelayBegin(); | |
284 } | |
285 | |
286 void SimulateSubmitButtonDelayEnd() { | |
287 AutofillDialogControllerImpl::SubmitButtonDelayEndForTesting(); | |
288 } | |
289 | |
290 // Returns the number of times that the submit button was delayed. | |
291 int get_submit_button_delay_number() const { | |
292 return submit_button_delay_number_; | |
293 } | |
294 | |
281 MOCK_METHOD0(LoadRiskFingerprintData, void()); | 295 MOCK_METHOD0(LoadRiskFingerprintData, void()); |
282 using AutofillDialogControllerImpl::OnDidLoadRiskFingerprintData; | 296 using AutofillDialogControllerImpl::OnDidLoadRiskFingerprintData; |
283 using AutofillDialogControllerImpl::IsEditingExistingData; | 297 using AutofillDialogControllerImpl::IsEditingExistingData; |
284 | 298 |
285 protected: | 299 protected: |
286 virtual PersonalDataManager* GetManager() OVERRIDE { | 300 virtual PersonalDataManager* GetManager() OVERRIDE { |
287 return &test_manager_; | 301 return &test_manager_; |
288 } | 302 } |
289 | 303 |
290 virtual wallet::WalletClient* GetWalletClient() OVERRIDE { | 304 virtual wallet::WalletClient* GetWalletClient() OVERRIDE { |
(...skipping 10 matching lines...) Expand all Loading... | |
301 return true; | 315 return true; |
302 } | 316 } |
303 | 317 |
304 virtual void ShowNewCreditCardBubble( | 318 virtual void ShowNewCreditCardBubble( |
305 scoped_ptr<CreditCard> new_card, | 319 scoped_ptr<CreditCard> new_card, |
306 scoped_ptr<AutofillProfile> billing_profile) OVERRIDE { | 320 scoped_ptr<AutofillProfile> billing_profile) OVERRIDE { |
307 mock_new_card_bubble_controller_->Show(new_card.Pass(), | 321 mock_new_card_bubble_controller_->Show(new_card.Pass(), |
308 billing_profile.Pass()); | 322 billing_profile.Pass()); |
309 } | 323 } |
310 | 324 |
325 // AutofillDialogControllerImpl calls this method before showing the dialog | |
326 // window. | |
327 virtual void SubmitButtonDelayBegin() OVERRIDE { | |
328 // Do not delay enabling the submit button in testing. | |
329 submit_button_delay_number_++; | |
330 } | |
331 | |
311 private: | 332 private: |
312 // To specify our own metric logger. | 333 // To specify our own metric logger. |
313 virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE { | 334 virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE { |
314 return metric_logger_; | 335 return metric_logger_; |
315 } | 336 } |
316 | 337 |
317 const AutofillMetrics& metric_logger_; | 338 const AutofillMetrics& metric_logger_; |
318 TestPersonalDataManager test_manager_; | 339 TestPersonalDataManager test_manager_; |
319 testing::NiceMock<wallet::MockWalletClient> mock_wallet_client_; | 340 testing::NiceMock<wallet::MockWalletClient> mock_wallet_client_; |
320 GURL open_tab_url_; | 341 GURL open_tab_url_; |
321 MockNewCreditCardBubbleController* mock_new_card_bubble_controller_; | 342 MockNewCreditCardBubbleController* mock_new_card_bubble_controller_; |
322 | 343 |
344 // The number of times that the submit button was delayed. | |
345 int submit_button_delay_number_; | |
Evan Stade
2013/09/06 01:06:41
nit: submit_button_delay_count_;
| |
346 | |
323 DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogController); | 347 DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogController); |
324 }; | 348 }; |
325 | 349 |
326 class TestGeneratedCreditCardBubbleController : | 350 class TestGeneratedCreditCardBubbleController : |
327 public GeneratedCreditCardBubbleController { | 351 public GeneratedCreditCardBubbleController { |
328 public: | 352 public: |
329 explicit TestGeneratedCreditCardBubbleController( | 353 explicit TestGeneratedCreditCardBubbleController( |
330 content::WebContents* contents) | 354 content::WebContents* contents) |
331 : GeneratedCreditCardBubbleController(contents) { | 355 : GeneratedCreditCardBubbleController(contents) { |
332 contents->SetUserData(UserDataKey(), this); | 356 contents->SetUserData(UserDataKey(), this); |
(...skipping 2039 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2372 TEST_F(AutofillDialogControllerTest, | 2396 TEST_F(AutofillDialogControllerTest, |
2373 SaveInChromePreferenceRememberedOnSuccess) { | 2397 SaveInChromePreferenceRememberedOnSuccess) { |
2374 EXPECT_TRUE(controller()->ShouldSaveInChrome()); | 2398 EXPECT_TRUE(controller()->ShouldSaveInChrome()); |
2375 SwitchToAutofill(); | 2399 SwitchToAutofill(); |
2376 FillCreditCardInputs(); | 2400 FillCreditCardInputs(); |
2377 controller()->GetView()->CheckSaveDetailsLocallyCheckbox(false); | 2401 controller()->GetView()->CheckSaveDetailsLocallyCheckbox(false); |
2378 controller()->OnAccept(); | 2402 controller()->OnAccept(); |
2379 EXPECT_FALSE(controller()->ShouldSaveInChrome()); | 2403 EXPECT_FALSE(controller()->ShouldSaveInChrome()); |
2380 } | 2404 } |
2381 | 2405 |
2406 TEST_F(AutofillDialogControllerTest, | |
2407 SubmitButtonIsDisabled_SpinnerFinishesBeforeDelay) { | |
2408 EXPECT_EQ(1, controller()->get_submit_button_delay_number()); | |
2409 | |
2410 // Begin the submit button delay. | |
2411 controller()->SimulateSubmitButtonDelayBegin(); | |
2412 | |
2413 EXPECT_TRUE(controller()->ShouldShowSpinner()); | |
2414 EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2415 | |
2416 // Stop the spinner. | |
2417 controller()->OnDidGetWalletItems(CompleteAndValidWalletItems()); | |
2418 | |
2419 EXPECT_FALSE(controller()->ShouldShowSpinner()); | |
2420 EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2421 | |
2422 // End the submit button delay. | |
2423 controller()->SimulateSubmitButtonDelayEnd(); | |
2424 | |
2425 EXPECT_FALSE(controller()->ShouldShowSpinner()); | |
2426 EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2427 } | |
2428 | |
2429 TEST_F(AutofillDialogControllerTest, | |
2430 SubmitButtonIsDisabled_SpinnerFinishesAfterDelay) { | |
2431 EXPECT_EQ(1, controller()->get_submit_button_delay_number()); | |
2432 | |
2433 // Begin the submit button delay. | |
2434 controller()->SimulateSubmitButtonDelayBegin(); | |
2435 | |
2436 EXPECT_TRUE(controller()->ShouldShowSpinner()); | |
2437 EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2438 | |
2439 // End the submit button delay. | |
2440 controller()->SimulateSubmitButtonDelayEnd(); | |
2441 | |
2442 EXPECT_TRUE(controller()->ShouldShowSpinner()); | |
2443 EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2444 | |
2445 // Stop the spinner. | |
2446 controller()->OnDidGetWalletItems(CompleteAndValidWalletItems()); | |
2447 | |
2448 EXPECT_FALSE(controller()->ShouldShowSpinner()); | |
2449 EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2450 } | |
2451 | |
2452 TEST_F(AutofillDialogControllerTest, SubmitButtonIsDisabled_NoSpinner) { | |
2453 EXPECT_EQ(1, controller()->get_submit_button_delay_number()); | |
2454 | |
2455 // Begin the submit button delay. | |
2456 controller()->SimulateSubmitButtonDelayBegin(); | |
2457 | |
2458 EXPECT_TRUE(controller()->ShouldShowSpinner()); | |
2459 EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2460 | |
2461 // There's no spinner in Autofill mode. | |
2462 SwitchToAutofill(); | |
2463 | |
2464 EXPECT_FALSE(controller()->ShouldShowSpinner()); | |
2465 EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2466 | |
2467 // End the submit button delay. | |
2468 controller()->SimulateSubmitButtonDelayEnd(); | |
2469 | |
2470 EXPECT_FALSE(controller()->ShouldShowSpinner()); | |
2471 EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); | |
2472 } | |
2473 | |
2382 } // namespace autofill | 2474 } // namespace autofill |
OLD | NEW |