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 "base/metrics/histogram_samples.h" | 5 #include "base/metrics/histogram_samples.h" |
| 6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "base/test/histogram_tester.h" | 8 #include "base/test/histogram_tester.h" |
| 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" | 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" |
| 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 28 void SetUp() override { | 28 void SetUp() override { |
| 29 // Create the test UIController here so that it's bound to | 29 // Create the test UIController here so that it's bound to |
| 30 // |test_web_contents_| and therefore accessible to the model. | 30 // |test_web_contents_| and therefore accessible to the model. |
| 31 new ManagePasswordsUIControllerMock(test_web_contents_.get()); | 31 new ManagePasswordsUIControllerMock(test_web_contents_.get()); |
| 32 | 32 |
| 33 model_.reset(new ManagePasswordsBubbleModel(test_web_contents_.get())); | 33 model_.reset(new ManagePasswordsBubbleModel(test_web_contents_.get())); |
| 34 } | 34 } |
| 35 | 35 |
| 36 void TearDown() override { model_.reset(); } | 36 void TearDown() override { model_.reset(); } |
| 37 | 37 |
| 38 void PretendNeedToAskUserToSubmitURL() { | |
| 39 model_->set_state( | |
| 40 password_manager::ui::ASK_USER_REPORT_URL_BEFORE_LOAD_STATE); | |
| 41 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | |
| 42 controller()->SetState( | |
| 43 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE); | |
| 44 } | |
| 45 | |
| 46 void PretendUserInteractedWithAllowToSubmitBubbleBeforeNavigation() { | |
| 47 // TODO(melandory) This method should be removed after solution where | |
| 48 // "Ask to collect URL?" doesn't appear before navigation is implemented | |
|
vabr (Chromium)
2014/12/05 13:43:22
nit: Full-stop missing at the end.
melandory
2014/12/05 14:22:56
Done.
| |
| 49 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | |
| 50 model_->set_state( | |
| 51 password_manager::ui::ASK_USER_REPORT_URL_AFTER_LOAD_STATE); | |
| 52 controller()->SetState( | |
| 53 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE); | |
| 54 } | |
| 55 | |
| 38 void PretendPasswordWaiting() { | 56 void PretendPasswordWaiting() { |
| 39 model_->set_state(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); | 57 model_->set_state(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); |
| 40 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | 58 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); |
| 41 controller()->SetState( | 59 controller()->SetState( |
| 42 password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); | 60 password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); |
| 43 } | 61 } |
| 44 | 62 |
| 45 void PretendCredentialsWaiting() { | 63 void PretendCredentialsWaiting() { |
| 46 model_->set_state(password_manager::ui::CREDENTIAL_REQUEST_STATE); | 64 model_->set_state(password_manager::ui::CREDENTIAL_REQUEST_STATE); |
| 47 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | 65 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 253 EXPECT_FALSE(controller()->saved_password()); | 271 EXPECT_FALSE(controller()->saved_password()); |
| 254 EXPECT_FALSE(controller()->never_saved_password()); | 272 EXPECT_FALSE(controller()->never_saved_password()); |
| 255 EXPECT_TRUE(controller()->choose_credential()); | 273 EXPECT_TRUE(controller()->choose_credential()); |
| 256 | 274 |
| 257 histogram_tester.ExpectUniqueSample( | 275 histogram_tester.ExpectUniqueSample( |
| 258 kUIDismissalReasonMetric, | 276 kUIDismissalReasonMetric, |
| 259 password_manager::metrics_util::CLICKED_NOPE, | 277 password_manager::metrics_util::CLICKED_NOPE, |
| 260 1); | 278 1); |
| 261 } | 279 } |
| 262 | 280 |
| 281 TEST_F(ManagePasswordsBubbleModelTest, ClickCollectURL) { | |
| 282 base::HistogramTester histogram_tester; | |
| 283 PretendNeedToAskUserToSubmitURL(); | |
| 284 model_->OnCollectURLClicked(); | |
| 285 model_->OnBubbleHidden(); | |
| 286 EXPECT_EQ(model_->dismissal_reason(), | |
| 287 password_manager::metrics_util::CLICKED_COLLECT_URL); | |
| 288 EXPECT_EQ( | |
| 289 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
| 290 model_->state()); | |
| 291 | |
| 292 histogram_tester.ExpectUniqueSample( | |
| 293 kUIDismissalReasonMetric, | |
| 294 password_manager::metrics_util::CLICKED_COLLECT_URL, 1); | |
| 295 } | |
| 296 | |
| 297 TEST_F(ManagePasswordsBubbleModelTest, ClickDoNotCollectURL) { | |
| 298 base::HistogramTester histogram_tester; | |
| 299 PretendNeedToAskUserToSubmitURL(); | |
| 300 model_->OnDoNotCollectURLClicked(); | |
| 301 model_->OnBubbleHidden(); | |
| 302 EXPECT_EQ(model_->dismissal_reason(), | |
| 303 password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL); | |
| 304 EXPECT_EQ( | |
| 305 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
| 306 model_->state()); | |
| 307 | |
| 308 histogram_tester.ExpectUniqueSample( | |
| 309 kUIDismissalReasonMetric, | |
| 310 password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL, 1); | |
| 311 } | |
| 312 | |
| 313 TEST_F(ManagePasswordsBubbleModelTest, | |
| 314 CollectURLBubbleCloseWithoutInteraction) { | |
| 315 base::HistogramTester histogram_tester; | |
| 316 PretendNeedToAskUserToSubmitURL(); | |
| 317 model_->OnBubbleHidden(); | |
| 318 EXPECT_EQ(model_->dismissal_reason(), | |
| 319 password_manager::metrics_util::NO_DIRECT_INTERACTION); | |
| 320 EXPECT_EQ( | |
| 321 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
| 322 model_->state()); | |
| 323 histogram_tester.ExpectUniqueSample( | |
| 324 kUIDismissalReasonMetric, | |
| 325 password_manager::metrics_util::NO_DIRECT_INTERACTION, 1); | |
| 326 } | |
| 327 | |
| 328 TEST_F(ManagePasswordsBubbleModelTest, ClickCollectURLBeforeNavigation) { | |
| 329 // TODO(melandory) This test case should be removed after solution where | |
| 330 // "Ask to collect URL?" doesn't appear before navigation is implemented | |
| 331 base::HistogramTester histogram_tester; | |
| 332 PretendUserInteractedWithAllowToSubmitBubbleBeforeNavigation(); | |
| 333 model_->OnCollectURLClicked(); | |
| 334 model_->OnBubbleHidden(); | |
| 335 EXPECT_EQ(model_->dismissal_reason(), | |
| 336 password_manager::metrics_util::CLICKED_COLLECT_URL); | |
| 337 EXPECT_EQ( | |
| 338 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
| 339 model_->state()); | |
| 340 | |
| 341 histogram_tester.ExpectUniqueSample( | |
| 342 kUIDismissalReasonMetric, | |
| 343 password_manager::metrics_util::CLICKED_COLLECT_URL, 1); | |
| 344 } | |
| 345 | |
| 346 TEST_F(ManagePasswordsBubbleModelTest, ClickDoNotCollectURLBeforeNavigation) { | |
| 347 // TODO(melandory) This test case should be removed after solution where | |
| 348 // "Ask to collect URL?" doesn't appear before navigation is implemented | |
| 349 base::HistogramTester histogram_tester; | |
| 350 PretendUserInteractedWithAllowToSubmitBubbleBeforeNavigation(); | |
| 351 model_->OnDoNotCollectURLClicked(); | |
| 352 model_->OnBubbleHidden(); | |
| 353 EXPECT_EQ(model_->dismissal_reason(), | |
| 354 password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL); | |
| 355 EXPECT_EQ( | |
| 356 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
| 357 model_->state()); | |
| 358 | |
| 359 histogram_tester.ExpectUniqueSample( | |
| 360 kUIDismissalReasonMetric, | |
| 361 password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL, 1); | |
| 362 } | |
| 363 | |
| 364 TEST_F(ManagePasswordsBubbleModelTest, | |
| 365 CollectURLBubbleCloseWithoutInteractionBeforeNavigation) { | |
| 366 // TODO(melandory) This test case should be removed after solution where | |
| 367 // "Ask to collect URL?" doesn't appear before navigation is implemented | |
| 368 base::HistogramTester histogram_tester; | |
| 369 PretendUserInteractedWithAllowToSubmitBubbleBeforeNavigation(); | |
| 370 model_->OnBubbleHidden(); | |
| 371 EXPECT_EQ(model_->dismissal_reason(), | |
| 372 password_manager::metrics_util::NO_DIRECT_INTERACTION); | |
| 373 EXPECT_EQ( | |
| 374 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
| 375 model_->state()); | |
| 376 histogram_tester.ExpectUniqueSample( | |
| 377 kUIDismissalReasonMetric, | |
| 378 password_manager::metrics_util::NO_DIRECT_INTERACTION, 1); | |
| 379 } | |
| 380 | |
| 263 TEST_F(ManagePasswordsBubbleModelTest, DismissCredential) { | 381 TEST_F(ManagePasswordsBubbleModelTest, DismissCredential) { |
| 264 base::HistogramTester histogram_tester; | 382 base::HistogramTester histogram_tester; |
| 265 PretendCredentialsWaiting(); | 383 PretendCredentialsWaiting(); |
| 266 EXPECT_FALSE(controller()->choose_credential()); | 384 EXPECT_FALSE(controller()->choose_credential()); |
| 267 model_->OnBubbleHidden(); | 385 model_->OnBubbleHidden(); |
| 268 EXPECT_EQ(model_->dismissal_reason(), | 386 EXPECT_EQ(model_->dismissal_reason(), |
| 269 password_manager::metrics_util::NO_DIRECT_INTERACTION); | 387 password_manager::metrics_util::NO_DIRECT_INTERACTION); |
| 270 EXPECT_FALSE(controller()->saved_password()); | 388 EXPECT_FALSE(controller()->saved_password()); |
| 271 EXPECT_FALSE(controller()->never_saved_password()); | 389 EXPECT_FALSE(controller()->never_saved_password()); |
| 272 EXPECT_TRUE(controller()->choose_credential()); | 390 EXPECT_TRUE(controller()->choose_credential()); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 285 model_->set_state(password_manager::ui::MANAGE_STATE); | 403 model_->set_state(password_manager::ui::MANAGE_STATE); |
| 286 EXPECT_FALSE(password_manager::ui::IsPendingState(model_->state())); | 404 EXPECT_FALSE(password_manager::ui::IsPendingState(model_->state())); |
| 287 model_->set_state(password_manager::ui::BLACKLIST_STATE); | 405 model_->set_state(password_manager::ui::BLACKLIST_STATE); |
| 288 EXPECT_FALSE(password_manager::ui::IsPendingState(model_->state())); | 406 EXPECT_FALSE(password_manager::ui::IsPendingState(model_->state())); |
| 289 | 407 |
| 290 model_->set_state(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); | 408 model_->set_state(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); |
| 291 EXPECT_TRUE(password_manager::ui::IsPendingState(model_->state())); | 409 EXPECT_TRUE(password_manager::ui::IsPendingState(model_->state())); |
| 292 model_->set_state(password_manager::ui::PENDING_PASSWORD_STATE); | 410 model_->set_state(password_manager::ui::PENDING_PASSWORD_STATE); |
| 293 EXPECT_TRUE(password_manager::ui::IsPendingState(model_->state())); | 411 EXPECT_TRUE(password_manager::ui::IsPendingState(model_->state())); |
| 294 } | 412 } |
| OLD | NEW |