4646
4747import android .app .Activity ;
4848import android .app .WallpaperColors ;
49+ import android .app .WallpaperInfo ;
4950import android .app .WallpaperManager ;
5051import android .content .BroadcastReceiver ;
5152import android .content .ComponentName ;
@@ -117,6 +118,11 @@ public class WallpaperManagerTest {
117118 private BroadcastReceiver mBroadcastReceiver ;
118119 private CountDownLatch mCountDownLatch ;
119120 private boolean mEnableWcg ;
121+
122+ // WallpaperInfo object for the built-in default wallpaper of the device.
123+ // Always null if the device uses ImageWallpaper by default.
124+ private WallpaperInfo mDefaultWallpaperInfo ;
125+
120126 private static final WindowManagerStateHelper sWindowManagerStateHelper =
121127 new WindowManagerStateHelper ();
122128
@@ -157,6 +163,9 @@ public void onReceive(Context context, Intent intent) {
157163 new IntentFilter (Intent .ACTION_WALLPAPER_CHANGED ));
158164 mEnableWcg = mWallpaperManager .shouldEnableWideColorGamut ();
159165 mWallpaperManager .clear (FLAG_SYSTEM | FLAG_LOCK );
166+ if (mDefaultWallpaperInfo == null ) {
167+ mDefaultWallpaperInfo = mWallpaperManager .getWallpaperInfo (FLAG_SYSTEM );
168+ }
160169
161170 assertWithMessage ("Home screen wallpaper must be set after setUp()" ).that (
162171 mWallpaperManager .getWallpaperId (FLAG_SYSTEM )).isAtLeast (0 );
@@ -597,8 +606,8 @@ public void setWallpaperComponent_default_multiEngine_lockScreenUnset_behavesLik
597606
598607 @ Test
599608 public void setStaticWallpaper_doesNotSetWallpaperInfo () throws IOException {
600- assertThat ( mWallpaperManager . getWallpaperInfo ( FLAG_SYSTEM )). isNull ( );
601- assertThat ( mWallpaperManager . getWallpaperInfo ( FLAG_LOCK )). isNull ( );
609+ assertNullOrDefaultWallpaper ( FLAG_SYSTEM );
610+ assertNullOrDefaultWallpaper ( FLAG_LOCK );
602611
603612 mWallpaperManager .setResource (R .drawable .icon_red , FLAG_SYSTEM );
604613 mWallpaperManager .setResource (R .drawable .icon_green , FLAG_LOCK );
@@ -609,17 +618,16 @@ public void setStaticWallpaper_doesNotSetWallpaperInfo() throws IOException {
609618
610619 @ Test
611620 public void setLiveWallpaper_homeScreen_setsHomeWallpaperInfo () {
612- assertThat ( mWallpaperManager . getWallpaperInfo ( FLAG_SYSTEM )). isNull ( );
613- assertThat ( mWallpaperManager . getWallpaperInfo ( FLAG_LOCK )). isNull ( );
621+ assertNullOrDefaultWallpaper ( FLAG_SYSTEM );
622+ assertNullOrDefaultWallpaper ( FLAG_LOCK );
614623
615624 runWithShellPermissionIdentity (() -> {
616625 setWallpaperComponentAndWait (DEFAULT_COMPONENT_NAME , FLAG_SYSTEM );
617626 });
618627
619628 assertWithMessage ("Home screen" ).that (
620629 mWallpaperManager .getWallpaperInfo (FLAG_SYSTEM )).isNotNull ();
621- assertWithMessage ("Lock screen" ).that (
622- mWallpaperManager .getWallpaperInfo (FLAG_LOCK )).isNull ();
630+ assertNullOrDefaultWallpaper (FLAG_LOCK );
623631 }
624632
625633 @ Test
@@ -641,15 +649,14 @@ public void setLiveWallpaper_lockScreen_singleEngine_setsHomeWallpaperInfo() {
641649 @ Test
642650 public void setLiveWallpaper_lockScreen_multiEngine_setsLockWallpaperInfo () {
643651 assumeTrue (mWallpaperManager .isLockscreenLiveWallpaperEnabled ());
644- assertThat ( mWallpaperManager . getWallpaperInfo ( FLAG_SYSTEM )). isNull ( );
645- assertThat ( mWallpaperManager . getWallpaperInfo ( FLAG_LOCK )). isNull ( );
652+ assertNullOrDefaultWallpaper ( FLAG_SYSTEM );
653+ assertNullOrDefaultWallpaper ( FLAG_LOCK );
646654
647655 runWithShellPermissionIdentity (() -> {
648656 setWallpaperComponentAndWait (DEFAULT_COMPONENT_NAME , FLAG_LOCK );
649657 });
650658
651- assertWithMessage ("Home screen" ).that (
652- mWallpaperManager .getWallpaperInfo (FLAG_SYSTEM )).isNull ();
659+ assertNullOrDefaultWallpaper (FLAG_SYSTEM );
653660 assertWithMessage ("Lock screen" ).that (
654661 mWallpaperManager .getWallpaperInfo (FLAG_LOCK )).isNotNull ();
655662 }
@@ -1696,6 +1703,13 @@ private void ensureCleanState(int flags) {
16961703 }
16971704 }
16981705
1706+ private void assertNullOrDefaultWallpaper (int which ) {
1707+ WallpaperInfo wallpaperInfo = mWallpaperManager .getWallpaperInfo (which );
1708+ if (mDefaultWallpaperInfo == null ) assertThat (wallpaperInfo ).isNull ();
1709+ if (wallpaperInfo == null ) return ;
1710+ assertThat (wallpaperInfo .getComponent ()).isEqualTo (mDefaultWallpaperInfo .getComponent ());
1711+ }
1712+
16991713 private void setWallpaperComponentAndWait (ComponentName component , int which ) {
17001714 mWallpaperManager .setWallpaperComponentWithFlags (component , which );
17011715 try {
0 commit comments