[Camera] Add parameter type and range check logic
authorHaesu Gwon <haesu.gwon@samsung.com>
Wed, 5 Jul 2017 04:08:36 +0000 (13:08 +0900)
committerHaesu Gwon <haesu.gwon@samsung.com>
Fri, 7 Jul 2017 07:20:47 +0000 (07:20 +0000)
Change-Id: Ib697cefae7c0f3ef1141491c7d4df9b25d988864
Signed-off-by: Haesu Gwon <haesu.gwon@samsung.com>
src/Tizen.Multimedia.Camera/Camera/Camera.cs
src/Tizen.Multimedia.Camera/Camera/CameraDisplaySettings.cs
src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs
src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs [changed mode: 0644->0755]

index ac50a24..0485c87 100755 (executable)
@@ -52,7 +52,7 @@ namespace Tizen.Multimedia
         /// <param name="device">The camera device to access</param>
         public Camera(CameraDevice device)
         {
-            CameraErrorFactory.ThrowIfError(Native.Create((int)device, out _handle),
+            CameraErrorFactory.ThrowIfError(Native.Create(device, out _handle),
                 "Failed to create camera instance");
 
             Feature = new CameraFeatures(this);
@@ -414,6 +414,7 @@ namespace Tizen.Multimedia
             {
                 return _display;
             }
+
             set
             {
                 ValidateState(CameraState.Created);
@@ -438,8 +439,7 @@ namespace Tizen.Multimedia
         CameraError IDisplayable<CameraError>.ApplyEvasDisplay(DisplayType type, ElmSharp.EvasObject evasObject)
         {
             Debug.Assert(_disposed == false);
-
-            Debug.Assert(Enum.IsDefined(typeof(DisplayType), type));
+            ValidationUtil.ValidateEnum(typeof(DisplayType), type, nameof(type));
 
             return CameraDisplay.SetTarget(GetHandle(), type, evasObject);
         }
@@ -550,7 +550,7 @@ namespace Tizen.Multimedia
         /// If display reuse is set using <see cref="DisplayReuseHint"/>
         /// before stopping the preview, the display will be reused and last frame on the display
         /// can be kept even though camera device is changed.
-        /// The camera must be in the <see cref="CameraState.Created"/> or <see cref="CameraState.Preview"/> state.
+        /// The camera must be in the <see cref="CameraState.Created"/>.
         /// </remarks>
         /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
@@ -558,7 +558,8 @@ namespace Tizen.Multimedia
         /// <exception cref="ObjectDisposedException">The camera already has been disposed.</exception>
         public void ChangeDevice(CameraDevice device)
         {
-            ValidateState(CameraState.Created, CameraState.Preview);
+            ValidateState(CameraState.Created);
+            ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device));
 
             CameraErrorFactory.ThrowIfError(Native.ChangeDevice(_handle, (int)device),
                 "Failed to change the camera device");
@@ -576,6 +577,7 @@ namespace Tizen.Multimedia
         public CameraDeviceState GetDeviceState(CameraDevice device)
         {
             int val = 0;
+            ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device));
 
             CameraErrorFactory.ThrowIfError(Native.GetDeviceState(device, out val),
                 "Failed to get the camera device state.");
@@ -595,6 +597,7 @@ namespace Tizen.Multimedia
         public static CameraFlashState GetFlashState(CameraDevice device)
         {
             CameraFlashState val = CameraFlashState.NotUsed;
+            ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device));
 
             CameraErrorFactory.ThrowIfError(Native.GetFlashState(device, out val),
                 "Failed to get camera flash state");
index 6f5ab4f..8149f55 100755 (executable)
@@ -52,6 +52,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraDisplayMode), value);
                 CameraErrorFactory.ThrowIfError(Native.SetMode(_camera.GetHandle(), value),
                     "Failed to set camera display mode.");
             }
@@ -102,6 +103,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraRotation), value);
                 CameraErrorFactory.ThrowIfError(Native.SetRotation(_camera.GetHandle(), value),
                     "Failed to set display rotation.");
             }
@@ -127,6 +129,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraFlip), value);
                 CameraErrorFactory.ThrowIfError(Native.SetFlip(_camera.GetHandle(), value),
                     "Failed to set display flip.");
             }
index ceb9b90..8feaa6f 100755 (executable)
@@ -132,6 +132,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraAutoFocusMode), value);
                 CameraErrorFactory.ThrowIfError(Native.SetAutoFocusMode(_camera.GetHandle(), value),
                     "Failed to set camera autofocus mode.");
             }
@@ -301,6 +302,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraExposureMode), value);
                 CameraErrorFactory.ThrowIfError(Native.SetExposureMode(_camera.GetHandle(), value),
                     "Failed to set camera exposure mode.");
             }
@@ -396,6 +398,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraWhiteBalance), value);
                 CameraErrorFactory.ThrowIfError(Native.SetWhitebalance(_camera.GetHandle(), value),
                     "Failed to set camera whitebalance.");
             }
