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

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

Issue 23717029: Disable submit button briefly when launching rAc dialog (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename number to count 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
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
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_count_(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
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_count() const {
292 return submit_button_delay_count_;
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
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_count_++;
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_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
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_count());
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_count());
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_count());
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
OLDNEW
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698