diff --git a/adapter/ohos/entrance/pa_engine/backend_delegate.h b/adapter/ohos/entrance/pa_engine/backend_delegate.h index cb642380..fa44afd4 100644 --- a/adapter/ohos/entrance/pa_engine/backend_delegate.h +++ b/adapter/ohos/entrance/pa_engine/backend_delegate.h @@ -43,7 +43,7 @@ public: virtual bool GetAssetContent(const std::string& url, std::string& content) = 0; virtual bool GetAssetContent(const std::string& url, std::vector& content) = 0; - virtual bool GetResourceData(const std::string& fileUri, std::vector& content) = 0; + virtual bool GetResourceData(const std::string& fileUri, std::vector& content, std::string& ami) = 0; virtual std::string GetAssetPath(const std::string& url) = 0; virtual void AddTaskObserver(std::function&& task) = 0; diff --git a/adapter/ohos/entrance/pa_engine/backend_delegate_impl.cpp b/adapter/ohos/entrance/pa_engine/backend_delegate_impl.cpp index 287b89fd..2372b6e2 100644 --- a/adapter/ohos/entrance/pa_engine/backend_delegate_impl.cpp +++ b/adapter/ohos/entrance/pa_engine/backend_delegate_impl.cpp @@ -503,13 +503,14 @@ bool BackendDelegateImpl::ParseFileUri( return fileExist; } -bool BackendDelegateImpl::GetResourceData(const std::string& fileUri, std::vector& content) +bool BackendDelegateImpl::GetResourceData(const std::string& fileUri, std::vector& content, std::string& ami) { std::string targetFilePath; if (!ParseFileUri(assetManager_, fileUri, targetFilePath)) { LOGE("GetResourceData parse file uri failed."); return false; } + ami = assetManager_->GetAssetPath(targetFilePath) + targetFilePath; if (!Framework::GetAssetContentAllowEmpty(assetManager_, targetFilePath, content)) { LOGE("GetResourceData GetAssetContent failed."); return false; diff --git a/adapter/ohos/entrance/pa_engine/backend_delegate_impl.h b/adapter/ohos/entrance/pa_engine/backend_delegate_impl.h index ba35ec9b..61e05858 100644 --- a/adapter/ohos/entrance/pa_engine/backend_delegate_impl.h +++ b/adapter/ohos/entrance/pa_engine/backend_delegate_impl.h @@ -137,7 +137,7 @@ public: bool GetAssetContent(const std::string& url, std::string& content) override; bool GetAssetContent(const std::string& url, std::vector& content) override; - bool GetResourceData(const std::string& fileUri, std::vector& content) override; + bool GetResourceData(const std::string& fileUri, std::vector& content, std::string& ami) override; std::string GetAssetPath(const std::string& url) override; // JsEventHandler delegate functions. diff --git a/adapter/ohos/entrance/pa_engine/engine/jsi/jsi_pa_engine.cpp b/adapter/ohos/entrance/pa_engine/engine/jsi/jsi_pa_engine.cpp index 4d20c152..f8ddfdf0 100755 --- a/adapter/ohos/entrance/pa_engine/engine/jsi/jsi_pa_engine.cpp +++ b/adapter/ohos/entrance/pa_engine/engine/jsi/jsi_pa_engine.cpp @@ -661,7 +661,7 @@ void JsiPaEngine::RegisterInitWorkerFunc() void JsiPaEngine::RegisterAssetFunc() { auto weakDelegate = AceType::WeakClaim(AceType::RawPtr(engineInstance_->GetDelegate())); - auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content) { + auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content, std::string& ami) { LOGI("WorkerCore RegisterAssetFunc called"); auto delegate = weakDelegate.Upgrade(); if (delegate == nullptr) { @@ -672,7 +672,7 @@ void JsiPaEngine::RegisterAssetFunc() if (index == std::string::npos) { LOGE("invalid uri"); } else { - delegate->GetResourceData(uri.substr(0, index) + ".abc", content); + delegate->GetResourceData(uri.substr(0, index) + ".abc", content, ami); } }; nativeEngine_->SetGetAssetFunc(assetFunc); diff --git a/adapter/ohos/entrance/pa_engine/engine/quickjs/qjs_pa_engine.cpp b/adapter/ohos/entrance/pa_engine/engine/quickjs/qjs_pa_engine.cpp index 4b74d5fa..8d9dfbf4 100644 --- a/adapter/ohos/entrance/pa_engine/engine/quickjs/qjs_pa_engine.cpp +++ b/adapter/ohos/entrance/pa_engine/engine/quickjs/qjs_pa_engine.cpp @@ -490,14 +490,14 @@ void QjsPaEngine::RegisterInitWorkerFunc() void QjsPaEngine::RegisterAssetFunc() { auto weakDelegate = AceType::WeakClaim(AceType::RawPtr(engineInstance_->GetDelegate())); - auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content) { + auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content, std::string& ami) { LOGI("WorkerCore RegisterAssetFunc called"); auto delegate = weakDelegate.Upgrade(); if (delegate == nullptr) { LOGE("delegate is nullptr"); return; } - delegate->GetResourceData(uri, content); + delegate->GetResourceData(uri, content, ami); }; nativeEngine_->SetGetAssetFunc(assetFunc); } diff --git a/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp b/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp index fc01745a..24c2afda 100644 --- a/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp +++ b/frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp @@ -952,7 +952,7 @@ void JsiDeclarativeEngine::RegisterInitWorkerFunc() void JsiDeclarativeEngine::RegisterAssetFunc() { auto weakDelegate = AceType::WeakClaim(AceType::RawPtr(engineInstance_->GetDelegate())); - auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content) { + auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content, std::string &ami) { LOGI("WorkerCore RegisterAssetFunc called"); auto delegate = weakDelegate.Upgrade(); if (delegate == nullptr) { @@ -963,7 +963,7 @@ void JsiDeclarativeEngine::RegisterAssetFunc() if (index == std::string::npos) { LOGE("invalid uri"); } else { - delegate->GetResourceData(uri.substr(0, index) + ".abc", content); + delegate->GetResourceData(uri.substr(0, index) + ".abc", content, ami); } }; nativeEngine_->SetGetAssetFunc(assetFunc); diff --git a/frameworks/bridge/declarative_frontend/engine/quickjs/qjs_declarative_engine.cpp b/frameworks/bridge/declarative_frontend/engine/quickjs/qjs_declarative_engine.cpp index 901b1207..4ec53d9e 100644 --- a/frameworks/bridge/declarative_frontend/engine/quickjs/qjs_declarative_engine.cpp +++ b/frameworks/bridge/declarative_frontend/engine/quickjs/qjs_declarative_engine.cpp @@ -140,14 +140,14 @@ void QJSDeclarativeEngine::RegisterInitWorkerFunc() void QJSDeclarativeEngine::RegisterAssetFunc() { auto weakDelegate = AceType::WeakClaim(AceType::RawPtr(engineInstance_->GetDelegate())); - auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content) { + auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content, std::string& ami) { LOGI("WorkerCore RegisterAssetFunc called"); auto delegate = weakDelegate.Upgrade(); if (delegate == nullptr) { LOGE("delegate is nullptr"); return; } - delegate->GetResourceData(uri, content); + delegate->GetResourceData(uri, content, ami); }; nativeEngine_->SetGetAssetFunc(assetFunc); } diff --git a/frameworks/bridge/declarative_frontend/engine/v8/v8_declarative_engine.cpp b/frameworks/bridge/declarative_frontend/engine/v8/v8_declarative_engine.cpp index 1b35408f..0f361b16 100644 --- a/frameworks/bridge/declarative_frontend/engine/v8/v8_declarative_engine.cpp +++ b/frameworks/bridge/declarative_frontend/engine/v8/v8_declarative_engine.cpp @@ -984,7 +984,7 @@ void V8DeclarativeEngine::RegisterInitWorkerFunc() void V8DeclarativeEngine::RegisterAssetFunc() { auto weakAsset = WeakPtr(engineInstance_->GetDelegate()->GetAssetManager()); - auto&& assetFunc = [weakAsset](const std::string& uri, std::vector& content) { + auto&& assetFunc = [weakAsset](const std::string& uri, std::vector& content, std::string& ami) { LOGI("WorkerCore RegisterAssetFunc called"); auto asset = weakAsset.Upgrade(); if (!asset) { diff --git a/frameworks/bridge/js_frontend/engine/jsi/jsi_engine.cpp b/frameworks/bridge/js_frontend/engine/jsi/jsi_engine.cpp index dce3bce1..ff914b0a 100644 --- a/frameworks/bridge/js_frontend/engine/jsi/jsi_engine.cpp +++ b/frameworks/bridge/js_frontend/engine/jsi/jsi_engine.cpp @@ -3115,7 +3115,7 @@ void JsiEngine::RegisterInitWorkerFunc() void JsiEngine::RegisterAssetFunc() { auto weakDelegate = AceType::WeakClaim(AceType::RawPtr(engineInstance_->GetDelegate())); - auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content) { + auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content, std::string& ami) { LOGI("WorkerCore RegisterAssetFunc called"); auto delegate = weakDelegate.Upgrade(); if (delegate == nullptr) { @@ -3126,7 +3126,7 @@ void JsiEngine::RegisterAssetFunc() if (index == std::string::npos) { LOGE("invalid uri"); } else { - delegate->GetResourceData(uri.substr(0, index) + ".abc", content); + delegate->GetResourceData(uri.substr(0, index) + ".abc", content, ami); } }; nativeEngine_->SetGetAssetFunc(assetFunc); diff --git a/frameworks/bridge/js_frontend/engine/quickjs/qjs_engine.cpp b/frameworks/bridge/js_frontend/engine/quickjs/qjs_engine.cpp index 974bb384..530a963e 100755 --- a/frameworks/bridge/js_frontend/engine/quickjs/qjs_engine.cpp +++ b/frameworks/bridge/js_frontend/engine/quickjs/qjs_engine.cpp @@ -3196,14 +3196,14 @@ void QjsEngine::RegisterInitWorkerFunc() void QjsEngine::RegisterAssetFunc() { auto weakDelegate = AceType::WeakClaim(AceType::RawPtr(engineInstance_->GetDelegate())); - auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content) { + auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content, std::string& ami) { LOGI("WorkerCore RegisterAssetFunc called"); auto delegate = weakDelegate.Upgrade(); if (delegate == nullptr) { LOGE("delegate is nullptr"); return; } - delegate->GetResourceData(uri, content); + delegate->GetResourceData(uri, content, ami); }; nativeEngine_->SetGetAssetFunc(assetFunc); } diff --git a/frameworks/bridge/js_frontend/engine/v8/v8_engine.cpp b/frameworks/bridge/js_frontend/engine/v8/v8_engine.cpp index 1e563b2b..e2ad1775 100644 --- a/frameworks/bridge/js_frontend/engine/v8/v8_engine.cpp +++ b/frameworks/bridge/js_frontend/engine/v8/v8_engine.cpp @@ -3732,7 +3732,7 @@ void V8Engine::RegisterInitWorkerFunc() void V8Engine::RegisterAssetFunc() { auto weakDelegate = AceType::WeakClaim(AceType::RawPtr(engineInstance_->GetDelegate())); - auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content) { + auto&& assetFunc = [weakDelegate](const std::string& uri, std::vector& content, std::string& ami) { LOGI("WorkerCore RegisterAssetFunc called"); auto delegate = weakDelegate.Upgrade(); if (delegate == nullptr) { diff --git a/frameworks/bridge/js_frontend/frontend_delegate.cpp b/frameworks/bridge/js_frontend/frontend_delegate.cpp index b11060ea..de29ba54 100644 --- a/frameworks/bridge/js_frontend/frontend_delegate.cpp +++ b/frameworks/bridge/js_frontend/frontend_delegate.cpp @@ -80,6 +80,23 @@ bool FrontendDelegate::GetResourceData(const std::string& fileUri, T& content) return true; } +template +bool FrontendDelegate::GetResourceData(const std::string& fileUri, T& content, std::string& ami) +{ + std::string targetFilePath; + if (!ParseFileUri(assetManager_, fileUri, targetFilePath)) { + LOGE("GetResourceData parse file uri failed."); + return false; + } + ami = assetManager_->GetAssetPath(targetFilePath) + targetFilePath; + if (!GetAssetContentAllowEmpty(assetManager_, targetFilePath, content)) { + LOGE("GetResourceData GetAssetContent failed."); + return false; + } + + return true; +} + template bool FrontendDelegate::GetResourceData(const std::string& fileUri, const RefPtr& assetManager, T& content) @@ -99,6 +116,8 @@ bool FrontendDelegate::GetResourceData(const std::string& fileUri, const RefPtr< template bool FrontendDelegate::GetResourceData(const std::string& fileUri, std::string& content); template bool FrontendDelegate::GetResourceData(const std::string& fileUri, std::vector& content); +template bool FrontendDelegate::GetResourceData(const std::string& fileUri, std::vector& content, + std::string& ami); template bool FrontendDelegate::GetResourceData(const std::string& fileUri, const RefPtr& assetManager, std::vector& content); diff --git a/frameworks/bridge/js_frontend/frontend_delegate.h b/frameworks/bridge/js_frontend/frontend_delegate.h index 021c90e2..fddf31c7 100644 --- a/frameworks/bridge/js_frontend/frontend_delegate.h +++ b/frameworks/bridge/js_frontend/frontend_delegate.h @@ -178,6 +178,9 @@ public: template bool ACE_EXPORT GetResourceData(const std::string& fileUri, T& content); + template + bool ACE_EXPORT GetResourceData(const std::string& fileUri, T& content, std::string& ami); + template ACE_EXPORT static bool GetResourceData(const std::string& fileUri, const RefPtr& assetManager, T& content);