/* void takePicture (in jsval aOptions, in nsICameraTakePictureCallback onSuccess, [optional] in nsICameraErrorCallback onError); */ NS_IMETHODIMP nsCameraControl::TakePicture(const JS::Value& aOptions, nsICameraTakePictureCallback* onSuccess, nsICameraErrorCallback* onError, JSContext* cx) { NS_ENSURE_TRUE(onSuccess, NS_ERROR_INVALID_ARG); CameraPictureOptions options; CameraSize size; CameraPosition pos; nsresult rv = options.Init(cx, &aOptions); NS_ENSURE_SUCCESS(rv, rv); rv = size.Init(cx, &options.pictureSize); NS_ENSURE_SUCCESS(rv, rv); /** * Default values, until the dictionary parser can handle them. * NaN indicates no value provided. */ pos.latitude = NAN; pos.longitude = NAN; pos.altitude = NAN; pos.timestamp = NAN; rv = pos.Init(cx, &options.position); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIRunnable> takePictureTask = new TakePictureTask(this, size, options.rotation, options.fileFormat, pos, onSuccess, onError); mCameraThread->Dispatch(takePictureTask, NS_DISPATCH_NORMAL); return NS_OK; }
/* void takePicture (in jsval aOptions, in nsICameraTakePictureCallback onSuccess, [optional] in nsICameraErrorCallback onError); */ NS_IMETHODIMP nsDOMCameraControl::TakePicture(const JS::Value& aOptions, nsICameraTakePictureCallback* onSuccess, nsICameraErrorCallback* onError, JSContext* cx) { NS_ENSURE_TRUE(onSuccess, NS_ERROR_INVALID_ARG); CameraPictureOptions options; CameraSize size; CameraPosition pos; nsresult rv = options.Init(cx, &aOptions); NS_ENSURE_SUCCESS(rv, rv); rv = size.Init(cx, &options.pictureSize); NS_ENSURE_SUCCESS(rv, rv); /** * Default values, until the dictionary parser can handle them. * NaN indicates no value provided. */ pos.latitude = NAN; pos.longitude = NAN; pos.altitude = NAN; pos.timestamp = NAN; rv = pos.Init(cx, &options.position); NS_ENSURE_SUCCESS(rv, rv); return mCameraControl->TakePicture(size, options.rotation, options.fileFormat, pos, onSuccess, onError); }
/* [implicit_jscontext] void getPreviewStream (in jsval aOptions, in nsICameraPreviewStreamCallback onSuccess, [optional] in nsICameraErrorCallback onError); */ NS_IMETHODIMP nsDOMCameraControl::GetPreviewStream(const JS::Value& aOptions, nsICameraPreviewStreamCallback* onSuccess, nsICameraErrorCallback* onError, JSContext* cx) { NS_ENSURE_TRUE(onSuccess, NS_ERROR_INVALID_ARG); CameraSize size; nsresult rv = size.Init(cx, &aOptions); NS_ENSURE_SUCCESS(rv, rv); return mCameraControl->GetPreviewStream(size, onSuccess, onError); }
void nsDOMCameraControl::SetThumbnailSize(JSContext* cx, JS::Handle<JS::Value> aSize, ErrorResult& aRv) { CameraSize size; aRv = size.Init(cx, aSize.address()); if (aRv.Failed()) { return; } aRv = mCameraControl->Set(CAMERA_PARAM_THUMBNAILSIZE, size); }
void nsDOMCameraControl::SetThumbnailSize(JSContext* aCx, JS::Handle<JS::Value> aSize, ErrorResult& aRv) { CameraSize size; if (!size.Init(aCx, aSize)) { aRv = NS_ERROR_FAILURE; return; } ICameraControl::Size s = { size.mWidth, size.mHeight }; aRv = mCameraControl->Set(CAMERA_PARAM_THUMBNAILSIZE, s); }
/* [implicit_jscontext] void getPreviewStream (in jsval aOptions, in nsICameraPreviewStreamCallback onSuccess, [optional] in nsICameraErrorCallback onError); */ NS_IMETHODIMP nsCameraControl::GetPreviewStream(const JS::Value& aOptions, nsICameraPreviewStreamCallback* onSuccess, nsICameraErrorCallback* onError, JSContext* cx) { NS_ENSURE_TRUE(onSuccess, NS_ERROR_INVALID_ARG); CameraSize size; nsresult rv = size.Init(cx, &aOptions); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIRunnable> getPreviewStreamTask = new GetPreviewStreamTask(this, size, onSuccess, onError); mCameraThread->Dispatch(getPreviewStreamTask, NS_DISPATCH_NORMAL); return NS_OK; }