aboutsummaryrefslogtreecommitdiff
path: root/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java
diff options
context:
space:
mode:
Diffstat (limited to 'shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java')
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java
new file mode 100644
index 000000000..11e5ba867
--- /dev/null
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java
@@ -0,0 +1,50 @@
+package org.robolectric.shadows;
+
+import static android.os.Build.VERSION_CODES.O;
+import static android.os.Build.VERSION_CODES.Q;
+
+import android.graphics.NinePatch;
+import android.graphics.Rect;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.nativeruntime.DefaultNativeRuntimeLoader;
+import org.robolectric.nativeruntime.NinePatchNatives;
+import org.robolectric.shadows.ShadowNativeNinePatch.Picker;
+
+/** Shadow for {@link NinePatch} that is backed by native code */
+@Implements(
+ value = NinePatch.class,
+ minSdk = O,
+ shadowPicker = Picker.class,
+ isInAndroidSdk = false)
+public class ShadowNativeNinePatch {
+
+ @Implementation
+ protected static boolean isNinePatchChunk(byte[] chunk) {
+ DefaultNativeRuntimeLoader.injectAndLoad();
+ return NinePatchNatives.isNinePatchChunk(chunk);
+ }
+
+ @Implementation
+ protected static long validateNinePatchChunk(byte[] chunk) {
+ DefaultNativeRuntimeLoader.injectAndLoad();
+ return NinePatchNatives.validateNinePatchChunk(chunk);
+ }
+
+ @Implementation
+ protected static void nativeFinalize(long chunk) {
+ NinePatchNatives.nativeFinalize(chunk);
+ }
+
+ @Implementation(minSdk = Q)
+ protected static long nativeGetTransparentRegion(long bitmapHandle, long chunk, Rect location) {
+ return NinePatchNatives.nativeGetTransparentRegion(bitmapHandle, chunk, location);
+ }
+
+ /** Shadow picker for {@link NinePatch}. */
+ public static final class Picker extends GraphicsShadowPicker<Object> {
+ public Picker() {
+ super(ShadowNinePatch.class, ShadowNativeNinePatch.class);
+ }
+ }
+}