• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2025 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 #include "mission_listener_proxy.h"
17 
18 #include "hilog_tag_wrapper.h"
19 #ifdef SUPPORT_SCREEN
20 #include "pixel_map.h"
21 #endif //SUPPORT_SCREEN
22 
23 namespace OHOS {
24 namespace AAFwk {
OnMissionCreated(int32_t missionId)25 void MissionListenerProxy::OnMissionCreated(int32_t missionId)
26 {
27     SendRequestCommon(missionId, IMissionListener::ON_MISSION_CREATED);
28 }
29 
OnMissionDestroyed(int32_t missionId)30 void MissionListenerProxy::OnMissionDestroyed(int32_t missionId)
31 {
32     SendRequestCommon(missionId, IMissionListener::ON_MISSION_DESTROYED);
33 }
34 
OnMissionSnapshotChanged(int32_t missionId)35 void MissionListenerProxy::OnMissionSnapshotChanged(int32_t missionId)
36 {
37     SendRequestCommon(missionId, IMissionListener::ON_MISSION_SNAPSHOT_CHANGED);
38 }
39 
OnMissionMovedToFront(int32_t missionId)40 void MissionListenerProxy::OnMissionMovedToFront(int32_t missionId)
41 {
42     SendRequestCommon(missionId, IMissionListener::ON_MISSION_MOVED_TO_FRONT);
43 }
44 
OnMissionMovedToBackground(int32_t missionId)45 void MissionListenerProxy::OnMissionMovedToBackground(int32_t missionId)
46 {
47     SendRequestCommon(missionId, IMissionListener::ON_MISSION_MOVED_TO_BACKGROUND);
48 }
49 
OnMissionFocused(int32_t missionId)50 void MissionListenerProxy::OnMissionFocused(int32_t missionId)
51 {
52     SendRequestCommon(missionId, IMissionListener::ON_MISSION_FOCUSED);
53 }
54 
OnMissionUnfocused(int32_t missionId)55 void MissionListenerProxy::OnMissionUnfocused(int32_t missionId)
56 {
57     SendRequestCommon(missionId, IMissionListener::ON_MISSION_UNFOCUSED);
58 }
59 
60 #ifdef SUPPORT_SCREEN
OnMissionIconUpdated(int32_t missionId,const std::shared_ptr<Media::PixelMap> & icon)61 void MissionListenerProxy::OnMissionIconUpdated(int32_t missionId, const std::shared_ptr<Media::PixelMap> &icon)
62 {
63     if (!icon) {
64         TAG_LOGE(AAFwkTag::ABILITYMGR, "invalid mission icon");
65         return;
66     }
67 
68     MessageParcel data;
69     MessageParcel reply;
70     MessageOption option;
71 
72     TAG_LOGD(AAFwkTag::ABILITYMGR, "mission_listener_proxy, OnMissionIconUpdated,missionId:%{public}d", missionId);
73     if (!data.WriteInterfaceToken(IMissionListener::GetDescriptor())) {
74         TAG_LOGE(AAFwkTag::ABILITYMGR, "write interface token fail");
75         return;
76     }
77 
78     if (!data.WriteInt32(missionId)) {
79         TAG_LOGE(AAFwkTag::ABILITYMGR, "write missionId fail");
80         return;
81     }
82 
83     if (!data.WriteParcelable(icon.get())) {
84         TAG_LOGE(AAFwkTag::ABILITYMGR, "write icon fail");
85         return;
86     }
87 
88     sptr<IRemoteObject> remote = Remote();
89     if (remote == nullptr) {
90         TAG_LOGE(AAFwkTag::ABILITYMGR, "remote null");
91         return;
92     }
93     int error = remote->SendRequest(IMissionListener::ON_MISSION_ICON_UPDATED, data, reply, option);
94     if (error != NO_ERROR) {
95         TAG_LOGE(AAFwkTag::ABILITYMGR, "SendRequest icon updated fail, error: %{public}d", error);
96         return;
97     }
98 }
99 #endif
100 
OnMissionClosed(int32_t missionId)101 void MissionListenerProxy::OnMissionClosed(int32_t missionId)
102 {
103     SendRequestCommon(missionId, IMissionListener::ON_MISSION_CLOSED);
104 }
105 
OnMissionLabelUpdated(int32_t missionId)106 void MissionListenerProxy::OnMissionLabelUpdated(int32_t missionId)
107 {
108     SendRequestCommon(missionId, IMissionListener::ON_MISSION_LABEL_UPDATED);
109 }
110 
SendRequestCommon(int32_t missionId,IMissionListener::MissionListenerCmd cmd)111 void MissionListenerProxy::SendRequestCommon(int32_t missionId, IMissionListener::MissionListenerCmd cmd)
112 {
113     MessageParcel data;
114     MessageParcel reply;
115     MessageOption option;
116 
117     TAG_LOGD(AAFwkTag::ABILITYMGR, "mission_listener_proxy, sendrequest, cmd:%{public}d, missionId:%{public}d", cmd,
118         missionId);
119     if (!data.WriteInterfaceToken(IMissionListener::GetDescriptor())) {
120         TAG_LOGE(AAFwkTag::ABILITYMGR, "write interface token fail");
121         return;
122     }
123 
124     if (!data.WriteInt32(missionId)) {
125         TAG_LOGE(AAFwkTag::ABILITYMGR, "write missionId error");
126         return;
127     }
128 
129     sptr<IRemoteObject> remote = Remote();
130     if (remote == nullptr) {
131         TAG_LOGE(AAFwkTag::ABILITYMGR, "remote null");
132         return;
133     }
134     int error = remote->SendRequest(cmd, data, reply, option);
135     if (error != NO_ERROR) {
136         TAG_LOGE(AAFwkTag::ABILITYMGR, "OnMissionCreated fail, error: %{public}d", error);
137         return;
138     }
139 }
140 }  // namespace AAFwk
141 }  // namespace OHOS
142