From 5dd337ecee5a4814a3e9ce0879dfa6d16d3642fa Mon Sep 17 00:00:00 2001 From: dengjun Date: Wed, 27 Dec 2023 16:18:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8E=BB=E9=99=A4GetThumbnail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dengjun --- .../napi_fileaccess_helper.cpp | 81 ------------------- .../napi_fileaccess_helper.h | 1 - .../include/file_access_ext_ability.h | 1 - .../include/file_access_ext_proxy.h | 2 - .../include/file_access_ext_stub.h | 1 - .../include/file_access_ext_stub_impl.h | 1 - .../include/file_access_extension_info.h | 38 --------- .../file_access/include/file_access_helper.h | 1 - .../include/ifile_access_ext_base.h | 2 - .../src/file_access_ext_ability.cpp | 6 -- .../file_access/src/file_access_ext_proxy.cpp | 60 -------------- .../file_access/src/file_access_ext_stub.cpp | 33 -------- .../src/file_access_ext_stub_impl.cpp | 20 ----- .../file_access/src/file_access_helper.cpp | 35 -------- test/fuzztest/BUILD.gn | 1 - 15 files changed, 283 deletions(-) diff --git a/frameworks/js/napi/file_access_module/napi_fileaccess_helper.cpp b/frameworks/js/napi/file_access_module/napi_fileaccess_helper.cpp index 67a2d754..f8149116 100644 --- a/frameworks/js/napi/file_access_module/napi_fileaccess_helper.cpp +++ b/frameworks/js/napi/file_access_module/napi_fileaccess_helper.cpp @@ -223,7 +223,6 @@ napi_value FileAccessHelperInit(napi_env env, napi_value exports) DECLARE_NAPI_FUNCTION("access", NAPI_Access), DECLARE_NAPI_FUNCTION("getFileInfoFromUri", NAPI_GetFileInfoFromUri), DECLARE_NAPI_FUNCTION("getFileInfoFromRelativePath", NAPI_GetFileInfoFromRelativePath), - DECLARE_NAPI_FUNCTION("getThumbnail", NAPI_GetThumbnail), DECLARE_NAPI_FUNCTION("registerObserver", NAPI_RegisterObserver), DECLARE_NAPI_FUNCTION("unregisterObserver", NAPI_UnregisterObserver), DECLARE_NAPI_FUNCTION("moveItem", NAPI_MoveItem), @@ -1137,90 +1136,10 @@ napi_value NAPI_GetFileInfoFromRelativePath(napi_env env, napi_callback_info inf return NAsyncWorkCallback(env, thisVar, cb).Schedule(procedureName, cbExec, cbComplete).val_; } -static bool parseGetThumbnailArgs(napi_env env, NFuncArg &nArg, std::string &uri, ThumbnailSize &thumbnailSize) -{ - bool succ = false; - std::unique_ptr uriPtr; - std::tie(succ, uriPtr, std::ignore) = NVal(env, nArg[NARG_POS::FIRST]).ToUTF8String(); - if (!succ) { - return false; - } - uri.assign(uriPtr.get()); - - NVal nSize(env, nArg[NARG_POS::SECOND]); - if (!(nSize.HasProp("width") && nSize.HasProp("height"))) { - return false; - } - - succ = false; - std::tie(succ, thumbnailSize.width) = nSize.GetProp("width").ToInt32(); - if (!succ) { - return false; - } - - std::tie(succ, thumbnailSize.height) = nSize.GetProp("height").ToInt32(); - if (!succ) { - return false; - } - return succ; -} - struct PixelMapWrapper { std::shared_ptr pixelMap = nullptr; }; -napi_value NAPI_GetThumbnail(napi_env env, napi_callback_info info) -{ - NFuncArg funcArg(env, info); - if (!funcArg.InitArgs(NARG_CNT::TWO, NARG_CNT::THREE)) { - NError(EINVAL).ThrowErr(env); - return nullptr; - } - - std::string uriString; - ThumbnailSize thumbnailSize; - if (!parseGetThumbnailArgs(env, funcArg, uriString, thumbnailSize)) { - NError(EINVAL).ThrowErr(env); - return nullptr; - } - - FileAccessHelper *fileAccessHelper = GetFileAccessHelper(env, funcArg.GetThisVar()); - if (fileAccessHelper == nullptr) { - NError(EINVAL).ThrowErr(env); - return nullptr; - } - - auto wrapper = std::make_shared(); - auto cbExec = [fileAccessHelper, uriString, thumbnailSize, wrapper]() -> NError { - OHOS::Uri uri(uriString); - ThumbnailSize size = thumbnailSize; - int ret = fileAccessHelper->GetThumbnail(uri, size, wrapper->pixelMap); - return NError(ret); - }; - - auto cbComplete = [wrapper](napi_env env, NError err) -> NVal { - if (err) { - return { env, err.GetNapiErr(env) }; - } - - napi_value nPixelmap = Media::PixelMapNapi::CreatePixelMap(env, wrapper->pixelMap); - return { env, nPixelmap }; - }; - - const std::string procedureName = "getThumbnail"; - NVal thisVar(env, funcArg.GetThisVar()); - if (funcArg.GetArgc() == NARG_CNT::TWO) { - return NAsyncWorkPromise(env, thisVar).Schedule(procedureName, cbExec, cbComplete).val_; - } - - NVal cb(env, funcArg[NARG_POS::THIRD]); - if (!cb.TypeIs(napi_function)) { - NError(EINVAL).ThrowErr(env); - return nullptr; - } - return NAsyncWorkCallback(env, thisVar, cb).Schedule(procedureName, cbExec, cbComplete).val_; -} - struct FileObserverCallbackWrapper { sptr callback; }; diff --git a/frameworks/js/napi/file_access_module/napi_fileaccess_helper.h b/frameworks/js/napi/file_access_module/napi_fileaccess_helper.h index 2a845b87..fb61af0a 100644 --- a/frameworks/js/napi/file_access_module/napi_fileaccess_helper.h +++ b/frameworks/js/napi/file_access_module/napi_fileaccess_helper.h @@ -37,7 +37,6 @@ namespace FileAccessFwk { napi_value NAPI_Access(napi_env env, napi_callback_info info); napi_value NAPI_GetFileInfoFromUri(napi_env env, napi_callback_info info); napi_value NAPI_GetFileInfoFromRelativePath(napi_env env, napi_callback_info info); - napi_value NAPI_GetThumbnail(napi_env env, napi_callback_info info); napi_value NAPI_RegisterObserver(napi_env env, napi_callback_info info); napi_value NAPI_UnregisterObserver(napi_env env, napi_callback_info info); napi_value NAPI_MoveItem(napi_env env, napi_callback_info info); diff --git a/interfaces/inner_api/file_access/include/file_access_ext_ability.h b/interfaces/inner_api/file_access/include/file_access_ext_ability.h index 5febc8ae..27ba881d 100644 --- a/interfaces/inner_api/file_access/include/file_access_ext_ability.h +++ b/interfaces/inner_api/file_access/include/file_access_ext_ability.h @@ -55,7 +55,6 @@ public: const FileFilter &filter, std::vector &fileInfoVec); virtual int ScanFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount, const FileFilter &filter, std::vector &fileInfoVec); - virtual int GetThumbnail(const Uri &uri, const Size &size, std::unique_ptr &pixelMap); virtual int Query(const Uri &uri, std::vector &columns, std::vector &results); virtual int GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo); virtual int GetFileInfoFromRelativePath(const std::string &selectFile, FileInfo &fileInfo); diff --git a/interfaces/inner_api/file_access/include/file_access_ext_proxy.h b/interfaces/inner_api/file_access/include/file_access_ext_proxy.h index 5714a8bc..ce5bfcf0 100644 --- a/interfaces/inner_api/file_access/include/file_access_ext_proxy.h +++ b/interfaces/inner_api/file_access/include/file_access_ext_proxy.h @@ -52,8 +52,6 @@ public: SharedMemoryInfo &memInfo) override; virtual int ScanFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount, const FileFilter &filter, std::vector &fileInfoVec) override; - virtual int GetThumbnail(const Uri &uri, const ThumbnailSize &thumbnailSize, - std::shared_ptr &pixelMap) override; virtual int Query(const Uri &uri, std::vector &columns, std::vector &results) override; virtual int GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo) override; virtual int GetFileInfoFromRelativePath(const std::string &selectFile, FileInfo &fileInfo) override; diff --git a/interfaces/inner_api/file_access/include/file_access_ext_stub.h b/interfaces/inner_api/file_access/include/file_access_ext_stub.h index a73dccc1..b32f5473 100644 --- a/interfaces/inner_api/file_access/include/file_access_ext_stub.h +++ b/interfaces/inner_api/file_access/include/file_access_ext_stub.h @@ -45,7 +45,6 @@ private: ErrCode CmdRename(MessageParcel &data, MessageParcel &reply); ErrCode CmdListFile(MessageParcel &data, MessageParcel &reply); ErrCode CmdScanFile(MessageParcel &data, MessageParcel &reply); - ErrCode CmdGetThumbnail(MessageParcel &data, MessageParcel &reply); ErrCode CmdQuery(MessageParcel &data, MessageParcel &reply); ErrCode CmdGetFileInfoFromUri(MessageParcel &data, MessageParcel &reply); ErrCode CmdGetFileInfoFromRelativePath(MessageParcel &data, MessageParcel &reply); diff --git a/interfaces/inner_api/file_access/include/file_access_ext_stub_impl.h b/interfaces/inner_api/file_access/include/file_access_ext_stub_impl.h index 5049a657..3be87187 100644 --- a/interfaces/inner_api/file_access/include/file_access_ext_stub_impl.h +++ b/interfaces/inner_api/file_access/include/file_access_ext_stub_impl.h @@ -50,7 +50,6 @@ public: SharedMemoryInfo &memInfo) override; int ScanFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount, const FileFilter &filter, std::vector &fileInfoVec) override; - int GetThumbnail(const Uri &uri, const ThumbnailSize &thumbnailSize, std::shared_ptr &pixelMap) override; int Query(const Uri &uri, std::vector &columns, std::vector &results) override; int GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo) override; int GetFileInfoFromRelativePath(const std::string &selectFile, FileInfo &fileInfo) override; diff --git a/interfaces/inner_api/file_access/include/file_access_extension_info.h b/interfaces/inner_api/file_access/include/file_access_extension_info.h index e4ebd240..ffae0db8 100644 --- a/interfaces/inner_api/file_access/include/file_access_extension_info.h +++ b/interfaces/inner_api/file_access/include/file_access_extension_info.h @@ -215,44 +215,6 @@ public: } }; -struct ThumbnailSize : public virtual OHOS::Parcelable { -public: - int32_t width { 0 }; - int32_t height { 0 }; - - bool ReadFromParcel(Parcel &parcel) - { - width = parcel.ReadInt32(); - height = parcel.ReadInt32(); - return true; - } - - virtual bool Marshalling(Parcel &parcel) const override - { - if (!parcel.WriteInt32(width)) { - return false; - } - if (!parcel.WriteInt32(height)) { - return false; - } - return true; - } - - static ThumbnailSize *Unmarshalling(Parcel &parcel) - { - ThumbnailSize *size = new (std::nothrow) ThumbnailSize(); - if (size == nullptr) { - return nullptr; - } - - if (!size->ReadFromParcel(parcel)) { - delete size; - size = nullptr; - } - return size; - } -}; - enum ResultType { STRING_TYPE = 1, INT32_TYPE, diff --git a/interfaces/inner_api/file_access/include/file_access_helper.h b/interfaces/inner_api/file_access/include/file_access_helper.h index bf1e9ae4..bff85924 100644 --- a/interfaces/inner_api/file_access/include/file_access_helper.h +++ b/interfaces/inner_api/file_access/include/file_access_helper.h @@ -82,7 +82,6 @@ public: int ListFile(const FileInfo &fileInfo, const int64_t offset, const FileFilter &filter, SharedMemoryInfo &memInfo); int ScanFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount, const FileFilter &filter, std::vector &fileInfoVec); - int GetThumbnail(Uri &uri, ThumbnailSize &thumbnailSize, std::shared_ptr &pixelMap); int Query(Uri &uri, std::string &metaJson); int GetFileInfoFromUri(Uri &selectFile, FileInfo &fileInfo); int GetFileInfoFromRelativePath(std::string &selectFile, FileInfo &fileInfo); diff --git a/interfaces/inner_api/file_access/include/ifile_access_ext_base.h b/interfaces/inner_api/file_access/include/ifile_access_ext_base.h index 145f4914..80c81a86 100644 --- a/interfaces/inner_api/file_access/include/ifile_access_ext_base.h +++ b/interfaces/inner_api/file_access/include/ifile_access_ext_base.h @@ -73,8 +73,6 @@ public: const FileFilter &filter, SharedMemoryInfo &memInfo) = 0; virtual int ScanFile(const FileInfo &fileInfo, const int64_t offset, const int64_t maxCount, const FileFilter &filter, std::vector &fileInfoVec) = 0; - virtual int GetThumbnail(const Uri &uri, const ThumbnailSize &thumbnailSize, - std::shared_ptr &pixelMap) = 0; virtual int Query(const Uri &uri, std::vector &columns, std::vector &results) = 0; virtual int GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo) = 0; virtual int GetFileInfoFromRelativePath(const std::string &selectFile, FileInfo &fileInfo) = 0; diff --git a/interfaces/inner_api/file_access/src/file_access_ext_ability.cpp b/interfaces/inner_api/file_access/src/file_access_ext_ability.cpp index 29cca7b5..beabc47f 100644 --- a/interfaces/inner_api/file_access/src/file_access_ext_ability.cpp +++ b/interfaces/inner_api/file_access/src/file_access_ext_ability.cpp @@ -136,12 +136,6 @@ int FileAccessExtAbility::GetRoots(std::vector &rootInfoVec) return EPERM; } -int FileAccessExtAbility::GetThumbnail(const Uri &uri, const Size &size, std::unique_ptr &pixelMap) -{ - HILOG_ERROR("FileAccessExtAbility::GetThumbnail Undefined operation"); - return EPERM; -} - int FileAccessExtAbility::GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo) { HILOG_ERROR("FileAccessExtAbility::GetFileInfoFromUri Undefined operation"); diff --git a/interfaces/inner_api/file_access/src/file_access_ext_proxy.cpp b/interfaces/inner_api/file_access/src/file_access_ext_proxy.cpp index d55372a3..f4276d45 100644 --- a/interfaces/inner_api/file_access/src/file_access_ext_proxy.cpp +++ b/interfaces/inner_api/file_access/src/file_access_ext_proxy.cpp @@ -789,66 +789,6 @@ int FileAccessExtProxy::GetRoots(std::vector &rootInfoVec) return ERR_OK; } -static int WriteThumbnailArgs(MessageParcel &data, const Uri &uri, const ThumbnailSize &thumbnailSize) -{ - if (!data.WriteInterfaceToken(FileAccessExtProxy::GetDescriptor())) { - HILOG_ERROR("WriteInterfaceToken failed"); - return E_IPCS; - } - std::string insideInputUri = uri.ToString(); - if (!data.WriteString(insideInputUri)) { - HILOG_ERROR("fail to WriteParcelable selectfile"); - return E_IPCS; - } - - if (!data.WriteParcelable(&thumbnailSize)) { - HILOG_ERROR("fail to WriteParcelable thumbnailSize"); - return E_IPCS; - } - return ERR_OK; -} - -int FileAccessExtProxy::GetThumbnail(const Uri &uri, const ThumbnailSize &thumbnailSize, - std::shared_ptr &pixelMap) -{ - UserAccessTracer trace; - trace.Start("GetThumbnail"); - MessageParcel data; - int err = WriteThumbnailArgs(data, uri, thumbnailSize); - if (err != ERR_OK) { - HILOG_ERROR("fail to WriteThumbnailArgs. err: %{public}d", err); - return err; - } - - MessageParcel reply; - MessageOption option; - err = Remote()->SendRequest(CMD_GET_THUMBNAIL, data, reply, option); - if (err != ERR_OK) { - HILOG_ERROR("fail to SendRequest. err: %{public}d", err); - return err; - } - - int ret = E_IPCS; - if (!reply.ReadInt32(ret)) { - HILOG_ERROR("Parameter GetThumbnail fail to WriteInt32 ret"); - return E_IPCS; - } - - if (ret != ERR_OK) { - HILOG_ERROR("GetThumbnail operation failed ret : %{public}d", ret); - return ret; - } - - std::shared_ptr tempPixelMap(reply.ReadParcelable()); - if (tempPixelMap == nullptr) { - HILOG_ERROR("ReadParcelable value is nullptr."); - return E_IPCS; - } - pixelMap = tempPixelMap; - - return ERR_OK; -} - int FileAccessExtProxy::GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo) { UserAccessTracer trace; diff --git a/interfaces/inner_api/file_access/src/file_access_ext_stub.cpp b/interfaces/inner_api/file_access/src/file_access_ext_stub.cpp index 9c5aa555..9743fd85 100644 --- a/interfaces/inner_api/file_access/src/file_access_ext_stub.cpp +++ b/interfaces/inner_api/file_access/src/file_access_ext_stub.cpp @@ -57,7 +57,6 @@ FileAccessExtStub::FileAccessExtStub() stubFuncMap_[CMD_QUERY] = &FileAccessExtStub::CmdQuery; stubFuncMap_[CMD_GET_ROOTS] = &FileAccessExtStub::CmdGetRoots; stubFuncMap_[CMD_ACCESS] = &FileAccessExtStub::CmdAccess; - stubFuncMap_[CMD_GET_THUMBNAIL] = &FileAccessExtStub::CmdGetThumbnail; stubFuncMap_[CMD_GET_FILEINFO_FROM_URI] = &FileAccessExtStub::CmdGetFileInfoFromUri; stubFuncMap_[CMD_GET_FILEINFO_FROM_RELATIVE_PATH] = &FileAccessExtStub::CmdGetFileInfoFromRelativePath; stubFuncMap_[CMD_COPY_FILE] = &FileAccessExtStub::CmdCopyFile; @@ -619,38 +618,6 @@ ErrCode FileAccessExtStub::CmdQuery(MessageParcel &data, MessageParcel &reply) return ERR_OK; } -ErrCode FileAccessExtStub::CmdGetThumbnail(MessageParcel &data, MessageParcel &reply) -{ - UserAccessTracer trace; - trace.Start("CmdGetThumbnail"); - std::string uri; - if (!data.ReadString(uri)) { - HILOG_ERROR("Parameter GetThumbnail fail to ReadParcelable uri"); - return E_IPCS; - } - - std::shared_ptr thumbnailSize(data.ReadParcelable()); - if (thumbnailSize == nullptr) { - HILOG_ERROR("Parameter GetThumbnail fail to ReadParcelable thumbnailSize"); - return E_URIS; - } - - std::shared_ptr pixelMap; - Uri sourceUri(uri); - int ret = GetThumbnail(sourceUri, *thumbnailSize, pixelMap); - if (!reply.WriteInt32(ret)) { - HILOG_ERROR("Parameter CmdGetThumbnail fail to WriteInt32 ret"); - return E_IPCS; - } - - if (!reply.WriteParcelable(pixelMap.get())) { - HILOG_ERROR("Parameter CmdGetThumbnail fail to WriteParcelable pixelMap"); - return E_IPCS; - } - - return ERR_OK; -} - ErrCode FileAccessExtStub::CmdGetFileInfoFromUri(MessageParcel &data, MessageParcel &reply) { UserAccessTracer trace; diff --git a/interfaces/inner_api/file_access/src/file_access_ext_stub_impl.cpp b/interfaces/inner_api/file_access/src/file_access_ext_stub_impl.cpp index 47e3bd48..604421b7 100644 --- a/interfaces/inner_api/file_access/src/file_access_ext_stub_impl.cpp +++ b/interfaces/inner_api/file_access/src/file_access_ext_stub_impl.cpp @@ -217,26 +217,6 @@ int FileAccessExtStubImpl::GetRoots(std::vector &rootInfoVec) return ret; } -int FileAccessExtStubImpl::GetThumbnail(const Uri &uri, const ThumbnailSize &thumbnailSize, - std::shared_ptr &pixelMap) -{ - UserAccessTracer trace; - trace.Start("GetThumbnail"); - if (extension_ == nullptr) { - HILOG_ERROR("GetThumbnail get extension failed."); - return E_IPCS; - } - std::unique_ptr tempPtr; - Size size{ thumbnailSize.width, thumbnailSize.height }; - int ret = extension_->GetThumbnail(uri, size, tempPtr); - if (ret != ERR_OK) { - HILOG_ERROR("GetThumbnail failed."); - return ret; - } - pixelMap = std::move(tempPtr); - return ret; -} - int FileAccessExtStubImpl::GetFileInfoFromUri(const Uri &selectFile, FileInfo &fileInfo) { UserAccessTracer trace; diff --git a/interfaces/inner_api/file_access/src/file_access_helper.cpp b/interfaces/inner_api/file_access/src/file_access_helper.cpp index cfd22d1d..b7759b79 100644 --- a/interfaces/inner_api/file_access/src/file_access_helper.cpp +++ b/interfaces/inner_api/file_access/src/file_access_helper.cpp @@ -1057,41 +1057,6 @@ int FileAccessHelper::Access(Uri &uri, bool &isExist) return ERR_OK; } -int FileAccessHelper::GetThumbnail(Uri &uri, ThumbnailSize &thumbnailSize, std::shared_ptr &pixelMap) -{ - UserAccessTracer trace; - trace.Start("GetThumbnail"); - if (!IsSystemApp()) { - HILOG_ERROR("FileAccessHelper::GetThumbnail check IsSystemAppByFullTokenID failed"); - return E_PERMISSION_SYS; - } - - if (!CheckUri(uri)) { - HILOG_ERROR("Uri format check error."); - return E_URIS; - } - - string uriStr = uri.ToString(); - if (thumbnailSize.width <= 0 || thumbnailSize.height <= 0) { - HILOG_ERROR("Size format check error."); - return E_GETRESULT; - } - - sptr fileExtProxy = GetProxyByUri(uri); - if (fileExtProxy == nullptr) { - HILOG_ERROR("failed with invalid fileAccessExtProxy"); - return E_IPCS; - } - - int ret = fileExtProxy->GetThumbnail(uri, thumbnailSize, pixelMap); - if (ret != ERR_OK) { - HILOG_ERROR("GetThumbnail get result error, code:%{public}d", ret); - return ret; - } - - return ERR_OK; -} - int FileAccessHelper::GetFileInfoFromUri(Uri &selectFile, FileInfo &fileInfo) { UserAccessTracer trace; diff --git a/test/fuzztest/BUILD.gn b/test/fuzztest/BUILD.gn index 79744bf2..961e84e2 100644 --- a/test/fuzztest/BUILD.gn +++ b/test/fuzztest/BUILD.gn @@ -22,7 +22,6 @@ group("user_file_service_fuzz_test") { "externalfileaccessgetfileinfofromrelativepath_fuzzer:ExternalFileAccessGetFileInfoFromRelativePathFuzzTest", "externalfileaccessgetfileinfofromuri_fuzzer:ExternalFileAccessGetFileInfoFromUriFuzzTest", "externalfileaccessgetroots_fuzzer:ExternalFileAccessGetRootsFuzzTest", - "externalfileaccessgetthumbnail_fuzzer:ExternalFileAccessGetThumbnailFuzzTest", "externalfileaccesslistfile_fuzzer:ExternalFileAccessListFileFuzzTest", "externalfileaccessmkdir_fuzzer:ExternalFileAccessMkdirFuzzTest", "externalfileaccessmove_fuzzer:ExternalFileAccessMoveFuzzTest", -- Gitee