am f329f57b: am 4b275e0f: Merge "Fix flakey tests, and change testing area to a centered 90x90px area" into lmp-mr1-dev
* commit 'f329f57bad833055cbd824222ce10998ebb17ec5':
Fix flakey tests, and change testing area to a centered 90x90px area
diff --git a/tests/expectations/knownfailures.txt b/tests/expectations/knownfailures.txt
index 352dad3..3a94f50 100644
--- a/tests/expectations/knownfailures.txt
+++ b/tests/expectations/knownfailures.txt
@@ -161,20 +161,6 @@
]
},
{
-
- description: "These tests fail on some devices.",
- names: [
- "android.uirendering.cts.testclasses.ExactCanvasTests#testBlueRect",
- "android.uirendering.cts.testclasses.ExactCanvasTests#testBluePaddedSquare",
- "android.uirendering.cts.testclasses.ViewClippingTests#testSimplePaddingClip",
- "android.uirendering.cts.testclasses.ViewClippingTests#testSimpleClipBoundsClip",
- "android.uirendering.cts.testclasses.ViewClippingTests#testSimpleOutlineClip",
- "android.uirendering.cts.testclasses.ViewClippingTests#testSimpleBoundsClip",
- "android.uirendering.cts.testclasses.InfrastructureTests#testViewInitializer"
- ],
- bug: 17511118
-},
-{
description: "This test failed on devices that use effect off loading. In addition it uses hidden apis",
names: [
"android.media.cts.AudioEffectTest#test1_1ConstructorFromUuid"
diff --git a/tests/tests/uirendering/res/layout/blue_padded_layout.xml b/tests/tests/uirendering/res/layout/blue_padded_layout.xml
index 68c9cd1..2bfd049 100644
--- a/tests/tests/uirendering/res/layout/blue_padded_layout.xml
+++ b/tests/tests/uirendering/res/layout/blue_padded_layout.xml
@@ -14,16 +14,15 @@
limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/test_root"
- android:layout_width="200px"
- android:layout_height="200px"
- android:clipChildren="false">
+ android:layout_width="@dimen/test_width"
+ android:layout_height="@dimen/test_height"
+ android:clipChildren="false">
<android.uirendering.cts.testclasses.view.UnclippedBlueView
- android:id="@+id/child"
- android:layout_width="100px"
- android:layout_height="100px"
- android:paddingLeft="15px"
- android:paddingTop="16px"
- android:paddingRight="17px"
- android:paddingBottom="18px"/>
+ android:id="@+id/child"
+ android:layout_width="80px"
+ android:layout_height="80px"
+ android:paddingLeft="15px"
+ android:paddingTop="16px"
+ android:paddingRight="17px"
+ android:paddingBottom="18px"/>
</FrameLayout>
diff --git a/tests/tests/uirendering/res/layout/blue_padded_square.xml b/tests/tests/uirendering/res/layout/blue_padded_square.xml
index 71f4b0c..7d867d9 100644
--- a/tests/tests/uirendering/res/layout/blue_padded_square.xml
+++ b/tests/tests/uirendering/res/layout/blue_padded_square.xml
@@ -14,7 +14,6 @@
limitations under the License.
-->
<View xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/test_root"
- android:layout_width="100px"
- android:layout_height="100px"
+ android:layout_width="@dimen/test_width"
+ android:layout_height="@dimen/test_height"
android:background="@drawable/blue_padded_square"/>
diff --git a/tests/tests/uirendering/res/layout/draw_activity_view.xml b/tests/tests/uirendering/res/layout/draw_activity_view.xml
deleted file mode 100644
index 54a72e3..0000000
--- a/tests/tests/uirendering/res/layout/draw_activity_view.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<android.uirendering.cts.CanvasClientView xmlns:android="http://schemas.android.com/apk/res/android"/>
diff --git a/tests/tests/uirendering/res/layout/simple_rect_layout.xml b/tests/tests/uirendering/res/layout/simple_rect_layout.xml
index b570df8..7d6f928 100644
--- a/tests/tests/uirendering/res/layout/simple_rect_layout.xml
+++ b/tests/tests/uirendering/res/layout/simple_rect_layout.xml
@@ -13,14 +13,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/test_root"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <View android:layout_width="100px"
- android:layout_height="100px"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="@dimen/test_width"
+ android:layout_height="@dimen/test_height">
+ <View android:layout_width="80px"
+ android:layout_height="80px"
+ android:translationX="5px"
+ android:translationY="5px"
android:background="#00f" />
-
-</LinearLayout>
+</FrameLayout>
diff --git a/tests/tests/uirendering/res/layout/simple_red_layout.xml b/tests/tests/uirendering/res/layout/simple_red_layout.xml
index 2d2d189..2af8db6 100644
--- a/tests/tests/uirendering/res/layout/simple_red_layout.xml
+++ b/tests/tests/uirendering/res/layout/simple_red_layout.xml
@@ -14,7 +14,7 @@
limitations under the License.
-->
<View xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="@dimen/test_width"
+ android:layout_height="@dimen/test_height"
android:id="@+id/test_root"
- android:layout_width="180px"
- android:layout_height="180px"
android:background="#f00" />
diff --git a/tests/tests/uirendering/res/layout/test_container.xml b/tests/tests/uirendering/res/layout/test_container.xml
new file mode 100644
index 0000000..94a8eab
--- /dev/null
+++ b/tests/tests/uirendering/res/layout/test_container.xml
@@ -0,0 +1,24 @@
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/test_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <ViewStub
+ android:id="@+id/test_content_stub"
+ android:layout_gravity="center"
+ android:layout_width="@dimen/test_width"
+ android:layout_height="@dimen/test_height"/>
+</FrameLayout>
diff --git a/tests/tests/uirendering/res/layout/test_content_canvasclientview.xml b/tests/tests/uirendering/res/layout/test_content_canvasclientview.xml
new file mode 100644
index 0000000..9f8a139
--- /dev/null
+++ b/tests/tests/uirendering/res/layout/test_content_canvasclientview.xml
@@ -0,0 +1,18 @@
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<android.uirendering.cts.testinfrastructure.CanvasClientView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="@dimen/test_width"
+ android:layout_height="@dimen/test_height"/>
\ No newline at end of file
diff --git a/tests/tests/uirendering/res/layout/test_content_webview.xml b/tests/tests/uirendering/res/layout/test_content_webview.xml
new file mode 100644
index 0000000..8b03cab
--- /dev/null
+++ b/tests/tests/uirendering/res/layout/test_content_webview.xml
@@ -0,0 +1,18 @@
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<WebView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="@dimen/test_width"
+ android:layout_height="@dimen/test_height"/>
\ No newline at end of file
diff --git a/tests/tests/uirendering/res/values/dimens.xml b/tests/tests/uirendering/res/values/dimens.xml
new file mode 100644
index 0000000..1c304d3
--- /dev/null
+++ b/tests/tests/uirendering/res/values/dimens.xml
@@ -0,0 +1,18 @@
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<resources>
+ <dimen name="test_width">90px</dimen>
+ <dimen name="test_height">90px</dimen>
+</resources>
diff --git a/tests/tests/uirendering/res/values/themes.xml b/tests/tests/uirendering/res/values/themes.xml
index 751b7cb..f08f029 100644
--- a/tests/tests/uirendering/res/values/themes.xml
+++ b/tests/tests/uirendering/res/values/themes.xml
@@ -17,9 +17,9 @@
<style name="WhiteBackgroundTheme" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
+ <item name="android:windowOverscan">true</item>
<item name="android:fadingEdge">none</item>
<item name="android:windowBackground">@android:color/white</item>
- <!--This shouldn't be necessary currently a hack for an existing bug with transitions-->
<item name="android:windowContentTransitions">false</item>
<item name="android:windowAnimationStyle">@null</item>
</style>
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/ColorVerifier.java b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/ColorVerifier.java
index ea836ea..7f62b3e 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/ColorVerifier.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/ColorVerifier.java
@@ -22,11 +22,16 @@
private int mColor;
public ColorVerifier(int color) {
- this(color, 20);
+ this(color, DEFAULT_THRESHOLD);
}
- public ColorVerifier(int color, int threshold) {
- super(threshold);
+ public ColorVerifier(int color, int colorTolerance) {
+ super(colorTolerance);
+ mColor = color;
+ }
+
+ public ColorVerifier(int color, int colorThreshold, float spatialTolerance) {
+ super(colorThreshold, spatialTolerance);
mColor = color;
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/GoldenImageVerifier.java b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/GoldenImageVerifier.java
index 672b3f6..d4a63de 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/GoldenImageVerifier.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/GoldenImageVerifier.java
@@ -18,6 +18,7 @@
import android.graphics.Bitmap;
import android.uirendering.cts.bitmapcomparers.BitmapComparer;
import android.uirendering.cts.differencevisualizers.PassFailVisualizer;
+import android.uirendering.cts.testinfrastructure.ActivityTestBase;
public class GoldenImageVerifier extends BitmapVerifier {
private BitmapComparer mBitmapComparer;
@@ -26,7 +27,7 @@
public GoldenImageVerifier(Bitmap goldenBitmap, BitmapComparer bitmapComparer) {
mGoldenBitmapArray = new int[goldenBitmap.getWidth() * goldenBitmap.getHeight()];
goldenBitmap.getPixels(mGoldenBitmapArray, 0, goldenBitmap.getWidth(), 0, 0,
- goldenBitmap.getWidth(), goldenBitmap.getHeight());
+ ActivityTestBase.TEST_WIDTH, ActivityTestBase.TEST_HEIGHT);
mBitmapComparer = bitmapComparer;
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/PerPixelBitmapVerifier.java b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/PerPixelBitmapVerifier.java
index 0bdcc9b..2d00db5 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/PerPixelBitmapVerifier.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/PerPixelBitmapVerifier.java
@@ -26,38 +26,54 @@
*/
public abstract class PerPixelBitmapVerifier extends BitmapVerifier {
private static final String TAG = "PerPixelBitmapVerifer";
- private int mTolerance;
+ public static final int DEFAULT_THRESHOLD = 48;
- public PerPixelBitmapVerifier(int tolerance) {
- mTolerance = tolerance;
+ // total color difference tolerated without the pixel failing
+ private int mColorTolerance;
+
+ // portion of bitmap allowed to fail pixel check
+ private float mSpatialTolerance;
+
+ public PerPixelBitmapVerifier() {
+ this(DEFAULT_THRESHOLD, 0);
+ }
+
+ public PerPixelBitmapVerifier(int colorTolerance) {
+ this(colorTolerance, 0);
+ }
+
+ public PerPixelBitmapVerifier(int colorTolerance, float spatialTolerance) {
+ mColorTolerance = colorTolerance;
+ mSpatialTolerance = spatialTolerance;
}
protected int getExpectedColor(int x, int y) {
return Color.WHITE;
}
-
public boolean verify(int[] bitmap, int offset, int stride, int width, int height) {
- int failCount = 0;
+ int failures = 0;
int[] differenceMap = new int[bitmap.length];
for (int y = 0 ; y < height ; y++) {
for (int x = 0 ; x < width ; x++) {
int index = indexFromXAndY(x, y, stride, offset);
- int expectedColor = getExpectedColor(x, y);
- if (!verifyPixel(bitmap[index], expectedColor)) {
- if (failCount < 50) {
- Log.d(TAG, "Expected : " + Integer.toHexString(expectedColor)
+ if (!verifyPixel(x, y, bitmap[index])) {
+ if (failures < 50) {
+ Log.d(TAG, "Expected : " + Integer.toHexString(getExpectedColor(x, y))
+ " received : " + Integer.toHexString(bitmap[index])
+ " at position (" + x + "," + y + ")");
}
- failCount++;
+ failures++;
differenceMap[index] = FAIL_COLOR;
} else {
differenceMap[index] = PASS_COLOR;
}
}
}
- boolean success = failCount == 0;
+ int toleratedFailures = (int) (mSpatialTolerance * width * height);
+ boolean success = failures <= toleratedFailures;
+ Log.d(TAG, failures + " failures observed out of "
+ + toleratedFailures + " tolerated failures");
if (!success) {
mDifferenceBitmap = Bitmap.createBitmap(ActivityTestBase.TEST_WIDTH,
ActivityTestBase.TEST_HEIGHT, Bitmap.Config.ARGB_8888);
@@ -67,7 +83,9 @@
return success;
}
- protected boolean verifyPixel(int color, int expectedColor) {
- return CompareUtils.verifyPixelWithThreshold(color, expectedColor, mTolerance);
+
+ protected boolean verifyPixel(int x, int y, int observedColor) {
+ int expectedColor = getExpectedColor(x, y);
+ return CompareUtils.verifyPixelWithThreshold(observedColor, expectedColor, mColorTolerance);
}
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/RectVerifier.java b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/RectVerifier.java
index 06a430b..f4bece1 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/RectVerifier.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/RectVerifier.java
@@ -26,7 +26,7 @@
private Rect mInnerRect;
public RectVerifier(int outerColor, int innerColor, Rect innerRect) {
- this(outerColor, innerColor, innerRect, 20);
+ this(outerColor, innerColor, innerRect, DEFAULT_THRESHOLD);
}
public RectVerifier(int outerColor, int innerColor, Rect innerRect, int tolerance) {
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/BitmapFilterTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/BitmapFilterTests.java
index ddae100..117fe17 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/BitmapFilterTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/BitmapFilterTests.java
@@ -28,7 +28,6 @@
import android.uirendering.cts.testinfrastructure.CanvasClient;
public class BitmapFilterTests extends ActivityTestBase {
- private static final int THRESHOLD = 20;
private static final int WHITE_WEIGHT = 255 * 3;
private enum FilterEnum {
// Creates Paint object that will have bitmap filtering
@@ -40,72 +39,74 @@
ADD_FILTER
}
- /**
- * Verifies that a Bitmap only contains white and black, within a certain threshold
- */
- private static BitmapVerifier mBlackWhiteVerifier = new PerPixelBitmapVerifier(THRESHOLD) {
+ private static final BitmapVerifier BLACK_WHITE_ONLY_VERIFIER
+ = new PerPixelBitmapVerifier(PerPixelBitmapVerifier.DEFAULT_THRESHOLD, 0.99f) {
@Override
- protected boolean verifyPixel(int color, int expectedColor) {
+ protected boolean verifyPixel(int x, int y, int color) {
int weight = Color.red(color) + Color.blue(color) + Color.green(color);
- return weight < THRESHOLD // is approx Color.BLACK
- || weight > WHITE_WEIGHT - THRESHOLD; // is approx Color.WHITE
+ return weight < DEFAULT_THRESHOLD // is approx Color.BLACK
+ || weight > WHITE_WEIGHT - DEFAULT_THRESHOLD; // is approx Color.WHITE
}
};
+ private static final BitmapVerifier GREY_ONLY_VERIFIER
+ = new ColorVerifier(Color.argb(255, 127, 127, 127),
+ PerPixelBitmapVerifier.DEFAULT_THRESHOLD);
+ private static final BitmapVerifier GREY_PARTIAL_VERIFIER
+ = new ColorVerifier(Color.argb(255, 127, 127, 127),
+ 300, 0.8f); // content will be mostly grey, for a wide range of grey
+
private static Bitmap createGridBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
for (int i = 0 ; i < width ; i++) {
for (int j = 0 ; j < height ; j++) {
- bitmap.setPixel(i, j, ((i + j * width)) % 2 == 0 ?
- Color.WHITE : Color.BLACK);
+ boolean isWhite = (i + j * width) % 2 == 0;
+ bitmap.setPixel(i, j, isWhite ? Color.WHITE : Color.BLACK);
}
}
return bitmap;
}
private static final int SMALL_GRID_SIZE = 5;
- private static Bitmap mSmallGridBitmap = createGridBitmap(SMALL_GRID_SIZE, SMALL_GRID_SIZE);
+ private Bitmap mSmallGridBitmap = createGridBitmap(SMALL_GRID_SIZE, SMALL_GRID_SIZE);
private static final int BIG_GRID_SIZE = 360;
- private static Bitmap mBigGridBitmap = createGridBitmap(BIG_GRID_SIZE, BIG_GRID_SIZE);
- private static final int HALFWAY_COLOR = Color.argb(255, 127, 127, 127);
+ private Bitmap mBigGridBitmap = createGridBitmap(BIG_GRID_SIZE, BIG_GRID_SIZE);
- /* All of these tests seem to be broken.
- * TODO: fix in L MR1
@SmallTest
public void testPaintFilterScaleUp() {
- runScaleTest(FilterEnum.PAINT_FILTER, true, mBlackWhiteVerifier);
+ runScaleTest(FilterEnum.PAINT_FILTER, true);
}
@SmallTest
public void testPaintFilterScaleDown() {
- runScaleTest(FilterEnum.PAINT_FILTER, false, new ColorVerifier(HALFWAY_COLOR, 15));
+ runScaleTest(FilterEnum.PAINT_FILTER, false);
}
@SmallTest
public void testDrawFilterRemoveFilterScaleUp() {
- runScaleTest(FilterEnum.REMOVE_FILTER, true, mBlackWhiteVerifier);
+ runScaleTest(FilterEnum.REMOVE_FILTER, true);
}
@SmallTest
public void testDrawFilterRemoveFilterScaleDown() {
- runScaleTest(FilterEnum.REMOVE_FILTER, false, mBlackWhiteVerifier);
+ runScaleTest(FilterEnum.REMOVE_FILTER, false);
}
@SmallTest
public void testDrawFilterScaleUp() {
- runScaleTest(FilterEnum.ADD_FILTER, true, mBlackWhiteVerifier);
+ runScaleTest(FilterEnum.ADD_FILTER, true);
}
@SmallTest
public void testDrawFilterScaleDown() {
- runScaleTest(FilterEnum.ADD_FILTER, false, new ColorVerifier(HALFWAY_COLOR));
+ runScaleTest(FilterEnum.ADD_FILTER, false);
}
-*/
- private void runScaleTest(final FilterEnum filterEnum, final boolean scaleUp,
- BitmapVerifier bitmapVerifier) {
+
+ private void runScaleTest(final FilterEnum filterEnum, final boolean scaleUp) {
final int gridWidth = scaleUp ? SMALL_GRID_SIZE : BIG_GRID_SIZE;
final Paint paint = new Paint(filterEnum.equals(FilterEnum.ADD_FILTER) ?
0 : Paint.FILTER_BITMAP_FLAG);
+
CanvasClient canvasClient = new CanvasClient() {
@Override
public void draw(Canvas canvas, int width, int height) {
@@ -120,6 +121,16 @@
};
createTest()
.addCanvasClient(canvasClient)
- .runWithVerifier(bitmapVerifier);
+ .runWithVerifier(getVerifierForTest(filterEnum, scaleUp));
+ }
+
+ private static BitmapVerifier getVerifierForTest(FilterEnum filterEnum, boolean scaleUp) {
+ if (filterEnum.equals(FilterEnum.REMOVE_FILTER)) {
+ // filtering disabled, so only black and white pixels will come through
+ return BLACK_WHITE_ONLY_VERIFIER;
+ }
+ // if scaling up, output pixels may have single source to sample from,
+ // will only be *mostly* grey.
+ return scaleUp ? GREY_PARTIAL_VERIFIER : GREY_ONLY_VERIFIER;
}
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ExactCanvasTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ExactCanvasTests.java
index afbad65..29755d8 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ExactCanvasTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ExactCanvasTests.java
@@ -36,7 +36,7 @@
@SmallTest
public void testBlueRect() {
- final Rect rect = new Rect(10, 10, 100, 100);
+ final Rect rect = new Rect(10, 10, 80, 80);
createTest()
.addCanvasClient(new CanvasClient() {
@Override
@@ -58,8 +58,6 @@
public void draw(Canvas canvas, int width, int height) {
Paint p = new Paint();
p.setAntiAlias(false);
- p.setColor(Color.WHITE);
- canvas.drawRect(0, 0, 100, 100, p);
p.setStrokeWidth(1f);
p.setColor(Color.BLACK);
for (int i = 0; i < 10; i++) {
@@ -81,8 +79,8 @@
canvas.drawRect(0, 0, ActivityTestBase.TEST_WIDTH,
ActivityTestBase.TEST_HEIGHT, p);
p.setColor(Color.BLACK);
- p.setStrokeWidth(10);
- canvas.drawRect(10, 10, 20, 20, p);
+ p.setStrokeWidth(5);
+ canvas.drawRect(10, 10, 80, 80, p);
}
})
.runWithComparer(mExactComparer);
@@ -94,10 +92,8 @@
.addCanvasClient(new CanvasClient() {
@Override
public void draw(Canvas canvas, int width, int height) {
+ canvas.drawColor(Color.GREEN);
Paint p = new Paint();
- p.setColor(Color.GREEN);
- canvas.drawRect(0, 0, ActivityTestBase.TEST_WIDTH,
- ActivityTestBase.TEST_HEIGHT, p);
p.setColor(Color.BLACK);
p.setStrokeWidth(10);
canvas.drawLine(0, 0, 50, 0, p);
@@ -131,7 +127,7 @@
canvas.drawColor(Color.WHITE);
p.setColor(Color.BLACK);
float[] pts = {
- 0, 0, 100, 100, 100, 0, 0, 100, 50, 50, 75, 75
+ 0, 0, 80, 80, 80, 0, 0, 80, 40, 50, 60, 50
};
canvas.drawLines(pts, p);
}
@@ -185,10 +181,10 @@
public void testBluePaddedSquare() {
final NinePatchDrawable ninePatchDrawable = (NinePatchDrawable)
getActivity().getResources().getDrawable(R.drawable.blue_padded_square);
- ninePatchDrawable.setBounds(0, 0, 100, 100);
+ ninePatchDrawable.setBounds(0, 0, 90, 90);
BitmapVerifier verifier = new RectVerifier(Color.WHITE, Color.BLUE,
- new Rect(10, 10, 90, 90));
+ new Rect(10, 10, 80, 80));
createTest()
.addCanvasClient(new CanvasClient() {
@@ -197,7 +193,7 @@
canvas.drawColor(Color.WHITE);
Paint p = new Paint();
p.setColor(Color.BLUE);
- canvas.drawRect(10, 10, 90, 90, p);
+ canvas.drawRect(10, 10, 80, 80, p);
}
})
.addCanvasClient(new CanvasClient() {
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/InfrastructureTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/InfrastructureTests.java
index 6662226..c17e106 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/InfrastructureTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/InfrastructureTests.java
@@ -17,7 +17,6 @@
import com.android.cts.uirendering.R;
-import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;
@@ -29,7 +28,6 @@
import android.uirendering.cts.testinfrastructure.ActivityTestBase;
import android.uirendering.cts.testinfrastructure.CanvasClient;
import android.uirendering.cts.testinfrastructure.ViewInitializer;
-import android.util.Log;
import android.view.View;
public class InfrastructureTests extends ActivityTestBase {
@@ -52,16 +50,17 @@
CanvasClient canvasClient = new CanvasClient() {
@Override
public void draw(Canvas canvas, int width, int height) {
- canvas.drawColor(canvas.isHardwareAccelerated() ? Color.WHITE : Color.BLACK);
+ canvas.drawColor(canvas.isHardwareAccelerated() ? Color.BLACK : Color.WHITE);
}
};
- // This is considered a very high threshold and as such, the test should still fail because
- // they are completely different images.
- final float threshold = 0.1f;
BitmapComparer inverseComparer = new BitmapComparer() {
@Override
public boolean verifySame(int[] ideal, int[] given, int offset, int stride, int width,
int height) {
+
+ // Return true if the images aren't even 10% similar. They should be completely
+ // different, since they should both be completely different colors.
+ final float threshold = 0.1f;
return !(new MSSIMComparer(threshold)).verifySame(ideal, given, offset, stride,
width, height);
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/LayoutTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/LayoutTests.java
index 4667ee9..ff1e9db 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/LayoutTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/LayoutTests.java
@@ -34,7 +34,7 @@
@SmallTest
public void testSimpleRectLayout() {
createTest().addLayout(R.layout.simple_rect_layout, null, false).runWithVerifier(
- new RectVerifier(Color.WHITE, Color.BLUE, new Rect(0, 0, 100, 100)));
+ new RectVerifier(Color.WHITE, Color.BLUE, new Rect(5, 5, 85, 85)));
}
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/PathClippingTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/PathClippingTests.java
index 8df8057..6911cf0 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/PathClippingTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/PathClippingTests.java
@@ -17,7 +17,7 @@
import com.android.cts.uirendering.R;
public class PathClippingTests extends ActivityTestBase {
- // draw circle with whole in it, with stroked circle
+ // draw circle with hole in it, with stroked circle
static final CanvasClient sCircleDrawCanvasClient = new CanvasClient() {
@Override
public String getDebugString() {
@@ -31,11 +31,11 @@
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(20);
- canvas.drawCircle(50, 50, 40, paint);
+ canvas.drawCircle(30, 30, 40, paint);
}
};
- // draw circle with whole in it, by path operations + path clipping
+ // draw circle with hole in it, by path operations + path clipping
static final CanvasClient sCircleClipCanvasClient = new CanvasClient() {
@Override
public String getDebugString() {
@@ -47,8 +47,8 @@
canvas.save();
Path path = new Path();
- path.addCircle(50, 50, 50, Path.Direction.CW);
- path.addCircle(50, 50, 30, Path.Direction.CCW);
+ path.addCircle(30, 30, 50, Path.Direction.CW);
+ path.addCircle(30, 30, 30, Path.Direction.CCW);
canvas.clipPath(path);
canvas.drawColor(Color.BLUE);
@@ -72,12 +72,12 @@
.runWithVerifier(new SamplePointVerifier(
new Point[] {
// inside of circle
- new Point(50, 50),
+ new Point(30, 50),
// on circle
- new Point(50 + 32, 50 + 32),
+ new Point(30 + 32, 30 + 32),
// outside of circle
- new Point(50 + 38, 50 + 38),
- new Point(100, 100)
+ new Point(30 + 38, 30 + 38),
+ new Point(80, 80)
},
new int[] {
Color.WHITE,
@@ -96,8 +96,8 @@
ViewGroup rootView = (ViewGroup) view;
rootView.setClipChildren(true);
View childView = rootView.getChildAt(0);
- childView.setPivotX(50);
- childView.setPivotY(50);
+ childView.setPivotX(40);
+ childView.setPivotY(40);
childView.setRotation(45f);
}
@@ -105,11 +105,11 @@
.runWithVerifier(new SamplePointVerifier(
new Point[] {
// inside of rotated rect
- new Point(50, 50),
- new Point(50 + 32, 50 + 32),
+ new Point(40, 40),
+ new Point(40 + 25, 40 + 25),
// outside of rotated rect
- new Point(50 + 38, 50 + 38),
- new Point(100, 100)
+ new Point(40 + 31, 40 + 31),
+ new Point(80, 80)
},
new int[] {
Color.BLUE,
@@ -128,15 +128,15 @@
canvas.save();
Path path = new Path();
- path.addCircle(0, 50, 50, Path.Direction.CW);
- path.addCircle(100, 50, 50, Path.Direction.CW);
+ path.addCircle(0, 45, 45, Path.Direction.CW);
+ path.addCircle(90, 45, 45, Path.Direction.CW);
canvas.clipPath(path);
Paint paint = new Paint();
paint.setAntiAlias(true);
- paint.setTextSize(100);
+ paint.setTextSize(90);
paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
- canvas.drawText("STRING", 0, 100, paint);
+ canvas.drawText("STRING", 0, 90, paint);
canvas.restore();
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/SweepTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/SweepTests.java
index 7947286..32ab0e4 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/SweepTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/SweepTests.java
@@ -22,6 +22,7 @@
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
@@ -50,17 +51,11 @@
public static final int MULTIPLY_COLOR = 0xFF668844;
public static final int SCREEN_COLOR = 0xFFFFEEFF;
- public static final int FILTER_COLOR = 0xFFBB0000;
- public static final int RECT0_COLOR = 0x33808080;
- public static final int RECT1_COLOR = 0x66808080;
- public static final int RECT2_COLOR = 0x99808080;
- public static final int RECT3_COLOR = 0xCC808080;
-
// These points are in pairs, the first being the lower left corner, the second is only in the
// Destination bitmap, the third is the intersection of the two bitmaps, and the fourth is in
// the Source bitmap.
private final static Point[] XFERMODE_TEST_POINTS = new Point[] {
- new Point(1, 160), new Point(50, 50), new Point(70, 70), new Point(140, 140)
+ new Point(1, 80), new Point(25, 25), new Point(35, 35), new Point(70, 70)
};
/**
@@ -128,8 +123,8 @@
};
private final static DisplayModifier XFERMODE_MODIFIER = new DisplayModifier() {
- private final RectF mSrcRect = new RectF(60, 60, 160, 160);
- private final RectF mDstRect = new RectF(20, 20, 120, 120);
+ private final RectF mSrcRect = new RectF(30, 30, 80, 80);
+ private final RectF mDstRect = new RectF(10, 10, 60, 60);
private final Bitmap mSrcBitmap = createSrc();
private final Bitmap mDstBitmap = createDst();
@@ -144,8 +139,7 @@
}
private Bitmap createSrc() {
- Bitmap srcB = Bitmap.createBitmap(MODIFIER_WIDTH, MODIFIER_HEIGHT,
- Bitmap.Config.ARGB_8888);
+ Bitmap srcB = Bitmap.createBitmap(TEST_WIDTH, TEST_HEIGHT, Bitmap.Config.ARGB_8888);
Canvas srcCanvas = new Canvas(srcB);
Paint srcPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
srcPaint.setColor(SRC_COLOR);
@@ -154,8 +148,7 @@
}
private Bitmap createDst() {
- Bitmap dstB = Bitmap.createBitmap(MODIFIER_WIDTH, MODIFIER_HEIGHT,
- Bitmap.Config.ARGB_8888);
+ Bitmap dstB = Bitmap.createBitmap(TEST_WIDTH, TEST_HEIGHT, Bitmap.Config.ARGB_8888);
Canvas dstCanvas = new Canvas(dstB);
Paint dstPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
dstPaint.setColor(DST_COLOR);
@@ -164,18 +157,22 @@
}
};
-
// We care about one point in each of the four rectangles of different alpha values, as well as
// the area outside the rectangles
private final static Point[] COLOR_FILTER_ALPHA_POINTS = new Point[] {
- new Point(15, 90), new Point(45, 90), new Point(75, 90), new Point(105, 90),
- new Point(135, 90)
+ new Point(9, 45),
+ new Point(27, 45),
+ new Point(45, 45),
+ new Point(63, 45),
+ new Point(81, 45)
};
- private final Map<PorterDuff.Mode, int[]> COLOR_FILTER_ALPHA_MAP = new LinkedHashMap<PorterDuff.Mode, int[]>() {
+ public static final int FILTER_COLOR = 0xFFBB0000;
+ private final Map<PorterDuff.Mode, int[]> COLOR_FILTER_ALPHA_MAP
+ = new LinkedHashMap<PorterDuff.Mode, int[]>() {
{
put(PorterDuff.Mode.SRC, new int[] {
- FILTER_COLOR, FILTER_COLOR, FILTER_COLOR, FILTER_COLOR, FILTER_COLOR
+ FILTER_COLOR, FILTER_COLOR, FILTER_COLOR, FILTER_COLOR, FILTER_COLOR
});
put(PorterDuff.Mode.DST, new int[] {
@@ -228,10 +225,17 @@
}
};
+ /**
+ * Draws 5 blocks of different color/opacity to be blended against
+ */
private final static DisplayModifier COLOR_FILTER_ALPHA_MODIFIER = new DisplayModifier() {
- private final static int mBlockWidths = 30;
- private final int[] mColorValues = new int[] {RECT0_COLOR, RECT1_COLOR, RECT2_COLOR,
- RECT3_COLOR};
+ private final int[] BLOCK_COLORS = new int[] {
+ 0x33808080,
+ 0x66808080,
+ 0x99808080,
+ 0xCC808080,
+ 0x00000000
+ };
private final Bitmap mBitmap = createQuadRectBitmap();
@@ -240,13 +244,15 @@
}
private Bitmap createQuadRectBitmap() {
- Bitmap bitmap = Bitmap.createBitmap(MODIFIER_WIDTH, MODIFIER_HEIGHT,
- Bitmap.Config.ARGB_8888);
+ Bitmap bitmap = Bitmap.createBitmap(TEST_WIDTH, TEST_HEIGHT, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
- for (int i = 0 ; i < 4 ; i++) {
- paint.setColor(mColorValues[i]);
- canvas.drawRect(i * mBlockWidths, 0, (i + 1) * mBlockWidths, MODIFIER_HEIGHT, paint);
+ paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
+ final int blockCount = BLOCK_COLORS.length;
+ final int blockWidth = TEST_WIDTH / blockCount;
+ for (int i = 0 ; i < blockCount; i++) {
+ paint.setColor(BLOCK_COLORS[i]);
+ canvas.drawRect(i * blockWidth, 0, (i + 1) * blockWidth, TEST_HEIGHT, paint);
}
return bitmap;
}
@@ -266,10 +272,9 @@
}
private Bitmap createGradient() {
- LinearGradient gradient = new LinearGradient(30, 90, 150, 90, mColors, null,
+ LinearGradient gradient = new LinearGradient(15, 45, 75, 45, mColors, null,
Shader.TileMode.REPEAT);
- Bitmap bitmap = Bitmap.createBitmap(MODIFIER_WIDTH, MODIFIER_HEIGHT,
- Bitmap.Config.ARGB_8888);
+ Bitmap bitmap = Bitmap.createBitmap(TEST_WIDTH, TEST_HEIGHT, Bitmap.Config.ARGB_8888);
Paint p = new Paint();
p.setShader(gradient);
Canvas c = new Canvas(bitmap);
@@ -281,9 +286,7 @@
public static final DisplayModifier mCircleDrawModifier = new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- canvas.drawCircle(ActivityTestBase.TEST_WIDTH / 2,
- ActivityTestBase.TEST_HEIGHT / 2,
- ActivityTestBase.TEST_HEIGHT / 2, paint);
+ canvas.drawCircle(TEST_WIDTH / 2, TEST_HEIGHT / 2, TEST_HEIGHT / 2, paint);
}
};
@@ -343,16 +346,15 @@
}
/*
- * TODO: fix this test for L MR1
@SmallTest
public void testShaderSweeps() {
- int mask = DisplayModifier.Accessor.AA_MASK |
- DisplayModifier.Accessor.SHADER_MASK |
- DisplayModifier.Accessor.XFERMODE_MASK |
- DisplayModifier.Accessor.SHAPES_MASK;
+ int mask = DisplayModifier.Accessor.AA_MASK
+ | DisplayModifier.Accessor.SHADER_MASK
+ | DisplayModifier.Accessor.XFERMODE_MASK
+ | DisplayModifier.Accessor.SHAPES_MASK;
sweepModifiersForMask(mask, null, DEFAULT_MSSIM_COMPARER, null);
}
- */
+ */
protected void sweepModifiersForMask(int mask, final DisplayModifier drawOp,
BitmapComparer[] bitmapComparers, BitmapVerifier[] bitmapVerifiers) {
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ViewClippingTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ViewClippingTests.java
index da2db48..343228f 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ViewClippingTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/ViewClippingTests.java
@@ -20,11 +20,11 @@
* Since the layout is blue on a white background, this is always done with a RectVerifier.
*/
public class ViewClippingTests extends ActivityTestBase {
- final Rect FULL_RECT = new Rect(0, 0, 200, 200);
- final Rect BOUNDS_RECT = new Rect(0, 0, 100, 100);
- final Rect PADDED_RECT = new Rect(15, 16, 83, 82);
- final Rect OUTLINE_RECT = new Rect(1, 2, 98, 99);
- final Rect CLIP_BOUNDS_RECT = new Rect(10, 20, 70, 80);
+ final Rect FULL_RECT = new Rect(0, 0, 90, 90);
+ final Rect BOUNDS_RECT = new Rect(0, 0, 80, 80);
+ final Rect PADDED_RECT = new Rect(15, 16, 63, 62);
+ final Rect OUTLINE_RECT = new Rect(1, 2, 78, 79);
+ final Rect CLIP_BOUNDS_RECT = new Rect(10, 20, 50, 60);
final ViewInitializer BOUNDS_CLIP_INIT = new ViewInitializer() {
@Override
@@ -61,10 +61,9 @@
}
};
- // TODO: attempt to reduce
- static final int TOLERANCE = 16;
static BitmapVerifier makeClipVerifier(Rect blueBoundsRect) {
- return new RectVerifier(Color.WHITE, Color.BLUE, blueBoundsRect, TOLERANCE);
+ // very high error tolerance, since all these tests care about is clip alignment
+ return new RectVerifier(Color.WHITE, Color.BLUE, blueBoundsRect, 75);
}
public void testSimpleUnclipped() {
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
index 386c015..e3ad5a6 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/ActivityTestBase.java
@@ -41,15 +41,16 @@
public static final String TAG = "ActivityTestBase";
public static final boolean DEBUG = false;
public static final boolean USE_RS = false;
- public static final int TEST_WIDTH = 180;
- public static final int TEST_HEIGHT = 180; //The minimum height and width of a device
+
+ //The minimum height and width of a device
+ public static final int TEST_WIDTH = 90;
+ public static final int TEST_HEIGHT = 90;
+
public static final int MAX_SCREEN_SHOTS = 100;
private int[] mHardwareArray = new int[TEST_HEIGHT * TEST_WIDTH];
private int[] mSoftwareArray = new int[TEST_HEIGHT * TEST_WIDTH];
private DifferenceVisualizer mDifferenceVisualizer;
- private Allocation mIdealAllocation;
- private Allocation mGivenAllocation;
private RenderScript mRenderScript;
private TestCaseBuilder mTestCaseBuilder;
@@ -122,16 +123,24 @@
return pixels;
}
+ private Bitmap takeScreenshotImpl() {
+ Bitmap source = getInstrumentation().getUiAutomation().takeScreenshot();
+ int x = (source.getWidth() - TEST_WIDTH) / 2;
+ int y = (source.getHeight() - TEST_HEIGHT) / 2;
+ return Bitmap.createBitmap(source, x, y, TEST_WIDTH, TEST_HEIGHT);
+ }
+
public Bitmap takeScreenshot() {
getInstrumentation().waitForIdleSync();
- Bitmap bitmap1 = getInstrumentation().getUiAutomation().takeScreenshot();
+ Bitmap bitmap1 = takeScreenshotImpl();
Bitmap bitmap2;
int count = 0;
do {
bitmap2 = bitmap1;
- bitmap1 = getInstrumentation().getUiAutomation().takeScreenshot();
+ bitmap1 = takeScreenshotImpl();
count++;
- } while (count < MAX_SCREEN_SHOTS && !Arrays.equals(getBitmapPixels(bitmap2), getBitmapPixels(bitmap1)));
+ } while (count < MAX_SCREEN_SHOTS &&
+ !Arrays.equals(getBitmapPixels(bitmap2), getBitmapPixels(bitmap1)));
return bitmap1;
}
@@ -161,12 +170,12 @@
boolean success;
if (USE_RS && comparer.supportsRenderScript()) {
- mIdealAllocation = Allocation.createFromBitmap(mRenderScript, bitmap1,
+ Allocation idealAllocation = Allocation.createFromBitmap(mRenderScript, bitmap1,
Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
- mGivenAllocation = Allocation.createFromBitmap(mRenderScript, bitmap2,
+ Allocation givenAllocation = Allocation.createFromBitmap(mRenderScript, bitmap2,
Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
- success = comparer.verifySameRS(getActivity().getResources(), mIdealAllocation,
- mGivenAllocation, 0, TEST_WIDTH, TEST_WIDTH, TEST_HEIGHT, mRenderScript);
+ success = comparer.verifySameRS(getActivity().getResources(), idealAllocation,
+ givenAllocation, 0, TEST_WIDTH, TEST_WIDTH, TEST_HEIGHT, mRenderScript);
} else {
bitmap1.getPixels(mSoftwareArray, 0, TEST_WIDTH, 0, 0, TEST_WIDTH, TEST_HEIGHT);
bitmap2.getPixels(mHardwareArray, 0, TEST_WIDTH, 0, 0, TEST_WIDTH, TEST_HEIGHT);
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/CanvasClientView.java b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/CanvasClientView.java
index 92242f0..60127ae 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/CanvasClientView.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/CanvasClientView.java
@@ -19,6 +19,7 @@
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
+import android.util.AttributeSet;
import android.view.View;
/**
@@ -26,14 +27,21 @@
*/
public class CanvasClientView extends View {
private CanvasClient mCanvasClient;
- private int mWidth;
- private int mHeight;
- public CanvasClientView(Context context, CanvasClient canvasClient, int width, int height) {
+ public CanvasClientView(Context context) {
super(context);
+ }
+
+ public CanvasClientView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public CanvasClientView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public void setCanvasClient(CanvasClient canvasClient) {
mCanvasClient = canvasClient;
- mWidth = width;
- mHeight = height;
}
@Override
@@ -45,11 +53,11 @@
paint.setTextSize(20);
canvas.drawText(s, 200, 200, paint);
}
- if (mCanvasClient != null) {
- canvas.save();
- canvas.clipRect(0, 0, mWidth, mHeight);
- mCanvasClient.draw(canvas, mWidth, mHeight);
- canvas.restore();
- }
+ if (mCanvasClient == null) throw new IllegalStateException("Canvas client missing");
+
+ canvas.save();
+ canvas.clipRect(0, 0, ActivityTestBase.TEST_WIDTH, ActivityTestBase.TEST_HEIGHT);
+ mCanvasClient.draw(canvas, ActivityTestBase.TEST_WIDTH, ActivityTestBase.TEST_HEIGHT);
+ canvas.restore();
}
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DisplayModifier.java b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DisplayModifier.java
index 684293d..b42ac88 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DisplayModifier.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DisplayModifier.java
@@ -32,17 +32,16 @@
* Modifies the canvas and paint objects when called.
*/
public abstract class DisplayModifier {
- private static final RectF gRect = new RectF(0, 0, 100, 100);
- private static final float[] gPts = new float[]{
- 0, 100, 100, 0, 100, 200, 200, 100
+ private static final RectF RECT = new RectF(0, 0, 100, 100);
+ private static final float[] POINTS = new float[]{
+ 0, 40, 40, 0, 40, 80, 80, 40
};
- private static final float[] gTriPts = new float[]{
- 75, 0, 130, 130, 130, 130, 0, 130, 0, 130, 75, 0
+ private static final float[] TRIANGLE_POINTS = new float[]{
+ 40, 0, 80, 80, 80, 80, 0, 80, 0, 80, 40, 0
};
- private static final int NUM_PARALLEL_LINES = 24;
- private static final float[] gLinePts = new float[NUM_PARALLEL_LINES * 8 + gTriPts.length];
- protected static final int MODIFIER_WIDTH = 180;
- protected static final int MODIFIER_HEIGHT = 180;
+ private static final int NUM_PARALLEL_LINES = 10;
+ private static final float[] LINES = new float[NUM_PARALLEL_LINES * 8
+ + TRIANGLE_POINTS.length];
public static final PorterDuff.Mode[] PORTERDUFF_MODES = new PorterDuff.Mode[] {
PorterDuff.Mode.SRC, PorterDuff.Mode.DST, PorterDuff.Mode.SRC_OVER,
@@ -53,25 +52,23 @@
};
static {
- int index;
- for (index = 0; index < gTriPts.length; index++) {
- gLinePts[index] = gTriPts[index];
- }
+ System.arraycopy(TRIANGLE_POINTS, 0, LINES, 0, TRIANGLE_POINTS.length);
+ int index = TRIANGLE_POINTS.length;
float val = 0;
for (int i = 0; i < NUM_PARALLEL_LINES; i++) {
- gLinePts[index + 0] = 150;
- gLinePts[index + 1] = val;
- gLinePts[index + 2] = 300;
- gLinePts[index + 3] = val;
+ LINES[index + 0] = 40;
+ LINES[index + 1] = val;
+ LINES[index + 2] = 80;
+ LINES[index + 3] = val;
index += 4;
val += 8 + (2.0f / NUM_PARALLEL_LINES);
}
val = 0;
for (int i = 0; i < NUM_PARALLEL_LINES; i++) {
- gLinePts[index + 0] = val;
- gLinePts[index + 1] = 150;
- gLinePts[index + 2] = val;
- gLinePts[index + 3] = 300;
+ LINES[index + 0] = val;
+ LINES[index + 1] = 40;
+ LINES[index + 2] = val;
+ LINES[index + 3] = 80;
index += 4;
val += 8 + (2.0f / NUM_PARALLEL_LINES);
}
@@ -81,7 +78,7 @@
// paint object, like anti-aliasing or drawing. Within those LinkedHashMaps are the various
// options for that specific topic, which contains a displaymodifier which will affect the
// given canvas and paint objects.
- public static final LinkedHashMap<String, LinkedHashMap<String, DisplayModifier>> sMaps =
+ public static final LinkedHashMap<String, LinkedHashMap<String, DisplayModifier>> MAPS =
new LinkedHashMap<String, LinkedHashMap<String,DisplayModifier>>() {
{
put("aa", new LinkedHashMap<String, DisplayModifier>() {
@@ -225,7 +222,7 @@
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
canvas.rotate(90);
- canvas.translate(0, -200);
+ canvas.translate(0, -100);
}
});
put("scale2x2", new DisplayModifier() {
@@ -347,13 +344,13 @@
put("roundRect", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- canvas.drawRoundRect(gRect, 20, 20, paint);
+ canvas.drawRoundRect(RECT, 20, 20, paint);
}
});
put("rect", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- canvas.drawRect(gRect, paint);
+ canvas.drawRect(RECT, paint);
}
});
put("circle", new DisplayModifier() {
@@ -365,36 +362,32 @@
put("oval", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- canvas.drawOval(gRect, paint);
+ canvas.drawOval(RECT, paint);
}
});
put("lines", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- canvas.drawLines(gLinePts, paint);
+ canvas.drawLines(LINES, paint);
}
});
- /* drawPoints does not work with zero stroke width,
- * but it isn't a regression
- * TODO: fix hardware canvas so that drawPoints works
put("plusPoints", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- canvas.drawPoints(gPts, paint);
+ canvas.drawPoints(POINTS, paint);
}
});
- */
put("text", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- paint.setTextSize(36);
+ paint.setTextSize(20);
canvas.drawText("TEXTTEST", 0, 50, paint);
}
});
put("shadowtext", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- paint.setTextSize(36);
+ paint.setTextSize(20);
paint.setShadowLayer(3.0f, 0.0f, 3.0f, 0xffff00ff);
canvas.drawText("TEXTTEST", 0, 50, paint);
}
@@ -410,13 +403,13 @@
put("arc", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- canvas.drawArc(gRect, 260, 285, false, paint);
+ canvas.drawArc(RECT, 260, 285, false, paint);
}
});
put("arcFromCenter", new DisplayModifier() {
@Override
public void modifyDrawing(Paint paint, Canvas canvas) {
- canvas.drawArc(gRect, 260, 285, true, paint);
+ canvas.drawArc(RECT, 260, 285, true, paint);
}
});
}
@@ -454,9 +447,9 @@
// Create a Display Map of the valid indices
mDisplayMap = new LinkedHashMap<String, LinkedHashMap<String, DisplayModifier>>();
int index = 0;
- for (String key : DisplayModifier.sMaps.keySet()) {
+ for (String key : DisplayModifier.MAPS.keySet()) {
if (validIndex(index)) {
- mDisplayMap.put(key, DisplayModifier.sMaps.get(key));
+ mDisplayMap.put(key, DisplayModifier.MAPS.get(key));
}
index++;
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DrawActivity.java b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DrawActivity.java
index 166b6ff..65ed7ee 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DrawActivity.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testinfrastructure/DrawActivity.java
@@ -22,6 +22,7 @@
import android.os.Handler;
import android.os.Message;
import android.view.View;
+import android.view.ViewStub;
import android.view.ViewTreeObserver;
import android.webkit.WebView;
@@ -41,6 +42,8 @@
public void onCreate(Bundle bundle){
super.onCreate(bundle);
+ getWindow().getDecorView().setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN);
mHandler = new RenderSpecHandler();
int uiMode = getResources().getConfiguration().uiMode;
mOnWatch = (uiMode & Configuration.UI_MODE_TYPE_WATCH) == Configuration.UI_MODE_TYPE_WATCH;
@@ -83,39 +86,40 @@
}
public void handleMessage(Message message) {
- int webViewBuffer = 0;
+ int drawCountDelay = 0;
+ setContentView(R.layout.test_container);
+ ViewStub stub = (ViewStub) findViewById(R.id.test_content_stub);
switch (message.what) {
case LAYOUT_MSG: {
- setContentView(message.arg1);
- mView = findViewById(R.id.test_root);
- if (mView == null) {
- throw new IllegalStateException("test_root failed to inflate");
- }
+ stub.setLayoutResource(message.arg1);
+ mView = stub.inflate();
} break;
case CANVAS_MSG: {
- mView = new CanvasClientView(getApplicationContext(),
- (CanvasClient) (message.obj), ActivityTestBase.TEST_WIDTH,
- ActivityTestBase.TEST_HEIGHT);
- setContentView(mView);
+ stub.setLayoutResource(R.layout.test_content_canvasclientview);
+ mView = stub.inflate();
+ ((CanvasClientView) mView).setCanvasClient((CanvasClient) (message.obj));
} break;
case WEB_VIEW_MSG: {
- mView = new WebView(getApplicationContext());
+ stub.setLayoutResource(R.layout.test_content_webview);
+ mView = stub.inflate();
((WebView) mView).loadUrl((String) message.obj);
((WebView) mView).setInitialScale(100);
- setContentView(mView);
- webViewBuffer = 10;
+ drawCountDelay = 10;
} break;
}
+ if (mView == null) {
+ throw new IllegalStateException("failed to inflate test content");
+ }
+
if (mViewInitializer != null) {
mViewInitializer.intializeView(mView);
}
-
mView.setLayerType(message.arg2, null);
- DrawCounterListener onDrawListener = new DrawCounterListener(webViewBuffer);
+ DrawCounterListener onDrawListener = new DrawCounterListener(drawCountDelay);
mView.getViewTreeObserver().addOnPreDrawListener(onDrawListener);