diff --git a/frameworks/native/backup_kit_inner/src/service_proxy.cpp b/frameworks/native/backup_kit_inner/src/service_proxy.cpp index 707a5468a6e857190c45a1eedd4d750571162e36..664035f12bc3a54b8767363942ce3834d2a9aed8 100644 --- a/frameworks/native/backup_kit_inner/src/service_proxy.cpp +++ b/frameworks/native/backup_kit_inner/src/service_proxy.cpp @@ -217,7 +217,10 @@ ErrCode ServiceProxy::GetFileHandle(const string &bundleName, const string &file return ret; } -ErrCode ServiceProxy::AppendBundlesRestoreSession(UniqueFd fd, const vector &bundleNames) +ErrCode ServiceProxy::AppendBundlesRestoreSession(UniqueFd fd, + const vector &bundleNames, + RestoreTpyeEnum restoreType, + int32_t userId) { HILOGI("Begin"); BExcepUltils::BAssert(Remote(), BError::Codes::SDK_INVAL_ARG, "Remote is nullptr"); @@ -234,6 +237,12 @@ ErrCode ServiceProxy::AppendBundlesRestoreSession(UniqueFd fd, const vector(restoreType))) { + return BError(BError::Codes::SDK_INVAL_ARG, "Failed to send restoreType").GetCode(); + } + if (!data.WriteInt32(userId)) { + return BError(BError::Codes::SDK_INVAL_ARG, "Failed to send userId").GetCode(); + } int32_t ret = Remote()->SendRequest(IService::SERVICE_CMD_APPEND_BUNDLES_RESTORE_SESSION, data, reply, option); if (ret != NO_ERROR) { diff --git a/interfaces/inner_api/native/backup_kit_inner/impl/i_service.h b/interfaces/inner_api/native/backup_kit_inner/impl/i_service.h index 3e8af262cac53e2d5528a6c6802089fea2c553ff..79f6869f7bc556ad509e6222ff87995240f0c522 100644 --- a/interfaces/inner_api/native/backup_kit_inner/impl/i_service.h +++ b/interfaces/inner_api/native/backup_kit_inner/impl/i_service.h @@ -26,6 +26,13 @@ #include "iremote_broker.h" namespace OHOS::FileManagement::Backup { +const int DEFAULT_INVAL_VALUE = -1; + +typedef enum TypeRestoreTpyeEnum { + RESTORE_DATA_WAIT_SEND = 0, + RESTORE_DATA_READDY = 1, +} RestoreTpyeEnum; + class IService : public IRemoteBroker { public: enum { @@ -50,7 +57,11 @@ public: virtual ErrCode AppFileReady(const std::string &fileName, UniqueFd fd) = 0; virtual ErrCode AppDone(ErrCode errCode) = 0; virtual ErrCode GetFileHandle(const std::string &bundleName, const std::string &fileName) = 0; - virtual ErrCode AppendBundlesRestoreSession(UniqueFd fd, const std::vector &bundleNames) = 0; + virtual ErrCode AppendBundlesRestoreSession( + UniqueFd fd, + const std::vector &bundleNames, + RestoreTpyeEnum restoreType = RestoreTpyeEnum::RESTORE_DATA_WAIT_SEND, + int32_t userId = DEFAULT_INVAL_VALUE) = 0; virtual ErrCode AppendBundlesBackupSession(const std::vector &bundleNames) = 0; virtual ErrCode Finish() = 0; diff --git a/interfaces/inner_api/native/backup_kit_inner/impl/service_proxy.h b/interfaces/inner_api/native/backup_kit_inner/impl/service_proxy.h index 8033b7f10e2c0304f6400db97e24818d8babb043..c639902f9ad299d5cb0d09de9bf20e4b228bfc2e 100644 --- a/interfaces/inner_api/native/backup_kit_inner/impl/service_proxy.h +++ b/interfaces/inner_api/native/backup_kit_inner/impl/service_proxy.h @@ -36,7 +36,10 @@ public: ErrCode AppFileReady(const std::string &fileName, UniqueFd fd) override; ErrCode AppDone(ErrCode errCode) override; ErrCode GetFileHandle(const std::string &bundleName, const std::string &fileName) override; - ErrCode AppendBundlesRestoreSession(UniqueFd fd, const std::vector &bundleNames) override; + ErrCode AppendBundlesRestoreSession(UniqueFd fd, + const std::vector &bundleNames, + RestoreTpyeEnum restoreType = RestoreTpyeEnum::RESTORE_DATA_WAIT_SEND, + int32_t userId = DEFAULT_INVAL_VALUE) override; ErrCode AppendBundlesBackupSession(const std::vector &bundleNames) override; ErrCode Finish() override; diff --git a/services/backup_sa/include/module_ipc/service.h b/services/backup_sa/include/module_ipc/service.h index 7bb1dd3302171acc376ccc4c1e93386635e4a223..5665a71a01523d67a03d7b68831f85f66f734912 100644 --- a/services/backup_sa/include/module_ipc/service.h +++ b/services/backup_sa/include/module_ipc/service.h @@ -40,7 +40,10 @@ public: ErrCode AppFileReady(const std::string &fileName, UniqueFd fd) override; ErrCode AppDone(ErrCode errCode) override; ErrCode GetFileHandle(const std::string &bundleName, const std::string &fileName) override; - ErrCode AppendBundlesRestoreSession(UniqueFd fd, const std::vector &bundleNames) override; + ErrCode AppendBundlesRestoreSession(UniqueFd fd, + const std::vector &bundleNames, + RestoreTpyeEnum restoreType = RestoreTpyeEnum::RESTORE_DATA_WAIT_SEND, + int32_t userId = DEFAULT_INVAL_VALUE) override; ErrCode AppendBundlesBackupSession(const std::vector &bundleNames) override; ErrCode Finish() override; diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index a2855001c25c8af6a9b8d8b6cea194507fa6d009..9d1097f7f884c9332320a7be7ea2845008c57fda 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -202,7 +202,10 @@ ErrCode Service::Start() return BError(BError::Codes::OK); } -ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, const vector &bundleNames) +ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, + const vector &bundleNames, + RestoreTpyeEnum restoreType, + int32_t userId) { HILOGI("Begin"); VerifyCaller(session_->GetScenario()); diff --git a/services/backup_sa/src/module_ipc/service_stub.cpp b/services/backup_sa/src/module_ipc/service_stub.cpp index 5d1ccce4e17c50529bb017845231114c57f8e4ed..8010c6668f9fded0f2737bd0a798207aaeca5af2 100644 --- a/services/backup_sa/src/module_ipc/service_stub.cpp +++ b/services/backup_sa/src/module_ipc/service_stub.cpp @@ -208,8 +208,17 @@ int32_t ServiceStub::CmdAppendBundlesRestoreSession(MessageParcel &data, Message if (!data.ReadStringVector(&bundleNames)) { return BError(BError::Codes::SA_INVAL_ARG, "Failed to receive bundleNames"); } + int32_t type; + if (!data.ReadInt32(type)) { + return BError(BError::Codes::SA_INVAL_ARG, "Failed to receive restoreType"); + } + RestoreTpyeEnum restoreType = static_cast(type); + int32_t userId; + if (!data.ReadInt32(userId)) { + return BError(BError::Codes::SA_INVAL_ARG, "Failed to receive userId"); + } - int res = AppendBundlesRestoreSession(move(fd), bundleNames); + int res = AppendBundlesRestoreSession(move(fd), bundleNames, restoreType, userId); if (!reply.WriteInt32(res)) { return BError(BError::Codes::SA_BROKEN_IPC, string("Failed to send the result ") + to_string(res)); } diff --git a/tests/mock/backup_kit_inner/service_proxy_mock.cpp b/tests/mock/backup_kit_inner/service_proxy_mock.cpp index 6844d16bc5b7d9168a973de6d51c9b16f149957e..eff2a51de44d911c62402004602c58c8a520b2b3 100644 --- a/tests/mock/backup_kit_inner/service_proxy_mock.cpp +++ b/tests/mock/backup_kit_inner/service_proxy_mock.cpp @@ -80,7 +80,10 @@ ErrCode ServiceProxy::GetFileHandle(const string &bundleName, const string &file return BError(BError::Codes::OK); } -ErrCode ServiceProxy::AppendBundlesRestoreSession(UniqueFd fd, const vector &bundleNames) +ErrCode ServiceProxy::AppendBundlesRestoreSession(UniqueFd fd, + const vector &bundleNames, + RestoreTpyeEnum restoreType, + int32_t userId) { return BError(BError::Codes::OK); } diff --git a/tests/mock/module_ipc/service_mock.cpp b/tests/mock/module_ipc/service_mock.cpp index 1af44b43d7311141576dabfbfe8af71111fd5cf8..9ded32d95aeb1b62310d87a39e97f0d49b8250f7 100644 --- a/tests/mock/module_ipc/service_mock.cpp +++ b/tests/mock/module_ipc/service_mock.cpp @@ -72,7 +72,10 @@ ErrCode Service::AppDone(ErrCode errCode) return BError(BError::Codes::OK); } -ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, const std::vector &bundleNames) +ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, + const std::vector &bundleNames, + RestoreTpyeEnum restoreType, + int32_t userId) { return BError(BError::Codes::OK); } diff --git a/tests/unittests/backup_api/backup_impl/include/i_service_mock.h b/tests/unittests/backup_api/backup_impl/include/i_service_mock.h index c1e0faa1f110c9980f41488d57b783219a53ddce..ad74dccd4719938f86f704afb96e4dd942f0e6fe 100644 --- a/tests/unittests/backup_api/backup_impl/include/i_service_mock.h +++ b/tests/unittests/backup_api/backup_impl/include/i_service_mock.h @@ -93,7 +93,10 @@ public: return BError(BError::Codes::OK); } - ErrCode AppendBundlesRestoreSession(UniqueFd fd, const std::vector &bundleNames) override + ErrCode AppendBundlesRestoreSession(UniqueFd fd, + const std::vector &bundleNames, + RestoreTpyeEnum restoreType, + int32_t userId) override { return BError(BError::Codes::OK); } diff --git a/tests/unittests/backup_sa/module_ipc/service_stub_test.cpp b/tests/unittests/backup_sa/module_ipc/service_stub_test.cpp index 462f675438445d3b6ce009f7317dda0bb06ab589..f62025fd18c4ecce7de24e65f8c0d637f4867133 100644 --- a/tests/unittests/backup_sa/module_ipc/service_stub_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_stub_test.cpp @@ -48,7 +48,9 @@ public: MOCK_METHOD2(AppFileReady, ErrCode(const string &fileName, UniqueFd fd)); MOCK_METHOD1(AppDone, ErrCode(ErrCode errCode)); MOCK_METHOD2(GetFileHandle, ErrCode(const string &bundleName, const string &fileName)); - MOCK_METHOD2(AppendBundlesRestoreSession, ErrCode(UniqueFd fd, const std::vector &bundleNames)); + MOCK_METHOD4( + AppendBundlesRestoreSession, + ErrCode(UniqueFd fd, const std::vector &bundleNames, RestoreTpyeEnum restoreType, int32_t userId)); MOCK_METHOD1(AppendBundlesBackupSession, ErrCode(const std::vector &bundleNames)); MOCK_METHOD0(Finish, ErrCode()); UniqueFd InvokeGetLocalCapabilities() @@ -359,7 +361,7 @@ HWTEST_F(ServiceStubTest, SUB_backup_sa_ServiceStub_AppendBundlesRestoreSession_ GTEST_LOG_(INFO) << "ServiceStubTest-begin SUB_backup_sa_ServiceStub_AppendBundlesRestoreSession_0100"; try { MockService service; - EXPECT_CALL(service, AppendBundlesRestoreSession(_, _)).WillOnce(Return(BError(BError::Codes::OK))); + EXPECT_CALL(service, AppendBundlesRestoreSession(_, _, _, _)).WillOnce(Return(BError(BError::Codes::OK))); MessageParcel data; MessageParcel reply; MessageOption option; @@ -373,6 +375,8 @@ HWTEST_F(ServiceStubTest, SUB_backup_sa_ServiceStub_AppendBundlesRestoreSession_ EXPECT_TRUE(data.WriteInterfaceToken(IService::GetDescriptor())); EXPECT_TRUE(data.WriteFileDescriptor(fd)); EXPECT_TRUE(data.WriteStringVector(bundleNames)); + EXPECT_TRUE(data.WriteInt32(0)); + EXPECT_TRUE(data.WriteInt32(-1)); EXPECT_EQ(BError(BError::Codes::OK), service.OnRemoteRequest(IService::SERVICE_CMD_APPEND_BUNDLES_RESTORE_SESSION, data, reply, option)); } catch (...) {