Add FilePath::{As,From}UTF16Unsafe

R=brettw@chromium.org

Review URL: https://codereview.chromium.org/17509002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207576 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: 65e269ff59a9d86191f8c2f23f9ad210f14a3d79
diff --git a/base/files/file_path.cc b/base/files/file_path.cc
index 743cbb5..ef0cde6 100644
--- a/base/files/file_path.cc
+++ b/base/files/file_path.cc
@@ -577,6 +577,14 @@
 #endif
 }
 
+string16 FilePath::AsUTF16Unsafe() const {
+#if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+  return UTF8ToUTF16(value());
+#else
+  return WideToUTF16(SysNativeMBToWide(value()));
+#endif
+}
+
 // The *Hack functions are temporary while we fix the remainder of the code.
 // Remember to remove the #includes at the top when you remove these.
 
@@ -594,6 +602,15 @@
 #endif
 }
 
+// static
+FilePath FilePath::FromUTF16Unsafe(const string16& utf16) {
+#if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+  return FilePath(UTF16ToUTF8(utf16));
+#else
+  return FilePath(SysWideToNativeMB(UTF16ToWide(utf16)));
+#endif
+}
+
 #elif defined(OS_WIN)
 string16 FilePath::LossyDisplayName() const {
   return path_;
@@ -609,6 +626,10 @@
   return WideToUTF8(value());
 }
 
+string16 FilePath::AsUTF16Unsafe() const {
+  return value();
+}
+
 // static
 FilePath FilePath::FromWStringHack(const std::wstring& wstring) {
   return FilePath(wstring);
@@ -618,6 +639,11 @@
 FilePath FilePath::FromUTF8Unsafe(const std::string& utf8) {
   return FilePath(UTF8ToWide(utf8));
 }
+
+// static
+FilePath FilePath::FromUTF16Unsafe(const string16& utf16) {
+  return FilePath(utf16);
+}
 #endif
 
 void FilePath::WriteToPickle(Pickle* pickle) const {