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

Unified Diff: net/base/net_util_unittest.cc

Issue 23619016: Switch the offset conversion routines from... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 3 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/net_util.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/net_util_unittest.cc
===================================================================
--- net/base/net_util_unittest.cc (revision 221015)
+++ net/base/net_util_unittest.cc (working copy)
@@ -452,26 +452,24 @@
const std::string& languages,
FormatUrlTypes format_types,
UnescapeRule::Type unescape_rules,
- const AdjustOffsetCase* cases,
- size_t num_cases,
- const size_t* all_offsets) {
+ const size_t* output_offsets) {
GURL url(url_string);
- for (size_t i = 0; i < num_cases; ++i) {
- size_t offset = cases[i].input_offset;
- base::string16 formatted_url = FormatUrl(url, languages, format_types,
- unescape_rules, NULL, NULL, &offset);
- VerboseExpect(cases[i].output_offset, offset, url_string, i, formatted_url);
- }
-
- size_t url_size = url_string.length();
+ size_t url_length = url_string.length();
std::vector<size_t> offsets;
- for (size_t i = 0; i < url_size + 1; ++i)
+ for (size_t i = 0; i <= url_length + 1; ++i)
offsets.push_back(i);
+ offsets.push_back(500000); // Something larger than any input length.
+ offsets.push_back(std::string::npos);
base::string16 formatted_url = FormatUrlWithOffsets(url, languages,
format_types, unescape_rules, NULL, NULL, &offsets);
- for (size_t i = 0; i < url_size; ++i)
- VerboseExpect(all_offsets[i], offsets[i], url_string, i, formatted_url);
- VerboseExpect(kNpos, offsets[url_size], url_string, url_size, formatted_url);
+ for (size_t i = 0; i < url_length; ++i)
+ VerboseExpect(output_offsets[i], offsets[i], url_string, i, formatted_url);
+ VerboseExpect(formatted_url.length(), offsets[url_length], url_string,
+ url_length, formatted_url);
+ VerboseExpect(base::string16::npos, offsets[url_length + 1], url_string,
+ 500000, formatted_url);
+ VerboseExpect(base::string16::npos, offsets[url_length + 2], url_string,
+ std::string::npos, formatted_url);
}
// Helper to strignize an IP number (used to define expectations).
@@ -2886,217 +2884,115 @@
}
TEST(NetUtilTest, FormatUrlWithOffsets) {
- const AdjustOffsetCase null_cases[] = {
- {0, base::string16::npos},
- };
CheckAdjustedOffsets(std::string(), "en", kFormatUrlOmitNothing,
- UnescapeRule::NORMAL, null_cases, arraysize(null_cases), NULL);
+ UnescapeRule::NORMAL, NULL);
- const AdjustOffsetCase basic_cases[] = {
- {0, 0},
- {3, 3},
- {5, 5},
- {6, 6},
- {13, 13},
- {21, 21},
- {22, 22},
- {23, 23},
- {25, 25},
- {26, base::string16::npos},
- {500000, base::string16::npos},
- {base::string16::npos, base::string16::npos},
+ const size_t basic_offsets[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25
};
- const size_t basic_offsets[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25};
CheckAdjustedOffsets("http://www.google.com/foo/", "en",
- kFormatUrlOmitNothing, UnescapeRule::NORMAL, basic_cases,
- arraysize(basic_cases), basic_offsets);
+ kFormatUrlOmitNothing, UnescapeRule::NORMAL,
+ basic_offsets);
- const AdjustOffsetCase omit_auth_cases_1[] = {
- {6, 6},
- {7, base::string16::npos},
- {8, base::string16::npos},
- {10, base::string16::npos},
- {12, base::string16::npos},
- {14, base::string16::npos},
- {15, 7},
- {25, 17},
+ const size_t omit_auth_offsets_1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21
};
- const size_t omit_auth_offsets_1[] = {0, 1, 2, 3, 4, 5, 6, kNpos, kNpos,
- kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21};
CheckAdjustedOffsets("http://foo:bar@www.google.com/", "en",
- kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL, omit_auth_cases_1,
- arraysize(omit_auth_cases_1), omit_auth_offsets_1);
+ kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL,
+ omit_auth_offsets_1);
- const AdjustOffsetCase omit_auth_cases_2[] = {
- {9, base::string16::npos},
- {11, 7},
+ const size_t omit_auth_offsets_2[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, kNpos, kNpos, kNpos, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21
};
- const size_t omit_auth_offsets_2[] = {0, 1, 2, 3, 4, 5, 6, kNpos, kNpos,
- kNpos, kNpos, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21};
CheckAdjustedOffsets("http://foo@www.google.com/", "en",
- kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL, omit_auth_cases_2,
- arraysize(omit_auth_cases_2), omit_auth_offsets_2);
+ kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL,
+ omit_auth_offsets_2);
- // "http://foo\x30B0:\x30B0bar@www.google.com"
- const AdjustOffsetCase dont_omit_auth_cases[] = {
- {0, 0},
- /*{3, base::string16::npos},
- {7, 0},
- {11, 4},
- {12, base::string16::npos},
- {20, 5},
- {24, 9},*/
+ const size_t dont_omit_auth_offsets[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
+ kNpos, kNpos, 11, 12, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
+ kNpos, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31
};
- const size_t dont_omit_auth_offsets[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 11, 12, kNpos,
- kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
+ // Unescape to "http://foo\x30B0:\x30B0bar@www.google.com".
CheckAdjustedOffsets("http://foo%E3%82%B0:%E3%82%B0bar@www.google.com/", "en",
- kFormatUrlOmitNothing, UnescapeRule::NORMAL, dont_omit_auth_cases,
- arraysize(dont_omit_auth_cases), dont_omit_auth_offsets);
+ kFormatUrlOmitNothing, UnescapeRule::NORMAL,
+ dont_omit_auth_offsets);
- const AdjustOffsetCase view_source_cases[] = {
- {0, 0},
- {3, 3},
- {11, 11},
- {12, 12},
- {13, 13},
- {18, 18},
- {19, base::string16::npos},
- {20, base::string16::npos},
- {23, 19},
- {26, 22},
- {base::string16::npos, base::string16::npos},
+ const size_t view_source_offsets[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, kNpos,
+ kNpos, kNpos, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33
};
- const size_t view_source_offsets[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, kNpos, kNpos, kNpos, kNpos, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33};
CheckAdjustedOffsets("view-source:http://foo@www.google.com/", "en",
- kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL, view_source_cases,
- arraysize(view_source_cases), view_source_offsets);
+ kFormatUrlOmitUsernamePassword, UnescapeRule::NORMAL,
+ view_source_offsets);
- // "http://\x671d\x65e5\x3042\x3055\x3072.jp/foo/"
- const AdjustOffsetCase idn_hostname_cases_1[] = {
- {8, base::string16::npos},
- {16, base::string16::npos},
- {24, base::string16::npos},
- {25, 12},
- {30, 17},
+ const size_t idn_hostname_offsets_1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
+ kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 12,
+ 13, 14, 15, 16, 17, 18, 19
};
- const size_t idn_hostname_offsets_1[] = {0, 1, 2, 3, 4, 5, 6, 7, kNpos, kNpos,
- kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
- kNpos, kNpos, kNpos, kNpos, kNpos, 12, 13, 14, 15, 16, 17, 18, 19};
+ // Convert punycode to "http://\x671d\x65e5\x3042\x3055\x3072.jp/foo/".
CheckAdjustedOffsets("http://xn--l8jvb1ey91xtjb.jp/foo/", "ja",
- kFormatUrlOmitNothing, UnescapeRule::NORMAL, idn_hostname_cases_1,
- arraysize(idn_hostname_cases_1), idn_hostname_offsets_1);
+ kFormatUrlOmitNothing, UnescapeRule::NORMAL,
+ idn_hostname_offsets_1);
- // "http://test.\x89c6\x9891.\x5317\x4eac\x5927\x5b78.test/"
- const AdjustOffsetCase idn_hostname_cases_2[] = {
- {7, 7},
- {9, 9},
- {11, 11},
- {12, 12},
- {13, base::string16::npos},
- {23, base::string16::npos},
- {24, 14},
- {25, 15},
- {26, base::string16::npos},
- {32, base::string16::npos},
- {41, 19},
- {42, 20},
- {45, 23},
- {46, 24},
- {47, base::string16::npos},
- {base::string16::npos, base::string16::npos},
+ const size_t idn_hostname_offsets_2[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, kNpos, kNpos, kNpos, kNpos, kNpos,
+ kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 14, 15, kNpos, kNpos, kNpos,
+ kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
+ kNpos, 19, 20, 21, 22, 23, 24
};
- const size_t idn_hostname_offsets_2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
- kNpos, 14, 15, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
- kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 19, 20, 21, 22, 23, 24};
+ // Convert punycode to
+ // "http://test.\x89c6\x9891.\x5317\x4eac\x5927\x5b78.test/".
CheckAdjustedOffsets("http://test.xn--cy2a840a.xn--1lq90ic7f1rc.test/",
"zh-CN", kFormatUrlOmitNothing, UnescapeRule::NORMAL,
- idn_hostname_cases_2, arraysize(idn_hostname_cases_2),
idn_hostname_offsets_2);
- // "http://www.google.com/foo bar/\x30B0\x30FC\x30B0\x30EB"
- const AdjustOffsetCase unescape_cases[] = {
- {25, 25},
- {26, base::string16::npos},
- {27, base::string16::npos},
- {28, 26},
- {35, base::string16::npos},
- {41, 31},
- {59, 33},
- {60, base::string16::npos},
- {67, base::string16::npos},
- {68, base::string16::npos},
+ const size_t unescape_offsets[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, kNpos, kNpos, 26, 27, 28, 29, 30, kNpos, kNpos, kNpos,
+ kNpos, kNpos, kNpos, kNpos, kNpos, 31, kNpos, kNpos, kNpos, kNpos, kNpos,
+ kNpos, kNpos, kNpos, 32, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
+ kNpos, 33, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos
};
- const size_t unescape_offsets[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, kNpos, kNpos, 26, 27,
- 28, 29, 30, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 31,
- kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 32, kNpos, kNpos,
- kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 33, kNpos, kNpos, kNpos, kNpos,
- kNpos, kNpos, kNpos, kNpos};
+ // Unescape to "http://www.google.com/foo bar/\x30B0\x30FC\x30B0\x30EB".
CheckAdjustedOffsets(
"http://www.google.com/foo%20bar/%E3%82%B0%E3%83%BC%E3%82%B0%E3%83%AB",
- "en", kFormatUrlOmitNothing, UnescapeRule::SPACES, unescape_cases,
- arraysize(unescape_cases), unescape_offsets);
+ "en", kFormatUrlOmitNothing, UnescapeRule::SPACES, unescape_offsets);
- // "http://www.google.com/foo.html#\x30B0\x30B0z"
- const AdjustOffsetCase ref_cases[] = {
- {30, 30},
- {31, 31},
- {32, base::string16::npos},
- {34, 32},
- {35, base::string16::npos},
- {37, 33},
- {38, base::string16::npos},
+ const size_t ref_offsets[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, kNpos, kNpos, 32, kNpos, kNpos,
+ 33
};
- const size_t ref_offsets[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- kNpos, kNpos, 32, kNpos, kNpos, 33};
+ // Unescape to "http://www.google.com/foo.html#\x30B0\x30B0z".
CheckAdjustedOffsets(
"http://www.google.com/foo.html#\xE3\x82\xB0\xE3\x82\xB0z", "en",
- kFormatUrlOmitNothing, UnescapeRule::NORMAL, ref_cases,
- arraysize(ref_cases), ref_offsets);
+ kFormatUrlOmitNothing, UnescapeRule::NORMAL, ref_offsets);
- const AdjustOffsetCase omit_http_cases[] = {
- {0, base::string16::npos},
- {3, base::string16::npos},
- {7, 0},
- {8, 1},
+ const size_t omit_http_offsets[] = {
+ 0, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14
};
- const size_t omit_http_offsets[] = {kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
- kNpos, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
- CheckAdjustedOffsets("http://www.google.com/", "en",
- kFormatUrlOmitHTTP, UnescapeRule::NORMAL, omit_http_cases,
- arraysize(omit_http_cases), omit_http_offsets);
+ CheckAdjustedOffsets("http://www.google.com/", "en", kFormatUrlOmitHTTP,
+ UnescapeRule::NORMAL, omit_http_offsets);
msw 2013/09/10 17:01:14 nit: extra space between args.
- const AdjustOffsetCase omit_http_start_with_ftp_cases[] = {
- {0, 0},
- {3, 3},
- {8, 8},
+ const size_t omit_http_start_with_ftp_offsets[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21
};
- const size_t omit_http_start_with_ftp_offsets[] = {0, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21};
CheckAdjustedOffsets("http://ftp.google.com/", "en", kFormatUrlOmitHTTP,
- UnescapeRule::NORMAL, omit_http_start_with_ftp_cases,
- arraysize(omit_http_start_with_ftp_cases),
- omit_http_start_with_ftp_offsets);
+ UnescapeRule::NORMAL, omit_http_start_with_ftp_offsets);
- const AdjustOffsetCase omit_all_cases[] = {
- {12, 0},
- {13, 1},
- {0, base::string16::npos},
- {3, base::string16::npos},
+ const size_t omit_all_offsets[] = {
+ 0, kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, kNpos, kNpos, kNpos, kNpos,
+ 0, 1, 2, 3, 4, 5, 6, 7
};
- const size_t omit_all_offsets[] = {kNpos, kNpos, kNpos, kNpos, kNpos, kNpos,
- kNpos, kNpos, kNpos, kNpos, kNpos, kNpos, 0, 1, 2, 3, 4, 5, 6, kNpos};
CheckAdjustedOffsets("http://user@foo.com/", "en", kFormatUrlOmitAll,
- UnescapeRule::NORMAL, omit_all_cases,
- arraysize(omit_all_cases), omit_all_offsets);
+ UnescapeRule::NORMAL, omit_all_offsets);
}
TEST(NetUtilTest, SimplifyUrlForRequest) {
« no previous file with comments | « net/base/net_util.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698