aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-15 21:43:07 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-15 21:43:07 +0000
commit754d79a3be0953b8313dd42bb0c39f69c0ec2303 (patch)
tree379110a63dc18cab24c0f5f3f2f99401c60b8b5c
parentd578ccb69405201cb55aa517516510a877c567e8 (diff)
parente7aa26feeefbae9ab7e1ffe7fd5de6ec072dd988 (diff)
downloadrobolectric-shadows-android12-mainline-tzdata3-release.tar.gz
Change-Id: I6c9435af1c0ed3c4c5d793cbc9e85a5d24732401
-rw-r--r--Android.bp9
-rw-r--r--OWNERS4
-rw-r--r--annotations/Android.bp1
-rw-r--r--junit/Android.bp6
-rw-r--r--processor/Android.bp6
-rw-r--r--processor/sdks.txt1
-rw-r--r--report-internal.mk3
-rw-r--r--resources/src/main/java/org/robolectric/res/android/ByteBucketArray.java6
-rw-r--r--robolectric/Android.bp12
-rw-r--r--robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java31
-rw-r--r--robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java4
-rw-r--r--robolectric/src/main/java/org/robolectric/internal/SdkConfig.java3
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java48
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java66
-rw-r--r--robotest-internal.mk10
-rw-r--r--run_robolectric_module_tests.mk3
-rw-r--r--run_robotests.mk6
-rw-r--r--sandbox/Android.bp12
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java8
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java14
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java7
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java2
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java93
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java29
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java8
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java10
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java10
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java7
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java20
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java4
-rw-r--r--shadows/httpclient/Android.bp10
-rw-r--r--shadows/supportv4/Android.bp6
32 files changed, 158 insertions, 301 deletions
diff --git a/Android.bp b/Android.bp
index 774c382db..112833b57 100644
--- a/Android.bp
+++ b/Android.bp
@@ -99,12 +99,13 @@ java_device_for_host {
"icu4j-icudata-jarjar",
"icu4j-icutzdata-jarjar",
"ims-common",
+ "android.test.base_static",
"libphonenumber-platform",
"okhttp-for-host",
"services",
"services.accessibility",
"telephony-common",
- "android.car",
+
],
}
@@ -154,11 +155,11 @@ java_library_host {
"Robolectric_sandbox",
"Robolectric_junit",
"Robolectric_utils",
- "asm-9.2",
+ "asm-6.0", // if upgrading to ASM 7.0+, unset my_require_v53_or_lower_class_files in robotest-internal.mk (requires robolectric 4.0.x, see b/135459087)
"junit",
- "asm-tree-9.2",
+ "asm-tree-6.0",
"guava",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"bouncycastle-unbundled",
"robolectric-sqlite4java-0.282",
"hamcrest",
diff --git a/OWNERS b/OWNERS
index 2011246ec..dc17b8156 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,6 +1,8 @@
brettchabot@google.com
-hoisie@google.com
+christianw@google.com
+jongerrish@google.com
jplemieux@google.com
+justinklaassen@google.com
leechou@google.com
yukl@google.com
tmfang@google.com \ No newline at end of file
diff --git a/annotations/Android.bp b/annotations/Android.bp
index 17743c885..bc8fa9fe8 100644
--- a/annotations/Android.bp
+++ b/annotations/Android.bp
@@ -19,5 +19,4 @@ java_library_host {
],
libs: ["robolectric-host-android_all"],
srcs: ["src/main/java/**/*.java"],
- visibility: ["//visibility:public"],
}
diff --git a/junit/Android.bp b/junit/Android.bp
index 38ab52978..65f12adf9 100644
--- a/junit/Android.bp
+++ b/junit/Android.bp
@@ -18,12 +18,12 @@ java_library_host {
"Robolectric_shadowapi",
"Robolectric_sandbox",
"Robolectric_utils",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"guava",
- "asm-tree-9.2",
+ "asm-tree-6.0",
"hamcrest",
"junit",
- "asm-9.2",
+ "asm-6.0",
"jsr305",
],
srcs: ["src/main/java/**/*.java"],
diff --git a/processor/Android.bp b/processor/Android.bp
index 043ef198c..fdf2dc618 100644
--- a/processor/Android.bp
+++ b/processor/Android.bp
@@ -22,11 +22,11 @@ java_plugin {
static_libs: [
"Robolectric_annotations",
"Robolectric_shadowapi",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"guava",
- "asm-tree-9.2",
+ "asm-tree-6.0",
"gson-prebuilt-jar",
- "asm-9.2",
+ "asm-6.0",
"jsr305",
],
diff --git a/processor/sdks.txt b/processor/sdks.txt
index 5444e46e9..b9931ca3d 100644
--- a/processor/sdks.txt
+++ b/processor/sdks.txt
@@ -13,4 +13,3 @@ prebuilts/misc/common/robolectric/android-all/android-all-9-robolectric-4913185-
prebuilts/misc/common/robolectric/android-all/android-all-9plus-robolectric-5616371.jar
prebuilts/misc/common/robolectric/android-all/android-all-10-robolectric-5803371.jar
prebuilts/misc/common/robolectric/android-all/android-all-R-beta2-robolectric-6625208.jar
-prebuilts/misc/common/robolectric/android-all/android-all-S-beta3-robolectric-7541949.jar
diff --git a/report-internal.mk b/report-internal.mk
index 4b790c20c..a12479c97 100644
--- a/report-internal.mk
+++ b/report-internal.mk
@@ -49,9 +49,6 @@ $(call dist-for-goals, $(my_report_target), \
$(my_coverage_output_zip):robotests-coverage/$(LOCAL_MODULE)/robolectric-html-coverage.zip \
$(my_coverage_output):robotests-coverage/$(LOCAL_MODULE)/robolectric-coverage.xml)
-ALL_TARGETS.$(my_coverage_output_zip).META_LIC:=$(module_license_metadata)
-ALL_TARGETS.$(my_coverage_output).META_LIC:=$(module_license_metadata)
-
# Running the coverage will always generate the report.
$(my_target): $(my_coverage_output)
diff --git a/resources/src/main/java/org/robolectric/res/android/ByteBucketArray.java b/resources/src/main/java/org/robolectric/res/android/ByteBucketArray.java
index 0636e1921..209fb1ee8 100644
--- a/resources/src/main/java/org/robolectric/res/android/ByteBucketArray.java
+++ b/resources/src/main/java/org/robolectric/res/android/ByteBucketArray.java
@@ -24,7 +24,7 @@ public abstract class ByteBucketArray<T> {
}
// byte bucketIndex = static_cast<byte>(index) >> 4;
- byte bucketIndex = (byte) (Byte.toUnsignedInt((byte) index) >> 4);
+ byte bucketIndex = (byte) (index >> 4);
T[] bucket = (T[]) mBuckets[bucketIndex];
if (bucket == null) {
return mDefault;
@@ -38,7 +38,7 @@ public abstract class ByteBucketArray<T> {
// (uint32_t) index, (uint32_t) size());
// uint8_t bucketIndex = static_cast<uint8_t>(index) >> 4;
- byte bucketIndex = (byte) (Byte.toUnsignedInt((byte) index) >> 4);
+ byte bucketIndex = (byte) (((byte) index) >> 4);
Object[] bucket = mBuckets[bucketIndex];
if (bucket == null) {
bucket = mBuckets[bucketIndex] = new Object[BUCKET_SIZE];
@@ -60,7 +60,7 @@ public abstract class ByteBucketArray<T> {
}
// editItemAt(index) = value;
- byte bucketIndex = (byte) (Byte.toUnsignedInt((byte) index) >> 4);
+ byte bucketIndex = (byte) (((byte) index) >> 4);
Object[] bucket = mBuckets[bucketIndex];
if (bucket == null) {
bucket = mBuckets[bucketIndex] = new Object[BUCKET_SIZE];
diff --git a/robolectric/Android.bp b/robolectric/Android.bp
index ab08b47ff..90c413da9 100644
--- a/robolectric/Android.bp
+++ b/robolectric/Android.bp
@@ -25,13 +25,13 @@ java_library_host {
"robolectric-host-androidx-test-monitor",
"robolectric-maven-ant-tasks-2.1.3",
"bouncycastle-unbundled",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"guava",
"robolectric-xstream-1.4.8",
- "asm-tree-9.2",
+ "asm-tree-6.0",
"junit",
"robolectric-ant-1.8.0",
- "asm-9.2",
+ "asm-6.0",
"jsr305",
"robolectric-host-android_all",
],
@@ -70,17 +70,17 @@ java_test_host {
"bouncycastle-unbundled",
"hamcrest",
"robolectric-sqlite4java-0.282",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"robolectric-diffutils-1.3.0",
"guava",
"objenesis",
"robolectric-xstream-1.4.8",
- "asm-tree-9.2",
+ "asm-tree-6.0",
"junit",
"icu4j",
"truth-prebuilt",
"robolectric-ant-1.8.0",
- "asm-9.2",
+ "asm-6.0",
"jsr305",
],
libs: ["robolectric-host-android_all"],
diff --git a/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java b/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java
index c009fb0ec..51ea2a779 100644
--- a/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java
+++ b/robolectric/src/main/java/org/robolectric/android/AndroidInterceptors.java
@@ -9,9 +9,6 @@ import android.content.Context;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Locale;
@@ -35,7 +32,6 @@ public class AndroidInterceptors {
new SystemArrayCopyInterceptor(),
new LocaleAdjustLanguageCodeInterceptor(),
new SystemLogInterceptor(),
- new ReferenceRefersToInterceptor(),
new NoOpInterceptor()
);
}
@@ -242,33 +238,6 @@ public class AndroidInterceptors {
}
}
- /** AndroidInterceptor for Reference.refersTo. */
- public static class ReferenceRefersToInterceptor extends Interceptor {
- private static final String METHOD = "refersTo";
-
- public ReferenceRefersToInterceptor() {
- super(
- new MethodRef(WeakReference.class.getName(), METHOD),
- new MethodRef(SoftReference.class.getName(), METHOD));
- }
-
- static boolean refersTo(Reference ref, Object obj) {
- return ref.get() == obj;
- }
-
- @Override
- public Function<Object, Object> handle(MethodSignature methodSignature) {
- return (theClass, value, params) -> refersTo((Reference) value, params[0]);
- }
-
- @Override
- public MethodHandle getMethodHandle(String methodName, MethodType type)
- throws NoSuchMethodException, IllegalAccessException {
- return lookup.findStatic(getClass(), METHOD,
- methodType(boolean.class, Reference.class, Object.class));
- }
- }
-
public static class NoOpInterceptor extends Interceptor {
public NoOpInterceptor() {
super(
diff --git a/robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java b/robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java
index 69afa6458..c7b986e46 100644
--- a/robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java
+++ b/robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java
@@ -104,10 +104,6 @@ public class AndroidConfigurer {
// This results in an error where two __robo_data__ fields get added to the same object.
builder.doNotInstrumentPackage("androidx.room.migration");
builder.doNotInstrumentPackage("androidx.test");
- // Robolectric instrumentation causes issues with
- // androidx.lifecycle.viewmodel.MutableCreationExtras and androidx.lifecycle.ViewModelProvider
- // constructor.
- builder.doNotInstrumentPackage("androidx.lifecycle");
builder.doNotInstrumentPackage("android.arch.persistence.room.migration");
builder.doNotInstrumentPackage("android.support.test");
diff --git a/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java b/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java
index 901d518f4..d2cbf145a 100644
--- a/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java
+++ b/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java
@@ -33,8 +33,7 @@ public class SdkConfig implements Comparable<SdkConfig> {
// BEGIN-INTERNAL
// TODO: Update jar with final R release.
addSdk(Build.VERSION_CODES.R, "R-beta2", "6625208", "REL");
- addSdk(Build.VERSION_CODES.S, "S-beta3", "7541949", "REL");
- addSdk(Build.VERSION_CODES.CUR_DEVELOPMENT, "current", "r0", "ZZZ");
+ addSdk(Build.VERSION_CODES.S, "S", "r0", "S");
// END-INTERNAL
}
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java
index 2734d6026..42e9f6162 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java
@@ -2,15 +2,12 @@ package org.robolectric.shadows;
import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
-import static android.os.Build.VERSION_CODES.S_V2;
-import static android.os.Build.VERSION_CODES.TIRAMISU;
import static com.google.common.truth.Truth.assertThat;
import static org.robolectric.Shadows.shadowOf;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
-import android.bluetooth.BluetoothStatusCodes;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import java.util.UUID;
import org.junit.Before;
@@ -89,65 +86,28 @@ public class ShadowBluetoothAdapterTest {
}
@Test
- @Config(maxSdk = S_V2)
public void scanMode_getAndSet_connectable() throws Exception {
- assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE)).isEqualTo(
- true);
+ assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE)).isTrue();
assertThat(bluetoothAdapter.getScanMode()).isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
}
@Test
- @Config(maxSdk = S_V2)
public void scanMode_getAndSet_discoverable() throws Exception {
assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE))
- .isEqualTo(true);
+ .isTrue();
assertThat(bluetoothAdapter.getScanMode())
.isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
}
@Test
- @Config(maxSdk = S_V2)
public void scanMode_getAndSet_none() throws Exception {
- assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE)).isEqualTo(true);
+ assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE)).isTrue();
assertThat(bluetoothAdapter.getScanMode()).isEqualTo(BluetoothAdapter.SCAN_MODE_NONE);
}
@Test
- @Config(maxSdk = S_V2)
public void scanMode_getAndSet_invalid() throws Exception {
- assertThat(bluetoothAdapter.setScanMode(9999)).isEqualTo(false);
- }
-
-
- @Test
- @Config(minSdk = TIRAMISU)
- public void scanMode_getAndSet_connectable_min_T() throws Exception {
- assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE)).isEqualTo(
- BluetoothStatusCodes.SUCCESS);
- assertThat(bluetoothAdapter.getScanMode()).isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
- }
-
- @Test
- @Config(minSdk = TIRAMISU)
- public void scanMode_getAndSet_discoverable_min_T() throws Exception {
- assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE))
- .isEqualTo(BluetoothStatusCodes.SUCCESS);
- assertThat(bluetoothAdapter.getScanMode())
- .isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
- }
-
- @Test
- @Config(minSdk = TIRAMISU)
- public void scanMode_getAndSet_none_min_T() throws Exception {
- assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE)).isEqualTo(
- BluetoothStatusCodes.SUCCESS);
- assertThat(bluetoothAdapter.getScanMode()).isEqualTo(BluetoothAdapter.SCAN_MODE_NONE);
- }
-
- @Test
- @Config(minSdk = TIRAMISU)
- public void scanMode_getAndSet_invalid_min_T() throws Exception {
- assertThat(bluetoothAdapter.setScanMode(9999)).isEqualTo(BluetoothStatusCodes.ERROR_UNKNOWN);
+ assertThat(bluetoothAdapter.setScanMode(9999)).isFalse();
}
@Test
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java
index c1986b2db..0ae09f90e 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java
@@ -4,7 +4,6 @@ import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1;
import static android.os.Build.VERSION_CODES.M;
-import static android.os.Build.VERSION_CODES.S;
import static com.google.common.truth.Truth.assertThat;
import android.os.Build;
@@ -20,7 +19,6 @@ import org.robolectric.util.ReflectionHelpers;
public class ShadowLocaleDataTest {
@Test
- @Config(maxSdk = Build.VERSION_CODES.S)
public void shouldSupportLocaleEn_US() throws Exception {
LocaleData localeData = LocaleData.get(Locale.US);
@@ -42,32 +40,31 @@ public class ShadowLocaleDataTest {
assertThat(localeData.longStandAloneWeekdayNames).isEqualTo(localeData.longWeekdayNames);
assertThat(localeData.shortStandAloneWeekdayNames).isEqualTo(localeData.shortWeekdayNames);
- assertThat((String) ReflectionHelpers.getField(localeData, "fullTimeFormat")).isEqualTo("h:mm:ss a zzzz");
- assertThat((String) ReflectionHelpers.getField(localeData, "longTimeFormat")).isEqualTo("h:mm:ss a z");
- assertThat((String) ReflectionHelpers.getField(localeData, "mediumTimeFormat")).isEqualTo("h:mm:ss a");
- assertThat((String) ReflectionHelpers.getField(localeData, "shortTimeFormat")).isEqualTo("h:mm a");
+ assertThat(localeData.fullTimeFormat).isEqualTo("h:mm:ss a zzzz");
+ assertThat(localeData.longTimeFormat).isEqualTo("h:mm:ss a z");
+ assertThat(localeData.mediumTimeFormat).isEqualTo("h:mm:ss a");
+ assertThat(localeData.shortTimeFormat).isEqualTo("h:mm a");
- assertThat((String) ReflectionHelpers.getField(localeData, "fullDateFormat")).isEqualTo("EEEE, MMMM d, y");
- assertThat((String) ReflectionHelpers.getField(localeData, "longDateFormat")).isEqualTo("MMMM d, y");
- assertThat((String) ReflectionHelpers.getField(localeData, "mediumDateFormat")).isEqualTo("MMM d, y");
- assertThat((String) ReflectionHelpers.getField(localeData, "shortDateFormat")).isEqualTo("M/d/yy");
+ assertThat(localeData.fullDateFormat).isEqualTo("EEEE, MMMM d, y");
+ assertThat(localeData.longDateFormat).isEqualTo("MMMM d, y");
+ assertThat(localeData.mediumDateFormat).isEqualTo("MMM d, y");
+ assertThat(localeData.shortDateFormat).isEqualTo("M/d/yy");
- assertThat((char) ReflectionHelpers.getField(localeData, "zeroDigit")).isEqualTo('0');
- assertThat((char) ReflectionHelpers.getField(localeData, "decimalSeparator")).isEqualTo('.');
- assertThat((char) ReflectionHelpers.getField(localeData, "groupingSeparator")).isEqualTo(',');
- assertThat((char) ReflectionHelpers.getField(localeData, "patternSeparator")).isEqualTo(';');
+ assertThat(localeData.zeroDigit).isEqualTo('0');
+ assertThat(localeData.decimalSeparator).isEqualTo('.');
+ assertThat(localeData.groupingSeparator).isEqualTo(',');
+ assertThat(localeData.patternSeparator).isEqualTo(';');
- assertThat((char) ReflectionHelpers.getField(localeData, "monetarySeparator")).isEqualTo('.');
- assertThat((char) ReflectionHelpers.getField(localeData, "perMill")).isEqualTo('‰');
+ assertThat(localeData.monetarySeparator).isEqualTo('.');
- assertThat((String) ReflectionHelpers.getField(localeData, "exponentSeparator")).isEqualTo("E");
- assertThat((String) ReflectionHelpers.getField(localeData, "infinity")).isEqualTo("∞");
- assertThat((String) ReflectionHelpers.getField(localeData, "NaN")).isEqualTo("NaN");
+ assertThat(localeData.exponentSeparator).isEqualTo("E");
+ assertThat(localeData.infinity).isEqualTo("∞");
+ assertThat(localeData.NaN).isEqualTo("NaN");
- assertThat((String) ReflectionHelpers.getField(localeData, "numberPattern")).isEqualTo("#,##0.###");
- assertThat((String) ReflectionHelpers.getField(localeData, "integerPattern")).isEqualTo("#,##0");
- assertThat((String) ReflectionHelpers.getField(localeData, "currencyPattern")).isEqualTo("¤#,##0.00;(¤#,##0.00)");
- assertThat((String) ReflectionHelpers.getField(localeData, "percentPattern")).isEqualTo("#,##0%");
+ assertThat(localeData.numberPattern).isEqualTo("#,##0.###");
+ assertThat(localeData.integerPattern).isEqualTo("#,##0");
+ assertThat(localeData.currencyPattern).isEqualTo("¤#,##0.00;(¤#,##0.00)");
+ assertThat(localeData.percentPattern).isEqualTo("#,##0%");
}
@Test
@@ -95,10 +92,25 @@ public class ShadowLocaleDataTest {
}
@Test
- @Config(minSdk = LOLLIPOP_MR1, maxSdk = S)
+ @Config(maxSdk = Build.VERSION_CODES.O)
+ public void shouldSupportLocaleEn_US_perMill() throws Exception {
+ LocaleData localeData = LocaleData.get(Locale.US);
+ char perMillValue = ReflectionHelpers.getField(localeData, "perMill");
+ assertThat(perMillValue).isEqualTo('‰');
+ }
+
+ @Test
+ @Config(minSdk = Build.VERSION_CODES.P)
+ public void shouldSupportLocaleEn_US_perMillPostP() throws Exception {
+ LocaleData localeData = LocaleData.get(Locale.US);
+ assertThat(localeData.perMill).isEqualTo("‰");
+ }
+
+ @Test
+ @Config(minSdk = LOLLIPOP_MR1)
public void shouldSupportLocaleEn_US_percentPost22() throws Exception {
LocaleData localeData = LocaleData.get(Locale.US);
- assertThat((String) ReflectionHelpers.getField(localeData, "percent")).isEqualTo("%");
+ assertThat(localeData.percent).isEqualTo("%");
}
@Test
@@ -125,11 +137,11 @@ public class ShadowLocaleDataTest {
}
@Test
- @Config(minSdk = LOLLIPOP, maxSdk = S)
+ @Config(minSdk = LOLLIPOP)
public void shouldSupportLocaleEn_US_since_lollipop() throws Exception {
LocaleData localeData = LocaleData.get(Locale.US);
- assertThat((String) ReflectionHelpers.getField(localeData, "minusSign")).isEqualTo("-");
+ assertThat(localeData.minusSign).isEqualTo("-");
}
@Test
diff --git a/robotest-internal.mk b/robotest-internal.mk
index 77e173024..938c1a57e 100644
--- a/robotest-internal.mk
+++ b/robotest-internal.mk
@@ -12,20 +12,21 @@ my_target_xml := $(intermediates)/$(my_filename_stem)-output.xml
my_target_output := $(intermediates)/$(my_filename_stem)-output.txt
my_target_retval := $(intermediates)/$(my_filename_stem)-retval.txt
-ALL_TARGETS.$(my_target_output).META_LIC:=$(module_license_metadata)
-ALL_TARGETS.$(my_target_xml).META_LIC:=$(module_license_metadata)
-
# We should always re-run the tests, even if nothing has changed.
# So until the build system has a dedicated "no cache" option, claim
# to write a file that is never produced.
my_target_nocache := $(intermediates)/$(my_filename_stem)-nocache
+# OpenJDK 10+ java binaries include v54+ classfiles which require ASM 7.0 or higher.
+# While this build is still using ASM 6.0, pin to an OpenJDK 9 java binary:
+my_require_v53_or_lower_class_files := true
+
# Private variables.
$(my_target_output): PRIVATE_MODULE := $(LOCAL_MODULE)
$(my_target_output): PRIVATE_TESTS := $(my_tests)
$(my_target_output): PRIVATE_JARS := $(my_jars)
$(my_target_output): PRIVATE_JAVA_ARGS := $(my_java_args)
-$(my_target_output): PRIVATE_JAVA_PATH := $(ANDROID_JAVA11_HOME)/bin:
+$(my_target_output): PRIVATE_JAVA_PATH := $(if $(my_require_v53_or_lower_class_files),$(ANDROID_JAVA9_HOME)/bin:,)
$(my_target_output): PRIVATE_ROBOLECTRIC_PATH := $(my_robolectric_path)
$(my_target_output): PRIVATE_ROBOLECTRIC_SCRIPT_PATH := $(my_robolectric_script_path)
$(my_target_output): PRIVATE_TARGET_MESSAGE := $(my_target_message)
@@ -97,3 +98,4 @@ my_target_retval :=
my_target_xml :=
my_target_nocache :=
my_filename_stem :=
+my_require_v53_or_lower_class_files :=
diff --git a/run_robolectric_module_tests.mk b/run_robolectric_module_tests.mk
index 96f1cb59b..6cb0a24a7 100644
--- a/run_robolectric_module_tests.mk
+++ b/run_robolectric_module_tests.mk
@@ -53,8 +53,7 @@ copy_android_all_jar_pairs := \
$(android_all_source_dir)/android-all-9-robolectric-4913185-2.jar:$(android_all_target_dir)/android-all-9-robolectric-4913185-2.jar \
$(android_all_source_dir)/android-all-9plus-robolectric-5616371.jar:$(android_all_target_dir)/android-all-9plus-robolectric-5616371.jar \
$(android_all_source_dir)/android-all-R-beta2-robolectric-6625208.jar:$(android_all_target_dir)/android-all-R-beta2-robolectric-6625208.jar \
- $(android_all_source_dir)/android-all-S-beta3-robolectric-7541949.jar:$(android_all_target_dir)/android-all-S-beta3-robolectric-7541949.jar \
- $(local_android_all_source_jar):$(android_all_target_dir)/android-all-current-robolectric-r0.jar
+ $(local_android_all_source_jar):$(android_all_target_dir)/android-all-S-robolectric-r0.jar
copy_android_all_jars := $(call copy-many-files, $(copy_android_all_jar_pairs))
# If debugging the tests was requested, set up the JVM parameters to enable it.
diff --git a/run_robotests.mk b/run_robotests.mk
index b5a6ee44e..e69eb1cf0 100644
--- a/run_robotests.mk
+++ b/run_robotests.mk
@@ -88,9 +88,8 @@ ifneq ($(DISABLE_ROBO_RUN_TESTS),true)
# directory from which this module is invoked.
ifeq ($(strip $(LOCAL_ROBOTEST_FILES)),)
LOCAL_ROBOTEST_FILES := $(call find-files-in-subdirs,$(LOCAL_PATH)/src,*Test.java,.)
- LOCAL_ROBOTEST_FILES += $(call find-files-in-subdirs,$(LOCAL_PATH)/src,*Test.kt,.)
endif
- # Convert the paths into package names by removing .java or *.kt extensions and replacing "/" with "."
+ # Convert the paths into package names by removing .java extension and replacing "/" with "."
my_tests := $(sort $(subst /,.,$(basename $(LOCAL_ROBOTEST_FILES))))
ifdef my_test_filter_command
my_tests := $(sort $(shell echo '$(my_tests)' | tr ' ' '\n' | $(my_test_filter_command)))
@@ -136,8 +135,7 @@ ifneq ($(DISABLE_ROBO_RUN_TESTS),true)
$(android_all_lib_path)/android-all-9-robolectric-4913185-2.jar:$(my_robolectric_path)/android-all-9-robolectric-4913185-2.jar \
$(android_all_lib_path)/android-all-10-robolectric-5803371.jar:$(my_robolectric_path)/android-all-10-robolectric-5803371.jar \
$(android_all_lib_path)/android-all-R-beta2-robolectric-6625208.jar:$(my_robolectric_path)/android-all-R-beta2-robolectric-6625208.jar \
- $(android_all_lib_path)/android-all-S-beta3-robolectric-7541949.jar:$(my_robolectric_path)/android-all-S-beta3-robolectric-7541949.jar \
- $(local_android_all_source_jar):$(my_robolectric_path)/android-all-current-robolectric-r0.jar
+ $(local_android_all_source_jar):$(my_robolectric_path)/android-all-S-robolectric-r0.jar
copy_android_all_jars := $(call copy-many-files, $(copy_android_all_jar_pairs))
$(my_target): $(copy_android_all_jars)
diff --git a/sandbox/Android.bp b/sandbox/Android.bp
index ae6aa36cf..cad5fd576 100644
--- a/sandbox/Android.bp
+++ b/sandbox/Android.bp
@@ -18,10 +18,10 @@ java_library_host {
"Robolectric_annotations",
"Robolectric_shadowapi",
"Robolectric_utils",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"guava",
- "asm-tree-9.2",
- "asm-9.2",
+ "asm-tree-6.0",
+ "asm-6.0",
"jsr305",
],
}
@@ -41,13 +41,13 @@ java_test_host {
"Robolectric_utils",
"mockito",
"hamcrest",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"guava",
"objenesis",
- "asm-tree-9.2",
+ "asm-tree-6.0",
"junit",
"truth-prebuilt",
- "asm-9.2",
+ "asm-6.0",
"jsr305",
],
test_suites: ["general-tests"],
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java
index 829151728..f41493e1a 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java
@@ -42,7 +42,7 @@ public class ShadowActivityThread {
throws Exception {
if (method.getName().equals("getApplicationInfo")) {
String packageName = (String) args[0];
- int flags = ((Number) args[1]).intValue();
+ int flags = (Integer) args[1];
if (packageName.equals(ShadowActivityThread.applicationInfo.packageName)) {
return ShadowActivityThread.applicationInfo;
@@ -57,7 +57,7 @@ public class ShadowActivityThread {
}
} else if (method.getName().equals("getActivityInfo")) {
ComponentName className = (ComponentName) args[0];
- int flags = ((Number) args[1]).intValue();
+ int flags = (Integer) args[1];
try {
return RuntimeEnvironment.application
@@ -68,7 +68,7 @@ public class ShadowActivityThread {
}
} else if (method.getName().equals("getServiceInfo")) {
ComponentName className = (ComponentName) args[0];
- int flags = ((Number) args[1]).intValue();
+ int flags = (Integer) args[1];
try {
return RuntimeEnvironment.application
@@ -78,7 +78,7 @@ public class ShadowActivityThread {
throw new RemoteException(e.getMessage());
}
} else if (method.getName().equals("getInstalledApplications")) {
- int flags = ((Number) args[0]).intValue();
+ int flags = (Integer) args[0];
int userId = (Integer) args[1];
return new ParceledListSlice<>(
RuntimeEnvironment.application
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java
index ddfca8229..e184e4dc9 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java
@@ -2,7 +2,6 @@ package org.robolectric.shadows;
import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
-import static android.os.Build.VERSION_CODES.TIRAMISU;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothAdapter.LeScanCallback;
@@ -10,7 +9,6 @@ import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
-import android.bluetooth.BluetoothStatusCodes;
import android.os.ParcelUuid;
import java.util.Collections;
import java.util.HashMap;
@@ -20,10 +18,9 @@ import java.util.Set;
import java.util.UUID;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
-import org.robolectric.RuntimeEnvironment;
@SuppressWarnings({"UnusedDeclaration"})
-@Implements(value = BluetoothAdapter.class, looseSignatures = true)
+@Implements(BluetoothAdapter.class)
public class ShadowBluetoothAdapter {
private static final int ADDRESS_LENGTH = 17;
@@ -143,16 +140,15 @@ public class ShadowBluetoothAdapter {
}
@Implementation
- protected Object setScanMode(int scanMode) {
+ protected boolean setScanMode(int scanMode) {
if (scanMode != BluetoothAdapter.SCAN_MODE_CONNECTABLE
&& scanMode != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE
&& scanMode != BluetoothAdapter.SCAN_MODE_NONE) {
- return (RuntimeEnvironment.getApiLevel() >= TIRAMISU) ?
- BluetoothStatusCodes.ERROR_UNKNOWN : false;
+ return false;
}
+
this.scanMode = scanMode;
- return (RuntimeEnvironment.getApiLevel() >= TIRAMISU) ?
- BluetoothStatusCodes.SUCCESS : true;
+ return true;
}
@Implementation
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java
index 51cf6bb96..2b29bdb4d 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java
@@ -242,13 +242,6 @@ public class ShadowContextImpl {
}
@Implementation
- protected Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
- String broadcastPermission, Handler scheduler, int flags) {
- return getShadowInstrumentation()
- .registerReceiver(receiver, filter, broadcastPermission, scheduler, realContextImpl);
- }
-
- @Implementation
protected Intent registerReceiver(
BroadcastReceiver receiver,
IntentFilter filter,
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java
index b9691d104..8f730a9cb 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java
@@ -81,7 +81,7 @@ public class ShadowDisplayManagerGlobal {
}
// @Override // todo: use @Implements/@Implementation for signature checking
- public int[] getDisplayIds(boolean includeDisabledDisplays) throws RemoteException {
+ public int[] getDisplayIds() throws RemoteException {
int[] ids = new int[displayInfos.size()];
int i = 0;
for (Integer displayId : displayInfos.keySet()) {
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java
index 5ce12951b..50f58f1aa 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java
@@ -6,7 +6,6 @@ import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1;
import static android.os.Build.VERSION_CODES.M;
import static android.os.Build.VERSION_CODES.Q;
-import static android.os.Build.VERSION_CODES.S;
import static org.robolectric.RuntimeEnvironment.getApiLevel;
import java.util.Locale;
@@ -62,6 +61,11 @@ public class ShadowLocaleData {
localeData.longStandAloneWeekdayNames = localeData.longWeekdayNames;
localeData.shortStandAloneWeekdayNames = localeData.shortWeekdayNames;
+ localeData.fullTimeFormat = "h:mm:ss a zzzz";
+ localeData.longTimeFormat = "h:mm:ss a z";
+ localeData.mediumTimeFormat = "h:mm:ss a";
+ localeData.shortTimeFormat = "h:mm a";
+
if (getApiLevel() >= M) {
localeData.timeFormat_hm = "h:mm a";
localeData.timeFormat_Hm = "HH:mm";
@@ -70,6 +74,45 @@ public class ShadowLocaleData {
ReflectionHelpers.setField(localeData, "timeFormat24", "HH:mm");
}
+ localeData.fullDateFormat = "EEEE, MMMM d, y";
+ localeData.longDateFormat = "MMMM d, y";
+ localeData.mediumDateFormat = "MMM d, y";
+ localeData.shortDateFormat = "M/d/yy";
+
+ localeData.zeroDigit = '0';
+ localeData.decimalSeparator = '.';
+ localeData.groupingSeparator = ',';
+ localeData.patternSeparator = ';';
+
+ if (getApiLevel() >= LOLLIPOP_MR1) {
+ // Lollipop MR1 uses a String
+ localeData.percent = "%";
+ } else {
+ // Upto Lollipop was a char
+ ReflectionHelpers.setField(localeData, "percent", '%');
+ }
+
+ if (getApiLevel() >= android.os.Build.VERSION_CODES.P) {
+ // P uses a String
+ localeData.perMill = "‰";
+ } else {
+ // Up to P was a char
+ ReflectionHelpers.setField(localeData, "perMill", '‰');
+ }
+
+ localeData.monetarySeparator = '.';
+
+ if (getApiLevel() >= LOLLIPOP) {
+ // Lollipop uses a String
+ localeData.minusSign = "-";
+ } else {
+ // Upto KitKat was a char
+ ReflectionHelpers.setField(localeData, "minusSign", '-');
+ }
+
+ localeData.exponentSeparator = "E";
+ localeData.infinity = "\u221E";
+ localeData.NaN = "NaN";
// These fields are removed in Android R or later
if (getApiLevel() <= Q) {
@@ -78,49 +121,9 @@ public class ShadowLocaleData {
ReflectionHelpers.setField(localeData, "yesterday", "Yesterday");
}
-
- // These fields are removed in Android T or later
- if (getApiLevel() <= S) {
- ReflectionHelpers.setField(localeData, "fullDateFormat", "EEEE, MMMM d, y");
- ReflectionHelpers.setField(localeData, "longDateFormat", "MMMM d, y");
- ReflectionHelpers.setField(localeData, "mediumDateFormat", "MMM d, y");
- ReflectionHelpers.setField(localeData, "shortDateFormat", "M/d/yy");
- ReflectionHelpers.setField(localeData, "zeroDigit", '0');
- ReflectionHelpers.setField(localeData, "decimalSeparator", '.');
- ReflectionHelpers.setField(localeData, "groupingSeparator", ',');
- ReflectionHelpers.setField(localeData, "patternSeparator", ';');
- ReflectionHelpers.setField(localeData, "monetarySeparator", '.');
- ReflectionHelpers.setField(localeData, "exponentSeparator", "E");
- ReflectionHelpers.setField(localeData, "infinity", "\u221E");
- ReflectionHelpers.setField(localeData, "NaN", "NaN");
- ReflectionHelpers.setField(localeData, "numberPattern", "\u0023,\u0023\u00230.\u0023\u0023\u0023");
- ReflectionHelpers.setField(localeData, "integerPattern", "\u0023,\u0023\u00230");
- ReflectionHelpers.setField(localeData, "currencyPattern", "\u00A4\u0023,\u0023\u00230.00;(\u00A4\u0023,\u0023\u00230.00)");
- ReflectionHelpers.setField(localeData, "percentPattern", "\u0023,\u0023\u00230%");
-
- if (getApiLevel() >= LOLLIPOP_MR1) {
- // Lollipop MR1 uses a String
- ReflectionHelpers.setField(localeData, "percent", "%");
- } else {
- // Upto Lollipop was a char
- ReflectionHelpers.setField(localeData, "percent", '%');
- }
-
- if (getApiLevel() >= android.os.Build.VERSION_CODES.P) {
- // P uses a String
- ReflectionHelpers.setField(localeData, "perMill", "‰");
- } else {
- // Up to P was a char
- ReflectionHelpers.setField(localeData, "perMill", '‰');
- }
-
- if (getApiLevel() >= LOLLIPOP) {
- // Lollipop uses a String
- ReflectionHelpers.setField(localeData, "minusSign", "-");
- } else {
- // Upto KitKat was a char
- ReflectionHelpers.setField(localeData, "minusSign", '-');
- }
- }
+ localeData.numberPattern = "\u0023,\u0023\u00230.\u0023\u0023\u0023";
+ localeData.integerPattern = "\u0023,\u0023\u00230";
+ localeData.currencyPattern = "\u00A4\u0023,\u0023\u00230.00;(\u00A4\u0023,\u0023\u00230.00)";
+ localeData.percentPattern = "\u0023,\u0023\u00230%";
}
}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java
deleted file mode 100644
index 60a465bae..000000000
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.robolectric.shadows;
-
-import static android.os.Build.VERSION_CODES.P;
-
-import com.android.server.pm.parsing.library.PackageSharedLibraryUpdater;
-import java.util.List;
-import java.util.function.Supplier;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-/**
- * Shadow of {@link PackageBackwardCompatibility} to handle a scenario that can come up when
- * multiple Android versions end up on the classpath
- */
-@Implements(className = "android.content.pm.PackageBackwardCompatibility", maxSdk = P)
-public class ShadowPackageBackwardCompatibility {
-
- /**
- * Stubbing this out as if Android S+ is on the classpath, we'll get a ClassCastException instead
- * of a ClassNotFoundException. Since we don't really need this logic, simpler to just skip it
- */
- @Implementation
- protected static boolean addOptionalUpdater(
- List<PackageSharedLibraryUpdater> packageUpdaters,
- String className,
- Supplier<PackageSharedLibraryUpdater> defaultUpdater) {
- return false;
- }
-}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java
index 56b93bac8..d8a3011c3 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java
@@ -53,11 +53,11 @@ import android.content.pm.PackageParser;
import android.content.pm.PackageParser.Component;
import android.content.pm.PackageParser.Package;
import android.content.pm.PackageStats;
+import android.content.pm.PackageUserState;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.Signature;
-import android.content.pm.pkg.FrameworkPackageUserState;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@@ -775,7 +775,7 @@ public class ShadowPackageManager {
0,
0,
new HashSet<String>(),
- FrameworkPackageUserState.DEFAULT);
+ new PackageUserState());
} else if (RuntimeEnvironment.getApiLevel() >= LOLLIPOP_MR1) {
packageInfo =
ReflectionHelpers.callStaticMethod(
@@ -788,7 +788,7 @@ public class ShadowPackageManager {
ReflectionHelpers.ClassParameter.from(long.class, 0L),
ReflectionHelpers.ClassParameter.from(ArraySet.class, new ArraySet<>()),
ReflectionHelpers.ClassParameter.from(
- FrameworkPackageUserState.class, FrameworkPackageUserState.DEFAULT));
+ PackageUserState.class, new PackageUserState()));
} else if (RuntimeEnvironment.getApiLevel() >= JELLY_BEAN_MR1) {
packageInfo =
ReflectionHelpers.callStaticMethod(
@@ -801,7 +801,7 @@ public class ShadowPackageManager {
ReflectionHelpers.ClassParameter.from(long.class, 0L),
ReflectionHelpers.ClassParameter.from(HashSet.class, new HashSet<>()),
ReflectionHelpers.ClassParameter.from(
- FrameworkPackageUserState.class, FrameworkPackageUserState.DEFAULT));
+ PackageUserState.class, new PackageUserState()));
} else {
packageInfo =
ReflectionHelpers.callStaticMethod(
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java
index 494079303..8c2f6e1fa 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java
@@ -72,15 +72,5 @@ public class ShadowPackageParser {
public boolean hasFeature(String feature) {
return false;
}
-
- // @Override for SDK < 30
- public String[] getOverlayPaths(String s, String s1) {
- return null;
- }
-
- // @Override for SDK < 30
- public String[] getOverlayApks(String s) {
- return null;
- }
}
}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java
index 61a4174fa..542d137c4 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java
@@ -21,10 +21,9 @@ public class ShadowSystemServiceRegistry {
classForName("android.app.SystemServiceRegistry"), "SYSTEM_SERVICE_FETCHERS");
Class staticApplicationServiceFetcherClass = null;
- if (RuntimeEnvironment.getApiLevel() >= Build.VERSION_CODES.N
- && RuntimeEnvironment.getApiLevel() < Build.VERSION_CODES.S) {
- staticApplicationServiceFetcherClass =
- classForName("android.app.SystemServiceRegistry$StaticApplicationContextServiceFetcher");
+ if (RuntimeEnvironment.getApiLevel() >= Build.VERSION_CODES.N) {
+ staticApplicationServiceFetcherClass =
+ classForName("android.app.SystemServiceRegistry$StaticApplicationContextServiceFetcher");
} else if (RuntimeEnvironment.getApiLevel() == Build.VERSION_CODES.M) {
staticApplicationServiceFetcherClass =
classForName("android.app.SystemServiceRegistry$StaticOuterContextServiceFetcher");
@@ -34,8 +33,7 @@ public class ShadowSystemServiceRegistry {
classForName("android.app.SystemServiceRegistry$StaticServiceFetcher");
for (Object o : fetchers.values()) {
- if (staticApplicationServiceFetcherClass != null
- && staticApplicationServiceFetcherClass.isInstance(o)) {
+ if (staticApplicationServiceFetcherClass.isInstance(o)) {
ReflectionHelpers.setField(
staticApplicationServiceFetcherClass, o, "mCachedInstance", null);
} else if (staticServiceFetcherClass.isInstance(o)) {
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
index e1625d159..44996faa7 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
@@ -7,7 +7,6 @@ import static android.os.Build.VERSION_CODES.M;
import static android.os.Build.VERSION_CODES.N;
import static android.os.Build.VERSION_CODES.N_MR1;
import static android.os.Build.VERSION_CODES.R;
-import static android.os.Build.VERSION_CODES.TIRAMISU;
import static org.robolectric.shadow.api.Shadow.directlyOn;
@@ -259,12 +258,6 @@ public class ShadowUserManager {
protected boolean hasUserRestrictionForUser(String restrictionKey, UserHandle userHandle) {
return hasUserRestriction(restrictionKey, userHandle);
}
-
- @Implementation(minSdk = TIRAMISU)
- protected boolean hasUserRestrictionForUser(String restrictionKey, int userId) {
- Bundle bundle = userRestrictions.get(userId);
- return bundle != null && bundle.getBoolean(restrictionKey);
- }
// END-INTERNAL
public void setUserRestriction(UserHandle userHandle, String restrictionKey, boolean value) {
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java
index ad17119d4..c42e50710 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java
@@ -11,11 +11,10 @@ import android.os.Looper;
import android.util.MergedConfiguration;
import android.view.Display;
import android.view.IWindowSession;
-import android.view.InsetsState;
import android.view.ViewRootImpl;
import android.view.WindowManager;
import android.window.ClientWindowFrames;
-
+import java.util.ArrayList;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
@@ -24,8 +23,6 @@ import org.robolectric.annotation.Resetter;
import org.robolectric.util.ReflectionHelpers;
import org.robolectric.util.ReflectionHelpers.ClassParameter;
-import java.util.ArrayList;
-
@Implements(value = ViewRootImpl.class, isInAndroidSdk = false)
public class ShadowViewRootImpl {
@@ -153,7 +150,7 @@ public class ShadowViewRootImpl {
ClassParameter.from(android.view.DisplayCutout.ParcelableWrapper.class,
new android.view.DisplayCutout.ParcelableWrapper()));
// END-INTERNAL
- } else if (apiLevel <= Build.VERSION_CODES.S_V2) {
+ } else if (apiLevel >= Build.VERSION_CODES.S) {
// BEGIN-INTERNAL
ReflectionHelpers.callInstanceMethod(ViewRootImpl.class, component, "dispatchResized",
ClassParameter.from(ClientWindowFrames.class, clientWindowFrame),
@@ -163,19 +160,6 @@ public class ShadowViewRootImpl {
ClassParameter.from(boolean.class, false),
ClassParameter.from(int.class, 0));
// END-INTERNAL
- } else if (apiLevel >= Build.VERSION_CODES.TIRAMISU) {
- // BEGIN-INTERNAL
- ReflectionHelpers.callInstanceMethod(ViewRootImpl.class, component, "dispatchResized",
- ClassParameter.from(ClientWindowFrames.class, clientWindowFrame),
- ClassParameter.from(boolean.class, true),
- ClassParameter.from(MergedConfiguration.class, new MergedConfiguration()),
- ClassParameter.from(InsetsState.class, new InsetsState()),
- ClassParameter.from(boolean.class, false),
- ClassParameter.from(boolean.class, false),
- ClassParameter.from(int.class, 0),
- ClassParameter.from(int.class, 0),
- ClassParameter.from(int.class, 0));
- // END-INTERNAL
} else {
throw new RuntimeException("Could not find AndroidRuntimeAdapter for API level: " + apiLevel);
}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java
index ef2e463ea..a2dca62fd 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java
@@ -61,9 +61,9 @@ public class ShadowWifiInfo {
private static Object getWifiSsid(String ssid) {
WifiSsid wifiSsid;
if (ssid.startsWith("0x")) {
- wifiSsid = WifiSsid.fromString(ssid.substring(2));
+ wifiSsid = WifiSsid.createFromHex(ssid);
} else {
- wifiSsid = WifiSsid.fromUtf8Text(ssid);
+ wifiSsid = WifiSsid.createFromAsciiEncoded(ssid);
}
return wifiSsid;
}
diff --git a/shadows/httpclient/Android.bp b/shadows/httpclient/Android.bp
index 39d57a8be..613f852af 100644
--- a/shadows/httpclient/Android.bp
+++ b/shadows/httpclient/Android.bp
@@ -27,10 +27,6 @@ java_library_host {
plugins: ["Robolectric_processor"],
javacflags: ["-Aorg.robolectric.annotation.processing.shadowPackage=org.robolectric.shadows.httpclient"],
srcs: ["src/main/java/**/*.java"],
-
- errorprone: {
- javacflags: ["-Xep:EqualsNull:WARN"],
- },
}
//#############################################
@@ -55,14 +51,14 @@ java_test_host {
"bouncycastle-unbundled",
"hamcrest",
"robolectric-httpclient-4.0.3",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"robolectric-httpcore-4.0.1",
"guava",
- "asm-tree-9.2",
+ "asm-tree-6.0",
"junit",
"truth-prebuilt",
"robolectric-ant-1.8.0",
- "asm-9.2",
+ "asm-6.0",
"jsr305",
"robolectric-host-android_all",
"robolectric-host-org_apache_http_legacy",
diff --git a/shadows/supportv4/Android.bp b/shadows/supportv4/Android.bp
index 04714e520..a1d30f8d9 100644
--- a/shadows/supportv4/Android.bp
+++ b/shadows/supportv4/Android.bp
@@ -53,14 +53,14 @@ java_test_host {
"mockito",
"bouncycastle-unbundled",
"hamcrest",
- "asm-commons-9.2",
+ "asm-commons-6.0",
"guava",
"objenesis",
- "asm-tree-9.2",
+ "asm-tree-6.0",
"junit",
"truth-prebuilt",
"robolectric-ant-1.8.0",
- "asm-9.2",
+ "asm-6.0",
"jsr305",
],
libs: ["robolectric-host-android_all"],