-
Notifications
You must be signed in to change notification settings - Fork 1.4k
/
HardwareAcceleratedActivityRenderTest.java
66 lines (61 loc) · 2.41 KB
/
HardwareAcceleratedActivityRenderTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package org.robolectric.integrationtests.nativegraphics;
import static android.os.Build.VERSION_CODES.S;
import static com.google.common.truth.Truth.assertThat;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.PixelCopy;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.FrameLayout;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
@Config(minSdk = S)
public class HardwareAcceleratedActivityRenderTest {
@Test
public void hardwareAcceleratedActivity_setup() throws Exception {
// Setting up an Activity is a smoke test that exercises much of the HardwareRenderer /
// RenderNode / RecordingCanvas native code.
Robolectric.setupActivity(HardwareAcceleratedActivity.class);
}
@Test
public void hardwareAcceleratedActivity_pixelCopy() throws Exception {
System.setProperty("robolectric.pixelCopyRenderMode", "hardware");
try {
HardwareAcceleratedActivity activity =
Robolectric.setupActivity(HardwareAcceleratedActivity.class);
Window window = activity.getWindow();
View decorView = window.getDecorView();
Bitmap bitmap =
Bitmap.createBitmap(decorView.getWidth(), decorView.getHeight(), Bitmap.Config.ARGB_8888);
CountDownLatch latch = new CountDownLatch(1);
PixelCopy.request(
window, bitmap, copyResult -> latch.countDown(), new Handler(Looper.getMainLooper()));
latch.await(1, TimeUnit.SECONDS);
assertThat(bitmap.getPixel(100, 100)).isEqualTo(Color.RED);
} finally {
System.clearProperty("robolectric.pixelCopyRenderMode");
}
}
static class HardwareAcceleratedActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frameLayout = new FrameLayout(this);
frameLayout.setLayoutParams(
new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
frameLayout.setBackgroundColor(Color.RED);
setContentView(frameLayout);
}
}
}