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

Side by Side Diff: base/files/file_path.h

Issue 17509002: Add FilePath::{As,From}UTF16Unsafe (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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 | « no previous file | base/files/file_path.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // FilePath is a container for pathnames stored in a platform's native string 5 // FilePath is a container for pathnames stored in a platform's native string
6 // type, providing containers for manipulation in according with the 6 // type, providing containers for manipulation in according with the
7 // platform's conventions for pathnames. It supports the following path 7 // platform's conventions for pathnames. It supports the following path
8 // types: 8 // types:
9 // 9 //
10 // POSIX Windows 10 // POSIX Windows
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 // the encoding issue, this function internally calls 322 // the encoding issue, this function internally calls
323 // SysNativeMBToWide() on POSIX systems other than Mac and Chrome OS, 323 // SysNativeMBToWide() on POSIX systems other than Mac and Chrome OS,
324 // per assumption that the current locale's encoding is used in file 324 // per assumption that the current locale's encoding is used in file
325 // names, but this isn't a perfect solution. 325 // names, but this isn't a perfect solution.
326 // 326 //
327 // Once it becomes safe to to stop caring about non-UTF-8 file names, 327 // Once it becomes safe to to stop caring about non-UTF-8 file names,
328 // the SysNativeMBToWide() hack will be removed from the code, along 328 // the SysNativeMBToWide() hack will be removed from the code, along
329 // with "Unsafe" in the function name. 329 // with "Unsafe" in the function name.
330 std::string AsUTF8Unsafe() const; 330 std::string AsUTF8Unsafe() const;
331 331
332 // Similar to AsUTF8Unsafe, but returns UTF-16 instead.
333 string16 AsUTF16Unsafe() const;
334
332 // Older Chromium code assumes that paths are always wstrings. 335 // Older Chromium code assumes that paths are always wstrings.
333 // This function converts wstrings to FilePaths, and is 336 // This function converts wstrings to FilePaths, and is
334 // useful to smooth porting that old code to the FilePath API. 337 // useful to smooth porting that old code to the FilePath API.
335 // It has "Hack" its name so people feel bad about using it. 338 // It has "Hack" its name so people feel bad about using it.
336 // http://code.google.com/p/chromium/issues/detail?id=24672 339 // http://code.google.com/p/chromium/issues/detail?id=24672
337 // 340 //
338 // If you are trying to be a good citizen and remove these, ask yourself: 341 // If you are trying to be a good citizen and remove these, ask yourself:
339 // - Am I interacting with other Chrome code that deals with files? Then 342 // - Am I interacting with other Chrome code that deals with files? Then
340 // try to convert the API into using FilePath. 343 // try to convert the API into using FilePath.
341 // - Am I interacting with OS-native calls? Then use value() to get at an 344 // - Am I interacting with OS-native calls? Then use value() to get at an
342 // OS-native string format. 345 // OS-native string format.
343 // - Am I using well-known file names, like "config.ini"? Then use the 346 // - Am I using well-known file names, like "config.ini"? Then use the
344 // ASCII functions (we require paths to always be supersets of ASCII). 347 // ASCII functions (we require paths to always be supersets of ASCII).
345 // - Am I displaying a string to the user in some UI? Then use the 348 // - Am I displaying a string to the user in some UI? Then use the
346 // LossyDisplayName() function, but keep in mind that you can't 349 // LossyDisplayName() function, but keep in mind that you can't
347 // ever use the result of that again as a path. 350 // ever use the result of that again as a path.
348 static FilePath FromWStringHack(const std::wstring& wstring); 351 static FilePath FromWStringHack(const std::wstring& wstring);
349 352
350 // Returns a FilePath object from a path name in UTF-8. This function 353 // Returns a FilePath object from a path name in UTF-8. This function
351 // should only be used for cases where you are sure that the input 354 // should only be used for cases where you are sure that the input
352 // string is UTF-8. 355 // string is UTF-8.
353 // 356 //
354 // Like AsUTF8Unsafe(), this function is unsafe. This function 357 // Like AsUTF8Unsafe(), this function is unsafe. This function
355 // internally calls SysWideToNativeMB() on POSIX systems other than Mac 358 // internally calls SysWideToNativeMB() on POSIX systems other than Mac
356 // and Chrome OS, to mitigate the encoding issue. See the comment at 359 // and Chrome OS, to mitigate the encoding issue. See the comment at
357 // AsUTF8Unsafe() for details. 360 // AsUTF8Unsafe() for details.
358 static FilePath FromUTF8Unsafe(const std::string& utf8); 361 static FilePath FromUTF8Unsafe(const std::string& utf8);
359 362
363 // Similar to FromUTF8Unsafe, but accepts UTF-16 instead.
364 static FilePath FromUTF16Unsafe(const string16& utf16);
365
360 void WriteToPickle(Pickle* pickle) const; 366 void WriteToPickle(Pickle* pickle) const;
361 bool ReadFromPickle(PickleIterator* iter); 367 bool ReadFromPickle(PickleIterator* iter);
362 368
363 // Normalize all path separators to backslash on Windows 369 // Normalize all path separators to backslash on Windows
364 // (if FILE_PATH_USES_WIN_SEPARATORS is true), or do nothing on POSIX systems. 370 // (if FILE_PATH_USES_WIN_SEPARATORS is true), or do nothing on POSIX systems.
365 FilePath NormalizePathSeparators() const; 371 FilePath NormalizePathSeparators() const;
366 372
367 // Compare two strings in the same way the file system does. 373 // Compare two strings in the same way the file system does.
368 // Note that these always ignore case, even on file systems that are case- 374 // Note that these always ignore case, even on file systems that are case-
369 // sensitive. If case-sensitive comparison is ever needed, add corresponding 375 // sensitive. If case-sensitive comparison is ever needed, add corresponding
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 449
444 inline size_t hash_value(const base::FilePath& f) { 450 inline size_t hash_value(const base::FilePath& f) {
445 return hash_value(f.value()); 451 return hash_value(f.value());
446 } 452 }
447 453
448 #endif // COMPILER 454 #endif // COMPILER
449 455
450 } // namespace BASE_HASH_NAMESPACE 456 } // namespace BASE_HASH_NAMESPACE
451 457
452 #endif // BASE_FILES_FILE_PATH_H_ 458 #endif // BASE_FILES_FILE_PATH_H_
OLDNEW
« no previous file with comments | « no previous file | base/files/file_path.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698