aboutsummaryrefslogtreecommitdiff
path: root/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeThreadedRenderer.java
diff options
context:
space:
mode:
Diffstat (limited to 'shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeThreadedRenderer.java')
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeThreadedRenderer.java183
1 files changed, 183 insertions, 0 deletions
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeThreadedRenderer.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeThreadedRenderer.java
new file mode 100644
index 000000000..e9ea4645e
--- /dev/null
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeThreadedRenderer.java
@@ -0,0 +1,183 @@
+package org.robolectric.shadows;
+
+import static android.os.Build.VERSION_CODES.O;
+import static android.os.Build.VERSION_CODES.P;
+
+import android.graphics.Bitmap;
+import android.view.ThreadedRenderer;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.nativeruntime.DefaultNativeRuntimeLoader;
+import org.robolectric.nativeruntime.HardwareRendererNatives;
+import org.robolectric.shadows.ShadowNativeThreadedRenderer.Picker;
+
+/** Shadow for {@link ThreadedRenderer} that is backed by native code */
+@Implements(value = ThreadedRenderer.class, minSdk = O, maxSdk = P, shadowPicker = Picker.class)
+public class ShadowNativeThreadedRenderer {
+
+ // ThreadedRenderer specific functions. These do not exist in HardwareRenderer
+ @Implementation
+ protected static boolean nSupportsOpenGL() {
+ return false;
+ }
+
+ // HardwareRenderer methods. These exist in both ThreadedRenderer and HardwareRenderer.
+ @Implementation
+ protected static void nRotateProcessStatsBuffer() {
+ HardwareRendererNatives.nRotateProcessStatsBuffer();
+ }
+
+ @Implementation
+ protected static void nSetProcessStatsBuffer(int fd) {
+ HardwareRendererNatives.nSetProcessStatsBuffer(fd);
+ }
+
+ @Implementation
+ protected static int nGetRenderThreadTid(long nativeProxy) {
+ return HardwareRendererNatives.nGetRenderThreadTid(nativeProxy);
+ }
+
+ @Implementation
+ protected static long nCreateRootRenderNode() {
+ DefaultNativeRuntimeLoader.injectAndLoad();
+ return HardwareRendererNatives.nCreateRootRenderNode();
+ }
+
+ @Implementation
+ protected static long nCreateProxy(boolean translucent, long rootRenderNode) {
+ return HardwareRendererNatives.nCreateProxy(translucent, rootRenderNode);
+ }
+
+ @Implementation
+ protected static void nDeleteProxy(long nativeProxy) {
+ HardwareRendererNatives.nDeleteProxy(nativeProxy);
+ }
+
+ @Implementation
+ protected static boolean nLoadSystemProperties(long nativeProxy) {
+ return HardwareRendererNatives.nLoadSystemProperties(nativeProxy);
+ }
+
+ @Implementation
+ protected static void nSetName(long nativeProxy, String name) {
+ HardwareRendererNatives.nSetName(nativeProxy, name);
+ }
+
+ @Implementation
+ protected static void nSetStopped(long nativeProxy, boolean stopped) {
+ HardwareRendererNatives.nSetStopped(nativeProxy, stopped);
+ }
+
+ @Implementation
+ protected static void nSetOpaque(long nativeProxy, boolean opaque) {
+ HardwareRendererNatives.nSetOpaque(nativeProxy, opaque);
+ }
+
+ @Implementation
+ protected static int nSyncAndDrawFrame(long nativeProxy, long[] frameInfo, int size) {
+ return HardwareRendererNatives.nSyncAndDrawFrame(nativeProxy, frameInfo, size);
+ }
+
+ @Implementation
+ protected static void nDestroy(long nativeProxy, long rootRenderNode) {
+ HardwareRendererNatives.nDestroy(nativeProxy, rootRenderNode);
+ }
+
+ @Implementation
+ protected static void nRegisterAnimatingRenderNode(long rootRenderNode, long animatingNode) {
+ HardwareRendererNatives.nRegisterAnimatingRenderNode(rootRenderNode, animatingNode);
+ }
+
+ @Implementation
+ protected static void nRegisterVectorDrawableAnimator(long rootRenderNode, long animator) {
+ HardwareRendererNatives.nRegisterVectorDrawableAnimator(rootRenderNode, animator);
+ }
+
+ @Implementation
+ protected static long nCreateTextureLayer(long nativeProxy) {
+ return HardwareRendererNatives.nCreateTextureLayer(nativeProxy);
+ }
+
+ @Implementation
+ protected static void nBuildLayer(long nativeProxy, long node) {
+ HardwareRendererNatives.nBuildLayer(nativeProxy, node);
+ }
+
+ @Implementation
+ protected static void nPushLayerUpdate(long nativeProxy, long layer) {
+ HardwareRendererNatives.nPushLayerUpdate(nativeProxy, layer);
+ }
+
+ @Implementation
+ protected static void nCancelLayerUpdate(long nativeProxy, long layer) {
+ HardwareRendererNatives.nCancelLayerUpdate(nativeProxy, layer);
+ }
+
+ @Implementation
+ protected static void nDetachSurfaceTexture(long nativeProxy, long layer) {
+ HardwareRendererNatives.nDetachSurfaceTexture(nativeProxy, layer);
+ }
+
+ @Implementation
+ protected static void nDestroyHardwareResources(long nativeProxy) {
+ HardwareRendererNatives.nDestroyHardwareResources(nativeProxy);
+ }
+
+ @Implementation
+ protected static void nTrimMemory(int level) {
+ HardwareRendererNatives.nTrimMemory(level);
+ }
+
+ @Implementation
+ protected static void nOverrideProperty(String name, String value) {
+ HardwareRendererNatives.nOverrideProperty(name, value);
+ }
+
+ @Implementation
+ protected static void nFence(long nativeProxy) {
+ HardwareRendererNatives.nFence(nativeProxy);
+ }
+
+ @Implementation
+ protected static void nStopDrawing(long nativeProxy) {
+ HardwareRendererNatives.nStopDrawing(nativeProxy);
+ }
+
+ @Implementation
+ protected static void nNotifyFramePending(long nativeProxy) {
+ HardwareRendererNatives.nNotifyFramePending(nativeProxy);
+ }
+
+ @Implementation
+ protected static void nAddRenderNode(long nativeProxy, long rootRenderNode, boolean placeFront) {
+ HardwareRendererNatives.nAddRenderNode(nativeProxy, rootRenderNode, placeFront);
+ }
+
+ @Implementation
+ protected static void nRemoveRenderNode(long nativeProxy, long rootRenderNode) {
+ HardwareRendererNatives.nRemoveRenderNode(nativeProxy, rootRenderNode);
+ }
+
+ @Implementation
+ protected static void nDrawRenderNode(long nativeProxy, long rootRenderNode) {
+ HardwareRendererNatives.nDrawRenderNode(nativeProxy, rootRenderNode);
+ }
+
+ @Implementation
+ protected static void nSetContentDrawBounds(
+ long nativeProxy, int left, int top, int right, int bottom) {
+ HardwareRendererNatives.nSetContentDrawBounds(nativeProxy, left, top, right, bottom);
+ }
+
+ @Implementation
+ protected static Bitmap nCreateHardwareBitmap(long renderNode, int width, int height) {
+ return HardwareRendererNatives.nCreateHardwareBitmap(renderNode, width, height);
+ }
+
+ /** Shadow picker for {@link ThreadedRenderer}. */
+ public static final class Picker extends GraphicsShadowPicker<Object> {
+ public Picker() {
+ super(ShadowThreadedRenderer.class, ShadowNativeThreadedRenderer.class);
+ }
+ }
+}