Robolectric 4.15
·
974 commits
to master
since this release
Robolectric 4.15 contains a lot of minor improvements, fidelity improvements, bug fixes, and shadow API enhancements. It also introduces the Robolectric Simulator, which makes it possible to launch an interactive preview of Android UI in a Robolectric environment.
NOTE Robolectric 4.15 does NOT support Android Baklava (SDK 36). Baklava will be supported in Robolectric 4.16.
If you encounter any issues, please file them on the GitHub issues page.
A huge thanks to @MGaetan89 and @utzcoz for all of their hard work that went into this release.
What's Changed
The following symbols have been removed in Robolectric 4.15.
| Removed symbol | Replacement |
|---|---|
AndroidManifest#supportsLegacyResourcesMode() |
N/A |
AndroidManifest#supportsBinaryResourcesMode() |
N/A |
ConfigMerger |
Provider<Config> |
DependencyResolver#getLocalArtifactUrls(DependencyJar) |
DependencyResolver#getLocalArtifactUrl(DependencyJar) |
Fs#fileFromPath(String path) |
Fs#fromUrl(path) |
Fs#newFile(File file) |
file.toPath()Β |
FsFile#getPath() |
Fs#externalize(this) |
FsFile#join(String name) |
this.resolve(name) |
InvokeDynamicClassInstrumentor |
ClassInstrumentor |
ManifestIdentifier(Path, Path, Path, String, List<Path>) |
ManifestIdentifier(String, Path, Path, Path, List<ManifestIdentifier>) |
MavenManifestFactory |
N/A |
PackageItemData#getClassName() |
PackageItemData#getName() |
Provider<T> |
javax.inject.Provider<T> |
Qualifiers#addScreenWidth(String, int) |
Configuration#screenWidthDp |
Qualifiers#addSmallestScreenWidth(String, int) |
Configuration#smallestScreenWidthDp |
Qualifiers#getOrientation(String) |
Configuration#orientation |
Qualifiers#getPlatformVersion(String) |
Build.VERSION#SDK_INT |
Qualifiers#getScreenWidth(String) |
Configuration#screenWidthDp |
Qualifiers#getSmallestScreenWidth(String) |
Configuration#smallestScreenWidthDp |
RoboSettings |
Set the specific system property directly |
Scheduler#idleConstantly(boolean) |
Scheduler#setIdleState(IdleState) |
SdkPicker |
DefaultSdkPicker |
ShadowApplication#addWakeLock(PowerManager.WakeLock wl) |
ShadowPowerManager.addWakeLock(wl) |
ShadowApplication#clearWakeLocks() |
ShadowPowerManager.clearWakeLocks() |
ShadowApplication#getAppWidgetManager() |
Context#getSystemService(Context.APPWIDGET_SERVICE) |
ShadowApplication#getBluetoothAdapter() |
BluetoothManager#getAdapter() |
ShadowApplication#getForegroundThreadScheduler() |
Robolectric.getForegroundThreadScheduler() |
ShadowApplication#getInstance() |
shadowOf(RuntimeEnvironment.getApplication()) |
ShadowApplication#getLatestWakeLock() |
ShadowPowerManager.getLatestWakeLock() |
ShadowMap#convertToShadowName(String) |
N/A |
XmlResourceParserImpl(Document, String, String, String, ResourceTable) |
XmlResourceParserImpl(Document, Path, String, String, ResourceTable) |
List of changes
- Properly disable API 35 on Windows in
graphics_tests.ymlby @MGaetan89 in #9720 - Add @inDevelopment annotation to ShadowInputMethodManager#hideSoftInputFromWindow #9721
- Run tests against API 35 by @MGaetan89 in #9719
- Update Ubuntu runners to use
ubuntu-latestby @MGaetan89 in #9725 - Make ContextTest euicc tests work on device that doesn't support it by @utzcoz in #9726
- Bump targetSdk to 35 as much as possible for integration_tests by @utzcoz in #9727
- Bump error-prone from 2.34.0 to 2.35.1 by @dependabot in #9730
- Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.0.BETA3 to 7.0.0.BETA4 by @dependabot in #9731
- Bump com.ibm.icu:icu4j from 75.1 to 76.1 by @dependabot in #9729
- Run more tests with api 35 by @utzcoz in #9724
- Deprecate
shadows-multidexby @MGaetan89 in #9728 - Remove unused dependency and TODO in
errorproneby @MGaetan89 in #9736 - Add basic support for DirectAccessibilityConnection behind a flag #9739
- Invoke real Android code when AccessibilityNodeInfo.setSource is called #9741
- Remove unnecessary shadow methods in ShadowAccessibilityWindowInfo #9742
- Update shadows to adapt to in development Android changes. #9743
- Concat an ellipsis character when ellipsizing by @utzcoz in #9672
- Add MotionEventTest#testNoLocationOffsetForNonPointerSource by @utzcoz in #7216
- Fix ShadowPendingIntent.send() to forward the options passed in when starting activity. #9745
- Invoke the real AccessibilityWindowInfo.obtain(AccessibilityWindowInfo) #9748
- Bump roborazzi from 1.29.0 to 1.30.1 by @dependabot in #9753
- Bump the android-gradle-plugin group with 3 updates by @dependabot in #9749
- Bump com.googlecode.libphonenumber:libphonenumber from 8.13.48 to 8.13.49 by @dependabot in #9751
- Bump org.bouncycastle:bcprov-jdk18on from 1.78.1 to 1.79 by @dependabot in #9752
- Remove
deepEqualsandhashCodefrom ShadowAccessibilityWindowInfo #9754 - Make resources to keep to a command line arg in JarInstrumentor #9755
- Call AccessibilityNodeInfo.setSource when ShadowAccessibilityNodeInfo.obtain(View) is called #9756
- Disable native graphics test on Windows in SDK 35 by @hoisie in #9757
- Turn off fail-fast for the native graphics tests #9760
- Use real AccessibilityNodeInfo code for AccessibilityNodeInfo.obtain(AccessibilityNodeInfo) #9762
- Label shadow tests that require LEGACY graphics mode. #9763
- Add back missing useRealAni check in AccessibilityNodeInfo.obtain(AccessibilityNodeInfo) #9765
- Remove StrictEqualityWindowWrapper from ShadowAccessibilityWindowInfo #9767
- Bump the androidx group with 5 updates by @dependabot in #9750
- Add additional check for AccessibilityNodeInfo.setQueryFromProcessEnabled #9769
- Remove boundsInScreen logic in ShadowAccessibilityNodeInfo #9770
- Remove unused and incorrect APIs in ShadowAccessibilityNodeInfo #9771
- Stop opening an AssetInputStream twice. #9772
- Improve error reporting with AttributeSetBuilder + native resources. #9773
- Support LEGACY graphics + NATIVE resources intersection. #9774
- Native resources mode cleanup. #9764
- Disable AccessibililityNodeInfo shadow APIs for direct connections #9775
- Use applyConfigurationToResources to update resources #9776
- Sort Gradle modules by @MGaetan89 in #9780
- Remove the
--infoflag from Gradle tasks by @MGaetan89 in #9782 - Globally enable Gradle's parallel execution by @MGaetan89 in #9783
- ctesque: Wait display rotation with timeout before checking rotation by @utzcoz in #9781
- Remove unused and incorrect APIs in ShadowAccessibilityNodeInfo #9784
- Clear ShadowAccessibilityWindowInfo fields during recycle #9785
- Revert "ci: Bump latest API level to 35 for Emulator testing" by @MGaetan89 in #9787
- Enable Gradle's File System Watching on CI by @MGaetan89 in #9786
- Merge
:integration_tests:agp:testsupportinto:integration_tests:agpby @MGaetan89 in #9778 - Bump roborazzi from 1.30.1 to 1.32.2 by @dependabot in #9789
- Defer to real framework code for AccessibilityWindowInfo.getWindowId #9791
- Update to Gradle 8.11 by @MGaetan89 in #9790
- Fix ShadowDisplayEventReceiver for Android Baklava. #9794
- Update the Android V SDK to build 12650502 by @hoisie in #9796
- Remove
:integration_tests:agpmodule by @MGaetan89 in #9788 - Add missing
:integration_tests:testparameterinjectorby @MGaetan89 in #9737 - Test merge by @hoisie in #9797
- Document support for V in readme by @yschimke in #9801
- Use ClassName annotation for ShadowPackageInstaller.requestUserPreapp⦠by @hoisie in #9798
- Fix SelfAssertion ErrorProne error in ShadowingTest by @hoisie in #9799
- Mark
AndroidVersions.Vas released by @MGaetan89 in #9800 - Only checking getWindowId for Robolectric's AccessibilityNodeInfoTest by @utzcoz in #9805
- Cleanup
integration_tests/androidxmodule by @MGaetan89 in #9803 - Add tests to
BuildCompatTestby @MGaetan89 in #9804 - Reset static state in ShadowLegacyChoreographer between tests #9806
- Add shadow implementation of
SubscriptionManager's APIs to convert from a slot ID -> subscription ID. #9807 - test: Add compat test for retrieving PackageInstaller by @utzcoz in #9808
- test: Simply Robolectric checking for AccessibilityNodeInfoTest by @utzcoz in #9810
- Bump com.googlecode.libphonenumber:libphonenumber from 8.13.49 to 8.13.50 by @dependabot in #9813
- Fix warnings in the
junitmodule by @MGaetan89 in #9814 - Fix warnings in the
nativeruntimemodule by @MGaetan89 in #9815 - Remove unused ShadowAccessibilityNodeInfo.areThereUnrecycledNodes #9817
- Remove TODOs in Roborazzi tests by @MGaetan89 in #9816
- Fix regression in loading typefaces in legacy graphics by @hoisie in #9819
- test: Add composeui integration testing module by @utzcoz in #9811
- Replace use of ReflectionHelpers with reflector in ShadowPausedMessageQueue. #9820
- Remove Multidex modules by @MGaetan89 in #9809
- Use the real WakeLock constructor in PowerManager.newWakeLock #9828
- Remove unnecessary throws declarations in
RoboMenuItemTestby @MGaetan89 in #9827 - Update
google-java-formatto 1.25.0 by @MGaetan89 in #9829 - Add
get/setShape()support toShadowGradientDrawable+ ctesque by @MGaetan89 in #9818 - test: Update ComposeUI FontTest with custom font by @utzcoz in #9830
- Add missing implementation in
RoboMenuItemby @MGaetan89 in #9822 - Migrate nullability annotations to
javax.annotationby @MGaetan89 in #9832 - Revert ellipsis supporting by @utzcoz in #9834
- Fix
NullPointerExceptioninRoboMenuItemby @MGaetan89 in #9837 - Fix warnings in some
integration_testsmodule by @MGaetan89 in #9833 - Bump androidx.compose:compose-bom from 2024.10.01 to 2024.11.00 in the androidx group by @dependabot in #9838
- Bump roborazzi from 1.32.2 to 1.34.0 by @dependabot in #9840
- Bump error-prone from 2.35.1 to 2.36.0 by @dependabot in #9839
- Default
robolectric.configurationChangeFixto true #9845 - Add Compose test to check that
FocusRequesteris initialized by @MGaetan89 in #9847 - Invoke real framework code in
ShadowCountDownTimerby @MGaetan89 in #9848 - Fix warnings in
integration_tests:nativegraphicsby @MGaetan89 in #9849 - Add tests for ShadowDisplayManager static fields by @Devashishbasu in #9359
- Fix warnings in some
integration_testsmodules by @MGaetan89 in #9850 - Fix null checking warnings for ShadowFileIntegrityManagerTest by @utzcoz in #9851
- Bump com.googlecode.libphonenumber:libphonenumber from 8.13.50 to 8.13.51 by @dependabot in #9853
- Bump kotlin from 2.0.21 to 2.1.0 by @dependabot in #9854
- Fix CatchFail warning for ShadowWifiP2pManagerTest by @utzcoz in #9852
- Add a way to use the real TextUtils.ellipsize #9861
- Add DeathRecipient methods to ShadowBinder #9862
- Use nano second precision in PAUSED SystemClock. #9864
- Fix warnings in
integration_tests:androidx_testby @MGaetan89 in #9867 - Fix warnings in some modules by @MGaetan89 in #9870
- Migrate to Java8 APIs from the
javax.lang.modelpackage by @MGaetan89 in #9871 - Bump roborazzi from 1.34.0 to 1.36.0 by @dependabot in #9874
- Bump the android-gradle-plugin group with 3 updates by @dependabot in #9873
- Add setBroadcastSubscriber and getBroadcastSubscriberMap in ShadowStatsManager. #9869
- Update
google-java-formatto 1.25.1 by @MGaetan89 in #9881 - Remove reflection calls in ShadowUsageStatsManager #9883
- Make BroadcastSubscriberKey class public. #9885
- Update
google-java-formatto 1.25.2 by @MGaetan89 in #9886 - Add a test case for scrolling a RecyclerView #9888
- Disable ShadowTextUtils.ellipsize when RNG is enabled #9889
- Migrate deprecated initMocks to openMocks by @utzcoz in #9891
- Include trailing dots in packages to never acquire #9892
- Allow shadow to function in aosp/main as well as goog/main. #9894
- Add a hasMethod to ReflectionHelper for use in AssociationInfoBuilder. #9895
- Bump roborazzi from 1.36.0 to 1.37.0 by @dependabot in #9897
- Bump com.googlecode.libphonenumber:libphonenumber from 8.13.51 to 8.13.52 by @dependabot in #9898
- Bump androidx.compose:compose-bom from 2024.11.00 to 2024.12.01 in the androidx group by @dependabot in #9896
- aosp/main requires @inDevelopment openCameraDeviceUserAsyncPostV #9899
- Use reflection to call AssociationInfo.Builder#setTag. #9900
- Update to Gradle 8.12 by @MGaetan89 in #9902
- Fix small warnings in the
resourcesmodule by @MGaetan89 in #9903 - Bump org.jetbrains.kotlinx:kotlinx-coroutines-android from 1.9.0 to 1.10.1 by @dependabot in #9905
- Bump guava-jre from 33.3.1-jre to 33.4.0-jre by @dependabot in #9904
- Fix small warnings in the
resourcesmodule by @MGaetan89 in #9906 - Fix typo in
ActivityData#isClearTaskOnLaungh()by @MGaetan89 in #9907 - Use standard library methods and collection APIs by @MGaetan89 in #9908
- Bump roborazzi from 1.37.0 to 1.38.0 by @dependabot in #9910
- Fix typo in
ResourceIdsby @MGaetan89 in #9909 - Remove unnecessary variables by @MGaetan89 in #9911
- Fix warnings in
resourcesby @MGaetan89 in #9872 - Fix warnings in the
shadowapimodule by @MGaetan89 in #9912 - Fix warnings in the
sandboxmodule by @MGaetan89 in #9914 - Fix warnings in the
utilsmodule by @MGaetan89 in #9915 - Fix typo in ShadowRangingResult. #9916
- Fix warnings in
:shadows:httpclientby @MGaetan89 in #9918 - Remove unused dependencies by @MGaetan89 in #9919
- Fix warnings in
:shadows:playservicesby @MGaetan89 in #9920 - Bump roborazzi from 1.38.0 to 1.39.0 by @dependabot in #9921
- Update shadow TimeManager for Baklava. #9923
- Update ShadowSecureElementService Channel implementation to throw IllegalStateException when closed. #9925
- Sync with ag/main #9926
- Adds support for shadowing ActivityManager.setDeviceLocales() #9927
- Update parsing of res table for shared library entries #9922
- Use WebSettings.getDefaultUserAgent() from RoboWebSetting if no custom User Agent is set. #9929
- Return PERMISSION_GRANTED to IPermissionManager#getPermissionRequestState calls. #9931
- Remove unnecessary
throwsdeclarations inrobolectricby @MGaetan89 in #9930 - Adapt to DisplayManagerGlobal.EVENT_DISPLAY_CHANGED rename. #9936
- Upstreaming of aosp/3436440 #9937
- Switch to use java-version-file for action/setup-java by @utzcoz in #9932
- Remove unused
ResourceTestUtilby @MGaetan89 in #9934 - Fix typos in the
:robolectricmodule by @MGaetan89 in #9933 - Add nullability annotation to the
:robolectricmodule by @MGaetan89 in #9935 - Fix targetSdkVersion from Config/manifest override by @utzcoz in #9938
- Update assertions in the
:robolectricmodule by @MGaetan89 in #9939 - Remove unnecessary casts in the
:robolectricmodule by @MGaetan89 in #9941 - Add/remove
final/staticmodifiers in the:robolectricmodule by @MGaetan89 in #9942 - Fix various warnings in the
:robolectricmodule by @MGaetan89 in #9943 - ci: Remove JDK version from step name by @utzcoz in #9946
- Use
ApplicationProvider.getApplicationContext()instead ofbuildActivity()by @MGaetan89 in #9944 - Bump the android-gradle-plugin group with 3 updates by @dependabot in #9947
- Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.0.BETA4 to 7.0.1 by @dependabot in #9948
- Temporaily define ro.vendor.api_level and register corresponding system features. #9951
- Support getLatency() for ShadowAudioTrack #9954
- Add ShadowSettings.ShadowSecure.remove #9955
- Adds support for the set, get and remove widget preview methods. #9956
- Add badly needed Javadoc for HelperTestRunner #9960
- Clean up Truth assertions when using isTrue #9962
- Add migration info to
ShadowContentResolverdeprecated methods by @MGaetan89 in #9964 - Use
org.junit.Assertinstead ofjunit.framework.Assertby @MGaetan89 in #9963 - Use lambdas and method references in
:robolectricby @MGaetan89 in #9957 - Add
ShadowArrayAdapter#getDropDownViewResourceId()by @MGaetan89 in #9961 - Use Truth's
hasSize()to check iterable size by @MGaetan89 in #9967 - Enable native SQLite on Windows by @MGaetan89 in #9924
- Bump androidx.compose:compose-bom from 2024.12.01 to 2025.01.00 in the androidx group by @dependabot in #9971
- Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.1 to 7.0.2 by @dependabot in #9973
- Bump com.googlecode.libphonenumber:libphonenumber from 8.13.52 to 8.13.53 by @dependabot in #9974
- Bump org.bouncycastle:bcprov-jdk18on from 1.79 to 1.80 by @dependabot in #9972
- Fix various typos by @MGaetan89 in #9970
- Remove redundant
@TextLayoutModeannotation by @MGaetan89 in #9975 - Avoid updating the SQLite mode in SandboxManager.getAndroidSandbox #9977
- Add getWallpaperId(int witch) in ShadowWallpaperManager #9978
- Bump Truth to 1.4.4 by @MGaetan89 in #9981
- Bump Jacoco to 0.8.12 by @MGaetan89 in #9982
- Upgrade Hamcrest to 3.0 by @MGaetan89 in #9980
- Update Mockk to 1.13.16 by @MGaetan89 in #9985
- Add basic
@ClassRulesupport for Robolectric tests #9986 - Lazily initialize member variables in RobolectricTestParameterInjector.DelegateHelperTestRunner #9987
- Make Choreographer frame data more accurate. #9991
- Support copies of bytes as well. #9992
- Add missing
finalmodifier in:shadows:frameworkby @MGaetan89 in #9993 - Remove redundant casts in
:shadows:frameworkby @MGaetan89 in #9994 - Replace C-style array declaration with Java style in
:shadows:frameworkby @MGaetan89 in #9995 - Remove explicit type declaration in
:shadows:frameworkby @MGaetan89 in #9996 - Bump Gradle to 8.12.1 by @MGaetan89 in #9997
- Replace anonymous classes with lambdas in
:shadows:frameworkby @MGaetan89 in #9998 - Update links to reference implementation in AOSP by @MGaetan89 in #10005
- Fix broken references in Javadoc in
:shadows:frameworkby @MGaetan89 in #10003 - Add setMagnificationConfig and getMagnificationConfig in ShadowMagnificationController #10006
- Fix task name in
ShadowAlwaysOnHotwordDetectorby @MGaetan89 in #10000 - Bump roborazzi from 1.39.0 to 1.40.1 by @dependabot in #10007
- Bump kotlin from 2.1.0 to 2.1.10 by @dependabot in #10008
- Add missing nullability annotations to
:shadows:frameworkby @MGaetan89 in #9999 - Update outdated
minSdkparameters by @MGaetan89 in #10009 - Bump mockito from 4.11.0 to 5.15.2 by @MGaetan89 in #9984
- ctesque: Extract application context to test class' initialization by @utzcoz in #10010
- Remove redundant variable initialization in
:shadows:frameworkby @MGaetan89 in #10002 - Add getIdleConnectionTimeout and getOpenParams to ShadowSQLiteOpenHelper #10004
- Replace JavaX Annotation
jsr250-apiwithjavax.annotation-apiby @MGaetan89 in #9983 - Update
ShadowNativeColorSpaceTestfrom AOSP by @MGaetan89 in #10011 - Update generation of
Shadows.javaby @MGaetan89 in #9917 - Don't access static fields via instance in
:shadows:frameworkby @MGaetan89 in #10018 - Use
@RequiresApiinstead of@TargetApiin:shadows:frameworkby @MGaetan89 in #10019 - Bump androidx.compose:compose-bom from 2025.01.00 to 2025.01.01 in the androidx group by @dependabot in #10020
- Bump com.google.code.gson:gson from 2.11.0 to 2.12.1 by @dependabot in #10021
- Bump com.googlecode.libphonenumber:libphonenumber from 8.13.53 to 8.13.54 by @dependabot in #10022
- Add
ContentResolver#notifyChange(Collection<Uri>, ContentObserver, int)by @MGaetan89 in #9966 - Remove highly obsolete org.robolectric.util.Join #10026
- [:shadows:framework] Update collections/arrays usages by @MGaetan89 in #10023
- Delete the obsolete org.robolectric.util.Consumer #10030
- [:shadows:framework] Remove redundant variable usages by @MGaetan89 in #10027
- Remove Robolectric Util.parseInt #10033
- Ignore error logs from FeatureFlagsImpl. #10034
- Added some missing listeners notification when tests are not passing. #10039
- Add a temporary way to trigger the back button via a right-click popup menu #10040
- chore: Configure Renovate by @renovate in #10038
- Set the default Choreographer frame delay in Robolectric to 15 ms (60 fps) #10042
- Throws Exceptions when registerReceiver has unexpected exported flags by @utzcoz in #9940
- Fix generic usage on
AsyncTaskshadows by @MGaetan89 in #10043 - Fix various warnings in
:shadows:frameworkby @MGaetan89 in #10028 - Deprecate
AsyncTaskandAsyncTaskLoadershadows by @MGaetan89 in #10044 - Address a couple of warnings in
:robolectricby @MGaetan89 in #10045 - Restrict snapshot release to the main repo by @MGaetan89 in #10046
- Update
validate_commit_message.ymlto userenovate[bot]by @MGaetan89 in #10053 - Update dependency com.googlecode.libphonenumber:libphonenumber to v8.13.55 by @renovate in #10049
- Update Android Gradle Plugin by @renovate in #10048
- Update roborazzi to v1.42.0 by @renovate in #10052
- Update dependency org.yaml:snakeyaml to v2.4 by @renovate in #10051
- Add FeatureFlagsImplExport to the list of unpreventable log tags. #10054
- Ignore Play Services in Renovate by @MGaetan89 in #10056
- Update AndroidX by @renovate in #10050
ShadowMediaCodecmust reset state in native_start #10059- Replace usages of
ImmutableMap#build()withImmutableMap#buildOrThrow()by @MGaetan89 in #10064 - Update dependency io.gitlab.arturbosch.detekt to v1.23.8 by @renovate in #10066
- Remove dead code in Reflector and UnsafeAccess #10071
- Fix ShadowUsageStatsManager in gradle environments #10073
- Add test case to
ShadowHandlerTestby @MGaetan89 in #10076 - Avoid using SetSystemPropertyRule in ctesque tests #10077
- Add some small changes to AndroidConfigurer #10078
- Add custom instrumentation configuration for the Simulator #10079
- Install a fake MediaProvider in Robolectric for APIs >= Q. #10072
- Use DisplayManager to get the default display in ShadowDisplay.getDefaultDisplay #10081
- Update Renovate to not update Apache HttpComponents by @MGaetan89 in #10082
- Add
ShadowTelephonyManager#getIccAuthentication()andShadowTelephonyManager#setIccAuthentication()by @MGaetan89 in #10065 - Remove
FsFilefrom:resourcesby @MGaetan89 in #10047 - Update Android Gradle Plugin by @renovate in #10084
- Update dependency io.mockk:mockk to v1.13.17 by @renovate in #10086
- Update roborazzi to v1.43.0 by @renovate in #10089
- Update AndroidX by @renovate in #10087
- Configure Renovate to ignore
androidx.fragment:fragmentin:shadows:playservicesby @MGaetan89 in #10091 - Update dependency com.googlecode.libphonenumber:libphonenumber to v9 by @renovate in #10090
- Update dependency gradle to v8.13 by @renovate in #10088
- Add ShadowAudioTrack support for AudioTrack.getBufferSizeInFrames() #10093
- Add support for CardEmulation pollingLoopPatternFilter methods #10092
- Add a extension mechanism to the simulator to let you customize the popup menu #10097
- Remove
InvokeDynamicClassInstrumentorby @MGaetan89 in #10083 - Update mockito monorepo to v5.16.0 by @renovate in #10101
- Update Android Gradle Plugin by @renovate in #10100
- Update AGP group in Renovate configuration by @MGaetan89 in #10102
- Remove the deprecated
ShadowMap.convertToShadowName(String)method by @MGaetan89 in #10095 - Remove deprecated
DependencyResolver#getLocalArtifactUrls(DependencyJar)by @MGaetan89 in #10099 - Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.1 by @renovate in #10107
- Update mockito monorepo to v5.16.1 by @renovate in #10108
- Remove deprecated methods in
AndroidManifestby @MGaetan89 in #10098 - Support Comment and Whitespace Stripping in Robolectric's
PluginFinderforMETA-INF/services/*file reading #10110 - Remove unused
robolectric.disableInitialAwakenScrollBarsflag #10111 - Remove the
SdkPickerclass by @MGaetan89 in #10105 - Add
isBackupServiceActivetoShadowBackupManager#10109 - Remove the RemoteAnimationTarget parameter from BackMotionEvent's call. #10112
- Add an API to disable Robolectric's ShadowView.AnimationRunner #10113
- Update PackageManager shadows to correctly perform getApplicationInfo() contract when th package is not present. #10114
- Remove deprecated methods in
Fsby @MGaetan89 in #10106 - Update deprecation message for
Robolectric.AttributeSetBuilderby @MGaetan89 in #10115 - Enable realistic View animations in the simulator #10117
- Inject a Motion event at simulator startup #10118
- Update kotlin monorepo to v2.1.20 by @renovate in #10127
- Update roborazzi to v1.43.1 by @renovate in #10129
- Update dependency androidx.compose:compose-bom to v2025.03.00 by @renovate in #10130
- Update dependency com.ibm.icu:icu4j to v77 by @renovate in #10131
- Update error.prone to v2.37.0 by @renovate in #10132
- Update Dockerfile for devcontainer by @MGaetan89 in #10133
- CellIdentityNrBuilder's default NCI should be UNAVAILABLE_LONG #10134
- Fix function signature of BackMotionEvent for B and the Parcel of StorageStats #10135
- Fixes pulled from Android Google. #10136
- Simplify jar arguments to SimulatorMain #10139
- Add support to ShadowSurfaceView to emit onSurfaceChanged() calls #10137
- Add support for CellInfo construction for GSM and WCDMA #10142
- Update test case in
FocusRequesterTestby @MGaetan89 in #10144 - Remove deprecated
ManifestIdentifierconstructor by @MGaetan89 in #10121 - Update guava monorepo to v33.4.6-jre by @renovate in #10126
- ShadowParcelFileDescriptor: Improve dup() for CreatePipe by reopening the file #10145
- Update to google-java-format 1.26.0 by @MGaetan89 in #10146
- Update Android Gradle Plugin by @renovate in #10147
- Update dependency androidx.compose:compose-bom to v2025.03.01 by @renovate in #10148
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.2 by @renovate in #10150
- Update asm to v9.8 by @renovate in #10151
- Add a unit test for
CollectionInfo.obtain()by @MGaetan89 in #10152 - Replace deprecated usages of
ExpectedException.none()by @MGaetan89 in #10149 - ShadowServiceManager gets Bluetooth service name from BluetoothAdapter if needed #10153
- Fix order of for processing ShadowMediaCodec buffer queues #10155
- Remove unnecessary Lollipop references by @MGaetan89 in #10157
- Deprecate the
:shadows:playservicesmodule by @MGaetan89 in #10124 - Remove TestUtil.resetSystemProperty #10161
- Add receiver export flag validation behind a flag by @hoisie in #10160
- Use fully-qualified RuntimeEnvironment class name in ShadowProviderGenerator by @hoisie in #10159
- Fix shadows for AlwaysOnHotwordDetector.RefreshAvailabil{,i}tyTask by @hoisie in #10162
- Shadow of
TelephonyManager: AddisDeviceVoiceCapable,getVoiceActivationState, andgetDataActivationStatemethods. #10140 - Update dependency org.jacoco:org.jacoco.agent to v0.8.13 by @renovate in #10163
- Update mockito monorepo to v5.17.0 by @renovate in #10165
- Update dependency androidx.recyclerview:recyclerview to v1.4.0 by @renovate in #10164
- Update ShadowSatelliteManager for new Android B function changes. #10170
- Add a builder function to set the SDK instead of always taking latest. #10172
- Update ShadowCameraDeviceImpl constructor to apply to baklava+. #10177
- Extend support of
ShadowRoleManagerto additional API #10178 - Add test to
PersistableBundleby @MGaetan89 in #10180 - Fix
RobolectricTestRunnerMultiApiTestby @MGaetan89 in #10167 - Remove deprecated methods in
Qualifiersby @MGaetan89 in #10179 - Use
Objects.requireNonNull()instead ofPreconditions.checkNotNull()from Guava by @MGaetan89 in #10175 - Update error on AttributeSetBuilderImpl to point users towards API level. #10181
- Remove the deprecated
XmlResourceParserImplconstructor. by @MGaetan89 in #10182 - Remove some deprecated methods in
ShadowApplicationby @MGaetan89 in #10183 - Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.3 by @renovate in #10186
- Update dependency com.diffplug.spotless:spotless-plugin-gradle to v7.0.3 by @renovate in #10185
- Remove deprecated
ShadowApplication#getAppWidgetManager()method by @MGaetan89 in #10184 - Migrate to
Objects#requireNonNull()by @MGaetan89 in #10188 - Get advertisement data from ShadowBluetoothAdvertiser. #10189
- Remove deprecated
RoboSettingsby @MGaetan89 in #10187 - fixed negative ids that which cause ArrayOutOfBounds by @alphapaca in #10104
- Remove deprecated
PackageItemData#getClassName()method by @MGaetan89 in #10190 - Remove deprecated
ShadowApplication#getBluetoothAdapter()method by @MGaetan89 in #10191 - Fix two potential ConcurrentModificationExceptions in ShadowLauncherApps #10194
- Use CopyOnWriteArrayList for ShadowDisplayManagerGlobal.callbacks #10195
- Remove ShadowApplication.getSingleton #10196
- Update RoboSettings to check system property at method invocation #10197
- Mark Android 14 as released by @MGaetan89 in #10198
- Add Robolectric ShadowUserManager#isAdminUser #10200
- Remove the deprecated
ConfigMergerclass by @MGaetan89 in #10199 - Restore the intent of a RobolectricTestRunnerMultiApiTest test by @hoisie in #10203
- Remove custom
Providerclass by @MGaetan89 in #10204 - Add basic build file for the simulator by @hoisie in #10205
- Migrate
simulator/build.gradleto Kotlin DSL by @MGaetan89 in #10207 - Un-deprecate ShadowBluetoothAdapter.setEnabled #10210
- Add new nativeSetConfiguration native method #10214
- Remove deprecated
Scheduler#idleConstantly()by @MGaetan89 in #10213 - Update dependency io.mockk:mockk to v1.14.0 by @renovate in #10217
- Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-android to v1.10.2 by @renovate in #10215
- Update guava monorepo to v33.4.8-jre by @renovate in #10216
- Update error.prone to v2.38.0 by @renovate in #10219
- Update dependency net.ltgt.errorprone to v4.2.0 by @renovate in #10218
- Update dependency com.google.code.gson:gson to v2.13.0 by @renovate in #10221
- Ensure the native runtime is loaded when HardwareRenderer.preload is called #10222
- Remove deprecated
ShadowApplication#getForegroundThreadScheduler()by @MGaetan89 in #10212 - Update AndroidX by @renovate in #10220
- Remove deprecated
ShadowApplication#getInstance()by @MGaetan89 in #10206 - Add support for createBond for Le bond mechanism in Roboelectric Shadows. #10223
- Deprecate various Scheduler-related public APIs in Robolectric #10224
- Deprecate ShadowApplication.runBackgroundTasks #10225
- Avoid the use of ImmutableMap.buildOrThrow in ShadowSettings.ShadowGlobal #10227
- Add method to set SKU in ShadowBuild #10228
- Remove unused resources from
integration_tests:nativegraphicsby @MGaetan89 in #9835 - Add tests for
ShadowContextImpl#setSystemService()by @MGaetan89 in #10193 - Support
@empty/@nullinXmlResourceParserImplby @MGaetan89 in #10211 - Update Android Gradle Plugin by @renovate in #10232
- Update AndroidX by @renovate in #10233
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.4 by @renovate in #10234
- Update dependency com.google.code.gson:gson to v2.13.1 by @renovate in #10235
- Remove deprecated
Config#packageName()by @MGaetan89 in #10238 - Handle short name version when the SDK is not finalized #10241
- Use a valid PackageManager.getApplicationIcon by default #10242
- Split out TestAccessibilityService class which is used in multiple Shadow tests. #10243
- Update dependency gradle to v8.14 by @renovate in #10236
- Remove unused
ThrowingManifestfrom tests by @MGaetan89 in #10240 - Remove deprecated
Config#resourceDir()by @MGaetan89 in #10239 - ShadowNsdManager testability enhancements. #10247
- Add sim capabilities and activation state related shadows functions #10245
- Make it possible for ShadowContentResolver to return FileNotFound in tests. #10249
- Remove unnecessary config block in DeployedRoboJavaModulePlugin by @hoisie in #10248
- Remove deprecated
Config#libraries()by @MGaetan89 in #10250 - Remove deprecated
Config#assetDir()by @MGaetan89 in #10246 - Fix CheckReturnValue lint error in ShadowAudioEffectTest #10251
- Update ShadowBluetoothAdatper.setScanMode to be public #10252
- Adds robolectric shadow classes for AccessibilityInputConnection and InputMethod #10230
- Add a highly experimental gradle plugin to run the Robolectric simulator #10258
- Update dependency io.mockk:mockk to v1.14.2 by @renovate in #10259
- Remove deprecated
MavenManifestFactoryby @MGaetan89 in #10254 - Migrate manual system properties to
SetSystemPropertyRuleby @MGaetan89 in #10257 - gradle: Migrate deprecated device to allDevices for GMD by @utzcoz in #10261
- Use Gradle API to select AAR dependencies by @MGaetan89 in #10264
- Close the SQLiteDatabase associated with FakeMediaProvider after tests #10265
- Remove unnecessary
@Config(manifest)usages by @MGaetan89 in #10231 - Update
google-java-formatto 1.27.0 by @MGaetan89 in #10267 - Add a simple repro case for the MoveTo Path issue. #9989
- Support API format using WindowRelayoutResult to pass parameters #10272
- Simplify MouseHandler #10273
- Simulator misc improvements by @utzcoz in #10277
- Reland SDK35 for Android Emulator testing on CI by @utzcoz in #9945
- fix(deps): update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.5 by @renovate in #10280
- chore(deps): update dependency com.android.library to v8.10.0 by @renovate in #10281
- fix(deps): update dependency com.android.tools:common to v31.10.0 by @renovate in #10283
- fix(deps): update dependency androidx.compose:compose-bom to v2025.05.00 by @renovate in #10282
- Increase PR limit for Renovate by @MGaetan89 in #10284
- integration_tests: Exclude androidTest for modules that not required by @utzcoz in #10279
- Add
getDefaultSensor(int type, boolean wakeUpSensor)and corresponding tests. #10276 - Define a builder for
telephony.SignalStrength#10286 - Use Gradle Kotlin DSL in Simulator Gradle Plugin by @MGaetan89 in #10278
- Remove nonsensical helper method from ShadowAlertDialog #10290
- Synchronize RenderNodeAnimator with Robolectric's Choreographer #10289
- Adjust to post-Baklava indevelopment Android framework changes. #10293
- Remove SoftThreadLocal #10296
- Support upcoming resized signature #10297
- Replace provider created in ShadowWebView with a deep proxy. #10298
- Remove the
deploy-snapshot.shscript by @MGaetan89 in #10300 - fix(deps): update kotlin monorepo to v2.1.21 by @renovate in #10301
- Add ShadowRemoteViewsAdapter #9965
- Remove the
release-notes-template.mdtemplate by @MGaetan89 in #10304 - Remove the
update-cpp.shscript by @MGaetan89 in #10303 - Remove useRealScrolling check in ShadowAbsListView #10306
- Change
ShadowSensorManager.getDefaultSensorto retrieve the sensor based onwakeUpSensorflag instead of setting. #10307 - Add functionality to block shadow BluetoothSocket connections until other events. #10308
- Fix failing test on
masterby @MGaetan89 in #10305 - Add method for injecting custom IOExceptions. #10309
- Add property to allow tests to declare platform permissions #10312
- Add configuration for Gemini Code Assist by @MGaetan89 in #10311
- Add a top-level Choreographer frame callback while the simulator is running #10313
- Update dependency com.googlecode.libphonenumber:libphonenumber to v9.0.6 by @renovate in #10317
- Update dependency gradle to v8.14.1 by @renovate in #10318
- Add write descriptor function for API 33 in ShadowBluetoothGatt by @KeithYokoma in #10310
- Update mockito monorepo to v5.18.0 by @renovate in #10319
- Update AndroidX by @renovate in #10316
- Update
@Config'sminSdkin some tests by @MGaetan89 in #10321 - Remove obsolete InDevelopment annotation from shadow methods. #10322
- Merge branch 'google' into 'master' by @hoisie in #10323
- Make Robolectric simulator background white and clear the screen. #10274
- Update technique to locate the local resource apk by @hoisie in #10326
- Add some additional JVM flags for the simulator by @hoisie in #10327
- Fix Java code style by @MGaetan89 in #10328
- Add implementation for removeBond to ShadowCompanionDeviceManager. #10325
- Use
Config.OLDEST_SDKin tests instead of hardcoded value by @MGaetan89 in #10331 - Add more meaningful comments for ShadowUIModeManagerTest by @utzcoz in #10332
- Reduce public fields for ShadowUIModeManager by @utzcoz in #10333
- Update Android Gradle Plugin by @renovate in #10334
- Update mcr.microsoft.com/devcontainers/base Docker tag to v2 by @renovate in #10338
- Update roborazzi to v1.44.0 by @renovate in #10337
- Update dependency com.diffplug.spotless:spotless-plugin-gradle to v7.0.4 by @renovate in #10336
- Enable
SpannedStringassertion inResourcesTestby @MGaetan89 in #10341 - Remove
v14qualifier by @MGaetan89 in #10345 - Replace PowerMock's Xstream module with Objenesis by @MGaetan89 in #10346
- Fix variable name in
GetInstallerPackageNameModeConfigurer#valueFrom()by @MGaetan89 in #10344 - Update
ActivityData#getTargetAttr()to use itsxmlnsargument by @MGaetan89 in #10343 - Add missing SCM metadata when generating POM files by @hoisie in #10348
- Rename ShadowUIModeManager to ShadowUiModeManager by @utzcoz in #10340
- Update the SimulatorPlugin for publishing in the Gradle Plugin Portal by @hoisie in #10349
- Allow for a gradual migration from ShadowUIModeManager to ShadowUiModeManager by @hoisie in #10352
- Refactor test configuration into a shared function by @MGaetan89 in #10351
- Reuse
ShadowUiModeManagerinShadowUiModeManagerTestby @MGaetan89 in #10356 - Deduplicate
MetaData#getColor()andResourceHelper#getColor()by @MGaetan89 in #10355 - Provide an initial value for DeprecatedTestRunnerDefaultConfigProvider.globalConfig #10357
- Wire up the VirtualDevice#getDisplayIds() in the ShadowVirtualDeviceManager. #10358
- Remove unused field in
Sandboxby @MGaetan89 in #10354 - Remove the call to setAlwaysConsumeSystemBars in ShadowWindowManagerImpl #10363
- Revert recent ShadowUIManager rename changes by @utzcoz in #10362
- Temporarily make ShadowUIModeManager.currentModeType public by @hoisie in #10364
- Set the simulator-gradle-plugin version to 1.0-SNAPSHOT by @hoisie in #10366
New Contributors
- @yschimke made their first contribution in #9801
- @renovate made their first contribution in #10038
- @alphapaca made their first contribution in #10104
- @KeithYokoma made their first contribution in #10310
Full Changelog: robolectric-4.14.1...robolectric-4.15