From 55db64345a0e64831ee42025cbdd9ac3ab21040f Mon Sep 17 00:00:00 2001
From: "ahutter@chromium.org"
 <ahutter@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Mon, 20 May 2013 17:23:30 +0000
Subject: Keep the dialog open after Autocheckout is successful. Add messaging
 to inform the user that they still need to confirm their transaction. Fixes
 up button text and visiblity for Autocheckout.

BUG= 226187

Review URL: https://chromiumcodereview.appspot.com/13579002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201102 0039d316-1c4b-4281-b951-d872f2087c98
---
 .../autofill/browser/autocheckout_manager.cc       |  4 ++--
 .../browser/autocheckout_manager_unittest.cc       | 22 +++++++++++++++-------
 .../autofill/browser/autofill_manager_delegate.h   |  5 +++++
 .../browser/test_autofill_manager_delegate.cc      |  2 ++
 .../browser/test_autofill_manager_delegate.h       |  1 +
 5 files changed, 25 insertions(+), 9 deletions(-)

(limited to 'components')

diff --git a/components/autofill/browser/autocheckout_manager.cc b/components/autofill/browser/autocheckout_manager.cc
index f451e79..223c5b6 100644
--- a/components/autofill/browser/autocheckout_manager.cc
+++ b/components/autofill/browser/autocheckout_manager.cc
@@ -246,7 +246,7 @@ void AutocheckoutManager::OnLoadedPageMetaData(
   // If the current page is the last page in the flow, close the dialog.
   if (page_meta_data_->IsEndOfAutofillableFlow()) {
     SendAutocheckoutStatus(status);
-    autofill_manager_->delegate()->HideRequestAutocompleteDialog();
+    autofill_manager_->delegate()->OnAutocheckoutSuccess();
     in_autocheckout_flow_ = false;
   }
 }
@@ -388,7 +388,7 @@ void AutocheckoutManager::ReturnAutocheckoutData(
   // If the current page is the last page in the flow, close the dialog.
   if (page_meta_data_->IsEndOfAutofillableFlow()) {
     SendAutocheckoutStatus(SUCCESS);
-    autofill_manager_->delegate()->HideRequestAutocompleteDialog();
+    autofill_manager_->delegate()->OnAutocheckoutSuccess();
     in_autocheckout_flow_ = false;
   }
 }
diff --git a/components/autofill/browser/autocheckout_manager_unittest.cc b/components/autofill/browser/autocheckout_manager_unittest.cc
index f6a1638..14990ee 100644
--- a/components/autofill/browser/autocheckout_manager_unittest.cc
+++ b/components/autofill/browser/autocheckout_manager_unittest.cc
@@ -243,6 +243,7 @@ class MockAutofillManagerDelegate : public TestAutofillManagerDelegate {
   }
 
   MOCK_METHOD0(OnAutocheckoutError, void());
