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 "components/url_formatter/elide_url.h" | 5 #include "components/url_formatter/elide_url.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/ios/ios_util.h" | 9 #include "base/ios/ios_util.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 NO_IOS9_OR_LATER, | 29 NO_IOS9_OR_LATER, |
30 NO_IOS, | 30 NO_IOS, |
31 } platforms; | 31 } platforms; |
32 }; | 32 }; |
33 | 33 |
34 #if !defined(OS_ANDROID) | 34 #if !defined(OS_ANDROID) |
35 void RunUrlTest(Testcase* testcases, size_t num_testcases) { | 35 void RunUrlTest(Testcase* testcases, size_t num_testcases) { |
36 static const gfx::FontList font_list; | 36 static const gfx::FontList font_list; |
37 for (size_t i = 0; i < num_testcases; ++i) { | 37 for (size_t i = 0; i < num_testcases; ++i) { |
38 const GURL url(testcases[i].input); | 38 const GURL url(testcases[i].input); |
39 // Should we test with non-empty language list? | |
40 // That's kinda redundant with net_util_unittests. | |
41 const float available_width = | 39 const float available_width = |
42 gfx::GetStringWidthF(base::UTF8ToUTF16(testcases[i].output), font_list); | 40 gfx::GetStringWidthF(base::UTF8ToUTF16(testcases[i].output), font_list); |
43 EXPECT_EQ(base::UTF8ToUTF16(testcases[i].output), | 41 EXPECT_EQ(base::UTF8ToUTF16(testcases[i].output), |
44 url_formatter::ElideUrl(url, font_list, available_width, | 42 url_formatter::ElideUrl(url, font_list, available_width)); |
45 std::string())); | |
46 } | 43 } |
47 } | 44 } |
48 | 45 |
49 // Test eliding of commonplace URLs. | 46 // Test eliding of commonplace URLs. |
50 TEST(TextEliderTest, TestGeneralEliding) { | 47 TEST(TextEliderTest, TestGeneralEliding) { |
51 const std::string kEllipsisStr(gfx::kEllipsis); | 48 const std::string kEllipsisStr(gfx::kEllipsis); |
52 Testcase testcases[] = { | 49 Testcase testcases[] = { |
53 {"http://www.google.com/intl/en/ads/", "www.google.com/intl/en/ads/"}, | 50 {"http://www.google.com/intl/en/ads/", "www.google.com/intl/en/ads/"}, |
54 {"http://www.google.com/intl/en/ads/", "www.google.com/intl/en/ads/"}, | 51 {"http://www.google.com/intl/en/ads/", "www.google.com/intl/en/ads/"}, |
55 {"http://www.google.com/intl/en/ads/", | 52 {"http://www.google.com/intl/en/ads/", |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 // Create the expected string, after elision. Depending on font size, the | 85 // Create the expected string, after elision. Depending on font size, the |
89 // directory might become /dir... or /di... or/d... - it never should be | 86 // directory might become /dir... or /di... or/d... - it never should be |
90 // shorter than that. (If it is, the font considers d... to be longer | 87 // shorter than that. (If it is, the font considers d... to be longer |
91 // than .../... - that should never happen). | 88 // than .../... - that should never happen). |
92 ASSERT_GT( | 89 ASSERT_GT( |
93 gfx::GetStringWidthF(base::UTF8ToUTF16(kEllipsisStr + "/" + kEllipsisStr), | 90 gfx::GetStringWidthF(base::UTF8ToUTF16(kEllipsisStr + "/" + kEllipsisStr), |
94 font_list), | 91 font_list), |
95 gfx::GetStringWidthF(base::UTF8ToUTF16("d" + kEllipsisStr), font_list)); | 92 gfx::GetStringWidthF(base::UTF8ToUTF16("d" + kEllipsisStr), font_list)); |
96 GURL long_url("http://battersbox.com/directorynameisreallylongtoforcetrunc"); | 93 GURL long_url("http://battersbox.com/directorynameisreallylongtoforcetrunc"); |
97 base::string16 expected = url_formatter::ElideUrl( | 94 base::string16 expected = url_formatter::ElideUrl( |
98 long_url, font_list, available_width, std::string()); | 95 long_url, font_list, available_width); |
99 // Ensure that the expected result still contains part of the directory name. | 96 // Ensure that the expected result still contains part of the directory name. |
100 ASSERT_GT(expected.length(), std::string("battersbox.com/d").length()); | 97 ASSERT_GT(expected.length(), std::string("battersbox.com/d").length()); |
101 EXPECT_EQ(expected, url_formatter::ElideUrl(url, font_list, available_width, | 98 EXPECT_EQ(expected, url_formatter::ElideUrl(url, font_list, available_width)); |
102 std::string())); | |
103 | 99 |
104 // More space available - elide directories, partially elide filename. | 100 // More space available - elide directories, partially elide filename. |
105 Testcase testcases[] = { | 101 Testcase testcases[] = { |
106 {"http://battersbox.com/directory/foo/peter_paul_and_mary.html", | 102 {"http://battersbox.com/directory/foo/peter_paul_and_mary.html", |
107 "battersbox.com/" + kEllipsisStr + "/peter" + kEllipsisStr}, | 103 "battersbox.com/" + kEllipsisStr + "/peter" + kEllipsisStr}, |
108 }; | 104 }; |
109 RunUrlTest(testcases, arraysize(testcases)); | 105 RunUrlTest(testcases, arraysize(testcases)); |
110 } | 106 } |
111 | 107 |
112 // Test eliding of empty strings, URLs with ports, passwords, queries, etc. | 108 // Test eliding of empty strings, URLs with ports, passwords, queries, etc. |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 L"https://173.194.65.103", L"173.194.65.103"}, | 316 L"https://173.194.65.103", L"173.194.65.103"}, |
321 {"Trailing dot in DNS name", "https://www.example.com./get/goat", | 317 {"Trailing dot in DNS name", "https://www.example.com./get/goat", |
322 L"https://www.example.com.", L"www.example.com."}, | 318 L"https://www.example.com.", L"www.example.com."}, |
323 {"Blob URL", | 319 {"Blob URL", |
324 "blob:http%3A//www.html5rocks.com/4d4ff040-6d61-4446-86d3-13ca07ec9ab9", | 320 "blob:http%3A//www.html5rocks.com/4d4ff040-6d61-4446-86d3-13ca07ec9ab9", |
325 L"blob:http%3A//www.html5rocks.com/" | 321 L"blob:http%3A//www.html5rocks.com/" |
326 L"4d4ff040-6d61-4446-86d3-13ca07ec9ab9", | 322 L"4d4ff040-6d61-4446-86d3-13ca07ec9ab9", |
327 L"blob:http%3A//www.html5rocks.com/" | 323 L"blob:http%3A//www.html5rocks.com/" |
328 L"4d4ff040-6d61-4446-86d3-13ca07ec9ab9"}}; | 324 L"4d4ff040-6d61-4446-86d3-13ca07ec9ab9"}}; |
329 | 325 |
330 const char languages[] = "zh-TW,en-US,en,am,ar-EG,ar"; | |
331 for (size_t i = 0; i < arraysize(tests); ++i) { | 326 for (size_t i = 0; i < arraysize(tests); ++i) { |
332 base::string16 formatted = url_formatter::FormatUrlForSecurityDisplay( | 327 base::string16 formatted = |
333 GURL(tests[i].input), std::string()); | 328 url_formatter::FormatUrlForSecurityDisplay(GURL(tests[i].input)); |
334 EXPECT_EQ(base::WideToUTF16(tests[i].output), formatted) | 329 EXPECT_EQ(base::WideToUTF16(tests[i].output), formatted) |
335 << tests[i].description; | 330 << tests[i].description; |
336 | 331 |
337 base::string16 formatted_omit_scheme = | 332 base::string16 formatted_omit_scheme = |
338 url_formatter::FormatUrlForSecurityDisplayOmitScheme( | 333 url_formatter::FormatUrlForSecurityDisplayOmitScheme( |
339 GURL(tests[i].input), std::string()); | 334 GURL(tests[i].input)); |
340 EXPECT_EQ(base::WideToUTF16(tests[i].output_omit_scheme), | 335 EXPECT_EQ(base::WideToUTF16(tests[i].output_omit_scheme), |
341 formatted_omit_scheme) | 336 formatted_omit_scheme) |
342 << tests[i].description; | 337 << tests[i].description; |
343 | |
344 base::string16 formatted_with_languages = | |
345 url_formatter::FormatUrlForSecurityDisplay(GURL(tests[i].input), | |
346 languages); | |
347 EXPECT_EQ(base::WideToUTF16(tests[i].output), formatted_with_languages) | |
348 << tests[i].description; | |
349 | |
350 base::string16 formatted_with_languages_omit_scheme = | |
351 url_formatter::FormatUrlForSecurityDisplayOmitScheme( | |
352 GURL(tests[i].input), languages); | |
353 EXPECT_EQ(base::WideToUTF16(tests[i].output_omit_scheme), | |
354 formatted_with_languages_omit_scheme) | |
355 << tests[i].description; | |
356 } | 338 } |
357 | 339 |
358 base::string16 formatted = | 340 base::string16 formatted = |
359 url_formatter::FormatUrlForSecurityDisplay(GURL(), std::string()); | 341 url_formatter::FormatUrlForSecurityDisplay(GURL()); |
360 EXPECT_EQ(base::string16(), formatted) | 342 EXPECT_EQ(base::string16(), formatted) |
361 << "Explicitly test the 0-argument GURL constructor"; | 343 << "Explicitly test the 0-argument GURL constructor"; |
362 | 344 |
363 base::string16 formatted_omit_scheme = | 345 base::string16 formatted_omit_scheme = |
364 url_formatter::FormatUrlForSecurityDisplayOmitScheme(GURL(), | 346 url_formatter::FormatUrlForSecurityDisplayOmitScheme(GURL()); |
365 std::string()); | |
366 EXPECT_EQ(base::string16(), formatted_omit_scheme) | 347 EXPECT_EQ(base::string16(), formatted_omit_scheme) |
367 << "Explicitly test the 0-argument GURL constructor"; | 348 << "Explicitly test the 0-argument GURL constructor"; |
368 } | 349 } |
369 | 350 |
370 } // namespace | 351 } // namespace |
OLD | NEW |