diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-01 18:24:29 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-01 18:24:29 +0000 |
commit | 1eebc07cabc2c2d4e328a8f34b51c9d990ed6484 (patch) | |
tree | e5da214c38788171fb3271a255ce18645aeba5c9 /mojo/common | |
parent | 2ea231e82b3a7179e80ac79dcc115d9072e29e1f (diff) | |
download | chromium_src-1eebc07cabc2c2d4e328a8f34b51c9d990ed6484.zip chromium_src-1eebc07cabc2c2d4e328a8f34b51c9d990ed6484.tar.gz chromium_src-1eebc07cabc2c2d4e328a8f34b51c9d990ed6484.tar.bz2 |
Validate MessageHeader before using
On validation error, mimic a MessageReceiver returning false. Make that trigger the error state of Connector.
BUG=357885
Review URL: https://codereview.chromium.org/229683005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267588 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo/common')
-rw-r--r-- | mojo/common/test/test_support_impl.cc | 47 | ||||
-rw-r--r-- | mojo/common/test/test_support_impl.h | 3 |
2 files changed, 50 insertions, 0 deletions
diff --git a/mojo/common/test/test_support_impl.cc b/mojo/common/test/test_support_impl.cc index 54c3376..ce9e7ac 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 diff --git a/mojo/common/test/test_support_impl.h b/mojo/common/test/test_support_impl.h index ca3f58a..c752b57 100644 --- a/mojo/common/test/test_support_impl.h +++ b/mojo/common/test/test_support_impl.h @@ -19,6 +19,9 @@ class TestSupportImpl : public TestSupport { virtual void LogPerfResult(const char* test_name, double value, const char* units) OVERRIDE; + virtual FILE* OpenSourceRootRelativeFile(const char* relative_path) OVERRIDE; + virtual char** EnumerateSourceRootRelativeDirectory(const char* relative_path) + OVERRIDE; private: DISALLOW_COPY_AND_ASSIGN(TestSupportImpl); |