diff --git a/runtime/main/extend/systemplugin/napi/multimediaCamera.js b/runtime/main/extend/systemplugin/napi/multimediaCamera.js new file mode 100644 index 0000000000000000000000000000000000000000..938c5d7e8e549e091435cb95b73452174f77e8c3 --- /dev/null +++ b/runtime/main/extend/systemplugin/napi/multimediaCamera.js @@ -0,0 +1,474 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { paramMock } from "../utils" + +export function mockMultimediaCamera() { + const Camera = { + cameraId: '[PC preview] unknow pid', + cameraPosition: '[PC preview] unknow cameraPosition', + cameraType: '[PC preview] unknow cameraType', + connectionType: '[PC preview] unknow connectionType' + } + const FlashMode = '[PC preview] unknow flashMode' + const FocusMode = '[PC preview] unknow focusMode' + const multimediaCameraMock = { + getCameraManager: function (...args) { + console.warn('camera.getCameraManager interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, CameraManager); + } else { + return new Promise((resolve) => { + resolve(CameraManager); + }); + } + }, + createCaptureSession: function (...args) { + console.warn('camera.createCaptureSession interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, CaptureSession); + } else { + return new Promise((resolve) => { + resolve(CaptureSession); + }); + } + }, + createPreviewOutput: function (...args) { + console.warn('camera.createPreviewOutput interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, PreviewOutput); + } else { + return new Promise((resolve) => { + resolve(PreviewOutput); + }); + } + }, + createPhotoOutput: function (...args) { + console.warn('camera.createPreviewOutput interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, PhotoOutput); + } else { + return new Promise((resolve) => { + resolve(PhotoOutput); + }); + } + }, + createVideoOutput: function (...args) { + console.warn('camera.createVideoOutput interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, VideoOutput); + } else { + return new Promise((resolve) => { + resolve(VideoOutput); + }); + } + }, + } + const CameraManager = { + getCameras: function (...args) { + console.warn('CameraManager.getCameras interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, [Camera]); + } else { + return new Promise((resolve) => { + resolve([Camera]); + }); + } + }, + createCameraInput: function (...args) { + console.warn('CameraManager.createCameraInput interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, CameraInput); + } else { + return new Promise((resolve) => { + resolve(CameraInput); + }); + } + }, + on: function (...args) { + console.warn('CameraManager.on interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + } + } + const CameraInput = { + getCameraId: function (...args) { + console.warn('CameraInput.getCameraId interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramStringMock); + } else { + return new Promise((resolve) => { + resolve(paramMock.paramStringMock); + }); + } + }, + hasFlash: function (...args) { + console.warn('CameraInput.hasFlash interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramBooleanMock); + } else { + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock); + }); + } + }, + isFlashModeSupported: function (...args) { + console.warn('CameraInput.isFlashModeSupported interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramBooleanMock); + } else { + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock); + }); + } + }, + getFlashMode: function (...args) { + console.warn('CameraInput.getFlashMode interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, FlashMode); + } else { + return new Promise((resolve) => { + resolve(FlashMode); + }); + } + }, + setFlashMode: function (...args) { + console.warn('CameraInput.setFlashMode interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + isFocusModeSupported: function (...args) { + console.warn('CameraInput.isFocusModeSupported interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramBooleanMock); + } else { + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock); + }); + } + }, + getFocusMode: function (...args) { + console.warn('CameraInput.getFocusMode interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, FocusMode); + } else { + return new Promise((resolve) => { + resolve(FocusMode); + }); + } + }, + setFocusMode: function (...args) { + console.warn('CameraInput.setFocusMode interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + getZoomRatioRange: function (...args) { + console.warn('CameraInput.getZoomRatioRange interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, [paramMock.paramNumberMock]); + } else { + return new Promise((resolve) => { + resolve([paramMock.paramNumberMock]); + }); + } + }, + getZoomRatio: function (...args) { + console.warn('CameraInput.getZoomRatioRange interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramNumberMock); + } else { + return new Promise((resolve) => { + resolve(paramMock.paramNumberMock); + }); + } + }, + setZoomRatio: function (...args) { + console.warn('CameraInput.setZoomRatio interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + release: function (...args) { + console.warn('CameraInput.release interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + on: function (...args) { + console.warn('CameraInput.on interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + } + } + const CaptureSession = { + beginConfig: function (...args) { + console.warn('CaptureSession.beginConfig interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + commitConfig: function (...args) { + console.warn('CaptureSession.commitConfig interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + addInput: function (...args) { + console.warn('CaptureSession.addInput interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + addOutput: function (...args) { + console.warn('CaptureSession.addOutput interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + removeInput: function (...args) { + console.warn('CaptureSession.removeInput interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + removeOutput: function (...args) { + console.warn('CaptureSession.removeInput interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + start: function (...args) { + console.warn('CaptureSession.start interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + stop: function (...args) { + console.warn('CaptureSession.stop interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + release: function (...args) { + console.warn('CaptureSession.release interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + on: function (...args) { + console.warn('CaptureSession.on interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + } + } + const PreviewOutput = { + release: function (...args) { + console.warn('PreviewOutput.release interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + on: function (...args) { + console.warn('PreviewOutput.release interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + }, + } + const PhotoOutput = { + capture: function (...args) { + console.warn('PhotoOutput.capture interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + release: function (...args) { + console.warn('PhotoOutput.release interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + on: function (...args) { + console.warn('PhotoOutput.on interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + } + } + const VideoOutput = { + start: function (...args) { + console.warn('VideoOutput.start interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + stop: function (...args) { + console.warn('VideoOutput.stop interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + release: function (...args) { + console.warn('VideoOutput.release interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + const len = args.length; + if (typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve) => { + resolve(); + }); + } + }, + on: function (...args) { + console.warn('VideoOutput.on interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.'); + } + } + return multimediaCameraMock +} \ No newline at end of file