Limit dependencies in file.{cc,h} and friends We do not need FLAG_WIN_NO_EXECUTE, nor timer- and histogram-related code. This removes a dependency on security_util.{cc,h} through PreventExecuteMapping. We do not need File::SetTimes(). This removes a dependency on time_conversion_posix.cc through Time::ToTimeVal. --- base/files/file.cc | 4 ++++ base/files/file.h | 4 ++++ base/files/file_posix.cc | 4 ++++ base/files/file_win.cc | 8 ++++++++ 4 files changed, 20 insertions(+) diff --git a/base/files/file.cc b/base/files/file.cc index ae486b403a8c..271c9eb570f1 100644 --- a/base/files/file.cc +++ b/base/files/file.cc @@ -9,10 +9,14 @@ #include "base/check_op.h" #include "base/files/file_path.h" #include "base/files/file_tracing.h" +#if !defined(MOZ_ZUCCHINI) #include "base/metrics/histogram.h" +#endif // !defined(MOZ_ZUCCHINI) #include "base/notreached.h" #include "base/numerics/safe_conversions.h" +#if !defined(MOZ_ZUCCHINI) #include "base/timer/elapsed_timer.h" +#endif // !defined(MOZ_ZUCCHINI) #include "base/trace_event/base_tracing.h" #include "build/build_config.h" diff --git a/base/files/file.h b/base/files/file.h index 1e0b440c920c..c923b06bd8ae 100644 --- a/base/files/file.h +++ b/base/files/file.h @@ -71,10 +71,12 @@ class BASE_EXPORT File { FLAG_CAN_DELETE_ON_CLOSE = 1 << 20, // Requests permission to delete a file // via DeleteOnClose() (Windows only). // See DeleteOnClose() for details. +#if !defined(MOZ_ZUCCHINI) FLAG_WIN_NO_EXECUTE = 1 << 21, // Windows only. Marks the file with a deny ACE that prevents // opening the file with EXECUTE access. Cannot be used with // FILE_WIN_EXECUTE flag. See also PreventExecuteMapping. +#endif // !defined(MOZ_ZUCCHINI) }; // This enum has been recorded in multiple histograms using PlatformFileError @@ -380,6 +382,7 @@ class BASE_EXPORT File { static int Lstat(const char* path, stat_wrapper_t* sb); #endif +#if !defined(MOZ_ZUCCHINI) // This function can be used to augment `flags` with the correct flags // required to create a File that can be safely passed to an untrusted // process. It must be called if the File is intended to be transferred to an @@ -393,6 +396,7 @@ class BASE_EXPORT File { } return flags; } +#endif // !defined(MOZ_ZUCCHINI) private: friend class FileTracing::ScopedTrace; diff --git a/base/files/file_posix.cc b/base/files/file_posix.cc index 0808bb0e3ade..342fa566f8ec 100644 --- a/base/files/file_posix.cc +++ b/base/files/file_posix.cc @@ -57,6 +57,7 @@ int CallFtruncate(PlatformFile file, int64_t length) { #endif } +#if !defined(MOZ_ZUCCHINI) int CallFutimes(PlatformFile file, const struct timeval times[2]) { #ifdef __USE_XOPEN2K8 // futimens should be available, but futimes might not be @@ -73,6 +74,7 @@ int CallFutimes(PlatformFile file, const struct timeval times[2]) { return futimes(file, times); #endif } +#endif // !defined(MOZ_ZUCCHINI) #if !BUILDFLAG(IS_FUCHSIA) short FcntlFlockType(absl::optional mode) { @@ -386,6 +388,7 @@ bool File::SetLength(int64_t length) { return !CallFtruncate(file_.get(), length); } +#if !defined(MOZ_ZUCCHINI) bool File::SetTimes(Time last_access_time, Time last_modified_time) { ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK); DCHECK(IsValid()); @@ -398,6 +401,7 @@ bool File::SetTimes(Time last_access_time, Time last_modified_time) { return !CallFutimes(file_.get(), times); } +#endif // !defined(MOZ_ZUCCHINI) bool File::GetInfo(Info* info) { DCHECK(IsValid()); diff --git a/base/files/file_win.cc b/base/files/file_win.cc index 71c4a2566a5a..6763dadd6426 100644 --- a/base/files/file_win.cc +++ b/base/files/file_win.cc @@ -10,9 +10,11 @@ #include #include "base/check_op.h" +#if !defined(MOZ_ZUCCHINI) #include "base/files/file_util.h" #include "base/immediate_crash.h" #include "base/metrics/histogram_functions.h" +#endif // !defined(MOZ_ZUCCHINI) #include "base/notreached.h" #include "base/strings/string_util.h" #include "base/threading/scoped_blocking_call.h" @@ -212,6 +214,7 @@ bool File::SetLength(int64_t length) { FALSE)); } +#if !defined(MOZ_ZUCCHINI) bool File::SetTimes(Time last_access_time, Time last_modified_time) { ScopedBlockingCall scoped_blocking_call(FROM_HERE, BlockingType::MAY_BLOCK); DCHECK(IsValid()); @@ -248,6 +251,7 @@ bool File::GetInfo(Info* info) { info->creation_time = Time::FromFileTime(file_info.ftCreationTime); return true; } +#endif // !defined(MOZ_ZUCCHINI) namespace { @@ -415,9 +419,11 @@ void File::DoInitialize(const FilePath& path, uint32_t flags) { if (flags & FLAG_WRITE_ATTRIBUTES) access |= FILE_WRITE_ATTRIBUTES; if (flags & FLAG_WIN_EXECUTE) { +#if !defined(MOZ_ZUCCHINI) // Specifying both FLAG_WIN_EXECUTE and FLAG_WIN_NO_EXECUTE would // constitute a security risk, so deny the access here. CHECK_EQ(flags & FLAG_WIN_NO_EXECUTE, 0U); +#endif // !defined(MOZ_ZUCCHINI) access |= GENERIC_EXECUTE; } if (flags & FLAG_CAN_DELETE_ON_CLOSE) @@ -454,6 +460,7 @@ void File::DoInitialize(const FilePath& path, uint32_t flags) { created_ = (ERROR_ALREADY_EXISTS != GetLastError()); else if (flags & (FLAG_CREATE_ALWAYS | FLAG_CREATE)) created_ = true; +#if !defined(MOZ_ZUCCHINI) if (flags & FLAG_WIN_NO_EXECUTE) { // These two DCHECKs make sure that no callers are trying to remove // execute permission from a file that might need to be mapped executable @@ -472,6 +479,7 @@ void File::DoInitialize(const FilePath& path, uint32_t flags) { // occurring or about to occur. std::ignore = PreventExecuteMapping(path); } +#endif // defined(MOZ_ZUCCHINI) } else { error_details_ = GetLastFileError(); } -- 2.42.0.windows.2