From a0c88878b6bfabc4a841d0756701af2ca1b1ad76 Mon Sep 17 00:00:00 2001 From: nisse Date: Thu, 24 Aug 2017 02:20:46 -0700 Subject: [PATCH] Delete Filesystem::GetTemporaryFolder. Testcode updated to use webrtc::test::TempFilename. Also deletes now unused functions AppleDataDirectory, AppleTempDirectory and AppleAppName. BUG=webrtc:6424 Review-Url: https://codereview.webrtc.org/2995413002 Cr-Commit-Position: refs/heads/master@{#19483} --- webrtc/rtc_base/BUILD.gn | 2 - webrtc/rtc_base/applefilesystem.mm | 53 ---------------------- webrtc/rtc_base/fileutils.h | 10 ----- webrtc/rtc_base/fileutils_unittest.cc | 33 -------------- webrtc/rtc_base/logging_unittest.cc | 11 +++-- webrtc/rtc_base/optionsfile_unittest.cc | 10 ++--- webrtc/rtc_base/unixfilesystem.cc | 60 +------------------------ webrtc/rtc_base/unixfilesystem.h | 18 -------- webrtc/rtc_base/win32filesystem.cc | 23 ---------- webrtc/rtc_base/win32filesystem.h | 6 --- 10 files changed, 10 insertions(+), 216 deletions(-) delete mode 100644 webrtc/rtc_base/applefilesystem.mm delete mode 100644 webrtc/rtc_base/fileutils_unittest.cc diff --git a/webrtc/rtc_base/BUILD.gn b/webrtc/rtc_base/BUILD.gn index 477381a259..a9e82e510b 100644 --- a/webrtc/rtc_base/BUILD.gn +++ b/webrtc/rtc_base/BUILD.gn @@ -415,7 +415,6 @@ rtc_static_library("rtc_base") { all_dependent_configs = [ ":rtc_base_all_dependent_config" ] sources = [ - "applefilesystem.mm", "asyncinvoker-inl.h", "asyncinvoker.cc", "asyncinvoker.h", @@ -972,7 +971,6 @@ if (rtc_include_tests) { sources = [ "callback_unittest.cc", "crc32_unittest.cc", - "fileutils_unittest.cc", "helpers_unittest.cc", "httpbase_unittest.cc", "httpcommon_unittest.cc", diff --git a/webrtc/rtc_base/applefilesystem.mm b/webrtc/rtc_base/applefilesystem.mm deleted file mode 100644 index 23df7f8868..0000000000 --- a/webrtc/rtc_base/applefilesystem.mm +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2014 The WebRTC Project Authors. All rights reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// This file only exists because various iOS and macOS system APIs are only -// available from Objective-C. See unixfilesystem.cc for the only use -// (enforced by a lack of a header file). - -#import -#import -#include - -#include "webrtc/rtc_base/checks.h" -#include "webrtc/rtc_base/pathutils.h" - -// Return a new[]'d |char*| copy of the UTF8 representation of |s|. -// Caller owns the returned memory and must use delete[] on it. -static char* copyString(NSString* s) { - const char* utf8 = [s UTF8String]; - size_t len = strlen(utf8) + 1; - char* copy = new char[len]; - // This uses a new[] + strcpy (instead of strdup) because the - // receiver expects to be able to delete[] the returned pointer - // (instead of free()ing it). - strcpy(copy, utf8); - return copy; -} - -// Return a (leaked) copy of a directory name suitable for application data. -char* AppleDataDirectory() { - NSArray* paths = NSSearchPathForDirectoriesInDomains( - NSApplicationSupportDirectory, NSUserDomainMask, YES); - RTC_DCHECK([paths count] == 1); - return copyString([paths objectAtIndex:0]); -} - -// Return a (leaked) copy of a directory name suitable for use as a $TEMP. -char* AppleTempDirectory() { - return copyString(NSTemporaryDirectory()); -} - -// Return the binary's path. -void AppleAppName(rtc::Pathname* path) { - NSProcessInfo* pInfo = [NSProcessInfo processInfo]; - NSString* argv0 = [[pInfo arguments] objectAtIndex:0]; - path->SetPathname([argv0 UTF8String]); -} diff --git a/webrtc/rtc_base/fileutils.h b/webrtc/rtc_base/fileutils.h index b633a38270..a4a94727aa 100644 --- a/webrtc/rtc_base/fileutils.h +++ b/webrtc/rtc_base/fileutils.h @@ -102,11 +102,6 @@ class FilesystemInterface { // directory either exists, or is also absent. virtual bool IsAbsent(const Pathname& pathname) = 0; - // A folder appropriate for storing temporary files (Contents are - // automatically deleted when the program exits) - virtual bool GetTemporaryFolder(Pathname &path, bool create, - const std::string *append) = 0; - virtual std::string TempFilename(const Pathname &dir, const std::string &prefix) = 0; @@ -156,11 +151,6 @@ class Filesystem { return EnsureDefaultFilesystem()->IsAbsent(pathname); } - static bool GetTemporaryFolder(Pathname &path, bool create, - const std::string *append) { - return EnsureDefaultFilesystem()->GetTemporaryFolder(path, create, append); - } - static std::string TempFilename(const Pathname &dir, const std::string &prefix) { return EnsureDefaultFilesystem()->TempFilename(dir, prefix); diff --git a/webrtc/rtc_base/fileutils_unittest.cc b/webrtc/rtc_base/fileutils_unittest.cc deleted file mode 100644 index 80dadf76a1..0000000000 --- a/webrtc/rtc_base/fileutils_unittest.cc +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2004 The WebRTC Project Authors. All rights reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include - -#include "webrtc/rtc_base/fileutils.h" -#include "webrtc/rtc_base/gunit.h" -#include "webrtc/rtc_base/pathutils.h" -#include "webrtc/rtc_base/stream.h" - -namespace rtc { - -#if defined (WEBRTC_ANDROID) -// Fails on Android: https://bugs.chromium.org/p/webrtc/issues/detail?id=4364. -#define MAYBE_FilesystemTest DISABLED_FilesystemTest -#else -#define MAYBE_FilesystemTest FilesystemTest -#endif - -// Make sure we can get a temp folder for the later tests. -TEST(MAYBE_FilesystemTest, GetTemporaryFolder) { - Pathname path; - EXPECT_TRUE(Filesystem::GetTemporaryFolder(path, true, nullptr)); -} - -} // namespace rtc diff --git a/webrtc/rtc_base/logging_unittest.cc b/webrtc/rtc_base/logging_unittest.cc index c806077720..28538bbb51 100644 --- a/webrtc/rtc_base/logging_unittest.cc +++ b/webrtc/rtc_base/logging_unittest.cc @@ -12,9 +12,9 @@ #include "webrtc/rtc_base/gunit.h" #include "webrtc/rtc_base/logging.h" #include "webrtc/rtc_base/nullsocketserver.h" -#include "webrtc/rtc_base/pathutils.h" #include "webrtc/rtc_base/stream.h" #include "webrtc/rtc_base/thread.h" +#include "webrtc/test/testsupport/fileutils.h" namespace rtc { @@ -139,12 +139,11 @@ TEST(LogTest, WallClockStartTime) { #endif TEST(LogTest, MAYBE_Perf) { - Pathname path; - EXPECT_TRUE(Filesystem::GetTemporaryFolder(path, true, nullptr)); - path.SetPathname(Filesystem::TempFilename(path, "ut")); + std::string path = + webrtc::test::TempFilename(webrtc::test::OutputPath(), "ut"); LogSinkImpl stream; - EXPECT_TRUE(stream.Open(path.pathname(), "wb", nullptr)); + EXPECT_TRUE(stream.Open(path, "wb", nullptr)); stream.DisableBuffering(); LogMessage::AddLogToStream(&stream, LS_SENSITIVE); @@ -157,7 +156,7 @@ TEST(LogTest, MAYBE_Perf) { LogMessage::RemoveLogToStream(&stream); stream.Close(); - Filesystem::DeleteFile(path); + webrtc::test::RemoveFile(path); LOG(LS_INFO) << "Average log time: " << TimeDiff(finish, start) << " ms"; } diff --git a/webrtc/rtc_base/optionsfile_unittest.cc b/webrtc/rtc_base/optionsfile_unittest.cc index 525c317a15..b4f14dbfa6 100644 --- a/webrtc/rtc_base/optionsfile_unittest.cc +++ b/webrtc/rtc_base/optionsfile_unittest.cc @@ -11,10 +11,9 @@ #include #include "webrtc/rtc_base/checks.h" -#include "webrtc/rtc_base/fileutils.h" #include "webrtc/rtc_base/gunit.h" #include "webrtc/rtc_base/optionsfile.h" -#include "webrtc/rtc_base/pathutils.h" +#include "webrtc/test/testsupport/fileutils.h" namespace rtc { @@ -46,14 +45,13 @@ static int kZero = 0; class MAYBE_OptionsFileTest : public testing::Test { public: MAYBE_OptionsFileTest() { - Pathname dir; - RTC_CHECK(Filesystem::GetTemporaryFolder(dir, true, nullptr)); - test_file_ = Filesystem::TempFilename(dir, ".testfile"); + test_file_ = + webrtc::test::TempFilename(webrtc::test::OutputPath(), ".testfile"); OpenStore(); } ~MAYBE_OptionsFileTest() override { - remove(test_file_.c_str()); + webrtc::test::RemoveFile(test_file_); } protected: diff --git a/webrtc/rtc_base/unixfilesystem.cc b/webrtc/rtc_base/unixfilesystem.cc index 345c602bf8..ebf20c7c99 100644 --- a/webrtc/rtc_base/unixfilesystem.cc +++ b/webrtc/rtc_base/unixfilesystem.cc @@ -51,42 +51,9 @@ #include "webrtc/rtc_base/stream.h" #include "webrtc/rtc_base/stringutils.h" -#if defined(WEBRTC_MAC) -// Defined in applefilesystem.mm. No header file to discourage use -// elsewhere; other places should use GetApp{Data,Temp}Folder() in -// this file. Don't copy/paste. I mean it. -char* AppleDataDirectory(); -char* AppleTempDirectory(); -void AppleAppName(rtc::Pathname* path); -#endif - namespace rtc { -#if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_MAC) -char* UnixFilesystem::app_temp_path_ = nullptr; -#else -char* UnixFilesystem::provided_app_data_folder_ = nullptr; -char* UnixFilesystem::provided_app_temp_folder_ = nullptr; - -void UnixFilesystem::SetAppDataFolder(const std::string& folder) { - delete [] provided_app_data_folder_; - provided_app_data_folder_ = CopyString(folder); -} - -void UnixFilesystem::SetAppTempFolder(const std::string& folder) { - delete [] provided_app_temp_folder_; - provided_app_temp_folder_ = CopyString(folder); -} -#endif - -UnixFilesystem::UnixFilesystem() { -#if defined(WEBRTC_MAC) - if (!provided_app_data_folder_) - provided_app_data_folder_ = AppleDataDirectory(); - if (!provided_app_temp_folder_) - provided_app_temp_folder_ = AppleTempDirectory(); -#endif -} +UnixFilesystem::UnixFilesystem() {} UnixFilesystem::~UnixFilesystem() {} @@ -133,31 +100,6 @@ bool UnixFilesystem::DeleteFile(const Pathname &filename) { return ::unlink(filename.pathname().c_str()) == 0; } -bool UnixFilesystem::GetTemporaryFolder(Pathname &pathname, bool create, - const std::string *append) { -#if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC) - RTC_DCHECK(provided_app_temp_folder_ != nullptr); - pathname.SetPathname(provided_app_temp_folder_, ""); -#else - if (const char* tmpdir = getenv("TMPDIR")) { - pathname.SetPathname(tmpdir, ""); - } else if (const char* tmp = getenv("TMP")) { - pathname.SetPathname(tmp, ""); - } else { -#ifdef P_tmpdir - pathname.SetPathname(P_tmpdir, ""); -#else // !P_tmpdir - pathname.SetPathname("/tmp/", ""); -#endif // !P_tmpdir - } -#endif // defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) - if (append) { - RTC_DCHECK(!append->empty()); - pathname.AppendFolder(*append); - } - return !create || CreateFolder(pathname); -} - std::string UnixFilesystem::TempFilename(const Pathname &dir, const std::string &prefix) { int len = dir.pathname().size() + prefix.size() + 2 + 6; diff --git a/webrtc/rtc_base/unixfilesystem.h b/webrtc/rtc_base/unixfilesystem.h index 0ed36b4334..7270b83778 100644 --- a/webrtc/rtc_base/unixfilesystem.h +++ b/webrtc/rtc_base/unixfilesystem.h @@ -22,18 +22,6 @@ class UnixFilesystem : public FilesystemInterface { UnixFilesystem(); ~UnixFilesystem() override; -#if defined(WEBRTC_ANDROID) || defined(WEBRTC_MAC) - // Android does not have a native code API to fetch the app data or temp - // folders. That needs to be passed into this class from Java. Similarly, iOS - // only supports an Objective-C API for fetching the folder locations, so that - // needs to be passed in here from Objective-C. Or at least that used to be - // the case; now the ctor will do the work if necessary and possible. - // TODO(fischman): add an Android version that uses JNI and drop the - // SetApp*Folder() APIs once external users stop using them. - static void SetAppDataFolder(const std::string& folder); - static void SetAppTempFolder(const std::string& folder); -#endif - // This will attempt to delete the file located at filename. // It will fail with VERIY if you pass it a non-existant file, or a directory. bool DeleteFile(const Pathname& filename) override; @@ -65,12 +53,6 @@ class UnixFilesystem : public FilesystemInterface { std::string TempFilename(const Pathname& dir, const std::string& prefix) override; - // A folder appropriate for storing temporary files (Contents are - // automatically deleted when the program exists) - bool GetTemporaryFolder(Pathname& path, - bool create, - const std::string* append) override; - bool GetFileSize(const Pathname& path, size_t* size) override; private: diff --git a/webrtc/rtc_base/win32filesystem.cc b/webrtc/rtc_base/win32filesystem.cc index 973280ebe9..45441855e9 100644 --- a/webrtc/rtc_base/win32filesystem.cc +++ b/webrtc/rtc_base/win32filesystem.cc @@ -72,29 +72,6 @@ bool Win32Filesystem::DeleteFile(const Pathname &filename) { return ::DeleteFile(ToUtf16(filename.pathname()).c_str()) != 0; } -bool Win32Filesystem::GetTemporaryFolder(Pathname &pathname, bool create, - const std::string *append) { - wchar_t buffer[MAX_PATH + 1]; - if (!::GetTempPath(arraysize(buffer), buffer)) - return false; - if (!IsCurrentProcessLowIntegrity() && - !::GetLongPathName(buffer, buffer, arraysize(buffer))) - return false; - size_t len = strlen(buffer); - if ((len > 0) && (buffer[len-1] != '\\')) { - len += strcpyn(buffer + len, arraysize(buffer) - len, L"\\"); - } - if (len >= arraysize(buffer) - 1) - return false; - pathname.clear(); - pathname.SetFolder(ToUtf8(buffer)); - if (append != nullptr) { - RTC_DCHECK(!append->empty()); - pathname.AppendFolder(*append); - } - return !create || CreateFolder(pathname); -} - std::string Win32Filesystem::TempFilename(const Pathname &dir, const std::string &prefix) { wchar_t filename[MAX_PATH]; diff --git a/webrtc/rtc_base/win32filesystem.h b/webrtc/rtc_base/win32filesystem.h index f7a6ab4c84..9d420331e5 100644 --- a/webrtc/rtc_base/win32filesystem.h +++ b/webrtc/rtc_base/win32filesystem.h @@ -51,12 +51,6 @@ class Win32Filesystem : public FilesystemInterface { const std::string& prefix) override; bool GetFileSize(const Pathname& path, size_t* size) override; - - // A folder appropriate for storing temporary files (Contents are - // automatically deleted when the program exists) - bool GetTemporaryFolder(Pathname& path, - bool create, - const std::string* append) override; }; } // namespace rtc