diff --git a/frameworks/js/backup_ext/ext_backup_impl.cpp b/frameworks/js/backup_ext/ext_backup_impl.cpp index 092bc8cfa7cae30f16ac6582d4f1ef3dff5db718..9f6b828b54882437c1bc87f5409850d883484171 100644 --- a/frameworks/js/backup_ext/ext_backup_impl.cpp +++ b/frameworks/js/backup_ext/ext_backup_impl.cpp @@ -21,8 +21,8 @@ extern const char _binary_backup_extension_ability_abc_start[]; extern const char _binary_backup_extension_ability_abc_end[]; static napi_module _module = { - .nm_modname = "application.BackupExtensionAbility", .nm_filename = "application/libbackupextensionability_napi.so/BackupExtensionAbility.js", + .nm_modname = "application.BackupExtensionAbility", }; extern "C" __attribute__((constructor)) void NAPI_application_BackupExtensionAbility_AutoRegister() diff --git a/frameworks/native/backup_ext/src/ext_backup_js.cpp b/frameworks/native/backup_ext/src/ext_backup_js.cpp index 4905d2ce643e87d7aa9885572039c3071d908de9..ad919e7a95bd52eb04035836524f0533d6b7e0bb 100644 --- a/frameworks/native/backup_ext/src/ext_backup_js.cpp +++ b/frameworks/native/backup_ext/src/ext_backup_js.cpp @@ -300,7 +300,7 @@ static int DoCallJsMethod(CallJsParam *param) } AbilityRuntime::HandleEscape handleEscape(*jsRuntime); auto env = jsRuntime->GetNapiEnv(); - vector argv = {}; + vector argv; if (param->argParser != nullptr) { if (!param->argParser(env, argv)) { HILOGE("failed to get params."); @@ -318,7 +318,7 @@ static int DoCallJsMethod(CallJsParam *param) HILOGE("ResultValueParser must not null."); return EINVAL; } - napi_value result; + napi_value result = nullptr; napi_call_function(env, value, method, argv.size(), argv.data(), &result); if (!param->retParser(env, handleEscape.Escape(result))) { HILOGI("Parser js result fail."); diff --git a/services/backup_sa/include/module_ipc/svc_session_manager.h b/services/backup_sa/include/module_ipc/svc_session_manager.h index 59509266e07c559ce96d76adf9f474714aa527e2..a342c97a45bdabd9b0785a3ccdd8202fd63594de 100644 --- a/services/backup_sa/include/module_ipc/svc_session_manager.h +++ b/services/backup_sa/include/module_ipc/svc_session_manager.h @@ -58,6 +58,8 @@ struct BackupExtInfo { uint32_t extTimerId; /* Timer Status: true is start & false is stop */ bool timerStatus {false}; + /* Need backup data size */ + int64_t dataSize; }; class Service; @@ -359,6 +361,22 @@ public: */ std::string GetBundleVersionName(const std::string &bundleName); + /** + * @brief Set the bundle data size object + * + * @param bundleName + * @param dataSize + */ + void SetBundleDataSize(const std::string &bundleName, int64_t dataSize); + + /** + * @brief Get the bundle data size object + * + * @param bundleName + * @return dataSize + */ + int64_t GetBundleDataSize(const std::string &bundleName); + /** * @brief 启动应用扩展能力定时器 * diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index 1252a8173213a6a0aa3d524065b40e92db6bc809..b17ef871ea0aa490959939631855b7fd174df7ac 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -257,6 +257,7 @@ ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, session_->SetBundleRestoreType(bundleInfo.name, restoreType); session_->SetBundleVersionCode(bundleInfo.name, bundleInfo.versionCode); session_->SetBundleVersionName(bundleInfo.name, bundleInfo.versionName); + session_->SetBundleDataSize(bundleInfo.name, bundleInfo.spaceOccupied); } } for (auto info : restoreInfos) { @@ -279,6 +280,7 @@ ErrCode Service::AppendBundlesBackupSession(const vector &bundleName auto backupInfos = BundleMgrAdapter::GetBundleInfos(bundleNames, session_->GetSessionUserId()); session_->AppendBundles(bundleNames); for (auto info : backupInfos) { + session_->SetBundleDataSize(info.name, info.spaceOccupied); if (info.allToBackup == false) { session_->GetServiceReverseProxy()->BackupOnBundleStarted(BError(BError::Codes::SA_REFUSED_ACT), info.name); session_->RemoveExtInfo(info.name); diff --git a/services/backup_sa/src/module_ipc/svc_session_manager.cpp b/services/backup_sa/src/module_ipc/svc_session_manager.cpp index f4ec832fb2df5931c7751809eab664f0d8463f43..e6d8b659678bd14cd2800b4295c9fc6ca2f3f3c8 100644 --- a/services/backup_sa/src/module_ipc/svc_session_manager.cpp +++ b/services/backup_sa/src/module_ipc/svc_session_manager.cpp @@ -568,6 +568,28 @@ std::string SvcSessionManager::GetBundleVersionName(const std::string &bundleNam return it->second.versionName; } +void SvcSessionManager::SetBundleDataSize(const std::string &bundleName, int64_t dataSize) +{ + unique_lock lock(lock_); + if (!impl_.clientToken) { + throw BError(BError::Codes::SA_INVAL_ARG, "No caller token was specified"); + } + + auto it = GetBackupExtNameMap(bundleName); + it->second.dataSize = dataSize; +} + +int64_t SvcSessionManager::GetBundleDataSize(const std::string &bundleName) +{ + unique_lock lock(lock_); + if (!impl_.clientToken) { + throw BError(BError::Codes::SA_INVAL_ARG, "No caller token was specified"); + } + + auto it = GetBackupExtNameMap(bundleName); + return it->second.dataSize; +} + uint32_t SvcSessionManager::CalAppProcessTime(const std::string &bundleName) { const uint32_t defaultTimeout = 30; /* 30 second */ @@ -578,8 +600,7 @@ uint32_t SvcSessionManager::CalAppProcessTime(const std::string &bundleName) uint32_t timeout; try { - stat = StorageMgrAdapter::GetBundleStats(bundleName); - uint64_t appSize = static_cast(stat.appSize_ + stat.dataSize_); + uint64_t appSize = static_cast (GetBundleDataSize(bundleName)); /* % UINT_MAX force conver uint64 to uint32 */ /* timeout = (AppSize / 3Ms) * 3 + 30 */ timeout = (uint32_t)(defaultTimeout + (appSize / processRate) * multiple % UINT_MAX);