1 package org.robolectric.shadows; 2 3 import android.os.Build; 4 import android.window.WindowOnBackInvokedDispatcher; 5 import org.robolectric.RuntimeEnvironment; 6 import org.robolectric.annotation.Implements; 7 import org.robolectric.annotation.Resetter; 8 import org.robolectric.util.ReflectionHelpers; 9 10 /** Shadow for {@link WindowOnBackInvokedDispatcher}. */ 11 @Implements( 12 value = WindowOnBackInvokedDispatcher.class, 13 minSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE, 14 isInAndroidSdk = false) 15 public class ShadowWindowOnBackInvokedDispatcher { 16 private static final boolean ENABLE_PREDICTIVE_BACK_DEFAULT = 17 RuntimeEnvironment.getApiLevel() >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE 18 ? ReflectionHelpers.getStaticField( 19 WindowOnBackInvokedDispatcher.class, "ENABLE_PREDICTIVE_BACK") 20 : false; 21 setEnablePredictiveBack(boolean isEnabled)22 static void setEnablePredictiveBack(boolean isEnabled) { 23 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { 24 ReflectionHelpers.setStaticField( 25 WindowOnBackInvokedDispatcher.class, "ENABLE_PREDICTIVE_BACK", isEnabled); 26 } 27 } 28 29 @Resetter reset()30 public static void reset() { 31 ReflectionHelpers.setStaticField( 32 WindowOnBackInvokedDispatcher.class, 33 "ENABLE_PREDICTIVE_BACK", 34 ENABLE_PREDICTIVE_BACK_DEFAULT); 35 } 36 } 37