• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "user_access_tracer.h"
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     UserAccessTracer trace;
34     trace.Start("OpenFile");
35     if (extension_ == nullptr) {
36         HILOG_ERROR("OpenFile get extension failed.");
37         return E_IPCS;
38     }
39 
40     int ret = extension_->OpenFile(uri, flags, fd);
41     return ret;
42 }
43 
CreateFile(const Uri & parent,const std::string & displayName,Uri & newFile)44 int FileAccessExtStubImpl::CreateFile(const Uri &parent, const std::string &displayName, Uri &newFile)
45 {
46     UserAccessTracer trace;
47     trace.Start("CreateFile");
48     if (extension_ == nullptr) {
49         HILOG_ERROR("CreateFile get extension failed.");
50         return E_IPCS;
51     }
52 
53     int ret = extension_->CreateFile(parent, displayName, newFile);
54     return ret;
55 }
56 
Mkdir(const Uri & parent,const std::string & displayName,Uri & newFile)57 int FileAccessExtStubImpl::Mkdir(const Uri &parent, const std::string &displayName, Uri &newFile)
58 {
59     UserAccessTracer trace;
60     trace.Start("Mkdir");
61     if (extension_ == nullptr) {
62         HILOG_ERROR("Mkdir get extension failed.");
63         return E_IPCS;
64     }
65 
66     int ret = extension_->Mkdir(parent, displayName, newFile);
67     return ret;
68 }
69 
Delete(const Uri & sourceFile)70 int FileAccessExtStubImpl::Delete(const Uri &sourceFile)
71 {
72     UserAccessTracer trace;
73     trace.Start("Delete");
74     if (extension_ == nullptr) {
75         HILOG_ERROR("Delete get extension failed.");
76         return E_IPCS;
77     }
78 
79     int ret = extension_->Delete(sourceFile);
80     return ret;
81 }
82 
Move(const Uri & sourceFile,const Uri & targetParent,Uri & newFile)83 int FileAccessExtStubImpl::Move(const Uri &sourceFile, const Uri &targetParent, Uri &newFile)
84 {
85     UserAccessTracer trace;
86     trace.Start("Move");
87     if (extension_ == nullptr) {
88         HILOG_ERROR("Move get extension failed.");
89         return E_IPCS;
90     }
91 
92     int ret = extension_->Move(sourceFile, targetParent, newFile);
93     return ret;
94 }
95 
Copy(const Uri & sourceUri,const Uri & destUri,std::vector<CopyResult> & copyResult,bool force)96 int FileAccessExtStubImpl::Copy(const Uri &sourceUri, const Uri &destUri, std::vector<CopyResult> &copyResult,
97     bool force)
98 {
99     UserAccessTracer trace;
100     trace.Start("Copy");
101     if (extension_ == nullptr) {
102         HILOG_ERROR("Copy get extension failed.");
103         return E_IPCS;
104     }
105     int ret = extension_->Copy(sourceUri, destUri, copyResult, force);
106     return ret;
107 }
108 
Rename(const Uri & sourceFile,const std::string & displayName,Uri & newFile)109 int FileAccessExtStubImpl::Rename(const Uri &sourceFile, const std::string &displayName, Uri &newFile)
110 {
111     UserAccessTracer trace;
112     trace.Start("Rename");
113     if (extension_ == nullptr) {
114         HILOG_ERROR("Rename get extension failed.");
115         return E_IPCS;
116     }
117 
118     int ret = extension_->Rename(sourceFile, displayName, newFile);
119     return ret;
120 }
121 
ListFile(const FileInfo & fileInfo,const int64_t offset,const int64_t maxCount,const FileFilter & filter,std::vector<FileInfo> & fileInfoVec)122 int FileAccessExtStubImpl::ListFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount,
123     const FileFilter &filter, std::vector<FileInfo> &fileInfoVec)
124 {
125     UserAccessTracer trace;
126     trace.Start("ListFile");
127     if (extension_ == nullptr) {
128         HILOG_ERROR("ListFile get extension failed.");
129         return E_IPCS;
130     }
131 
132     int ret = extension_->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
133     return ret;
134 }
135 
ScanFile(const FileInfo & fileInfo,const int64_t offset,const int64_t maxCount,const FileFilter & filter,std::vector<FileInfo> & fileInfoVec)136 int FileAccessExtStubImpl::ScanFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount,
137     const FileFilter &filter, std::vector<FileInfo> &fileInfoVec)
138 {
139     UserAccessTracer trace;
140     trace.Start("ScanFile");
141     if (extension_ == nullptr) {
142         HILOG_ERROR("ScanFile get extension failed.");
143         return E_IPCS;
144     }
145 
146     int ret = extension_->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
147     return ret;
148 }
149 
Query(const Uri & uri,std::vector<std::string> & columns,std::vector<std::string> & results)150 int FileAccessExtStubImpl::Query(const Uri &uri, std::vector<std::string> &columns, std::vector<std::string> &results)
151 {
152     UserAccessTracer trace;
153     trace.Start("Query");
154     if (extension_ == nullptr) {
155         HILOG_ERROR("Query get extension failed.");
156         return E_IPCS;
157     }
158 
159     int ret = extension_->Query(uri, columns, results);
160     return ret;
161 }
162 
GetRoots(std::vector<RootInfo> & rootInfoVec)163 int FileAccessExtStubImpl::GetRoots(std::vector<RootInfo> &rootInfoVec)
164 {
165     UserAccessTracer trace;
166     trace.Start("GetRoots");
167     if (extension_ == nullptr) {
168         HILOG_ERROR("GetRoots get extension failed.");
169         return E_IPCS;
170     }
171 
172     int ret = extension_->GetRoots(rootInfoVec);
173     return ret;
174 }
175 
GetThumbnail(const Uri & uri,const ThumbnailSize & thumbnailSize,std::shared_ptr<PixelMap> & pixelMap)176 int FileAccessExtStubImpl::GetThumbnail(const Uri &uri, const ThumbnailSize &thumbnailSize,
177     std::shared_ptr<PixelMap> &pixelMap)
178 {
179     UserAccessTracer trace;
180     trace.Start("GetThumbnail");
181     if (extension_ == nullptr) {
182         HILOG_ERROR("GetThumbnail get extension failed.");
183         return E_IPCS;
184     }
185     std::unique_ptr<PixelMap> tempPtr;
186     Size size{ thumbnailSize.width, thumbnailSize.height };
187     int ret = extension_->GetThumbnail(uri, size, tempPtr);
188     if (ret != ERR_OK) {
189         HILOG_ERROR("GetThumbnail failed.");
190         return ret;
191     }
192     pixelMap = std::move(tempPtr);
193     return ret;
194 }
195 
GetFileInfoFromUri(const Uri & selectFile,FileInfo & fileInfo)196 int FileAccessExtStubImpl::GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo)
197 {
198     UserAccessTracer trace;
199     trace.Start("GetFileInfoFromUri");
200     if (extension_ == nullptr) {
201         HILOG_ERROR("GetFileInfoFromUri get extension failed.");
202         return E_IPCS;
203     }
204 
205     int ret = extension_->GetFileInfoFromUri(selectFile, fileInfo);
206     return ret;
207 }
208 
GetFileInfoFromRelativePath(const std::string & selectFile,FileInfo & fileInfo)209 int FileAccessExtStubImpl::GetFileInfoFromRelativePath(const std::string &selectFile, FileInfo &fileInfo)
210 {
211     UserAccessTracer trace;
212     trace.Start("GetFileInfoFromRelativePath");
213     if (extension_ == nullptr) {
214         HILOG_ERROR("GetFileInfoFromRelativePath get extension failed.");
215         return E_IPCS;
216     }
217 
218     int ret = extension_->GetFileInfoFromRelativePath(selectFile, fileInfo);
219     return ret;
220 }
221 
Access(const Uri & uri,bool & isExist)222 int FileAccessExtStubImpl::Access(const Uri &uri, bool &isExist)
223 {
224     UserAccessTracer trace;
225     trace.Start("Access");
226     if (extension_ == nullptr) {
227         HILOG_ERROR("Access get extension failed.");
228         return E_IPCS;
229     }
230 
231     int ret = extension_->Access(uri, isExist);
232     return ret;
233 }
234 
StartWatcher(const Uri & uri)235 int FileAccessExtStubImpl::StartWatcher(const Uri &uri)
236 {
237     UserAccessTracer trace;
238     trace.Start("StartWatcher");
239     if (extension_ == nullptr) {
240         HILOG_ERROR("StartWatcher get extension failed.");
241         return E_IPCS;
242     }
243 
244     int ret = extension_->StartWatcher(uri);
245     return ret;
246 }
247 
StopWatcher(const Uri & uri,bool isUnregisterAll)248 int FileAccessExtStubImpl::StopWatcher(const Uri &uri, bool isUnregisterAll)
249 {
250     UserAccessTracer trace;
251     trace.Start("StopWatcher");
252     if (extension_ == nullptr) {
253         HILOG_ERROR("StopWatcher get extension failed.");
254         return E_IPCS;
255     }
256 
257     int ret = extension_->StopWatcher(uri, isUnregisterAll);
258     return ret;
259 }
260 } // namespace FileAccessFwk
261 } // namespace OHOS
262