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

Unified Diff: chrome/browser/ui/autofill/card_unmask_prompt_view_browsertest.cc

Issue 1020013003: Add a regression test for the CardUnmaskPrompt. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: EXPECT Created 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/autofill/card_unmask_prompt_view_browsertest.cc
diff --git a/chrome/browser/ui/autofill/card_unmask_prompt_view_browsertest.cc b/chrome/browser/ui/autofill/card_unmask_prompt_view_browsertest.cc
index 926efc6c96792342e2bad7c24bf931068b184df3..3383119b087f3980d3d5317c53458322eba736d5 100644
--- a/chrome/browser/ui/autofill/card_unmask_prompt_view_browsertest.cc
+++ b/chrome/browser/ui/autofill/card_unmask_prompt_view_browsertest.cc
@@ -4,7 +4,9 @@
#include "base/guid.h"
#include "base/message_loop/message_loop.h"
+#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/ui/autofill/card_unmask_prompt_controller_impl.h"
+#include "chrome/browser/ui/autofill/card_unmask_prompt_view_tester.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/in_process_browser_test.h"
@@ -24,14 +26,20 @@ class TestCardUnmaskDelegate : public CardUnmaskDelegate {
virtual ~TestCardUnmaskDelegate() {}
// CardUnmaskDelegate implementation.
- void OnUnmaskResponse(const UnmaskResponse& response) override {}
+ void OnUnmaskResponse(const UnmaskResponse& response) override {
+ response_ = response;
+ }
void OnUnmaskPromptClosed() override {}
base::WeakPtr<TestCardUnmaskDelegate> GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}
+ UnmaskResponse response() { return response_; }
+
private:
+ UnmaskResponse response_;
+
base::WeakPtrFactory<TestCardUnmaskDelegate> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(TestCardUnmaskDelegate);
@@ -47,24 +55,20 @@ class TestCardUnmaskPromptController : public CardUnmaskPromptControllerImpl {
weak_factory_(this) {}
// CardUnmaskPromptControllerImpl implementation.
- void OnDidLoadRiskFingerprint(const std::string& risk_data) override {
- CardUnmaskPromptControllerImpl::OnDidLoadRiskFingerprint(risk_data);
-
- // Call Quit() from here rather than from OnUnmaskDialogClosed().
- // FingerprintDataLoader starts several async tasks that take a while to
- // complete. If Quit() is called before FingerprintDataLoader is all done
- // then LeakTracker will detect that some resources have not been freed
- // and cause the browser test to fail. This is not a real leak though -
- // normally the async tasks would complete and encounter weak callbacks.
- runner_->Quit();
+ base::TimeDelta GetSuccessMessageDuration() const override {
+ return base::TimeDelta::FromMilliseconds(10);
}
- void RunMessageLoop() { runner_->Run(); }
+ void LoadRiskFingerprint() override {
+ OnDidLoadRiskFingerprint(std::string("risk_data"));
+ }
base::WeakPtr<TestCardUnmaskPromptController> GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}
+ using CardUnmaskPromptControllerImpl::view;
+
private:
scoped_refptr<content::MessageLoopRunner> runner_;
base::WeakPtrFactory<TestCardUnmaskPromptController> weak_factory_;
@@ -88,10 +92,11 @@ class CardUnmaskPromptViewBrowserTest : public InProcessBrowserTest {
TestCardUnmaskPromptController* controller() { return controller_.get(); }
TestCardUnmaskDelegate* delegate() { return delegate_.get(); }
- private:
+ protected:
// This member must outlive the controller.
scoped_refptr<content::MessageLoopRunner> runner_;
+ private:
scoped_ptr<TestCardUnmaskPromptController> controller_;
scoped_ptr<TestCardUnmaskDelegate> delegate_;
@@ -99,14 +104,34 @@ class CardUnmaskPromptViewBrowserTest : public InProcessBrowserTest {
};
IN_PROC_BROWSER_TEST_F(CardUnmaskPromptViewBrowserTest, DisplayUI) {
- CreditCard credit_card(CreditCard::MASKED_SERVER_CARD, "a123");
- test::SetCreditCardInfo(&credit_card, "Bonnie Parker",
- "2109" /* Mastercard */, "12", "2012");
- credit_card.SetTypeForMaskedCard(kMasterCard);
+ controller()->ShowPrompt(test::GetMaskedServerCard(),
+ delegate()->GetWeakPtr());
+}
- controller()->ShowPrompt(credit_card, delegate()->GetWeakPtr());
- controller()->RunMessageLoop();
+// TODO(bondd): bring up on Mac.
+#if !defined(OS_MACOSX)
+// Makes sure the user can close the dialog while the verification success
+// message is showing.
+IN_PROC_BROWSER_TEST_F(CardUnmaskPromptViewBrowserTest,
+ EarlyCloseAfterSuccess) {
+ controller()->ShowPrompt(test::GetMaskedServerCard(),
+ delegate()->GetWeakPtr());
+ controller()->OnUnmaskResponse(base::ASCIIToUTF16("123"),
+ base::ASCIIToUTF16("10"),
+ base::ASCIIToUTF16("19"), false);
+ EXPECT_EQ(base::ASCIIToUTF16("123"), delegate()->response().cvc);
+ controller()->OnVerificationResult(AutofillClient::SUCCESS);
+
+ // Simulate the user clicking [x] before the "Success!" message disappears.
+ CardUnmaskPromptViewTester::For(controller()->view())->Close();
+ // Wait a little while; there should be no crash.
+ base::MessageLoop::current()->PostDelayedTask(
+ FROM_HERE, base::Bind(&content::MessageLoopRunner::Quit,
+ base::Unretained(runner_.get())),
+ 2 * controller()->GetSuccessMessageDuration());
+ runner_->Run();
}
+#endif
} // namespace
« no previous file with comments | « chrome/browser/ui/autofill/card_unmask_prompt_view.h ('k') | chrome/browser/ui/autofill/card_unmask_prompt_view_tester.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698