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