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 "extension_connection_observer.h" 17 18 #include "mem_mgr_event_center.h" 19 #include "memmgr_log.h" 20 #include "reclaim_priority_manager.h" 21 22 namespace OHOS { 23 namespace Memory { 24 namespace { 25 const std::string TAG = "ExtConnObs"; 26 } 27 OnExtensionConnected(const AbilityRuntime::ConnectionData & data)28 void ExtensionConnectionObserver::OnExtensionConnected(const AbilityRuntime::ConnectionData& data) 29 { 30 HILOGI("%{public}s(%{public}d,%{public}d) --> [%{public}s|%{public}s|%{public}s](%{public}d,%{public}d) " 31 "with type %{public}d", data.callerName.c_str(), data.callerPid, data.callerUid, 32 data.extensionBundleName.c_str(), data.extensionModuleName.c_str(), data.extensionName.c_str(), 33 data.extensionPid, data.extensionUid, static_cast<int32_t>(data.extensionType)); 34 35 ReclaimPriorityManager::GetInstance().UpdateReclaimPriority( 36 CallerRequest({data.callerPid, data.callerUid, data.callerName}, 37 {data.extensionPid, data.extensionUid, data.extensionBundleName}, 38 AppStateUpdateReason::BIND_EXTENSION)); 39 } 40 OnExtensionDisconnected(const AbilityRuntime::ConnectionData & data)41 void ExtensionConnectionObserver::OnExtensionDisconnected(const AbilityRuntime::ConnectionData& data) 42 { 43 HILOGI("%{public}s(%{public}d,%{public}d) -/-> [%{public}s|%{public}s|%{public}s](%{public}d,%{public}d) " 44 "with type %{public}d", data.callerName.c_str(), data.callerPid, data.callerUid, 45 data.extensionBundleName.c_str(), data.extensionModuleName.c_str(), data.extensionName.c_str(), 46 data.extensionPid, data.extensionUid, static_cast<int32_t>(data.extensionType)); 47 48 ReclaimPriorityManager::GetInstance().UpdateReclaimPriority( 49 CallerRequest({data.callerPid, data.callerUid, data.callerName}, 50 {data.extensionPid, data.extensionUid, data.extensionBundleName}, 51 AppStateUpdateReason::UNBIND_EXTENSION)); 52 } 53 OnDlpAbilityOpened(const AbilityRuntime::DlpStateData & data)54 void ExtensionConnectionObserver::OnDlpAbilityOpened(const AbilityRuntime::DlpStateData& data) 55 { 56 HILOGI("%{public}s(%{public}d,%{public}d) --> [%{public}s|%{public}s|%{public}s](%{public}d,%{public}d)", 57 data.callerName.c_str(), data.callerPid, data.callerUid, data.targetBundleName.c_str(), 58 data.targetModuleName.c_str(), data.targetAbilityName.c_str(), data.targetPid, data.targetUid); 59 60 ReclaimHandleRequest request; 61 request.callerPid = data.callerPid; 62 request.callerUid = data.callerUid; 63 request.callerBundleName = data.callerName; 64 request.pid = data.targetPid; 65 request.uid = data.targetUid; 66 request.bundleName = data.targetBundleName; 67 request.reason = AppStateUpdateReason::BIND_EXTENSION; 68 ReclaimPriorityManager::GetInstance().UpdateReclaimPriority( 69 CallerRequest({data.callerPid, data.callerUid, data.callerName}, 70 {data.targetPid, data.targetUid, data.targetBundleName}, 71 AppStateUpdateReason::BIND_EXTENSION)); 72 } 73 OnDlpAbilityClosed(const AbilityRuntime::DlpStateData & data)74 void ExtensionConnectionObserver::OnDlpAbilityClosed(const AbilityRuntime::DlpStateData& data) 75 { 76 HILOGI("%{public}s(%{public}d,%{public}d) -/-> [%{public}s|%{public}s|%{public}s](%{public}d,%{public}d)", 77 data.callerName.c_str(), data.callerPid, data.callerUid, data.targetBundleName.c_str(), 78 data.targetModuleName.c_str(), data.targetAbilityName.c_str(), data.targetPid, data.targetUid); 79 80 ReclaimHandleRequest request; 81 request.callerPid = data.callerPid; 82 request.callerUid = data.callerUid; 83 request.callerBundleName = data.callerName; 84 request.pid = data.targetPid; 85 request.uid = data.targetUid; 86 request.bundleName = data.targetBundleName; 87 request.reason = AppStateUpdateReason::UNBIND_EXTENSION; 88 ReclaimPriorityManager::GetInstance().UpdateReclaimPriority( 89 CallerRequest({data.callerPid, data.callerUid, data.callerName}, 90 {data.targetPid, data.targetUid, data.targetBundleName}, 91 AppStateUpdateReason::UNBIND_EXTENSION)); 92 } 93 OnServiceDied()94 void ExtensionConnectionObserver::OnServiceDied() 95 { 96 HILOGE("called"); 97 MemMgrEventCenter::GetInstance().OnExtensionServiceDied(); 98 } 99 } // namespace Memory 100 } // namespace OHOS 101