Index: base/test/test_support_android.cc |
diff --git a/base/test/test_support_android.cc b/base/test/test_support_android.cc |
index f8441bd1ba5f9d75fe8e52258c6d339f24763514..4507ae4647f34dde5b3f7393234398359efbe3b6 100644 |
--- a/base/test/test_support_android.cc |
+++ b/base/test/test_support_android.cc |
@@ -18,6 +18,8 @@ |
namespace { |
+base::FilePath* g_test_data_dir = nullptr; |
+ |
struct RunState { |
RunState(base::MessagePump::Delegate* delegate, int run_depth) |
: delegate(delegate), |
@@ -132,13 +134,14 @@ std::unique_ptr<base::MessagePump> CreateMessagePumpForUIStub() { |
return std::unique_ptr<base::MessagePump>(new MessagePumpForUIStub()); |
}; |
-// Provides the test path for DIR_MODULE and DIR_ANDROID_APP_DATA. |
+// Provides the test path for DIR_SOURCE_ROOT and DIR_ANDROID_APP_DATA. |
bool GetTestProviderPath(int key, base::FilePath* result) { |
switch (key) { |
- case base::DIR_ANDROID_APP_DATA: { |
- // For tests, app data is put in external storage. |
- return base::android::GetExternalStorageDirectory(result); |
- } |
+ case base::DIR_ANDROID_APP_DATA: |
+ case base::DIR_SOURCE_ROOT: |
+ CHECK(g_test_data_dir != nullptr); |
+ *result = *g_test_data_dir; |
+ return true; |
default: |
return false; |
} |
@@ -166,8 +169,13 @@ void InitAndroidTestLogging() { |
false); // Tick count |
} |
-void InitAndroidTestPaths() { |
- InitPathProvider(DIR_MODULE); |
+void InitAndroidTestPaths(const FilePath& test_data_dir) { |
+ if (g_test_data_dir) { |
+ CHECK(test_data_dir == *g_test_data_dir); |
+ return; |
+ } |
+ g_test_data_dir = new FilePath(test_data_dir); |
+ InitPathProvider(DIR_SOURCE_ROOT); |
InitPathProvider(DIR_ANDROID_APP_DATA); |
} |
@@ -179,7 +187,6 @@ void InitAndroidTestMessageLoop() { |
void InitAndroidTest() { |
if (!base::AndroidIsChildProcess()) { |
InitAndroidTestLogging(); |
- InitAndroidTestPaths(); |
} |
InitAndroidTestMessageLoop(); |
} |