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 #ifndef FILE_ACCESS_EXT_ABILITY_H 17 #define FILE_ACCESS_EXT_ABILITY_H 18 19 #include "extension_base.h" 20 #include "file_access_extension_info.h" 21 #include "file_access_observer_common.h" 22 #include "file_filter.h" 23 24 namespace OHOS { 25 namespace AbilityRuntime { 26 class Runtime; 27 } 28 namespace FileAccessFwk { 29 using namespace AbilityRuntime; 30 class FileAccessExtAbility; 31 using CreatorFunc = std::function<FileAccessExtAbility* (const std::unique_ptr<Runtime>& runtime)>; 32 class FileAccessExtAbility : public ExtensionBase<> { 33 public: 34 FileAccessExtAbility() = default; 35 virtual ~FileAccessExtAbility() = default; 36 37 virtual void Init(const std::shared_ptr<AbilityLocalRecord> &record, 38 const std::shared_ptr<OHOSApplication> &application, 39 std::shared_ptr<AbilityHandler> &handler, 40 const sptr<IRemoteObject> &token) override; 41 42 static FileAccessExtAbility* Create(const std::unique_ptr<Runtime>& runtime); 43 44 virtual int OpenFile(const Uri &uri, const int flags, int &fd); 45 virtual int CreateFile(const Uri &parent, const std::string &displayName, Uri &newFile); 46 virtual int Mkdir(const Uri &parent, const std::string &displayName, Uri &newFile); 47 virtual int Delete(const Uri &sourceFile); 48 virtual int Move(const Uri &sourceFile, const Uri &targetParent, Uri &newFile); 49 virtual int Copy(const Uri &sourceUri, const Uri &destUri, std::vector<Result> ©Result, bool force = false); 50 virtual int CopyFile(const Uri &sourceUri, const Uri &destUri, const std::string &fileName, Uri &newFileUri); 51 virtual int Rename(const Uri &sourceFile, const std::string &displayName, Uri &newFile); 52 virtual int ListFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount, 53 const FileFilter &filter, std::vector<FileInfo> &fileInfoVec); 54 virtual int ScanFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount, 55 const FileFilter &filter, std::vector<FileInfo> &fileInfoVec); 56 virtual int Query(const Uri &uri, std::vector<std::string> &columns, std::vector<std::string> &results); 57 virtual int GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo); 58 virtual int GetFileInfoFromRelativePath(const std::string &selectFile, FileInfo &fileInfo); 59 virtual int GetRoots(std::vector<RootInfo> &rootInfoVec); 60 virtual int Access(const Uri &uri, bool &isExist); 61 static void SetCreator(const CreatorFunc& creator); 62 virtual int StartWatcher(const Uri &uri); 63 virtual int StopWatcher(const Uri &uri); 64 virtual int MoveItem(const Uri &sourceFile, const Uri &targetParent, std::vector<Result> &moveResult, 65 bool force = false); 66 virtual int MoveFile(const Uri &sourceFile, const Uri &targetParent, std::string &fileName, Uri &newFile); 67 virtual int GetFileInfoNum(const std::string &sourceFileUri, const FileFilter &filter, bool recursion, 68 uint32_t &counts); 69 private: 70 static CreatorFunc creator_; 71 }; 72 } // namespace FileAccessFwk 73 } // namespace OHOS 74 #endif // FILE_ACCESS_EXT_ABILITY_H