TaskSnapshotPersisterTestBase.java revision e163126d2e27ce1fbd5c74279dfb5d05c97b8392
1/*
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
14 * limitations under the License
15 */
16
17package com.android.server.wm;
18
19import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
20import static android.graphics.GraphicBuffer.USAGE_HW_TEXTURE;
21import static android.graphics.GraphicBuffer.USAGE_SW_READ_RARELY;
22
23import android.app.ActivityManager.TaskSnapshot;
24import android.graphics.Canvas;
25import android.graphics.Color;
26import android.graphics.GraphicBuffer;
27import android.graphics.PixelFormat;
28import android.graphics.Rect;
29import android.os.UserManager;
30import android.support.test.InstrumentationRegistry;
31
32import org.junit.After;
33import org.junit.Before;
34import org.junit.BeforeClass;
35
36import java.io.File;
37
38/**
39 * Base class for tests that use a {@link TaskSnapshotPersister}.
40 */
41class TaskSnapshotPersisterTestBase extends WindowTestsBase {
42
43    private static final Rect TEST_INSETS = new Rect(10, 20, 30, 40);
44
45    TaskSnapshotPersister mPersister;
46    TaskSnapshotLoader mLoader;
47    int mTestUserId;
48    static File sFilesDir;
49
50    @BeforeClass
51    public static void setUpUser() {
52        sFilesDir = InstrumentationRegistry.getContext().getFilesDir();
53    }
54
55    @Before
56    public void setUp() throws Exception {
57        super.setUp();
58        final UserManager um = UserManager.get(InstrumentationRegistry.getContext());
59        mTestUserId = um.getUserHandle();
60        mPersister = new TaskSnapshotPersister(userId -> sFilesDir);
61        mLoader = new TaskSnapshotLoader(mPersister);
62        mPersister.start();
63    }
64
65    @After
66    public void tearDown() throws Exception {
67        cleanDirectory();
68    }
69
70    private void cleanDirectory() {
71        for (File file : new File(sFilesDir, "snapshots").listFiles()) {
72            if (!file.isDirectory()) {
73                file.delete();
74            }
75        }
76    }
77
78    TaskSnapshot createSnapshot() {
79        final GraphicBuffer buffer = GraphicBuffer.create(100, 100, PixelFormat.RGBA_8888,
80                USAGE_HW_TEXTURE | USAGE_SW_READ_RARELY | USAGE_SW_READ_RARELY);
81        Canvas c = buffer.lockCanvas();
82        c.drawColor(Color.RED);
83        buffer.unlockCanvasAndPost(c);
84        return new TaskSnapshot(buffer, ORIENTATION_PORTRAIT, TEST_INSETS,
85                false /* reducedResolution */, 1f /* scale */);
86    }
87}
88