1 package org.robolectric.shadows; 2 3 import static org.robolectric.util.reflector.Reflector.reflector; 4 5 import android.os.Build; 6 import android.os.StrictMode; 7 import android.os.StrictMode.VmPolicy; 8 import org.robolectric.RuntimeEnvironment; 9 import org.robolectric.annotation.Implementation; 10 import org.robolectric.annotation.Implements; 11 import org.robolectric.shadow.api.Shadow; 12 import org.robolectric.util.reflector.Accessor; 13 import org.robolectric.util.reflector.ForType; 14 import org.robolectric.util.reflector.Static; 15 16 @Implements(value = StrictMode.VmPolicy.class, minSdk = Build.VERSION_CODES.P) 17 public class ShadowStrictModeVmPolicy { 18 19 @Implementation __staticInitializer__()20 protected static void __staticInitializer__() { 21 Shadow.directInitialize(StrictMode.VmPolicy.class); 22 23 if (RuntimeEnvironment.getApiLevel() >= Build.VERSION_CODES.P) { 24 // if VmPolicy was referenced first, sVmPolicy won't be set properly. So force a 25 // re-initialization. 26 reflector(_StrictMode_.class).setVmPolicy(VmPolicy.LAX); 27 } 28 } 29 30 /** Accessor interface for {@link StrictMode}'s internals. */ 31 @ForType(StrictMode.class) 32 private interface _StrictMode_ { 33 @Static 34 @Accessor("sVmPolicy") setVmPolicy(VmPolicy vmPolicy)35 void setVmPolicy(VmPolicy vmPolicy); 36 } 37 } 38