From 4453650fef0812de1ebfedd29a3b2729338c4462 Mon Sep 17 00:00:00 2001 From: BrainL Date: Fri, 2 May 2025 15:02:45 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=AD=90=E7=B3=BB=E7=BB=9Ftaihe=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E5=8C=96ani=E5=AF=B9=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BrainL --- 1.patch | 922 ++++++++++++++++++ afs_change.patch | 0 bundle.json | 4 +- interfaces/kits/taihe/fileshare/BUILD.gn | 86 ++ .../taihe/fileshare/idl/ohos.fileshare.taihe | 35 + .../fileshare/include/grant_permissons.h | 40 + .../taihe/fileshare/src/ani_constructor.cpp | 32 + .../taihe/fileshare/src/grant_permissons.cpp | 108 ++ .../test/test_activatePermission.ets | 109 +++ .../test/test_deactivatePermission.ets | 108 ++ .../kits/taihe/fileshare/test/test_main.ets | 11 + interfaces/kits/taihe/fileuri/BUILD.gn | 85 ++ .../taihe/fileuri/idl/ohos.file.fileuri.taihe | 16 + .../taihe/fileuri/include/fileuri_taihe.h | 47 + .../taihe/fileuri/src/ani_constructor.cpp | 28 + .../kits/taihe/fileuri/src/fileuri_taihe.cpp | 63 ++ .../kits/taihe/fileuri/test/test_main.ets | 38 + 17 files changed, 1731 insertions(+), 1 deletion(-) create mode 100644 1.patch create mode 100644 afs_change.patch create mode 100644 interfaces/kits/taihe/fileshare/BUILD.gn create mode 100644 interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe create mode 100644 interfaces/kits/taihe/fileshare/include/grant_permissons.h create mode 100644 interfaces/kits/taihe/fileshare/src/ani_constructor.cpp create mode 100644 interfaces/kits/taihe/fileshare/src/grant_permissons.cpp create mode 100644 interfaces/kits/taihe/fileshare/test/test_activatePermission.ets create mode 100644 interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets create mode 100644 interfaces/kits/taihe/fileshare/test/test_main.ets create mode 100644 interfaces/kits/taihe/fileuri/BUILD.gn create mode 100644 interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe create mode 100644 interfaces/kits/taihe/fileuri/include/fileuri_taihe.h create mode 100644 interfaces/kits/taihe/fileuri/src/ani_constructor.cpp create mode 100644 interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp create mode 100644 interfaces/kits/taihe/fileuri/test/test_main.ets diff --git a/1.patch b/1.patch new file mode 100644 index 000000000..c4af33fa2 --- /dev/null +++ b/1.patch @@ -0,0 +1,922 @@ +diff --git a/afs_change.patch b/afs_change.patch +new file mode 100644 +index 00000000..e69de29b +diff --git a/bundle.json b/bundle.json +index e8b3be68..3355df8c 100644 +--- a/bundle.json ++++ b/bundle.json +@@ -72,7 +72,9 @@ + "//foundation/filemanagement/app_file_service/interfaces/kits/ani/file_uri:fileuri_ani_package", + "//foundation/filemanagement/app_file_service/interfaces/kits/ndk/fileuri/src:ohfileuri", + "//foundation/filemanagement/app_file_service/interfaces/kits/ndk/fileshare/src:ohfileshare", +- "//foundation/filemanagement/app_file_service/frameworks/native/backup_ext/ani:backup_ext_ani_package" ++ "//foundation/filemanagement/app_file_service/frameworks/native/backup_ext/ani:backup_ext_ani_package", ++ "//foundation/filemanagement/app_file_service/interfaces/kits/taihe/fileuri:afs_fileuri_taihe", ++ "//foundation/filemanagement/app_file_service/interfaces/kits/taihe/fileshare:afs_fileshare_taihe" + ], + "service_group": [ + "//foundation/filemanagement/app_file_service:tgt_backup_extension", +diff --git a/interfaces/kits/taihe/fileshare/BUILD.gn b/interfaces/kits/taihe/fileshare/BUILD.gn +new file mode 100644 +index 00000000..5bd9cf04 +--- /dev/null ++++ b/interfaces/kits/taihe/fileshare/BUILD.gn +@@ -0,0 +1,86 @@ ++import("//build/config/components/ets_frontend/ets2abc_config.gni") ++import("//build/ohos.gni") ++import("//build/ohos/taihe_idl/taihe.gni") ++import("//foundation/filemanagement/app_file_service/app_file_service.gni") ++ ++part_name = "app_file_service" ++subsystem_name = "filemanagement" ++taihe_generated_file_path = "$taihe_file_path/out/$subsystem_name/$part_name/fileshare" ++ ++copy_taihe_idl("copy_taihe") { ++ sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe" ] ++} ++ ++ohos_taihe("run_taihe") { ++ taihe_generated_file_path = "$taihe_generated_file_path" ++ deps = [ ":copy_taihe" ] ++ outputs = [ ++ "$taihe_generated_file_path/src/ohos.fileshare.ani.cpp", ++ "$taihe_generated_file_path/src/ohos.fileshare.abi.c", ++ ] ++} ++ ++taihe_shared_library("file_share_taihe") { ++ taihe_generated_file_path = "$taihe_generated_file_path" ++ subsystem_name = "filemanagement" ++ part_name = "app_file_service" ++ ++ include_dirs = [ ++ "include", ++ "${app_file_service_path}/interfaces/common/include/log.h", ++ "${app_file_service_path}/interfaces/innerkits/native/file_share/include", ++ "${app_file_service_path}/interfaces/kits/ndk/fileshare/include" ++ ] ++ ++ sources = get_target_outputs(":run_taihe") ++ sources += [ ++ "src/ani_constructor.cpp", ++ "src/grant_permissons.cpp" ++ ] ++ ++ deps = [ ++ ":run_taihe", ++ "${app_file_service_path}/interfaces/innerkits/native:fileshare_native", ++ ] ++ ++ external_deps = [ ++ "hilog:libhilog", ++ "hitrace:hitrace_meter", ++ ] ++} ++ ++generate_static_abc("file_share_taihe_abc") { ++ base_url = "$taihe_generated_file_path" ++ files = [ "$taihe_generated_file_path/@ohos.fileshare.ets" ] ++ is_boot_abc = "True" ++ device_dst_file = "/system/framework/file_share_taihe_abc.abc" ++ dependencies = [ ":run_taihe" ] ++} ++ ++generate_static_abc("file_share_taihe_test_abc"){ ++ base_url = "${app_file_service_path}/interfaces/kits/taihe/fileshare/test" ++ files=[ ++ "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets", ++ "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets", ++ "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_main.ets", ++ ] ++ is_boot_abc = "True" ++ device_dst_file = "/system/framework/file_share_taihe_test_abc.abc" ++} ++ ++ohos_prebuilt_etc("file_share_etc") { ++ source = "$target_out_dir/file_share_taihe_abc.abc" ++ module_install_dir = "framework" ++ part_name = "app_file_service" ++ subsystem_name = "filemanagement" ++ deps = [ ++ ":file_share_taihe_abc", ++ ] ++} ++ ++group("afs_fileshare_taihe") { ++ deps = [ ++ ":file_share_taihe", ++ ":file_share_etc", ++ ] ++} +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe +new file mode 100644 +index 00000000..10e28d00 +--- /dev/null ++++ b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe +@@ -0,0 +1,35 @@ ++@!namespace("@ohos.fileshare","fileShare") ++ ++@!sts_inject(""" ++static { loadLibrary("file_share_taihe.z"); } ++""") ++ ++enum OperationMode:i32{ ++ READ_MODE=1, ++ WRITE_MODE=2, ++} ++ ++struct PolicyInfo{ ++ uri:String; ++ operationMode:i32; ++} ++ ++function makePolicyInfo(uri:String,operationMode:i32): PolicyInfo; ++ ++enum PolicyErrorCode:i32{ ++ PERSISTENCE_FORBIDDEN = 1, ++ INVALID_MODE = 2, ++ INVALID_PATH = 3, ++ PERMISSION_NOT_PERSISTED = 4, ++} ++ ++@gen_promise("activatePermission") ++function activatePermissionSync( ++ policies: Array ++): void; ++ ++ ++@gen_promise("deactivatePermission") ++function deactivatePermissionSync( ++ policies: Array ++): void; +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h +new file mode 100644 +index 00000000..3c9e8581 +--- /dev/null ++++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h +@@ -0,0 +1,40 @@ ++/* ++ * 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. ++ */ ++ ++ #ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H ++ #define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H ++ ++#include "ohos.fileshare.proj.hpp" ++#include "ohos.fileshare.impl.hpp" ++#include "taihe/runtime.hpp" ++#include "file_permission.h" ++ ++namespace ANI::fileShare { ++using namespace taihe; ++using namespace ohos::fileshare; ++ ++ PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode); ++ void activatePermissionSync(array_view policies); ++ void deactivatePermissionSync(array_view policies); ++ ++ struct PolicyErrorArgs { ++ std::deque errorResults; ++ int32_t errNo = 0; ++ ~PolicyErrorArgs() = default; ++ }; ++ ++} // namespace ++ ++#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp +new file mode 100644 +index 00000000..1571fe27 +--- /dev/null ++++ b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp +@@ -0,0 +1,32 @@ ++ /* ++ * 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. ++ */ ++#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H ++#define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H ++ ++#include "ohos.fileshare.ani.hpp" ++ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { ++ ani_env *env; ++ if (ANI_OK != vm->GetEnv(ANI_VERSION_1, &env)) { ++ return ANI_ERROR; ++ } ++ if (ANI_OK != ohos::fileshare::ANIRegister(env)) { ++ std::cerr << "Error from ohos::fileshare::ANIRegister" << std::endl; ++ return ANI_ERROR; ++ } ++ *result = ANI_VERSION_1; ++ return ANI_OK; ++} ++ ++#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +new file mode 100644 +index 00000000..84702f67 +--- /dev/null ++++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +@@ -0,0 +1,108 @@ ++ /* ++ * 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. ++ */ ++ ++ #include "grant_permissons.h" ++ #include "log.h" ++ #include "oh_file_share.h" ++ #include ++ ++ ++ using namespace taihe; ++ using namespace ANI::fileShare; ++ ++ namespace ANI::fileShare { ++ ++ PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) ++ { ++ return PolicyInfo{uri, operationMode}; ++ } ++ ++ int32_t GetUriPoliciesArg(array_view policies, ++ std::vector &uriPolicies) ++ { ++ uint32_t count = policies.size(); ++ ++ if (count > OHOS::AppFileService::MAX_ARRAY_SIZE) { ++ LOGE("The length of the array is extra-long"); ++ return E_PARAMS; ++ } ++ ++ for(uint32_t i = 0; i < count; i++) { ++ OHOS::AppFileService::UriPolicyInfo uriPolicy; ++ uriPolicy.uri = policies[i].uri; ++ uriPolicy.mode = policies[i].operationMode; ++ if(uriPolicy.uri == "") { ++ LOGE("URI is empty"); ++ return E_PARAMS; ++ } ++ if(uriPolicy.mode != READ_MODE && ++ uriPolicy.mode != (READ_MODE | WRITE_MODE)) { ++ LOGE("Invalid operation mode"); ++ return E_PARAMS; ++ } ++ uriPolicies.emplace_back(uriPolicy); ++ } ++ return E_NO_ERROR; ++ } ++ ++ void activatePermissionSync(array_view policies) ++ { ++ std::vector uriPolicies; ++ if(GetUriPoliciesArg(policies , uriPolicies)) { ++ LOGE("Failed to get URI policies"); ++ set_business_error(E_PARAMS, "Failed to get URI policies"); ++ } ++ ++ std::shared_ptr arg = std::make_shared(); ++ if (arg == nullptr) { ++ LOGE("PolicyErrorArgs make make_shared failed"); ++ set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); ++ } ++ ++ arg->errNo=OHOS::AppFileService::FilePermission::ActivatePermission(uriPolicies, arg->errorResults); ++ if(arg->errNo) { ++ LOGE("Activation failed" ); ++ set_business_error(arg->errNo, "Activation failed"); ++ } ++ } ++ ++ void deactivatePermissionSync(array_view policies) ++ { ++ std::vector uriPolicies; ++ if(GetUriPoliciesArg(policies, uriPolicies)) { ++ LOGE("Failed to get URI policies"); ++ set_business_error(E_PARAMS, "Failed to get URI policies"); ++ } ++ ++ std::shared_ptr arg = std::make_shared(); ++ if (arg == nullptr) { ++ LOGE("PolicyErrorArgs make make_shared failed"); ++ set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); ++ } ++ ++ arg->errNo=OHOS::AppFileService::FilePermission::DeactivatePermission(uriPolicies, arg->errorResults); ++ if(arg->errNo) { ++ LOGE("Deactivation failed"); ++ set_business_error(arg->errNo, "Deactivation failed"); ++ } ++ } ++ } // namespace ++ ++ // NOLINTBEGIN ++ TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); ++ TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); ++ TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); ++ // NOLINTEND ++ +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets b/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets +new file mode 100644 +index 00000000..0641dee7 +--- /dev/null ++++ b/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets +@@ -0,0 +1,109 @@ ++import fileShare from '@ohos.fileshare'; ++ ++/** ++* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0100 ++* @tc.name FileShare_activatePermission_001 ++* @tc.desc Test activatePermission() interfaces ++* Test normal uri and OperationMode is READ_MODE. ++* @tc.size MEDIUM ++* @tc.type Function ++* @tc.level Level 0 ++* @tc.require ++*/ ++function FileShare_activatePermission_001() ++{ ++ let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_001.txt"; ++ let uri = fileStr; ++ let policyInfo : fileShare.PolicyInfo = { ++ uri: uri, ++ operationMode: fileShare.OperationMode.READ_MODE, ++ }; ++ let policies = [policyInfo]; ++ ++ fileShare.activatePermission(policies).then(() => { ++ console.log("FileShare_activatePermission_001 successfully"); ++ }).catch((err) => { ++ console.log("FileShare_activatePermission_001 failed with error message: " + err.message + ", error code: " + err.code); ++ }); ++ ++} ++ ++ ++/** ++* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0200 ++* @tc.name FileShare_activatePermission_002 ++* @tc.desc Test activatePermission() interfaces ++* Test normal uri and OperationMode is READ_MODE and WRITE_MODE . ++* @tc.size MEDIUM ++* @tc.type Function ++* @tc.level Level 0 ++* @tc.require ++*/ ++function FileShare_activatePermission_002() ++{ ++ ++ let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_002.txt"; ++ let uri = fileStr; ++ let policyInfo: fileShare.PolicyInfo ={ ++ uri: uri, ++ operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, ++ }; ++ let policies = [policyInfo]; ++ ++ fileShare.activatePermission(policies).then(() => { ++ console.info("FileShare_activatePermission_002 successfully"); ++ }).catch((err) => { ++ console.info("FileShare_activatePermission_002 failed with error message: " + err.message + ", error code: " + err.code); ++ }); ++} ++ ++/** ++* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0300 ++* @tc.name FileShare_activatePermission_003 ++* @tc.desc Test activatePermission() interfaces ++* Test INVALID_PATH uri and OperationMode is READ_MODE. ++* @tc.size MEDIUM ++* @tc.type Function ++* @tc.level Level 3 ++* @tc.require ++*/ ++function FileShare_activatePermission_003() ++{ ++ ++ let fileStr1 = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_003.txt"; ++ let uri1 = fileStr1; ++ let policyInfo1 : fileShare.PolicyInfo = { ++ uri: uri1, ++ operationMode: fileShare.OperationMode.READ_MODE, ++ }; ++ ++ let fileStr2 = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_00301.txt"; ++ let uri2 = fileStr2; ++ let policyInfo2 : fileShare.PolicyInfo = { ++ uri: uri2, ++ operationMode: fileShare.OperationMode.READ_MODE, ++ }; ++ let policies = [policyInfo1, policyInfo2]; ++ ++ fileShare.activatePermission(policies).then(() => { ++ console.info("FileShare_activatePermission_003 successfully"); ++ }).catch((err) => { ++ console.info("FileShare_activatePermission_003 failed with error message: " + err.message + ", error code: " + err.code); ++ }); ++ ++} ++ ++export function testActivatePermission() ++{ ++ console.log("FileShare_activatePermission_001 test begin"); ++ FileShare_activatePermission_001(); ++ console.log("FileShare_activatePermission_001 test end"); ++ ++ console.log("FileShare_activatePermission_002 test begin"); ++ FileShare_activatePermission_002(); ++ console.log("FileShare_activatePermission_002 test end"); ++ ++ console.log("FileShare_activatePermission_003 test begin"); ++ FileShare_activatePermission_003(); ++ console.log("FileShare_activatePermission_003 test end"); ++} +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets b/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets +new file mode 100644 +index 00000000..7320526c +--- /dev/null ++++ b/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets +@@ -0,0 +1,108 @@ ++import fileShare from '@ohos.fileshare'; ++ ++/** ++* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0100 ++* @tc.name FileShare_deactivatePermission_001 ++* @tc.desc Test deactivatePermission() interfaces ++* Test normal uri and OperationMode is READ_MODE. ++* @tc.size MEDIUM ++* @tc.type Function ++* @tc.level Level 0 ++* @tc.require ++*/ ++function FileShare_deactivatePermission_001() ++{ ++ let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_001.txt"; ++ let uri = fileStr; ++ let policyInfo : fileShare.PolicyInfo = { ++ uri: uri, ++ operationMode: fileShare.OperationMode.READ_MODE, ++ }; ++ let policies = [policyInfo]; ++ ++ fileShare.deactivatePermission(policies).then(() => { ++ console.log("FileShare_deactivatePermission_001 successfully"); ++ ++ }).catch((err) => { ++ console.log("FileShare_deactivatePermission_001 failed with error message " + err.message + ", error code: " + err.code); ++ ++ }); ++ ++} ++ ++/** ++* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0200 ++* @tc.name FileShare_deactivatePermission_002 ++* @tc.desc Test deactivatePermission() interfaces ++* Test normal uri and OperationMode is READ_MODE and WRITE_MODE . ++* @tc.size MEDIUM ++* @tc.type Function ++* @tc.level Level 0 ++* @tc.require ++*/ ++function FileShare_deactivatePermission_002() ++{ ++ let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_002.txt"; ++ let uri = fileStr; ++ let policyInfo: fileShare.PolicyInfo ={ ++ uri: uri, ++ operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, ++ }; ++ let policies = [policyInfo]; ++ ++ fileShare.deactivatePermission(policies).then(() => { ++ console.log("FileShare_deactivatePermission_002 successfully"); ++ }).catch((err) => { ++ console.log("FileShare_deactivatePermission_002 failed with error message " + err.message + ", error code: " + err.code); ++ }); ++} ++ ++/** ++* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0300 ++* @tc.name FileShare_deactivatePermission_003 ++* @tc.desc Test deactivatePermission() interfaces ++* Test INVALID_PATH uri and OperationMode is READ_MODE. ++* @tc.size MEDIUM ++* @tc.type Function ++* @tc.level Level 3 ++* @tc.require ++*/ ++function FileShare_deactivatePermission_003() ++{ ++ let fileStr1 = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_003.txt"; ++ let uri1 = fileStr1 ; ++ let policyInfo1 : fileShare.PolicyInfo= { ++ uri: uri1, ++ operationMode: fileShare.OperationMode.READ_MODE, ++ }; ++ ++ let fileStr2 = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_00301.txt"; ++ let uri2 = fileStr2; ++ let policyInfo2 : fileShare.PolicyInfo = { ++ uri: uri2, ++ operationMode: fileShare.OperationMode.READ_MODE, ++ }; ++ let policies = [policyInfo1, policyInfo2]; ++ ++ fileShare.deactivatePermission(policies).then(() => { ++ console.log("FileShare_deactivatePermission_003 successfully"); ++ }).catch((err) => { ++ console.info("FileShare_deactivatePermission_003 failed with error message: " + err.message + ", error code: " + err.code); ++ }); ++ ++} ++ ++export function testDeactivatePermission() ++{ ++ console.log("FileShare_deactivatePermission_001 test begin"); ++ FileShare_deactivatePermission_001(); ++ console.log("FileShare_deactivatePermission_001 test end"); ++ ++ console.log("FileShare_deactivatePermission_002 test begin"); ++ FileShare_deactivatePermission_002(); ++ console.log("FileShare_deactivatePermission_002 test end"); ++ ++ console.log("FileShare_deactivatePermission_003 test begin"); ++ FileShare_deactivatePermission_003(); ++ console.log("FileShare_deactivatePermission_003 test end"); ++} +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileshare/test/test_main.ets b/interfaces/kits/taihe/fileshare/test/test_main.ets +new file mode 100644 +index 00000000..a6076e0e +--- /dev/null ++++ b/interfaces/kits/taihe/fileshare/test/test_main.ets +@@ -0,0 +1,11 @@ ++import {testActivatePermission} from "./test_activatePermission"; ++import {testDeactivatePermission} from "./test_deactivatePermission"; ++ ++ ++ ++function main(){ ++ ++ testActivatePermission(); ++ testDeactivatePermission(); ++ ++} +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileuri/BUILD.gn b/interfaces/kits/taihe/fileuri/BUILD.gn +new file mode 100644 +index 00000000..5f655dd9 +--- /dev/null ++++ b/interfaces/kits/taihe/fileuri/BUILD.gn +@@ -0,0 +1,85 @@ ++import("//build/config/components/ets_frontend/ets2abc_config.gni") ++import("//build/ohos.gni") ++import("//build/ohos/taihe_idl/taihe.gni") ++import("//foundation/filemanagement/app_file_service/app_file_service.gni") ++ ++part_name = "app_file_service" ++subsystem_name = "filemanagement" ++taihe_generated_file_path = "$taihe_file_path/out/$subsystem_name/$part_name/fileuri" ++ ++copy_taihe_idl("copy_taihe") { ++ sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe" ] ++} ++ ++ohos_taihe("run_taihe") { ++ taihe_generated_file_path = "$taihe_generated_file_path" ++ deps = [ ":copy_taihe" ] ++ outputs = [ ++ "$taihe_generated_file_path/src/ohos.file.fileuri.ani.cpp", ++ "$taihe_generated_file_path/src/ohos.file.fileuri.abi.c", ++ ] ++} ++ ++taihe_shared_library("file_fileuri_taihe") { ++ taihe_generated_file_path = "$taihe_generated_file_path" ++ subsystem_name = "$subsystem_name" ++ part_name = "$part_name" ++ ++ include_dirs = [ ++ "include", ++ "${app_file_service_path}/interfaces/common/include", ++ "${app_file_service_path}/interfaces/common/include/log.h", ++ "${app_file_service_path}/interfaces/innerkits/native/file_uri/include", ++ "${app_file_service_path}/interfaces/kits/ndk/fileshare/include" ++ ] ++ ++ sources = get_target_outputs(":run_taihe") ++ sources += [ ++ "src/ani_constructor.cpp", ++ "src/fileuri_taihe.cpp" ++ ] ++ ++ deps = [ ++ ":run_taihe", ++ "${app_file_service_path}/interfaces/innerkits/native:fileuri_native", ++ ] ++ ++ external_deps = [ ++ "hilog:libhilog", ++ "ability_base:zuri", ++ ] ++} ++ ++generate_static_abc("file_fileuri_taihe_abc") { ++ base_url = "$taihe_generated_file_path" ++ files = [ "$taihe_generated_file_path/@ohos.file.fileuri.ets" ] ++ is_boot_abc = "True" ++ device_dst_file = "/system/framework/file_fileuri_taihe_abc.abc" ++ dependencies = [ ":run_taihe" ] ++} ++ ++generate_static_abc("file_fileuri_test") { ++ base_url = "${app_file_service_path}/interfaces/kits/taihe/fileuri/test" ++ files = [ ++ "${app_file_service_path}/interfaces/kits/taihe/fileuri/test/test_main.ets", ++ ] ++ is_boot_abc = "True" ++ device_dst_file = "/system/framework/file_fileuri_test.abc" ++} ++ ++ohos_prebuilt_etc("file_fileuri_etc") { ++ source = "$target_out_dir/file_fileuri_taihe_abc.abc" ++ module_install_dir = "framework" ++ part_name = "app_file_service" ++ subsystem_name = "filemanagement" ++ deps = [ ++ ":file_fileuri_taihe_abc", ++ ] ++} ++ ++group("afs_fileuri_taihe") { ++ deps = [ ++ ":file_fileuri_taihe", ++ ":file_fileuri_etc", ++ ] ++} +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe +new file mode 100644 +index 00000000..ba2fb92a +--- /dev/null ++++ b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe +@@ -0,0 +1,16 @@ ++@!namespace("@ohos.file.fileuri", "fileUri") ++ ++@!sts_inject(""" ++static { loadLibrary("file_fileuri_taihe.z"); } ++""") ++ ++@class ++interface FileUri { ++ @get("name") ++ getName(): String; ++} ++ ++@ctor("FileUri") ++function makeFileUri(name :String): FileUri; ++ ++function getUriFromPath(path: String): String; +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h +new file mode 100644 +index 00000000..00838276 +--- /dev/null ++++ b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h +@@ -0,0 +1,47 @@ ++/* ++ * 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. ++ */ ++ ++#ifndef INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H ++#define INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H ++ ++#include "ohos.file.fileuri.proj.hpp" ++#include "ohos.file.fileuri.impl.hpp" ++#include "taihe/runtime.hpp" ++#include "stdexcept" ++#include "file_uri.h" ++ ++namespace ANI::fileUri { ++using namespace taihe; ++using namespace ohos::file::fileuri; ++ ++class FileUriImpl { ++public: ++ FileUriImpl() = delete; ++ ++ FileUriImpl(string_view name); ++ ++ string getName(); ++ ++private: ++ OHOS::Uri uri_; ++}; ++ ++FileUri makeFileUri(string_view name); ++ ++string getUriFromPath(string_view path); ++ ++} ++ ++#endif // INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp +new file mode 100644 +index 00000000..ccd336fb +--- /dev/null ++++ b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp +@@ -0,0 +1,28 @@ ++/* ++ * 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. ++ */ ++ ++#include "ohos.file.fileuri.ani.hpp" ++ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { ++ ani_env *env; ++ if (ANI_OK != vm->GetEnv(ANI_VERSION_1, &env)) { ++ return ANI_ERROR; ++ } ++ if (ANI_OK != ohos::file::fileuri::ANIRegister(env)) { ++ std::cerr << "Error from ohos::file::fileuri::ANIRegister" << std::endl; ++ return ANI_ERROR; ++ } ++ *result = ANI_VERSION_1; ++ return ANI_OK; ++} +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp +new file mode 100644 +index 00000000..a5bd49aa +--- /dev/null ++++ b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp +@@ -0,0 +1,63 @@ ++/* ++ * 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. ++ */ ++ ++#include "fileuri_taihe.h" ++ ++#include "common_func.h" ++#include "sandbox_helper.h" ++ ++using namespace ANI::fileUri; ++ ++namespace ANI::fileUri { ++ ++const std::string FILE_SCHEME_PREFIX_TAIHE = "file://"; ++ ++FileUriImpl::FileUriImpl(string_view name) ++: uri_((std::string(name.c_str()).find(FILE_SCHEME_PREFIX_TAIHE) == 0) ? std::string(name.c_str()) ++: OHOS::AppFileService::CommonFunc::GetUriFromPath(std::string(name.c_str()))) ++{ ++ ++} ++ ++string FileUriImpl::getName() { ++std::string sandboxPath = OHOS::AppFileService::SandboxHelper::Decode(uri_.GetPath()); ++ size_t posLast = sandboxPath.find_last_of("/"); ++ if (posLast == std::string::npos) { ++ return ""; ++ } ++ ++ if (posLast == (sandboxPath.size() - 1)) { ++ return ""; ++ } ++ ++ return sandboxPath.substr(posLast + 1); ++ ++} ++ ++ ++FileUri makeFileUri(string_view name) { ++ return make_holder(name); ++} ++ ++string getUriFromPath(string_view path) { ++ const std::string strPath = path.c_str(); ++ std::string uri = OHOS::AppFileService::CommonFunc::GetUriFromPath(strPath); ++ ++ return uri; ++} ++} // namespace ANI::fileUri ++ ++TH_EXPORT_CPP_API_makeFileUri(makeFileUri); ++TH_EXPORT_CPP_API_getUriFromPath(getUriFromPath); +\ No newline at end of file +diff --git a/interfaces/kits/taihe/fileuri/test/test_main.ets b/interfaces/kits/taihe/fileuri/test/test_main.ets +new file mode 100644 +index 00000000..09bd1ee9 +--- /dev/null ++++ b/interfaces/kits/taihe/fileuri/test/test_main.ets +@@ -0,0 +1,38 @@ ++import fileUri from '@ohos.file.fileuri'; ++ ++function main() ++{ ++ test_GetUriFromPath_000(); ++ test_GetUriFromPath_001(); ++} ++ ++function test_GetUriFromPath_000() ++{ ++ try { ++ let path = "/data/storage/el2/base/haps/entry/files/sync.jpg"; ++ let uri = fileUri.getUriFromPath(path); ++ let result = "file:///data/storage/el2/base/haps/entry/files/sync.jpg" ++ console.log("test_GetUriFromPath_000 uri:" + uri); ++ console.log("test_GetUriFromPath_000 result:" + result); ++ if (uri == result) { ++ console.log("test_GetUriFromPath_001 SUCCESS"); ++ } ++ } catch (err) { ++ console.log('test_FileUri_GetUriFromPath_000 has failed for ' + err); ++ } ++} ++ ++function test_GetUriFromPath_001() ++{ ++ try { ++ let uri = fileUri.getUriFromPath(""); ++ let result = "file://"; ++ console.log("test__GetUriFromPath_001 uri:" + uri); ++ console.log("test__GetUriFromPath_001 result:" + result); ++ if (uri == result) { ++ console.log("test_GetUriFromPath_001 SUCCESS"); ++ } ++ } catch (err) { ++ console.log('test_GetUriFromPath_001 FAILED: ' + err); ++ } ++} +\ No newline at end of file diff --git a/afs_change.patch b/afs_change.patch new file mode 100644 index 000000000..e69de29bb diff --git a/bundle.json b/bundle.json index e8b3be686..3355df8c6 100644 --- a/bundle.json +++ b/bundle.json @@ -72,7 +72,9 @@ "//foundation/filemanagement/app_file_service/interfaces/kits/ani/file_uri:fileuri_ani_package", "//foundation/filemanagement/app_file_service/interfaces/kits/ndk/fileuri/src:ohfileuri", "//foundation/filemanagement/app_file_service/interfaces/kits/ndk/fileshare/src:ohfileshare", - "//foundation/filemanagement/app_file_service/frameworks/native/backup_ext/ani:backup_ext_ani_package" + "//foundation/filemanagement/app_file_service/frameworks/native/backup_ext/ani:backup_ext_ani_package", + "//foundation/filemanagement/app_file_service/interfaces/kits/taihe/fileuri:afs_fileuri_taihe", + "//foundation/filemanagement/app_file_service/interfaces/kits/taihe/fileshare:afs_fileshare_taihe" ], "service_group": [ "//foundation/filemanagement/app_file_service:tgt_backup_extension", diff --git a/interfaces/kits/taihe/fileshare/BUILD.gn b/interfaces/kits/taihe/fileshare/BUILD.gn new file mode 100644 index 000000000..5bd9cf044 --- /dev/null +++ b/interfaces/kits/taihe/fileshare/BUILD.gn @@ -0,0 +1,86 @@ +import("//build/config/components/ets_frontend/ets2abc_config.gni") +import("//build/ohos.gni") +import("//build/ohos/taihe_idl/taihe.gni") +import("//foundation/filemanagement/app_file_service/app_file_service.gni") + +part_name = "app_file_service" +subsystem_name = "filemanagement" +taihe_generated_file_path = "$taihe_file_path/out/$subsystem_name/$part_name/fileshare" + +copy_taihe_idl("copy_taihe") { + sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe" ] +} + +ohos_taihe("run_taihe") { + taihe_generated_file_path = "$taihe_generated_file_path" + deps = [ ":copy_taihe" ] + outputs = [ + "$taihe_generated_file_path/src/ohos.fileshare.ani.cpp", + "$taihe_generated_file_path/src/ohos.fileshare.abi.c", + ] +} + +taihe_shared_library("file_share_taihe") { + taihe_generated_file_path = "$taihe_generated_file_path" + subsystem_name = "filemanagement" + part_name = "app_file_service" + + include_dirs = [ + "include", + "${app_file_service_path}/interfaces/common/include/log.h", + "${app_file_service_path}/interfaces/innerkits/native/file_share/include", + "${app_file_service_path}/interfaces/kits/ndk/fileshare/include" + ] + + sources = get_target_outputs(":run_taihe") + sources += [ + "src/ani_constructor.cpp", + "src/grant_permissons.cpp" + ] + + deps = [ + ":run_taihe", + "${app_file_service_path}/interfaces/innerkits/native:fileshare_native", + ] + + external_deps = [ + "hilog:libhilog", + "hitrace:hitrace_meter", + ] +} + +generate_static_abc("file_share_taihe_abc") { + base_url = "$taihe_generated_file_path" + files = [ "$taihe_generated_file_path/@ohos.fileshare.ets" ] + is_boot_abc = "True" + device_dst_file = "/system/framework/file_share_taihe_abc.abc" + dependencies = [ ":run_taihe" ] +} + +generate_static_abc("file_share_taihe_test_abc"){ + base_url = "${app_file_service_path}/interfaces/kits/taihe/fileshare/test" + files=[ + "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets", + "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets", + "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_main.ets", + ] + is_boot_abc = "True" + device_dst_file = "/system/framework/file_share_taihe_test_abc.abc" +} + +ohos_prebuilt_etc("file_share_etc") { + source = "$target_out_dir/file_share_taihe_abc.abc" + module_install_dir = "framework" + part_name = "app_file_service" + subsystem_name = "filemanagement" + deps = [ + ":file_share_taihe_abc", + ] +} + +group("afs_fileshare_taihe") { + deps = [ + ":file_share_taihe", + ":file_share_etc", + ] +} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe new file mode 100644 index 000000000..10e28d007 --- /dev/null +++ b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe @@ -0,0 +1,35 @@ +@!namespace("@ohos.fileshare","fileShare") + +@!sts_inject(""" +static { loadLibrary("file_share_taihe.z"); } +""") + +enum OperationMode:i32{ + READ_MODE=1, + WRITE_MODE=2, +} + +struct PolicyInfo{ + uri:String; + operationMode:i32; +} + +function makePolicyInfo(uri:String,operationMode:i32): PolicyInfo; + +enum PolicyErrorCode:i32{ + PERSISTENCE_FORBIDDEN = 1, + INVALID_MODE = 2, + INVALID_PATH = 3, + PERMISSION_NOT_PERSISTED = 4, +} + +@gen_promise("activatePermission") +function activatePermissionSync( + policies: Array +): void; + + +@gen_promise("deactivatePermission") +function deactivatePermissionSync( + policies: Array +): void; \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h new file mode 100644 index 000000000..3c9e85811 --- /dev/null +++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h @@ -0,0 +1,40 @@ +/* + * 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. + */ + + #ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H + #define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H + +#include "ohos.fileshare.proj.hpp" +#include "ohos.fileshare.impl.hpp" +#include "taihe/runtime.hpp" +#include "file_permission.h" + +namespace ANI::fileShare { +using namespace taihe; +using namespace ohos::fileshare; + + PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode); + void activatePermissionSync(array_view policies); + void deactivatePermissionSync(array_view policies); + + struct PolicyErrorArgs { + std::deque errorResults; + int32_t errNo = 0; + ~PolicyErrorArgs() = default; + }; + +} // namespace + +#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp new file mode 100644 index 000000000..1571fe27c --- /dev/null +++ b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp @@ -0,0 +1,32 @@ + /* + * 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. + */ +#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H +#define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H + +#include "ohos.fileshare.ani.hpp" +ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { + ani_env *env; + if (ANI_OK != vm->GetEnv(ANI_VERSION_1, &env)) { + return ANI_ERROR; + } + if (ANI_OK != ohos::fileshare::ANIRegister(env)) { + std::cerr << "Error from ohos::fileshare::ANIRegister" << std::endl; + return ANI_ERROR; + } + *result = ANI_VERSION_1; + return ANI_OK; +} + +#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp new file mode 100644 index 000000000..84702f674 --- /dev/null +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -0,0 +1,108 @@ + /* + * 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. + */ + + #include "grant_permissons.h" + #include "log.h" + #include "oh_file_share.h" + #include + + + using namespace taihe; + using namespace ANI::fileShare; + + namespace ANI::fileShare { + + PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) + { + return PolicyInfo{uri, operationMode}; + } + + int32_t GetUriPoliciesArg(array_view policies, + std::vector &uriPolicies) + { + uint32_t count = policies.size(); + + if (count > OHOS::AppFileService::MAX_ARRAY_SIZE) { + LOGE("The length of the array is extra-long"); + return E_PARAMS; + } + + for(uint32_t i = 0; i < count; i++) { + OHOS::AppFileService::UriPolicyInfo uriPolicy; + uriPolicy.uri = policies[i].uri; + uriPolicy.mode = policies[i].operationMode; + if(uriPolicy.uri == "") { + LOGE("URI is empty"); + return E_PARAMS; + } + if(uriPolicy.mode != READ_MODE && + uriPolicy.mode != (READ_MODE | WRITE_MODE)) { + LOGE("Invalid operation mode"); + return E_PARAMS; + } + uriPolicies.emplace_back(uriPolicy); + } + return E_NO_ERROR; + } + + void activatePermissionSync(array_view policies) + { + std::vector uriPolicies; + if(GetUriPoliciesArg(policies , uriPolicies)) { + LOGE("Failed to get URI policies"); + set_business_error(E_PARAMS, "Failed to get URI policies"); + } + + std::shared_ptr arg = std::make_shared(); + if (arg == nullptr) { + LOGE("PolicyErrorArgs make make_shared failed"); + set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); + } + + arg->errNo=OHOS::AppFileService::FilePermission::ActivatePermission(uriPolicies, arg->errorResults); + if(arg->errNo) { + LOGE("Activation failed" ); + set_business_error(arg->errNo, "Activation failed"); + } + } + + void deactivatePermissionSync(array_view policies) + { + std::vector uriPolicies; + if(GetUriPoliciesArg(policies, uriPolicies)) { + LOGE("Failed to get URI policies"); + set_business_error(E_PARAMS, "Failed to get URI policies"); + } + + std::shared_ptr arg = std::make_shared(); + if (arg == nullptr) { + LOGE("PolicyErrorArgs make make_shared failed"); + set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); + } + + arg->errNo=OHOS::AppFileService::FilePermission::DeactivatePermission(uriPolicies, arg->errorResults); + if(arg->errNo) { + LOGE("Deactivation failed"); + set_business_error(arg->errNo, "Deactivation failed"); + } + } + } // namespace + + // NOLINTBEGIN + TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); + TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); + TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); + // NOLINTEND + \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets b/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets new file mode 100644 index 000000000..0641dee70 --- /dev/null +++ b/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets @@ -0,0 +1,109 @@ +import fileShare from '@ohos.fileshare'; + +/** +* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0100 +* @tc.name FileShare_activatePermission_001 +* @tc.desc Test activatePermission() interfaces +* Test normal uri and OperationMode is READ_MODE. +* @tc.size MEDIUM +* @tc.type Function +* @tc.level Level 0 +* @tc.require +*/ +function FileShare_activatePermission_001() +{ + let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_001.txt"; + let uri = fileStr; + let policyInfo : fileShare.PolicyInfo = { + uri: uri, + operationMode: fileShare.OperationMode.READ_MODE, + }; + let policies = [policyInfo]; + + fileShare.activatePermission(policies).then(() => { + console.log("FileShare_activatePermission_001 successfully"); + }).catch((err) => { + console.log("FileShare_activatePermission_001 failed with error message: " + err.message + ", error code: " + err.code); + }); + +} + + +/** +* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0200 +* @tc.name FileShare_activatePermission_002 +* @tc.desc Test activatePermission() interfaces +* Test normal uri and OperationMode is READ_MODE and WRITE_MODE . +* @tc.size MEDIUM +* @tc.type Function +* @tc.level Level 0 +* @tc.require +*/ +function FileShare_activatePermission_002() +{ + + let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_002.txt"; + let uri = fileStr; + let policyInfo: fileShare.PolicyInfo ={ + uri: uri, + operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, + }; + let policies = [policyInfo]; + + fileShare.activatePermission(policies).then(() => { + console.info("FileShare_activatePermission_002 successfully"); + }).catch((err) => { + console.info("FileShare_activatePermission_002 failed with error message: " + err.message + ", error code: " + err.code); + }); +} + +/** +* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0300 +* @tc.name FileShare_activatePermission_003 +* @tc.desc Test activatePermission() interfaces +* Test INVALID_PATH uri and OperationMode is READ_MODE. +* @tc.size MEDIUM +* @tc.type Function +* @tc.level Level 3 +* @tc.require +*/ +function FileShare_activatePermission_003() +{ + + let fileStr1 = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_003.txt"; + let uri1 = fileStr1; + let policyInfo1 : fileShare.PolicyInfo = { + uri: uri1, + operationMode: fileShare.OperationMode.READ_MODE, + }; + + let fileStr2 = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_00301.txt"; + let uri2 = fileStr2; + let policyInfo2 : fileShare.PolicyInfo = { + uri: uri2, + operationMode: fileShare.OperationMode.READ_MODE, + }; + let policies = [policyInfo1, policyInfo2]; + + fileShare.activatePermission(policies).then(() => { + console.info("FileShare_activatePermission_003 successfully"); + }).catch((err) => { + console.info("FileShare_activatePermission_003 failed with error message: " + err.message + ", error code: " + err.code); + }); + +} + +export function testActivatePermission() +{ + console.log("FileShare_activatePermission_001 test begin"); + FileShare_activatePermission_001(); + console.log("FileShare_activatePermission_001 test end"); + + console.log("FileShare_activatePermission_002 test begin"); + FileShare_activatePermission_002(); + console.log("FileShare_activatePermission_002 test end"); + + console.log("FileShare_activatePermission_003 test begin"); + FileShare_activatePermission_003(); + console.log("FileShare_activatePermission_003 test end"); +} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets b/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets new file mode 100644 index 000000000..7320526c2 --- /dev/null +++ b/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets @@ -0,0 +1,108 @@ +import fileShare from '@ohos.fileshare'; + +/** +* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0100 +* @tc.name FileShare_deactivatePermission_001 +* @tc.desc Test deactivatePermission() interfaces +* Test normal uri and OperationMode is READ_MODE. +* @tc.size MEDIUM +* @tc.type Function +* @tc.level Level 0 +* @tc.require +*/ +function FileShare_deactivatePermission_001() +{ + let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_001.txt"; + let uri = fileStr; + let policyInfo : fileShare.PolicyInfo = { + uri: uri, + operationMode: fileShare.OperationMode.READ_MODE, + }; + let policies = [policyInfo]; + + fileShare.deactivatePermission(policies).then(() => { + console.log("FileShare_deactivatePermission_001 successfully"); + + }).catch((err) => { + console.log("FileShare_deactivatePermission_001 failed with error message " + err.message + ", error code: " + err.code); + + }); + +} + +/** +* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0200 +* @tc.name FileShare_deactivatePermission_002 +* @tc.desc Test deactivatePermission() interfaces +* Test normal uri and OperationMode is READ_MODE and WRITE_MODE . +* @tc.size MEDIUM +* @tc.type Function +* @tc.level Level 0 +* @tc.require +*/ +function FileShare_deactivatePermission_002() +{ + let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_002.txt"; + let uri = fileStr; + let policyInfo: fileShare.PolicyInfo ={ + uri: uri, + operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, + }; + let policies = [policyInfo]; + + fileShare.deactivatePermission(policies).then(() => { + console.log("FileShare_deactivatePermission_002 successfully"); + }).catch((err) => { + console.log("FileShare_deactivatePermission_002 failed with error message " + err.message + ", error code: " + err.code); + }); +} + +/** +* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0300 +* @tc.name FileShare_deactivatePermission_003 +* @tc.desc Test deactivatePermission() interfaces +* Test INVALID_PATH uri and OperationMode is READ_MODE. +* @tc.size MEDIUM +* @tc.type Function +* @tc.level Level 3 +* @tc.require +*/ +function FileShare_deactivatePermission_003() +{ + let fileStr1 = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_003.txt"; + let uri1 = fileStr1 ; + let policyInfo1 : fileShare.PolicyInfo= { + uri: uri1, + operationMode: fileShare.OperationMode.READ_MODE, + }; + + let fileStr2 = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_00301.txt"; + let uri2 = fileStr2; + let policyInfo2 : fileShare.PolicyInfo = { + uri: uri2, + operationMode: fileShare.OperationMode.READ_MODE, + }; + let policies = [policyInfo1, policyInfo2]; + + fileShare.deactivatePermission(policies).then(() => { + console.log("FileShare_deactivatePermission_003 successfully"); + }).catch((err) => { + console.info("FileShare_deactivatePermission_003 failed with error message: " + err.message + ", error code: " + err.code); + }); + +} + +export function testDeactivatePermission() +{ + console.log("FileShare_deactivatePermission_001 test begin"); + FileShare_deactivatePermission_001(); + console.log("FileShare_deactivatePermission_001 test end"); + + console.log("FileShare_deactivatePermission_002 test begin"); + FileShare_deactivatePermission_002(); + console.log("FileShare_deactivatePermission_002 test end"); + + console.log("FileShare_deactivatePermission_003 test begin"); + FileShare_deactivatePermission_003(); + console.log("FileShare_deactivatePermission_003 test end"); +} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/test/test_main.ets b/interfaces/kits/taihe/fileshare/test/test_main.ets new file mode 100644 index 000000000..a6076e0ea --- /dev/null +++ b/interfaces/kits/taihe/fileshare/test/test_main.ets @@ -0,0 +1,11 @@ +import {testActivatePermission} from "./test_activatePermission"; +import {testDeactivatePermission} from "./test_deactivatePermission"; + + + +function main(){ + + testActivatePermission(); + testDeactivatePermission(); + +} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/BUILD.gn b/interfaces/kits/taihe/fileuri/BUILD.gn new file mode 100644 index 000000000..5f655dd9d --- /dev/null +++ b/interfaces/kits/taihe/fileuri/BUILD.gn @@ -0,0 +1,85 @@ +import("//build/config/components/ets_frontend/ets2abc_config.gni") +import("//build/ohos.gni") +import("//build/ohos/taihe_idl/taihe.gni") +import("//foundation/filemanagement/app_file_service/app_file_service.gni") + +part_name = "app_file_service" +subsystem_name = "filemanagement" +taihe_generated_file_path = "$taihe_file_path/out/$subsystem_name/$part_name/fileuri" + +copy_taihe_idl("copy_taihe") { + sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe" ] +} + +ohos_taihe("run_taihe") { + taihe_generated_file_path = "$taihe_generated_file_path" + deps = [ ":copy_taihe" ] + outputs = [ + "$taihe_generated_file_path/src/ohos.file.fileuri.ani.cpp", + "$taihe_generated_file_path/src/ohos.file.fileuri.abi.c", + ] +} + +taihe_shared_library("file_fileuri_taihe") { + taihe_generated_file_path = "$taihe_generated_file_path" + subsystem_name = "$subsystem_name" + part_name = "$part_name" + + include_dirs = [ + "include", + "${app_file_service_path}/interfaces/common/include", + "${app_file_service_path}/interfaces/common/include/log.h", + "${app_file_service_path}/interfaces/innerkits/native/file_uri/include", + "${app_file_service_path}/interfaces/kits/ndk/fileshare/include" + ] + + sources = get_target_outputs(":run_taihe") + sources += [ + "src/ani_constructor.cpp", + "src/fileuri_taihe.cpp" + ] + + deps = [ + ":run_taihe", + "${app_file_service_path}/interfaces/innerkits/native:fileuri_native", + ] + + external_deps = [ + "hilog:libhilog", + "ability_base:zuri", + ] +} + +generate_static_abc("file_fileuri_taihe_abc") { + base_url = "$taihe_generated_file_path" + files = [ "$taihe_generated_file_path/@ohos.file.fileuri.ets" ] + is_boot_abc = "True" + device_dst_file = "/system/framework/file_fileuri_taihe_abc.abc" + dependencies = [ ":run_taihe" ] +} + +generate_static_abc("file_fileuri_test") { + base_url = "${app_file_service_path}/interfaces/kits/taihe/fileuri/test" + files = [ + "${app_file_service_path}/interfaces/kits/taihe/fileuri/test/test_main.ets", + ] + is_boot_abc = "True" + device_dst_file = "/system/framework/file_fileuri_test.abc" +} + +ohos_prebuilt_etc("file_fileuri_etc") { + source = "$target_out_dir/file_fileuri_taihe_abc.abc" + module_install_dir = "framework" + part_name = "app_file_service" + subsystem_name = "filemanagement" + deps = [ + ":file_fileuri_taihe_abc", + ] +} + +group("afs_fileuri_taihe") { + deps = [ + ":file_fileuri_taihe", + ":file_fileuri_etc", + ] +} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe new file mode 100644 index 000000000..ba2fb92ab --- /dev/null +++ b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe @@ -0,0 +1,16 @@ +@!namespace("@ohos.file.fileuri", "fileUri") + +@!sts_inject(""" +static { loadLibrary("file_fileuri_taihe.z"); } +""") + +@class +interface FileUri { + @get("name") + getName(): String; +} + +@ctor("FileUri") +function makeFileUri(name :String): FileUri; + +function getUriFromPath(path: String): String; \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h new file mode 100644 index 000000000..008382764 --- /dev/null +++ b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h @@ -0,0 +1,47 @@ +/* + * 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. + */ + +#ifndef INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H +#define INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H + +#include "ohos.file.fileuri.proj.hpp" +#include "ohos.file.fileuri.impl.hpp" +#include "taihe/runtime.hpp" +#include "stdexcept" +#include "file_uri.h" + +namespace ANI::fileUri { +using namespace taihe; +using namespace ohos::file::fileuri; + +class FileUriImpl { +public: + FileUriImpl() = delete; + + FileUriImpl(string_view name); + + string getName(); + +private: + OHOS::Uri uri_; +}; + +FileUri makeFileUri(string_view name); + +string getUriFromPath(string_view path); + +} + +#endif // INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp new file mode 100644 index 000000000..ccd336fb8 --- /dev/null +++ b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp @@ -0,0 +1,28 @@ +/* + * 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. + */ + +#include "ohos.file.fileuri.ani.hpp" +ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { + ani_env *env; + if (ANI_OK != vm->GetEnv(ANI_VERSION_1, &env)) { + return ANI_ERROR; + } + if (ANI_OK != ohos::file::fileuri::ANIRegister(env)) { + std::cerr << "Error from ohos::file::fileuri::ANIRegister" << std::endl; + return ANI_ERROR; + } + *result = ANI_VERSION_1; + return ANI_OK; +} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp new file mode 100644 index 000000000..a5bd49aa8 --- /dev/null +++ b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp @@ -0,0 +1,63 @@ +/* + * 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. + */ + +#include "fileuri_taihe.h" + +#include "common_func.h" +#include "sandbox_helper.h" + +using namespace ANI::fileUri; + +namespace ANI::fileUri { + +const std::string FILE_SCHEME_PREFIX_TAIHE = "file://"; + +FileUriImpl::FileUriImpl(string_view name) +: uri_((std::string(name.c_str()).find(FILE_SCHEME_PREFIX_TAIHE) == 0) ? std::string(name.c_str()) +: OHOS::AppFileService::CommonFunc::GetUriFromPath(std::string(name.c_str()))) +{ + +} + +string FileUriImpl::getName() { +std::string sandboxPath = OHOS::AppFileService::SandboxHelper::Decode(uri_.GetPath()); + size_t posLast = sandboxPath.find_last_of("/"); + if (posLast == std::string::npos) { + return ""; + } + + if (posLast == (sandboxPath.size() - 1)) { + return ""; + } + + return sandboxPath.substr(posLast + 1); + +} + + +FileUri makeFileUri(string_view name) { + return make_holder(name); +} + +string getUriFromPath(string_view path) { + const std::string strPath = path.c_str(); + std::string uri = OHOS::AppFileService::CommonFunc::GetUriFromPath(strPath); + + return uri; +} +} // namespace ANI::fileUri + +TH_EXPORT_CPP_API_makeFileUri(makeFileUri); +TH_EXPORT_CPP_API_getUriFromPath(getUriFromPath); \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/test/test_main.ets b/interfaces/kits/taihe/fileuri/test/test_main.ets new file mode 100644 index 000000000..09bd1ee96 --- /dev/null +++ b/interfaces/kits/taihe/fileuri/test/test_main.ets @@ -0,0 +1,38 @@ +import fileUri from '@ohos.file.fileuri'; + +function main() +{ + test_GetUriFromPath_000(); + test_GetUriFromPath_001(); +} + +function test_GetUriFromPath_000() +{ + try { + let path = "/data/storage/el2/base/haps/entry/files/sync.jpg"; + let uri = fileUri.getUriFromPath(path); + let result = "file:///data/storage/el2/base/haps/entry/files/sync.jpg" + console.log("test_GetUriFromPath_000 uri:" + uri); + console.log("test_GetUriFromPath_000 result:" + result); + if (uri == result) { + console.log("test_GetUriFromPath_001 SUCCESS"); + } + } catch (err) { + console.log('test_FileUri_GetUriFromPath_000 has failed for ' + err); + } +} + +function test_GetUriFromPath_001() +{ + try { + let uri = fileUri.getUriFromPath(""); + let result = "file://"; + console.log("test__GetUriFromPath_001 uri:" + uri); + console.log("test__GetUriFromPath_001 result:" + result); + if (uri == result) { + console.log("test_GetUriFromPath_001 SUCCESS"); + } + } catch (err) { + console.log('test_GetUriFromPath_001 FAILED: ' + err); + } +} \ No newline at end of file -- Gitee From dfcc0cb84dc02ee53368f1d7f364a77b6fca9911 Mon Sep 17 00:00:00 2001 From: BrainL Date: Fri, 2 May 2025 16:47:15 +0800 Subject: [PATCH 02/10] Delete fetch Signed-off-by: BrainL --- 1.patch | 922 ----------------------------------------------- afs_change.patch | 0 2 files changed, 922 deletions(-) delete mode 100644 1.patch delete mode 100644 afs_change.patch diff --git a/1.patch b/1.patch deleted file mode 100644 index c4af33fa2..000000000 --- a/1.patch +++ /dev/null @@ -1,922 +0,0 @@ -diff --git a/afs_change.patch b/afs_change.patch -new file mode 100644 -index 00000000..e69de29b -diff --git a/bundle.json b/bundle.json -index e8b3be68..3355df8c 100644 ---- a/bundle.json -+++ b/bundle.json -@@ -72,7 +72,9 @@ - "//foundation/filemanagement/app_file_service/interfaces/kits/ani/file_uri:fileuri_ani_package", - "//foundation/filemanagement/app_file_service/interfaces/kits/ndk/fileuri/src:ohfileuri", - "//foundation/filemanagement/app_file_service/interfaces/kits/ndk/fileshare/src:ohfileshare", -- "//foundation/filemanagement/app_file_service/frameworks/native/backup_ext/ani:backup_ext_ani_package" -+ "//foundation/filemanagement/app_file_service/frameworks/native/backup_ext/ani:backup_ext_ani_package", -+ "//foundation/filemanagement/app_file_service/interfaces/kits/taihe/fileuri:afs_fileuri_taihe", -+ "//foundation/filemanagement/app_file_service/interfaces/kits/taihe/fileshare:afs_fileshare_taihe" - ], - "service_group": [ - "//foundation/filemanagement/app_file_service:tgt_backup_extension", -diff --git a/interfaces/kits/taihe/fileshare/BUILD.gn b/interfaces/kits/taihe/fileshare/BUILD.gn -new file mode 100644 -index 00000000..5bd9cf04 ---- /dev/null -+++ b/interfaces/kits/taihe/fileshare/BUILD.gn -@@ -0,0 +1,86 @@ -+import("//build/config/components/ets_frontend/ets2abc_config.gni") -+import("//build/ohos.gni") -+import("//build/ohos/taihe_idl/taihe.gni") -+import("//foundation/filemanagement/app_file_service/app_file_service.gni") -+ -+part_name = "app_file_service" -+subsystem_name = "filemanagement" -+taihe_generated_file_path = "$taihe_file_path/out/$subsystem_name/$part_name/fileshare" -+ -+copy_taihe_idl("copy_taihe") { -+ sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe" ] -+} -+ -+ohos_taihe("run_taihe") { -+ taihe_generated_file_path = "$taihe_generated_file_path" -+ deps = [ ":copy_taihe" ] -+ outputs = [ -+ "$taihe_generated_file_path/src/ohos.fileshare.ani.cpp", -+ "$taihe_generated_file_path/src/ohos.fileshare.abi.c", -+ ] -+} -+ -+taihe_shared_library("file_share_taihe") { -+ taihe_generated_file_path = "$taihe_generated_file_path" -+ subsystem_name = "filemanagement" -+ part_name = "app_file_service" -+ -+ include_dirs = [ -+ "include", -+ "${app_file_service_path}/interfaces/common/include/log.h", -+ "${app_file_service_path}/interfaces/innerkits/native/file_share/include", -+ "${app_file_service_path}/interfaces/kits/ndk/fileshare/include" -+ ] -+ -+ sources = get_target_outputs(":run_taihe") -+ sources += [ -+ "src/ani_constructor.cpp", -+ "src/grant_permissons.cpp" -+ ] -+ -+ deps = [ -+ ":run_taihe", -+ "${app_file_service_path}/interfaces/innerkits/native:fileshare_native", -+ ] -+ -+ external_deps = [ -+ "hilog:libhilog", -+ "hitrace:hitrace_meter", -+ ] -+} -+ -+generate_static_abc("file_share_taihe_abc") { -+ base_url = "$taihe_generated_file_path" -+ files = [ "$taihe_generated_file_path/@ohos.fileshare.ets" ] -+ is_boot_abc = "True" -+ device_dst_file = "/system/framework/file_share_taihe_abc.abc" -+ dependencies = [ ":run_taihe" ] -+} -+ -+generate_static_abc("file_share_taihe_test_abc"){ -+ base_url = "${app_file_service_path}/interfaces/kits/taihe/fileshare/test" -+ files=[ -+ "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets", -+ "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets", -+ "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_main.ets", -+ ] -+ is_boot_abc = "True" -+ device_dst_file = "/system/framework/file_share_taihe_test_abc.abc" -+} -+ -+ohos_prebuilt_etc("file_share_etc") { -+ source = "$target_out_dir/file_share_taihe_abc.abc" -+ module_install_dir = "framework" -+ part_name = "app_file_service" -+ subsystem_name = "filemanagement" -+ deps = [ -+ ":file_share_taihe_abc", -+ ] -+} -+ -+group("afs_fileshare_taihe") { -+ deps = [ -+ ":file_share_taihe", -+ ":file_share_etc", -+ ] -+} -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe -new file mode 100644 -index 00000000..10e28d00 ---- /dev/null -+++ b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe -@@ -0,0 +1,35 @@ -+@!namespace("@ohos.fileshare","fileShare") -+ -+@!sts_inject(""" -+static { loadLibrary("file_share_taihe.z"); } -+""") -+ -+enum OperationMode:i32{ -+ READ_MODE=1, -+ WRITE_MODE=2, -+} -+ -+struct PolicyInfo{ -+ uri:String; -+ operationMode:i32; -+} -+ -+function makePolicyInfo(uri:String,operationMode:i32): PolicyInfo; -+ -+enum PolicyErrorCode:i32{ -+ PERSISTENCE_FORBIDDEN = 1, -+ INVALID_MODE = 2, -+ INVALID_PATH = 3, -+ PERMISSION_NOT_PERSISTED = 4, -+} -+ -+@gen_promise("activatePermission") -+function activatePermissionSync( -+ policies: Array -+): void; -+ -+ -+@gen_promise("deactivatePermission") -+function deactivatePermissionSync( -+ policies: Array -+): void; -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h -new file mode 100644 -index 00000000..3c9e8581 ---- /dev/null -+++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h -@@ -0,0 +1,40 @@ -+/* -+ * 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. -+ */ -+ -+ #ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H -+ #define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H -+ -+#include "ohos.fileshare.proj.hpp" -+#include "ohos.fileshare.impl.hpp" -+#include "taihe/runtime.hpp" -+#include "file_permission.h" -+ -+namespace ANI::fileShare { -+using namespace taihe; -+using namespace ohos::fileshare; -+ -+ PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode); -+ void activatePermissionSync(array_view policies); -+ void deactivatePermissionSync(array_view policies); -+ -+ struct PolicyErrorArgs { -+ std::deque errorResults; -+ int32_t errNo = 0; -+ ~PolicyErrorArgs() = default; -+ }; -+ -+} // namespace -+ -+#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp -new file mode 100644 -index 00000000..1571fe27 ---- /dev/null -+++ b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp -@@ -0,0 +1,32 @@ -+ /* -+ * 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. -+ */ -+#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H -+#define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H -+ -+#include "ohos.fileshare.ani.hpp" -+ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { -+ ani_env *env; -+ if (ANI_OK != vm->GetEnv(ANI_VERSION_1, &env)) { -+ return ANI_ERROR; -+ } -+ if (ANI_OK != ohos::fileshare::ANIRegister(env)) { -+ std::cerr << "Error from ohos::fileshare::ANIRegister" << std::endl; -+ return ANI_ERROR; -+ } -+ *result = ANI_VERSION_1; -+ return ANI_OK; -+} -+ -+#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp -new file mode 100644 -index 00000000..84702f67 ---- /dev/null -+++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp -@@ -0,0 +1,108 @@ -+ /* -+ * 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. -+ */ -+ -+ #include "grant_permissons.h" -+ #include "log.h" -+ #include "oh_file_share.h" -+ #include -+ -+ -+ using namespace taihe; -+ using namespace ANI::fileShare; -+ -+ namespace ANI::fileShare { -+ -+ PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) -+ { -+ return PolicyInfo{uri, operationMode}; -+ } -+ -+ int32_t GetUriPoliciesArg(array_view policies, -+ std::vector &uriPolicies) -+ { -+ uint32_t count = policies.size(); -+ -+ if (count > OHOS::AppFileService::MAX_ARRAY_SIZE) { -+ LOGE("The length of the array is extra-long"); -+ return E_PARAMS; -+ } -+ -+ for(uint32_t i = 0; i < count; i++) { -+ OHOS::AppFileService::UriPolicyInfo uriPolicy; -+ uriPolicy.uri = policies[i].uri; -+ uriPolicy.mode = policies[i].operationMode; -+ if(uriPolicy.uri == "") { -+ LOGE("URI is empty"); -+ return E_PARAMS; -+ } -+ if(uriPolicy.mode != READ_MODE && -+ uriPolicy.mode != (READ_MODE | WRITE_MODE)) { -+ LOGE("Invalid operation mode"); -+ return E_PARAMS; -+ } -+ uriPolicies.emplace_back(uriPolicy); -+ } -+ return E_NO_ERROR; -+ } -+ -+ void activatePermissionSync(array_view policies) -+ { -+ std::vector uriPolicies; -+ if(GetUriPoliciesArg(policies , uriPolicies)) { -+ LOGE("Failed to get URI policies"); -+ set_business_error(E_PARAMS, "Failed to get URI policies"); -+ } -+ -+ std::shared_ptr arg = std::make_shared(); -+ if (arg == nullptr) { -+ LOGE("PolicyErrorArgs make make_shared failed"); -+ set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); -+ } -+ -+ arg->errNo=OHOS::AppFileService::FilePermission::ActivatePermission(uriPolicies, arg->errorResults); -+ if(arg->errNo) { -+ LOGE("Activation failed" ); -+ set_business_error(arg->errNo, "Activation failed"); -+ } -+ } -+ -+ void deactivatePermissionSync(array_view policies) -+ { -+ std::vector uriPolicies; -+ if(GetUriPoliciesArg(policies, uriPolicies)) { -+ LOGE("Failed to get URI policies"); -+ set_business_error(E_PARAMS, "Failed to get URI policies"); -+ } -+ -+ std::shared_ptr arg = std::make_shared(); -+ if (arg == nullptr) { -+ LOGE("PolicyErrorArgs make make_shared failed"); -+ set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); -+ } -+ -+ arg->errNo=OHOS::AppFileService::FilePermission::DeactivatePermission(uriPolicies, arg->errorResults); -+ if(arg->errNo) { -+ LOGE("Deactivation failed"); -+ set_business_error(arg->errNo, "Deactivation failed"); -+ } -+ } -+ } // namespace -+ -+ // NOLINTBEGIN -+ TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); -+ TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); -+ TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); -+ // NOLINTEND -+ -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets b/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets -new file mode 100644 -index 00000000..0641dee7 ---- /dev/null -+++ b/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets -@@ -0,0 +1,109 @@ -+import fileShare from '@ohos.fileshare'; -+ -+/** -+* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0100 -+* @tc.name FileShare_activatePermission_001 -+* @tc.desc Test activatePermission() interfaces -+* Test normal uri and OperationMode is READ_MODE. -+* @tc.size MEDIUM -+* @tc.type Function -+* @tc.level Level 0 -+* @tc.require -+*/ -+function FileShare_activatePermission_001() -+{ -+ let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_001.txt"; -+ let uri = fileStr; -+ let policyInfo : fileShare.PolicyInfo = { -+ uri: uri, -+ operationMode: fileShare.OperationMode.READ_MODE, -+ }; -+ let policies = [policyInfo]; -+ -+ fileShare.activatePermission(policies).then(() => { -+ console.log("FileShare_activatePermission_001 successfully"); -+ }).catch((err) => { -+ console.log("FileShare_activatePermission_001 failed with error message: " + err.message + ", error code: " + err.code); -+ }); -+ -+} -+ -+ -+/** -+* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0200 -+* @tc.name FileShare_activatePermission_002 -+* @tc.desc Test activatePermission() interfaces -+* Test normal uri and OperationMode is READ_MODE and WRITE_MODE . -+* @tc.size MEDIUM -+* @tc.type Function -+* @tc.level Level 0 -+* @tc.require -+*/ -+function FileShare_activatePermission_002() -+{ -+ -+ let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_002.txt"; -+ let uri = fileStr; -+ let policyInfo: fileShare.PolicyInfo ={ -+ uri: uri, -+ operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, -+ }; -+ let policies = [policyInfo]; -+ -+ fileShare.activatePermission(policies).then(() => { -+ console.info("FileShare_activatePermission_002 successfully"); -+ }).catch((err) => { -+ console.info("FileShare_activatePermission_002 failed with error message: " + err.message + ", error code: " + err.code); -+ }); -+} -+ -+/** -+* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0300 -+* @tc.name FileShare_activatePermission_003 -+* @tc.desc Test activatePermission() interfaces -+* Test INVALID_PATH uri and OperationMode is READ_MODE. -+* @tc.size MEDIUM -+* @tc.type Function -+* @tc.level Level 3 -+* @tc.require -+*/ -+function FileShare_activatePermission_003() -+{ -+ -+ let fileStr1 = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_003.txt"; -+ let uri1 = fileStr1; -+ let policyInfo1 : fileShare.PolicyInfo = { -+ uri: uri1, -+ operationMode: fileShare.OperationMode.READ_MODE, -+ }; -+ -+ let fileStr2 = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_00301.txt"; -+ let uri2 = fileStr2; -+ let policyInfo2 : fileShare.PolicyInfo = { -+ uri: uri2, -+ operationMode: fileShare.OperationMode.READ_MODE, -+ }; -+ let policies = [policyInfo1, policyInfo2]; -+ -+ fileShare.activatePermission(policies).then(() => { -+ console.info("FileShare_activatePermission_003 successfully"); -+ }).catch((err) => { -+ console.info("FileShare_activatePermission_003 failed with error message: " + err.message + ", error code: " + err.code); -+ }); -+ -+} -+ -+export function testActivatePermission() -+{ -+ console.log("FileShare_activatePermission_001 test begin"); -+ FileShare_activatePermission_001(); -+ console.log("FileShare_activatePermission_001 test end"); -+ -+ console.log("FileShare_activatePermission_002 test begin"); -+ FileShare_activatePermission_002(); -+ console.log("FileShare_activatePermission_002 test end"); -+ -+ console.log("FileShare_activatePermission_003 test begin"); -+ FileShare_activatePermission_003(); -+ console.log("FileShare_activatePermission_003 test end"); -+} -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets b/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets -new file mode 100644 -index 00000000..7320526c ---- /dev/null -+++ b/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets -@@ -0,0 +1,108 @@ -+import fileShare from '@ohos.fileshare'; -+ -+/** -+* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0100 -+* @tc.name FileShare_deactivatePermission_001 -+* @tc.desc Test deactivatePermission() interfaces -+* Test normal uri and OperationMode is READ_MODE. -+* @tc.size MEDIUM -+* @tc.type Function -+* @tc.level Level 0 -+* @tc.require -+*/ -+function FileShare_deactivatePermission_001() -+{ -+ let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_001.txt"; -+ let uri = fileStr; -+ let policyInfo : fileShare.PolicyInfo = { -+ uri: uri, -+ operationMode: fileShare.OperationMode.READ_MODE, -+ }; -+ let policies = [policyInfo]; -+ -+ fileShare.deactivatePermission(policies).then(() => { -+ console.log("FileShare_deactivatePermission_001 successfully"); -+ -+ }).catch((err) => { -+ console.log("FileShare_deactivatePermission_001 failed with error message " + err.message + ", error code: " + err.code); -+ -+ }); -+ -+} -+ -+/** -+* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0200 -+* @tc.name FileShare_deactivatePermission_002 -+* @tc.desc Test deactivatePermission() interfaces -+* Test normal uri and OperationMode is READ_MODE and WRITE_MODE . -+* @tc.size MEDIUM -+* @tc.type Function -+* @tc.level Level 0 -+* @tc.require -+*/ -+function FileShare_deactivatePermission_002() -+{ -+ let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_002.txt"; -+ let uri = fileStr; -+ let policyInfo: fileShare.PolicyInfo ={ -+ uri: uri, -+ operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, -+ }; -+ let policies = [policyInfo]; -+ -+ fileShare.deactivatePermission(policies).then(() => { -+ console.log("FileShare_deactivatePermission_002 successfully"); -+ }).catch((err) => { -+ console.log("FileShare_deactivatePermission_002 failed with error message " + err.message + ", error code: " + err.code); -+ }); -+} -+ -+/** -+* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0300 -+* @tc.name FileShare_deactivatePermission_003 -+* @tc.desc Test deactivatePermission() interfaces -+* Test INVALID_PATH uri and OperationMode is READ_MODE. -+* @tc.size MEDIUM -+* @tc.type Function -+* @tc.level Level 3 -+* @tc.require -+*/ -+function FileShare_deactivatePermission_003() -+{ -+ let fileStr1 = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_003.txt"; -+ let uri1 = fileStr1 ; -+ let policyInfo1 : fileShare.PolicyInfo= { -+ uri: uri1, -+ operationMode: fileShare.OperationMode.READ_MODE, -+ }; -+ -+ let fileStr2 = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_00301.txt"; -+ let uri2 = fileStr2; -+ let policyInfo2 : fileShare.PolicyInfo = { -+ uri: uri2, -+ operationMode: fileShare.OperationMode.READ_MODE, -+ }; -+ let policies = [policyInfo1, policyInfo2]; -+ -+ fileShare.deactivatePermission(policies).then(() => { -+ console.log("FileShare_deactivatePermission_003 successfully"); -+ }).catch((err) => { -+ console.info("FileShare_deactivatePermission_003 failed with error message: " + err.message + ", error code: " + err.code); -+ }); -+ -+} -+ -+export function testDeactivatePermission() -+{ -+ console.log("FileShare_deactivatePermission_001 test begin"); -+ FileShare_deactivatePermission_001(); -+ console.log("FileShare_deactivatePermission_001 test end"); -+ -+ console.log("FileShare_deactivatePermission_002 test begin"); -+ FileShare_deactivatePermission_002(); -+ console.log("FileShare_deactivatePermission_002 test end"); -+ -+ console.log("FileShare_deactivatePermission_003 test begin"); -+ FileShare_deactivatePermission_003(); -+ console.log("FileShare_deactivatePermission_003 test end"); -+} -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileshare/test/test_main.ets b/interfaces/kits/taihe/fileshare/test/test_main.ets -new file mode 100644 -index 00000000..a6076e0e ---- /dev/null -+++ b/interfaces/kits/taihe/fileshare/test/test_main.ets -@@ -0,0 +1,11 @@ -+import {testActivatePermission} from "./test_activatePermission"; -+import {testDeactivatePermission} from "./test_deactivatePermission"; -+ -+ -+ -+function main(){ -+ -+ testActivatePermission(); -+ testDeactivatePermission(); -+ -+} -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileuri/BUILD.gn b/interfaces/kits/taihe/fileuri/BUILD.gn -new file mode 100644 -index 00000000..5f655dd9 ---- /dev/null -+++ b/interfaces/kits/taihe/fileuri/BUILD.gn -@@ -0,0 +1,85 @@ -+import("//build/config/components/ets_frontend/ets2abc_config.gni") -+import("//build/ohos.gni") -+import("//build/ohos/taihe_idl/taihe.gni") -+import("//foundation/filemanagement/app_file_service/app_file_service.gni") -+ -+part_name = "app_file_service" -+subsystem_name = "filemanagement" -+taihe_generated_file_path = "$taihe_file_path/out/$subsystem_name/$part_name/fileuri" -+ -+copy_taihe_idl("copy_taihe") { -+ sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe" ] -+} -+ -+ohos_taihe("run_taihe") { -+ taihe_generated_file_path = "$taihe_generated_file_path" -+ deps = [ ":copy_taihe" ] -+ outputs = [ -+ "$taihe_generated_file_path/src/ohos.file.fileuri.ani.cpp", -+ "$taihe_generated_file_path/src/ohos.file.fileuri.abi.c", -+ ] -+} -+ -+taihe_shared_library("file_fileuri_taihe") { -+ taihe_generated_file_path = "$taihe_generated_file_path" -+ subsystem_name = "$subsystem_name" -+ part_name = "$part_name" -+ -+ include_dirs = [ -+ "include", -+ "${app_file_service_path}/interfaces/common/include", -+ "${app_file_service_path}/interfaces/common/include/log.h", -+ "${app_file_service_path}/interfaces/innerkits/native/file_uri/include", -+ "${app_file_service_path}/interfaces/kits/ndk/fileshare/include" -+ ] -+ -+ sources = get_target_outputs(":run_taihe") -+ sources += [ -+ "src/ani_constructor.cpp", -+ "src/fileuri_taihe.cpp" -+ ] -+ -+ deps = [ -+ ":run_taihe", -+ "${app_file_service_path}/interfaces/innerkits/native:fileuri_native", -+ ] -+ -+ external_deps = [ -+ "hilog:libhilog", -+ "ability_base:zuri", -+ ] -+} -+ -+generate_static_abc("file_fileuri_taihe_abc") { -+ base_url = "$taihe_generated_file_path" -+ files = [ "$taihe_generated_file_path/@ohos.file.fileuri.ets" ] -+ is_boot_abc = "True" -+ device_dst_file = "/system/framework/file_fileuri_taihe_abc.abc" -+ dependencies = [ ":run_taihe" ] -+} -+ -+generate_static_abc("file_fileuri_test") { -+ base_url = "${app_file_service_path}/interfaces/kits/taihe/fileuri/test" -+ files = [ -+ "${app_file_service_path}/interfaces/kits/taihe/fileuri/test/test_main.ets", -+ ] -+ is_boot_abc = "True" -+ device_dst_file = "/system/framework/file_fileuri_test.abc" -+} -+ -+ohos_prebuilt_etc("file_fileuri_etc") { -+ source = "$target_out_dir/file_fileuri_taihe_abc.abc" -+ module_install_dir = "framework" -+ part_name = "app_file_service" -+ subsystem_name = "filemanagement" -+ deps = [ -+ ":file_fileuri_taihe_abc", -+ ] -+} -+ -+group("afs_fileuri_taihe") { -+ deps = [ -+ ":file_fileuri_taihe", -+ ":file_fileuri_etc", -+ ] -+} -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe -new file mode 100644 -index 00000000..ba2fb92a ---- /dev/null -+++ b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe -@@ -0,0 +1,16 @@ -+@!namespace("@ohos.file.fileuri", "fileUri") -+ -+@!sts_inject(""" -+static { loadLibrary("file_fileuri_taihe.z"); } -+""") -+ -+@class -+interface FileUri { -+ @get("name") -+ getName(): String; -+} -+ -+@ctor("FileUri") -+function makeFileUri(name :String): FileUri; -+ -+function getUriFromPath(path: String): String; -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h -new file mode 100644 -index 00000000..00838276 ---- /dev/null -+++ b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h -@@ -0,0 +1,47 @@ -+/* -+ * 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. -+ */ -+ -+#ifndef INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H -+#define INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H -+ -+#include "ohos.file.fileuri.proj.hpp" -+#include "ohos.file.fileuri.impl.hpp" -+#include "taihe/runtime.hpp" -+#include "stdexcept" -+#include "file_uri.h" -+ -+namespace ANI::fileUri { -+using namespace taihe; -+using namespace ohos::file::fileuri; -+ -+class FileUriImpl { -+public: -+ FileUriImpl() = delete; -+ -+ FileUriImpl(string_view name); -+ -+ string getName(); -+ -+private: -+ OHOS::Uri uri_; -+}; -+ -+FileUri makeFileUri(string_view name); -+ -+string getUriFromPath(string_view path); -+ -+} -+ -+#endif // INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp -new file mode 100644 -index 00000000..ccd336fb ---- /dev/null -+++ b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp -@@ -0,0 +1,28 @@ -+/* -+ * 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. -+ */ -+ -+#include "ohos.file.fileuri.ani.hpp" -+ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { -+ ani_env *env; -+ if (ANI_OK != vm->GetEnv(ANI_VERSION_1, &env)) { -+ return ANI_ERROR; -+ } -+ if (ANI_OK != ohos::file::fileuri::ANIRegister(env)) { -+ std::cerr << "Error from ohos::file::fileuri::ANIRegister" << std::endl; -+ return ANI_ERROR; -+ } -+ *result = ANI_VERSION_1; -+ return ANI_OK; -+} -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp -new file mode 100644 -index 00000000..a5bd49aa ---- /dev/null -+++ b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp -@@ -0,0 +1,63 @@ -+/* -+ * 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. -+ */ -+ -+#include "fileuri_taihe.h" -+ -+#include "common_func.h" -+#include "sandbox_helper.h" -+ -+using namespace ANI::fileUri; -+ -+namespace ANI::fileUri { -+ -+const std::string FILE_SCHEME_PREFIX_TAIHE = "file://"; -+ -+FileUriImpl::FileUriImpl(string_view name) -+: uri_((std::string(name.c_str()).find(FILE_SCHEME_PREFIX_TAIHE) == 0) ? std::string(name.c_str()) -+: OHOS::AppFileService::CommonFunc::GetUriFromPath(std::string(name.c_str()))) -+{ -+ -+} -+ -+string FileUriImpl::getName() { -+std::string sandboxPath = OHOS::AppFileService::SandboxHelper::Decode(uri_.GetPath()); -+ size_t posLast = sandboxPath.find_last_of("/"); -+ if (posLast == std::string::npos) { -+ return ""; -+ } -+ -+ if (posLast == (sandboxPath.size() - 1)) { -+ return ""; -+ } -+ -+ return sandboxPath.substr(posLast + 1); -+ -+} -+ -+ -+FileUri makeFileUri(string_view name) { -+ return make_holder(name); -+} -+ -+string getUriFromPath(string_view path) { -+ const std::string strPath = path.c_str(); -+ std::string uri = OHOS::AppFileService::CommonFunc::GetUriFromPath(strPath); -+ -+ return uri; -+} -+} // namespace ANI::fileUri -+ -+TH_EXPORT_CPP_API_makeFileUri(makeFileUri); -+TH_EXPORT_CPP_API_getUriFromPath(getUriFromPath); -\ No newline at end of file -diff --git a/interfaces/kits/taihe/fileuri/test/test_main.ets b/interfaces/kits/taihe/fileuri/test/test_main.ets -new file mode 100644 -index 00000000..09bd1ee9 ---- /dev/null -+++ b/interfaces/kits/taihe/fileuri/test/test_main.ets -@@ -0,0 +1,38 @@ -+import fileUri from '@ohos.file.fileuri'; -+ -+function main() -+{ -+ test_GetUriFromPath_000(); -+ test_GetUriFromPath_001(); -+} -+ -+function test_GetUriFromPath_000() -+{ -+ try { -+ let path = "/data/storage/el2/base/haps/entry/files/sync.jpg"; -+ let uri = fileUri.getUriFromPath(path); -+ let result = "file:///data/storage/el2/base/haps/entry/files/sync.jpg" -+ console.log("test_GetUriFromPath_000 uri:" + uri); -+ console.log("test_GetUriFromPath_000 result:" + result); -+ if (uri == result) { -+ console.log("test_GetUriFromPath_001 SUCCESS"); -+ } -+ } catch (err) { -+ console.log('test_FileUri_GetUriFromPath_000 has failed for ' + err); -+ } -+} -+ -+function test_GetUriFromPath_001() -+{ -+ try { -+ let uri = fileUri.getUriFromPath(""); -+ let result = "file://"; -+ console.log("test__GetUriFromPath_001 uri:" + uri); -+ console.log("test__GetUriFromPath_001 result:" + result); -+ if (uri == result) { -+ console.log("test_GetUriFromPath_001 SUCCESS"); -+ } -+ } catch (err) { -+ console.log('test_GetUriFromPath_001 FAILED: ' + err); -+ } -+} -\ No newline at end of file diff --git a/afs_change.patch b/afs_change.patch deleted file mode 100644 index e69de29bb..000000000 -- Gitee From 3d2920184aa3f723c840f0a699c83c767e18662f Mon Sep 17 00:00:00 2001 From: BrainL Date: Fri, 2 May 2025 17:02:56 +0800 Subject: [PATCH 03/10] fixed the code check Signed-off-by: BrainL --- interfaces/kits/taihe/fileshare/BUILD.gn | 15 +- .../taihe/fileshare/idl/ohos.fileshare.taihe | 15 ++ .../fileshare/include/grant_permissons.h | 14 +- .../taihe/fileshare/src/ani_constructor.cpp | 31 +-- .../taihe/fileshare/src/grant_permissons.cpp | 187 +++++++++--------- .../taihe/fileuri/idl/ohos.file.fileuri.taihe | 15 ++ .../taihe/fileuri/include/fileuri_taihe.h | 2 +- .../taihe/fileuri/src/ani_constructor.cpp | 3 +- .../kits/taihe/fileuri/src/fileuri_taihe.cpp | 19 +- 9 files changed, 171 insertions(+), 130 deletions(-) diff --git a/interfaces/kits/taihe/fileshare/BUILD.gn b/interfaces/kits/taihe/fileshare/BUILD.gn index 5bd9cf044..a27fc8d90 100644 --- a/interfaces/kits/taihe/fileshare/BUILD.gn +++ b/interfaces/kits/taihe/fileshare/BUILD.gn @@ -1,3 +1,16 @@ +# 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. + import("//build/config/components/ets_frontend/ets2abc_config.gni") import("//build/ohos.gni") import("//build/ohos/taihe_idl/taihe.gni") @@ -8,7 +21,7 @@ subsystem_name = "filemanagement" taihe_generated_file_path = "$taihe_file_path/out/$subsystem_name/$part_name/fileshare" copy_taihe_idl("copy_taihe") { - sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe" ] + sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe" ] } ohos_taihe("run_taihe") { diff --git a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe index 10e28d007..30772fcb4 100644 --- a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe +++ b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe @@ -1,3 +1,18 @@ +/* +* 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. +*/ + @!namespace("@ohos.fileshare","fileShare") @!sts_inject(""" diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h index 3c9e85811..6a9ccfc2d 100644 --- a/interfaces/kits/taihe/fileshare/include/grant_permissons.h +++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h @@ -13,12 +13,12 @@ * limitations under the License. */ - #ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H - #define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H - -#include "ohos.fileshare.proj.hpp" -#include "ohos.fileshare.impl.hpp" -#include "taihe/runtime.hpp" +#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H +#define FILEMANAGEMENT_APP_FILE_SERVICEACES_FILE_SHARE_TAIHE_GRANT_PERONS_H + +#include "ohos.fileshare.proj" +#include "oh.fileshare.impl.hpp" +#include "taihe/runtime" #include "file_permission.h" namespace ANI::fileShare { @@ -35,6 +35,6 @@ using namespace ohos::fileshare; ~PolicyErrorArgs() = default; }; -} // namespace +} //namespace ANI::fileShare #endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp index 1571fe27c..bafb68fdd 100644 --- a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp +++ b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp @@ -1,22 +1,23 @@ - /* - * 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. - */ +/* +* 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. +*/ #ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H #define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H #include "ohos.fileshare.ani.hpp" -ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { +ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) +{ ani_env *env; if (ANI_OK != vm->GetEnv(ANI_VERSION_1, &env)) { return ANI_ERROR; diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp index 84702f674..05e1e6e40 100644 --- a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -1,108 +1,105 @@ - /* - * 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. - */ +/* +* 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. +*/ - #include "grant_permissons.h" - #include "log.h" - #include "oh_file_share.h" - #include - - - using namespace taihe; - using namespace ANI::fileShare; - - namespace ANI::fileShare { +#include "grant_permissons.h" +#include "log.h" +#include "oh_file_share.h" +#include + +using namespace taihe; +using namespace ANI::fileShare; - PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) - { - return PolicyInfo{uri, operationMode}; - } +namespace ANI::fileShare { - int32_t GetUriPoliciesArg(array_view policies, - std::vector &uriPolicies) - { - uint32_t count = policies.size(); +PolicyInfo makePolicyInfo(string_view uri,int32_t operationMode) +{ + return PolicyInfo{uri, operationMode}; +} - if (count > OHOS::AppFileService::MAX_ARRAY_SIZE) { - LOGE("The length of the array is extra-long"); - return E_PARAMS; - } - - for(uint32_t i = 0; i < count; i++) { - OHOS::AppFileService::UriPolicyInfo uriPolicy; - uriPolicy.uri = policies[i].uri; - uriPolicy.mode = policies[i].operationMode; - if(uriPolicy.uri == "") { - LOGE("URI is empty"); - return E_PARAMS; - } - if(uriPolicy.mode != READ_MODE && - uriPolicy.mode != (READ_MODE | WRITE_MODE)) { - LOGE("Invalid operation mode"); - return E_PARAMS; - } - uriPolicies.emplace_back(uriPolicy); - } - return E_NO_ERROR; - } +int32_t GetUriPoliciesArg(array_view policies, + std::vector &uriPolicies) +{ + uint32_t count = policies.size(); + if (count > OHOS::AppFileService::MAX_ARRAY_SIZE) { + LOGE("The length of the array is extra-long"); + return E_PARAMS; + } + for (uint32_t i = 0; i < count; i++) { + OHOS::AppFileService::UriPolicyInfo uriPolicy; + uriPolicy.uri = policies[i].uri; + uriPolicy.mode = policies[i].operationMode; + if (uriPolicy.uri == "") { + LOGE("URI is empty"); + return E_PARAMS; + } + if (uriPolicy.mode != READ_MODE && + uriPolicy.mode != (READ_MODE | WRITE_MODE)) { + LOGE("Invalid operation mode"); + return E_PARAMS; + } + uriPolicies.emplace_back(uriPolicy); + } + return E_NO_ERROR; +} - void activatePermissionSync(array_view policies) - { - std::vector uriPolicies; - if(GetUriPoliciesArg(policies , uriPolicies)) { - LOGE("Failed to get URI policies"); - set_business_error(E_PARAMS, "Failed to get URI policies"); - } +void activatePermissionSync(array_view policies) +{ + std::vector uriPolicies; + if (GetUriPoliciesArg(policies,uriPolicies)) { + LOGE("Failed to get URI policies"); + set_business_error(E_PARAMS, "Failed to get URI policies"); + } - std::shared_ptr arg = std::make_shared(); - if (arg == nullptr) { - LOGE("PolicyErrorArgs make make_shared failed"); - set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); - } + std::shared_ptr arg = std::make_shared(); + if (arg == nullptr) { + LOGE("PolicyErrorArgs make make_shared failed"); + set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); + } - arg->errNo=OHOS::AppFileService::FilePermission::ActivatePermission(uriPolicies, arg->errorResults); - if(arg->errNo) { - LOGE("Activation failed" ); - set_business_error(arg->errNo, "Activation failed"); - } - } + arg->errNo = OHOS::AppFileService::FilePermission::ActivatePermission(uriPolicies, arg->errorResults); + if (arg->errNo) { + LOGE("Activation failed"); + set_business_error(arg->errNo, "Activation failed"); + } +} - void deactivatePermissionSync(array_view policies) - { - std::vector uriPolicies; - if(GetUriPoliciesArg(policies, uriPolicies)) { - LOGE("Failed to get URI policies"); - set_business_error(E_PARAMS, "Failed to get URI policies"); - } +void deactivatePermissionSync(array_view policies) +{ + std::vector uriPolicies; + if (GetUriPoliciesArg(policies, uriPolicies)) { + LOGE("Failed to get URI policies"); + set_business_error(E_PARAMS, "Failed to get URI policies"); + } - std::shared_ptr arg = std::make_shared(); - if (arg == nullptr) { - LOGE("PolicyErrorArgs make make_shared failed"); - set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); - } + std::shared_ptr arg = std::make_shared(); + if (arg == nullptr) { + LOGE("PolicyErrorArgs make make_shared failed"); + set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); + } - arg->errNo=OHOS::AppFileService::FilePermission::DeactivatePermission(uriPolicies, arg->errorResults); - if(arg->errNo) { - LOGE("Deactivation failed"); - set_business_error(arg->errNo, "Deactivation failed"); - } - } - } // namespace + arg->errNo = OHOS::AppFileService::FilePermission::DeactivatePermission(uriPolicies, arg->errorResults); + if (arg->errNo) { + LOGE("Deactivation failed"); + set_business_error(arg->errNo, "Deactivation failed"); + } +} +} // namespace - // NOLINTBEGIN - TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); - TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); - TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); +// NOLINTBEGIN +TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); +TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); +TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); // NOLINTEND \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe index ba2fb92ab..149baf051 100644 --- a/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe +++ b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe @@ -1,3 +1,18 @@ +/* +* 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. +*/ + @!namespace("@ohos.file.fileuri", "fileUri") @!sts_inject(""" diff --git a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h index 008382764..c4a1729bc 100644 --- a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h +++ b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h @@ -34,7 +34,7 @@ public: string getName(); -private: +private: OHOS::Uri uri_; }; diff --git a/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp index ccd336fb8..92647dd3e 100644 --- a/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp +++ b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp @@ -14,7 +14,8 @@ */ #include "ohos.file.fileuri.ani.hpp" -ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { +ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) +{ ani_env *env; if (ANI_OK != vm->GetEnv(ANI_VERSION_1, &env)) { return ANI_ERROR; diff --git a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp index a5bd49aa8..bf1db5efd 100644 --- a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp +++ b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp @@ -24,34 +24,33 @@ namespace ANI::fileUri { const std::string FILE_SCHEME_PREFIX_TAIHE = "file://"; -FileUriImpl::FileUriImpl(string_view name) -: uri_((std::string(name.c_str()).find(FILE_SCHEME_PREFIX_TAIHE) == 0) ? std::string(name.c_str()) -: OHOS::AppFileService::CommonFunc::GetUriFromPath(std::string(name.c_str()))) +FileUriImpl::FileUriImpl(string_view name) + : uri_((std::string(name.c_str()).find(FILE_SCHEME_PREFIX_TAIHE) == 0) ? std::string(name.c_str()) + : OHOS::AppFileService::CommonFunc::GetUriFromPath(std::string(name.c_str()))) { - } -string FileUriImpl::getName() { +string FileUriImpl::getName() +{ std::string sandboxPath = OHOS::AppFileService::SandboxHelper::Decode(uri_.GetPath()); size_t posLast = sandboxPath.find_last_of("/"); if (posLast == std::string::npos) { return ""; } - if (posLast == (sandboxPath.size() - 1)) { return ""; } - return sandboxPath.substr(posLast + 1); - } -FileUri makeFileUri(string_view name) { +FileUri makeFileUri(string_view name) +{ return make_holder(name); } -string getUriFromPath(string_view path) { +string getUriFromPath(string_view path) +{ const std::string strPath = path.c_str(); std::string uri = OHOS::AppFileService::CommonFunc::GetUriFromPath(strPath); -- Gitee From 9f943964b0f37e45b56f8c606098036a4da6ab7a Mon Sep 17 00:00:00 2001 From: BrainL Date: Fri, 2 May 2025 18:15:04 +0800 Subject: [PATCH 04/10] fixed code check Signed-off-by: BrainL --- .../fileshare/include/grant_permissons.h | 32 +++++++++---------- .../taihe/fileshare/src/ani_constructor.cpp | 1 + .../taihe/fileshare/src/grant_permissons.cpp | 6 ++-- interfaces/kits/taihe/fileuri/BUILD.gn | 13 ++++++++ 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h index 6a9ccfc2d..326ee9092 100644 --- a/interfaces/kits/taihe/fileshare/include/grant_permissons.h +++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h @@ -1,21 +1,21 @@ +#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H +#define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H + /* - * 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. - */ +* 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. +*/ -#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H -#define FILEMANAGEMENT_APP_FILE_SERVICEACES_FILE_SHARE_TAIHE_GRANT_PERONS_H - #include "ohos.fileshare.proj" #include "oh.fileshare.impl.hpp" #include "taihe/runtime" diff --git a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp index bafb68fdd..8b0f59748 100644 --- a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp +++ b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp @@ -16,6 +16,7 @@ #define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H #include "ohos.fileshare.ani.hpp" + ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { ani_env *env; diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp index 05e1e6e40..92bc49e87 100644 --- a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -23,7 +23,7 @@ using namespace ANI::fileShare; namespace ANI::fileShare { -PolicyInfo makePolicyInfo(string_view uri,int32_t operationMode) +PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) { return PolicyInfo{uri, operationMode}; } @@ -44,7 +44,7 @@ int32_t GetUriPoliciesArg(array_view policies, LOGE("URI is empty"); return E_PARAMS; } - if (uriPolicy.mode != READ_MODE && + if (uriPolicy.mode != READ_MODE && uriPolicy.mode != (READ_MODE | WRITE_MODE)) { LOGE("Invalid operation mode"); return E_PARAMS; @@ -57,7 +57,7 @@ int32_t GetUriPoliciesArg(array_view policies, void activatePermissionSync(array_view policies) { std::vector uriPolicies; - if (GetUriPoliciesArg(policies,uriPolicies)) { + if (GetUriPoliciesArg(policies, uriPolicies)) { LOGE("Failed to get URI policies"); set_business_error(E_PARAMS, "Failed to get URI policies"); } diff --git a/interfaces/kits/taihe/fileuri/BUILD.gn b/interfaces/kits/taihe/fileuri/BUILD.gn index 5f655dd9d..525ade4d5 100644 --- a/interfaces/kits/taihe/fileuri/BUILD.gn +++ b/interfaces/kits/taihe/fileuri/BUILD.gn @@ -1,3 +1,16 @@ +# 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. + import("//build/config/components/ets_frontend/ets2abc_config.gni") import("//build/ohos.gni") import("//build/ohos/taihe_idl/taihe.gni") -- Gitee From d4467cca1ccba80fa85eff3b495e6a72eae27a1e Mon Sep 17 00:00:00 2001 From: BrainL Date: Tue, 6 May 2025 17:09:25 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BrainL --- interfaces/kits/taihe/fileshare/BUILD.gn | 20 ++-- .../taihe/fileshare/idl/ohos.fileshare.taihe | 7 -- .../fileshare/include/grant_permissons.h | 6 +- .../taihe/fileshare/src/grant_permissons.cpp | 25 ++-- .../test/test_activatePermission.ets | 109 ------------------ .../test/test_deactivatePermission.ets | 108 ----------------- .../kits/taihe/fileshare/test/test_main.ets | 11 -- interfaces/kits/taihe/fileuri/BUILD.gn | 18 +-- .../kits/taihe/fileuri/test/test_main.ets | 38 ------ 9 files changed, 35 insertions(+), 307 deletions(-) delete mode 100644 interfaces/kits/taihe/fileshare/test/test_activatePermission.ets delete mode 100644 interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets delete mode 100644 interfaces/kits/taihe/fileshare/test/test_main.ets delete mode 100644 interfaces/kits/taihe/fileuri/test/test_main.ets diff --git a/interfaces/kits/taihe/fileshare/BUILD.gn b/interfaces/kits/taihe/fileshare/BUILD.gn index a27fc8d90..f812d422f 100644 --- a/interfaces/kits/taihe/fileshare/BUILD.gn +++ b/interfaces/kits/taihe/fileshare/BUILD.gn @@ -38,6 +38,15 @@ taihe_shared_library("file_share_taihe") { subsystem_name = "filemanagement" part_name = "app_file_service" + sanitize = { + integer_overflow = true + ubsan = true + boundary_sanitize = true + cfi = true + cfi_cross_dso = true + debug = false + } + include_dirs = [ "include", "${app_file_service_path}/interfaces/common/include/log.h", @@ -70,17 +79,6 @@ generate_static_abc("file_share_taihe_abc") { dependencies = [ ":run_taihe" ] } -generate_static_abc("file_share_taihe_test_abc"){ - base_url = "${app_file_service_path}/interfaces/kits/taihe/fileshare/test" - files=[ - "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets", - "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets", - "${app_file_service_path}/interfaces/kits/taihe/fileshare/test/test_main.ets", - ] - is_boot_abc = "True" - device_dst_file = "/system/framework/file_share_taihe_test_abc.abc" -} - ohos_prebuilt_etc("file_share_etc") { source = "$target_out_dir/file_share_taihe_abc.abc" module_install_dir = "framework" diff --git a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe index 30772fcb4..31e6e0784 100644 --- a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe +++ b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe @@ -31,13 +31,6 @@ struct PolicyInfo{ function makePolicyInfo(uri:String,operationMode:i32): PolicyInfo; -enum PolicyErrorCode:i32{ - PERSISTENCE_FORBIDDEN = 1, - INVALID_MODE = 2, - INVALID_PATH = 3, - PERMISSION_NOT_PERSISTED = 4, -} - @gen_promise("activatePermission") function activatePermissionSync( policies: Array diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h index 326ee9092..812299ab5 100644 --- a/interfaces/kits/taihe/fileshare/include/grant_permissons.h +++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h @@ -16,9 +16,9 @@ * limitations under the License. */ -#include "ohos.fileshare.proj" -#include "oh.fileshare.impl.hpp" -#include "taihe/runtime" +#include "ohos.fileshare.proj.hpp" +#include "ohos.fileshare.impl.hpp" +#include "taihe/runtime.hpp" #include "file_permission.h" namespace ANI::fileShare { diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp index 92bc49e87..70ae90381 100644 --- a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -20,14 +20,14 @@ using namespace taihe; using namespace ANI::fileShare; - + namespace ANI::fileShare { - + PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) { return PolicyInfo{uri, operationMode}; } - + int32_t GetUriPoliciesArg(array_view policies, std::vector &uriPolicies) { @@ -53,42 +53,46 @@ int32_t GetUriPoliciesArg(array_view policies, } return E_NO_ERROR; } - + void activatePermissionSync(array_view policies) { std::vector uriPolicies; if (GetUriPoliciesArg(policies, uriPolicies)) { LOGE("Failed to get URI policies"); set_business_error(E_PARAMS, "Failed to get URI policies"); + return ; } - + std::shared_ptr arg = std::make_shared(); if (arg == nullptr) { LOGE("PolicyErrorArgs make make_shared failed"); set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); + return ; } - + arg->errNo = OHOS::AppFileService::FilePermission::ActivatePermission(uriPolicies, arg->errorResults); if (arg->errNo) { LOGE("Activation failed"); set_business_error(arg->errNo, "Activation failed"); } } - + void deactivatePermissionSync(array_view policies) { std::vector uriPolicies; if (GetUriPoliciesArg(policies, uriPolicies)) { LOGE("Failed to get URI policies"); set_business_error(E_PARAMS, "Failed to get URI policies"); + return ; } - + std::shared_ptr arg = std::make_shared(); if (arg == nullptr) { LOGE("PolicyErrorArgs make make_shared failed"); set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); + return ; } - + arg->errNo = OHOS::AppFileService::FilePermission::DeactivatePermission(uriPolicies, arg->errorResults); if (arg->errNo) { LOGE("Deactivation failed"); @@ -96,10 +100,9 @@ void deactivatePermissionSync(array_view policies) } } } // namespace - + // NOLINTBEGIN TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); // NOLINTEND - \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets b/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets deleted file mode 100644 index 0641dee70..000000000 --- a/interfaces/kits/taihe/fileshare/test/test_activatePermission.ets +++ /dev/null @@ -1,109 +0,0 @@ -import fileShare from '@ohos.fileshare'; - -/** -* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0100 -* @tc.name FileShare_activatePermission_001 -* @tc.desc Test activatePermission() interfaces -* Test normal uri and OperationMode is READ_MODE. -* @tc.size MEDIUM -* @tc.type Function -* @tc.level Level 0 -* @tc.require -*/ -function FileShare_activatePermission_001() -{ - let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_001.txt"; - let uri = fileStr; - let policyInfo : fileShare.PolicyInfo = { - uri: uri, - operationMode: fileShare.OperationMode.READ_MODE, - }; - let policies = [policyInfo]; - - fileShare.activatePermission(policies).then(() => { - console.log("FileShare_activatePermission_001 successfully"); - }).catch((err) => { - console.log("FileShare_activatePermission_001 failed with error message: " + err.message + ", error code: " + err.code); - }); - -} - - -/** -* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0200 -* @tc.name FileShare_activatePermission_002 -* @tc.desc Test activatePermission() interfaces -* Test normal uri and OperationMode is READ_MODE and WRITE_MODE . -* @tc.size MEDIUM -* @tc.type Function -* @tc.level Level 0 -* @tc.require -*/ -function FileShare_activatePermission_002() -{ - - let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_002.txt"; - let uri = fileStr; - let policyInfo: fileShare.PolicyInfo ={ - uri: uri, - operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, - }; - let policies = [policyInfo]; - - fileShare.activatePermission(policies).then(() => { - console.info("FileShare_activatePermission_002 successfully"); - }).catch((err) => { - console.info("FileShare_activatePermission_002 failed with error message: " + err.message + ", error code: " + err.code); - }); -} - -/** -* @tc.number SUB_BASIC_FM_FileAPI_FileShare_ActivatePermission_0300 -* @tc.name FileShare_activatePermission_003 -* @tc.desc Test activatePermission() interfaces -* Test INVALID_PATH uri and OperationMode is READ_MODE. -* @tc.size MEDIUM -* @tc.type Function -* @tc.level Level 3 -* @tc.require -*/ -function FileShare_activatePermission_003() -{ - - let fileStr1 = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_003.txt"; - let uri1 = fileStr1; - let policyInfo1 : fileShare.PolicyInfo = { - uri: uri1, - operationMode: fileShare.OperationMode.READ_MODE, - }; - - let fileStr2 = "/data/storage/el2/base/haps/entry/files/FileShare_activatePermission_00301.txt"; - let uri2 = fileStr2; - let policyInfo2 : fileShare.PolicyInfo = { - uri: uri2, - operationMode: fileShare.OperationMode.READ_MODE, - }; - let policies = [policyInfo1, policyInfo2]; - - fileShare.activatePermission(policies).then(() => { - console.info("FileShare_activatePermission_003 successfully"); - }).catch((err) => { - console.info("FileShare_activatePermission_003 failed with error message: " + err.message + ", error code: " + err.code); - }); - -} - -export function testActivatePermission() -{ - console.log("FileShare_activatePermission_001 test begin"); - FileShare_activatePermission_001(); - console.log("FileShare_activatePermission_001 test end"); - - console.log("FileShare_activatePermission_002 test begin"); - FileShare_activatePermission_002(); - console.log("FileShare_activatePermission_002 test end"); - - console.log("FileShare_activatePermission_003 test begin"); - FileShare_activatePermission_003(); - console.log("FileShare_activatePermission_003 test end"); -} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets b/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets deleted file mode 100644 index 7320526c2..000000000 --- a/interfaces/kits/taihe/fileshare/test/test_deactivatePermission.ets +++ /dev/null @@ -1,108 +0,0 @@ -import fileShare from '@ohos.fileshare'; - -/** -* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0100 -* @tc.name FileShare_deactivatePermission_001 -* @tc.desc Test deactivatePermission() interfaces -* Test normal uri and OperationMode is READ_MODE. -* @tc.size MEDIUM -* @tc.type Function -* @tc.level Level 0 -* @tc.require -*/ -function FileShare_deactivatePermission_001() -{ - let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_001.txt"; - let uri = fileStr; - let policyInfo : fileShare.PolicyInfo = { - uri: uri, - operationMode: fileShare.OperationMode.READ_MODE, - }; - let policies = [policyInfo]; - - fileShare.deactivatePermission(policies).then(() => { - console.log("FileShare_deactivatePermission_001 successfully"); - - }).catch((err) => { - console.log("FileShare_deactivatePermission_001 failed with error message " + err.message + ", error code: " + err.code); - - }); - -} - -/** -* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0200 -* @tc.name FileShare_deactivatePermission_002 -* @tc.desc Test deactivatePermission() interfaces -* Test normal uri and OperationMode is READ_MODE and WRITE_MODE . -* @tc.size MEDIUM -* @tc.type Function -* @tc.level Level 0 -* @tc.require -*/ -function FileShare_deactivatePermission_002() -{ - let fileStr = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_002.txt"; - let uri = fileStr; - let policyInfo: fileShare.PolicyInfo ={ - uri: uri, - operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, - }; - let policies = [policyInfo]; - - fileShare.deactivatePermission(policies).then(() => { - console.log("FileShare_deactivatePermission_002 successfully"); - }).catch((err) => { - console.log("FileShare_deactivatePermission_002 failed with error message " + err.message + ", error code: " + err.code); - }); -} - -/** -* @tc.number SUB_BASIC_FM_FileAPI_FileShare_DeactivatePermission_0300 -* @tc.name FileShare_deactivatePermission_003 -* @tc.desc Test deactivatePermission() interfaces -* Test INVALID_PATH uri and OperationMode is READ_MODE. -* @tc.size MEDIUM -* @tc.type Function -* @tc.level Level 3 -* @tc.require -*/ -function FileShare_deactivatePermission_003() -{ - let fileStr1 = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_003.txt"; - let uri1 = fileStr1 ; - let policyInfo1 : fileShare.PolicyInfo= { - uri: uri1, - operationMode: fileShare.OperationMode.READ_MODE, - }; - - let fileStr2 = "/data/storage/el2/base/haps/entry/files/FileShare_deactivatePermission_00301.txt"; - let uri2 = fileStr2; - let policyInfo2 : fileShare.PolicyInfo = { - uri: uri2, - operationMode: fileShare.OperationMode.READ_MODE, - }; - let policies = [policyInfo1, policyInfo2]; - - fileShare.deactivatePermission(policies).then(() => { - console.log("FileShare_deactivatePermission_003 successfully"); - }).catch((err) => { - console.info("FileShare_deactivatePermission_003 failed with error message: " + err.message + ", error code: " + err.code); - }); - -} - -export function testDeactivatePermission() -{ - console.log("FileShare_deactivatePermission_001 test begin"); - FileShare_deactivatePermission_001(); - console.log("FileShare_deactivatePermission_001 test end"); - - console.log("FileShare_deactivatePermission_002 test begin"); - FileShare_deactivatePermission_002(); - console.log("FileShare_deactivatePermission_002 test end"); - - console.log("FileShare_deactivatePermission_003 test begin"); - FileShare_deactivatePermission_003(); - console.log("FileShare_deactivatePermission_003 test end"); -} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileshare/test/test_main.ets b/interfaces/kits/taihe/fileshare/test/test_main.ets deleted file mode 100644 index a6076e0ea..000000000 --- a/interfaces/kits/taihe/fileshare/test/test_main.ets +++ /dev/null @@ -1,11 +0,0 @@ -import {testActivatePermission} from "./test_activatePermission"; -import {testDeactivatePermission} from "./test_deactivatePermission"; - - - -function main(){ - - testActivatePermission(); - testDeactivatePermission(); - -} \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/BUILD.gn b/interfaces/kits/taihe/fileuri/BUILD.gn index 525ade4d5..6403414af 100644 --- a/interfaces/kits/taihe/fileuri/BUILD.gn +++ b/interfaces/kits/taihe/fileuri/BUILD.gn @@ -38,6 +38,15 @@ taihe_shared_library("file_fileuri_taihe") { subsystem_name = "$subsystem_name" part_name = "$part_name" + sanitize = { + integer_overflow = true + ubsan = true + boundary_sanitize = true + cfi = true + cfi_cross_dso = true + debug = false + } + include_dirs = [ "include", "${app_file_service_path}/interfaces/common/include", @@ -71,15 +80,6 @@ generate_static_abc("file_fileuri_taihe_abc") { dependencies = [ ":run_taihe" ] } -generate_static_abc("file_fileuri_test") { - base_url = "${app_file_service_path}/interfaces/kits/taihe/fileuri/test" - files = [ - "${app_file_service_path}/interfaces/kits/taihe/fileuri/test/test_main.ets", - ] - is_boot_abc = "True" - device_dst_file = "/system/framework/file_fileuri_test.abc" -} - ohos_prebuilt_etc("file_fileuri_etc") { source = "$target_out_dir/file_fileuri_taihe_abc.abc" module_install_dir = "framework" diff --git a/interfaces/kits/taihe/fileuri/test/test_main.ets b/interfaces/kits/taihe/fileuri/test/test_main.ets deleted file mode 100644 index 09bd1ee96..000000000 --- a/interfaces/kits/taihe/fileuri/test/test_main.ets +++ /dev/null @@ -1,38 +0,0 @@ -import fileUri from '@ohos.file.fileuri'; - -function main() -{ - test_GetUriFromPath_000(); - test_GetUriFromPath_001(); -} - -function test_GetUriFromPath_000() -{ - try { - let path = "/data/storage/el2/base/haps/entry/files/sync.jpg"; - let uri = fileUri.getUriFromPath(path); - let result = "file:///data/storage/el2/base/haps/entry/files/sync.jpg" - console.log("test_GetUriFromPath_000 uri:" + uri); - console.log("test_GetUriFromPath_000 result:" + result); - if (uri == result) { - console.log("test_GetUriFromPath_001 SUCCESS"); - } - } catch (err) { - console.log('test_FileUri_GetUriFromPath_000 has failed for ' + err); - } -} - -function test_GetUriFromPath_001() -{ - try { - let uri = fileUri.getUriFromPath(""); - let result = "file://"; - console.log("test__GetUriFromPath_001 uri:" + uri); - console.log("test__GetUriFromPath_001 result:" + result); - if (uri == result) { - console.log("test_GetUriFromPath_001 SUCCESS"); - } - } catch (err) { - console.log('test_GetUriFromPath_001 FAILED: ' + err); - } -} \ No newline at end of file -- Gitee From 1b8a937313591a450bd3fd40adc40ca34c90788c Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 7 May 2025 20:12:52 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BrainL --- .../kits/taihe/fileshare/idl/ohos.fileshare.taihe | 13 ++++++------- .../kits/taihe/fileshare/include/grant_permissons.h | 6 +++--- .../kits/taihe/fileshare/src/grant_permissons.cpp | 3 +-- interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp | 3 +-- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe index 31e6e0784..db1c6fc61 100644 --- a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe +++ b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe @@ -19,14 +19,14 @@ static { loadLibrary("file_share_taihe.z"); } """) -enum OperationMode:i32{ - READ_MODE=1, - WRITE_MODE=2, +enum OperationMode: i32 { + READ_MODE = 1, + WRITE_MODE = 2, } -struct PolicyInfo{ - uri:String; - operationMode:i32; +struct PolicyInfo { + uri: String; + operationMode: i32; } function makePolicyInfo(uri:String,operationMode:i32): PolicyInfo; @@ -36,7 +36,6 @@ function activatePermissionSync( policies: Array ): void; - @gen_promise("deactivatePermission") function deactivatePermissionSync( policies: Array diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h index 812299ab5..0fd878680 100644 --- a/interfaces/kits/taihe/fileshare/include/grant_permissons.h +++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h @@ -1,6 +1,3 @@ -#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H -#define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H - /* * Copyright (c) 2025 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); @@ -16,6 +13,9 @@ * limitations under the License. */ +#ifndef FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H +#define FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H + #include "ohos.fileshare.proj.hpp" #include "ohos.fileshare.impl.hpp" #include "taihe/runtime.hpp" diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp index 70ae90381..b96e2746b 100644 --- a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -18,11 +18,10 @@ #include "oh_file_share.h" #include +namespace ANI::fileShare { using namespace taihe; using namespace ANI::fileShare; -namespace ANI::fileShare { - PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) { return PolicyInfo{uri, operationMode}; diff --git a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp index bf1db5efd..eb7e2c6ea 100644 --- a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp +++ b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp @@ -32,7 +32,7 @@ FileUriImpl::FileUriImpl(string_view name) string FileUriImpl::getName() { -std::string sandboxPath = OHOS::AppFileService::SandboxHelper::Decode(uri_.GetPath()); + std::string sandboxPath = OHOS::AppFileService::SandboxHelper::Decode(uri_.GetPath()); size_t posLast = sandboxPath.find_last_of("/"); if (posLast == std::string::npos) { return ""; @@ -43,7 +43,6 @@ std::string sandboxPath = OHOS::AppFileService::SandboxHelper::Decode(uri_.GetPa return sandboxPath.substr(posLast + 1); } - FileUri makeFileUri(string_view name) { return make_holder(name); -- Gitee From b6c78be4214047cb608e540fbaffc20a11300a4b Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 7 May 2025 21:10:57 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BrainL --- .../taihe/fileshare/include/grant_permissons.h | 8 +++----- .../taihe/fileshare/src/grant_permissons.cpp | 16 +++++++--------- .../kits/taihe/fileuri/include/fileuri_taihe.h | 8 +++----- .../kits/taihe/fileuri/src/fileuri_taihe.cpp | 6 ++---- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h index 0fd878680..467adb705 100644 --- a/interfaces/kits/taihe/fileshare/include/grant_permissons.h +++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h @@ -22,12 +22,10 @@ #include "file_permission.h" namespace ANI::fileShare { -using namespace taihe; -using namespace ohos::fileshare; - PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode); - void activatePermissionSync(array_view policies); - void deactivatePermissionSync(array_view policies); + ohos::fileshare::PolicyInfo makePolicyInfo(taihe::string_view uri, int32_t operationMode); + void activatePermissionSync(taihe::array_view policies); + void deactivatePermissionSync(taihe::array_view policies); struct PolicyErrorArgs { std::deque errorResults; diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp index b96e2746b..7f5d1c6d6 100644 --- a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -19,15 +19,13 @@ #include namespace ANI::fileShare { -using namespace taihe; -using namespace ANI::fileShare; -PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) +PolicyInfo makePolicyInfo(taihe::string_view uri, int32_t operationMode) { return PolicyInfo{uri, operationMode}; } -int32_t GetUriPoliciesArg(array_view policies, +int32_t GetUriPoliciesArg(taihe::array_view policies, std::vector &uriPolicies) { uint32_t count = policies.size(); @@ -53,7 +51,7 @@ int32_t GetUriPoliciesArg(array_view policies, return E_NO_ERROR; } -void activatePermissionSync(array_view policies) +void activatePermissionSync(taihe::array_view policies) { std::vector uriPolicies; if (GetUriPoliciesArg(policies, uriPolicies)) { @@ -76,7 +74,7 @@ void activatePermissionSync(array_view policies) } } -void deactivatePermissionSync(array_view policies) +void deactivatePermissionSync(taihe::array_view policies) { std::vector uriPolicies; if (GetUriPoliciesArg(policies, uriPolicies)) { @@ -101,7 +99,7 @@ void deactivatePermissionSync(array_view policies) } // namespace // NOLINTBEGIN -TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); -TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); -TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); +TH_EXPORT_CPP_API_makePolicyInfo(ANI::fileShare::makePolicyInfo); +TH_EXPORT_CPP_API_activatePermissionSync(ANI::fileShare::activatePermissionSync); +TH_EXPORT_CPP_API_deactivatePermissionSync(ANI::fileShare::deactivatePermissionSync); // NOLINTEND diff --git a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h index c4a1729bc..fdb1c3426 100644 --- a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h +++ b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h @@ -23,14 +23,12 @@ #include "file_uri.h" namespace ANI::fileUri { -using namespace taihe; -using namespace ohos::file::fileuri; class FileUriImpl { public: FileUriImpl() = delete; - FileUriImpl(string_view name); + FileUriImpl(taihe::string_view name); string getName(); @@ -38,9 +36,9 @@ private: OHOS::Uri uri_; }; -FileUri makeFileUri(string_view name); +ohos::file::fileuri::FileUri makeFileUri(taihe::string_view name); -string getUriFromPath(string_view path); +string getUriFromPath(taihe::string_view path); } diff --git a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp index eb7e2c6ea..3bba8d8b5 100644 --- a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp +++ b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp @@ -18,8 +18,6 @@ #include "common_func.h" #include "sandbox_helper.h" -using namespace ANI::fileUri; - namespace ANI::fileUri { const std::string FILE_SCHEME_PREFIX_TAIHE = "file://"; @@ -57,5 +55,5 @@ string getUriFromPath(string_view path) } } // namespace ANI::fileUri -TH_EXPORT_CPP_API_makeFileUri(makeFileUri); -TH_EXPORT_CPP_API_getUriFromPath(getUriFromPath); \ No newline at end of file +TH_EXPORT_CPP_API_makeFileUri(ANI::fileUri::makeFileUri); +TH_EXPORT_CPP_API_getUriFromPath(ANI::fileUri::getUriFromPath); \ No newline at end of file -- Gitee From 8ffe6c93fe99f2be231eddc2c5313165d24253f3 Mon Sep 17 00:00:00 2001 From: BrainL Date: Wed, 7 May 2025 22:02:08 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BrainL --- .../taihe/fileshare/include/grant_permissons.h | 9 ++++++--- .../taihe/fileshare/src/grant_permissons.cpp | 17 ++++++++++------- .../kits/taihe/fileuri/include/fileuri_taihe.h | 9 +++++---- .../kits/taihe/fileuri/src/fileuri_taihe.cpp | 6 ++++-- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h index 467adb705..edfa1d59e 100644 --- a/interfaces/kits/taihe/fileshare/include/grant_permissons.h +++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h @@ -21,11 +21,14 @@ #include "taihe/runtime.hpp" #include "file_permission.h" + namespace ANI::fileShare { +using namespace taihe; +using namespace ohos::fileshare; - ohos::fileshare::PolicyInfo makePolicyInfo(taihe::string_view uri, int32_t operationMode); - void activatePermissionSync(taihe::array_view policies); - void deactivatePermissionSync(taihe::array_view policies); + PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode); + void activatePermissionSync(array_view policies); + void deactivatePermissionSync(array_view policies); struct PolicyErrorArgs { std::deque errorResults; diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp index 7f5d1c6d6..70ae90381 100644 --- a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -18,14 +18,17 @@ #include "oh_file_share.h" #include +using namespace taihe; +using namespace ANI::fileShare; + namespace ANI::fileShare { -PolicyInfo makePolicyInfo(taihe::string_view uri, int32_t operationMode) +PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) { return PolicyInfo{uri, operationMode}; } -int32_t GetUriPoliciesArg(taihe::array_view policies, +int32_t GetUriPoliciesArg(array_view policies, std::vector &uriPolicies) { uint32_t count = policies.size(); @@ -51,7 +54,7 @@ int32_t GetUriPoliciesArg(taihe::array_view policies, return E_NO_ERROR; } -void activatePermissionSync(taihe::array_view policies) +void activatePermissionSync(array_view policies) { std::vector uriPolicies; if (GetUriPoliciesArg(policies, uriPolicies)) { @@ -74,7 +77,7 @@ void activatePermissionSync(taihe::array_view policies) } } -void deactivatePermissionSync(taihe::array_view policies) +void deactivatePermissionSync(array_view policies) { std::vector uriPolicies; if (GetUriPoliciesArg(policies, uriPolicies)) { @@ -99,7 +102,7 @@ void deactivatePermissionSync(taihe::array_view policies) } // namespace // NOLINTBEGIN -TH_EXPORT_CPP_API_makePolicyInfo(ANI::fileShare::makePolicyInfo); -TH_EXPORT_CPP_API_activatePermissionSync(ANI::fileShare::activatePermissionSync); -TH_EXPORT_CPP_API_deactivatePermissionSync(ANI::fileShare::deactivatePermissionSync); +TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); +TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); +TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); // NOLINTEND diff --git a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h index fdb1c3426..5cb0406cc 100644 --- a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h +++ b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h @@ -23,12 +23,14 @@ #include "file_uri.h" namespace ANI::fileUri { +using namespace taihe; +using namespace ohos::file::fileuri; class FileUriImpl { public: FileUriImpl() = delete; - FileUriImpl(taihe::string_view name); + FileUriImpl(string_view name); string getName(); @@ -36,10 +38,9 @@ private: OHOS::Uri uri_; }; -ohos::file::fileuri::FileUri makeFileUri(taihe::string_view name); - -string getUriFromPath(taihe::string_view path); +FileUri makeFileUri(string_view name); +string getUriFromPath(string_view path); } #endif // INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H \ No newline at end of file diff --git a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp index 3bba8d8b5..eb7e2c6ea 100644 --- a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp +++ b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp @@ -18,6 +18,8 @@ #include "common_func.h" #include "sandbox_helper.h" +using namespace ANI::fileUri; + namespace ANI::fileUri { const std::string FILE_SCHEME_PREFIX_TAIHE = "file://"; @@ -55,5 +57,5 @@ string getUriFromPath(string_view path) } } // namespace ANI::fileUri -TH_EXPORT_CPP_API_makeFileUri(ANI::fileUri::makeFileUri); -TH_EXPORT_CPP_API_getUriFromPath(ANI::fileUri::getUriFromPath); \ No newline at end of file +TH_EXPORT_CPP_API_makeFileUri(makeFileUri); +TH_EXPORT_CPP_API_getUriFromPath(getUriFromPath); \ No newline at end of file -- Gitee From 6f90ece6f091220b0f923910e976572f6abc6d28 Mon Sep 17 00:00:00 2001 From: BrainL Date: Fri, 9 May 2025 10:59:34 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: BrainL --- interfaces/kits/taihe/fileshare/BUILD.gn | 15 ++++---- .../taihe/fileshare/idl/ohos.fileshare.taihe | 5 ++- .../fileshare/include/grant_permissons.h | 15 ++++---- .../taihe/fileshare/src/ani_constructor.cpp | 2 +- .../taihe/fileshare/src/grant_permissons.cpp | 36 +++++++++---------- interfaces/kits/taihe/fileuri/BUILD.gn | 2 +- .../taihe/fileuri/idl/ohos.file.fileuri.taihe | 4 +-- .../taihe/fileuri/include/fileuri_taihe.h | 17 +++++---- .../taihe/fileuri/src/ani_constructor.cpp | 2 +- .../kits/taihe/fileuri/src/fileuri_taihe.cpp | 27 +++++++------- 10 files changed, 59 insertions(+), 66 deletions(-) diff --git a/interfaces/kits/taihe/fileshare/BUILD.gn b/interfaces/kits/taihe/fileshare/BUILD.gn index f812d422f..1fce46dad 100644 --- a/interfaces/kits/taihe/fileshare/BUILD.gn +++ b/interfaces/kits/taihe/fileshare/BUILD.gn @@ -21,7 +21,7 @@ subsystem_name = "filemanagement" taihe_generated_file_path = "$taihe_file_path/out/$subsystem_name/$part_name/fileshare" copy_taihe_idl("copy_taihe") { - sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe" ] + sources = [ "${app_file_service_path}/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe" ] } ohos_taihe("run_taihe") { @@ -72,11 +72,12 @@ taihe_shared_library("file_share_taihe") { } generate_static_abc("file_share_taihe_abc") { - base_url = "$taihe_generated_file_path" - files = [ "$taihe_generated_file_path/@ohos.fileshare.ets" ] - is_boot_abc = "True" - device_dst_file = "/system/framework/file_share_taihe_abc.abc" - dependencies = [ ":run_taihe" ] + base_url = "$taihe_generated_file_path" + files = [ "$taihe_generated_file_path/@ohos.fileshare.ets" ] + is_boot_abc = "True" + device_dst_file = "/system/framework/file_share_taihe_abc.abc" + dependencies = [ ":run_taihe" ] + } ohos_prebuilt_etc("file_share_etc") { @@ -94,4 +95,4 @@ group("afs_fileshare_taihe") { ":file_share_taihe", ":file_share_etc", ] -} \ No newline at end of file +} diff --git a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe index db1c6fc61..79ad429ba 100644 --- a/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe +++ b/interfaces/kits/taihe/fileshare/idl/ohos.fileshare.taihe @@ -28,8 +28,7 @@ struct PolicyInfo { uri: String; operationMode: i32; } - -function makePolicyInfo(uri:String,operationMode:i32): PolicyInfo; +function makePolicyInfo(uri: String, operationMode: i32): PolicyInfo; @gen_promise("activatePermission") function activatePermissionSync( @@ -39,4 +38,4 @@ function activatePermissionSync( @gen_promise("deactivatePermission") function deactivatePermissionSync( policies: Array -): void; \ No newline at end of file +): void; diff --git a/interfaces/kits/taihe/fileshare/include/grant_permissons.h b/interfaces/kits/taihe/fileshare/include/grant_permissons.h index edfa1d59e..4472ee5a1 100644 --- a/interfaces/kits/taihe/fileshare/include/grant_permissons.h +++ b/interfaces/kits/taihe/fileshare/include/grant_permissons.h @@ -21,14 +21,11 @@ #include "taihe/runtime.hpp" #include "file_permission.h" +namespace ANI::FileShare { -namespace ANI::fileShare { -using namespace taihe; -using namespace ohos::fileshare; - - PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode); - void activatePermissionSync(array_view policies); - void deactivatePermissionSync(array_view policies); + ohos::fileshare::PolicyInfo makePolicyInfo(taihe::string_view uri, int32_t operationMode); + void activatePermissionSync(taihe::array_view policies); + void deactivatePermissionSync(taihe::array_view policies); struct PolicyErrorArgs { std::deque errorResults; @@ -36,6 +33,6 @@ using namespace ohos::fileshare; ~PolicyErrorArgs() = default; }; -} //namespace ANI::fileShare +} //namespace ANI::FileShare -#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H \ No newline at end of file +#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_GRANT_PERMISSONS_H diff --git a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp index 8b0f59748..605757338 100644 --- a/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp +++ b/interfaces/kits/taihe/fileshare/src/ani_constructor.cpp @@ -31,4 +31,4 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) return ANI_OK; } -#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H \ No newline at end of file +#endif // FILEMANAGEMENT_APP_FILE_SERVICE_INTERFACES_FILE_SHARE_TAIHE_ANI_CONSTRUCTOR_H diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp index 70ae90381..36305fc72 100644 --- a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -18,17 +18,14 @@ #include "oh_file_share.h" #include -using namespace taihe; -using namespace ANI::fileShare; +namespace ANI::FileShare { -namespace ANI::fileShare { - -PolicyInfo makePolicyInfo(string_view uri, int32_t operationMode) +ohos::fileshare::PolicyInfo makePolicyInfo(taihe::string_view uri, int32_t operationMode) { - return PolicyInfo{uri, operationMode}; + return {uri, operationMode}; } -int32_t GetUriPoliciesArg(array_view policies, +int32_t GetUriPoliciesArg(taihe::array_view policies, std::vector &uriPolicies) { uint32_t count = policies.size(); @@ -54,55 +51,56 @@ int32_t GetUriPoliciesArg(array_view policies, return E_NO_ERROR; } -void activatePermissionSync(array_view policies) +void activatePermissionSync(taihe::array_view policies) { std::vector uriPolicies; if (GetUriPoliciesArg(policies, uriPolicies)) { LOGE("Failed to get URI policies"); - set_business_error(E_PARAMS, "Failed to get URI policies"); + taihe::set_business_error(E_PARAMS, "Failed to get URI policies"); return ; } std::shared_ptr arg = std::make_shared(); if (arg == nullptr) { LOGE("PolicyErrorArgs make make_shared failed"); - set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); + taihe::set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); return ; } arg->errNo = OHOS::AppFileService::FilePermission::ActivatePermission(uriPolicies, arg->errorResults); if (arg->errNo) { LOGE("Activation failed"); - set_business_error(arg->errNo, "Activation failed"); + taihe::set_business_error(arg->errNo, "Activation failed"); } } -void deactivatePermissionSync(array_view policies) +void deactivatePermissionSync(taihe::array_view policies) { std::vector uriPolicies; if (GetUriPoliciesArg(policies, uriPolicies)) { LOGE("Failed to get URI policies"); - set_business_error(E_PARAMS, "Failed to get URI policies"); + taihe::set_business_error(E_PARAMS, "Failed to get URI policies"); return ; } std::shared_ptr arg = std::make_shared(); if (arg == nullptr) { LOGE("PolicyErrorArgs make make_shared failed"); - set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); + taihe::set_business_error(E_UNKNOWN_ERROR, "PolicyErrorArgs make make_shared failed"); return ; } arg->errNo = OHOS::AppFileService::FilePermission::DeactivatePermission(uriPolicies, arg->errorResults); if (arg->errNo) { LOGE("Deactivation failed"); - set_business_error(arg->errNo, "Deactivation failed"); + taihe::set_business_error(arg->errNo, "Deactivation failed"); + return ; } } -} // namespace +} // namespace ANI::FileShare // NOLINTBEGIN -TH_EXPORT_CPP_API_makePolicyInfo(makePolicyInfo); -TH_EXPORT_CPP_API_activatePermissionSync(activatePermissionSync); -TH_EXPORT_CPP_API_deactivatePermissionSync(deactivatePermissionSync); +TH_EXPORT_CPP_API_makePolicyInfo(ANI::FileShare::makePolicyInfo); +TH_EXPORT_CPP_API_activatePermissionSync(ANI::FileShare::activatePermissionSync); +TH_EXPORT_CPP_API_deactivatePermissionSync(ANI::FileShare::deactivatePermissionSync); // NOLINTEND diff --git a/interfaces/kits/taihe/fileuri/BUILD.gn b/interfaces/kits/taihe/fileuri/BUILD.gn index 6403414af..06cf3c6a7 100644 --- a/interfaces/kits/taihe/fileuri/BUILD.gn +++ b/interfaces/kits/taihe/fileuri/BUILD.gn @@ -95,4 +95,4 @@ group("afs_fileuri_taihe") { ":file_fileuri_taihe", ":file_fileuri_etc", ] -} \ No newline at end of file +} diff --git a/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe index 149baf051..b2c25a848 100644 --- a/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe +++ b/interfaces/kits/taihe/fileuri/idl/ohos.file.fileuri.taihe @@ -26,6 +26,6 @@ interface FileUri { } @ctor("FileUri") -function makeFileUri(name :String): FileUri; +function makeFileUri(name: String): FileUri; -function getUriFromPath(path: String): String; \ No newline at end of file +function getUriFromPath(path: String): String; diff --git a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h index 5cb0406cc..07658dc53 100644 --- a/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h +++ b/interfaces/kits/taihe/fileuri/include/fileuri_taihe.h @@ -16,31 +16,30 @@ #ifndef INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H #define INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H +#include #include "ohos.file.fileuri.proj.hpp" #include "ohos.file.fileuri.impl.hpp" #include "taihe/runtime.hpp" -#include "stdexcept" #include "file_uri.h" -namespace ANI::fileUri { -using namespace taihe; -using namespace ohos::file::fileuri; +namespace ANI::FileUri { class FileUriImpl { public: FileUriImpl() = delete; - FileUriImpl(string_view name); + FileUriImpl(taihe::string_view name); - string getName(); + std::string getName(); private: OHOS::Uri uri_; }; -FileUri makeFileUri(string_view name); +ohos::file::fileuri::FileUri makeFileUri(taihe::string_view name); + +std::string getUriFromPath(taihe::string_view path); -string getUriFromPath(string_view path); } -#endif // INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H \ No newline at end of file +#endif // INTERFACES_KITS_TAIHE_INCLUDE_FILEURI_TAIHE_H diff --git a/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp index 92647dd3e..c68f4de4a 100644 --- a/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp +++ b/interfaces/kits/taihe/fileuri/src/ani_constructor.cpp @@ -26,4 +26,4 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) } *result = ANI_VERSION_1; return ANI_OK; -} \ No newline at end of file +} diff --git a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp index eb7e2c6ea..ac9cedf5a 100644 --- a/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp +++ b/interfaces/kits/taihe/fileuri/src/fileuri_taihe.cpp @@ -18,44 +18,43 @@ #include "common_func.h" #include "sandbox_helper.h" -using namespace ANI::fileUri; - -namespace ANI::fileUri { +namespace ANI::FileUri { const std::string FILE_SCHEME_PREFIX_TAIHE = "file://"; +const std::string FILE_FILEURI_FAILED = ""; -FileUriImpl::FileUriImpl(string_view name) +FileUriImpl::FileUriImpl(taihe::string_view name) : uri_((std::string(name.c_str()).find(FILE_SCHEME_PREFIX_TAIHE) == 0) ? std::string(name.c_str()) : OHOS::AppFileService::CommonFunc::GetUriFromPath(std::string(name.c_str()))) { } -string FileUriImpl::getName() +std::string FileUriImpl::getName() { std::string sandboxPath = OHOS::AppFileService::SandboxHelper::Decode(uri_.GetPath()); size_t posLast = sandboxPath.find_last_of("/"); if (posLast == std::string::npos) { - return ""; + return FILE_FILEURI_FAILED; } if (posLast == (sandboxPath.size() - 1)) { - return ""; + return FILE_FILEURI_FAILED; } return sandboxPath.substr(posLast + 1); } -FileUri makeFileUri(string_view name) + +ohos::file::fileuri::FileUri makeFileUri(taihe::string_view name) { - return make_holder(name); + return taihe::make_holder(name); } -string getUriFromPath(string_view path) +std::string getUriFromPath(taihe::string_view path) { const std::string strPath = path.c_str(); std::string uri = OHOS::AppFileService::CommonFunc::GetUriFromPath(strPath); - return uri; } -} // namespace ANI::fileUri +} // namespace ANI::FileUri -TH_EXPORT_CPP_API_makeFileUri(makeFileUri); -TH_EXPORT_CPP_API_getUriFromPath(getUriFromPath); \ No newline at end of file +TH_EXPORT_CPP_API_makeFileUri(ANI::FileUri::makeFileUri); +TH_EXPORT_CPP_API_getUriFromPath(ANI::FileUri::getUriFromPath); -- Gitee From 33df9ff5a82c88b528c8fb96acb799d439391ba9 Mon Sep 17 00:00:00 2001 From: BrainL Date: Tue, 13 May 2025 13:53:43 +0800 Subject: [PATCH 10/10] code check Signed-off-by: BrainL --- interfaces/kits/taihe/fileshare/src/grant_permissons.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp index 36305fc72..47477fb71 100644 --- a/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp +++ b/interfaces/kits/taihe/fileshare/src/grant_permissons.cpp @@ -25,7 +25,7 @@ ohos::fileshare::PolicyInfo makePolicyInfo(taihe::string_view uri, int32_t opera return {uri, operationMode}; } -int32_t GetUriPoliciesArg(taihe::array_view policies, +int32_t getUriPoliciesArg(taihe::array_view policies, std::vector &uriPolicies) { uint32_t count = policies.size(); @@ -54,7 +54,7 @@ int32_t GetUriPoliciesArg(taihe::array_view policie void activatePermissionSync(taihe::array_view policies) { std::vector uriPolicies; - if (GetUriPoliciesArg(policies, uriPolicies)) { + if (getUriPoliciesArg(policies, uriPolicies)) { LOGE("Failed to get URI policies"); taihe::set_business_error(E_PARAMS, "Failed to get URI policies"); return ; @@ -77,7 +77,7 @@ void activatePermissionSync(taihe::array_view polic void deactivatePermissionSync(taihe::array_view policies) { std::vector uriPolicies; - if (GetUriPoliciesArg(policies, uriPolicies)) { + if (getUriPoliciesArg(policies, uriPolicies)) { LOGE("Failed to get URI policies"); taihe::set_business_error(E_PARAMS, "Failed to get URI policies"); return ; -- Gitee