1 package org.robolectric.android.internal;
2 
3 import static com.google.common.base.Preconditions.checkNotNull;
4 
5 import android.app.Application;
6 import androidx.test.internal.platform.content.PermissionGranter;
7 import androidx.test.platform.app.InstrumentationRegistry;
8 import org.robolectric.shadow.api.Shadow;
9 import org.robolectric.shadows.ShadowApplication;
10 
11 /** A {@link PermissionGranter} that runs on a local JVM with Robolectric. */
12 public class LocalPermissionGranter implements PermissionGranter {
13 
14   private String[] permissions;
15 
16   @Override
addPermissions(String... permissions)17   public void addPermissions(String... permissions) {
18     this.permissions = permissions;
19   }
20 
21   @Override
requestPermissions()22   public void requestPermissions() {
23     checkNotNull(permissions);
24     Application application =
25         (Application) InstrumentationRegistry.getInstrumentation().getTargetContext();
26     ShadowApplication shadowApplication = Shadow.extract(application);
27     shadowApplication.grantPermissions(permissions);
28   }
29 }
30