From f52f66abe539052b97827fa3f717b0be3a556238 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Thu, 28 Nov 2019 19:47:19 +0100 Subject: [PATCH] Fix action bug --- ...1Test.java => Camera1IntegrationTest.java} | 2 +- ...2Test.java => Camera2IntegrationTest.java} | 2 +- .../options/Camera1OptionsTest.java} | 41 ++++++++++--------- .../cameraview/engine/Camera1Engine.java | 3 +- .../cameraview/engine/Camera2Engine.java | 2 +- .../cameraview/engine/action/BaseAction.java | 3 +- .../engine/{ => options}/Camera1Options.java | 6 +-- .../engine/{ => options}/Camera2Options.java | 6 +-- 8 files changed, 32 insertions(+), 33 deletions(-) rename cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/{CameraIntegration1Test.java => Camera1IntegrationTest.java} (94%) rename cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/{CameraIntegration2Test.java => Camera2IntegrationTest.java} (97%) rename cameraview/src/androidTest/java/com/otaliastudios/cameraview/{CameraOptions1Test.java => engine/options/Camera1OptionsTest.java} (91%) rename cameraview/src/main/java/com/otaliastudios/cameraview/engine/{ => options}/Camera1Options.java (96%) rename cameraview/src/main/java/com/otaliastudios/cameraview/engine/{ => options}/Camera2Options.java (97%) diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegration1Test.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/Camera1IntegrationTest.java similarity index 94% rename from cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegration1Test.java rename to cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/Camera1IntegrationTest.java index 73c0ac62..6dcd7ca6 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegration1Test.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/Camera1IntegrationTest.java @@ -20,7 +20,7 @@ import androidx.test.filters.LargeTest; @RunWith(AndroidJUnit4.class) @LargeTest @DoNotRunOnTravis(because = "These do work but fail on CI emulators, due to bugs in the Camera1 emulated devices.") -public class CameraIntegration1Test extends CameraIntegrationTest { +public class Camera1IntegrationTest extends CameraIntegrationTest { @NonNull @Override diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegration2Test.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/Camera2IntegrationTest.java similarity index 97% rename from cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegration2Test.java rename to cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/Camera2IntegrationTest.java index 9610109c..5d92373c 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegration2Test.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/Camera2IntegrationTest.java @@ -27,7 +27,7 @@ import java.util.concurrent.CountDownLatch; @RunWith(AndroidJUnit4.class) @LargeTest @DoNotRunOnTravis(because = "These do work but fail on CI emulators.") -public class CameraIntegration2Test extends CameraIntegrationTest { +public class Camera2IntegrationTest extends CameraIntegrationTest { @NonNull @Override diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraOptions1Test.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/options/Camera1OptionsTest.java similarity index 91% rename from cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraOptions1Test.java rename to cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/options/Camera1OptionsTest.java index 5aaae714..8db1d61c 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/CameraOptions1Test.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/options/Camera1OptionsTest.java @@ -1,8 +1,10 @@ -package com.otaliastudios.cameraview; +package com.otaliastudios.cameraview.engine.options; import android.hardware.Camera; +import com.otaliastudios.cameraview.BaseTest; +import com.otaliastudios.cameraview.CameraOptions; import com.otaliastudios.cameraview.controls.Audio; import com.otaliastudios.cameraview.controls.Facing; import com.otaliastudios.cameraview.controls.Flash; @@ -22,7 +24,6 @@ import androidx.test.filters.SmallTest; import org.junit.Test; import org.junit.runner.RunWith; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -38,11 +39,11 @@ import static org.mockito.Mockito.when; @RunWith(AndroidJUnit4.class) @SmallTest -public class CameraOptions1Test extends BaseTest { +public class Camera1OptionsTest extends BaseTest { @Test public void testEmpty() { - CameraOptions o = new CameraOptions(mock(Camera.Parameters.class), 0, false); + CameraOptions o = new Camera1Options(mock(Camera.Parameters.class), 0, false); assertTrue(o.getSupportedPictureAspectRatios().isEmpty()); assertTrue(o.getSupportedPictureSizes().isEmpty()); assertTrue(o.getSupportedWhiteBalance().isEmpty()); @@ -72,7 +73,7 @@ public class CameraOptions1Test extends BaseTest { ); Camera.Parameters params = mock(Camera.Parameters.class); when(params.getSupportedPictureSizes()).thenReturn(sizes); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection supportedSizes = o.getSupportedPictureSizes(); assertEquals(supportedSizes.size(), sizes.size()); for (Camera.Size size : sizes) { @@ -91,7 +92,7 @@ public class CameraOptions1Test extends BaseTest { ); Camera.Parameters params = mock(Camera.Parameters.class); when(params.getSupportedPictureSizes()).thenReturn(sizes); - CameraOptions o = new CameraOptions(params, 0, true); + CameraOptions o = new Camera1Options(params, 0, true); Collection supportedSizes = o.getSupportedPictureSizes(); assertEquals(supportedSizes.size(), sizes.size()); for (Camera.Size size : sizes) { @@ -116,7 +117,7 @@ public class CameraOptions1Test extends BaseTest { Camera.Parameters params = mock(Camera.Parameters.class); when(params.getSupportedPictureSizes()).thenReturn(sizes); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection supportedRatios = o.getSupportedPictureAspectRatios(); assertEquals(supportedRatios.size(), expected.size()); for (AspectRatio ratio : expected) { @@ -137,7 +138,7 @@ public class CameraOptions1Test extends BaseTest { ); Camera.Parameters params = mock(Camera.Parameters.class); when(params.getSupportedVideoSizes()).thenReturn(sizes); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection supportedSizes = o.getSupportedVideoSizes(); assertEquals(supportedSizes.size(), sizes.size()); for (Camera.Size size : sizes) { @@ -158,7 +159,7 @@ public class CameraOptions1Test extends BaseTest { Camera.Parameters params = mock(Camera.Parameters.class); when(params.getSupportedVideoSizes()).thenReturn(null); when(params.getSupportedPreviewSizes()).thenReturn(sizes); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection supportedSizes = o.getSupportedVideoSizes(); assertEquals(supportedSizes.size(), sizes.size()); for (Camera.Size size : sizes) { @@ -177,7 +178,7 @@ public class CameraOptions1Test extends BaseTest { ); Camera.Parameters params = mock(Camera.Parameters.class); when(params.getSupportedVideoSizes()).thenReturn(sizes); - CameraOptions o = new CameraOptions(params, 0, true); + CameraOptions o = new Camera1Options(params, 0, true); Collection supportedSizes = o.getSupportedVideoSizes(); assertEquals(supportedSizes.size(), sizes.size()); for (Camera.Size size : sizes) { @@ -202,7 +203,7 @@ public class CameraOptions1Test extends BaseTest { Camera.Parameters params = mock(Camera.Parameters.class); when(params.getSupportedVideoSizes()).thenReturn(sizes); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection supportedRatios = o.getSupportedVideoAspectRatios(); assertEquals(supportedRatios.size(), expected.size()); for (AspectRatio ratio : expected) { @@ -218,7 +219,7 @@ public class CameraOptions1Test extends BaseTest { when(params.getMaxExposureCompensation()).thenReturn(0); when(params.getMinExposureCompensation()).thenReturn(0); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); assertFalse(o.supports(GestureAction.AUTO_FOCUS)); assertTrue(o.supports(GestureAction.TAKE_PICTURE)); assertTrue(o.supports(GestureAction.NONE)); @@ -232,7 +233,7 @@ public class CameraOptions1Test extends BaseTest { public void testAlwaysSupportedControls() { // Grid, VideoQuality, SessionType and Audio are always supported. Camera.Parameters params = mock(Camera.Parameters.class); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection grids = o.getSupportedControls(Grid.class); Collection video = o.getSupportedControls(VideoCodec.class); @@ -253,7 +254,7 @@ public class CameraOptions1Test extends BaseTest { supported.add(cameraInfo.facing); } - CameraOptions o = new CameraOptions(mock(Camera.Parameters.class), 0, false); + CameraOptions o = new Camera1Options(mock(Camera.Parameters.class), 0, false); Camera1Mapper m = Camera1Mapper.get(); Collection s = o.getSupportedControls(Facing.class); assertEquals(s.size(), supported.size()); @@ -272,7 +273,7 @@ public class CameraOptions1Test extends BaseTest { Camera.Parameters.WHITE_BALANCE_SHADE // Not supported )); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection w = o.getSupportedControls(WhiteBalance.class); assertEquals(w.size(), 2); assertTrue(w.contains(WhiteBalance.AUTO)); @@ -291,7 +292,7 @@ public class CameraOptions1Test extends BaseTest { Camera.Parameters.FLASH_MODE_RED_EYE // Not supported )); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection f = o.getSupportedControls(Flash.class); assertEquals(f.size(), 3); assertTrue(f.contains(Flash.OFF)); @@ -312,7 +313,7 @@ public class CameraOptions1Test extends BaseTest { Camera.Parameters.SCENE_MODE_FIREWORKS // Not supported )); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); Collection h = o.getSupportedControls(Hdr.class); assertEquals(h.size(), 2); assertTrue(h.contains(Hdr.OFF)); @@ -329,7 +330,7 @@ public class CameraOptions1Test extends BaseTest { when(params.isZoomSupported()).thenReturn(true); //noinspection ArraysAsListWithZeroOrOneArgument when(params.getSupportedFocusModes()).thenReturn(Arrays.asList(Camera.Parameters.FOCUS_MODE_AUTO)); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); assertTrue(o.isZoomSupported()); assertTrue(o.isAutoFocusSupported()); } @@ -340,7 +341,7 @@ public class CameraOptions1Test extends BaseTest { when(params.getMaxExposureCompensation()).thenReturn(10); when(params.getMinExposureCompensation()).thenReturn(-10); when(params.getExposureCompensationStep()).thenReturn(0.5f); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); assertTrue(o.isExposureCorrectionSupported()); assertEquals(o.getExposureCorrectionMinValue(), -10f * 0.5f, 0f); assertEquals(o.getExposureCorrectionMaxValue(), 10f * 0.5f, 0f); @@ -355,7 +356,7 @@ public class CameraOptions1Test extends BaseTest { new int[]{60000, 120000} ); when(params.getSupportedPreviewFpsRange()).thenReturn(result); - CameraOptions o = new CameraOptions(params, 0, false); + CameraOptions o = new Camera1Options(params, 0, false); assertEquals(20F, o.getPreviewFrameRateMinValue(), 0.001F); assertEquals(120F, o.getPreviewFrameRateMaxValue(), 0.001F); } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java index 6edb1140..0dbb7b4a 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java @@ -13,18 +13,17 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; -import android.util.Range; import android.view.SurfaceHolder; import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Tasks; import com.otaliastudios.cameraview.CameraException; import com.otaliastudios.cameraview.CameraLogger; -import com.otaliastudios.cameraview.CameraOptions; import com.otaliastudios.cameraview.controls.PictureFormat; import com.otaliastudios.cameraview.engine.mappers.Camera1Mapper; import com.otaliastudios.cameraview.engine.offset.Axis; import com.otaliastudios.cameraview.engine.offset.Reference; +import com.otaliastudios.cameraview.engine.options.Camera1Options; import com.otaliastudios.cameraview.frame.Frame; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.VideoResult; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java index 6d1341d2..ff6f7dc6 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java @@ -35,7 +35,6 @@ import com.google.android.gms.tasks.TaskCompletionSource; import com.google.android.gms.tasks.Tasks; import com.otaliastudios.cameraview.CameraException; import com.otaliastudios.cameraview.CameraLogger; -import com.otaliastudios.cameraview.CameraOptions; import com.otaliastudios.cameraview.PictureResult; import com.otaliastudios.cameraview.VideoResult; import com.otaliastudios.cameraview.controls.Facing; @@ -54,6 +53,7 @@ import com.otaliastudios.cameraview.engine.meter.MeterAction; import com.otaliastudios.cameraview.engine.meter.MeterResetAction; import com.otaliastudios.cameraview.engine.offset.Axis; import com.otaliastudios.cameraview.engine.offset.Reference; +import com.otaliastudios.cameraview.engine.options.Camera2Options; import com.otaliastudios.cameraview.frame.Frame; import com.otaliastudios.cameraview.frame.FrameManager; import com.otaliastudios.cameraview.gesture.Gesture; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/action/BaseAction.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/action/BaseAction.java index 341f7c31..461229e2 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/action/BaseAction.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/action/BaseAction.java @@ -39,6 +39,7 @@ public abstract class BaseAction implements Action { @Override public final void start(@NonNull ActionHolder holder) { + this.holder = holder; holder.addAction(this); if (holder.getLastResult(this) != null) { onStart(holder); @@ -62,9 +63,7 @@ public abstract class BaseAction implements Action { * holder stream. * @param holder holder */ - @CallSuper protected void onStart(@NonNull ActionHolder holder) { - this.holder = holder; // must be here // Overrideable } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Options.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/options/Camera1Options.java similarity index 96% rename from cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Options.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/engine/options/Camera1Options.java index e77a8ed5..981b25c5 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Options.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/options/Camera1Options.java @@ -1,4 +1,4 @@ -package com.otaliastudios.cameraview.engine; +package com.otaliastudios.cameraview.engine.options; import android.hardware.Camera; import android.media.CamcorderProfile; @@ -17,9 +17,9 @@ import com.otaliastudios.cameraview.size.Size; import java.util.List; -class Camera1Options extends CameraOptions { +public class Camera1Options extends CameraOptions { - Camera1Options(@NonNull Camera.Parameters params, int cameraId, boolean flipSizes) { + public Camera1Options(@NonNull Camera.Parameters params, int cameraId, boolean flipSizes) { List strings; Camera1Mapper mapper = Camera1Mapper.get(); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Options.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/options/Camera2Options.java similarity index 97% rename from cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Options.java rename to cameraview/src/main/java/com/otaliastudios/cameraview/engine/options/Camera2Options.java index 7067fdb4..154e543d 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Options.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/options/Camera2Options.java @@ -1,4 +1,4 @@ -package com.otaliastudios.cameraview.engine; +package com.otaliastudios.cameraview.engine.options; import android.graphics.ImageFormat; import android.hardware.camera2.CameraAccessException; @@ -27,9 +27,9 @@ import com.otaliastudios.cameraview.size.Size; import java.util.Set; @RequiresApi(Build.VERSION_CODES.LOLLIPOP) -class Camera2Options extends CameraOptions { +public class Camera2Options extends CameraOptions { - Camera2Options(@NonNull CameraManager manager, + public Camera2Options(@NonNull CameraManager manager, @NonNull String cameraId, boolean flipSizes) throws CameraAccessException { Camera2Mapper mapper = Camera2Mapper.get();