Define only the required functions from file_util.h

This limits dependencies.
---
 files/file_util.cc       | 16 ++++++++++
 files/file_util_posix.cc | 29 ++++++++++++++++-
 files/file_util_win.cc   | 31 +++++++++++++++++++
 3 files changed, 75 insertions(+), 1 deletion(-)

diff --git a/base/files/file_util.cc b/base/files/file_util.cc
index 48288660236d..b2b2a6fdbbd8 100644
--- a/base/files/file_util.cc
+++ b/base/files/file_util.cc
@@ -4,7 +4,9 @@
 
 #include "base/files/file_util.h"
 
+#if !defined(MOZ_ZUCCHINI)
 #include "base/task/sequenced_task_runner.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "build/build_config.h"
 
 #if BUILDFLAG(IS_WIN)
@@ -18,6 +20,7 @@
 #include <utility>
 #include <vector>
 
+#if !defined(MOZ_ZUCCHINI)
 #include "base/bit_cast.h"
 #include "base/check_op.h"
 #include "base/containers/span.h"
@@ -25,12 +28,15 @@
 #include "base/files/file_path.h"
 #include "base/functional/function_ref.h"
 #include "base/notreached.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/posix/eintr_wrapper.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/bind_post_task.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/threading/scoped_blocking_call.h"
 
 #if BUILDFLAG(IS_WIN)
