upd BusinessError

Signed-off-by: zhangzezhong <zhangzezhong8@huawei-partners.com>
This commit is contained in:
zhangzezhong
2025-07-08 09:22:30 +08:00
parent 8821ad43ee
commit 96eefd450b
10 changed files with 120 additions and 132 deletions
-1
View File
@@ -19,7 +19,6 @@ group("ani_packages") {
"${ability_runtime_path}/frameworks/ets/ani/ability_delegator:ability_delegator_registry_ani_kit",
"${ability_runtime_path}/frameworks/ets/ani/ani_common:ani_common",
"${ability_runtime_path}/frameworks/ets/ani/native_constructor:context_ani",
"${ability_runtime_path}/frameworks/ets/ani/uri_permission_manager:uri_permission_manager_abc_etc",
"${ability_runtime_path}/frameworks/ets/ani/uri_permission_manager:uri_permission_manager_ani_kit",
]
}
@@ -459,26 +459,29 @@ bool AsyncCallback(ani_env *env, ani_object call, ani_object error, ani_object r
TAG_LOGE(AAFwkTag::ANI, "null env");
return false;
}
ani_status status = ANI_ERROR;
ani_class clsCall = nullptr;
if ((status = env->FindClass(CLASSNAME_ASYNC_CALLBACK_WRAPPER, &clsCall)) != ANI_OK) {
TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status);
ani_status status = env->FindClass(CLASSNAME_ASYNC_CALLBACK_WRAPPER, &clsCall);
if (status!= ANI_OK || clsCall == nullptr) {
TAG_LOGE(AAFwkTag::ANI, "FindClass status: %{public}d, or null clsCall", status);
return false;
}
ani_method method = nullptr;
if ((status = env->Class_FindMethod(
clsCall, "invoke", "L@ohos/base/BusinessError;Lstd/core/Object;:V", &method)) != ANI_OK) {
TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status);
if ((status = env->Class_FindMethod(clsCall, "invoke", nullptr, &method)) != ANI_OK || method == nullptr) {
TAG_LOGE(AAFwkTag::ANI, "Class_FindMethod status: %{public}d, or null method", status);
return false;
}
if (result == nullptr) {
if (error == nullptr) {
ani_ref nullRef = nullptr;
env->GetNull(&nullRef);
result = reinterpret_cast<ani_object>(nullRef);
error = reinterpret_cast<ani_object>(nullRef);
}
if (result == nullptr) {
ani_ref undefinedRef = nullptr;
env->GetUndefined(&undefinedRef);
result = reinterpret_cast<ani_object>(undefinedRef);
}
if ((status = env->Object_CallMethod_Void(call, method, error, result)) != ANI_OK) {
TAG_LOGE(AAFwkTag::ANI, "status: %{public}d", status);
TAG_LOGE(AAFwkTag::ANI, "Object_CallMethod_Void status: %{public}d", status);
return false;
}
return true;
@@ -82,24 +82,4 @@ ohos_shared_library("uri_permission_manager_ani_kit") {
innerapi_tags = [ "platformsdk" ]
subsystem_name = "ability"
part_name = "ability_runtime"
}
generate_static_abc("uri_permission_manager_abc") {
base_url = "./ets"
files = [ "./ets/@ohos.application.uriPermissionManager.ets" ]
dst_file = "$target_out_dir/uri_permission_manager.abc"
out_puts = [ "$target_out_dir/uri_permission_manager.abc" ]
is_boot_abc = "True"
device_dst_file = "/system/framework/uri_permission_manager.abc"
}
ohos_prebuilt_etc("uri_permission_manager_abc_etc") {
source = "$target_out_dir/uri_permission_manager.abc"
module_install_dir = "framework"
subsystem_name = "ability"
part_name = "ability_runtime"
deps = [ ":uri_permission_manager_abc" ]
}
@@ -45,9 +45,9 @@ export default class UIExtensionContentSession {
}
terminateSelf(): Promise<void> {
let p = new Promise<void>((resolve: (data: undefined) => void, reject:(err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
let p = new Promise<void>((resolve: (data: undefined) => void, reject:(err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -68,9 +68,9 @@ export default class UIExtensionContentSession {
}
terminateSelfWithResult(parameter: AbilityResult): Promise<void> {
let p = new Promise<void>((resolve: (data: undefined) => void, reject:(err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
let p = new Promise<void>((resolve: (data: undefined) => void, reject:(err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -15,18 +15,7 @@
import wantConstant from '@ohos.app.ability.wantConstant';
import { BusinessError, AsyncCallback } from '@ohos.base';
export class AsyncCallbackWrapper<T> {
myFun_:AsyncCallback<T, void> = (err: BusinessError<void>, data: T) => {}
constructor(myFun:AsyncCallback<T, void>){
this.myFun_ = myFun;
}
invoke(err: BusinessError<void>, data: T) : void {
this.myFun_(err, data);
}
}
import AsyncCallbackWrapper from './utils/AbilityUtils';
export default namespace uriPermissionManager {
loadLibrary("uri_permission_manager_ani_kit.z");
@@ -37,16 +26,20 @@ export default namespace uriPermissionManager {
callback: AsyncCallbackWrapper<number>): void;
export function grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string): Promise<number> {
let p:Promise<number> = new Promise<number>((resolve: (data: number)=>void, reject:(err: BusinessError<void>)=>void):void => {
let callbackWrapper = new AsyncCallbackWrapper<number>((err: BusinessError<void>, data: number)=>{
if (err.code == 0) {
resolve(data);
let p:Promise<number> = new Promise<number>((resolve: (data: number)=>void, reject:(err: BusinessError)=>void):void => {
let myCall = new AsyncCallbackWrapper<number>((err: BusinessError | null, data: number | undefined)=>{
if (err === null || err.code === 0) {
if (data === undefined) {
resolve(-1);
} else {
resolve(data);
}
} else {
reject(err);
}
});
taskpool.execute((): void => {
uriPermissionManager.grantUriPermissionCallbackSync(uri, flag, targetBundleName, 0, callbackWrapper);
uriPermissionManager.grantUriPermissionCallbackSync(uri, flag, targetBundleName, 0, myCall);
});
});
return p;
@@ -54,9 +47,9 @@ export default namespace uriPermissionManager {
export function grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string,
appCloneIndex: number): Promise<void> {
let p:Promise<void> = new Promise<void>((resolve: (data:undefined)=>void, reject:(err: BusinessError<void>)=>void):void => {
let callbackWrapper = new AsyncCallbackWrapper<number>((err: BusinessError<void>, data: number)=>{
if (err.code == 0) {
let p:Promise<void> = new Promise<void>((resolve: (data:undefined)=>void, reject:(err: BusinessError)=>void):void => {
let myCall = new AsyncCallbackWrapper<number>((err: BusinessError | null, data: number | undefined)=>{
if (err === null || err.code === 0) {
resolve(undefined);
} else {
reject(err);
@@ -64,7 +57,7 @@ export default namespace uriPermissionManager {
});
taskpool.execute((): void => {
uriPermissionManager.grantUriPermissionCallbackSync(uri,
flag, targetBundleName, appCloneIndex, callbackWrapper);
flag, targetBundleName, appCloneIndex, myCall);
});
});
return p;
@@ -72,48 +65,52 @@ export default namespace uriPermissionManager {
export function grantUriPermission(uri: string, flag: wantConstant.Flags, targetBundleName: string,
callback: AsyncCallback<number, void>): void {
let callbackWrapper = new AsyncCallbackWrapper<number>(callback);
let myCall = new AsyncCallbackWrapper<number>(callback);
taskpool.execute((): void => {
uriPermissionManager.grantUriPermissionCallbackSync(uri, flag, targetBundleName, 0, callbackWrapper);
uriPermissionManager.grantUriPermissionCallbackSync(uri, flag, targetBundleName, 0, myCall);
})
}
export function revokeUriPermission(uri: string, targetBundleName: string): Promise<number> {
let p:Promise<number> = new Promise<number>((resolve: (data: number)=>void, reject:(err: BusinessError<void>)=>void):void => {
let callbackWrapper = new AsyncCallbackWrapper<number>((err: BusinessError<void>, data: number)=>{
if (err.code == 0) {
resolve(data);
let p:Promise<number> = new Promise<number>((resolve: (data: number)=>void, reject:(err: BusinessError)=>void):void => {
let myCall = new AsyncCallbackWrapper<number>((err: BusinessError | null, data: number | undefined)=>{
if (err === null || err.code === 0) {
if (data === undefined) {
resolve(-1);
} else {
resolve(data);
}
} else {
reject(err);
}
});
taskpool.execute((): void => {
uriPermissionManager.revokeUriPermissionCallbackSync(uri, targetBundleName, 0, callbackWrapper);
uriPermissionManager.revokeUriPermissionCallbackSync(uri, targetBundleName, 0, myCall);
});
});
return p;
}
export function revokeUriPermission(uri: string, targetBundleName: string, appCloneIndex: number): Promise<void> {
let p:Promise<void> = new Promise<void>((resolve: (data:undefined)=>void, reject:(err: BusinessError<void>)=>void):void => {
let callbackWrapper = new AsyncCallbackWrapper<number>((err: BusinessError<void>, data: number)=>{
if (err.code == 0) {
let p:Promise<void> = new Promise<void>((resolve: (data:undefined)=>void, reject:(err: BusinessError)=>void):void => {
let myCall = new AsyncCallbackWrapper<number>((err: BusinessError | null, data: number | undefined)=>{
if (err === null || err.code === 0) {
resolve(undefined);
} else {
reject(err);
}
});
taskpool.execute((): void => {
uriPermissionManager.revokeUriPermissionCallbackSync(uri, targetBundleName, appCloneIndex, callbackWrapper);
uriPermissionManager.revokeUriPermissionCallbackSync(uri, targetBundleName, appCloneIndex, myCall);
});
});
return p;
}
export function revokeUriPermission(uri: string, targetBundleName: string, callback: AsyncCallback<number, void>): void {
let callbackWrapper = new AsyncCallbackWrapper<number>(callback);
let myCall = new AsyncCallbackWrapper<number>(callback);
taskpool.execute((): void => {
uriPermissionManager.revokeUriPermissionCallbackSync(uri, targetBundleName, 0, callbackWrapper);
uriPermissionManager.revokeUriPermissionCallbackSync(uri, targetBundleName, 0, myCall);
})
}
}
+21
View File
@@ -454,6 +454,26 @@ ohos_prebuilt_etc("ability_runtime_ability_stage_context_abc_etc") {
deps = [ ":ability_runtime_ability_stage_context_abc" ]
}
generate_static_abc("uri_permission_manager_abc") {
base_url = "./"
files = [ "./@ohos.application.uriPermissionManager.ets" ]
dst_file = "$target_out_dir/uri_permission_manager.abc"
out_puts = [ "$target_out_dir/uri_permission_manager.abc" ]
is_boot_abc = "True"
device_dst_file = "/system/framework/uri_permission_manager.abc"
}
ohos_prebuilt_etc("uri_permission_manager_abc_etc") {
source = "$target_out_dir/uri_permission_manager.abc"
module_install_dir = "framework"
subsystem_name = "ability"
part_name = "ability_runtime"
deps = [ ":uri_permission_manager_abc" ]
}
group("ets_packages") {
deps = [
":ability_delegator_abc_etc",
@@ -481,6 +501,7 @@ group("ets_packages") {
":ability_runtime_ui_ability_context_abc_etc",
":service_extension_ability_abc_etc",
":ui_extension_ability_ani_etc",
":uri_permission_manager_abc_etc",
":form_extension_ability_etc",
]
}
@@ -67,9 +67,9 @@ class AbilityDelegatorInner implements AbilityDelegator {
}
finishTest(msg: string, code: number): Promise<void> {
let p: Promise<void> =
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -97,14 +97,15 @@ class AbilityDelegatorInner implements AbilityDelegator {
}
executeShellCommand(cmd: string, timeoutSecs?: number): Promise<ShellCmdResult> {
let p = new Promise<ShellCmdResult>((resolve: (data: ShellCmdResult) => void,
reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<ShellCmdResult>((err: BusinessError<void>, data: ShellCmdResult) => {
if (err.code == 0) {
resolve(data);
} else {
reject(err);
}
});
reject: (err: BusinessError) => void): void => {
let myCall =
new AsyncCallbackWrapper<ShellCmdResult>((err: BusinessError | null, data: ShellCmdResult | undefined) => {
if (err == null || err.code == 0) {
resolve(data as ShellCmdResult);
} else {
reject(err);
}
});
taskpool.execute((): void => {
if (timeoutSecs == null) {
this.nativeExecuteShellCommand(cmd, 0, myCall);
@@ -124,9 +125,9 @@ class AbilityDelegatorInner implements AbilityDelegator {
}
addAbilityMonitor(monitor: AbilityMonitor): Promise<void> {
let p =
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -147,9 +148,9 @@ class AbilityDelegatorInner implements AbilityDelegator {
}
startAbility(want: Want): Promise<void> {
let p: Promise<void> =
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -21,20 +21,7 @@ import { AbilityResult } from 'ability.abilityResult';
import { Configuration } from '@ohos.app.ability.Configuration';
import Context from 'application.Context';
import window from '@ohos.window';
export class AsyncCallbackWrapper<T> {
myFun_: AsyncCallback<T, void> = (err: BusinessError<void>, data: T) => {
}
constructor(myFun: AsyncCallback<T, void>) {
console.log("AsyncCallbackWrapper");
this.myFun_ = myFun;
}
invoke(err: BusinessError<void>, data: T): void {
this.myFun_(err, data);
}
}
import AsyncCallbackWrapper from '../utils/AbilityUtils';
export default class UIAbilityContext extends Context {
static {
@@ -85,9 +72,9 @@ export default class UIAbilityContext extends Context {
startAbility(want: Want): Promise<void> {
let p: Promise<void> =
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -102,9 +89,9 @@ export default class UIAbilityContext extends Context {
startAbility(want: Want, options: StartOptions): Promise<void> {
let p =
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -133,10 +120,10 @@ export default class UIAbilityContext extends Context {
startAbilityForResult(want: Want): Promise<AbilityResult> {
let p = new Promise<AbilityResult>((resolve: (data: AbilityResult) => void,
reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<AbilityResult>((err: BusinessError<void>, data: AbilityResult) => {
if (err.code == 0) {
resolve(data);
reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<AbilityResult>((err: BusinessError | null, data: AbilityResult | undefined) => {
if (err == null || err.code == 0) {
resolve(data as AbilityResult);
} else {
reject(err);
}
@@ -150,10 +137,10 @@ export default class UIAbilityContext extends Context {
startAbilityForResult(want: Want, startOptions: StartOptions): Promise<AbilityResult> {
let p = new Promise<AbilityResult>((resolve: (data: AbilityResult) => void,
reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<AbilityResult>((err: BusinessError<void>, data: AbilityResult) => {
if (err.code == 0) {
resolve(data);
reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<AbilityResult>((err: BusinessError | null, data: AbilityResult | undefined) => {
if (err == null || err.code == 0) {
resolve(data as AbilityResult);
} else {
reject(err);
}
@@ -174,9 +161,9 @@ export default class UIAbilityContext extends Context {
terminateSelf(): Promise<void> {
let p =
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -198,9 +185,9 @@ export default class UIAbilityContext extends Context {
terminateSelfWithResult(parameter: AbilityResult): Promise<void> {
let p =
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
new Promise<void>((resolve: (data: undefined) => void, reject: (err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -31,9 +31,9 @@ export default class UIExtensionContext extends ExtensionContext {
}
terminateSelf(): Promise<void> {
let p = new Promise<void>((resolve: (data: undefined) => void, reject:(err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
let p = new Promise<void>((resolve: (data: undefined) => void, reject:(err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
@@ -54,9 +54,9 @@ export default class UIExtensionContext extends ExtensionContext {
}
terminateSelfWithResult(parameter: AbilityResult): Promise<void> {
let p = new Promise<void>((resolve: (data: undefined)=>void, reject:(err: BusinessError<void>) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError<void>) => {
if (err.code == 0) {
let p = new Promise<void>((resolve: (data: undefined)=>void, reject:(err: BusinessError) => void): void => {
let myCall = new AsyncCallbackWrapper<void>((err: BusinessError | null) => {
if (err == null || err.code == 0) {
resolve(undefined);
} else {
reject(err);
+4 -4
View File
@@ -19,14 +19,14 @@ const DOMAIN_ID = 0xD001300;
const TAG = 'AbilityUtils';
const LEVEL = 100;
export default class AsyncCallbackWrapper<T> {
private myFun_:AsyncCallback<T, void> = (err: BusinessError<void>, data: T) => {}
export default class AsyncCallbackWrapper<T, E = void> {
private myFun_: AsyncCallback<T, E> = (err: BusinessError<E> | null, data: T | undefined) => {}
constructor(myFun:AsyncCallback<T, void>){
constructor(myFun: AsyncCallback<T, E>) {
this.myFun_ = myFun;
}
invoke(err: BusinessError<void>, data: T) : void {
invoke(err: BusinessError<E> | null, data: T | undefined): void {
this.myFun_(err, data);
}
}