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