1e5d0e473Sopenharmony_ci/*
2e5d0e473Sopenharmony_ci * Copyright (C) 2022-2023 Huawei Device Co., Ltd.
3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License.
5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at
6e5d0e473Sopenharmony_ci *
7e5d0e473Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e5d0e473Sopenharmony_ci *
9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and
13e5d0e473Sopenharmony_ci * limitations under the License.
14e5d0e473Sopenharmony_ci */
15e5d0e473Sopenharmony_ci
16e5d0e473Sopenharmony_ci#include "sms_send_callback_gtest.h"
17e5d0e473Sopenharmony_ci
18e5d0e473Sopenharmony_ci#include <iostream>
19e5d0e473Sopenharmony_ci
20e5d0e473Sopenharmony_ci#include "telephony_errors.h"
21e5d0e473Sopenharmony_ci#include "telephony_log_wrapper.h"
22e5d0e473Sopenharmony_ci
23e5d0e473Sopenharmony_cinamespace OHOS {
24e5d0e473Sopenharmony_cinamespace Telephony {
25e5d0e473Sopenharmony_cistatic constexpr int SMS_DEFAULT_RESULT = 0;
26e5d0e473Sopenharmony_cistatic constexpr int SMS_DEFAULT_ERROR = -1;
27e5d0e473Sopenharmony_ci
28e5d0e473Sopenharmony_ciSmsSendCallbackGTest::SmsSendCallbackGTest(SmsMmsTestHelper &helper)
29e5d0e473Sopenharmony_ci{
30e5d0e473Sopenharmony_ci    callbackHelper_ = &helper;
31e5d0e473Sopenharmony_ci}
32e5d0e473Sopenharmony_ci
33e5d0e473Sopenharmony_ciSmsSendCallbackGTest::~SmsSendCallbackGTest() {}
34e5d0e473Sopenharmony_ci
35e5d0e473Sopenharmony_civoid SmsSendCallbackGTest::HasDeliveryCallBack(bool hasCallback)
36e5d0e473Sopenharmony_ci{
37e5d0e473Sopenharmony_ci    hasDeliveryCallback_ = hasCallback;
38e5d0e473Sopenharmony_ci}
39e5d0e473Sopenharmony_ci
40e5d0e473Sopenharmony_civoid SmsSendCallbackGTest::OnSmsSendResult(const ISendShortMessageCallback::SmsSendResult result)
41e5d0e473Sopenharmony_ci{
42e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("SmsSendCallbackGTest OnSmsSendResult = %{public}d", result);
43e5d0e473Sopenharmony_ci    if (callbackHelper_ == nullptr) {
44e5d0e473Sopenharmony_ci        TELEPHONY_LOGE("SmsSendCallbackGTest callbackHelper_ is nullptr");
45e5d0e473Sopenharmony_ci        return;
46e5d0e473Sopenharmony_ci    }
47e5d0e473Sopenharmony_ci
48e5d0e473Sopenharmony_ci    callbackHelper_->SetSendSmsIntResult(result);
49e5d0e473Sopenharmony_ci    if (!hasDeliveryCallback_) {
50e5d0e473Sopenharmony_ci        callbackHelper_->NotifyAll();
51e5d0e473Sopenharmony_ci    }
52e5d0e473Sopenharmony_ci    callbackHelper_ = nullptr;
53e5d0e473Sopenharmony_ci}
54e5d0e473Sopenharmony_ci
55e5d0e473Sopenharmony_ciint SmsSendCallbackGTest::OnRemoteRequest(
56e5d0e473Sopenharmony_ci    uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option)
57e5d0e473Sopenharmony_ci{
58e5d0e473Sopenharmony_ci    if (data.ReadInterfaceToken() != GetDescriptor()) {
59e5d0e473Sopenharmony_ci        TELEPHONY_LOGE("descriptor checked fail");
60e5d0e473Sopenharmony_ci        return TELEPHONY_ERR_DESCRIPTOR_MISMATCH;
61e5d0e473Sopenharmony_ci    }
62e5d0e473Sopenharmony_ci
63e5d0e473Sopenharmony_ci    switch (code) {
64e5d0e473Sopenharmony_ci        case static_cast<int>(SendShortMessageCallbackInterfaceCode::ON_SMS_SEND_RESULT): {
65e5d0e473Sopenharmony_ci            int32_t result = data.ReadInt32();
66e5d0e473Sopenharmony_ci            OnSmsSendResult(static_cast<ISendShortMessageCallback::SmsSendResult>(result));
67e5d0e473Sopenharmony_ci            return SMS_DEFAULT_RESULT;
68e5d0e473Sopenharmony_ci        }
69e5d0e473Sopenharmony_ci        default: {
70e5d0e473Sopenharmony_ci            return SMS_DEFAULT_ERROR;
71e5d0e473Sopenharmony_ci        }
72e5d0e473Sopenharmony_ci    }
73e5d0e473Sopenharmony_ci}
74e5d0e473Sopenharmony_ci} // namespace Telephony
75e5d0e473Sopenharmony_ci} // namespace OHOS