1 /*
2  * Copyright (c) 2021-2024 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_AMS_MGR_SCHEDULER_H
17 #define MOCK_OHOS_ABILITY_RUNTIME_MOCK_AMS_MGR_SCHEDULER_H
18 
19 #include "gmock/gmock.h"
20 #include "ams_mgr_scheduler.h"
21 
22 namespace OHOS {
23 namespace AbilityRuntime {
24 struct LoadParam;
25 }
26 namespace AppExecFwk {
27 class MockAmsMgrScheduler : public AmsMgrStub {
28 public:
29     MOCK_METHOD4(LoadAbility,
30         void(const std::shared_ptr<AbilityInfo>& abilityInfo, const std::shared_ptr<ApplicationInfo>& appInfo,
31             const std::shared_ptr<AAFwk::Want>& want, std::shared_ptr<AbilityRuntime::LoadParam> loadParam));
32     MOCK_METHOD5(AbilityBehaviorAnalysis,
33         void(const sptr<OHOS::IRemoteObject>& token, const sptr<OHOS::IRemoteObject>& preToken,
34             const int32_t visibility, const int32_t perceptibility, const int32_t connectionState));
35     MOCK_METHOD2(TerminateAbility, void(const sptr<IRemoteObject>& token, bool clearMissionFlag));
36     MOCK_METHOD2(UpdateAbilityState, void(const sptr<IRemoteObject>& token, const AbilityState state));
37     MOCK_METHOD0(Reset, void());
38     MOCK_METHOD1(KillProcessByAbilityToken, void(const sptr<IRemoteObject>& token));
39     MOCK_METHOD1(KillProcessesByUserId, void(int32_t userId));
40     MOCK_METHOD3(KillProcessWithAccount, int(const std::string&, const int, const bool clearPageStack));
41     MOCK_METHOD1(KillProcessesInBatch, int(const std::vector<int32_t> &pids));
42     MOCK_METHOD2(UpdateApplicationInfoInstalled, int(const std::string&, const int uid));
43     MOCK_METHOD2(KillApplication, int32_t(const std::string& bundleName, const bool clearPageStack));
44     MOCK_METHOD3(ForceKillApplication, int32_t(const std::string& appName, const int userId, const int appIndex));
45     MOCK_METHOD1(KillProcessesByAccessTokenId, int32_t(const uint32_t accessTokenId));
46     MOCK_METHOD3(KillApplicationByUid, int(const std::string&, const int uid, const std::string&));
47     MOCK_METHOD0(IsReady, bool());
48     MOCK_METHOD1(AbilityAttachTimeOut, void(const sptr<IRemoteObject>& token));
49     MOCK_METHOD2(PrepareTerminate, void(const sptr<IRemoteObject>& token, bool clearMissionFlag));
50     MOCK_METHOD2(GetRunningProcessInfoByToken,
51         void(const sptr<IRemoteObject>& token, OHOS::AppExecFwk::RunningProcessInfo& info));
52     MOCK_METHOD1(SetAbilityForegroundingFlagToAppRecord, void(const pid_t pid));
53     MOCK_METHOD3(StartSpecifiedAbility, void(const AAFwk::Want&, const AppExecFwk::AbilityInfo&, int32_t));
54     MOCK_METHOD3(StartSpecifiedProcess, void(const AAFwk::Want&, const AppExecFwk::AbilityInfo&, int32_t));
55     MOCK_METHOD1(RegisterStartSpecifiedAbilityResponse, void(const sptr<IStartSpecifiedAbilityResponse>& response));
56     MOCK_METHOD3(GetApplicationInfoByProcessID, int(const int pid, AppExecFwk::ApplicationInfo& application,
57         bool& debug));
58     MOCK_METHOD3(NotifyAppMgrRecordExitReason, int32_t(int32_t pid, int32_t reason, const std::string &exitMsg));
59     MOCK_METHOD3(GetBundleNameByPid, int32_t(const int pid, std::string &bundleName, int32_t &uid));
60     MOCK_METHOD1(RegisterAppDebugListener, int32_t(const sptr<IAppDebugListener> &listener));
61     MOCK_METHOD1(UnregisterAppDebugListener, int32_t(const sptr<IAppDebugListener> &listener));
62     MOCK_METHOD1(AttachAppDebug, int32_t(const std::string &bundleName));
63     MOCK_METHOD1(DetachAppDebug, int32_t(const std::string &bundleName));
64     MOCK_METHOD1(RegisterAbilityDebugResponse, int32_t(const sptr<IAbilityDebugResponse> &response));
65     MOCK_METHOD1(IsAttachDebug, bool(const std::string &bundleName));
66     MOCK_METHOD2(SetAppWaitingDebug, int32_t(const std::string &bundleName, bool isPersist));
67     MOCK_METHOD0(CancelAppWaitingDebug, int32_t());
68     MOCK_METHOD1(GetWaitingDebugApp, int32_t(std::vector<std::string> &debugInfoList));
69     MOCK_METHOD1(IsWaitingDebugApp, bool(const std::string &bundleName));
70     MOCK_METHOD0(ClearNonPersistWaitingDebugFlag, void());
71     MOCK_METHOD0(IsMemorySizeSufficent, bool());
72 
MockAmsMgrScheduler()73     MockAmsMgrScheduler() : AmsMgrStub() {};
~MockAmsMgrScheduler()74     virtual ~MockAmsMgrScheduler() {};
RegisterAppStateCallback(const sptr<IAppStateCallback> & callback)75     virtual void RegisterAppStateCallback(const sptr<IAppStateCallback>& callback) override
76     {
77         callback->OnAbilityRequestDone(nullptr, AbilityState::ABILITY_STATE_BACKGROUND);
78         AppProcessData appProcessData;
79         callback->OnAppStateChanged(appProcessData);
80     }
81 
82     MOCK_METHOD1(SetCurrentUserId, void(const int32_t userId));
83 
84     MOCK_METHOD4(SendRequest, int(uint32_t, MessageParcel&, MessageParcel&, MessageOption&));
85 
InvokeSendRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)86     int InvokeSendRequest(uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option)
87     {
88         code_ = code;
89 
90         return 0;
91     }
92 
93     int code_ = 0;
94 };
95 }  // namespace AppExecFwk
96 }  // namespace OHOS
97 
98 #endif
99