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

Side by Side Diff: net/base/filename_util_unittest.cc

Issue 448763003: Remove wstring file path helpers from test_file_util. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/test/test_file_util_win.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "net/base/filename_util.h" 5 #include "net/base/filename_util.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 14 matching lines...) Expand all
25 int lineno; 25 int lineno;
26 const char* url; 26 const char* url;
27 const char* content_disp_header; 27 const char* content_disp_header;
28 const char* referrer_charset; 28 const char* referrer_charset;
29 const char* suggested_filename; 29 const char* suggested_filename;
30 const char* mime_type; 30 const char* mime_type;
31 const wchar_t* default_filename; 31 const wchar_t* default_filename;
32 const wchar_t* expected_filename; 32 const wchar_t* expected_filename;
33 }; 33 };
34 34
35 // The expected filenames are coded as wchar_t for convenience.
36 std::wstring FilePathAsWString(const base::FilePath& path) {
37 #if defined(OS_WIN)
38 return path.value();
39 #else
40 return base::UTF8ToWide(path.value());
41 #endif
42 }
43 base::FilePath WStringAsFilePath(const std::wstring& str) {
44 #if defined(OS_WIN)
45 return base::FilePath(str);
46 #else
47 return base::FilePath(base::WideToUTF8(str));
48 #endif
49 }
50
35 void RunGenerateFileNameTestCase(const GenerateFilenameCase* test_case) { 51 void RunGenerateFileNameTestCase(const GenerateFilenameCase* test_case) {
36 std::string default_filename(base::WideToUTF8(test_case->default_filename)); 52 std::string default_filename(base::WideToUTF8(test_case->default_filename));
37 base::FilePath file_path = GenerateFileName( 53 base::FilePath file_path = GenerateFileName(
38 GURL(test_case->url), test_case->content_disp_header, 54 GURL(test_case->url), test_case->content_disp_header,
39 test_case->referrer_charset, test_case->suggested_filename, 55 test_case->referrer_charset, test_case->suggested_filename,
40 test_case->mime_type, default_filename); 56 test_case->mime_type, default_filename);
41 EXPECT_EQ(test_case->expected_filename, 57 EXPECT_EQ(test_case->expected_filename, FilePathAsWString(file_path))
42 file_util::FilePathAsWString(file_path))
43 << "test case at line number: " << test_case->lineno; 58 << "test case at line number: " << test_case->lineno;
44 } 59 }
45 60
46 } // namespace 61 } // namespace
47 62
48 static const base::FilePath::CharType* kSafePortableBasenames[] = { 63 static const base::FilePath::CharType* kSafePortableBasenames[] = {
49 FILE_PATH_LITERAL("a"), 64 FILE_PATH_LITERAL("a"),
50 FILE_PATH_LITERAL("a.txt"), 65 FILE_PATH_LITERAL("a.txt"),
51 FILE_PATH_LITERAL("a b.txt"), 66 FILE_PATH_LITERAL("a b.txt"),
52 FILE_PATH_LITERAL("a-b.txt"), 67 FILE_PATH_LITERAL("a-b.txt"),
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 {L"/plane1/\x1D400\x1D401.txt", // Math alphabet "AB" 179 {L"/plane1/\x1D400\x1D401.txt", // Math alphabet "AB"
165 "file:///plane1/%F0%9D%90%80%F0%9D%90%81.txt"}, 180 "file:///plane1/%F0%9D%90%80%F0%9D%90%81.txt"},
166 #endif 181 #endif
167 }; 182 };
168 183
169 // First, we'll test that we can round-trip all of the above cases of URLs 184 // First, we'll test that we can round-trip all of the above cases of URLs
170 base::FilePath output; 185 base::FilePath output;
171 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(round_trip_cases); i++) { 186 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(round_trip_cases); i++) {
172 // convert to the file URL 187 // convert to the file URL
173 GURL file_url(FilePathToFileURL( 188 GURL file_url(FilePathToFileURL(
174 file_util::WStringAsFilePath(round_trip_cases[i].file))); 189 WStringAsFilePath(round_trip_cases[i].file)));
175 EXPECT_EQ(round_trip_cases[i].url, file_url.spec()); 190 EXPECT_EQ(round_trip_cases[i].url, file_url.spec());
176 191
177 // Back to the filename. 192 // Back to the filename.
178 EXPECT_TRUE(FileURLToFilePath(file_url, &output)); 193 EXPECT_TRUE(FileURLToFilePath(file_url, &output));
179 EXPECT_EQ(round_trip_cases[i].file, file_util::FilePathAsWString(output)); 194 EXPECT_EQ(round_trip_cases[i].file, FilePathAsWString(output));
180 } 195 }
181 196
182 // Test that various file: URLs get decoded into the correct file type 197 // Test that various file: URLs get decoded into the correct file type
183 FileCase url_cases[] = { 198 FileCase url_cases[] = {
184 #if defined(OS_WIN) 199 #if defined(OS_WIN)
185 {L"C:\\foo\\bar.txt", "file:c|/foo\\bar.txt"}, 200 {L"C:\\foo\\bar.txt", "file:c|/foo\\bar.txt"},
186 {L"C:\\foo\\bar.txt", "file:/c:/foo/bar.txt"}, 201 {L"C:\\foo\\bar.txt", "file:/c:/foo/bar.txt"},
187 {L"\\\\foo\\bar.txt", "file://foo\\bar.txt"}, 202 {L"\\\\foo\\bar.txt", "file://foo\\bar.txt"},
188 {L"C:\\foo\\bar.txt", "file:///c:/foo/bar.txt"}, 203 {L"C:\\foo\\bar.txt", "file:///c:/foo/bar.txt"},
189 {L"\\\\foo\\bar.txt", "file:////foo\\bar.txt"}, 204 {L"\\\\foo\\bar.txt", "file:////foo\\bar.txt"},
(...skipping 18 matching lines...) Expand all
208 // slashes. 223 // slashes.
209 //{L"/foo%5Cbar.txt", "file://foo\\bar.txt"}, 224 //{L"/foo%5Cbar.txt", "file://foo\\bar.txt"},
210 //{L"/c|/foo%5Cbar.txt", "file:c|/foo\\bar.txt"}, 225 //{L"/c|/foo%5Cbar.txt", "file:c|/foo\\bar.txt"},
211 //{L"/foo%5Cbar.txt", "file://foo\\bar.txt"}, 226 //{L"/foo%5Cbar.txt", "file://foo\\bar.txt"},
212 //{L"/foo%5Cbar.txt", "file:////foo\\bar.txt"}, 227 //{L"/foo%5Cbar.txt", "file:////foo\\bar.txt"},
213 //{L"/foo%5Cbar.txt", "file://foo\\bar.txt"}, 228 //{L"/foo%5Cbar.txt", "file://foo\\bar.txt"},
214 #endif 229 #endif
215 }; 230 };
216 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(url_cases); i++) { 231 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(url_cases); i++) {
217 FileURLToFilePath(GURL(url_cases[i].url), &output); 232 FileURLToFilePath(GURL(url_cases[i].url), &output);
218 EXPECT_EQ(url_cases[i].file, file_util::FilePathAsWString(output)); 233 EXPECT_EQ(url_cases[i].file, FilePathAsWString(output));
219 } 234 }
220 235
221 // Unfortunately, UTF8ToWide discards invalid UTF8 input. 236 // Unfortunately, UTF8ToWide discards invalid UTF8 input.
222 #ifdef BUG_878908_IS_FIXED 237 #ifdef BUG_878908_IS_FIXED
223 // Test that no conversion happens if the UTF-8 input is invalid, and that 238 // Test that no conversion happens if the UTF-8 input is invalid, and that
224 // the input is preserved in UTF-8 239 // the input is preserved in UTF-8
225 const char invalid_utf8[] = "file:///d:/Blah/\xff.doc"; 240 const char invalid_utf8[] = "file:///d:/Blah/\xff.doc";
226 const wchar_t invalid_wide[] = L"D:\\Blah\\\xff.doc"; 241 const wchar_t invalid_wide[] = L"D:\\Blah\\\xff.doc";
227 EXPECT_TRUE(FileURLToFilePath( 242 EXPECT_TRUE(FileURLToFilePath(
228 GURL(std::string(invalid_utf8)), &output)); 243 GURL(std::string(invalid_utf8)), &output));
(...skipping 1414 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 RunGenerateFileNameTestCase(&generation_tests[i]); 1658 RunGenerateFileNameTestCase(&generation_tests[i]);
1644 1659
1645 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generation_tests); ++i) { 1660 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(generation_tests); ++i) {
1646 GenerateFilenameCase test_case = generation_tests[i]; 1661 GenerateFilenameCase test_case = generation_tests[i];
1647 test_case.referrer_charset = "GBK"; 1662 test_case.referrer_charset = "GBK";
1648 RunGenerateFileNameTestCase(&test_case); 1663 RunGenerateFileNameTestCase(&test_case);
1649 } 1664 }
1650 } 1665 }
1651 1666
1652 } // namespace net 1667 } // namespace net
OLDNEW
« no previous file with comments | « base/test/test_file_util_win.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698