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/string_util.h" | |
7 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
8 #include "base/test/histogram_tester.h" | 9 #include "base/test/histogram_tester.h" |
9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" | 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" |
10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 11 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
11 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" | 12 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" |
13 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" | |
12 #include "chrome/test/base/testing_profile.h" | 14 #include "chrome/test/base/testing_profile.h" |
13 #include "components/password_manager/core/browser/password_manager_metrics_util .h" | 15 #include "components/password_manager/core/browser/password_manager_metrics_util .h" |
14 #include "components/password_manager/core/common/credential_manager_types.h" | 16 #include "components/password_manager/core/common/credential_manager_types.h" |
15 #include "components/password_manager/core/common/password_manager_pref_names.h" | 17 #include "components/password_manager/core/common/password_manager_pref_names.h" |
16 #include "components/password_manager/core/common/password_manager_ui.h" | 18 #include "components/password_manager/core/common/password_manager_ui.h" |
17 #include "content/public/test/test_browser_thread_bundle.h" | 19 #include "content/public/test/test_browser_thread_bundle.h" |
18 #include "content/public/test/web_contents_tester.h" | 20 #include "content/public/test/web_contents_tester.h" |
19 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
22 #include "ui/gfx/range/range.h" | |
23 #include "url/gurl.h" | |
20 | 24 |
21 const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason"; | 25 const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason"; |
22 | 26 |
23 class ManagePasswordsBubbleModelTest : public testing::Test { | 27 class ManagePasswordsBubbleModelTest : public testing::Test { |
24 public: | 28 public: |
25 ManagePasswordsBubbleModelTest() | 29 ManagePasswordsBubbleModelTest() |
26 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), | 30 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), |
27 test_web_contents_( | 31 test_web_contents_( |
28 content::WebContentsTester::CreateTestWebContents(&profile_, | 32 content::WebContentsTester::CreateTestWebContents(&profile_, |
29 nullptr)) {} | 33 nullptr)) {} |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
302 password_manager::metrics_util::AUTO_SIGNIN_TOAST_CLICKED); | 306 password_manager::metrics_util::AUTO_SIGNIN_TOAST_CLICKED); |
303 model_->OnBubbleHidden(); | 307 model_->OnBubbleHidden(); |
304 | 308 |
305 EXPECT_TRUE(controller()->manage_accounts()); | 309 EXPECT_TRUE(controller()->manage_accounts()); |
306 | 310 |
307 histogram_tester.ExpectUniqueSample( | 311 histogram_tester.ExpectUniqueSample( |
308 kUIDismissalReasonMetric, | 312 kUIDismissalReasonMetric, |
309 password_manager::metrics_util::AUTO_SIGNIN_TOAST_CLICKED, | 313 password_manager::metrics_util::AUTO_SIGNIN_TOAST_CLICKED, |
310 1); | 314 1); |
311 } | 315 } |
316 | |
317 TEST_F(ManagePasswordsBubbleModelTest, | |
vabr (Chromium)
2015/06/29 11:49:08
Could you move this in a separate chrome/browser/u
Pritam Nikam
2015/06/29 17:42:13
Done.
| |
318 GetSavePasswordDialogTitleTextAndLinkRange) { | |
319 const struct { | |
320 const char* const user_visible_url; | |
321 const char* const form_origin_url; | |
322 bool is_smartlock_branding_enabled; | |
323 const char* const expected_title_text_ends_with; | |
324 size_t expected_link_range_start; | |
325 size_t expected_link_range_end; | |
326 } test_cases[] = {// Same domains. | |
327 {"http://example.com/landing", | |
328 "http://example.com/login#form?value=3", | |
329 false, | |
330 "this site?", | |
331 0, | |
332 0}, | |
333 {"http://example.com/landing", | |
334 "http://example.com/login#form?value=3", | |
335 true, | |
336 "this site?", | |
337 12, | |
338 29}, | |
339 | |
340 // Different subdomains. | |
341 {"https://a.example.com/landing", | |
342 "https://b.example.com/login#form?value=3", | |
343 false, | |
344 "this site?", | |
345 0, | |
346 0}, | |
347 {"https://a.example.com/landing", | |
348 "https://b.example.com/login#form?value=3", | |
349 true, | |
350 "this site?", | |
351 12, | |
352 29}, | |
353 | |
354 // Different domains. | |
355 {"https://another.org", | |
356 "https://example.com:/login#form?value=3", | |
357 false, | |
358 "https://example.com?", | |
359 0, | |
360 0}, | |
361 {"https://another.org", | |
362 "https://example.com/login#form?value=3", | |
363 true, | |
364 "https://example.com?", | |
365 12, | |
366 29}, | |
367 | |
368 // Different domains and password form origin url with | |
369 // default port for the scheme. | |
370 {"https://another.org", | |
371 "https://example.com:443/login#form?value=3", | |
372 false, | |
373 "https://example.com?", | |
374 0, | |
375 0}, | |
376 {"https://another.org", | |
377 "http://example.com:80/login#form?value=3", | |
378 true, | |
379 "http://example.com?", | |
380 12, | |
381 29}, | |
382 | |
383 // Different domains and password form origin url with | |
384 // non-default port for the scheme. | |
385 {"https://another.org", | |
386 "https://example.com:8001/login#form?value=3", | |
387 false, | |
388 "https://example.com:8001?", | |
389 0, | |
390 0}, | |
391 {"https://another.org", | |
392 "https://example.com:8001/login#form?value=3", | |
393 true, | |
394 "https://example.com:8001?", | |
395 12, | |
396 29}}; | |
397 | |
398 for (size_t i = 0; i < arraysize(test_cases); ++i) { | |
399 SCOPED_TRACE(testing::Message() | |
400 << "user_visible_url = " << test_cases[i].user_visible_url | |
401 << ", form_origin_url = " << test_cases[i].form_origin_url); | |
402 | |
403 base::string16 title; | |
404 gfx::Range title_link_range; | |
405 GetSavePasswordDialogTitleTextAndLinkRange( | |
406 GURL(test_cases[i].user_visible_url), | |
407 GURL(test_cases[i].form_origin_url), | |
408 test_cases[i].is_smartlock_branding_enabled, &title, &title_link_range); | |
409 | |
410 // Verify against expectations. | |
411 EXPECT_TRUE(EndsWith( | |
412 title, base::ASCIIToUTF16(test_cases[i].expected_title_text_ends_with), | |
413 false)); | |
414 EXPECT_EQ(test_cases[i].expected_link_range_start, | |
415 title_link_range.start()); | |
416 EXPECT_EQ(test_cases[i].expected_link_range_end, title_link_range.end()); | |
417 } | |
418 } | |
OLD | NEW |