Index: webrtc/test/testsupport/fileutils.cc |
diff --git a/webrtc/test/testsupport/fileutils.cc b/webrtc/test/testsupport/fileutils.cc |
index 02ef06580bbcec4203d46ac1c23f42d4e279ebd6..aab01a5220d3fda701540104c8835e372aae1d05 100644 |
--- a/webrtc/test/testsupport/fileutils.cc |
+++ b/webrtc/test/testsupport/fileutils.cc |
@@ -40,6 +40,7 @@ |
#include <memory> |
+#include "webrtc/base/checks.h" |
#include "webrtc/typedefs.h" // For architecture defines |
namespace webrtc { |
@@ -126,7 +127,7 @@ std::string WorkingDir() { |
return kRootDirName; |
} |
-#else // WEBRTC_ANDROID |
+#else // WEBRTC_ANDROID |
std::string ProjectRootPath() { |
#if defined(WEBRTC_IOS) |
@@ -232,6 +233,26 @@ bool CreateDir(const std::string& directory_name) { |
return true; |
} |
+size_t RemoveDirRecursively(const rtc::Pathname& dir) { |
+ if (!DirExists(dir.pathname())) { return false; } |
+ rtc::DirectoryIterator it; |
+ it.Iterate(dir); |
+ size_t deleted_entries = 0; |
+ do { |
+ const std::string entry_name = it.Name(); |
+ if (entry_name == "." || entry_name == "..") { continue; } |
+ |
+ const rtc::Pathname entry = it.Path(); |
+ if (it.IsDirectory()) { |
+ deleted_entries += RemoveDirRecursively(entry); |
+ } else { |
+ if (RemoveFile(entry.pathname())) { deleted_entries++; } |
+ } |
+ } while (it.Next()); |
+ RemoveDir(dir.pathname()); |
+ return deleted_entries + 1; |
+} |
+ |
bool RemoveDir(const std::string& directory_name) { |
#ifdef WIN32 |
return RemoveDirectoryA(directory_name.c_str()) != FALSE; |