1/* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16/** 17 * @file 18 * @kit AbilityKit 19 */ 20 21import { AsyncCallback, BusinessError } from '@ohos.base'; 22import { OverlayModuleInfo as _OverlayModuleInfo } from 'bundleManager.OverlayModuleInfo'; 23 24export default namespace overlay { 25 26 loadLibrary("ani_overlay.z"); 27 28 export native function setOverlayEnabledNative(moduleName: string, isEnabled: boolean): void; 29 export native function setOverlayEnabledByBundleNameNative(bundleName: string, moduleName: string, isEnabled: boolean): void; 30 export native function getOverlayModuleInfoNative(moduleName: string): OverlayModuleInfo; 31 export native function getTargetOverlayModuleInfosNative(targetModuleName: string): Array<OverlayModuleInfo>; 32 export native function getOverlayModuleInfoByBundleNameNative(bundleName: string, moduleName: string): Array<OverlayModuleInfo>; 33 export native function getTargetOverlayModuleInfosByBundleNameNative(targetBundleName: string, moduleName: string): Array<OverlayModuleInfo>; 34 35 function setOverlayEnabled(moduleName: string, isEnabled: boolean, callback: AsyncCallback<void>): void { 36 let cb = (): void => { 37 return overlay.setOverlayEnabledNative(moduleName, isEnabled); 38 }; 39 let p1 = taskpool.execute(cb); 40 p1.then(() => { 41 callback(null, undefined); 42 }, (err: Error): void => { 43 callback(err as BusinessError, undefined); 44 }); 45 } 46 47 function setOverlayEnabled(moduleName: string, isEnabled: boolean): Promise<void> { 48 let p = new Promise<void>((resolve: (v: undefined) => void, reject: (error: BusinessError) => void) : void => { 49 let cb = (): void => { 50 return overlay.setOverlayEnabledNative(moduleName, isEnabled); 51 }; 52 let p1 = taskpool.execute(cb); 53 p1.then((): void => { 54 resolve(undefined); 55 }, (err: Error): void => { 56 reject(err as BusinessError); 57 }); 58 } 59 ); 60 return p; 61 } 62 63 function setOverlayEnabledByBundleName(bundleName: string, moduleName: string, isEnabled: boolean, callback: AsyncCallback<void>): void { 64 let cb = (): void => { 65 return overlay.setOverlayEnabledByBundleNameNative(bundleName, moduleName, isEnabled); 66 }; 67 let p1 = taskpool.execute(cb); 68 p1.then(() => { 69 callback(null, undefined); 70 }, (err: Error): void => { 71 callback(err as BusinessError, undefined); 72 }); 73 } 74 75 function setOverlayEnabledByBundleName(bundleName: string, moduleName: string, isEnabled: boolean): Promise<void> { 76 let p = new Promise<void>((resolve: (v: undefined) => void, reject: (error: BusinessError) => void) : void => { 77 let cb = (): void => { 78 return overlay.setOverlayEnabledByBundleNameNative(bundleName, moduleName, isEnabled); 79 }; 80 let p1 = taskpool.execute(cb); 81 p1.then((): void => { 82 resolve(undefined); 83 }, (err: Error): void => { 84 reject(err as BusinessError); 85 }); 86 } 87 ); 88 return p; 89 } 90 91 function getOverlayModuleInfo(moduleName: string, callback: AsyncCallback<OverlayModuleInfo>): void { 92 let cb = (): OverlayModuleInfo => { 93 return overlay.getOverlayModuleInfoNative(moduleName); 94 }; 95 let p1 = taskpool.execute(cb); 96 p1.then((e: NullishType) => { 97 let result: OverlayModuleInfo = e as OverlayModuleInfo; 98 callback(null, result); 99 }, (err: Error): void => { 100 callback(err as BusinessError, undefined); 101 }); 102 } 103 104 function getOverlayModuleInfo(moduleName: string): Promise<OverlayModuleInfo> { 105 let p = new Promise<OverlayModuleInfo>((resolve: (overlayModuleInfo: OverlayModuleInfo) => void, reject: (error: BusinessError) => void) => { 106 let cb = (): OverlayModuleInfo => { 107 return overlay.getOverlayModuleInfoNative(moduleName); 108 }; 109 let p1 = taskpool.execute(cb); 110 p1.then((e: NullishType) => { 111 let result: OverlayModuleInfo = e as OverlayModuleInfo; 112 resolve(result); 113 }, (err: Error): void => { 114 reject(err as BusinessError); 115 }); 116 }); 117 return p; 118 } 119 120 function getTargetOverlayModuleInfos(targetModuleName: string, callback: AsyncCallback<Array<OverlayModuleInfo>>): void { 121 let cb = (): (Array<OverlayModuleInfo>) => { 122 return overlay.getTargetOverlayModuleInfosNative(targetModuleName); 123 }; 124 let p1 = taskpool.execute(cb); 125 p1.then((e: NullishType) => { 126 let resultArray: Array<OverlayModuleInfo> = e as Array<OverlayModuleInfo>; 127 callback(null, resultArray); 128 }, (err: Error): void => { 129 callback(err as BusinessError, undefined); 130 }); 131 } 132 133 function getTargetOverlayModuleInfos(targetModuleName: string): Promise<Array<OverlayModuleInfo>> { 134 let p = new Promise<Array<OverlayModuleInfo>>((resolve: (arrOverlayModuleInfo: Array<OverlayModuleInfo>) => void, reject: (error: BusinessError) => void) => { 135 let cb = (): (Array<OverlayModuleInfo>) => { 136 return overlay.getTargetOverlayModuleInfosNative(targetModuleName); 137 }; 138 let p1 = taskpool.execute(cb); 139 p1.then((e: NullishType) => { 140 let resultArray: Array<OverlayModuleInfo> = e as Array<OverlayModuleInfo>; 141 resolve(resultArray); 142 }, (err: Error): void => { 143 reject(err as BusinessError); 144 }); 145 }); 146 return p; 147 } 148 149 function getOverlayModuleInfoByBundleName(bundleName: string, callback: AsyncCallback<Array<OverlayModuleInfo>>): void { 150 let cb = (): (Array<OverlayModuleInfo>) => { 151 return overlay.getOverlayModuleInfoByBundleNameNative(bundleName, ''); 152 }; 153 let p1 = taskpool.execute(cb); 154 p1.then((e: NullishType) => { 155 let resultArray: Array<OverlayModuleInfo> = e as Array<OverlayModuleInfo>; 156 callback(null, resultArray); 157 }, (err: Error): void => { 158 callback(err as BusinessError, undefined); 159 }); 160 } 161 162 function getOverlayModuleInfoByBundleName(bundleName: string, moduleName: string, callback: AsyncCallback<Array<OverlayModuleInfo>>): void { 163 let cb = (): (Array<OverlayModuleInfo>) => { 164 return overlay.getOverlayModuleInfoByBundleNameNative(bundleName, moduleName); 165 }; 166 let p1 = taskpool.execute(cb); 167 p1.then((e: NullishType) => { 168 let resultArray: Array<OverlayModuleInfo> = e as Array<OverlayModuleInfo>; 169 callback(null, resultArray); 170 }, (err: Error): void => { 171 callback(err as BusinessError, undefined); 172 }); 173 } 174 175 function getOverlayModuleInfoByBundleName(bundleName: string, moduleName?: string): Promise<Array<OverlayModuleInfo>> { 176 let moduleNameInfo: string = moduleName ?? ''; 177 let p = new Promise<Array<OverlayModuleInfo>>((resolve: (arrOverlayModuleInfo: Array<OverlayModuleInfo>) => void, reject: (error: BusinessError) => void) => { 178 let cb = (): (Array<OverlayModuleInfo>) => { 179 return overlay.getOverlayModuleInfoByBundleNameNative(bundleName, moduleNameInfo); 180 }; 181 let p1 = taskpool.execute(cb); 182 p1.then((e: NullishType) => { 183 let resultArray: Array<OverlayModuleInfo> = e as Array<OverlayModuleInfo>; 184 resolve(resultArray); 185 }, (err: Error): void => { 186 reject(err as BusinessError); 187 }); 188 }); 189 return p; 190 } 191 192 function getTargetOverlayModuleInfosByBundleName(targetBundleName: string, callback: AsyncCallback<Array<OverlayModuleInfo>>): void { 193 let cb = (): (Array<OverlayModuleInfo>) => { 194 return overlay.getTargetOverlayModuleInfosByBundleNameNative(targetBundleName, ''); 195 }; 196 let p1 = taskpool.execute(cb); 197 p1.then((e: NullishType) => { 198 let resultArray: Array<OverlayModuleInfo> = e as Array<OverlayModuleInfo>; 199 callback(null, resultArray); 200 }, (err: Error): void => { 201 callback(err as BusinessError, undefined); 202 }); 203 } 204 205 function getTargetOverlayModuleInfosByBundleName(targetBundleName: string, moduleName: string, callback: AsyncCallback<Array<OverlayModuleInfo>>): void { 206 let cb = (): (Array<OverlayModuleInfo>) => { 207 return overlay.getTargetOverlayModuleInfosByBundleNameNative(targetBundleName, moduleName); 208 }; 209 let p1 = taskpool.execute(cb); 210 p1.then((e: NullishType) => { 211 let resultArray: Array<OverlayModuleInfo> = e as Array<OverlayModuleInfo>; 212 callback(null, resultArray); 213 }, (err: Error): void => { 214 callback(err as BusinessError, undefined); 215 }); 216 } 217 218 function getTargetOverlayModuleInfosByBundleName(targetBundleName: string, moduleName?: string): Promise<Array<OverlayModuleInfo>> { 219 let moduleNameInfo: string = moduleName ?? ''; 220 let p = new Promise<Array<OverlayModuleInfo>>((resolve: (arrOverlayModuleInfo: Array<OverlayModuleInfo>) => void, reject: (error: BusinessError) => void) => { 221 let cb = (): (Array<OverlayModuleInfo>) => { 222 return overlay.getTargetOverlayModuleInfosByBundleNameNative(targetBundleName, moduleNameInfo); 223 }; 224 let p1 = taskpool.execute(cb); 225 p1.then((e: NullishType) => { 226 let resultArray: Array<OverlayModuleInfo> = e as Array<OverlayModuleInfo>; 227 resolve(resultArray); 228 }, (err: Error): void => { 229 reject(err as BusinessError); 230 }); 231 }); 232 return p; 233 } 234 235 export type OverlayModuleInfo = _OverlayModuleInfo; 236} 237