• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package android.app;
2 
3 import static com.google.common.truth.Truth.assertThat;
4 import static org.junit.Assume.assumeTrue;
5 
6 import android.content.Context;
7 import androidx.test.core.app.ActivityScenario;
8 import androidx.test.core.app.ApplicationProvider;
9 import androidx.test.ext.junit.runners.AndroidJUnit4;
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.junit.runner.RunWith;
13 import org.robolectric.testapp.TestActivity;
14 
15 /** Compatibility test for {@link WallpaperManager}. */
16 @RunWith(AndroidJUnit4.class)
17 public class WallpaperManagerTest {
18   private WallpaperManager wallpaperManager;
19   private boolean isWallpaperSupported = false;
20 
21   @Before
setUp()22   public void setUp() {
23     // Test code can't access com.android.internal config value to check whether the current running
24     // Android
25     // supports WallpaperManagerService, and it uses returned WallpaperManager's flag to check it.
26     Object manager =
27         ApplicationProvider.getApplicationContext().getSystemService(Context.WALLPAPER_SERVICE);
28     if (manager != null) {
29       wallpaperManager = (WallpaperManager) manager;
30     }
31 
32     isWallpaperSupported = wallpaperManager != null && wallpaperManager.isWallpaperSupported();
33   }
34 
35   @Test
wallpaperManager_applicationInstance_matchesExpectedBehavior()36   public void wallpaperManager_applicationInstance_matchesExpectedBehavior() {
37     try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) {
38       scenario.onActivity(
39           activity -> {
40             WallpaperManager activityWallpaperManager =
41                 (WallpaperManager) activity.getSystemService(Context.WALLPAPER_SERVICE);
42             // If WallpaperManagerService is not supported by the device, it returns a special
43             // WindowManager implementation called DisabledWallpaperManager, and it uses
44             // singleton for all Context instances.
45             if (isWallpaperSupported) {
46               assertThat(wallpaperManager).isNotSameInstanceAs(activityWallpaperManager);
47             } else {
48               assertThat(wallpaperManager).isSameInstanceAs(activityWallpaperManager);
49             }
50           });
51     }
52   }
53 
54   @Test
wallpaperManager_activityInstance_isSameAsActivityInstance()55   public void wallpaperManager_activityInstance_isSameAsActivityInstance() {
56     assumeTrue(isWallpaperSupported);
57     try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) {
58       scenario.onActivity(
59           activity -> {
60             WallpaperManager activityWallpaperManager =
61                 (WallpaperManager) activity.getSystemService(Context.WALLPAPER_SERVICE);
62             WallpaperManager anotherActivityWallpaperManager =
63                 (WallpaperManager) activity.getSystemService(Context.WALLPAPER_SERVICE);
64             assertThat(anotherActivityWallpaperManager).isSameInstanceAs(activityWallpaperManager);
65           });
66     }
67   }
68 
69   @Test
wallpaperManager_instance_retrievesSameWallpaper()70   public void wallpaperManager_instance_retrievesSameWallpaper() {
71     assumeTrue(isWallpaperSupported);
72     try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) {
73       scenario.onActivity(
74           activity -> {
75             WallpaperManager activityWallpaperManager =
76                 (WallpaperManager) activity.getSystemService(Context.WALLPAPER_SERVICE);
77 
78             WallpaperInfo applicationWallpaper = wallpaperManager.getWallpaperInfo();
79             WallpaperInfo activityWallpaper = activityWallpaperManager.getWallpaperInfo();
80 
81             assertThat(activityWallpaper).isEqualTo(applicationWallpaper);
82           });
83     }
84   }
85 }
86