@@ -41,6 +47,7 @@ namespace base {
 
 namespace {
 
+#if !defined(MOZ_ZUCCHINI)
 #if !BUILDFLAG(IS_WIN)
 
 void RunAndReply(OnceCallback<bool()> action_callback,
@@ -51,6 +58,7 @@ void RunAndReply(OnceCallback<bool()> action_callback,
 }
 
 #endif  // !BUILDFLAG(IS_WIN)
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool ReadStreamToSpanWithMaxSize(
     FILE* stream,
@@ -134,6 +142,7 @@ bool ReadStreamToSpanWithMaxSize(
 
 }  // namespace
 
+#if !defined(MOZ_ZUCCHINI)
 #if !BUILDFLAG(IS_WIN)
 
 OnceClosure GetDeleteFileCallback(const FilePath& path,
@@ -301,6 +310,7 @@ bool ReadStreamToString(FILE* stream, std::string* contents) {
   return ReadStreamToStringWithMaxSize(
       stream, std::numeric_limits<size_t>::max(), contents);
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool ReadStreamToStringWithMaxSize(FILE* stream,
                                    size_t max_size,
@@ -322,6 +332,7 @@ bool ReadStreamToStringWithMaxSize(FILE* stream,
   return read_successs;
 }
 
+#if !defined(MOZ_ZUCCHINI)
 absl::optional<std::vector<uint8_t>> ReadFileToBytes(const FilePath& path) {
   if (path.ReferencesParent()) {
     return absl::nullopt;
@@ -343,6 +354,7 @@ absl::optional<std::vector<uint8_t>> ReadFileToBytes(const FilePath& path) {
   }
   return bytes;
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool ReadFileToString(const FilePath& path, std::string* contents) {
   return ReadFileToStringWithMaxSize(path, contents,
@@ -362,6 +374,7 @@ bool ReadFileToStringWithMaxSize(const FilePath& path,
   return ReadStreamToStringWithMaxSize(file_stream.get(), max_size, contents);
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool IsDirectoryEmpty(const FilePath& dir_path) {
   FileEnumerator files(dir_path, false,
       FileEnumerator::FILES | FileEnumerator::DIRECTORIES);
@@ -382,11 +395,13 @@ ScopedFILE CreateAndOpenTemporaryStream(FilePath* path) {
 
   return CreateAndOpenTemporaryStreamInDir(directory, path);
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool CreateDirectory(const FilePath& full_path) {
   return CreateDirectoryAndGetError(full_path, nullptr);
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool GetFileSize(const FilePath& file_path, int64_t* file_size) {
   File::Info info;
   if (!GetFileInfo(file_path, &info))
@@ -513,5 +528,6 @@ bool PreReadFileSlow(const FilePath& file_path, int64_t max_bytes) {
 }
 
 }  // namespace internal
+#endif  // !defined(MOZ_ZUCCHINI)
 
 }  // namespace base
diff --git a/base/files/file_util_posix.cc b/base/files/file_util_posix.cc
index da04b251ce91..bd41957f7149 100644
--- a/base/files/file_util_posix.cc
+++ b/base/files/file_util_posix.cc
@@ -21,18 +21,26 @@
 #include <unistd.h>
 
 #include "base/base_export.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/base_switches.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/bits.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/command_line.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/containers/adapters.h"
 #include "base/containers/contains.h"
 #include "base/containers/stack.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/environment.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/files/file_enumerator.h"
 #include "base/files/file_path.h"
 #include "base/files/scoped_file.h"
 #include "base/logging.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/memory/singleton.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/notreached.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/path_service.h"
@@ -77,6 +85,7 @@ namespace base {
 
 namespace {
 
+#if !defined(MOZ_ZUCCHINI)
 #if BUILDFLAG(IS_MAC)
 // Helper for VerifyPathControlledByUser.
 bool VerifySpecificPathControlledByUser(const FilePath& path,
@@ -114,11 +123,13 @@ bool VerifySpecificPathControlledByUser(const FilePath& path,
   return true;
 }
 #endif
+#endif  // !defined(MOZ_ZUCCHINI)
 
 base::FilePath GetTempTemplate() {
   return FormatTemporaryFileName("XXXXXX");
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool AdvanceEnumeratorWithStat(FileEnumerator* traversal,
                                FilePath* out_next_path,
                                stat_wrapper_t* out_next_stat) {
@@ -271,6 +282,7 @@ bool DoCopyDirectory(const FilePath& from_path,
 
   return true;
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 // TODO(erikkay): The Windows version of this accepts paths like "foo/bar/*"
 // which works both with and without the recursive flag.  I'm not sure we need
@@ -387,6 +399,7 @@ bool DeletePathRecursively(const FilePath& path) {
   return DoDeleteFile(path, /*recursive=*/true);
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool ReplaceFile(const FilePath& from_path,
                  const FilePath& to_path,
                  File::Error* error) {
@@ -454,6 +467,7 @@ bool SetNonBlocking(int fd) {
     return false;
   return true;
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool SetCloseOnExec(int fd) {
   const int flags = fcntl(fd, F_GETFD);
@@ -608,6 +622,7 @@ bool SetPosixFilePermissions(const FilePath& path,
   return true;
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool ExecutableExistsInPath(Environment* env,
                             const FilePath::StringType& executable) {
   std::string path;
@@ -626,6 +641,7 @@ bool ExecutableExistsInPath(Environment* env,
   }
   return false;
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 #endif  // !BUILDFLAG(IS_FUCHSIA)
 
@@ -674,6 +690,7 @@ FilePath GetHomeDir() {
 }
 #endif  // !BUILDFLAG(IS_APPLE)
 
+#if !defined(MOZ_ZUCCHINI)
 File CreateAndOpenTemporaryFileInDir(const FilePath& dir, FilePath* temp_file) {
   // For call to close() inside ScopedFD.
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
@@ -687,6 +704,7 @@ bool CreateTemporaryFileInDir(const FilePath& dir, FilePath* temp_file) {
   ScopedFD fd = CreateAndOpenFdForTemporaryFileInDir(dir, temp_file);
   return fd.is_valid();
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 FilePath FormatTemporaryFileName(FilePath::StringPieceType identifier) {
 #if BUILDFLAG(IS_APPLE)
@@ -699,6 +717,7 @@ FilePath FormatTemporaryFileName(FilePath::StringPieceType identifier) {
   return FilePath(StrCat({".", prefix, ".", identifier}));
 }
 
+#if !defined(MOZ_ZUCCHINI)
 ScopedFILE CreateAndOpenTemporaryStreamInDir(const FilePath& dir,
                                              FilePath* path) {
   ScopedFD scoped_fd = CreateAndOpenFdForTemporaryFileInDir(dir, path);
@@ -711,6 +730,7 @@ ScopedFILE CreateAndOpenTemporaryStreamInDir(const FilePath& dir,
     close(fd);
   return ScopedFILE(file);
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 static bool CreateTemporaryDirInDirImpl(const FilePath& base_dir,
                                         const FilePath& name_tmpl,
@@ -787,6 +807,7 @@ bool CreateDirectoryAndGetError(const FilePath& full_path,
   return true;
 }
 
+#if !defined(MOZ_ZUCCHINI)
 // ReadFileToStringNonBlockingNonBlocking will read a file to a string. This
 // method should only be used on files which are known to be non-blocking such
 // as procfs or sysfs nodes. Additionally, the file is opened as O_NONBLOCK so
@@ -861,6 +882,7 @@ bool GetFileInfo(const FilePath& file_path, File::Info* results) {
   results->FromStat(file_info);
   return true;
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 FILE* OpenFile(const FilePath& filename, const char* mode) {
   // 'e' is unconditionally added below, so be sure there is not one already
@@ -912,6 +934,7 @@ File FILEToFile(FILE* file_stream) {
 }
 #endif  // !BUILDFLAG(IS_NACL)
 
+#if !defined(MOZ_ZUCCHINI)
 int ReadFile(const FilePath& filename, char* data, int max_size) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
   if (max_size < 0)
@@ -962,6 +985,7 @@ bool WriteFileDescriptor(int fd, span<const uint8_t> data) {
 bool WriteFileDescriptor(int fd, StringPiece data) {
   return WriteFileDescriptor(fd, as_bytes(make_span(data)));
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool AllocateFileRegion(File* file, int64_t offset, size_t size) {
   DCHECK(file);
@@ -1042,6 +1066,7 @@ bool AllocateFileRegion(File* file, int64_t offset, size_t size) {
   return true;
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool AppendToFile(const FilePath& filename, span<const uint8_t> data) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
   bool ret = true;
@@ -1068,6 +1093,7 @@ bool AppendToFile(const FilePath& filename, span<const uint8_t> data) {
 bool AppendToFile(const FilePath& filename, StringPiece data) {
   return AppendToFile(filename, as_bytes(make_span(data)));
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool GetCurrentDirectory(FilePath* dir) {
   // getcwd can return ENOENT, which implies it checks against the disk.
@@ -1081,6 +1107,7 @@ bool GetCurrentDirectory(FilePath* dir) {
   return true;
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool SetCurrentDirectory(const FilePath& path) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
   return chdir(path.value().c_str()) == 0;
@@ -1362,5 +1389,5 @@ BASE_EXPORT bool IsPathExecutable(const FilePath& path) {
   return result;
 }
 #endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_AIX)
-
+#endif  // !defined(MOZ_ZUCCHINI)
 }  // namespace base
diff --git a/base/files/file_util_win.cc b/base/files/file_util_win.cc
index d7b5fb20aeb3..bd2082584525 100644
--- a/base/files/file_util_win.cc
+++ b/base/files/file_util_win.cc
@@ -21,32 +21,43 @@
 #include <utility>
 #include <vector>
 
+#if !defined(MOZ_ZUCCHINI)
 #include "base/check.h"
 #include "base/clang_profiling_buildflags.h"
 #include "base/debug/alias.h"
 #include "base/feature_list.h"
 #include "base/features.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/files/file_enumerator.h"
 #include "base/files/file_path.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/files/memory_mapped_file.h"
 #include "base/functional/bind.h"
 #include "base/functional/callback.h"
 #include "base/location.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/logging.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/path_service.h"
 #include "base/process/process_handle.h"
 #include "base/rand_util.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/strings/strcat.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/strings/string_number_conversions.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/strings/string_piece.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/strings/string_util.h"
 #include "base/strings/string_util_win.h"
 #include "base/strings/utf_string_conversions.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/task/bind_post_task.h"
 #include "base/task/sequenced_task_runner.h"
 #include "base/task/thread_pool.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 #include "base/threading/scoped_blocking_call.h"
+#if !defined(MOZ_ZUCCHINI)
 #include "base/threading/scoped_thread_priority.h"
 #include "base/time/time.h"
 #include "base/uuid.h"
@@ -55,12 +66,15 @@
 #include "base/win/sid.h"
 #include "base/win/windows_types.h"
 #include "base/win/windows_version.h"
+#endif  // !defined(MOZ_ZUCCHINI)
 
 namespace base {
 
 namespace {
 
+#if !defined(MOZ_ZUCCHINI)
 int g_extra_allowed_path_for_no_execute = 0;
+#endif  // !defined(MOZ_ZUCCHINI)
 
 const DWORD kFileShareAll =
     FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE;
@@ -128,6 +142,7 @@ void AppendModeCharacter(wchar_t mode_char, std::wstring* mode) {
                mode_char);
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool DoCopyFile(const FilePath& from_path,
                 const FilePath& to_path,
                 bool fail_if_exists) {
@@ -254,6 +269,7 @@ bool DoCopyDirectory(const FilePath& from_path,
 
   return success;
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 // Returns ERROR_SUCCESS on success, or a Windows error code on failure.
 DWORD DoDeleteFile(const FilePath& path, bool recursive) {
@@ -320,6 +336,7 @@ bool DeleteFileOrSetLastError(const FilePath& path, bool recursive) {
   return false;
 }
 
+#if !defined(MOZ_ZUCCHINI)
 constexpr int kMaxDeleteAttempts = 9;
 
 void DeleteFileWithRetry(const FilePath& path,
@@ -422,9 +439,11 @@ bool IsPathSafeToSetAclOn(const FilePath& path) {
 
   return false;
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 }  // namespace
 
+#if !defined(MOZ_ZUCCHINI)
 OnceClosure GetDeleteFileCallback(const FilePath& path,
                                   OnceCallback<void(bool)> reply_callback) {
   return GetDeleteFileCallbackInternal(path, /*recursive=*/false,
@@ -437,6 +456,7 @@ OnceClosure GetDeletePathRecursivelyCallback(
   return GetDeleteFileCallbackInternal(path, /*recursive=*/true,
                                        std::move(reply_callback));
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 FilePath MakeAbsoluteFilePath(const FilePath& input) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
@@ -454,6 +474,7 @@ bool DeletePathRecursively(const FilePath& path) {
   return DeleteFileOrSetLastError(path, /*recursive=*/true);
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool DeleteFileAfterReboot(const FilePath& path) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
 
@@ -516,6 +537,7 @@ bool CopyDirectoryExcl(const FilePath& from_path,
                        bool recursive) {
   return DoCopyDirectory(from_path, to_path, recursive, true);
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool PathExists(const FilePath& path) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
@@ -594,6 +616,7 @@ FilePath GetHomeDir() {
   return FilePath(FILE_PATH_LITERAL("C:\\"));
 }
 
+#if !defined(MOZ_ZUCCHINI)
 File CreateAndOpenTemporaryFileInDir(const FilePath& dir, FilePath* temp_file) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
 
@@ -659,6 +682,7 @@ ScopedFILE CreateAndOpenTemporaryStreamInDir(const FilePath& dir,
   return ScopedFILE(
       FileToFILE(CreateAndOpenTemporaryFileInDir(dir, path), "wb+"));
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool CreateTemporaryDirInDir(const FilePath& base_dir,
                              const FilePath::StringType& prefix,
@@ -795,6 +819,7 @@ bool CreateDirectoryAndGetError(const FilePath& full_path,
   return false;
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool NormalizeFilePath(const FilePath& path, FilePath* real_path) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
   File file(path,
@@ -921,6 +946,7 @@ bool GetFileInfo(const FilePath& file_path, File::Info* results) {
 
   return true;
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 FILE* OpenFile(const FilePath& filename, const char* mode) {
   // 'N' is unconditionally added below, so be sure there is not one already
@@ -972,6 +998,7 @@ File FILEToFile(FILE* file_stream) {
   return File(ScopedPlatformFile(other_handle));
 }
 
+#if !defined(MOZ_ZUCCHINI)
 int ReadFile(const FilePath& filename, char* data, int max_size) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
   win::ScopedHandle file(CreateFile(filename.value().c_str(), GENERIC_READ,
@@ -1047,6 +1074,7 @@ bool AppendToFile(const FilePath& filename, span<const uint8_t> data) {
 bool AppendToFile(const FilePath& filename, StringPiece data) {
   return AppendToFile(filename, as_bytes(make_span(data)));
 }
+#endif  // !defined(MOZ_ZUCCHINI)
 
 bool GetCurrentDirectory(FilePath* dir) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
@@ -1064,6 +1092,7 @@ bool GetCurrentDirectory(FilePath* dir) {
   return true;
 }
 
+#if !defined(MOZ_ZUCCHINI)
 bool SetCurrentDirectory(const FilePath& directory) {
   ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK);
   return ::SetCurrentDirectory(directory.value().c_str()) != 0;
@@ -1257,4 +1286,6 @@ bool CopyAndDeleteDirectory(const FilePath& from_path,
 }
 
 }  // namespace internal
+#endif  // !defined(MOZ_ZUCCHINI)
+
 }  // namespace base
-- 
2.42.0.windows.2

