Chromium Code Reviews| 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) { | |
|
Evan Stade
2017/04/10 18:32:09
you can give this a default value
Jared Saul
2017/04/11 00:53:06
Done.
| |
| 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) { |
| 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 22 matching lines...) Expand all Loading... | |
| 127 }; | 130 }; |
| 128 | 131 |
| 129 static void SaveCardCallback() {} | 132 static void SaveCardCallback() {} |
| 130 | 133 |
| 131 DISALLOW_COPY_AND_ASSIGN(SaveCardBubbleControllerImplTest); | 134 DISALLOW_COPY_AND_ASSIGN(SaveCardBubbleControllerImplTest); |
| 132 }; | 135 }; |
| 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(false /* should_cvc_be_requested */); |
| 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(false /* should_cvc_be_requested */); | |
| 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(false /* should_cvc_be_requested */); |
| 170 | 186 |
| 171 EXPECT_THAT( | 187 EXPECT_THAT( |
| 172 histogram_tester.GetAllSamples( | 188 histogram_tester.GetAllSamples( |
| 189 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), | |
| 190 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), | |
| 191 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); | |
| 192 } | |
| 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( | |
| 173 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), | 201 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), |
| 174 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), | 202 ElementsAre(Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), |
| 175 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); | 203 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); |
| 176 } | 204 } |
| 177 | 205 |
| 178 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_Reshows_ShowBubble) { | 206 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_Reshows_ShowBubble) { |
| 179 ShowUploadBubble(); | 207 ShowUploadBubble(false /* should_cvc_be_requested */); |
| 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), |
| 188 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); | 216 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOWN, 1))); |
| 189 } | 217 } |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 293 // Fake-navigate after bubble has been visible for a long time. | 321 // Fake-navigate after bubble has been visible for a long time. |
| 294 controller()->set_elapsed(base::TimeDelta::FromMinutes(1)); | 322 controller()->set_elapsed(base::TimeDelta::FromMinutes(1)); |
| 295 controller()->SimulateNavigation(); | 323 controller()->SimulateNavigation(); |
| 296 | 324 |
| 297 histogram_tester.ExpectUniqueSample( | 325 histogram_tester.ExpectUniqueSample( |
| 298 "Autofill.SaveCreditCardPrompt.Local.Reshows", | 326 "Autofill.SaveCreditCardPrompt.Local.Reshows", |
| 299 AutofillMetrics::SAVE_CARD_PROMPT_END_NAVIGATION_HIDDEN, 1); | 327 AutofillMetrics::SAVE_CARD_PROMPT_END_NAVIGATION_HIDDEN, 1); |
| 300 } | 328 } |
| 301 | 329 |
| 302 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_FirstShow_LearnMore) { | 330 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_FirstShow_LearnMore) { |
| 303 ShowUploadBubble(); | 331 ShowUploadBubble(false /* should_cvc_be_requested */); |
| 304 | 332 |
| 305 base::HistogramTester histogram_tester; | 333 base::HistogramTester histogram_tester; |
| 306 controller()->OnLearnMoreClicked(); | 334 controller()->OnLearnMoreClicked(); |
| 307 | 335 |
| 308 histogram_tester.ExpectUniqueSample( | 336 histogram_tester.ExpectUniqueSample( |
| 309 "Autofill.SaveCreditCardPrompt.Upload.FirstShow", | 337 "Autofill.SaveCreditCardPrompt.Upload.FirstShow", |
| 310 AutofillMetrics::SAVE_CARD_PROMPT_DISMISS_CLICK_LEARN_MORE, 1); | 338 AutofillMetrics::SAVE_CARD_PROMPT_DISMISS_CLICK_LEARN_MORE, 1); |
| 311 } | 339 } |
| 312 | 340 |
| 313 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_Reshows_LearnMore) { | 341 TEST_F(SaveCardBubbleControllerImplTest, Metrics_Upload_Reshows_LearnMore) { |
| 314 ShowUploadBubble(); | 342 ShowUploadBubble(false /* should_cvc_be_requested */); |
| 315 CloseAndReshowBubble(); | 343 CloseAndReshowBubble(); |
| 316 | 344 |
| 317 base::HistogramTester histogram_tester; | 345 base::HistogramTester histogram_tester; |
| 318 controller()->OnLearnMoreClicked(); | 346 controller()->OnLearnMoreClicked(); |
| 319 | 347 |
| 320 histogram_tester.ExpectUniqueSample( | 348 histogram_tester.ExpectUniqueSample( |
| 321 "Autofill.SaveCreditCardPrompt.Upload.Reshows", | 349 "Autofill.SaveCreditCardPrompt.Upload.Reshows", |
| 322 AutofillMetrics::SAVE_CARD_PROMPT_DISMISS_CLICK_LEARN_MORE, 1); | 350 AutofillMetrics::SAVE_CARD_PROMPT_DISMISS_CLICK_LEARN_MORE, 1); |
| 323 } | 351 } |
| 324 | 352 |
| 325 TEST_F(SaveCardBubbleControllerImplTest, | 353 TEST_F(SaveCardBubbleControllerImplTest, |
| 326 Metrics_Upload_FirstShow_LegalMessageLink) { | 354 Metrics_Upload_FirstShow_LegalMessageLink) { |
| 327 ShowUploadBubble(); | 355 ShowUploadBubble(false /* should_cvc_be_requested */); |
| 328 | 356 |
| 329 base::HistogramTester histogram_tester; | 357 base::HistogramTester histogram_tester; |
| 330 controller()->OnLegalMessageLinkClicked(GURL("http://www.example.com")); | 358 controller()->OnLegalMessageLinkClicked(GURL("http://www.example.com")); |
| 331 | 359 |
| 332 histogram_tester.ExpectUniqueSample( | 360 histogram_tester.ExpectUniqueSample( |
| 333 "Autofill.SaveCreditCardPrompt.Upload.FirstShow", | 361 "Autofill.SaveCreditCardPrompt.Upload.FirstShow", |
| 334 AutofillMetrics::SAVE_CARD_PROMPT_DISMISS_CLICK_LEGAL_MESSAGE, 1); | 362 AutofillMetrics::SAVE_CARD_PROMPT_DISMISS_CLICK_LEGAL_MESSAGE, 1); |
| 335 } | 363 } |
| 336 | 364 |
| 337 TEST_F(SaveCardBubbleControllerImplTest, | 365 TEST_F(SaveCardBubbleControllerImplTest, |
| 338 Metrics_Upload_Reshows_LegalMessageLink) { | 366 Metrics_Upload_Reshows_LegalMessageLink) { |
| 339 ShowUploadBubble(); | 367 ShowUploadBubble(false /* should_cvc_be_requested */); |
| 340 CloseAndReshowBubble(); | 368 CloseAndReshowBubble(); |
| 341 | 369 |
| 342 base::HistogramTester histogram_tester; | 370 base::HistogramTester histogram_tester; |
| 343 controller()->OnLegalMessageLinkClicked(GURL("http://www.example.com")); | 371 controller()->OnLegalMessageLinkClicked(GURL("http://www.example.com")); |
| 344 | 372 |
| 345 histogram_tester.ExpectUniqueSample( | 373 histogram_tester.ExpectUniqueSample( |
| 346 "Autofill.SaveCreditCardPrompt.Upload.Reshows", | 374 "Autofill.SaveCreditCardPrompt.Upload.Reshows", |
| 347 AutofillMetrics::SAVE_CARD_PROMPT_DISMISS_CLICK_LEGAL_MESSAGE, 1); | 375 AutofillMetrics::SAVE_CARD_PROMPT_DISMISS_CLICK_LEGAL_MESSAGE, 1); |
| 348 } | 376 } |
| 349 | 377 |
| 350 // SAVE_CARD_PROMPT_END_INVALID_LEGAL_MESSAGE is only possible for | 378 // SAVE_CARD_PROMPT_END_INVALID_LEGAL_MESSAGE is only possible for |
| 351 // Upload.FirstShow. | 379 // Upload.FirstShow. |
| 352 TEST_F(SaveCardBubbleControllerImplTest, | 380 TEST_F(SaveCardBubbleControllerImplTest, |
| 353 Metrics_Upload_FirstShow_InvalidLegalMessage) { | 381 Metrics_Upload_FirstShow_InvalidLegalMessage) { |
| 354 base::HistogramTester histogram_tester; | 382 base::HistogramTester histogram_tester; |
| 355 | 383 |
| 356 // Legal message is invalid because it's missing the url. | 384 // Legal message is invalid because it's missing the url. |
| 357 SetLegalMessage( | 385 SetLegalMessage( |
| 358 "{" | 386 "{" |
| 359 " \"line\" : [ {" | 387 " \"line\" : [ {" |
| 360 " \"template\": \"Panda {0}.\"," | 388 " \"template\": \"Panda {0}.\"," |
| 361 " \"template_parameter\": [ {" | 389 " \"template_parameter\": [ {" |
| 362 " \"display_text\": \"bear\"" | 390 " \"display_text\": \"bear\"" |
| 363 " } ]" | 391 " } ]" |
| 364 " } ]" | 392 " } ]" |
| 365 "}"); | 393 "}", |
| 394 false /* should_cvc_be_requested */); | |
| 366 | 395 |
| 367 EXPECT_THAT( | 396 EXPECT_THAT( |
| 368 histogram_tester.GetAllSamples( | 397 histogram_tester.GetAllSamples( |
| 369 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), | 398 "Autofill.SaveCreditCardPrompt.Upload.FirstShow"), |
| 370 ElementsAre( | 399 ElementsAre( |
| 371 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), | 400 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_SHOW_REQUESTED, 1), |
| 372 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_END_INVALID_LEGAL_MESSAGE, | 401 Bucket(AutofillMetrics::SAVE_CARD_PROMPT_END_INVALID_LEGAL_MESSAGE, |
| 373 1))); | 402 1))); |
| 374 } | 403 } |
| 375 | 404 |
| 376 } // namespace autofill | 405 } // namespace autofill |
| OLD | NEW |