1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "napi/native_api.h"
17 #include "filemanagement/fileshare/oh_file_share.h"
18 #include <iostream>
19 #include "native_common.h"
20 #include "filemanagement/fileio/error_code.h"
21 #include "hilog/log.h"
22 #include <malloc.h>
23 #include <js_native_api_types.h>
24
FileShare_001(napi_env env, napi_callback_info info)25 static napi_value FileShare_001(napi_env env, napi_callback_info info)
26 {
27 static const uint32_t POLICY_NUM = 1;
28 char path[] =
29 "file://com.acts.storage.filesharendk/data/storage/el2/base/files/test1.txt";
30 FileShare_PolicyInfo policy[POLICY_NUM] = {
31 {path, sizeof(path) - 1, FileShare_OperationMode::READ_MODE}};
32 FileShare_PolicyErrorResult* result = nullptr;
33 uint32_t resultNum = 0;
34 auto ret = OH_FileShare_PersistPermission(policy, POLICY_NUM, &result, &resultNum);
35 napi_value result_1 = nullptr;
36 napi_create_int32(env, ret, &result_1);
37 if (result != nullptr) {
38 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
39 }
40 return result_1;
41 }
42
FileShare_002(napi_env env, napi_callback_info info)43 static napi_value FileShare_002(napi_env env, napi_callback_info info)
44 {
45 static const uint32_t POLICY_NUM = 2;
46 char path1[] =
47 "file://com.acts.storage.filesharendk/data/storage/el2/base/files/test2.txt";
48 char path2[] =
49 "file://com.acts.storage.filesharendk/data/storage/el2/base/files/test201.txt";
50 FileShare_PolicyInfo policy[POLICY_NUM] = {
51 {path1, sizeof(path1) - 1, FileShare_OperationMode::READ_MODE},
52 {path2, sizeof(path2) - 1, FileShare_OperationMode::WRITE_MODE}};
53 FileShare_PolicyErrorResult* result = nullptr;
54 uint32_t resultNum = 0;
55 auto ret = OH_FileShare_PersistPermission(policy, POLICY_NUM, &result, &resultNum);
56 napi_value result_1 = nullptr;
57 napi_create_int32(env, ret, &result_1);
58 if (result != nullptr) {
59 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
60 }
61 return result_1;
62 }
63
FileShare_003(napi_env env, napi_callback_info info)64 static napi_value FileShare_003(napi_env env, napi_callback_info info)
65 {
66 static const uint32_t POLICY_NUM = 1;
67 char path[] =
68 "file://com.acts.storage.filesharendk/data/storage/el2/base/files/test3.txt";
69 FileShare_PolicyInfo policy[POLICY_NUM] = {
70 {path, sizeof(path) - 1, FileShare_OperationMode::READ_MODE}};
71 FileShare_PolicyErrorResult* result = nullptr;
72 uint32_t resultNum = 0;
73 OH_FileShare_PersistPermission(policy, POLICY_NUM, &result, &resultNum);
74 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
75 auto ret = OH_FileShare_ActivatePermission(policy, POLICY_NUM, &result, &resultNum);
76 napi_value result_1 = nullptr;
77 napi_create_int32(env, ret, &result_1);
78 if (result != nullptr) {
79 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
80 }
81 return result_1;
82 }
83
FileShare_004(napi_env env, napi_callback_info info)84 static napi_value FileShare_004(napi_env env, napi_callback_info info)
85 {
86 static const uint32_t POLICY_NUM = 1;
87 char path[] =
88 "file://com.acts.storage.filesharendk/data/storage/el2/base/files/test4.txt";
89 FileShare_PolicyInfo policy[POLICY_NUM] = {
90 {path, sizeof(path) - 1, FileShare_OperationMode::READ_MODE}};
91 FileShare_PolicyErrorResult* result = nullptr;
92 uint32_t resultNum = 0;
93 OH_FileShare_PersistPermission(policy, POLICY_NUM, &result, &resultNum);
94 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
95 OH_FileShare_ActivatePermission(policy, POLICY_NUM, &result, &resultNum);
96 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
97 auto ret = OH_FileShare_DeactivatePermission(policy, POLICY_NUM, &result, &resultNum);
98 napi_value result_1 = nullptr;
99 napi_create_int32(env, ret, &result_1);
100 if (result != nullptr) {
101 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
102 }
103 return result_1;
104 }
105
FileShare_005(napi_env env, napi_callback_info info)106 static napi_value FileShare_005(napi_env env, napi_callback_info info)
107 {
108 static const uint32_t POLICY_NUM = 1;
109 char path[] =
110 "file://com.acts.storage.filesharendk/data/storage/el2/base/files/test5.txt";
111 FileShare_PolicyInfo policy[POLICY_NUM] = {
112 {path, sizeof(path) - 1, FileShare_OperationMode::READ_MODE}};
113 FileShare_PolicyErrorResult* result = nullptr;
114 uint32_t resultNum = 0;
115 OH_FileShare_PersistPermission(policy, POLICY_NUM, &result, &resultNum);
116 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
117 auto ret = OH_FileShare_RevokePermission(policy, POLICY_NUM, &result, &resultNum);
118 napi_value result_1 = nullptr;
119 napi_create_int32(env, ret, &result_1);
120 if (result != nullptr) {
121 OH_FileShare_ReleasePolicyErrorResult(result, resultNum);
122 }
123 return result_1;
124 }
125
FileShare_006(napi_env env, napi_callback_info info)126 static napi_value FileShare_006(napi_env env, napi_callback_info info)
127 {
128 char policyUriCharA[] =
129 "file://com.acts.storage.filesharendk/data/storage/el2/base/files/test6.txt";
130 FileShare_PolicyInfo policyA = {.uri = policyUriCharA,
131 .length = sizeof(policyUriCharA) - 1,
132 .operationMode =
133 FileShare_OperationMode::READ_MODE | FileShare_OperationMode::WRITE_MODE};
134 FileShare_PolicyInfo policiesA[] = {policyA};
135 unsigned int policiesNumA = sizeof(policiesA) / sizeof(policiesA[0]);
136 FileShare_PolicyErrorResult *resultPersist = nullptr;
137 unsigned int resultPersistNum;
138 OH_FileShare_PersistPermission(policiesA, policiesNumA, &resultPersist, &resultPersistNum);
139 OH_FileShare_ReleasePolicyErrorResult(resultPersist, resultPersistNum);
140 bool *result = nullptr;
141 unsigned int resultNum;
142 auto ret = OH_FileShare_CheckPersistentPermission(policiesA, policiesNumA, &result, &resultNum);
143 napi_value result_1 = nullptr;
144 napi_create_int32(env, ret, &result_1);
145 return result_1;
146 }
147
148 EXTERN_C_START
Init(napi_env env, napi_value exports)149 static napi_value Init(napi_env env, napi_value exports)
150 {
151 napi_property_descriptor desc[] = {
152 { "FileShare_001", nullptr, FileShare_001, nullptr, nullptr, nullptr, napi_default, nullptr },
153 { "FileShare_002", nullptr, FileShare_002, nullptr, nullptr, nullptr, napi_default, nullptr },
154 { "FileShare_003", nullptr, FileShare_003, nullptr, nullptr, nullptr, napi_default, nullptr },
155 { "FileShare_004", nullptr, FileShare_004, nullptr, nullptr, nullptr, napi_default, nullptr },
156 { "FileShare_005", nullptr, FileShare_005, nullptr, nullptr, nullptr, napi_default, nullptr },
157 { "FileShare_006", nullptr, FileShare_006, nullptr, nullptr, nullptr, napi_default, nullptr },
158 };
159 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
160 return exports;
161 }
162 EXTERN_C_END
163
164 static napi_module demoModule = {
165 .nm_version =1,
166 .nm_flags = 0,
167 .nm_filename = nullptr,
168 .nm_register_func = Init,
169 .nm_modname = "fileshare",
170 .nm_priv = ((void*)0),
171 .reserved = { 0 },
172 };
173
RegisterEntryModule(void)174 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
175 {
176 napi_module_register(&demoModule);
177 }
178