Index: chrome/browser/ui/passwords/manage_passwords_view_utils_unittest.cc |
diff --git a/chrome/browser/ui/passwords/manage_passwords_view_utils_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_view_utils_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4ea7fe54c78240752742ab388811bb13035c1be9 |
--- /dev/null |
+++ b/chrome/browser/ui/passwords/manage_passwords_view_utils_unittest.cc |
@@ -0,0 +1,75 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/ui/passwords/manage_passwords_view_utils.h" |
+ |
+#include "base/strings/string_util.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "ui/gfx/range/range.h" |
+#include "url/gurl.h" |
+ |
+// Test for GetSavePasswordDialogTitleTextAndLinkRange(). |
+TEST(ManagePasswordsViewUtilTest, GetSavePasswordDialogTitleTextAndLinkRange) { |
+ const struct { |
+ const char* const user_visible_url; |
+ const char* const form_origin_url; |
+ bool is_smartlock_branding_enabled; |
+ const char* const expected_title_text_ends_with; |
+ size_t expected_link_range_start; |
+ size_t expected_link_range_end; |
+ } test_cases[] = { |
+ // Same domains. |
+ {"http://example.com/landing", "http://example.com/login#form?value=3", |
+ false, "this site?", 0, 0}, |
+ {"http://example.com/landing", "http://example.com/login#form?value=3", |
+ true, "this site?", 12, 29}, |
+ |
+ // Different subdomains. |
+ {"https://a.example.com/landing", |
+ "https://b.example.com/login#form?value=3", false, "this site?", 0, 0}, |
+ {"https://a.example.com/landing", |
+ "https://b.example.com/login#form?value=3", true, "this site?", 12, 29}, |
+ |
+ // Different domains. |
+ {"https://another.org", "https://example.com:/login#form?value=3", false, |
+ "https://example.com?", 0, 0}, |
+ {"https://another.org", "https://example.com/login#form?value=3", true, |
+ "https://example.com?", 12, 29}, |
+ |
+ // Different domains and password form origin url with |
+ // default port for the scheme. |
+ {"https://another.org", "https://example.com:443/login#form?value=3", |
+ false, "https://example.com?", 0, 0}, |
+ {"https://another.org", "http://example.com:80/login#form?value=3", true, |
+ "http://example.com?", 12, 29}, |
+ |
+ // Different domains and password form origin url with |
+ // non-default port for the scheme. |
+ {"https://another.org", "https://example.com:8001/login#form?value=3", |
+ false, "https://example.com:8001?", 0, 0}, |
+ {"https://another.org", "https://example.com:8001/login#form?value=3", |
+ true, "https://example.com:8001?", 12, 29}}; |
+ |
+ for (size_t i = 0; i < arraysize(test_cases); ++i) { |
+ SCOPED_TRACE(testing::Message() |
+ << "user_visible_url = " << test_cases[i].user_visible_url |
+ << ", form_origin_url = " << test_cases[i].form_origin_url); |
+ |
+ base::string16 title; |
+ gfx::Range title_link_range; |
+ GetSavePasswordDialogTitleTextAndLinkRange( |
+ GURL(test_cases[i].user_visible_url), |
+ GURL(test_cases[i].form_origin_url), |
+ test_cases[i].is_smartlock_branding_enabled, &title, &title_link_range); |
+ |
+ // Verify against expectations. |
+ EXPECT_TRUE(base::EndsWith( |
+ title, base::ASCIIToUTF16(test_cases[i].expected_title_text_ends_with), |
+ false)); |
+ EXPECT_EQ(test_cases[i].expected_link_range_start, |
+ title_link_range.start()); |
+ EXPECT_EQ(test_cases[i].expected_link_range_end, title_link_range.end()); |
+ } |
+} |