• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 * Copyright (C) 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 #include "screen_capture_monitor_listener_proxy.h"
17 #include "media_log.h"
18 #include "media_errors.h"
19 
20 namespace {
21 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, LOG_DOMAIN_SCREENCAPTURE, "ScreenCaptureMonitorListenerProxy"};
22 }
23 
24 namespace OHOS {
25 namespace Media {
ScreenCaptureMonitorListenerProxy(const sptr<IRemoteObject> & impl)26 ScreenCaptureMonitorListenerProxy::ScreenCaptureMonitorListenerProxy(const sptr<IRemoteObject> &impl)
27     : IRemoteProxy<IStandardScreenCaptureMonitorListener>(impl)
28 {
29     MEDIA_LOGD("0x%{public}06" PRIXPTR " Instances create", FAKE_POINTER(this));
30 }
31 
~ScreenCaptureMonitorListenerProxy()32 ScreenCaptureMonitorListenerProxy::~ScreenCaptureMonitorListenerProxy()
33 {
34     MEDIA_LOGD("0x%{public}06" PRIXPTR " Instances destroy", FAKE_POINTER(this));
35 }
36 
OnScreenCaptureStarted(int32_t pid)37 void ScreenCaptureMonitorListenerProxy::OnScreenCaptureStarted(int32_t pid)
38 {
39     MessageParcel data;
40     MessageParcel reply;
41     MessageOption option(MessageOption::TF_ASYNC);
42 
43     bool token = data.WriteInterfaceToken(ScreenCaptureMonitorListenerProxy::GetDescriptor());
44     CHECK_AND_RETURN_LOG(token, "Failed to write descriptor!");
45 
46     data.WriteInt32(pid);
47     int error = Remote()->SendRequest(ScreenCaptureMonitorListenerMsg::ON_SCREEN_CAPTURE_STARTED, data, reply, option);
48     CHECK_AND_RETURN_LOG(error == MSERR_OK, "on error failed, error: %{public}d", error);
49 }
50 
OnScreenCaptureFinished(int32_t pid)51 void ScreenCaptureMonitorListenerProxy::OnScreenCaptureFinished(int32_t pid)
52 {
53     MessageParcel data;
54     MessageParcel reply;
55     MessageOption option(MessageOption::TF_ASYNC);
56 
57     bool token = data.WriteInterfaceToken(ScreenCaptureMonitorListenerProxy::GetDescriptor());
58     CHECK_AND_RETURN_LOG(token, "Failed to write descriptor!");
59 
60     data.WriteInt32(pid);
61     int error = Remote()->SendRequest(ScreenCaptureMonitorListenerMsg::ON_SCREEN_CAPTURE_FINISHED, data, reply, option);
62     CHECK_AND_RETURN_LOG(error == MSERR_OK, "on error failed, error: %{public}d", error);
63 }
64 
ScreenCaptureMonitorListenerCallback(const sptr<IStandardScreenCaptureMonitorListener> & listener)65 ScreenCaptureMonitorListenerCallback::ScreenCaptureMonitorListenerCallback(
66     const sptr<IStandardScreenCaptureMonitorListener> &listener) : listener_(listener)
67 {
68     MEDIA_LOGD("0x%{public}06" PRIXPTR " Instances create", FAKE_POINTER(this));
69 }
70 
~ScreenCaptureMonitorListenerCallback()71 ScreenCaptureMonitorListenerCallback::~ScreenCaptureMonitorListenerCallback()
72 {
73     MEDIA_LOGD("0x%{public}06" PRIXPTR " Instances destroy", FAKE_POINTER(this));
74 }
75 
OnScreenCaptureStarted(int32_t pid)76 void ScreenCaptureMonitorListenerCallback::OnScreenCaptureStarted(int32_t pid)
77 {
78     MEDIA_LOGI("OnScreenCaptureStarted");
79     if (listener_ != nullptr) {
80         listener_->OnScreenCaptureStarted(pid);
81     }
82 }
83 
OnScreenCaptureFinished(int32_t pid)84 void ScreenCaptureMonitorListenerCallback::OnScreenCaptureFinished(int32_t pid)
85 {
86     MEDIA_LOGI("OnScreenCaptureFinished");
87     if (listener_ != nullptr) {
88         listener_->OnScreenCaptureFinished(pid);
89     }
90 }
91 } // namespace Media
92 } // namespace OHOS
93