blob: 3bedabc45c008bdb11f6900e8cb44366162641a8 [file] [log] [blame]
Jorim Jaggi10abe2f2017-01-03 16:44:46 +01001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070014 * limitations under the License.
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010015 */
16
17package com.android.server.wm;
18
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010019import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW;
Brett Chabota26eda92018-07-23 13:08:30 -070020
Tadashi G. Takaoka82eb7a52019-03-26 18:22:01 +090021import static org.junit.Assert.assertNotNull;
22import static org.junit.Assert.assertNull;
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010023
Wale Ogunwale68e882c2017-05-03 07:54:23 -070024import android.platform.test.annotations.Presubmit;
Brett Chabota26eda92018-07-23 13:08:30 -070025
26import androidx.test.filters.SmallTest;
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010027
Jorim Jaggi7361bab2017-01-16 17:17:58 +010028import org.junit.Before;
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010029import org.junit.Test;
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010030
31/**
32 * Test class for {@link TaskSnapshotCache}.
33 *
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070034 * Build/Install/Run:
35 * atest FrameworksServicesTests:TaskSnapshotCacheTest
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010036 */
37@SmallTest
Wale Ogunwale68e882c2017-05-03 07:54:23 -070038@Presubmit
Jorim Jaggi7361bab2017-01-16 17:17:58 +010039public class TaskSnapshotCacheTest extends TaskSnapshotPersisterTestBase {
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010040
Jorim Jaggi7361bab2017-01-16 17:17:58 +010041 private TaskSnapshotCache mCache;
42
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070043 @Override
Jorim Jaggi7361bab2017-01-16 17:17:58 +010044 @Before
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070045 public void setUp() {
Jorim Jaggi7361bab2017-01-16 17:17:58 +010046 super.setUp();
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070047
48 mCache = new TaskSnapshotCache(mWm, mLoader);
Jorim Jaggi10abe2f2017-01-03 16:44:46 +010049 }
50
Jorim Jaggi7361bab2017-01-16 17:17:58 +010051 @Test
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070052 public void testAppRemoved() {
Jorim Jaggi7361bab2017-01-16 17:17:58 +010053 final WindowState window = createWindow(null, FIRST_APPLICATION_WINDOW, "window");
54 mCache.putSnapshot(window.getTask(), createSnapshot());
55 assertNotNull(mCache.getSnapshot(window.getTask().mTaskId, 0 /* userId */,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010056 false /* restoreFromDisk */, false /* reducedResolution */));
Jorim Jaggi7361bab2017-01-16 17:17:58 +010057 mCache.onAppRemoved(window.mAppToken);
58 assertNull(mCache.getSnapshot(window.getTask().mTaskId, 0 /* userId */,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010059 false /* restoreFromDisk */, false /* reducedResolution */));
Jorim Jaggi7361bab2017-01-16 17:17:58 +010060 }
61
62 @Test
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070063 public void testAppDied() {
Jorim Jaggi7361bab2017-01-16 17:17:58 +010064 final WindowState window = createWindow(null, FIRST_APPLICATION_WINDOW, "window");
65 mCache.putSnapshot(window.getTask(), createSnapshot());
66 assertNotNull(mCache.getSnapshot(window.getTask().mTaskId, 0 /* userId */,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010067 false /* restoreFromDisk */, false /* reducedResolution */));
Jorim Jaggi7361bab2017-01-16 17:17:58 +010068 mCache.onAppDied(window.mAppToken);
Jorim Jaggi7361bab2017-01-16 17:17:58 +010069 assertNull(mCache.getSnapshot(window.getTask().mTaskId, 0 /* userId */,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010070 false /* restoreFromDisk */, false /* reducedResolution */));
Jorim Jaggi7361bab2017-01-16 17:17:58 +010071 }
72
73 @Test
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070074 public void testTaskRemoved() {
Jorim Jaggi7361bab2017-01-16 17:17:58 +010075 final WindowState window = createWindow(null, FIRST_APPLICATION_WINDOW, "window");
76 mCache.putSnapshot(window.getTask(), createSnapshot());
77 assertNotNull(mCache.getSnapshot(window.getTask().mTaskId, 0 /* userId */,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010078 false /* restoreFromDisk */, false /* reducedResolution */));
Jorim Jaggi7361bab2017-01-16 17:17:58 +010079 mCache.onTaskRemoved(window.getTask().mTaskId);
80 assertNull(mCache.getSnapshot(window.getTask().mTaskId, 0 /* userId */,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010081 false /* restoreFromDisk */, false /* reducedResolution */));
82 }
83
84 @Test
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070085 public void testReduced_notCached() {
Jorim Jaggi35e3f532017-03-17 17:06:50 +010086 final WindowState window = createWindow(null, FIRST_APPLICATION_WINDOW, "window");
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070087 mPersister.persistSnapshot(window.getTask().mTaskId, mWm.mCurrentUserId, createSnapshot());
Jorim Jaggi35e3f532017-03-17 17:06:50 +010088 mPersister.waitForQueueEmpty();
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070089 assertNull(mCache.getSnapshot(window.getTask().mTaskId, mWm.mCurrentUserId,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010090 false /* restoreFromDisk */, false /* reducedResolution */));
91
92 // Load it from disk
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070093 assertNotNull(mCache.getSnapshot(window.getTask().mTaskId, mWm.mCurrentUserId,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010094 true /* restoreFromDisk */, true /* reducedResolution */));
95
96 // Make sure it's not in the cache now.
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070097 assertNull(mCache.getSnapshot(window.getTask().mTaskId, mWm.mCurrentUserId,
Jorim Jaggi35e3f532017-03-17 17:06:50 +010098 false /* restoreFromDisk */, false /* reducedResolution */));
Jorim Jaggi7361bab2017-01-16 17:17:58 +010099 }
100
101 @Test
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700102 public void testRestoreFromDisk() {
Jorim Jaggi7361bab2017-01-16 17:17:58 +0100103 final WindowState window = createWindow(null, FIRST_APPLICATION_WINDOW, "window");
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700104 mPersister.persistSnapshot(window.getTask().mTaskId, mWm.mCurrentUserId, createSnapshot());
Jorim Jaggi7361bab2017-01-16 17:17:58 +0100105 mPersister.waitForQueueEmpty();
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700106 assertNull(mCache.getSnapshot(window.getTask().mTaskId, mWm.mCurrentUserId,
Jorim Jaggi35e3f532017-03-17 17:06:50 +0100107 false /* restoreFromDisk */, false /* reducedResolution */));
Jorim Jaggi7361bab2017-01-16 17:17:58 +0100108
109 // Load it from disk
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -0700110 assertNotNull(mCache.getSnapshot(window.getTask().mTaskId, mWm.mCurrentUserId,
Jorim Jaggi35e3f532017-03-17 17:06:50 +0100111 true /* restoreFromDisk */, false /* reducedResolution */));
Jorim Jaggi10abe2f2017-01-03 16:44:46 +0100112 }
113}