Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1650)

Unified Diff: webrtc/api/androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java

Issue 2541823002: Move webrtc/api/androidtests to webrtc/sdk/android/instrumentationtests (Closed)
Patch Set: Make include for webrtc.gni absolute Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/api/androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java
diff --git a/webrtc/api/androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java b/webrtc/api/androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java
deleted file mode 100644
index dc4d9b7d78843c2290a14fc2e5599b4a6361d7b9..0000000000000000000000000000000000000000
--- a/webrtc/api/androidtests/src/org/webrtc/SurfaceViewRendererOnMeasureTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright 2015 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-package org.webrtc;
-
-import android.graphics.Point;
-import android.test.ActivityTestCase;
-import android.test.UiThreadTest;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.view.View.MeasureSpec;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.List;
-
-public final class SurfaceViewRendererOnMeasureTest extends ActivityTestCase {
- /**
- * List with all possible scaling types.
- */
- private static final List<RendererCommon.ScalingType> scalingTypes = Arrays.asList(
- RendererCommon.ScalingType.SCALE_ASPECT_FIT, RendererCommon.ScalingType.SCALE_ASPECT_FILL,
- RendererCommon.ScalingType.SCALE_ASPECT_BALANCED);
-
- /**
- * List with MeasureSpec modes.
- */
- private static final List<Integer> measureSpecModes =
- Arrays.asList(MeasureSpec.EXACTLY, MeasureSpec.AT_MOST);
-
- /**
- * Returns a dummy YUV frame.
- */
- static VideoRenderer.I420Frame createFrame(int width, int height, int rotationDegree) {
- final int[] yuvStrides = new int[] {width, (width + 1) / 2, (width + 1) / 2};
- final int[] yuvHeights = new int[] {height, (height + 1) / 2, (height + 1) / 2};
- final ByteBuffer[] yuvPlanes = new ByteBuffer[3];
- for (int i = 0; i < 3; ++i) {
- yuvPlanes[i] = ByteBuffer.allocateDirect(yuvStrides[i] * yuvHeights[i]);
- }
- return new VideoRenderer.I420Frame(width, height, rotationDegree, yuvStrides, yuvPlanes, 0);
- }
-
- /**
- * Assert onMeasure() with given parameters will result in expected measured size.
- */
- private static void assertMeasuredSize(SurfaceViewRenderer surfaceViewRenderer,
- RendererCommon.ScalingType scalingType, String frameDimensions, int expectedWidth,
- int expectedHeight, int widthSpec, int heightSpec) {
- surfaceViewRenderer.setScalingType(scalingType);
- surfaceViewRenderer.onMeasure(widthSpec, heightSpec);
- final int measuredWidth = surfaceViewRenderer.getMeasuredWidth();
- final int measuredHeight = surfaceViewRenderer.getMeasuredHeight();
- if (measuredWidth != expectedWidth || measuredHeight != expectedHeight) {
- fail("onMeasure(" + MeasureSpec.toString(widthSpec) + ", " + MeasureSpec.toString(heightSpec)
- + ")"
- + " with scaling type " + scalingType + " and frame: " + frameDimensions
- + " expected measured size " + expectedWidth + "x" + expectedHeight + ", but was "
- + measuredWidth + "x" + measuredHeight);
- }
- }
-
- /**
- * Test how SurfaceViewRenderer.onMeasure() behaves when no frame has been delivered.
- */
- @UiThreadTest
- @MediumTest
- public void testNoFrame() {
- final SurfaceViewRenderer surfaceViewRenderer =
- new SurfaceViewRenderer(getInstrumentation().getContext());
- final String frameDimensions = "null";
-
- // Test behaviour before SurfaceViewRenderer.init() is called.
- for (RendererCommon.ScalingType scalingType : scalingTypes) {
- for (int measureSpecMode : measureSpecModes) {
- final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpecMode);
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 0, 0, zeroMeasureSize,
- zeroMeasureSize);
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 1280, 720,
- MeasureSpec.makeMeasureSpec(1280, measureSpecMode),
- MeasureSpec.makeMeasureSpec(720, measureSpecMode));
- }
- }
-
- // Test behaviour after SurfaceViewRenderer.init() is called, but still no frame.
- surfaceViewRenderer.init((EglBase.Context) null, null);
- for (RendererCommon.ScalingType scalingType : scalingTypes) {
- for (int measureSpecMode : measureSpecModes) {
- final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpecMode);
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 0, 0, zeroMeasureSize,
- zeroMeasureSize);
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 1280, 720,
- MeasureSpec.makeMeasureSpec(1280, measureSpecMode),
- MeasureSpec.makeMeasureSpec(720, measureSpecMode));
- }
- }
-
- surfaceViewRenderer.release();
- }
-
- /**
- * Test how SurfaceViewRenderer.onMeasure() behaves with a 1280x720 frame.
- */
- @UiThreadTest
- @MediumTest
- public void testFrame1280x720() throws InterruptedException {
- final SurfaceViewRenderer surfaceViewRenderer =
- new SurfaceViewRenderer(getInstrumentation().getContext());
- /**
- * Mock renderer events with blocking wait functionality for frame size changes.
- */
- class MockRendererEvents implements RendererCommon.RendererEvents {
- private int frameWidth;
- private int frameHeight;
- private int rotation;
-
- public synchronized void waitForFrameSize(int frameWidth, int frameHeight, int rotation)
- throws InterruptedException {
- while (this.frameWidth != frameWidth || this.frameHeight != frameHeight
- || this.rotation != rotation) {
- wait();
- }
- }
-
- public void onFirstFrameRendered() {}
-
- public synchronized void onFrameResolutionChanged(
- int frameWidth, int frameHeight, int rotation) {
- this.frameWidth = frameWidth;
- this.frameHeight = frameHeight;
- this.rotation = rotation;
- notifyAll();
- }
- }
- final MockRendererEvents rendererEvents = new MockRendererEvents();
- surfaceViewRenderer.init((EglBase.Context) null, rendererEvents);
-
- // Test different rotation degress, but same rotated size.
- for (int rotationDegree : new int[] {0, 90, 180, 270}) {
- final int rotatedWidth = 1280;
- final int rotatedHeight = 720;
- final int unrotatedWidth = (rotationDegree % 180 == 0 ? rotatedWidth : rotatedHeight);
- final int unrotatedHeight = (rotationDegree % 180 == 0 ? rotatedHeight : rotatedWidth);
- final VideoRenderer.I420Frame frame =
- createFrame(unrotatedWidth, unrotatedHeight, rotationDegree);
- assertEquals(rotatedWidth, frame.rotatedWidth());
- assertEquals(rotatedHeight, frame.rotatedHeight());
- final String frameDimensions =
- unrotatedWidth + "x" + unrotatedHeight + " with rotation " + rotationDegree;
- surfaceViewRenderer.renderFrame(frame);
- rendererEvents.waitForFrameSize(unrotatedWidth, unrotatedHeight, rotationDegree);
-
- // Test forcing to zero size.
- for (RendererCommon.ScalingType scalingType : scalingTypes) {
- for (int measureSpecMode : measureSpecModes) {
- final int zeroMeasureSize = MeasureSpec.makeMeasureSpec(0, measureSpecMode);
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 0, 0,
- zeroMeasureSize, zeroMeasureSize);
- }
- }
-
- // Test perfect fit.
- for (RendererCommon.ScalingType scalingType : scalingTypes) {
- for (int measureSpecMode : measureSpecModes) {
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, rotatedWidth,
- rotatedHeight, MeasureSpec.makeMeasureSpec(rotatedWidth, measureSpecMode),
- MeasureSpec.makeMeasureSpec(rotatedHeight, measureSpecMode));
- }
- }
-
- // Force spec size with different aspect ratio than frame aspect ratio.
- for (RendererCommon.ScalingType scalingType : scalingTypes) {
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, 720, 1280,
- MeasureSpec.makeMeasureSpec(720, MeasureSpec.EXACTLY),
- MeasureSpec.makeMeasureSpec(1280, MeasureSpec.EXACTLY));
- }
-
- final float videoAspectRatio = (float) rotatedWidth / rotatedHeight;
- {
- // Relax both width and height constraints.
- final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.AT_MOST);
- final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.AT_MOST);
- for (RendererCommon.ScalingType scalingType : scalingTypes) {
- final Point expectedSize =
- RendererCommon.getDisplaySize(scalingType, videoAspectRatio, 720, 1280);
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, expectedSize.x,
- expectedSize.y, widthSpec, heightSpec);
- }
- }
- {
- // Force width to 720, but relax height constraint. This will give the same result as
- // above, because width is already the limiting factor and will be maxed out.
- final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.EXACTLY);
- final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.AT_MOST);
- for (RendererCommon.ScalingType scalingType : scalingTypes) {
- final Point expectedSize =
- RendererCommon.getDisplaySize(scalingType, videoAspectRatio, 720, 1280);
- assertMeasuredSize(surfaceViewRenderer, scalingType, frameDimensions, expectedSize.x,
- expectedSize.y, widthSpec, heightSpec);
- }
- }
- {
- // Force height, but relax width constraint. This will force a bad layout size.
- final int widthSpec = MeasureSpec.makeMeasureSpec(720, MeasureSpec.AT_MOST);
- final int heightSpec = MeasureSpec.makeMeasureSpec(1280, MeasureSpec.EXACTLY);
- for (RendererCommon.ScalingType scalingType : scalingTypes) {
- assertMeasuredSize(
- surfaceViewRenderer, scalingType, frameDimensions, 720, 1280, widthSpec, heightSpec);
- }
- }
- }
-
- surfaceViewRenderer.release();
- }
-}

Powered by Google App Engine
This is Rietveld 408576698