1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef MOCK_OHOS_ABILITY_RUNTIME_MOCK_ABILITY_MANAGER_CLIENT_INTERFACE1_H
17 #define MOCK_OHOS_ABILITY_RUNTIME_MOCK_ABILITY_MANAGER_CLIENT_INTERFACE1_H
18 
19 #include <mutex>
20 
21 #include "ability_connect_callback_interface.h"
22 #include "ability_manager_errors.h"
23 #include "ability_scheduler_interface.h"
24 #include "ability_manager_interface.h"
25 #include "want.h"
26 
27 #include "iremote_object.h"
28 #include "iremote_stub.h"
29 
30 #include "ability_manager_client.h"
31 
32 namespace OHOS {
33 namespace AppExecFwk {
34 class IAbilityMock : public OHOS::IRemoteBroker {
35 public:
36     DECLARE_INTERFACE_DESCRIPTOR(u"ohos.aafwk.AbilityMock");
37 };
38 
39 class MockAbilityStub : public IRemoteStub<IAbilityMock> {
40 public:
41     MockAbilityStub() = default;
42     ~MockAbilityStub() = default;
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)43     int OnRemoteRequest(
44         uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option) override
45     {
46         return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
47     };
48 };
49 
50 class MockAbilityContextDeal : public ContextDeal {
51 public:
52     MockAbilityContextDeal();
53     ~MockAbilityContextDeal();
54 
55     std::shared_ptr<HapModuleInfo> GetHapModuleInfo();
56 
57     std::shared_ptr<HapModuleInfo> hapModInfo_;
58 };
59 
60 class MockAbilityContextTest : public AbilityContext {
61 public:
62     MockAbilityContextTest();
63     ~MockAbilityContextTest();
64 
65     void StartAbility(const AAFwk::Want& want, int requestCode);
66 
67     void SetToken(const sptr<IRemoteObject> token);
68 
69     size_t GetStartAbilityRunCount();
70     void SetStartAbilityRunCount(size_t nCount);
71 
72     size_t startAbilityRunCount_;
73 };
74 }  // namespace AppExecFwk
75 }  // namespace OHOS
76 
77 namespace OHOS {
78 namespace AAFwk {
79 class MockAbilityManagerClient : public AbilityManagerClient {
80 public:
81     MockAbilityManagerClient();
82     ~MockAbilityManagerClient();
83 
84     ErrCode GetStartAbility();
85     ErrCode GetTerminateAbility();
86     ErrCode GetTerminateAbilityResult();
87 
88     void SetStartAbility(ErrCode tValue);
89     void SetTerminateAbility(ErrCode tValue);
90     void SetTerminateAbilityResult(ErrCode tValue);
91 
92     int GetTerminateAbilityValue();
93     void SetTerminateAbilityValue(int nValue);
94 
95     int GetMockMissionId();
96     void SetMockMissionId(int missionId);
97 
98     static std::shared_ptr<MockAbilityManagerClient> mock_instance_;
99     static bool mock_intanceIsNull_;
100 
101     static std::shared_ptr<MockAbilityManagerClient> GetInstance();
102     static void SetInstanceNull(bool flag);
103 
104 private:
105     ErrCode startAbility_;
106     ErrCode terminateAbility_;
107     ErrCode terminateAbilityResult_;
108 
109     int terminateAbilityValue_;
110     int missionId_;
111 };
112 }  // namespace AAFwk
113 }  // namespace OHOS
114 #endif  // MOCK_OHOS_ABILITY_RUNTIME_MOCK_ABILITY_MANAGER_CLIENT_INTERFACE1_H
115