diff --git a/runtime/main/extend/systemplugin/multimediaImage.js b/runtime/main/extend/systemplugin/multimediaImage.js new file mode 100644 index 0000000000000000000000000000000000000000..d44df62562279043883bf4bd790e0977180d60c5 --- /dev/null +++ b/runtime/main/extend/systemplugin/multimediaImage.js @@ -0,0 +1,404 @@ +/* + * 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" +const SizeMock = { + height: "[PC Preview] unknow height", + width: "[PC Preview] unknow width" +} +const ImageInfoMock = { + size: SizeMock +} +export const PixelMapMock = { + isEditable: "[PC Preview]: unknow isEditable", + readPixelsToBuffer: function (...args) { + console.warn("PixelMap.readPixelsToBuffer 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, reject) => { + resolve(); + }) + } + }, + readPixels: function (...args) { + console.warn("PixelMap.readPixels 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, reject) => { + resolve(); + }) + } + }, + writePixels: function (...args) { + console.warn("PixelMap.writePixels 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, reject) => { + resolve(); + }) + } + }, + writeBufferToPixels: function (...args) { + console.warn("PixelMap.writeBufferToPixels 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, reject) => { + resolve(); + }) + } + }, + getImageInfo: function (...args) { + console.warn("PixelMap.getImageInfo 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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, imageInfoMock); + } else { + return new Promise((resolve, reject) => { + resolve(imageInfoMock); + }) + } + }, + getBytesNumberPerRow: function (...args) { + console.warn("PixelMap.getBytesNumberPerRow interface mocked in the Previewer. How this interface works on the Previewer" + + " may be different from that on a real device.") + return paramMock.paramNumberMock + }, + getPixelBytesNumber: function (...args) { + console.warn("PixelMap.getPixelBytesNumber interface mocked in the Previewer. How this interface works on the Previewer" + + " may be different from that on a real device.") + return paramMock.paramNumberMock + }, + release: function (...args) { + console.warn("PixelMap.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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve, reject) => { + resolve(); + }) + } + } +} +export function mockMultimediaImage() { + const RegionMock = { + size: SizeMock, + x: "[PC Preview] unknow x", + y: "[PC Preview] unknow y" + } + const PositionAreaMock = { + pixels: "[PC Preview] unknow pixels", + offset: "[PC Preview] unknow offset", + stride: "[PC Preview] unknow stride", + region: RegionMock + } + const PackingOptionMock = { + format: "[PC Preview] unknow format", + quality: "[PC Preview] unknow quality" + } + const GetImagePropertyOptionsMock = { + index?: "[PC Preview] unknow index?", + defaultValue?: "[PC Preview] unknow defaultValue?" + } + const DecodingOptionsMock = { + index?: "[PC Preview] unknow index?", + sampleSize?: "[PC Preview] unknow sampleSize?", + rotate?: "[PC Preview] unknow rotate?", + editable?: "[PC Preview] unknow editable?", + desiredSize?: SizeMock, + desiredRegion?: RegionMock, + desiredPixelFormat?: PixelMapFormatMock + } + const ComponentMock = { + componentType: ComponentTypeMock, + rowStride: "[PC Preview]: unknow rowStride", + pixelStride: "[PC Preview]: unknow pixelStride", + byteBuffer: "[PC Preview]: unknow pixelStride" + } + const InitializationOptionsMock = { + size: SizeMock, + pixelFormat?: PixelMapFormatMock, + editable?: "[PC Preview]: unknow editable?", + alphaType: AlphaTypeMock, + scaleMode: ScaleModeMock + } + const ImageSourceMock = { + getImageInfo: function (...args) { + console.warn("ImageSource.getImageInfo 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, imageInfoMock); + } else { + return new Promise((resolve, reject) => { + resolve(imageInfoMock); + }) + } + }, + release: function (...args) { + console.warn("ImageSource.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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve, reject) => { + resolve(); + }) + } + }, + createPixelMap: function (...args) { + console.warn("ImageSource.createPixelMap 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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, PixelMapMock); + } else { + return new Promise((resolve, reject) => { + resolve(PixelMapMock); + }) + } + }, + getImageProperty: function (...args) { + console.warn("ImageSource.getImageProperty 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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramStringMock); + } else { + return new Promise((resolve, reject) => { + resolve(paramMock.paramStringMock); + }) + } + }, + release: function (...args) { + console.warn("ImageSource.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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve, reject) => { + resolve(); + }) + } + } + supportedFormats: "[PC Preview] unknow supportedFormats" + } + const ImagePackerMock = { + packing: function (...args) { + console.warn("ImagePacker.packing 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.paramArrayMock); + } else { + return new Promise((resolve, reject) => { + resolve(paramMock.paramArrayMock); + }) + } + }, + release: function (...args) { + console.warn("ImagePacker.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, reject) => { + resolve(); + }) + } + }, + supportedFormats: "[PC Preview] unknow supportedFormats" + } + const ImageMock = { + clipRect: RegionMock, + size: SizeMock, + format: "[PC Preview]: unknow format", + getComponent: function (...args) { + console.warn("Image.getComponent 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,ComponentMock); + } else { + return new Promise((resolve, reject) => { + resolve(ComponentMock); + }) + } + }, + release: function (...args) { + console.warn("Image.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, reject) => { + resolve(); + }) + } + } + } + const ImageReceiverMock = { + size: SizeMock, + capacity: "[PC Preview] unknow width", + format: ImageFormatMock, + getReceivingSurfaceId: function (...args) { + console.warn("ImageReceiver.getReceivingSurfaceId 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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramStringMock); + } else { + return new Promise((resolve, reject) => { + resolve(paramMock.paramStringMock); + }) + } + }, + readLatestImage: function (...args) { + console.warn("ImageReceiver.readLatestImage 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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.ImageMock); + } else { + return new Promise((resolve, reject) => { + resolve(paramMock.ImageMock); + }) + } + }, + readLatestImage: function (...args) { + console.warn("ImageReceiver.readLatestImage 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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, paramMock.ImageMock); + } else { + return new Promise((resolve, reject) => { + resolve(paramMock.ImageMock); + }) + } + }, + on: function (...args) { + console.warn("ImageReceiver.on 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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve, reject) => { + resolve(); + }) + } + }, + release: function (...args) { + console.warn("ImageReceiver.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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock); + } else { + return new Promise((resolve, reject) => { + resolve(); + }) + } + } + } + const PixelMapFormatMock = { + UNKNOWN: "[PC Preview]: unknow UNKNOWN", + RGB_565: "[PC Preview]: unknow RGB_565", + RGBA_8888: "[PC Preview]: unknow RGBA_8888", + } + const PropertyKeyMock = { + BITS_PER_SAMPLE: "[PC Preview]: unknow BITS_PER_SAMPLE", + ORIENTATION: "[PC Preview]: unknow ORIENTATION", + IMAGE_LENGTH: "[PC Preview]: unknow IMAGE_LENGTH", + GPS_LATITUDE: "[PC Preview]: unknow GPS_LATITUDE", + GPS_LONGITUDE: "[PC Preview]: unknow GPS_LONGITUDE", + GPS_LATITUDE_REF: "[PC Preview]: unknow GPS_LATITUDE_REF", + GPS_LONGITUDE_REF: "[PC Preview]: unknow GPS_LONGITUDE_REF" + } + const ImageFormatMock = { + YCBCR_422_SP: "[PC Preview]: unknow YCBCR_422_SP", + JPEG: "[PC Preview]: unknow JPEG" + } + const AlphaTypeMock = { + UNKNOWN: "[PC Preview]: unknow UNKNOWN", + OPAQUE: "[PC Preview]: unknow OPAQUE", + PREMUL: "[PC Preview]: unknow PREMUL", + UNPREMUL: "[PC Preview]: unknow UNPREMUL" + } + const ScaleModeMock = { + CENTER_CROP: "[PC Preview]: unknow CENTER_CROP", + FIT_TARGET_SIZE: "[PC Preview]: unknow FIT_TARGET_SIZE" + } + const ComponentTypeMock = { + YUV_Y: "[PC Preview]: unknow YUV_Y", + YUV_U: "[PC Preview]: unknow YUV_U", + YUV_V: "[PC Preview]: unknow YUV_V", + JPEG: "[PC Preview]: unknow JPEG" + } + global.systemplugin.multimedia.image = { + PixelMapFormat: PixelMapFormatMock, + PropertyKey: PropertyKeyMock, + ImageFormat: ImageFormatMock, + AlphaType: AlphaTypeMock, + ScaleMode: ScaleModeMock, + ComponentType: ComponentTypeMock, + createPixelMap: function (...args) { + console.warn("multimedia.image.createPixelMap 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 (len > 0 && typeof args[len - 1] === 'function') { + args[len - 1].call(this, paramMock.businessErrorMock, PixelMapMock); + } else { + return new Promise((resolve, reject) => { + resolve(PixelMapMock); + }) + } + }, + createImageSource: function () { + console.warn("multimedia.image.createImageSource interface mocked in the Previewer. How this interface works" + + " on the Previewer may be different from that on a real device.") + return ImageSourceMock; + }, + createImagePacker: function () { + console.warn("multimedia.image.createImagePacker interface mocked in the Previewer. How this interface works" + + " on the Previewer may be different from that on a real device.") + return ImagePackerMock; + }, + createImageReceiver: function () { + console.warn("multimedia.image.createImageReceiver interface mocked in the Previewer. How this interface works" + + " on the Previewer may be different from that on a real device.") + return ImageReceiverMock; + } + } +}