Support setting just the Java Context for JUnit tests.
JUnit/Robolectric tests run on the host without native code and so can't
set the application context the usual way. Provide a test-only method to
set only the Java-side context for this purpose.
Move the assertion about not changing the set context to
initApplicationContext because the JUnit tests will use a different
mock context for each test case.
BUG=552419
R=dgn@chromium.org
Review URL: https://codereview.chromium.org/1474723002
Cr-Commit-Position: refs/heads/master@{#361350}
CrOS-Libchrome-Original-Commit: 62e9dc641bd5e3967e59165e7e41f0a897ce9c0f
diff --git a/base/android/java/src/org/chromium/base/ContextUtils.java b/base/android/java/src/org/chromium/base/ContextUtils.java
index 266e8eb..51adcff 100644
--- a/base/android/java/src/org/chromium/base/ContextUtils.java
+++ b/base/android/java/src/org/chromium/base/ContextUtils.java
@@ -41,14 +41,22 @@
* both sides.
*/
public static void initApplicationContext(Context appContext) {
+ assert appContext != null;
+ assert sApplicationContext == null || sApplicationContext == appContext;
initJavaSideApplicationContext(appContext);
nativeInitNativeSideApplicationContext(appContext);
}
+ /**
+ * JUnit Robolectric tests run without native code; allow them to set just the Java-side
+ * context. Do not use in configurations that actually run on Android!
+ */
+ public static void initApplicationContextForJUnitTests(Context appContext) {
+ initJavaSideApplicationContext(appContext);
+ }
+
@CalledByNative
private static void initJavaSideApplicationContext(Context appContext) {
- assert appContext != null;
- assert sApplicationContext == null || sApplicationContext == appContext;
sApplicationContext = appContext;
}