| Index: mojo/common/test/test_support_impl.cc
|
| diff --git a/mojo/common/test/test_support_impl.cc b/mojo/common/test/test_support_impl.cc
|
| index 54c3376ef7dc0b9ea12bddfa77a49c9fd66a74fa..ce9e7ac5bbed1299fff606c144bb2c5751496a12 100644
|
| --- a/mojo/common/test/test_support_impl.cc
|
| +++ b/mojo/common/test/test_support_impl.cc
|
| @@ -4,10 +4,38 @@
|
|
|
| #include "mojo/common/test/test_support_impl.h"
|
|
|
| +#include <stdlib.h>
|
| +#include <string.h>
|
| +
|
| +#include "base/file_util.h"
|
| +#include "base/files/file_enumerator.h"
|
| +#include "base/files/file_path.h"
|
| +#include "base/path_service.h"
|
| +#include "base/strings/string_split.h"
|
| +#include "base/strings/string_util.h"
|
| #include "base/test/perf_log.h"
|
|
|
| namespace mojo {
|
| namespace test {
|
| +namespace {
|
| +
|
| +base::FilePath ResolveSourceRootRelativePath(const char* relative_path) {
|
| + base::FilePath path;
|
| + if (!PathService::Get(base::DIR_SOURCE_ROOT, &path))
|
| + return base::FilePath();
|
| +
|
| + std::vector<std::string> components;
|
| + base::SplitString(relative_path, '/', &components);
|
| +
|
| + for (size_t i = 0; i < components.size(); ++i) {
|
| + if (!components[i].empty())
|
| + path = path.AppendASCII(components[i]);
|
| + }
|
| +
|
| + return path;
|
| +}
|
| +
|
| +} // namespace
|
|
|
| TestSupportImpl::TestSupportImpl() {
|
| }
|
| @@ -21,5 +49,24 @@ void TestSupportImpl::LogPerfResult(const char* test_name,
|
| base::LogPerfResult(test_name, value, units);
|
| }
|
|
|
| +FILE* TestSupportImpl::OpenSourceRootRelativeFile(const char* relative_path) {
|
| + return base::OpenFile(ResolveSourceRootRelativePath(relative_path), "rb");
|
| +}
|
| +
|
| +char** TestSupportImpl::EnumerateSourceRootRelativeDirectory(
|
| + const char* relative_path) {
|
| + std::vector<std::string> names;
|
| + base::FileEnumerator e(ResolveSourceRootRelativePath(relative_path), false,
|
| + base::FileEnumerator::FILES);
|
| + for (base::FilePath name = e.Next(); !name.empty(); name = e.Next())
|
| + names.push_back(name.BaseName().AsUTF8Unsafe());
|
| +
|
| + // |names.size() + 1| for null terminator.
|
| + char** rv = static_cast<char**>(calloc(names.size() + 1, sizeof(char*)));
|
| + for (size_t i = 0; i < names.size(); ++i)
|
| + rv[i] = base::strdup(names[i].c_str());
|
| + return rv;
|
| +}
|
| +
|
| } // namespace test
|
| } // namespace mojo
|
|
|