From c5796bbb49afbb240aea3fbcb50a34375f50d937 Mon Sep 17 00:00:00 2001 From: lanhaoyu Date: Mon, 10 Mar 2025 15:48:52 +0800 Subject: [PATCH] add code Signed-off-by: lanhaoyu --- access_token.gni | 6 - bundle.json | 2 +- frameworks/{js/arkts => ets/ani}/BUILD.gn | 6 +- .../arkts => ets/ani}/accesstoken/BUILD.gn | 31 ++--- .../ets/@ohos.abilityAccessCtrl.ets} | 58 +++++---- .../accesstoken/src/ability_access_ctrl.cpp} | 58 ++++++++- .../{js/arkts => ets/ani}/privacy/BUILD.gn | 26 ++-- .../ani/privacy/ets/@ohos.privacyManager.ets} | 55 ++++---- .../ani/privacy/src/privacy_manager.cpp} | 48 ++++--- .../js/arkts/accesstoken/arktsconfig.json | 28 ----- .../common/arkts/PermissionRequestResult.ets | 118 ------------------ .../js/arkts/common/arkts/permissions.ets | 36 ------ frameworks/js/arkts/privacy/arktsconfig.json | 25 ---- 13 files changed, 181 insertions(+), 316 deletions(-) rename frameworks/{js/arkts => ets/ani}/BUILD.gn (87%) rename frameworks/{js/arkts => ets/ani}/accesstoken/BUILD.gn (66%) rename frameworks/{js/arkts/accesstoken/arkts/abilityAccessCtrlAni.ets => ets/ani/accesstoken/ets/@ohos.abilityAccessCtrl.ets} (42%) rename frameworks/{js/arkts/accesstoken/native/ani_ability_access_ctrl.cpp => ets/ani/accesstoken/src/ability_access_ctrl.cpp} (55%) rename frameworks/{js/arkts => ets/ani}/privacy/BUILD.gn (71%) rename frameworks/{js/arkts/privacy/arkts/privacyManagerAni.ets => ets/ani/privacy/ets/@ohos.privacyManager.ets} (65%) rename frameworks/{js/arkts/privacy/native/ani_privacy_manager.cpp => ets/ani/privacy/src/privacy_manager.cpp} (68%) delete mode 100644 frameworks/js/arkts/accesstoken/arktsconfig.json delete mode 100644 frameworks/js/arkts/common/arkts/PermissionRequestResult.ets delete mode 100644 frameworks/js/arkts/common/arkts/permissions.ets delete mode 100644 frameworks/js/arkts/privacy/arktsconfig.json diff --git a/access_token.gni b/access_token.gni index dee74ca93..3c8f3ea55 100644 --- a/access_token.gni +++ b/access_token.gni @@ -34,12 +34,6 @@ if (vendor_config_exist) { access_token_impl_include_dirs = [] } -if (product_name != "qemu-arm-linux-min") { - qemu_disable = true -} else { - qemu_disable = false -} - if (!defined(global_parts_info) || defined(global_parts_info.distributedhardware_device_manager)) { token_sync_enable = true diff --git a/bundle.json b/bundle.json index 49cabb8dc..3fd65d453 100644 --- a/bundle.json +++ b/bundle.json @@ -71,7 +71,7 @@ "//base/security/access_token/interfaces/kits/capi:capi_packages", "//base/security/access_token/interfaces/kits/cj:cj_packages", "//base/security/access_token/frameworks/js/napi:napi_packages", - "//base/security/access_token/frameworks/js/arkts:arkts_package" + "//base/security/access_token/frameworks/ets/ani:arkts_package" ], "service_group": [ "//base/security/access_token/interfaces/innerkits/tokensync:libtokensync_sdk", diff --git a/frameworks/js/arkts/BUILD.gn b/frameworks/ets/ani/BUILD.gn similarity index 87% rename from frameworks/js/arkts/BUILD.gn rename to frameworks/ets/ani/BUILD.gn index 36b54ec50..77ae7521a 100644 --- a/frameworks/js/arkts/BUILD.gn +++ b/frameworks/ets/ani/BUILD.gn @@ -15,10 +15,10 @@ import("//base/security/access_token/access_token.gni") group("arkts_package") { deps = [] - if (qemu_disable) { + if (support_jsapi) { deps += [ - "accesstoken:accesstoken_arkts", - "privacy:privacy_manager_arkts", + "accesstoken:accesstoken_ets", + "privacy:privacy_ets", ] } } diff --git a/frameworks/js/arkts/accesstoken/BUILD.gn b/frameworks/ets/ani/accesstoken/BUILD.gn similarity index 66% rename from frameworks/js/arkts/accesstoken/BUILD.gn rename to frameworks/ets/ani/accesstoken/BUILD.gn index a62190e08..d407a574e 100644 --- a/frameworks/js/arkts/accesstoken/BUILD.gn +++ b/frameworks/ets/ani/accesstoken/BUILD.gn @@ -16,7 +16,7 @@ import("//build/config/components/ets_frontend/ets2abc_config.gni") import("//build/ohos.gni") import("//build/ohos/ace/ace.gni") -ohos_shared_library("ani_ability_access_ctrl") { +ohos_shared_library("accesstoken_ani") { sanitize = { cfi = true cfi_cross_dso = true @@ -28,39 +28,42 @@ ohos_shared_library("ani_ability_access_ctrl") { "${access_token_path}/interfaces/innerkits/accesstoken/include", "${access_token_path}/interfaces/innerkits/privacy/include", ] - sources = [ "native/ani_ability_access_ctrl.cpp" ] + sources = [ "src/ability_access_ctrl.cpp" ] - deps = [ "${access_token_path}/interfaces/innerkits/privacy:libprivacy_sdk" ] + deps = [ + "${access_token_path}/interfaces/innerkits/accesstoken:libaccesstoken_sdk", + "${access_token_path}/interfaces/innerkits/privacy:libprivacy_sdk", + ] external_deps = [ "hilog:libhilog", "runtime_core:ani", + "runtime_core:libarkruntime", ] part_name = "access_token" subsystem_name = "security" } -generate_static_abc("ability_access_ctrl_abc") { - arktsconfig = "arktsconfig.json" - dst_file = "$target_out_dir/ability_access_ctrl_ani.abc" - out_puts = [ "$target_out_dir/ability_access_ctrl_ani.abc" ] +generate_static_abc("ability_access_ctrl") { + base_url = "./ets" + files = [ "./ets/@ohos.abilityAccessCtrl.ets" ] is_boot_abc = "True" - device_dst_file = "/system/framework/ability_access_ctrl_ani.abc" + device_dst_file = "/system/framework/ability_access_ctrl.abc" } -ohos_prebuilt_etc("ability_access_ctrl_abc_file") { - source = "$target_out_dir/ability_access_ctrl_ani.abc" - deps = [ ":ability_access_ctrl_abc" ] +ohos_prebuilt_etc("ability_access_ctrl_etc") { + source = "$target_out_dir/ability_access_ctrl.abc" + deps = [ ":ability_access_ctrl" ] module_install_dir = "framework" part_name = "access_token" subsystem_name = "security" } -group("accesstoken_arkts") { +group("accesstoken_ets") { deps = [ - ":ability_access_ctrl_abc_file", - ":ani_ability_access_ctrl", + ":ability_access_ctrl_etc", + ":accesstoken_ani", ] } diff --git a/frameworks/js/arkts/accesstoken/arkts/abilityAccessCtrlAni.ets b/frameworks/ets/ani/accesstoken/ets/@ohos.abilityAccessCtrl.ets similarity index 42% rename from frameworks/js/arkts/accesstoken/arkts/abilityAccessCtrlAni.ets rename to frameworks/ets/ani/accesstoken/ets/@ohos.abilityAccessCtrl.ets index e0538b45d..d94dc3ea0 100644 --- a/frameworks/js/arkts/accesstoken/arkts/abilityAccessCtrlAni.ets +++ b/frameworks/ets/ani/accesstoken/ets/@ohos.abilityAccessCtrl.ets @@ -13,30 +13,17 @@ * limitations under the License. */ +import { AsyncCallback, Callback } from '@ohos.base'; import { Permissions } from 'permissions'; -import { PermissionRequestResult } from 'PermissionRequestResult'; +import type _PermissionRequestResult from 'security.PermissionRequestResult'; -export { Permissions, PermissionRequestResult }; +export { Permissions }; -export class BusinessError { - code: number; - data: T; -} +export type PermissionRequestResult = _PermissionRequestResult; -type AsyncCallback = (err: BusinessError, data: T) => void; +export default namespace abilityAccessCtrl { -class Result{ - result:T; - error:E; - constructor(result: T , error: E) { - this.result = result; - this.error = error; - } -} - -export namespace abilityAccessCtrl { - - loadLibrary("ani_ability_access_ctrl.z"); + loadLibrary("accesstoken_ani.z"); export enum GrantStatus { @@ -65,7 +52,7 @@ export namespace abilityAccessCtrl { RESTRICTED = 3 } - interface PermissionStateChangeInfo { + export interface PermissionStateChangeInfo { change: PermissionStateChangeType; @@ -93,10 +80,37 @@ export namespace abilityAccessCtrl { export native function createAtManager(): AtManager; interface AtManager { - + checkAccessTokenANI(tokenID: int, permissionName: Permissions): int; + checkAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus; + checkAccessToken(tokenID: number, permissionName: Permissions): Promise } class AtManagerInner implements AtManager { - + native checkAccessTokenANI(tokenID: int, permissionName: Permissions): int; + checkAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus{ + let tmptokenID: int = tokenID as int; + let result = this.checkAccessTokenANI(tmptokenID, permissionName); + console.log("checkAccessTokenSync result = " + result + "."); + if (result == 0) { + return GrantStatus.PERMISSION_GRANTED + } + return GrantStatus.PERMISSION_DENIED + } + checkAccessToken(tokenID: number, permissionName: Permissions): Promise { + let tmptokenID: int = tokenID as int; + let p = new Promise((resolve: (v: GrantStatus) => void, reject: (error: Object) => void) => { + let p1 = taskpool.execute((): int => { return new AtManagerInner().checkAccessTokenANI(tmptokenID, + permissionName)}); + p1.then((e: NullishType) => { + console.log("P1 then e = " + e + "."); + let r: GrantStatus = e as GrantStatus; + resolve(r); + }, (err: Object): void => { + console.log("Promise exception."); + }); + } + ); + return p; + } } } \ No newline at end of file diff --git a/frameworks/js/arkts/accesstoken/native/ani_ability_access_ctrl.cpp b/frameworks/ets/ani/accesstoken/src/ability_access_ctrl.cpp similarity index 55% rename from frameworks/js/arkts/accesstoken/native/ani_ability_access_ctrl.cpp rename to frameworks/ets/ani/accesstoken/src/ability_access_ctrl.cpp index d86227408..2e010a296 100644 --- a/frameworks/js/arkts/accesstoken/native/ani_ability_access_ctrl.cpp +++ b/frameworks/ets/ani/accesstoken/src/ability_access_ctrl.cpp @@ -17,8 +17,10 @@ #include "accesstoken_log.h" #include "ani.h" +#include "accesstoken_kit.h" static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, SECURITY_DOMAIN_ACCESSTOKEN, "AniAbilityAccessCtrl" }; +constexpr int32_t MAX_LENGTH = 256; static ani_object CreateAtManager([[maybe_unused]] ani_env *env, [[maybe_unused]] ani_object object) { @@ -28,7 +30,7 @@ static ani_object CreateAtManager([[maybe_unused]] ani_env *env, [[maybe_unused] return atManagerObj; } - static const char *className = "LabilityAccessCtrlAni/abilityAccessCtrl/AtManagerInner;"; + static const char *className = "L@ohos/abilityAccessCtrl/abilityAccessCtrl/AtManagerInner;"; ani_class cls; if (ANI_OK != env->FindClass(className, &cls)) { ACCESSTOKEN_LOG_ERROR(LABEL, "Not found %{public}s", className); @@ -49,6 +51,37 @@ static ani_object CreateAtManager([[maybe_unused]] ani_env *env, [[maybe_unused] return atManagerObj; } +static ani_int CheckAccessTokenSync( + [[maybe_unused]] ani_env *env, [[maybe_unused]] ani_object object, ani_int tokenID, ani_string permissionName) +{ + if (env == nullptr) { + ACCESSTOKEN_LOG_ERROR(LABEL, "nullptr vm"); + return OHOS::Security::AccessToken::PermissionState::PERMISSION_DENIED; + } + + ani_size strSize; + env->String_GetUTF8Size(permissionName, &strSize); + + if (strSize > MAX_LENGTH) { + ACCESSTOKEN_LOG_ERROR(LABEL, "the max lenth :%{public}d", MAX_LENGTH); + return OHOS::Security::AccessToken::PermissionState::PERMISSION_DENIED; + } + + std::vector buffer(strSize + 1); + char *utf8Buffer = buffer.data(); + + ani_size bytesWritten = 0; + env->String_GetUTF8(permissionName, utf8Buffer, strSize + 1, &bytesWritten); + + utf8Buffer[bytesWritten] = '\0'; + std::string outputPermissionName = std::string(utf8Buffer); + ACCESSTOKEN_LOG_INFO(LABEL, "CallMeWithOptionalString Get : %{public}s", outputPermissionName.c_str()); + + int result = OHOS::Security::AccessToken::AccessTokenKit::VerifyAccessToken(tokenID, outputPermissionName); + ACCESSTOKEN_LOG_INFO(LABEL, "call CheckAccessTokenSync result : %{public}d", result); + return static_cast(result); +} + ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { ACCESSTOKEN_LOG_INFO(LABEL, "ANI_Constructor called"); @@ -68,14 +101,14 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) return ANI_NOT_FOUND; } - const char *spaceName = "LabilityAccessCtrlAni/abilityAccessCtrl;"; + const char *spaceName = "L@ohos/abilityAccessCtrl/abilityAccessCtrl;"; ani_namespace spc; if (ANI_OK != env->FindNamespace(spaceName, &spc)) { ACCESSTOKEN_LOG_ERROR(LABEL, "Not found %{public}s", spaceName); return ANI_NOT_FOUND; } - ACCESSTOKEN_LOG_INFO(LABEL, "array methods called"); + ACCESSTOKEN_LOG_INFO(LABEL, "namespace array methods called"); std::array methods = { ani_native_function{ "createAtManager", nullptr, reinterpret_cast(CreateAtManager) }, }; @@ -85,6 +118,25 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) return ANI_ERROR; }; + const char *className = "LabilityAccessCtrl_ani/abilityAccessCtrl/AtManagerInner;"; + + ani_class cls; + if (ANI_OK != env->FindClass(className, &cls)) { + std::cerr << "Not found '" << className << "'" << std::endl; + return ANI_ERROR; + } + + ACCESSTOKEN_LOG_INFO(LABEL, "class array methods called"); + std::array claMethods = { + ani_native_function{ + "checkAccessTokenANI", "ILstd/core/String;:I", reinterpret_cast(CheckAccessTokenSync) }, + }; + + if (ANI_OK != env->Class_BindNativeMethods(cls, claMethods.data(), claMethods.size())) { + ACCESSTOKEN_LOG_ERROR(LABEL, "Cannot bind native methods to %{public}s", className); + return ANI_ERROR; + }; + *result = ANI_VERSION_1; return ANI_OK; } \ No newline at end of file diff --git a/frameworks/js/arkts/privacy/BUILD.gn b/frameworks/ets/ani/privacy/BUILD.gn similarity index 71% rename from frameworks/js/arkts/privacy/BUILD.gn rename to frameworks/ets/ani/privacy/BUILD.gn index 84b93b08f..0d8a9ef0d 100644 --- a/frameworks/js/arkts/privacy/BUILD.gn +++ b/frameworks/ets/ani/privacy/BUILD.gn @@ -16,7 +16,7 @@ import("//build/config/components/ets_frontend/ets2abc_config.gni") import("//build/ohos.gni") import("//build/ohos/ace/ace.gni") -ohos_shared_library("ani_privacy_manager") { +ohos_shared_library("privacy_ani") { sanitize = { cfi = true cfi_cross_dso = true @@ -29,40 +29,40 @@ ohos_shared_library("ani_privacy_manager") { "${access_token_path}/interfaces/innerkits/accesstoken/include", "${access_token_path}/interfaces/innerkits/privacy/include", ] - sources = [ "native/ani_privacy_manager.cpp" ] + sources = [ "src/privacy_manager.cpp" ] deps = [ "${access_token_path}/interfaces/innerkits/privacy:libprivacy_sdk" ] external_deps = [ "hilog:libhilog", "runtime_core:ani", + "runtime_core:libarkruntime", ] part_name = "access_token" subsystem_name = "security" } -generate_static_abc("privacy_manager_abc") { - arktsconfig = "arktsconfig.json" - dst_file = "$target_out_dir/privacy_manager_ani.abc" - out_puts = [ "$target_out_dir/privacy_manager_ani.abc" ] +generate_static_abc("privacy_manager") { + base_url = "./ets" + files = [ "./ets/@ohos.privacyManager.ets" ] is_boot_abc = "True" - device_dst_file = "/system/framework/privacy_manager_ani.abc" + device_dst_file = "/system/framework/privacy_manager.abc" } -ohos_prebuilt_etc("privacy_manager_abc_file") { - source = "$target_out_dir/privacy_manager_ani.abc" - deps = [ ":privacy_manager_abc" ] +ohos_prebuilt_etc("privacy_manager_etc") { + source = "$target_out_dir/privacy_manager.abc" + deps = [ ":privacy_manager" ] module_install_dir = "framework" part_name = "access_token" subsystem_name = "security" } -group("privacy_manager_arkts") { +group("privacy_ets") { deps = [ - ":ani_privacy_manager", - ":privacy_manager_abc_file", + ":privacy_ani", + ":privacy_manager_etc", ] } diff --git a/frameworks/js/arkts/privacy/arkts/privacyManagerAni.ets b/frameworks/ets/ani/privacy/ets/@ohos.privacyManager.ets similarity index 65% rename from frameworks/js/arkts/privacy/arkts/privacyManagerAni.ets rename to frameworks/ets/ani/privacy/ets/@ohos.privacyManager.ets index 19ec75a25..1f47c8380 100644 --- a/frameworks/js/arkts/privacy/arkts/privacyManagerAni.ets +++ b/frameworks/ets/ani/privacy/ets/@ohos.privacyManager.ets @@ -13,28 +13,14 @@ * limitations under the License. */ +import { AsyncCallback, Callback } from '@ohos.base'; import { Permissions } from 'permissions'; -export class BusinessError { - code: number; - data: T; - } - - export { Permissions } - - type AsyncCallback = (err: BusinessError, data: T) => void; - - class Result{ - result:T; - error:E; - constructor(result: T , error: E) { - this.result = result; - this.error = error; - } - } - export namespace privacyManager { - - loadLibrary("ani_privacy_manager.z"); +export { Permissions } + +export default namespace privacyManager { + + loadLibrary("privacy_ani.z"); export enum PermissionUsedType { @@ -45,18 +31,22 @@ export class BusinessError { SECURITY_COMPONENT_TYPE = 2 } - export class AddPermissionUsedRecordOptions { - usedType: PermissionUsedType; + export interface AddPermissionUsedRecordOptions { + usedType?: PermissionUsedType; + } + + export class AddPermissionUsedRecordOptionsInner implements AddPermissionUsedRecordOptions { + usedType: PermissionUsedType|undefined; } export class PrivacyManagerInner { native addPermissionUsedRecordSync(tokenID: int, permissionName: Permissions, successCount: int, failCount: int, - options: AddPermissionUsedRecordOptions): int; + options: AddPermissionUsedRecordOptionsInner): int; } - interface UsedRecordDetail { + export interface UsedRecordDetail { status: number; @@ -71,7 +61,7 @@ export class BusinessError { usedType?: PermissionUsedType; } - interface PermissionUsedTypeInfo { + export interface PermissionUsedTypeInfo { tokenId: number; @@ -81,16 +71,17 @@ export class BusinessError { } - export function addPermissionUsedRecord(tokenID: int, permissionName: string, successCount: int, failCount: int, - options?: AddPermissionUsedRecordOptions): Promise { + export function addPermissionUsedRecord(tokenID: int, permissionName: Permissions, successCount: int, + failCount: int, options?: AddPermissionUsedRecordOptions): Promise { + + let usedTypeTemp : PermissionUsedType|undefined = options ? options.usedType : PermissionUsedType.NORMAL_TYPE - let optionsLocal: AddPermissionUsedRecordOptions = { - usedType: PermissionUsedType.NORMAL_TYPE + let optionsLocal: AddPermissionUsedRecordOptionsInner = { + usedType: usedTypeTemp }; - let optionsTmp = options ? options : optionsLocal let p = new Promise((resolve: (v: int) => void, reject: (error: Object) => void) => { let p1 = taskpool.execute((): int => { return new PrivacyManagerInner().addPermissionUsedRecordSync(tokenID, - permissionName, successCount, failCount, optionsTmp) }); + permissionName, successCount, failCount, optionsLocal) }); p1.then((e: NullishType) => { console.log("P1 then e = " + e + "."); @@ -103,4 +94,4 @@ export class BusinessError { ); return p; } -} +} \ No newline at end of file diff --git a/frameworks/js/arkts/privacy/native/ani_privacy_manager.cpp b/frameworks/ets/ani/privacy/src/privacy_manager.cpp similarity index 68% rename from frameworks/js/arkts/privacy/native/ani_privacy_manager.cpp rename to frameworks/ets/ani/privacy/src/privacy_manager.cpp index ff09429ae..d3dd79eeb 100644 --- a/frameworks/js/arkts/privacy/native/ani_privacy_manager.cpp +++ b/frameworks/ets/ani/privacy/src/privacy_manager.cpp @@ -20,7 +20,7 @@ #include "privacy_error.h" #include "privacy_kit.h" -static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, SECURITY_DOMAIN_ACCESSTOKEN, "AniPrivacyManager" }; +static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, SECURITY_DOMAIN_PRIVACY, "AniPrivacyManager" }; constexpr int32_t MAX_LENGTH = 256; static int AddPermissionUsedRecordSync( @@ -32,9 +32,9 @@ static int AddPermissionUsedRecordSync( info.successCount = successCount; info.failCount = failCount; info.type = static_cast(ntype); - ACCESSTOKEN_LOG_INFO(LABEL, "call addPermissionUsedRecord %{public}d", info.type); + ACCESSTOKEN_LOG_INFO(LABEL, "call addPermissionUsedRecord type : %{public}d", info.type); auto retCode = OHOS::Security::AccessToken::PrivacyKit::AddPermissionUsedRecord(info); - ACCESSTOKEN_LOG_INFO(LABEL, "call addPermissionUsedRecord %{public}d", retCode); + ACCESSTOKEN_LOG_INFO(LABEL, "call addPermissionUsedRecord retCode : %{public}d", retCode); return retCode; } @@ -47,13 +47,14 @@ static ani_int AddPermissionUsedRecord([[maybe_unused]] ani_env *env, [[maybe_un } ani_size strSize; - if (ANI_OK != env->String_GetUTF8Size(permissionName, &strSize)) { - ACCESSTOKEN_LOG_ERROR(LABEL, "get String_GetUTF8Size Faild"); + ani_status status = ANI_ERROR; + if (ANI_OK != (status = env->String_GetUTF8Size(permissionName, &strSize))) { + ACCESSTOKEN_LOG_ERROR(LABEL, "get String_GetUTF8Size Faild status : %{public}d", status); return OHOS::Security::AccessToken::PrivacyError::ERR_PARAM_INVALID; } if (strSize > MAX_LENGTH) { - ACCESSTOKEN_LOG_ERROR(LABEL, "the max lenth :%{public}d", MAX_LENGTH); + ACCESSTOKEN_LOG_ERROR(LABEL, "the max lenth : %{public}d", MAX_LENGTH); return OHOS::Security::AccessToken::PrivacyError::ERR_PARAM_INVALID; } @@ -61,8 +62,8 @@ static ani_int AddPermissionUsedRecord([[maybe_unused]] ani_env *env, [[maybe_un char *utf8Buffer = buffer.data(); ani_size bytesWritten = 0; - if (ANI_OK != env->String_GetUTF8(permissionName, utf8Buffer, strSize + 1, &bytesWritten)) { - ACCESSTOKEN_LOG_ERROR(LABEL, "get String_GetUTF8 Faild"); + if (ANI_OK != (status = env->String_GetUTF8(permissionName, utf8Buffer, strSize + 1, &bytesWritten))) { + ACCESSTOKEN_LOG_ERROR(LABEL, "get String_GetUTF8 Faild status : %{public}d", status); return OHOS::Security::AccessToken::PrivacyError::ERR_PARAM_INVALID; } @@ -70,15 +71,32 @@ static ani_int AddPermissionUsedRecord([[maybe_unused]] ani_env *env, [[maybe_un std::string outputPermissionName = std::string(utf8Buffer); ACCESSTOKEN_LOG_INFO(LABEL, "permissionName Get %{public}s", outputPermissionName.c_str()); - ani_int usedTypeRef = 0; - if (ANI_OK != env->Object_GetFieldByName_Int(options, "usedType", &usedTypeRef)) { - ACCESSTOKEN_LOG_ERROR(LABEL, "Object_GetFieldByName_Ref Faild"); + ani_ref usedTypeRef; + if (ANI_OK != (status = env->Object_GetPropertyByName_Ref(options, "usedType", &usedTypeRef))) { + ACCESSTOKEN_LOG_ERROR(LABEL, "Object_GetFieldByName_Ref Faild status : %{public}d", status); return OHOS::Security::AccessToken::PrivacyError::ERR_PARAM_INVALID; } - ACCESSTOKEN_LOG_INFO(LABEL, "Object_GetFieldByName_Ref usedTypeRef:%{public}d", usedTypeRef); + ani_int usedType = 0; + ani_boolean isUndefined = true; + if (ANI_OK != (status = env->Reference_IsUndefined(usedTypeRef, &isUndefined))) { + ACCESSTOKEN_LOG_ERROR(LABEL, "status : %{public}d", status); + return OHOS::Security::AccessToken::PrivacyError::ERR_PARAM_INVALID; + } + if (isUndefined) { + ACCESSTOKEN_LOG_INFO(LABEL, "usedType : undefined"); + } else { + ani_enum_item usedTypeEnum = static_cast(usedTypeRef); + + if (ANI_OK != env->EnumItem_GetValue_Int(usedTypeEnum, &usedType)) { + ACCESSTOKEN_LOG_ERROR(LABEL, "EnumItem_GetValue_Int Faild"); + return OHOS::Security::AccessToken::PrivacyError::ERR_PARAM_INVALID; + } + } + + ACCESSTOKEN_LOG_INFO(LABEL, "Object_GetFieldByName_Ref usedType:%{public}d", usedType); - return AddPermissionUsedRecordSync(tokenID, outputPermissionName, successCount, failCount, usedTypeRef); + return AddPermissionUsedRecordSync(tokenID, outputPermissionName, successCount, failCount, usedType); } ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) @@ -99,7 +117,7 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) return ANI_NOT_FOUND; } - const char *className = "LprivacyManagerAni/privacyManager/PrivacyManagerInner;"; + const char *className = "L@ohos/privacyManager/privacyManager/PrivacyManagerInner;"; ani_class cls; if (ANI_OK != env->FindClass(className, &cls)) { ACCESSTOKEN_LOG_ERROR(LABEL, "Not found %{public}s", className); @@ -109,7 +127,7 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) ACCESSTOKEN_LOG_INFO(LABEL, "array methods called"); std::array methods = { ani_native_function{ "addPermissionUsedRecordSync", - "ILstd/core/String;IILprivacyManagerAni/privacyManager/AddPermissionUsedRecordOptions;:I", + "ILstd/core/String;IIL@ohos/privacyManager/privacyManager/AddPermissionUsedRecordOptionsInner;:I", reinterpret_cast(AddPermissionUsedRecord) }, }; diff --git a/frameworks/js/arkts/accesstoken/arktsconfig.json b/frameworks/js/arkts/accesstoken/arktsconfig.json deleted file mode 100644 index fa81e9dca..000000000 --- a/frameworks/js/arkts/accesstoken/arktsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "compilerOptions": { - "package": "", - "baseUrl": ".", - "outDir": "./out", - "paths": { - "std": [ - "../../../../../../../arkcompiler/runtime_core/static_core/plugins/ets/stdlib/std" - ], - "escompat": [ - "../../../../../../../arkcompiler/runtime_core/static_core/plugins/ets/stdlib/escompat" - ], - "@kit.abilityAccessCtrlAni": [ - "./arkts/abilityAccessCtrlAni.ets" - ], - "permissions": [ - "../common/arkts/permissions.ets" - ], - "PermissionRequestResult": [ - "../common/arkts/PermissionRequestResult.ets" - ] - } - }, - "include": [ - "./arkts/*.ets", - "../common/arkts/*.ets" - ] -} \ No newline at end of file diff --git a/frameworks/js/arkts/common/arkts/PermissionRequestResult.ets b/frameworks/js/arkts/common/arkts/PermissionRequestResult.ets deleted file mode 100644 index 73f1987e4..000000000 --- a/frameworks/js/arkts/common/arkts/PermissionRequestResult.ets +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2025 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. - */ - -/** - * @file - * @kit AbilityKit - */ - -/** - * The result of requestPermissionsFromUser with asynchronous callback. - * - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @since 9 - */ -/** - * The result of requestPermissionsFromUser with asynchronous callback. - * - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @crossplatform - * @since 10 - */ -/** - * The result of requestPermissionsFromUser with asynchronous callback. - * - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @crossplatform - * @atomicservice - * @since 11 - */ -export class PermissionRequestResult { - /** - * The permissions passed in by the user. - * - * @type { Array } - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @since 9 - */ - /** - * The permissions passed in by the user. - * - * @type { Array } - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @crossplatform - * @since 10 - */ - /** - * The permissions passed in by the user. - * - * @type { Array } - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @crossplatform - * @atomicservice - * @since 11 - */ - permissions: Array = new Array(); - - /** - * The results for the corresponding request permissions. The value 0 indicates that a - * permission is granted, the value -1 indicates not, and the value 2 indicates the request is invalid. - * - * @type { Array } - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @since 9 - */ - /** - * The results for the corresponding request permissions. The value 0 indicates that a - * permission is granted, the value -1 indicates not, and the value 2 indicates the request is invalid. - * - * @type { Array } - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @crossplatform - * @since 10 - */ - /** - * The results for the corresponding request permissions. The value 0 indicates that a - * permission is granted, the value -1 indicates not, and the value 2 indicates the request is invalid. - * - * @type { Array } - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @crossplatform - * @atomicservice - * @since 11 - */ - authResults: Array = new Array(); - - /** - * Specifies whether a dialog box is shown for each requested permission. - * The value true means that a dialog box is shown, and false means the opposite. - * - * @type { ?Array } - * @syscap SystemCapability.Security.AccessToken - * @stagemodelonly - * @atomicservice - * @since 12 - */ - dialogShownResults?: Array; -} \ No newline at end of file diff --git a/frameworks/js/arkts/common/arkts/permissions.ets b/frameworks/js/arkts/common/arkts/permissions.ets deleted file mode 100644 index c06103b96..000000000 --- a/frameworks/js/arkts/common/arkts/permissions.ets +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2025 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. - */ - -/** - * @file Defines all permissions. - * @kit AbilityKit - */ - -/** - * Indicates permissions. - * - * @typedef { string } - * @syscap SystemCapability.Security.AccessToken - * @since 9 - */ - /** - * Indicates permissions. - * - * @typedef { string } - * @syscap SystemCapability.Security.AccessToken - * @atomicservice - * @since 11 - */ -export type Permissions = string; \ No newline at end of file diff --git a/frameworks/js/arkts/privacy/arktsconfig.json b/frameworks/js/arkts/privacy/arktsconfig.json deleted file mode 100644 index c8f0f8c42..000000000 --- a/frameworks/js/arkts/privacy/arktsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "package": "", - "baseUrl": ".", - "outDir": "./out", - "paths": { - "std": [ - "../../../../../../../arkcompiler/runtime_core/static_core/plugins/ets/stdlib/std" - ], - "escompat": [ - "../../../../../../../arkcompiler/runtime_core/static_core/plugins/ets/stdlib/escompat" - ], - "@kit.privacyManagerAni": [ - "./arkts/privacyManagerAni.ets" - ], - "permissions": [ - "../common/arkts/permissions.ets" - ] - } - }, - "include": [ - "./arkts/*.ets", - "../common/arkts/*.ets" - ] -} \ No newline at end of file -- Gitee