| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/ui/autofill/save_card_bubble_controller_impl.h" | 5 #include "chrome/browser/ui/autofill/save_card_bubble_controller_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 BrowserWithTestWindowTest::SetUp(); | 62 BrowserWithTestWindowTest::SetUp(); |
| 63 AddTab(browser(), GURL("about:blank")); | 63 AddTab(browser(), GURL("about:blank")); |
| 64 TestSaveCardBubbleControllerImpl::CreateForTesting( | 64 TestSaveCardBubbleControllerImpl::CreateForTesting( |
| 65 browser()->tab_strip_model()->GetActiveWebContents()); | 65 browser()->tab_strip_model()->GetActiveWebContents()); |
| 66 } | 66 } |
| 67 | 67 |
| 68 BrowserWindow* CreateBrowserWindow() override { | 68 BrowserWindow* CreateBrowserWindow() override { |
| 69 return new SaveCardBubbleTestBrowserWindow(); | 69 return new SaveCardBubbleTestBrowserWindow(); |
| 70 } | 70 } |
| 71 | 71 |
| 72 void SetLegalMessage(const std::string& message_json) { | 72 void SetLegalMessage(const std::string& message_json, |
| 73 bool should_cvc_be_requested = false) { |
| 73 std::unique_ptr<base::Value> value(base::JSONReader::Read(message_json)); | 74 std::unique_ptr<base::Value> value(base::JSONReader::Read(message_json)); |
| 74 ASSERT_TRUE(value); | 75 ASSERT_TRUE(value); |
| 75 base::DictionaryValue* dictionary; | 76 base::DictionaryValue* dictionary; |
| 76 ASSERT_TRUE(value->GetAsDictionary(&dictionary)); | 77 ASSERT_TRUE(value->GetAsDictionary(&dictionary)); |
| 77 std::unique_ptr<base::DictionaryValue> legal_message = | 78 std::unique_ptr<base::DictionaryValue> legal_message = |
| 78 dictionary->CreateDeepCopy(); | 79 dictionary->CreateDeepCopy(); |
| 79 controller()->ShowBubbleForUpload(CreditCard(), std::move(legal_message), | 80 controller()->ShowBubbleForUpload(CreditCard(), std::move(legal_message), |
| 81 should_cvc_be_requested, |
| 80 base::Bind(&SaveCardCallback)); | 82 base::Bind(&SaveCardCallback)); |
| 81 } | 83 } |
| 82 | 84 |
| 83 void ShowLocalBubble() { | 85 void ShowLocalBubble() { |
| 84 controller()->ShowBubbleForLocalSave(CreditCard(), | 86 controller()->ShowBubbleForLocalSave(CreditCard(), |
| 85 base::Bind(&SaveCardCallback)); | 87 base::Bind(&SaveCardCallback)); |
| 86 } | 88 } |
| 87 | 89 |
| 88 void ShowUploadBubble() { | 90 void ShowUploadBubble(bool should_cvc_be_requested = false) { |
| 89 SetLegalMessage( | 91 SetLegalMessage( |
| 90 "{" | 92 "{" |
| 91 " \"line\" : [ {" | 93 " \"line\" : [ {" |
| 92 " \"template\": \"This is the entire message.\"" | 94 " \"template\": \"This is the entire message.\"" |
| 93 " } ]" | 95 " } ]" |
| 94 "}"); | 96 "}", |
| 97 should_cvc_be_requested); |
| 95 } | 98 } |
| 96 | 99 |
| 97 void CloseAndReshowBubble() { | 100 void CloseAndReshowBubble() { |
| 98 controller()->OnBubbleClosed(); | 101 controller()->OnBubbleClosed(); |
| 99 controller()->ReshowBubble(); | 102 controller()->ReshowBubble(); |
| 100 } | 103 } |
| 101 | 104 |
| 102 protected: | 105 protected: |
| 103 TestSaveCardBubbleControllerImpl* controller() { | 106 TestSaveCardBubbleControllerImpl* controller() { |
| 104 return static_cast<TestSaveCardBubbleControllerImpl*>( | 107 return static_cast<TestSaveCardBubbleControllerImpl*>( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 133 | 136 |
| 134 // Tests that the legal message lines vector is empty when doing a local save so | 137 // Tests that the legal message lines vector is empty when doing a local save so |
| 135 // that no legal messages will be shown to the user in that case. | 138 // that no legal messages will be shown to the user in that case. |
| 136 TEST_F(SaveCardBubbleControllerImplTest, LegalMessageLinesEmptyOnLocalSave) { | 139 TEST_F(SaveCardBubbleControllerImplTest, LegalMessageLinesEmptyOnLocalSave) { |
| 137 ShowUploadBubble(); | 140 ShowUploadBubble(); |
| 138 controller()->OnBubbleClosed(); | 141 controller()->OnBubbleClosed(); |
| 139 ShowLocalBubble(); | 142 ShowLocalBubble(); |
| 140 EXPECT_TRUE(controller()->GetLegalMessageLines().empty()); | 143 EXPECT_TRUE(controller()->GetLegalMessageLines().empty()); |
| 141 } | 144 } |
| 142 | 145 |
| 146 TEST_F(SaveCardBubbleControllerImplTest, |
| 147 PropagateShouldRequestCvcFromUserWhenFalse) { |
| 148 ShowUploadBubble(); |
| 149 EXPECT_FALSE(controller()->ShouldRequestCvcFromUser()); |
| 150 } |
| 151 |
| 152 TEST_F(SaveCardBubbleControllerImplTest, |
| 153 PropagateShouldRequestCvcFromUserWhenTrue) { |
| 154 ShowUploadBubble(true /* should_cvc_be_requested */); |
| 155 EXPECT_TRUE(controller()->ShouldRequestCvcFromUser()); |
| 156 } |
| 157 |
| 143 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Local_FirstShow_ShowBubble) { | 158 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Local_FirstShow_ShowBubble) { |
| 144 base::HistogramTester histogram_tester; | 159 base::HistogramTester histogram_tester; |
| 145 ShowLocalBubble(); | 160 ShowLocalBubble(); |
| 146 | 161 |
| 147 EXPECT_THAT( | 162 EXPECT_THAT( |
| 148 histogram_tester.GetAllSamples( | 163 histogram_tester.GetAllSamples( |
| 149 "Autofill.SaveCreditCardPrompt.Local.FirstShow"), | 164 "Autofill.SaveCreditCardPrompt.Local.FirstShow"), |
| 150 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), | 165 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), |
| 151 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); | 166 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); |
| 152 } | 167 } |
| 153 | 168 |
| 154 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Local_Reshows_ShowBubble) { | 169 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Local_Reshows_ShowBubble) { |
| 155 ShowLocalBubble(); | 170 ShowLocalBubble(); |
| 156 | 171 |
| 157 base::HistogramTester histogram_tester; | 172 base::HistogramTester histogram_tester; |
| 158 CloseAndReshowBubble(); | 173 CloseAndReshowBubble(); |
| 159 | 174 |
| 160 EXPECT_THAT( | 175 EXPECT_THAT( |
| 161 histogram_tester.GetAllSamples( | 176 histogram_tester.GetAllSamples( |
| 162 "Autofill.SaveCreditCardPrompt.Local.Reshows"), | 177 "Autofill.SaveCreditCardPrompt.Local.Reshows"), |
| 163 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), | 178 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), |
| 164 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); | 179 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); |
| 165 } | 180 } |
| 166 | 181 |
| 167 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_FirstShow_ShowBubble) { | 182 TEST_F(SaveCardBubbleControllerImplTest, |
| 183 Metrics_Upload_FirstShow_ShowBubble_NotRequestCvc) { |
| 168 base::HistogramTester histogram_tester; | 184 base::HistogramTester histogram_tester; |
| 169 ShowUploadBubble(); | 185 ShowUploadBubble(); |
| 170 | 186 |
| 171 EXPECT_THAT( | 187 EXPECT_THAT( |
| 172 histogram_tester.GetAllSamples( | 188 histogram_tester.GetAllSamples( |
| 173 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), | 189 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), |
| 174 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), | 190 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), |
| 175 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); | 191 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); |
| 176 } | 192 } |
| 177 | 193 |
| 194 TEST_F(SaveCardBubbleControllerImplTest, |
| 195 Metrics_Upload_FirstShow_ShowBubble_RequestCvc) { |
| 196 base::HistogramTester histogram_tester; |
| 197 ShowUploadBubble(true /* should_cvc_be_requested */); |
| 198 |
| 199 EXPECT_THAT( |
| 200 histogram_tester.GetAllSamples( |
| 201 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), |
| 202 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), |
| 203 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); |
| 204 } |
| 205 |
| 178 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_Reshows_ShowBubble) { | 206 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_Reshows_ShowBubble) { |
| 179 ShowUploadBubble(); | 207 ShowUploadBubble(); |
| 180 | 208 |
| 181 base::HistogramTester histogram_tester; | 209 base::HistogramTester histogram_tester; |
| 182 CloseAndReshowBubble(); | 210 CloseAndReshowBubble(); |
| 183 | 211 |
| 184 EXPECT_THAT( | 212 EXPECT_THAT( |
| 185 histogram_tester.GetAllSamples( | 213 histogram_tester.GetAllSamples( |
| 186 "Autofill.SaveCreditCardPrompt.Upload.Reshows"), | 214 "Autofill.SaveCreditCardPrompt.Upload.Reshows"), |
| 187 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), | 215 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 EXPECT_THAT( | 395 EXPECT_THAT( |
| 368 histogram_tester.GetAllSamples( | 396 histogram_tester.GetAllSamples( |
| 369 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), | 397 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), |
| 370 ElementsAre( | 398 ElementsAre( |
| 371 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), | 399 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), |
| 372 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_END_INVALID_LEGAL_MESSAGE, | 400 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_END_INVALID_LEGAL_MESSAGE, |
| 373 1))); | 401 1))); |
| 374 } | 402 } |
| 375 | 403 |
| 376 } // namespace autofill | 404 } // namespace autofill |
| OLD | NEW |