diff --git a/tools/gn/command_format.cc b/tools/gn/command_format.cc
index 2d6cea4..3b7a54e 100644
--- a/tools/gn/command_format.cc
+++ b/tools/gn/command_format.cc
@@ -1082,7 +1082,7 @@
       std::string original_contents;
       if (!base::ReadFileToString(to_write, &original_contents)) {
         Err(Location(), std::string("Couldn't read \"") +
-                            to_write.AsUTF8Unsafe() +
+                            FilePathToUTF8(to_write) +
                             std::string("\" for comparison."))
             .PrintToStdout();
         return 1;
@@ -1094,11 +1094,11 @@
                             static_cast<int>(output_string.size())) == -1) {
           Err(Location(),
               std::string("Failed to write formatted output back to \"") +
-                  to_write.AsUTF8Unsafe() + std::string("\"."))
+                  FilePathToUTF8(to_write) + std::string("\"."))
               .PrintToStdout();
           return 1;
         }
-        printf("Wrote formatted to '%s'.\n", to_write.AsUTF8Unsafe().c_str());
+        printf("Wrote formatted to '%s'.\n", FilePathToUTF8(to_write).c_str());
       }
     }
   }
diff --git a/tools/gn/function_write_file_unittest.cc b/tools/gn/function_write_file_unittest.cc
index 035faba..4e317e1 100644
--- a/tools/gn/function_write_file_unittest.cc
+++ b/tools/gn/function_write_file_unittest.cc
@@ -87,7 +87,7 @@
                             &last_access_filetime, &last_modified_filetime));
 #elif defined(OS_AIX)
   struct timeval times[2] = {};
-  ASSERT_EQ(utimes(foo_name.AsUTF8Unsafe().c_str(), times), 0);
+  ASSERT_EQ(utimes(foo_name.value().c_str(), times), 0);
 #else
   struct timeval times[2] = {};
   ASSERT_EQ(futimes(foo_file.GetPlatformFile(), times), 0);
diff --git a/tools/gn/xcode_writer.cc b/tools/gn/xcode_writer.cc
index e41c7a0..0d4a35a 100644
--- a/tools/gn/xcode_writer.cc
+++ b/tools/gn/xcode_writer.cc
@@ -376,17 +376,14 @@
       break;
   }
 
-  const std::string source_path =
-      base::FilePath::FromUTF8Unsafe(
-          RebasePath("//", build_settings->build_dir()))
-          .StripTrailingSeparators()
-          .AsUTF8Unsafe();
+  const std::string source_path = FilePathToUTF8(
+      UTF8ToFilePath(RebasePath("//", build_settings->build_dir()))
+          .StripTrailingSeparators());
 
-  std::string config_name = build_settings->build_dir()
-                                .Resolve(base::FilePath())
-                                .StripTrailingSeparators()
-                                .BaseName()
-                                .AsUTF8Unsafe();
+  std::string config_name = FilePathToUTF8(build_settings->build_dir()
+                                               .Resolve(base::FilePath())
+                                               .StripTrailingSeparators()
+                                               .BaseName());
   DCHECK(!config_name.empty());
 
   std::string::size_type separator = config_name.find('-');
