• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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