| Index: chrome/test/base/chrome_test_suite.cc
|
| diff --git a/chrome/test/base/chrome_test_suite.cc b/chrome/test/base/chrome_test_suite.cc
|
| index 5ef78020845b05c91a954479e3fb12e0e82f3c41..72b1fba408185563c87bf2acd36b13bd5c56bae4 100644
|
| --- a/chrome/test/base/chrome_test_suite.cc
|
| +++ b/chrome/test/base/chrome_test_suite.cc
|
| @@ -4,6 +4,11 @@
|
|
|
| #include "chrome/test/base/chrome_test_suite.h"
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +#include <stdio.h>
|
| +#include <unistd.h>
|
| +#endif
|
| +
|
| #include "base/command_line.h"
|
| #include "base/file_util.h"
|
| #include "base/memory/ref_counted.h"
|
| @@ -48,6 +53,19 @@ void RemoveSharedMemoryFile(const std::string& filename) {
|
| #endif
|
| }
|
|
|
| +bool IsCrosPythonProcess() {
|
| +#if defined(OS_CHROMEOS)
|
| + char buf[80];
|
| + int num_read = readlink("/proc/self/exe", buf, sizeof(buf) - 1);
|
| + if (num_read == -1)
|
| + return false;
|
| + buf[num_read] = 0;
|
| + const char kPythonPrefix[] = "/python";
|
| + return !strncmp(strrchr(buf, '/'), kPythonPrefix, sizeof(kPythonPrefix) - 1);
|
| +#endif // defined(OS_CHROMEOS)
|
| + return false;
|
| +}
|
| +
|
| // In many cases it may be not obvious that a test makes a real DNS lookup.
|
| // We generally don't want to rely on external DNS servers for our tests,
|
| // so this host resolver procedure catches external queries and returns a failed
|
| @@ -171,6 +189,12 @@ void ChromeTestSuite::Initialize() {
|
| PathService::Override(base::DIR_MODULE, browser_dir_);
|
| }
|
|
|
| + // Disable external libraries load if we are under python process in
|
| + // ChromeOS. That means we are autotest and, if ASAN is used,
|
| + // external libraries load crashes.
|
| + content::ContentTestSuiteBase::set_external_libraries_enabled(
|
| + !IsCrosPythonProcess());
|
| +
|
| // Initialize after overriding paths as some content paths depend on correct
|
| // values for DIR_EXE and DIR_MODULE.
|
| content::ContentTestSuiteBase::Initialize();
|
|
|