+  MOCK_METHOD0(OnAutocheckoutSuccess, void());
 
   virtual void ShowAutocheckoutBubble(
       const gfx::RectF& bounds,
@@ -524,7 +525,8 @@ TEST_F(AutocheckoutManagerTest, OnClickFailedTest) {
       .Times(1);
   autocheckout_manager_->OnClickFailed(MISSING_ADVANCE);
   EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
-  HideRequestAutocompleteDialog();
+  EXPECT_TRUE(
+      autofill_manager_delegate_->request_autocomplete_dialog_open());
 }
 
 TEST_F(AutocheckoutManagerTest, MaybeShowAutocheckoutBubbleTest) {
@@ -571,7 +573,8 @@ TEST_F(AutocheckoutManagerTest, OnLoadedPageMetaDataMissingMetaData) {
       scoped_ptr<AutocheckoutPageMetaData>());
   EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
   EXPECT_EQ(0U, process()->sink().message_count());
-  HideRequestAutocompleteDialog();
+  EXPECT_TRUE(
+      autofill_manager_delegate_->request_autocomplete_dialog_open());
 }
 
 TEST_F(AutocheckoutManagerTest, OnLoadedPageMetaDataRepeatedStartPage) {
@@ -585,7 +588,8 @@ TEST_F(AutocheckoutManagerTest, OnLoadedPageMetaDataRepeatedStartPage) {
   autocheckout_manager_->OnLoadedPageMetaData(CreateStartOfFlowMetaData());
   EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
   EXPECT_EQ(0U, process()->sink().message_count());
-  HideRequestAutocompleteDialog();
+  EXPECT_TRUE(
+      autofill_manager_delegate_->request_autocomplete_dialog_open());
 }
 
 TEST_F(AutocheckoutManagerTest, OnLoadedPageMetaDataRepeatedPage) {
@@ -605,7 +609,8 @@ TEST_F(AutocheckoutManagerTest, OnLoadedPageMetaDataRepeatedPage) {
   autocheckout_manager_->OnLoadedPageMetaData(CreateInFlowMetaData());
   EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
   EXPECT_EQ(0U, process()->sink().message_count());
-  HideRequestAutocompleteDialog();
+  EXPECT_TRUE(
+      autofill_manager_delegate_->request_autocomplete_dialog_open());
 }
 
 TEST_F(AutocheckoutManagerTest, OnLoadedPageMetaDataNotInFlow) {
@@ -626,7 +631,8 @@ TEST_F(AutocheckoutManagerTest, OnLoadedPageMetaDataNotInFlow) {
   autocheckout_manager_->OnLoadedPageMetaData(CreateNotInFlowMetaData());
   EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
   EXPECT_EQ(0U, process()->sink().message_count());
-  HideRequestAutocompleteDialog();
+  EXPECT_TRUE(
+      autofill_manager_delegate_->request_autocomplete_dialog_open());
 }
 
 TEST_F(AutocheckoutManagerTest,
@@ -649,6 +655,7 @@ TEST_F(AutocheckoutManagerTest, FullAutocheckoutFlow) {
   // Go to second page.
   EXPECT_CALL(*autofill_manager_delegate_,
               UpdateProgressBar(testing::DoubleEq(2.0/3.0))).Times(1);
+  EXPECT_CALL(*autofill_manager_delegate_, OnAutocheckoutSuccess()).Times(1);
   autocheckout_manager_->OnLoadedPageMetaData(CreateInFlowMetaData());
   EXPECT_TRUE(autocheckout_manager_->in_autocheckout_flow());
   CheckFillFormsAndClickIpc();
@@ -660,7 +667,7 @@ TEST_F(AutocheckoutManagerTest, FullAutocheckoutFlow) {
   autocheckout_manager_->OnLoadedPageMetaData(CreateEndOfFlowMetaData());
   CheckFillFormsAndClickIpc();
   EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
-  EXPECT_FALSE(autofill_manager_delegate_->request_autocomplete_dialog_open());
+  EXPECT_TRUE(autofill_manager_delegate_->request_autocomplete_dialog_open());
 }
 
 TEST_F(AutocheckoutManagerTest, SinglePageFlow) {
@@ -671,6 +678,7 @@ TEST_F(AutocheckoutManagerTest, SinglePageFlow) {
   EXPECT_CALL(autocheckout_manager_->metric_logger(),
               LogAutocheckoutBubbleMetric(
                   AutofillMetrics::BUBBLE_COULD_BE_DISPLAYED)).Times(1);
+  EXPECT_CALL(*autofill_manager_delegate_, OnAutocheckoutSuccess()).Times(1);
   autocheckout_manager_->OnLoadedPageMetaData(CreateOnePageFlowMetaData());
   // Simulate the user submitting some data via the requestAutocomplete UI.
   autofill_manager_delegate_->SetUserSuppliedData(
@@ -690,7 +698,7 @@ TEST_F(AutocheckoutManagerTest, SinglePageFlow) {
                                                      true);
   CheckFillFormsAndClickIpc();
   EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
-  EXPECT_FALSE(autofill_manager_delegate_->request_autocomplete_dialog_open());
+  EXPECT_TRUE(autofill_manager_delegate_->request_autocomplete_dialog_open());
 }
 
 }  // namespace autofill
diff --git a/components/autofill/browser/autofill_manager_delegate.h b/components/autofill/browser/autofill_manager_delegate.h
index 0c51b5b..750a182 100644
--- a/components/autofill/browser/autofill_manager_delegate.h
+++ b/components/autofill/browser/autofill_manager_delegate.h
@@ -76,6 +76,11 @@ class AutofillManagerDelegate {
   // the user.
   virtual void OnAutocheckoutError() = 0;
 
+  // Called when an Autocheckout flow has succeeded. Causes a notification
+  // explaining that they must confirm their purchase to be displayed to the
+  // user.
+  virtual void OnAutocheckoutSuccess() = 0;
+
   // Causes the Autofill settings UI to be shown.
   virtual void ShowAutofillSettings() = 0;
 
diff --git a/components/autofill/browser/test_autofill_manager_delegate.cc b/components/autofill/browser/test_autofill_manager_delegate.cc
index 9e88c32..7e4f8dc 100644
--- a/components/autofill/browser/test_autofill_manager_delegate.cc
+++ b/components/autofill/browser/test_autofill_manager_delegate.cc
@@ -26,6 +26,8 @@ void TestAutofillManagerDelegate::HideRequestAutocompleteDialog() {}
 
 void TestAutofillManagerDelegate::OnAutocheckoutError() {}
 
+void TestAutofillManagerDelegate::OnAutocheckoutSuccess() {}
+
 void TestAutofillManagerDelegate::ShowAutofillSettings() {}
 
 void TestAutofillManagerDelegate::ConfirmSaveCreditCard(
diff --git a/components/autofill/browser/test_autofill_manager_delegate.h b/components/autofill/browser/test_autofill_manager_delegate.h
index 4f898f8..8ba1dc7 100644
--- a/components/autofill/browser/test_autofill_manager_delegate.h
+++ b/components/autofill/browser/test_autofill_manager_delegate.h
@@ -24,6 +24,7 @@ class TestAutofillManagerDelegate : public AutofillManagerDelegate {
         GetAutocheckoutWhitelistManager() const OVERRIDE;
   virtual void HideRequestAutocompleteDialog() OVERRIDE;
   virtual void OnAutocheckoutError() OVERRIDE;
+  virtual void OnAutocheckoutSuccess() OVERRIDE;
   virtual void ShowAutofillSettings() OVERRIDE;
   virtual void ConfirmSaveCreditCard(
       const AutofillMetrics& metric_logger,
-- 
cgit v1.1