1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef DOM_CAMERA_ICAMERACONTROL_H
6 #define DOM_CAMERA_ICAMERACONTROL_H
9 #include "nsIDOMDeviceStorage.h"
10 #include "nsIDOMCameraManager.h"
11 #include "DictionaryHelpers.h"
12 #include "CameraCommon.h"
18 class DOMCameraPreview
;
23 NS_INLINE_DECL_THREADSAFE_REFCOUNTING(ICameraControl
)
25 virtual nsresult
GetPreviewStream(CameraSize aSize
, nsICameraPreviewStreamCallback
* onSuccess
, nsICameraErrorCallback
* onError
) = 0;
26 virtual nsresult
StartPreview(DOMCameraPreview
* aDOMPreview
) = 0;
27 virtual void StopPreview() = 0;
28 virtual nsresult
AutoFocus(nsICameraAutoFocusCallback
* onSuccess
, nsICameraErrorCallback
* onError
) = 0;
29 virtual nsresult
TakePicture(CameraSize aSize
, int32_t aRotation
, const nsAString
& aFileFormat
, CameraPosition aPosition
, nsICameraTakePictureCallback
* onSuccess
, nsICameraErrorCallback
* onError
) = 0;
30 virtual nsresult
StartRecording(nsIDOMDeviceStorage
* aStorageArea
, const nsAString
& aFilename
, nsICameraStartRecordingCallback
* onSuccess
, nsICameraErrorCallback
* onError
) = 0;
31 virtual nsresult
StopRecording() = 0;
32 virtual nsresult
GetPreviewStreamVideoMode(CameraRecordingOptions
* aOptions
, nsICameraPreviewStreamCallback
* onSuccess
, nsICameraErrorCallback
* onError
) = 0;
34 virtual nsresult
Set(uint32_t aKey
, const nsAString
& aValue
) = 0;
35 virtual nsresult
Get(uint32_t aKey
, nsAString
& aValue
) = 0;
36 virtual nsresult
Set(uint32_t aKey
, double aValue
) = 0;
37 virtual nsresult
Get(uint32_t aKey
, double* aValue
) = 0;
38 virtual nsresult
Set(JSContext
* aCx
, uint32_t aKey
, const JS::Value
& aValue
, uint32_t aLimit
) = 0;
39 virtual nsresult
Get(JSContext
* aCx
, uint32_t aKey
, JS::Value
* aValue
) = 0;
40 virtual nsresult
Set(nsICameraShutterCallback
* aOnShutter
) = 0;
41 virtual nsresult
Get(nsICameraShutterCallback
** aOnShutter
) = 0;
42 virtual nsresult
Set(nsICameraClosedCallback
* aOnClosed
) = 0;
43 virtual nsresult
Get(nsICameraClosedCallback
** aOnClosed
) = 0;
44 virtual nsresult
SetFocusAreas(JSContext
* aCx
, const JS::Value
& aValue
) = 0;
45 virtual nsresult
SetMeteringAreas(JSContext
* aCx
, const JS::Value
& aValue
) = 0;
47 virtual const char* GetParameter(const char* aKey
) = 0;
48 virtual const char* GetParameterConstChar(uint32_t aKey
) = 0;
49 virtual double GetParameterDouble(uint32_t aKey
) = 0;
50 virtual void GetParameter(uint32_t aKey
, nsTArray
<CameraRegion
>& aRegions
) = 0;
51 virtual void SetParameter(const char* aKey
, const char* aValue
) = 0;
52 virtual void SetParameter(uint32_t aKey
, const char* aValue
) = 0;
53 virtual void SetParameter(uint32_t aKey
, double aValue
) = 0;
54 virtual void SetParameter(uint32_t aKey
, const nsTArray
<CameraRegion
>& aRegions
) = 0;
56 virtual void Shutdown() = 0;
59 virtual ~ICameraControl() { }
62 } // namespace mozilla
64 #endif // DOM_CAMERA_ICAMERACONTROL_H