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 #ifndef FRAMEWORKS_SERVICES_MEDIA_FILE_EXTENTION_ABILITY_H_
16 #define FRAMEWORKS_SERVICES_MEDIA_FILE_EXTENTION_ABILITY_H_
17 
18 #include "file_access_ext_ability.h"
19 #include "file_filter.h"
20 #include "image_source.h"
21 #include "js_runtime.h"
22 
23 namespace OHOS {
24 namespace Media {
25 class MediaFileExtAbility : public FileAccessFwk::FileAccessExtAbility {
26 public:
27     MediaFileExtAbility(AbilityRuntime::JsRuntime& jsRuntime);
28     ~MediaFileExtAbility() override;
29     static MediaFileExtAbility* Create(const std::unique_ptr<AbilityRuntime::Runtime> &runtime);
30     void Init(const std::shared_ptr<AppExecFwk::AbilityLocalRecord> &record,
31         const std::shared_ptr<AppExecFwk::OHOSApplication> &application,
32         std::shared_ptr<AppExecFwk::AbilityHandler> &handler,
33         const sptr<IRemoteObject> &token) override;
34     void OnStart(const AAFwk::Want &want) override;
35     void OnStop() override;
36     sptr<IRemoteObject> OnConnect(const AAFwk::Want &want) override;
37 
38     int OpenFile(const Uri &uri, const int flags, int &fd) override;
39     int CreateFile(const Uri &parentUri, const std::string &displayName,  Uri &newFileUri) override;
40     int Mkdir(const Uri &parentUri, const std::string &displayName, Uri &newFileUri) override;
41     int Delete(const Uri &sourceFileUri) override;
42     int ListFile(const FileAccessFwk::FileInfo &parentInfo, const int64_t offset, const int64_t maxCount,
43         const FileAccessFwk::FileFilter &filter, std::vector<FileAccessFwk::FileInfo> &fileList) override;
44     int ScanFile(const FileAccessFwk::FileInfo &parentInfo, const int64_t offset, const int64_t maxCount,
45         const FileAccessFwk::FileFilter &filter, std::vector<FileAccessFwk::FileInfo> &fileList) override;
46     int Query(const Uri &uri, std::vector<std::string> &columns, std::vector<std::string> &results) override;
47     int GetRoots(std::vector<FileAccessFwk::RootInfo> &rootList) override;
48     int Move(const Uri &sourceFileUri, const Uri &targetParentUri, Uri &newFileUri) override;
49     int Copy(const Uri &sourceUri, const Uri &destUri, std::vector<FileAccessFwk::Result> &copyResult,
50         bool force = false) override;
51     int Rename(const Uri &sourceFileUri, const std::string &displayName, Uri &newFileUri) override;
52     int Access(const Uri &uri, bool &isExist) override;
53     int GetFileInfoFromUri(const Uri &selectFile, FileAccessFwk::FileInfo &fileInfo) override;
54     int GetFileInfoFromRelativePath(const std::string &relativePath, FileAccessFwk::FileInfo &fileInfo) override;
55 private:
56      AbilityRuntime::JsRuntime& jsRuntime_;
57 };
58 } // Media
59 } // OHOS
60 #endif // FRAMEWORKS_SERVICES_MEDIA_FILE_EXTENTION_ABILITY_H_