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;
     }