aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Chiu <chiujason@google.com>2021-03-11 18:46:38 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-03-11 18:46:38 +0000
commit7813f990d2b4d97565b992998a79c8cb5bea1a7d (patch)
treef579791adde597db8116ab2452410ba84fcb5dce
parent2d531ffd4ee12f999a65ab345d8c6877a72dd790 (diff)
parent682903755755e0275a9c30254df4e554eaaf48a3 (diff)
downloadrobolectric-shadows-7813f990d2b4d97565b992998a79c8cb5bea1a7d.tar.gz
Fix broken Robolectric caused by ConfigurationController am: 6829037557
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/robolectric-shadows/+/13825827 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I73b164f842d318cccc0a1953ad4ec79b50261a17
-rw-r--r--robolectric/src/main/java/org/robolectric/android/internal/ParallelUniverse.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/robolectric/src/main/java/org/robolectric/android/internal/ParallelUniverse.java b/robolectric/src/main/java/org/robolectric/android/internal/ParallelUniverse.java
index 67aa9732b..e74a03cdb 100644
--- a/robolectric/src/main/java/org/robolectric/android/internal/ParallelUniverse.java
+++ b/robolectric/src/main/java/org/robolectric/android/internal/ParallelUniverse.java
@@ -182,7 +182,23 @@ public class ParallelUniverse implements ParallelUniverseInterface {
ReflectionHelpers.loadClass(
getClass().getClassLoader(), ShadowContextImpl.CLASS_NAME);
- ReflectionHelpers.setField(activityThread, "mCompatConfiguration", configuration);
+ if (sdkConfig.getApiLevel() < Build.VERSION_CODES.S) {
+ ReflectionHelpers.setField(activityThread, "mCompatConfiguration", configuration);
+ } else {
+ Class<?> activityThreadInternalClass =
+ ReflectionHelpers.loadClass(
+ getClass().getClassLoader(), "android.app.ActivityThreadInternal");
+ Class<?> configurationControllerClass =
+ ReflectionHelpers.loadClass(
+ getClass().getClassLoader(), "android.app.ConfigurationController");
+ Object configController = ReflectionHelpers.callConstructor(configurationControllerClass,
+ from(activityThreadInternalClass, activityThread));
+ ReflectionHelpers.callInstanceMethod(configController, "setCompatConfiguration",
+ from(Configuration.class, configuration));
+ configuration = ReflectionHelpers.callInstanceMethod(configController,
+ "getCompatConfiguration");
+ ReflectionHelpers.setField(activityThread, "mConfigurationController", configController);
+ }
ReflectionHelpers
.setStaticField(ActivityThread.class, "sMainThreadHandler", new Handler(Looper.myLooper()));
@@ -230,7 +246,7 @@ public class ParallelUniverse implements ParallelUniverseInterface {
ReflectionHelpers.callInstanceMethod(
contextImpl,
"setOuterContext",
- ReflectionHelpers.ClassParameter.from(Context.class, application));
+ from(Context.class, application));
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}