1 /*
2 * Copyright (c) 2022 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 "file_access_ext_stub_impl.h"
17
18 #include <cinttypes>
19
20 #include "file_access_framework_errno.h"
21 #include "hilog_wrapper.h"
22 #include "hitrace_meter.h"
23
24 namespace OHOS {
25 namespace FileAccessFwk {
GetOwner()26 std::shared_ptr<FileAccessExtAbility> FileAccessExtStubImpl::GetOwner()
27 {
28 return extension_;
29 }
30
OpenFile(const Uri & uri,const int flags,int & fd)31 int FileAccessExtStubImpl::OpenFile(const Uri &uri, const int flags, int &fd)
32 {
33 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "OpenFile");
34 if (extension_ == nullptr) {
35 HILOG_ERROR("OpenFile get extension failed.");
36 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
37 return E_IPCS;
38 }
39
40 int ret = extension_->OpenFile(uri, flags, fd);
41 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
42 return ret;
43 }
44
CreateFile(const Uri & parent,const std::string & displayName,Uri & newFile)45 int FileAccessExtStubImpl::CreateFile(const Uri &parent, const std::string &displayName, Uri &newFile)
46 {
47 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "CreateFile");
48 if (extension_ == nullptr) {
49 HILOG_ERROR("CreateFile get extension failed.");
50 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
51 return E_IPCS;
52 }
53
54 int ret = extension_->CreateFile(parent, displayName, newFile);
55 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
56 return ret;
57 }
58
Mkdir(const Uri & parent,const std::string & displayName,Uri & newFile)59 int FileAccessExtStubImpl::Mkdir(const Uri &parent, const std::string &displayName, Uri &newFile)
60 {
61 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "Mkdir");
62 if (extension_ == nullptr) {
63 HILOG_ERROR("Mkdir get extension failed.");
64 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
65 return E_IPCS;
66 }
67
68 int ret = extension_->Mkdir(parent, displayName, newFile);
69 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
70 return ret;
71 }
72
Delete(const Uri & sourceFile)73 int FileAccessExtStubImpl::Delete(const Uri &sourceFile)
74 {
75 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "Delete");
76 if (extension_ == nullptr) {
77 HILOG_ERROR("Delete get extension failed.");
78 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
79 return E_IPCS;
80 }
81
82 int ret = extension_->Delete(sourceFile);
83 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
84 return ret;
85 }
86
Move(const Uri & sourceFile,const Uri & targetParent,Uri & newFile)87 int FileAccessExtStubImpl::Move(const Uri &sourceFile, const Uri &targetParent, Uri &newFile)
88 {
89 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "Move");
90 if (extension_ == nullptr) {
91 HILOG_ERROR("Move get extension failed.");
92 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
93 return E_IPCS;
94 }
95
96 int ret = extension_->Move(sourceFile, targetParent, newFile);
97 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
98 return ret;
99 }
100
Rename(const Uri & sourceFile,const std::string & displayName,Uri & newFile)101 int FileAccessExtStubImpl::Rename(const Uri &sourceFile, const std::string &displayName, Uri &newFile)
102 {
103 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "Rename");
104 if (extension_ == nullptr) {
105 HILOG_ERROR("Rename get extension failed.");
106 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
107 return E_IPCS;
108 }
109
110 int ret = extension_->Rename(sourceFile, displayName, newFile);
111 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
112 return ret;
113 }
114
ListFile(const FileInfo & fileInfo,const int64_t offset,const int64_t maxCount,const FileFilter & filter,std::vector<FileInfo> & fileInfoVec)115 int FileAccessExtStubImpl::ListFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount,
116 const FileFilter &filter, std::vector<FileInfo> &fileInfoVec)
117 {
118 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "ListFile");
119 if (extension_ == nullptr) {
120 HILOG_ERROR("ListFile get extension failed.");
121 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
122 return E_IPCS;
123 }
124
125 int ret = extension_->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
126 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
127 return ret;
128 }
129
ScanFile(const FileInfo & fileInfo,const int64_t offset,const int64_t maxCount,const FileFilter & filter,std::vector<FileInfo> & fileInfoVec)130 int FileAccessExtStubImpl::ScanFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount,
131 const FileFilter &filter, std::vector<FileInfo> &fileInfoVec)
132 {
133 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "ScanFile");
134 if (extension_ == nullptr) {
135 HILOG_ERROR("ScanFile get extension failed.");
136 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
137 return E_IPCS;
138 }
139
140 int ret = extension_->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
141 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
142 return ret;
143 }
144
GetRoots(std::vector<RootInfo> & rootInfoVec)145 int FileAccessExtStubImpl::GetRoots(std::vector<RootInfo> &rootInfoVec)
146 {
147 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "GetRoots");
148 if (extension_ == nullptr) {
149 HILOG_ERROR("GetRoots get extension failed.");
150 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
151 return E_IPCS;
152 }
153
154 int ret = extension_->GetRoots(rootInfoVec);
155 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
156 return ret;
157 }
158
UriToFileInfo(const Uri & selectFile,FileInfo & fileInfo)159 int FileAccessExtStubImpl::UriToFileInfo(const Uri &selectFile, FileInfo &fileInfo)
160 {
161 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "UriToFileInfo");
162 if (extension_ == nullptr) {
163 HILOG_ERROR("UriToFileInfo get extension failed.");
164 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
165 return E_IPCS;
166 }
167
168 int ret = extension_->UriToFileInfo(selectFile, fileInfo);
169 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
170 return ret;
171 }
172
Access(const Uri & uri,bool & isExist)173 int FileAccessExtStubImpl::Access(const Uri &uri, bool &isExist)
174 {
175 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "Access");
176 if (extension_ == nullptr) {
177 HILOG_ERROR("Access get extension failed.");
178 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
179 return E_IPCS;
180 }
181
182 int ret = extension_->Access(uri, isExist);
183 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
184 return ret;
185 }
186
RegisterNotify(sptr<IFileAccessNotify> & notify)187 int FileAccessExtStubImpl::RegisterNotify(sptr<IFileAccessNotify> ¬ify)
188 {
189 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "RegisterNotify");
190 auto extension = GetOwner();
191 if (extension == nullptr) {
192 HILOG_ERROR("get extension failed.");
193 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
194 return E_IPCS;
195 }
196
197 int ret = extension->RegisterNotify(notify);
198 if (ret != ERR_OK) {
199 HILOG_ERROR("RegisterNotify failed.");
200 }
201 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
202 return ret;
203 }
204
UnregisterNotify(sptr<IFileAccessNotify> & notify)205 int FileAccessExtStubImpl::UnregisterNotify(sptr<IFileAccessNotify> ¬ify)
206 {
207 StartTrace(HITRACE_TAG_FILEMANAGEMENT, "UnregisterNotify");
208 auto extension = GetOwner();
209 if (extension == nullptr) {
210 HILOG_ERROR("get extension failed.");
211 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
212 return E_IPCS;
213 }
214
215 int ret = extension->UnregisterNotify(notify);
216 if (ret != ERR_OK) {
217 HILOG_ERROR("UnregisterNotify failed.");
218 }
219 FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
220 return ret;
221 }
222 } // namespace FileAccessFwk
223 } // namespace OHOS