diff --git a/interfaces/ndk/BUILD.gn b/interfaces/ndk/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..dd3338c91d461c84f2c3e93a09a577d8e193e379 --- /dev/null +++ b/interfaces/ndk/BUILD.gn @@ -0,0 +1,32 @@ +# Copyright (c) 2024 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/ohos.gni") +import("//build/ohos/ndk/ndk.gni") +import("//foundation/filemanagement/app_file_service/app_file_service.gni") + +ohos_ndk_headers("fileuri_ndk_header") { + dest_dir = "$ndk_headers_out_dir/app_file_service/fileuri/" + sources = [ "./include/file_uri.h" ] +} + +ohos_ndk_library("libnative_fileuri_ndk") { + output_name = "native_fileuri_ndk" + system_capability = + "SystemCapability.FileManagement.AppFileService" + ndk_description_file = "./libnative_fileuri.ndk.json" + min_compact_version = "11" + system_capability_headers = [ + "$ndk_headers_out_dir/filemanagement/app_file_service/fileuri.h", + ] +} diff --git a/interfaces/ndk/include/file_uri.h b/interfaces/ndk/include/file_uri.h new file mode 100644 index 0000000000000000000000000000000000000000..37cd362483f8fb2d8614f81063a76cef248f5f50 --- /dev/null +++ b/interfaces/ndk/include/file_uri.h @@ -0,0 +1,81 @@ + /* + * Copyright (c) 2023 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 FILE_URI_H +#define FILE_URI_H + +/** + * @file file_uri.h + * + * @brief Handle operations related to URIs. + * @library libnative_fileuri_ndk.z.so + * @syscap SystemCapability.FileManagement.AppFileService + * @since 12 + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Get Uri From Path. + * + * @param asset Pass in the URI to get the path. + * @param asset The result after processing. + * @return Returns the execution result. + * @see fileuri + * @since 12 + */ +int OH_FileUri_GetUriFromPath(const char *path, char *result); + +/** + * @brief Get path From uri. + * + * @param asset Pass in the path to get the uri. + * @param asset The result after processing. + * @return Returns the execution result. + * @return Returns . + * @see fileuri + * @since 12 + */ +int OH_FileUri_GetPathFromUri(const char *uri, char *result); + +/** + * @brief Obtain the path where the URI is located. + * + * @param asset Pass in the URI to get the path. + * @param asset The result after processing. + * @return Returns the execution result. + * @return Returns a uri. + * @see fileuri + * @since 12 + */ +int OH_FileUri_GetFullDirectoryUri(const char *uri, char *result); + +/** + * @brief Check the correctness of the Uri. + * + * @param asset Pass in the URI to be checked. + * @param asset The result after processing. + * @return Returns the execution result. + * @return Returns true or false. + * @see fileuri + * @since 12 + */ +int OH_FileUri_CheckUriFormate(const char *uri, bool *result); +#ifdef __cplusplus +}; +#endif +#endif //FILE_URI_H diff --git a/interfaces/ndk/libnative_fileuir.ndk.json b/interfaces/ndk/libnative_fileuir.ndk.json new file mode 100644 index 0000000000000000000000000000000000000000..774616f3df2ad7a5787770cc188a5a3b3eb646a8 --- /dev/null +++ b/interfaces/ndk/libnative_fileuir.ndk.json @@ -0,0 +1,11 @@ +[ + {"name":"OH_FileUri_GetUriFromPath" }, + {"name":"OH_FileUri_GetPathFromUri" }, + {"name":"OH_FileUri_GetFullDirectoryUri" }, + {"name":"OH_FileUri_IsFileUri" }, + {"name":"OH_PersistPermission" }, + {"name":"OH_RevokePermission" }, + {"name":"OH_ActivatePermission" }, + {"name":"OH_DeactivatePermission" }, + {"name":"OH_CheckPermission" } +] \ No newline at end of file diff --git a/interfaces/ndk/src/file_uri.cpp b/interfaces/ndk/src/file_uri.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/interfaces/ndk/src/file_uri.h b/interfaces/ndk/src/file_uri.h new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test/unittest/file_permission_native/src/file_permission_test.cpp b/test/unittest/file_permission_native/src/file_permission_test.cpp index dab24d49470ee52805a512499cc49c05f484ac81..8cd957c697f19e25790dceb61eb61ba7194f17d5 100644 --- a/test/unittest/file_permission_native/src/file_permission_test.cpp +++ b/test/unittest/file_permission_native/src/file_permission_test.cpp @@ -42,7 +42,7 @@ namespace AppFileService { const char *g_fileManagerFullMountEnableParameter = "const.filemanager.full_mount.enable"; const std::string SET_POLICY_PERMISSION = "ohos.permission.SET_SANDBOX_POLICY"; const std::string ACCESS_PERSIST_PERMISSION = "ohos.permission.FILE_ACCESS_PERSIST"; -const std::string BundleName = "com.example.filesharea"; +const std::string BUNDLE_A = "com.example.filesharea"; uint64_t g_mockToken; OHOS::Security::AccessToken::PermissionStateFull g_testState1 = { .permissionName = SET_POLICY_PERMISSION, @@ -130,7 +130,7 @@ static bool CheckFileManagerFullMountEnable() HWTEST_F(FilePermissionTest, PersistPermission_test_0000, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin PersistPermission_test_0000"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); @@ -150,9 +150,9 @@ HWTEST_F(FilePermissionTest, PersistPermission_test_0000, testing::ext::TestSize HWTEST_F(FilePermissionTest, PersistPermission_test_0001, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin PersistPermission_test_0001"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; - UriPolicyInfo infoB = {.uri = "file://" + BundleName + "/storage", .mode = -1}; + UriPolicyInfo infoB = {.uri = "file://" + BUNDLE_A + "/storage", .mode = -1}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); uriPolicies.emplace_back(infoB); @@ -177,7 +177,7 @@ HWTEST_F(FilePermissionTest, PersistPermission_test_0001, testing::ext::TestSize HWTEST_F(FilePermissionTest, PersistPermission_test_0002, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin PersistPermission_test_0002"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage/test01.test", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage/test01.test", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); @@ -203,7 +203,7 @@ HWTEST_F(FilePermissionTest, PersistPermission_test_0002, testing::ext::TestSize HWTEST_F(FilePermissionTest, ActivatePermission_test_0000, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin ActivatePermission_test_0000"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); @@ -223,9 +223,9 @@ HWTEST_F(FilePermissionTest, ActivatePermission_test_0000, testing::ext::TestSiz HWTEST_F(FilePermissionTest, ActivatePermission_test_0001, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin ActivatePermission_test_0001"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; - UriPolicyInfo infoB = {.uri = "file://" + BundleName + "/storage", .mode = -1}; + UriPolicyInfo infoB = {.uri = "file://" + BUNDLE_A + "/storage", .mode = -1}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); uriPolicies.emplace_back(infoB); @@ -250,7 +250,7 @@ HWTEST_F(FilePermissionTest, ActivatePermission_test_0001, testing::ext::TestSiz HWTEST_F(FilePermissionTest, ActivatePermission_test_0002, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin ActivatePermission_test_0002"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage/test01.test", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage/test01.test", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); @@ -276,7 +276,7 @@ HWTEST_F(FilePermissionTest, ActivatePermission_test_0002, testing::ext::TestSiz HWTEST_F(FilePermissionTest, DeactivatePermission_test_0000, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin DeactivatePermission_test_0000"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); @@ -296,9 +296,9 @@ HWTEST_F(FilePermissionTest, DeactivatePermission_test_0000, testing::ext::TestS HWTEST_F(FilePermissionTest, DeactivatePermission_test_0001, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin DeactivatePermission_test_0001"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; - UriPolicyInfo infoB = {.uri = "file://" + BundleName + "/storage", .mode = -1}; + UriPolicyInfo infoB = {.uri = "file://" + BUNDLE_A + "/storage", .mode = -1}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); uriPolicies.emplace_back(infoB); @@ -323,7 +323,7 @@ HWTEST_F(FilePermissionTest, DeactivatePermission_test_0001, testing::ext::TestS HWTEST_F(FilePermissionTest, DeactivatePermission_test_0002, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin DeactivatePermission_test_0002"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage/test01.test", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage/test01.test", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); @@ -349,7 +349,7 @@ HWTEST_F(FilePermissionTest, DeactivatePermission_test_0002, testing::ext::TestS HWTEST_F(FilePermissionTest, RevokePermission_test_0000, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin RevokePermission_test_0000"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); @@ -369,9 +369,9 @@ HWTEST_F(FilePermissionTest, RevokePermission_test_0000, testing::ext::TestSize. HWTEST_F(FilePermissionTest, RevokePermission_test_0001, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin RevokePermission_test_0001"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; - UriPolicyInfo infoB = {.uri = "file://" + BundleName + "/storage", .mode = -1}; + UriPolicyInfo infoB = {.uri = "file://" + BUNDLE_A + "/storage", .mode = -1}; std::vector uriPolicies; uriPolicies.emplace_back(infoA); uriPolicies.emplace_back(infoB); @@ -396,7 +396,7 @@ HWTEST_F(FilePermissionTest, RevokePermission_test_0001, testing::ext::TestSize. HWTEST_F(FilePermissionTest, RevokePermission_test_0002, testing::ext::TestSize.Level1) { GTEST_LOG_(INFO) << "FileShareTest-begin RevokePermission_test_0002"; - UriPolicyInfo infoA = {.uri = "file://" + BundleName + "/storage/test01.test", + UriPolicyInfo infoA = {.uri = "file://" + BUNDLE_A + "/storage/test01.test", .mode = OperationMode::READ_MODE | OperationMode::WRITE_MODE}; std::vector uriPolicies; uriPolicies.emplace_back(infoA);