diff options
Diffstat (limited to 'shadows/framework/src/main/java/org/robolectric/shadows/GraphicsShadowPicker.java')
-rw-r--r-- | shadows/framework/src/main/java/org/robolectric/shadows/GraphicsShadowPicker.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/GraphicsShadowPicker.java b/shadows/framework/src/main/java/org/robolectric/shadows/GraphicsShadowPicker.java new file mode 100644 index 000000000..8916375dc --- /dev/null +++ b/shadows/framework/src/main/java/org/robolectric/shadows/GraphicsShadowPicker.java @@ -0,0 +1,32 @@ +package org.robolectric.shadows; + +import static android.os.Build.VERSION_CODES.O; + +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.GraphicsMode; +import org.robolectric.annotation.GraphicsMode.Mode; +import org.robolectric.config.ConfigurationRegistry; +import org.robolectric.shadow.api.ShadowPicker; + +/** A {@link ShadowPicker} that selects between shadows given the Graphics mode. */ +public class GraphicsShadowPicker<T> implements ShadowPicker<T> { + + private final Class<? extends T> legacyShadowClass; + private final Class<? extends T> nativeShadowClass; + + public GraphicsShadowPicker( + Class<? extends T> legacyShadowClass, Class<? extends T> nativeShadowClass) { + this.legacyShadowClass = legacyShadowClass; + this.nativeShadowClass = nativeShadowClass; + } + + @Override + public Class<? extends T> pickShadowClass() { + if (RuntimeEnvironment.getApiLevel() >= O + && ConfigurationRegistry.get(GraphicsMode.Mode.class) == Mode.NATIVE) { + return nativeShadowClass; + } else { + return legacyShadowClass; + } + } +} |