diff --git a/url/gurl_unittest.cc b/url/gurl_unittest.cc index d20256a712e87b..f8d4c05288aef5 100644 --- a/url/gurl_unittest.cc +++ b/url/gurl_unittest.cc @@ -5,6 +5,7 @@ #include #include "base/macros.h" +#include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" #include "url/url_canon.h" @@ -12,9 +13,6 @@ namespace url { -using test_utils::WStringToUTF16; -using test_utils::ConvertUTF8ToUTF16; - namespace { template @@ -67,11 +65,11 @@ TEST(GURLTest, Types) { // the parser is already tested and works, so we are mostly interested if the // object does the right thing with the results. TEST(GURLTest, Components) { - GURL empty_url(WStringToUTF16(L"")); + GURL empty_url(base::UTF8ToUTF16("")); EXPECT_TRUE(empty_url.is_empty()); EXPECT_FALSE(empty_url.is_valid()); - GURL url(WStringToUTF16(L"http://user:pass@google.com:99/foo;bar?q=a#ref")); + GURL url(base::UTF8ToUTF16("http://user:pass@google.com:99/foo;bar?q=a#ref")); EXPECT_FALSE(url.is_empty()); EXPECT_TRUE(url.is_valid()); EXPECT_TRUE(url.SchemeIs("http")); @@ -116,7 +114,8 @@ TEST(GURLTest, Empty) { } TEST(GURLTest, Copy) { - GURL url(WStringToUTF16(L"http://user:pass@google.com:99/foo;bar?q=a#ref")); + GURL url(base::UTF8ToUTF16( + "http://user:pass@google.com:99/foo;bar?q=a#ref")); GURL url2(url); EXPECT_TRUE(url2.is_valid()); @@ -149,7 +148,8 @@ TEST(GURLTest, Copy) { } TEST(GURLTest, Assign) { - GURL url(WStringToUTF16(L"http://user:pass@google.com:99/foo;bar?q=a#ref")); + GURL url(base::UTF8ToUTF16( + "http://user:pass@google.com:99/foo;bar?q=a#ref")); GURL url2; url2 = url; @@ -191,7 +191,8 @@ TEST(GURLTest, SelfAssign) { } TEST(GURLTest, CopyFileSystem) { - GURL url(WStringToUTF16(L"filesystem:https://user:pass@google.com:99/t/foo;bar?q=a#ref")); + GURL url(base::UTF8ToUTF16( + "filesystem:https://user:pass@google.com:99/t/foo;bar?q=a#ref")); GURL url2(url); EXPECT_TRUE(url2.is_valid()); @@ -313,9 +314,9 @@ TEST(GURLTest, Resolve) { EXPECT_EQ(output.SchemeIsFileSystem(), output.inner_url() != NULL); // Wide code path. - GURL inputw(ConvertUTF8ToUTF16(resolve_cases[i].base)); + GURL inputw(base::UTF8ToUTF16(resolve_cases[i].base)); GURL outputw = - input.Resolve(ConvertUTF8ToUTF16(resolve_cases[i].relative)); + input.Resolve(base::UTF8ToUTF16(resolve_cases[i].relative)); EXPECT_EQ(resolve_cases[i].expected_valid, outputw.is_valid()) << i; EXPECT_EQ(resolve_cases[i].expected, outputw.spec()) << i; EXPECT_EQ(outputw.SchemeIsFileSystem(), outputw.inner_url() != NULL); diff --git a/url/url_canon_icu_unittest.cc b/url/url_canon_icu_unittest.cc index 13601f028c5f10..af320f9bf9368c 100644 --- a/url/url_canon_icu_unittest.cc +++ b/url/url_canon_icu_unittest.cc @@ -14,8 +14,6 @@ namespace url { -using test_utils::WStringToUTF16; - namespace { // Wrapper around a UConverter object that managers creation and destruction. @@ -64,7 +62,8 @@ TEST(URLCanonIcuTest, ICUCharsetConverter) { std::string str; StdStringCanonOutput output(&str); - base::string16 input_str(WStringToUTF16(icu_cases[i].input)); + base::string16 input_str( + test_utils::TruncateWStringToUTF16(icu_cases[i].input)); int input_len = static_cast(input_str.length()); converter.ConvertFromUTF16(input_str.c_str(), input_len, &output); output.Complete(); @@ -134,7 +133,8 @@ TEST(URLCanonIcuTest, QueryWithConverter) { } if (query_cases[i].input16) { - base::string16 input16(WStringToUTF16(query_cases[i].input16)); + base::string16 input16( + test_utils::TruncateWStringToUTF16(query_cases[i].input16)); int len = static_cast(input16.length()); Component in_comp(0, len); std::string out_str; diff --git a/url/url_canon_unittest.cc b/url/url_canon_unittest.cc index caaff08de61fdf..8ac73bc44b1f39 100644 --- a/url/url_canon_unittest.cc +++ b/url/url_canon_unittest.cc @@ -6,6 +6,7 @@ #include #include "base/macros.h" +#include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/third_party/mozilla/url_parse.h" #include "url/url_canon.h" @@ -15,10 +16,6 @@ namespace url { -using test_utils::WStringToUTF16; -using test_utils::ConvertUTF8ToUTF16; -using test_utils::ConvertUTF16ToUTF8; - namespace { struct ComponentCase { @@ -195,7 +192,8 @@ TEST(URLCanonTest, UTF) { out_str.clear(); StdStringCanonOutput output(&out_str); - base::string16 input_str(WStringToUTF16(utf_cases[i].input16)); + base::string16 input_str( + test_utils::TruncateWStringToUTF16(utf_cases[i].input16)); int input_len = static_cast(input_str.length()); bool success = true; for (int ch = 0; ch < input_len; ch++) { @@ -213,11 +211,12 @@ TEST(URLCanonTest, UTF) { // UTF-16 -> UTF-8 std::string input8_str(utf_cases[i].input8); - base::string16 input16_str(WStringToUTF16(utf_cases[i].input16)); - EXPECT_EQ(input8_str, ConvertUTF16ToUTF8(input16_str)); + base::string16 input16_str( + test_utils::TruncateWStringToUTF16(utf_cases[i].input16)); + EXPECT_EQ(input8_str, base::UTF16ToUTF8(input16_str)); // UTF-8 -> UTF-16 - EXPECT_EQ(input16_str, ConvertUTF8ToUTF16(input8_str)); + EXPECT_EQ(input16_str, base::UTF8ToUTF16(input8_str)); } } } @@ -265,7 +264,7 @@ TEST(URLCanonTest, Scheme) { out_str.clear(); StdStringCanonOutput output2(&out_str); - base::string16 wide_input(ConvertUTF8ToUTF16(scheme_cases[i].input)); + base::string16 wide_input(base::UTF8ToUTF16(scheme_cases[i].input)); in_comp.len = static_cast(wide_input.length()); success = CanonicalizeScheme(wide_input.c_str(), in_comp, &output2, &out_comp); @@ -530,7 +529,8 @@ TEST(URLCanonTest, Host) { // Wide version. if (host_cases[i].input16) { - base::string16 input16(WStringToUTF16(host_cases[i].input16)); + base::string16 input16( + test_utils::TruncateWStringToUTF16(host_cases[i].input16)); int host_len = static_cast(input16.length()); Component in_comp(0, host_len); Component out_comp; @@ -580,7 +580,8 @@ TEST(URLCanonTest, Host) { // Wide version. if (host_cases[i].input16) { - base::string16 input16(WStringToUTF16(host_cases[i].input16)); + base::string16 input16( + test_utils::TruncateWStringToUTF16(host_cases[i].input16)); int host_len = static_cast(input16.length()); Component in_comp(0, host_len); @@ -702,7 +703,8 @@ TEST(URLCanonTest, IPv4) { } // 16-bit version. - base::string16 input16(WStringToUTF16(cases[i].input16)); + base::string16 input16( + test_utils::TruncateWStringToUTF16(cases[i].input16)); component = Component(0, static_cast(input16.length())); std::string out_str2; @@ -854,7 +856,8 @@ TEST(URLCanonTest, IPv6) { } // 16-bit version. - base::string16 input16(WStringToUTF16(cases[i].input16)); + base::string16 input16( + test_utils::TruncateWStringToUTF16(cases[i].input16)); component = Component(0, static_cast(input16.length())); std::string out_str2; @@ -906,7 +909,8 @@ TEST(URLCanonTest, CanonicalizeHostSubstring) { std::string out_str; StdStringCanonOutput output(&out_str); EXPECT_FALSE(CanonicalizeHostSubstring( - WStringToUTF16(L"\xfdd0zyx.com").c_str(), Component(0, 8), &output)); + test_utils::TruncateWStringToUTF16(L"\xfdd0zyx.com").c_str(), + Component(0, 8), &output)); output.Complete(); EXPECT_EQ("%EF%BF%BDzyx.com", out_str); } @@ -984,7 +988,7 @@ TEST(URLCanonTest, UserInfo) { // Now try the wide version out_str.clear(); StdStringCanonOutput output2(&out_str); - base::string16 wide_input(ConvertUTF8ToUTF16(user_info_cases[i].input)); + base::string16 wide_input(base::UTF8ToUTF16(user_info_cases[i].input)); success = CanonicalizeUserInfo(wide_input.c_str(), parsed.username, wide_input.c_str(), @@ -1047,7 +1051,7 @@ TEST(URLCanonTest, Port) { // Now try the wide version out_str.clear(); StdStringCanonOutput output2(&out_str); - base::string16 wide_input(ConvertUTF8ToUTF16(port_cases[i].input)); + base::string16 wide_input(base::UTF8ToUTF16(port_cases[i].input)); success = CanonicalizePort(wide_input.c_str(), in_comp, port_cases[i].default_port, @@ -1167,7 +1171,8 @@ TEST(URLCanonTest, Path) { } if (path_cases[i].input16) { - base::string16 input16(WStringToUTF16(path_cases[i].input16)); + base::string16 input16( + test_utils::TruncateWStringToUTF16(path_cases[i].input16)); int len = static_cast(input16.length()); Component in_comp(0, len); Component out_comp; @@ -1242,7 +1247,8 @@ TEST(URLCanonTest, Query) { } if (query_cases[i].input16) { - base::string16 input16(WStringToUTF16(query_cases[i].input16)); + base::string16 input16( + test_utils::TruncateWStringToUTF16(query_cases[i].input16)); int len = static_cast(input16.length()); Component in_comp(0, len); std::string out_str; @@ -1304,7 +1310,8 @@ TEST(URLCanonTest, Ref) { // 16-bit input if (ref_cases[i].input16) { - base::string16 input16(WStringToUTF16(ref_cases[i].input16)); + base::string16 input16( + test_utils::TruncateWStringToUTF16(ref_cases[i].input16)); int len = static_cast(input16.length()); Component in_comp(0, len); Component out_comp; @@ -1940,12 +1947,12 @@ TEST(URLCanonTest, _itow_s) { const base::char16 fill_char = 0xffff; memset(buf, fill_mem, sizeof(buf)); EXPECT_EQ(0, _itow_s(12, buf, sizeof(buf) / 2 - 1, 10)); - EXPECT_EQ(WStringToUTF16(L"12"), base::string16(buf)); + EXPECT_EQ(base::UTF8ToUTF16("12"), base::string16(buf)); EXPECT_EQ(fill_char, buf[3]); // Test the edge cases - exactly the buffer size and one over EXPECT_EQ(0, _itow_s(1234, buf, sizeof(buf) / 2 - 1, 10)); - EXPECT_EQ(WStringToUTF16(L"1234"), base::string16(buf)); + EXPECT_EQ(base::UTF8ToUTF16("1234"), base::string16(buf)); EXPECT_EQ(fill_char, buf[5]); memset(buf, fill_mem, sizeof(buf)); @@ -1955,12 +1962,13 @@ TEST(URLCanonTest, _itow_s) { // Test the template overload (note that this will see the full buffer) memset(buf, fill_mem, sizeof(buf)); EXPECT_EQ(0, _itow_s(12, buf, 10)); - EXPECT_EQ(WStringToUTF16(L"12"), base::string16(buf)); + EXPECT_EQ(base::UTF8ToUTF16("12"), + base::string16(buf)); EXPECT_EQ(fill_char, buf[3]); memset(buf, fill_mem, sizeof(buf)); EXPECT_EQ(0, _itow_s(12345, buf, 10)); - EXPECT_EQ(WStringToUTF16(L"12345"), base::string16(buf)); + EXPECT_EQ(base::UTF8ToUTF16("12345"), base::string16(buf)); EXPECT_EQ(EINVAL, _itow_s(123456, buf, 10)); } @@ -2196,7 +2204,7 @@ TEST(URLCanonTest, ReplacementOverflow) { for (int i = 0; i < 4800; i++) new_query.push_back('a'); - base::string16 new_path(WStringToUTF16(L"/foo")); + base::string16 new_path(test_utils::TruncateWStringToUTF16(L"/foo")); repl.SetPath(new_path.c_str(), Component(0, 4)); repl.SetQuery(new_query.c_str(), Component(0, static_cast(new_query.length()))); diff --git a/url/url_test_utils.h b/url/url_test_utils.h index 156c428ad7eb60..f4f51da4eb48d1 100644 --- a/url/url_test_utils.h +++ b/url/url_test_utils.h @@ -11,6 +11,7 @@ #include #include "base/strings/string16.h" +#include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/url_canon_internal.h" @@ -18,10 +19,12 @@ namespace url { namespace test_utils { -// Converts a UTF-16 string from native wchar_t format to char16, by -// truncating the high 32 bits. This is not meant to handle true UTF-32 -// encoded strings. -inline base::string16 WStringToUTF16(const wchar_t* src) { +// Converts a UTF-16 string from native wchar_t format to char16 by +// truncating the high 32 bits. This is different than the conversion function +// in base bacause it passes invalid UTF-16 characters which is important for +// test purposes. As a result, this is not meant to handle true UTF-32 encoded +// strings. +inline base::string16 TruncateWStringToUTF16(const wchar_t* src) { base::string16 str; int length = static_cast(wcslen(src)); for (int i = 0; i < length; ++i) { @@ -30,25 +33,6 @@ inline base::string16 WStringToUTF16(const wchar_t* src) { return str; } -// Converts a string from UTF-8 to UTF-16. -inline base::string16 ConvertUTF8ToUTF16(const std::string& src) { - int length = static_cast(src.length()); - EXPECT_LT(length, 1024); - RawCanonOutputW<1024> output; - EXPECT_TRUE(ConvertUTF8ToUTF16(src.data(), length, &output)); - return base::string16(output.data(), output.length()); -} - -// Converts a string from UTF-16 to UTF-8. -inline std::string ConvertUTF16ToUTF8(const base::string16& src) { - std::string str; - StdStringCanonOutput output(&str); - EXPECT_TRUE(ConvertUTF16ToUTF8(src.data(), static_cast(src.length()), - &output)); - output.Complete(); - return str; -} - } // namespace test_utils } // namespace url diff --git a/url/url_util_unittest.cc b/url/url_util_unittest.cc index af5d550005d290..a706f5a08a04bb 100644 --- a/url/url_util_unittest.cc +++ b/url/url_util_unittest.cc @@ -214,15 +214,15 @@ TEST(URLUtilTest, DecodeURLEscapeSequences) { RawCanonOutputT output; DecodeURLEscapeSequences(input, strlen(input), &output); EXPECT_EQ(decode_cases[i].output, - test_utils::ConvertUTF16ToUTF8(base::string16(output.data(), - output.length()))); + base::UTF16ToUTF8(base::string16(output.data(), + output.length()))); } // Our decode should decode %00 const char zero_input[] = "%00"; RawCanonOutputT zero_output; DecodeURLEscapeSequences(zero_input, strlen(zero_input), &zero_output); - EXPECT_NE("%00", test_utils::ConvertUTF16ToUTF8( + EXPECT_NE("%00", base::UTF16ToUTF8( base::string16(zero_output.data(), zero_output.length()))); // Test the error behavior for invalid UTF-8.