1 package org.robolectric.shadows; 2 3 import static android.os.Build.VERSION_CODES.O; 4 import static com.google.common.truth.Truth.assertThat; 5 import static org.robolectric.Shadows.shadowOf; 6 7 import android.app.Activity; 8 import android.content.Context; 9 import android.content.RestrictionEntry; 10 import android.content.RestrictionsManager; 11 import android.os.Bundle; 12 import androidx.test.core.app.ApplicationProvider; 13 import androidx.test.ext.junit.runners.AndroidJUnit4; 14 import com.google.common.collect.Iterables; 15 import org.junit.Before; 16 import org.junit.Test; 17 import org.junit.runner.RunWith; 18 import org.robolectric.Robolectric; 19 import org.robolectric.android.controller.ActivityController; 20 import org.robolectric.annotation.Config; 21 22 @RunWith(AndroidJUnit4.class) 23 public final class ShadowRestrictionsManagerTest { 24 25 private RestrictionsManager restrictionsManager; 26 private Context context; 27 28 @Before setUp()29 public void setUp() { 30 context = ApplicationProvider.getApplicationContext(); 31 restrictionsManager = 32 (RestrictionsManager) context.getSystemService(Context.RESTRICTIONS_SERVICE); 33 } 34 35 @Test getApplicationRestrictions()36 public void getApplicationRestrictions() { 37 assertThat(restrictionsManager.getApplicationRestrictions()).isNull(); 38 39 Bundle bundle = new Bundle(); 40 bundle.putCharSequence("test_key", "test_value"); 41 shadowOf(restrictionsManager).setApplicationRestrictions(bundle); 42 43 assertThat( 44 restrictionsManager.getApplicationRestrictions().getCharSequence("test_key").toString()) 45 .isEqualTo("test_value"); 46 } 47 48 @Test getManifestRestrictions()49 public void getManifestRestrictions() { 50 RestrictionEntry restrictionEntry = 51 Iterables.getOnlyElement( 52 restrictionsManager.getManifestRestrictions(context.getPackageName())); 53 54 assertThat(restrictionEntry.getKey()).isEqualTo("restrictionKey"); 55 } 56 57 @Test 58 @Config(minSdk = O) restrictionsManager_activityContextEnabled_hasConsistentRestrictionsProvider()59 public void restrictionsManager_activityContextEnabled_hasConsistentRestrictionsProvider() { 60 String originalProperty = System.getProperty("robolectric.createActivityContexts", ""); 61 System.setProperty("robolectric.createActivityContexts", "true"); 62 try (ActivityController<Activity> controller = 63 Robolectric.buildActivity(Activity.class).setup()) { 64 RestrictionsManager applicationRestrictionsManager = 65 ApplicationProvider.getApplicationContext().getSystemService(RestrictionsManager.class); 66 Activity activity = controller.get(); 67 RestrictionsManager activityRestrictionsManager = 68 activity.getSystemService(RestrictionsManager.class); 69 70 assertThat(applicationRestrictionsManager).isNotSameInstanceAs(activityRestrictionsManager); 71 72 boolean applicationHasProvider = applicationRestrictionsManager.hasRestrictionsProvider(); 73 boolean activityHasProvider = activityRestrictionsManager.hasRestrictionsProvider(); 74 75 assertThat(activityHasProvider).isEqualTo(applicationHasProvider); 76 } finally { 77 System.setProperty("robolectric.createActivityContexts", originalProperty); 78 } 79 } 80 } 81