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()23BackgroundTaskSubscriber::BackgroundTaskSubscriber() 24 { 25 impl_ = new (std::nothrow) BackgroundTaskSubscriberImpl(*this); 26 }; 27 ~BackgroundTaskSubscriber()28BackgroundTaskSubscriber::~BackgroundTaskSubscriber() {} 29 OnConnected()30void BackgroundTaskSubscriber::OnConnected() {} 31 OnDisconnected()32void BackgroundTaskSubscriber::OnDisconnected() {} 33 OnTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo> & info)34void BackgroundTaskSubscriber::OnTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo>& info) {} 35 OnTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo> & info)36void BackgroundTaskSubscriber::OnTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo>& info) {} 37 OnAppTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo> & info)38void BackgroundTaskSubscriber::OnAppTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo>& info) {} 39 OnAppTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo> & info)40void BackgroundTaskSubscriber::OnAppTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo>& info) {} 41 OnContinuousTaskStart(const std::shared_ptr<ContinuousTaskCallbackInfo> & continuousTaskCallbackInfo)42void BackgroundTaskSubscriber::OnContinuousTaskStart( 43 const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo) {} 44 OnContinuousTaskStop(const std::shared_ptr<ContinuousTaskCallbackInfo> & continuousTaskCallbackInfo)45void BackgroundTaskSubscriber::OnContinuousTaskStop( 46 const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo) {} 47 OnAppContinuousTaskStop(int32_t uid)48void BackgroundTaskSubscriber::OnAppContinuousTaskStop(int32_t uid) {} 49 OnRemoteDied(const wptr<IRemoteObject> & object)50void BackgroundTaskSubscriber::OnRemoteDied(const wptr<IRemoteObject> &object) {} 51 OnProcEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)52void BackgroundTaskSubscriber::OnProcEfficiencyResourcesApply( 53 const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) {} 54 OnProcEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)55void BackgroundTaskSubscriber::OnProcEfficiencyResourcesReset( 56 const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) {} 57 OnAppEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)58void BackgroundTaskSubscriber::OnAppEfficiencyResourcesApply( 59 const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) {} 60 OnAppEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)61void BackgroundTaskSubscriber::OnAppEfficiencyResourcesReset( 62 const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) {} 63 GetImpl() const64const sptr<BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl> BackgroundTaskSubscriber::GetImpl() const 65 { 66 return impl_; 67 } 68 BackgroundTaskSubscriberImpl(BackgroundTaskSubscriber & subscriber)69BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::BackgroundTaskSubscriberImpl( 70 BackgroundTaskSubscriber &subscriber) : subscriber_(subscriber) {} 71 OnConnected()72void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnConnected() 73 { 74 subscriber_.OnConnected(); 75 } 76 OnDisconnected()77void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnDisconnected() 78 { 79 subscriber_.OnDisconnected(); 80 } 81 OnAppEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)82void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppEfficiencyResourcesApply( 83 const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) 84 { 85 subscriber_.OnAppEfficiencyResourcesApply(resourceInfo); 86 } 87 OnAppEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)88void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppEfficiencyResourcesReset( 89 const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) 90 { 91 subscriber_.OnAppEfficiencyResourcesReset(resourceInfo); 92 } 93 OnProcEfficiencyResourcesApply(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)94void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnProcEfficiencyResourcesApply( 95 const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) 96 { 97 subscriber_.OnProcEfficiencyResourcesApply(resourceInfo); 98 } 99 OnProcEfficiencyResourcesReset(const std::shared_ptr<ResourceCallbackInfo> & resourceInfo)100void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnProcEfficiencyResourcesReset( 101 const std::shared_ptr<ResourceCallbackInfo> &resourceInfo) 102 { 103 subscriber_.OnProcEfficiencyResourcesReset(resourceInfo); 104 } 105 OnTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo> & info)106void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnTransientTaskStart( 107 const std::shared_ptr<TransientTaskAppInfo>& info) 108 { 109 subscriber_.OnTransientTaskStart(info); 110 } 111 OnTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo> & info)112void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnTransientTaskEnd( 113 const std::shared_ptr<TransientTaskAppInfo>& info) 114 { 115 subscriber_.OnTransientTaskEnd(info); 116 } 117 OnAppTransientTaskStart(const std::shared_ptr<TransientTaskAppInfo> & info)118void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppTransientTaskStart( 119 const std::shared_ptr<TransientTaskAppInfo>& info) 120 { 121 subscriber_.OnAppTransientTaskStart(info); 122 } 123 OnAppTransientTaskEnd(const std::shared_ptr<TransientTaskAppInfo> & info)124void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppTransientTaskEnd( 125 const std::shared_ptr<TransientTaskAppInfo>& info) 126 { 127 subscriber_.OnAppTransientTaskEnd(info); 128 } 129 OnContinuousTaskStart(const std::shared_ptr<ContinuousTaskCallbackInfo> & continuousTaskCallbackInfo)130void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnContinuousTaskStart( 131 const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo) 132 { 133 subscriber_.OnContinuousTaskStart(continuousTaskCallbackInfo); 134 } 135 OnContinuousTaskStop(const std::shared_ptr<ContinuousTaskCallbackInfo> & continuousTaskCallbackInfo)136void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnContinuousTaskStop( 137 const std::shared_ptr<ContinuousTaskCallbackInfo> &continuousTaskCallbackInfo) 138 { 139 subscriber_.OnContinuousTaskStop(continuousTaskCallbackInfo); 140 } 141 OnAppContinuousTaskStop(int32_t uid)142void BackgroundTaskSubscriber::BackgroundTaskSubscriberImpl::OnAppContinuousTaskStop(int32_t uid) 143 { 144 subscriber_.OnAppContinuousTaskStop(uid); 145 } 146 GetBackgroundTaskMgrProxy()147bool 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