• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 OHOS_ABILITY_RUNTIME_APPLICATION_STATE_OBSERVER_STUB_H
17 #define OHOS_ABILITY_RUNTIME_APPLICATION_STATE_OBSERVER_STUB_H
18 
19 #include <map>
20 #include <mutex>
21 
22 #include "iremote_stub.h"
23 #include "nocopyable.h"
24 #include "string_ex.h"
25 #include "app_mgr_constants.h"
26 #include "iapplication_state_observer.h"
27 
28 namespace OHOS {
29 namespace AppExecFwk {
30 class ApplicationStateObserverStub : public IRemoteStub<IApplicationStateObserver> {
31 public:
32     ApplicationStateObserverStub() = default;
33     virtual ~ApplicationStateObserverStub() = default;
34 
35     virtual int OnRemoteRequest(
36         uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override;
37 
38     /**
39      * Application foreground state changed callback.
40      *
41      * @param appStateData Application state data.
42      */
43     virtual void OnForegroundApplicationChanged(const AppStateData &appStateData) override;
44 
45     /**
46      * Will be called when the ability state changes.
47      *
48      * @param abilityStateData Ability state data.
49      */
50     virtual void OnAbilityStateChanged(const AbilityStateData &abilityStateData) override;
51 
52     /**
53      * Will be called when the extension state changes.
54      *
55      * @param abilityStateData Extension state data.
56      */
57     virtual void OnExtensionStateChanged(const AbilityStateData &abilityStateData) override;
58 
59     /**
60      * Will be called when the process start.
61      *
62      * @param processData Process data.
63      */
64     virtual void OnProcessCreated(const ProcessData &processData) override;
65 
66     /**
67      * Will be called when the process state change.
68      *
69      * @param processData Process data.
70      */
71     virtual void OnProcessStateChanged(const ProcessData &processData) override;
72 
73     /**
74      * Will be called when the window show.
75      *
76      * @param processData Process data.
77      */
78     virtual void OnWindowShow(const ProcessData &processData) override;
79 
80     /**
81      * Will be called when the window hidden.
82      *
83      * @param processData Process data.
84      */
85     virtual void OnWindowHidden(const ProcessData &processData) override;
86 
87     /**
88      * Will be called when the process die.
89      *
90      * @param processData Process data.
91      */
92     virtual void OnProcessDied(const ProcessData &processData) override;
93 
94     /**
95      * Application state changed callback.
96      * Only observe APP_STATE_CREATE and APP_STATE_TERMINATED
97      *
98      * @param appStateData Application state data.
99      */
100     virtual void OnApplicationStateChanged(const AppStateData &appStateData) override;
101 
102     /**
103      * Application state changed callback.
104      * Only observe APP_STATE_FOREGROUND and APP_STATE_BACKGROUND
105      *
106      * @param appStateData Application state data.
107      */
108     virtual void OnAppStateChanged(const AppStateData &appStateData) override;
109 
110     virtual void OnProcessReused(const ProcessData &processData) override;
111 
112     /**
113      * Will be called when the application start.
114      *
115      * @param appStateData Application state data.
116      */
117     virtual void OnAppStarted(const AppStateData &appStateData) override;
118 
119     /**
120      * Will be called when the application stop.
121      *
122      * @param appStateData Application state data.
123      */
124     virtual void OnAppStopped(const AppStateData &appStateData) override;
125 
126     /**
127      * Will be called when page show.
128      *
129      * @param pageStateData Page state data.
130      */
131     virtual void OnPageShow(const PageStateData &pageStateData) override;
132 
133     /**
134      * Will be called whe page hide.
135      *
136      * @param pageStateData Page state data.
137      */
138     virtual void OnPageHide(const PageStateData &pageStateData) override;
139 
140     /**
141      * Will be called when application cache state change.
142      *
143      * @param appStateData Application state data.
144      */
145     virtual void OnAppCacheStateChanged(const AppStateData &appStateData) override;
146 
147     /**
148      * Will be called when bindingRelation change.
149      *
150      * @param processBindData Process bind data.
151      */
152     virtual void OnProcessBindingRelationChanged(const ProcessBindData &processBindData) override;
153 
154     /**
155      * Will be called when the process keepalive state change.
156      *
157      * @param processData Process data.
158      */
159     virtual void OnKeepAliveStateChanged(const ProcessData &processData) override;
160 
161     virtual void OnProcessPreForegroundChanged(const PreloadProcessData &preloadProcessData) override;
162 
163 private:
164     int32_t HandleOnForegroundApplicationChanged(MessageParcel &data, MessageParcel &reply);
165 
166     int32_t HandleOnAbilityStateChanged(MessageParcel &data, MessageParcel &reply);
167 
168     int32_t HandleOnExtensionStateChanged(MessageParcel &data, MessageParcel &reply);
169 
170     int32_t HandleOnProcessCreated(MessageParcel &data, MessageParcel &reply);
171 
172     int32_t HandleOnProcessStateChanged(MessageParcel &data, MessageParcel &reply);
173 
174     int32_t HandleOnWindowShow(MessageParcel &data, MessageParcel &reply);
175 
176     int32_t HandleOnWindowHidden(MessageParcel &data, MessageParcel &reply);
177 
178     int32_t HandleOnProcessDied(MessageParcel &data, MessageParcel &reply);
179 
180     int32_t HandleOnApplicationStateChanged(MessageParcel &data, MessageParcel &reply);
181 
182     int32_t HandleOnAppStateChanged(MessageParcel &data, MessageParcel &reply);
183 
184     int32_t HandleOnProcessReused(MessageParcel &data, MessageParcel &reply);
185 
186     int32_t HandleOnAppStarted(MessageParcel &data, MessageParcel &reply);
187 
188     int32_t HandleOnAppStopped(MessageParcel &data, MessageParcel &reply);
189 
190     int32_t HandleOnPageShow(MessageParcel &data, MessageParcel &reply);
191 
192     int32_t HandleOnPageHide(MessageParcel &data, MessageParcel &reply);
193 
194     int32_t HandleOnAppCacheStateChanged(MessageParcel &data, MessageParcel &reply);
195 
196     int32_t HandleOnProcessBindingRelationChanged(MessageParcel &data, MessageParcel &reply);
197 
198     int32_t HandleOnKeepAliveStateChanged(MessageParcel &data, MessageParcel &reply);
199 
200     int32_t HandleOnProcessPreForegroundChanged(MessageParcel &data, MessageParcel &reply);
201 
202     static std::mutex callbackMutex_;
203 
204     DISALLOW_COPY_AND_MOVE(ApplicationStateObserverStub);
205 };
206 
207 /**
208  * @class ApplicationStateObserverRecipient
209  * ApplicationStateObserverRecipient notices IRemoteBroker died.
210  */
211 class ApplicationStateObserverRecipient : public IRemoteObject::DeathRecipient {
212 public:
213     using RemoteDiedHandler = std::function<void(const wptr<IRemoteObject> &)>;
214     explicit ApplicationStateObserverRecipient(RemoteDiedHandler handler);
215     virtual ~ApplicationStateObserverRecipient();
216     virtual void OnRemoteDied(const wptr<IRemoteObject> &remote);
217 
218 private:
219     RemoteDiedHandler handler_;
220 };
221 }  // namespace AppExecFwk
222 }  // namespace OHOS
223 #endif  // OHOS_ABILITY_RUNTIME_APPLICATION_STATE_OBSERVER_STUB_H
224