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