@@ -421,6 +424,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraIsoLevel), value);
                 CameraErrorFactory.ThrowIfError(Native.SetIso(_camera.GetHandle(), value),
                     "Failed to set camera Iso level.");
             }
@@ -446,6 +450,11 @@ namespace Tizen.Multimedia
 
             set
             {
+                if (value < 1 || value > 100)
+                {
+                    throw new ArgumentException("Valid value is from 1(lowest quality) to 100(highest quality)");
+                }
+
                 CameraErrorFactory.ThrowIfError(Native.SetImageQuality(_camera.GetHandle(), value),
                     "Failed to set image quality.");
             }
@@ -472,6 +481,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraFps), value);
                 CameraErrorFactory.ThrowIfError(Native.SetPreviewFps(_camera.GetHandle(), value),
                     "Failed to set preview fps.");
             }
@@ -547,6 +557,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraPixelFormat), value);
                 CameraErrorFactory.ThrowIfError(SetPreviewPixelFormat(_camera.GetHandle(), value),
                     "Failed to set preview format.");
             }
@@ -601,6 +612,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraPixelFormat), value);
                 CameraErrorFactory.ThrowIfError(SetCaptureFormat(_camera.GetHandle(), value),
                     "Failed to set capture format.");
             }
@@ -681,6 +693,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraTheaterMode), value);
                 CameraErrorFactory.ThrowIfError(Native.SetTheaterMode(_camera.GetHandle(), value),
                     "Failed to set camera theater mode.");
             }
@@ -706,6 +719,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraEffectMode), value);
                 CameraErrorFactory.ThrowIfError(Native.SetEffect(_camera.GetHandle(), value),
                     "Failed to set camera effect.");
             }
@@ -731,6 +745,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraSceneMode), value);
                 CameraErrorFactory.ThrowIfError(Native.SetSceneMode(_camera.GetHandle(), value),
                     "Failed to set camera scene mode.");
             }
@@ -756,6 +771,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraFlashMode), value);
                 CameraErrorFactory.ThrowIfError(Native.SetFlashMode(_camera.GetHandle(), value),
                     "Failed to set camera flash mode.");
             }
@@ -799,6 +815,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraRotation), value);
                 CameraErrorFactory.ThrowIfError(Native.SetStreamRotation(_camera.GetHandle(), value),
                     "Failed to set camera stream rotation.");
             }
@@ -824,6 +841,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraFlip), value);
                 CameraErrorFactory.ThrowIfError(Native.SetFlip(_camera.GetHandle(), value),
                     "Failed to set camera flip.");
             }
@@ -854,6 +872,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraHdrMode), value);
                 CameraErrorFactory.ThrowIfError(Native.SetHdrMode(_camera.GetHandle(), value),
                     "Failed to set camera hdr mode.");
             }
@@ -942,6 +961,7 @@ namespace Tizen.Multimedia
         {
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraPtzType), value);
                 CameraErrorFactory.ThrowIfError(Native.SetPtzType(_camera.GetHandle(), (int)value),
                     "Failed to set camera ptz type.");
             }
@@ -957,6 +977,7 @@ namespace Tizen.Multimedia
         /// <exception cref="ObjectDisposedException">The camera already has been disposed.</exception>
         public void SetPan(CameraPtzMoveType type, int panStep)
         {
+            ValidationUtil.ValidateEnum(typeof(CameraPtzMoveType), type, nameof(type));
             CameraErrorFactory.ThrowIfError(Native.SetPan(_camera.GetHandle(), type, panStep),
                 "Failed to set the camera pan type.");
         }
@@ -987,6 +1008,7 @@ namespace Tizen.Multimedia
         /// <exception cref="ObjectDisposedException">The camera already has been disposed.</exception>
         public void SetTilt(CameraPtzMoveType type, int tiltStep)
         {
+            ValidationUtil.ValidateEnum(typeof(CameraPtzMoveType), type, nameof(type));
             CameraErrorFactory.ThrowIfError(Native.SetTilt(_camera.GetHandle(), type, tiltStep),
                 "Failed to set the camera tilt type\t.");
         }
@@ -1191,6 +1213,7 @@ namespace Tizen.Multimedia
 
             set
             {
+                ValidationUtil.ValidateEnum(typeof(CameraTagOrientation), value);
                 CameraErrorFactory.ThrowIfError(Native.SetTagOrientation(_camera.GetHandle(), value),
                     "Failed to set camera tag orientation.");
             }
old mode 100644 (file)
new mode 100755 (executable)
index acee380..3262afe
@@ -56,7 +56,7 @@ internal static partial class Interop
         internal delegate void DeviceStateChangedCallback(CameraDevice device, CameraDeviceState state, IntPtr userData);
 
         [DllImport(Libraries.Camera, EntryPoint = "camera_create")]
-        internal static extern CameraError Create(int device, out IntPtr handle);
+        internal static extern CameraError Create(CameraDevice device, out IntPtr handle);
 
         [DllImport(Libraries.Camera, EntryPoint = "camera_change_device")]
         internal static extern CameraError ChangeDevice(IntPtr handle, int device);