1 /*
2 * Copyright (c) 2022-2023 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 "avsession_callback_client.h"
17 #include "avsession_event_handler.h"
18
19 namespace OHOS::AVSession {
AVSessionCallbackClient(const std::shared_ptr<AVSessionCallback> & callback)20 AVSessionCallbackClient::AVSessionCallbackClient(const std::shared_ptr<AVSessionCallback>& callback)
21 : callback_(callback)
22 {
23 SLOGD("construct");
24 }
25
OnAVCallAnswer()26 void AVSessionCallbackClient::OnAVCallAnswer()
27 {
28 CHECK_AND_RETURN_LOG(callback_, "callback is null");
29
30 auto callback = callback_;
31 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
32 .AVSessionPostTask([callback]() { callback->OnAVCallAnswer(); }, std::string(__FUNCTION__)),
33 "AVSessionCallbackClient handler postTask failed");
34 }
35
OnAVCallHangUp()36 void AVSessionCallbackClient::OnAVCallHangUp()
37 {
38 CHECK_AND_RETURN_LOG(callback_, "callback is null");
39
40 auto callback = callback_;
41 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
42 .AVSessionPostTask([callback]() { callback->OnAVCallHangUp(); }, std::string(__FUNCTION__)),
43 "AVSessionCallbackClient handler postTask failed");
44 }
45
OnAVCallToggleCallMute()46 void AVSessionCallbackClient::OnAVCallToggleCallMute()
47 {
48 CHECK_AND_RETURN_LOG(callback_, "callback is null");
49
50 auto callback = callback_;
51 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
52 .AVSessionPostTask([callback]() { callback->OnAVCallToggleCallMute(); }, std::string(__FUNCTION__)),
53 "AVSessionCallbackClient handler postTask failed");
54 }
55
OnPlay()56 void AVSessionCallbackClient::OnPlay()
57 {
58 CHECK_AND_RETURN_LOG(callback_, "callback is null");
59
60 auto callback = callback_;
61 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
62 .AVSessionPostTask([callback]() { callback->OnPlay(); }, std::string(__FUNCTION__)),
63 "AVSessionCallbackClient handler postTask failed");
64 }
65
OnPause()66 void AVSessionCallbackClient::OnPause()
67 {
68 CHECK_AND_RETURN_LOG(callback_, "callback is null");
69
70 auto callback = callback_;
71 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
72 .AVSessionPostTask([callback]() { callback->OnPause(); }, std::string(__FUNCTION__)),
73 "AVSessionCallbackClient handler postTask failed");
74 }
75
OnStop()76 void AVSessionCallbackClient::OnStop()
77 {
78 CHECK_AND_RETURN_LOG(callback_, "callback is null");
79
80 auto callback = callback_;
81 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
82 .AVSessionPostTask([callback]() { callback->OnStop(); }, std::string(__FUNCTION__)),
83 "AVSessionCallbackClient handler postTask failed");
84 }
85
OnPlayNext()86 void AVSessionCallbackClient::OnPlayNext()
87 {
88 CHECK_AND_RETURN_LOG(callback_, "callback is null");
89
90 auto callback = callback_;
91 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
92 .AVSessionPostTask([callback]() { callback->OnPlayNext(); }, std::string(__FUNCTION__)),
93 "AVSessionCallbackClient handler postTask failed");
94 }
95
OnPlayPrevious()96 void AVSessionCallbackClient::OnPlayPrevious()
97 {
98 CHECK_AND_RETURN_LOG(callback_, "callback is null");
99
100 auto callback = callback_;
101 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
102 .AVSessionPostTask([callback]() { callback->OnPlayPrevious(); }, std::string(__FUNCTION__)),
103 "AVSessionCallbackClient handler postTask failed");
104 }
105
OnFastForward(int64_t time)106 void AVSessionCallbackClient::OnFastForward(int64_t time)
107 {
108 CHECK_AND_RETURN_LOG(callback_, "callback is null");
109
110 auto callback = callback_;
111 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
112 .AVSessionPostTask([callback, time]() { callback->OnFastForward(time); }, std::string(__FUNCTION__)),
113 "AVSessionCallbackClient handler postTask failed");
114 }
115
OnRewind(int64_t time)116 void AVSessionCallbackClient::OnRewind(int64_t time)
117 {
118 CHECK_AND_RETURN_LOG(callback_, "callback is null");
119
120 auto callback = callback_;
121 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
122 .AVSessionPostTask([callback, time]() { callback->OnRewind(time); }, std::string(__FUNCTION__)),
123 "AVSessionCallbackClient handler postTask failed");
124 }
125
OnSeek(int64_t time)126 void AVSessionCallbackClient::OnSeek(int64_t time)
127 {
128 CHECK_AND_RETURN_LOG(callback_, "callback is null");
129
130 auto callback = callback_;
131 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
132 .AVSessionPostTask([callback, time]() { callback->OnSeek(time); }, std::string(__FUNCTION__)),
133 "AVSessionCallbackClient handler postTask failed");
134 }
135
OnSetSpeed(double speed)136 void AVSessionCallbackClient::OnSetSpeed(double speed)
137 {
138 CHECK_AND_RETURN_LOG(callback_, "callback is null");
139
140 auto callback = callback_;
141 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
142 .AVSessionPostTask([callback, speed]() { callback->OnSetSpeed(speed); }, std::string(__FUNCTION__)),
143 "AVSessionCallbackClient handler postTask failed");
144 }
145
OnSetLoopMode(int32_t loopMode)146 void AVSessionCallbackClient::OnSetLoopMode(int32_t loopMode)
147 {
148 CHECK_AND_RETURN_LOG(callback_, "callback is null");
149
150 auto callback = callback_;
151 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
152 .AVSessionPostTask([callback, loopMode]() { callback->OnSetLoopMode(loopMode); }, std::string(__FUNCTION__)),
153 "AVSessionCallbackClient handler postTask failed");
154 }
155
OnToggleFavorite(const std::string & mediald)156 void AVSessionCallbackClient::OnToggleFavorite(const std::string& mediald)
157 {
158 CHECK_AND_RETURN_LOG(callback_, "callback is null");
159
160 auto callback = callback_;
161 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
162 .AVSessionPostTask([callback, mediald]() { callback->OnToggleFavorite(mediald); }, std::string(__FUNCTION__)),
163 "AVSessionCallbackClient handler postTask failed");
164 }
165
OnMediaKeyEvent(const MMI::KeyEvent & keyEvent)166 void AVSessionCallbackClient::OnMediaKeyEvent(const MMI::KeyEvent& keyEvent)
167 {
168 CHECK_AND_RETURN_LOG(callback_, "callback is null");
169
170 auto callback = callback_;
171 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
172 .AVSessionPostTask([callback, keyEvent]() { callback->OnMediaKeyEvent(keyEvent); }, std::string(__FUNCTION__)),
173 "AVSessionCallbackClient handler postTask failed");
174 }
175
OnOutputDeviceChange(const int32_t connectionState,const OutputDeviceInfo & outputDeviceInfo)176 void AVSessionCallbackClient::OnOutputDeviceChange(const int32_t connectionState,
177 const OutputDeviceInfo& outputDeviceInfo)
178 {
179 CHECK_AND_RETURN_LOG(callback_, "callback is null");
180
181 auto callback = callback_;
182 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
183 .AVSessionPostTask([callback, connectionState, outputDeviceInfo]() {
184 callback->OnOutputDeviceChange(connectionState, outputDeviceInfo);
185 }, std::string(__FUNCTION__)), "AVSessionCallbackClient handler postTask failed");
186 }
187
OnCommonCommand(const std::string & commonCommand,const AAFwk::WantParams & commandArgs)188 void AVSessionCallbackClient::OnCommonCommand(const std::string& commonCommand,
189 const AAFwk::WantParams& commandArgs)
190 {
191 CHECK_AND_RETURN_LOG(callback_, "callback is null");
192 auto callback = callback_;
193 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance().AVSessionPostTask([callback,
194 commonCommand, commandArgs]() { callback->OnCommonCommand(commonCommand, commandArgs); },
195 std::string(__FUNCTION__)), "AVSessionCallbackClient handler postTask failed");
196 }
197
OnSkipToQueueItem(int32_t itemId)198 void AVSessionCallbackClient::OnSkipToQueueItem(int32_t itemId)
199 {
200 CHECK_AND_RETURN_LOG(callback_, "callback is null");
201
202 auto callback = callback_;
203 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
204 .AVSessionPostTask([callback, itemId]() { callback->OnSkipToQueueItem(itemId); }, std::string(__FUNCTION__)),
205 "AVSessionCallbackClient handler postTask failed");
206 }
207
OnPlayFromAssetId(int64_t assetId)208 void AVSessionCallbackClient::OnPlayFromAssetId(int64_t assetId)
209 {
210 CHECK_AND_RETURN_LOG(callback_, "callback is null");
211
212 auto callback = callback_;
213 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
214 .AVSessionPostTask([callback, assetId]() { callback->OnPlayFromAssetId(assetId); }, std::string(__FUNCTION__)),
215 "AVSessionCallbackClient handler postTask failed");
216 }
217
OnCastDisplayChange(const CastDisplayInfo & castDisplayInfo)218 void AVSessionCallbackClient::OnCastDisplayChange(const CastDisplayInfo& castDisplayInfo)
219 {
220 CHECK_AND_RETURN_LOG(callback_, "callback is null");
221
222 auto callback = callback_;
223 CHECK_AND_PRINT_LOG(AVSessionEventHandler::GetInstance()
224 .AVSessionPostTask([callback, castDisplayInfo]() { callback->OnCastDisplayChange(castDisplayInfo); },
225 std::string(__FUNCTION__)), "AVSessionCallbackClient handler postTask failed");
226 }
227
~AVSessionCallbackClient()228 AVSessionCallbackClient::~AVSessionCallbackClient()
229 {
230 AVSessionEventHandler::GetInstance().AVSessionRemoveTask(std::string(__FUNCTION__));
231 SLOGD("destroy");
232 }
233 }