From 5ab86eee7dd55b3a22ad62a74f4bdaaed5270d7b Mon Sep 17 00:00:00 2001 From: zhaolinglan Date: Mon, 8 Aug 2022 20:55:06 +0800 Subject: [PATCH] add inputmethod extension api mock Signed-off-by: zhaolinglan --- .../main/extend/systemplugin/napi/index.js | 3 ++ .../napi/ohos_inputmethodextensionability.js | 35 +++++++++++++ .../napi/ohos_inputmethodextensioncontext.js | 49 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 runtime/main/extend/systemplugin/napi/ohos_inputmethodextensionability.js create mode 100644 runtime/main/extend/systemplugin/napi/ohos_inputmethodextensioncontext.js diff --git a/runtime/main/extend/systemplugin/napi/index.js b/runtime/main/extend/systemplugin/napi/index.js index 62ca3243..45444b2e 100755 --- a/runtime/main/extend/systemplugin/napi/index.js +++ b/runtime/main/extend/systemplugin/napi/index.js @@ -143,6 +143,7 @@ import { mockDisplay } from './ohos_display' import { mockHuks } from './ohos_security_huks' import { mockInputMethod } from './ohos_inputmethod' import { mockInputMethodEngine } from './ohos_inputmethodengine' +import { mockInputMethodExtensionAbility } from "./ohos_inputmethodextensionability"; import { mockConnection } from './ohos_net_connection' import { mockHttp } from './ohos_net_http' import { mockSocket } from './ohos_net_socket' @@ -272,6 +273,8 @@ export function mockRequireNapiFun() { return mockInputMethodEngine(); case "inputmethod": return mockInputMethod(); + case "inputmethodextensionability": + return mockInputMethodExtensionAbility(); case "security.huks": return mockHuks(); case "display": diff --git a/runtime/main/extend/systemplugin/napi/ohos_inputmethodextensionability.js b/runtime/main/extend/systemplugin/napi/ohos_inputmethodextensionability.js new file mode 100644 index 00000000..fe915bd7 --- /dev/null +++ b/runtime/main/extend/systemplugin/napi/ohos_inputmethodextensionability.js @@ -0,0 +1,35 @@ +/* + * 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 { InputMethodExtensionContextClass } from "./ohos_inputmethodextensioncontext" + +export function mockInputMethodExtensionAbility() { + const InputMethodExtensionAbilityClass = class InputMethodExtensionAbility { + constructor() { + console.warn('InputMethodExtensionAbility.constructor interface mocked in the Previewer. How this interface works on' + + ' the Previewer may be different from that on a real device.'); + this.context = new InputMethodExtensionContextClass(); + this.onCreate = function (...args) { + console.warn("InputMethodExtensionAbility.onCreate interface mocked in the Previewer. How this interface works on the Previewer" + + " may be different from that on a real device.") + }; + this.onDestroy = function () { + console.warn("InputMethodExtensionAbility.onDestroy interface mocked in the Previewer. How this interface works on the Previewer" + + " may be different from that on a real device.") + }; + } + } + return new InputMethodExtensionAbilityClass(); +} \ No newline at end of file diff --git a/runtime/main/extend/systemplugin/napi/ohos_inputmethodextensioncontext.js b/runtime/main/extend/systemplugin/napi/ohos_inputmethodextensioncontext.js new file mode 100644 index 00000000..25bde6ca --- /dev/null +++ b/runtime/main/extend/systemplugin/napi/ohos_inputmethodextensioncontext.js @@ -0,0 +1,49 @@ +/* + * 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" +import { ExtensionContextClass } from "./application/ExtensionContext" + +export const InputMethodExtensionContextClass = class InputMethodExtensionContext extends ExtensionContextClass { + constructor() { + super(); + console.warn("InputMethodExtensionContext.constructor interface mocked in the Previewer. How this interface works on the Previewer" + + " may be different from that on a real device.") + this.startAbility = function (...args) { + console.warn("InputMethodExtensionContext.startAbility 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(); + }) + } + }; + this.terminateSelf = function (...args) { + console.warn("InputMethodExtensionContext.terminateSelf 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(); + }) + } + }; + } +}; \ No newline at end of file