• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "background_task_subscriber.h"
17 
18 #include "iservice_registry.h"
19 #include "system_ability_definition.h"
20 
21 namespace OHOS {
22 namespace BackgroundTaskMgr {
BackgroundTaskSubscriber()23 BackgroundTaskSubscriber::BackgroundTaskSubscriber()
24 {
25     impl_ = new (std::nothrow) BackgroundTaskSubscriberImpl(*this);
26 };
27 
~BackgroundTaskSubscriber()28 BackgroundTaskSubscriber::~BackgroundTaskSubscriber() {}
29 
OnConnected()30 void BackgroundTaskSubscriber::OnConnected() {}
31 
OnDisconnected()32 void BackgroundTaskSubscriber::OnDisconnected() {}
33 
OnTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo> & info)34 void BackgroundTaskSubscriber::OnTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo>& info) {}
35 
OnTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo> & info)36 void BackgroundTaskSubscriber::OnTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo>& info) {}
37 
OnAppTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo> & info)38 void BackgroundTaskSubscriber::OnAppTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo>& info) {}
39 
OnAppTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo> & info)40 void BackgroundTaskSubscriber::OnAppTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo>& info) {}
41 
OnContinuousTaskStart(const std::shared_ptr<ContinuousTaskCallbackInfo> & continuousTaskCallbackInfo)42 void BackgroundTaskSubscriber::OnContinuousTaskStart(
43     const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo) {}
44 
OnContinuousTaskStop(const std::shared_ptr<ContinuousTaskCallbackInfo> & continuousTaskCallbackInfo)45 void BackgroundTaskSubscriber::OnContinuousTaskStop(
46     const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo) {}
47 
OnAppContinuousTaskStop(int32_t uid)48 void BackgroundTaskSubscriber::OnAppContinuousTaskStop(int32_t uid) {}
49 
OnRemoteDied(const wptr<IRemoteObject> & object)50 void BackgroundTaskSubscriber::OnRemoteDied(const wptr<IRemoteObject> &object) {}
51 
OnProcEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)52 void BackgroundTaskSubscriber::OnProcEfficiencyResourcesApply(
53     const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) {}
54 
OnProcEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)55 void BackgroundTaskSubscriber::OnProcEfficiencyResourcesReset(
56     const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) {}
57 
OnAppEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)58 void BackgroundTaskSubscriber::OnAppEfficiencyResourcesApply(
59     const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) {}
60 
OnAppEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)61 void BackgroundTaskSubscriber::OnAppEfficiencyResourcesReset(
62     const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) {}
63 
GetImpl() const64 const sptr<BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl> BackgroundTaskSubscriber::GetImpl() const
65 {
66     return impl_;
67 }
68 
BackgroundTaskSubscriberImpl(BackgroundTaskSubscriber & subscriber)69 BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::BackgroundTaskSubscriberImpl(
70     BackgroundTaskSubscriber &subscriber) : subscriber_(subscriber) {}
71 
OnConnected()72 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnConnected()
73 {
74     subscriber_.OnConnected();
75 }
76 
OnDisconnected()77 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnDisconnected()
78 {
79     subscriber_.OnDisconnected();
80 }
81 
OnAppEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)82 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppEfficiencyResourcesApply(
83     const std::shared_ptr<ResourceCallbackInfo> &resourceInfo)
84 {
85     subscriber_.OnAppEfficiencyResourcesApply(resourceInfo);
86 }
87 
OnAppEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)88 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppEfficiencyResourcesReset(
89     const std::shared_ptr<ResourceCallbackInfo> &resourceInfo)
90 {
91     subscriber_.OnAppEfficiencyResourcesReset(resourceInfo);
92 }
93 
OnProcEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)94 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnProcEfficiencyResourcesApply(
95     const std::shared_ptr<ResourceCallbackInfo> &resourceInfo)
96 {
97     subscriber_.OnProcEfficiencyResourcesApply(resourceInfo);
98 }
99 
OnProcEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)100 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnProcEfficiencyResourcesReset(
101     const std::shared_ptr<ResourceCallbackInfo> &resourceInfo)
102 {
103     subscriber_.OnProcEfficiencyResourcesReset(resourceInfo);
104 }
105 
OnTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo> & info)106 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnTransientTaskStart(
107     const std::shared_ptr<TransientTaskAppInfo>& info)
108 {
109     subscriber_.OnTransientTaskStart(info);
110 }
111 
OnTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo> & info)112 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnTransientTaskEnd(
113     const std::shared_ptr<TransientTaskAppInfo>& info)
114 {
115     subscriber_.OnTransientTaskEnd(info);
116 }
117 
OnAppTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo> & info)118 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppTransientTaskStart(
119     const std::shared_ptr<TransientTaskAppInfo>& info)
120 {
121     subscriber_.OnAppTransientTaskStart(info);
122 }
123 
OnAppTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo> & info)124 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppTransientTaskEnd(
125     const std::shared_ptr<TransientTaskAppInfo>& info)
126 {
127     subscriber_.OnAppTransientTaskEnd(info);
128 }
129 
OnContinuousTaskStart(const std::shared_ptr<ContinuousTaskCallbackInfo> & continuousTaskCallbackInfo)130 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnContinuousTaskStart(
131     const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo)
132 {
133     subscriber_.OnContinuousTaskStart(continuousTaskCallbackInfo);
134 }
135 
OnContinuousTaskStop(const std::shared_ptr<ContinuousTaskCallbackInfo> & continuousTaskCallbackInfo)136 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnContinuousTaskStop(
137     const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo)
138 {
139     subscriber_.OnContinuousTaskStop(continuousTaskCallbackInfo);
140 }
141 
OnAppContinuousTaskStop(int32_t uid)142 void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppContinuousTaskStop(int32_t uid)
143 {
144     subscriber_.OnAppContinuousTaskStop(uid);
145 }
146 
GetBackgroundTaskMgrProxy()147 bool BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::GetBackgroundTaskMgrProxy()
148 {
149     std::lock_guard<std::mutex> lock(mutex_);
150     if (proxy_) {
151         return true;
152     }
153     sptr<ISystemAbilityManager> systemAbilityManager =
154         SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
155     if (!systemAbilityManager) {
156         return false;
157     }
158 
159     sptr<IRemoteObject> remoteObject =
160         systemAbilityManager->GetSystemAbility(BACKGROUND_TASK_MANAGER_SERVICE_ID);
161     if (!remoteObject) {
162         return false;
163     }
164 
165     proxy_ = iface_cast<IBackgroundTaskMgr>(remoteObject);
166     if ((!proxy_) || (proxy_->AsObject() == nullptr)) {
167         return false;
168     }
169     return true;
170 }
171 }  // namespace BackgroundTaskMgr
172 }  // namespace OHOS