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