diff options
author | Michael Hoisie <hoisie@google.com> | 2021-11-23 16:10:05 -0500 |
---|---|---|
committer | Michael Hoisie <hoisie@google.com> | 2021-11-23 21:26:37 +0000 |
commit | 861464ef018b4abfb554707381172deb9ef9169e (patch) | |
tree | cd9118680fe6e1ec7a9e17bbe38a2901bec76ed2 | |
parent | c0637382c143788474cce3a502436b26a858f6a6 (diff) | |
download | robolectric-shadows-861464ef018b4abfb554707381172deb9ef9169e.tar.gz |
Restore PackageParser.Callback interface methods for SDK < 30
Also, add a ShadowPackageBackwardCompatibility class to handle when
multiple APIs are on the classpath.
See cl/404887745 for more details about
ShadowPackageBackwardCompatibility.
Test: m -j Run_robolectric_shadows_androidx_fragment_tests
Bug: 205007023
Change-Id: I7db22e0423bfced3d149ba0ab3f54efcc33f6489
2 files changed, 39 insertions, 0 deletions
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java new file mode 100644 index 000000000..60a465bae --- /dev/null +++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageBackwardCompatibility.java @@ -0,0 +1,29 @@ +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/ShadowPackageParser.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java index 8c2f6e1fa..494079303 100644 --- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java +++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageParser.java @@ -72,5 +72,15 @@ 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; + } } } |