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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc

Issue 765073004: Adding skeleton code for showing Bubble, asking user to submit URL when Password Manager fails (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698