188edb362Sopenharmony_ci/* 288edb362Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 388edb362Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 488edb362Sopenharmony_ci * you may not use this file except in compliance with the License. 588edb362Sopenharmony_ci * You may obtain a copy of the License at 688edb362Sopenharmony_ci * 788edb362Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 888edb362Sopenharmony_ci * 988edb362Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1088edb362Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1188edb362Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1288edb362Sopenharmony_ci * See the License for the specific language governing permissions and 1388edb362Sopenharmony_ci * limitations under the License. 1488edb362Sopenharmony_ci */ 1588edb362Sopenharmony_ci 1688edb362Sopenharmony_ci#ifndef SYS_INSTALLER_IMODULE_UPDATE_H 1788edb362Sopenharmony_ci#define SYS_INSTALLER_IMODULE_UPDATE_H 1888edb362Sopenharmony_ci 1988edb362Sopenharmony_ci#include "iremote_broker.h" 2088edb362Sopenharmony_ci#include "isys_installer_callback.h" 2188edb362Sopenharmony_ci#include "module_ipc_helper.h" 2288edb362Sopenharmony_ci#include "parcel.h" 2388edb362Sopenharmony_ci#include "string_ex.h" 2488edb362Sopenharmony_ci 2588edb362Sopenharmony_cinamespace OHOS { 2688edb362Sopenharmony_cinamespace SysInstaller { 2788edb362Sopenharmony_cistruct HmpVersionInfo : public Parcelable { 2888edb362Sopenharmony_ci std::string name {}; 2988edb362Sopenharmony_ci std::string laneCode {}; 3088edb362Sopenharmony_ci std::string compatibleVersion {}; 3188edb362Sopenharmony_ci std::string version {}; 3288edb362Sopenharmony_ci 3388edb362Sopenharmony_ci virtual bool Marshalling(Parcel &parcel) const override 3488edb362Sopenharmony_ci { 3588edb362Sopenharmony_ci if (!parcel.WriteString16(Str8ToStr16(name))) { 3688edb362Sopenharmony_ci return false; 3788edb362Sopenharmony_ci } 3888edb362Sopenharmony_ci if (!parcel.WriteString16(Str8ToStr16(laneCode))) { 3988edb362Sopenharmony_ci return false; 4088edb362Sopenharmony_ci } 4188edb362Sopenharmony_ci if (!parcel.WriteString16(Str8ToStr16(compatibleVersion))) { 4288edb362Sopenharmony_ci return false; 4388edb362Sopenharmony_ci } 4488edb362Sopenharmony_ci if (!parcel.WriteString16(Str8ToStr16(version))) { 4588edb362Sopenharmony_ci return false; 4688edb362Sopenharmony_ci } 4788edb362Sopenharmony_ci return true; 4888edb362Sopenharmony_ci } 4988edb362Sopenharmony_ci 5088edb362Sopenharmony_ci bool ReadFromParcel(Parcel &parcel) 5188edb362Sopenharmony_ci { 5288edb362Sopenharmony_ci name = Str16ToStr8(parcel.ReadString16()); 5388edb362Sopenharmony_ci laneCode = Str16ToStr8(parcel.ReadString16()); 5488edb362Sopenharmony_ci compatibleVersion = Str16ToStr8(parcel.ReadString16()); 5588edb362Sopenharmony_ci version = Str16ToStr8(parcel.ReadString16()); 5688edb362Sopenharmony_ci return true; 5788edb362Sopenharmony_ci } 5888edb362Sopenharmony_ci 5988edb362Sopenharmony_ci static HmpVersionInfo *Unmarshalling(Parcel &parcel) 6088edb362Sopenharmony_ci { 6188edb362Sopenharmony_ci HmpVersionInfo *obj = new (std::nothrow) HmpVersionInfo(); 6288edb362Sopenharmony_ci if (obj != nullptr && !obj->ReadFromParcel(parcel)) { 6388edb362Sopenharmony_ci delete obj; 6488edb362Sopenharmony_ci obj = nullptr; 6588edb362Sopenharmony_ci } 6688edb362Sopenharmony_ci return obj; 6788edb362Sopenharmony_ci } 6888edb362Sopenharmony_ci}; 6988edb362Sopenharmony_ci 7088edb362Sopenharmony_cistruct HmpUpdateInfo : public Parcelable { 7188edb362Sopenharmony_ci std::string path {}; 7288edb362Sopenharmony_ci int32_t result = 0; // 0 means success 7388edb362Sopenharmony_ci std::string resultMsg {}; 7488edb362Sopenharmony_ci 7588edb362Sopenharmony_ci virtual bool Marshalling(Parcel &parcel) const override 7688edb362Sopenharmony_ci { 7788edb362Sopenharmony_ci if (!parcel.WriteString16(Str8ToStr16(path))) { 7888edb362Sopenharmony_ci return false; 7988edb362Sopenharmony_ci } 8088edb362Sopenharmony_ci if (!parcel.WriteInt32(result)) { 8188edb362Sopenharmony_ci return false; 8288edb362Sopenharmony_ci } 8388edb362Sopenharmony_ci if (!parcel.WriteString16(Str8ToStr16(resultMsg))) { 8488edb362Sopenharmony_ci return false; 8588edb362Sopenharmony_ci } 8688edb362Sopenharmony_ci return true; 8788edb362Sopenharmony_ci } 8888edb362Sopenharmony_ci 8988edb362Sopenharmony_ci bool ReadFromParcel(Parcel &parcel) 9088edb362Sopenharmony_ci { 9188edb362Sopenharmony_ci path = Str16ToStr8(parcel.ReadString16()); 9288edb362Sopenharmony_ci result = parcel.ReadInt32(); 9388edb362Sopenharmony_ci resultMsg = Str16ToStr8(parcel.ReadString16()); 9488edb362Sopenharmony_ci return true; 9588edb362Sopenharmony_ci } 9688edb362Sopenharmony_ci 9788edb362Sopenharmony_ci static HmpUpdateInfo *Unmarshalling(Parcel &parcel) 9888edb362Sopenharmony_ci { 9988edb362Sopenharmony_ci HmpUpdateInfo *obj = new (std::nothrow) HmpUpdateInfo(); 10088edb362Sopenharmony_ci if (obj != nullptr && !obj->ReadFromParcel(parcel)) { 10188edb362Sopenharmony_ci delete obj; 10288edb362Sopenharmony_ci obj = nullptr; 10388edb362Sopenharmony_ci } 10488edb362Sopenharmony_ci return obj; 10588edb362Sopenharmony_ci } 10688edb362Sopenharmony_ci}; 10788edb362Sopenharmony_ci 10888edb362Sopenharmony_ciclass IModuleUpdate : public OHOS::IRemoteBroker { 10988edb362Sopenharmony_cipublic: 11088edb362Sopenharmony_ci DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Updater.IModuleUpdate"); 11188edb362Sopenharmony_ci 11288edb362Sopenharmony_ci virtual int32_t InstallModulePackage(const std::string &pkgPath) = 0; 11388edb362Sopenharmony_ci virtual int32_t UninstallModulePackage(const std::string &hmpName) = 0; 11488edb362Sopenharmony_ci virtual int32_t GetModulePackageInfo(const std::string &hmpName, 11588edb362Sopenharmony_ci std::list<ModulePackageInfo> &modulePackageInfos) = 0; 11688edb362Sopenharmony_ci virtual int32_t ExitModuleUpdate() = 0; 11788edb362Sopenharmony_ci 11888edb362Sopenharmony_ci virtual std::vector<HmpVersionInfo> GetHmpVersionInfo() = 0; 11988edb362Sopenharmony_ci virtual int32_t StartUpdateHmpPackage(const std::string &path, 12088edb362Sopenharmony_ci const sptr<ISysInstallerCallback> &updateCallback) = 0; 12188edb362Sopenharmony_ci virtual std::vector<HmpUpdateInfo> GetHmpUpdateResult() = 0; 12288edb362Sopenharmony_ci}; 12388edb362Sopenharmony_ci} // namespace SysInstaller 12488edb362Sopenharmony_ci} // namespace OHOS 12588edb362Sopenharmony_ci#endif // SYS_INSTALLER_IMODULE_UPDATE_H 126