Fix issue with native fonts dir.
Test: atest -c MyRoboTests
Bug: 263483214
Change-Id: Ib71c3c332d4ea19ef961e8ecf89c2c462dc33b66
diff --git a/robolectric/src/main/java/org/robolectric/android/internal/AndroidTestEnvironment.java b/robolectric/src/main/java/org/robolectric/android/internal/AndroidTestEnvironment.java
index 267cc6d..cdcac2b 100755
--- a/robolectric/src/main/java/org/robolectric/android/internal/AndroidTestEnvironment.java
+++ b/robolectric/src/main/java/org/robolectric/android/internal/AndroidTestEnvironment.java
@@ -2,6 +2,7 @@
import static android.os.Build.VERSION_CODES.P;
import static android.os.Build.VERSION_CODES.Q;
+import static android.os.Build.VERSION_CODES.O;
import static org.robolectric.shadow.api.Shadow.newInstanceOf;
import static org.robolectric.util.reflector.Reflector.reflector;
@@ -48,6 +49,8 @@
import org.robolectric.annotation.Config;
import org.robolectric.annotation.ConscryptMode;
import org.robolectric.annotation.LooperMode;
+import org.robolectric.annotation.GraphicsMode;
+import org.robolectric.annotation.GraphicsMode.Mode;
import org.robolectric.annotation.experimental.LazyApplication.LazyLoad;
import org.robolectric.config.ConfigurationRegistry;
import org.robolectric.internal.ResourcesMode;
@@ -145,6 +148,8 @@
ShadowLegacyLooper.internalInitializeBackgroundThreadScheduler();
}
+ exportNativeruntimeProperties();
+
if (!loggingInitialized) {
ShadowLog.setupLogging();
loggingInitialized = true;
@@ -710,4 +715,11 @@
}
return receiverClassName;
}
+
+ private static void exportNativeruntimeProperties() {
+ GraphicsMode.Mode graphicsMode = ConfigurationRegistry.get(GraphicsMode.Mode.class);
+ System.setProperty(
+ "robolectric.nativeruntime.enableGraphics",
+ Boolean.toString(graphicsMode == Mode.NATIVE && RuntimeEnvironment.getApiLevel() >= O));
+ }
}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeFontsFontFamily.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeFontsFontFamily.java
index 360f613..fcdd7d4 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeFontsFontFamily.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeFontsFontFamily.java
@@ -2,6 +2,8 @@
import static android.os.Build.VERSION_CODES.Q;
import static android.os.Build.VERSION_CODES.S;
+import static android.os.Build.VERSION_CODES.TIRAMISU;
+import static android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
import android.graphics.fonts.FontFamily;
import org.robolectric.annotation.Implementation;
@@ -56,12 +58,18 @@
FontFamilyBuilderNatives.nAddFont(builderPtr, fontPtr);
}
- @Implementation
+ @Implementation(maxSdk=TIRAMISU)
protected static long nBuild(
long builderPtr, String langTags, int variant, boolean isCustomFallback) {
return FontFamilyBuilderNatives.nBuild(builderPtr, langTags, variant, isCustomFallback);
}
+ @Implementation(minSdk=UPSIDE_DOWN_CAKE)
+ protected static long nBuild(
+ long builderPtr, String langTags, int variant, boolean isCustomFallback, boolean isDefaultFallback) {
+ return nBuild(builderPtr, langTags, variant, isCustomFallback);
+ }
+
@Implementation
protected static long nGetReleaseNativeFamily() {
return FontFamilyBuilderNatives.nGetReleaseNativeFamily();
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowServiceManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowServiceManager.java
index aa51c52..778e196 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowServiceManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowServiceManager.java
@@ -102,6 +102,7 @@
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Resetter;
import org.robolectric.util.ReflectionHelpers;
+import android.companion.virtual.IVirtualDeviceManager;
/** Shadow for {@link ServiceManager}. */
@SuppressWarnings("NewApi")
@@ -139,6 +140,7 @@
addBinderService(Context.BLUETOOTH_SERVICE, IBluetooth.class);
addBinderService(Context.WINDOW_SERVICE, IWindowManager.class);
addBinderService(Context.NFC_SERVICE, INfcAdapter.class, true);
+ addBinderService(Context.VIRTUAL_DEVICE_SERVICE, IVirtualDeviceManager.class);
if (RuntimeEnvironment.getApiLevel() >= JELLY_BEAN_MR1) {
addBinderService(Context.USER_SERVICE, IUserManager.class);