Home | History | Annotate | Download | only in wm
      1 package com.android.server.wm;
      2 
      3 import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
      4 
      5 import static junit.framework.TestCase.assertNotNull;
      6 
      7 import static org.junit.Assert.assertNull;
      8 import static org.mockito.Mockito.mock;
      9 import static org.mockito.Mockito.when;
     10 
     11 import android.graphics.Bitmap;
     12 import android.os.IBinder;
     13 import android.platform.test.annotations.Presubmit;
     14 import android.support.test.filters.SmallTest;
     15 import android.support.test.runner.AndroidJUnit4;
     16 
     17 import org.junit.Test;
     18 import org.junit.runner.RunWith;
     19 
     20 /**
     21  * Tests for the {@link WallpaperController} class.
     22  *
     23  * Build/Install/Run:
     24  *  atest com.android.server.wm.WallpaperControllerTests
     25  */
     26 @SmallTest
     27 @Presubmit
     28 @RunWith(AndroidJUnit4.class)
     29 public class WallpaperControllerTests extends WindowTestsBase {
     30     @Test
     31     public void testWallpaperScreenshot() {
     32         WindowSurfaceController windowSurfaceController = mock(WindowSurfaceController.class);
     33 
     34         synchronized (sWm.mWindowMap) {
     35             // No wallpaper
     36             final DisplayContent dc = createNewDisplay();
     37             Bitmap wallpaperBitmap = sWm.mRoot.mWallpaperController.screenshotWallpaperLocked();
     38             assertNull(wallpaperBitmap);
     39 
     40             // No wallpaper WSA Surface
     41             WindowToken wallpaperWindowToken = new WallpaperWindowToken(sWm, mock(IBinder.class),
     42                     true, dc, true /* ownerCanManageAppTokens */);
     43             WindowState wallpaperWindow = createWindow(null /* parent */, TYPE_WALLPAPER,
     44                     wallpaperWindowToken, "wallpaperWindow");
     45             wallpaperBitmap = mWallpaperController.screenshotWallpaperLocked();
     46             assertNull(wallpaperBitmap);
     47 
     48             // Wallpaper with not visible WSA surface.
     49             wallpaperWindow.mWinAnimator.mSurfaceController = windowSurfaceController;
     50             wallpaperWindow.mWinAnimator.mLastAlpha = 1;
     51             wallpaperBitmap = mWallpaperController.screenshotWallpaperLocked();
     52             assertNull(wallpaperBitmap);
     53 
     54             when(windowSurfaceController.getShown()).thenReturn(true);
     55 
     56             // Wallpaper with WSA alpha set to 0.
     57             wallpaperWindow.mWinAnimator.mLastAlpha = 0;
     58             wallpaperBitmap = mWallpaperController.screenshotWallpaperLocked();
     59             assertNull(wallpaperBitmap);
     60 
     61             // Wallpaper window with WSA Surface
     62             wallpaperWindow.mWinAnimator.mLastAlpha = 1;
     63             wallpaperBitmap = mWallpaperController.screenshotWallpaperLocked();
     64             assertNotNull(wallpaperBitmap);
     65         }
     66     }
     67 }
     68