| Index: build/android/incremental_install/java/org/chromium/incrementalinstall/BootstrapApplication.java
|
| diff --git a/build/android/incremental_install/java/org/chromium/incrementalinstall/BootstrapApplication.java b/build/android/incremental_install/java/org/chromium/incrementalinstall/BootstrapApplication.java
|
| index 67c60e5e14e1eefa256ba9546ca2d791f6ee1a11..7c9bcca2ca1757405196b7a48b5cb2075b9c7a8c 100644
|
| --- a/build/android/incremental_install/java/org/chromium/incrementalinstall/BootstrapApplication.java
|
| +++ b/build/android/incremental_install/java/org/chromium/incrementalinstall/BootstrapApplication.java
|
| @@ -118,7 +118,7 @@ public final class BootstrapApplication extends Application {
|
| ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(),
|
| PackageManager.GET_META_DATA);
|
| String value = appInfo.metaData.getString(key);
|
| - if (!value.contains(".")) {
|
| + if (value != null && !value.contains(".")) {
|
| value = getPackageName() + "." + value;
|
| }
|
| return value;
|
| @@ -129,11 +129,22 @@ public final class BootstrapApplication extends Application {
|
| */
|
| private void initInstrumentation(String realInstrumentationName)
|
| throws ReflectiveOperationException {
|
| + Instrumentation oldInstrumentation =
|
| + (Instrumentation) Reflect.getField(mActivityThread, "mInstrumentation");
|
| + if (realInstrumentationName == null) {
|
| + // This is the case when an incremental app is used as a target for an instrumentation
|
| + // test. In this case, ActivityThread can instantiate the proper class just fine since
|
| + // it exists within the test apk (as opposed to the incremental apk-under-test).
|
| + Log.i(TAG, "Running with external instrumentation");
|
| + mRealInstrumentation = oldInstrumentation;
|
| + return;
|
| + }
|
| + // For unit tests, the instrumentation class is replaced in the manifest by a build step
|
| + // because ActivityThread tries to instantiate it before we get a chance to load the
|
| + // incremental dex files.
|
| Log.i(TAG, "Instantiating instrumentation " + realInstrumentationName);
|
| mRealInstrumentation = (Instrumentation) Reflect.newInstance(
|
| Class.forName(realInstrumentationName));
|
| - Instrumentation oldInstrumentation =
|
| - (Instrumentation) Reflect.getField(mActivityThread, "mInstrumentation");
|
|
|
| // Initialize the fields that are set by Instrumentation.init().
|
| String[] initFields = {"mThread", "mMessageQueue", "mInstrContext", "mAppContext",
|
|
|