summaryrefslogtreecommitdiffstats
path: root/mojo/common
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-01 18:24:29 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-01 18:24:29 +0000
commit1eebc07cabc2c2d4e328a8f34b51c9d990ed6484 (patch)
treee5da214c38788171fb3271a255ce18645aeba5c9 /mojo/common
parent2ea231e82b3a7179e80ac79dcc115d9072e29e1f (diff)
downloadchromium_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.cc47
-rw-r--r--mojo/common/test/test_support_impl.h3
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);