From fc8f7f9646bf486d537bb135905f1df01d275284 Mon Sep 17 00:00:00 2001 From: mu-xi1117 Date: Tue, 7 Nov 2023 11:34:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=9B=91=E5=90=AC=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I051a17c459895ab8bea49221c518a2a5831a46d1 Signed-off-by: mu-xi1117 --- bundle.json | 3 +- .../sched_controller/app_state_observer.cpp | 49 +++++++--- .../background_task_observer.cpp | 91 ++++++++++++++++--- .../include/app_state_observer.h | 6 +- .../include/background_task_observer.h | 18 +++- .../include/window_state_observer.h | 6 +- .../window_state_observer.cpp | 18 ++-- .../ressched_client/include/res_type.h | 40 +++++++- ressched/ressched.gni | 6 ++ .../observer/include/audio_observer.h | 6 +- .../include/av_session_state_listener.h | 35 +++++++ .../observer/include/connection_subscriber.h | 38 ++++++++ .../observer/include/observer_manager.h | 14 ++- .../observer/src/audio_observer.cpp | 16 +++- .../src/av_session_state_listener.cpp | 60 ++++++++++++ .../observer/src/connection_subscriber.cpp | 89 ++++++++++++++++++ .../observer/src/observer_manager.cpp | 83 ++++++++++++++++- ressched/services/BUILD.gn | 30 +++++- .../services/libresschedsvc.versionscript | 4 + 19 files changed, 567 insertions(+), 45 deletions(-) create mode 100644 ressched/sched_controller/observer/include/av_session_state_listener.h create mode 100644 ressched/sched_controller/observer/include/connection_subscriber.h create mode 100644 ressched/sched_controller/observer/src/av_session_state_listener.cpp create mode 100644 ressched/sched_controller/observer/src/connection_subscriber.cpp diff --git a/bundle.json b/bundle.json index 06d86572..6c856766 100644 --- a/bundle.json +++ b/bundle.json @@ -49,7 +49,8 @@ "soc_perf", "state_registry", "window_manager", - "power_manager" + "power_manager", + "av_session" ], "third_party": [ "json", diff --git a/cgroup_sched/framework/sched_controller/app_state_observer.cpp b/cgroup_sched/framework/sched_controller/app_state_observer.cpp index ce3f4194..e8a8bca8 100644 --- a/cgroup_sched/framework/sched_controller/app_state_observer.cpp +++ b/cgroup_sched/framework/sched_controller/app_state_observer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -113,6 +113,17 @@ void RmsApplicationStateObserver::OnExtensionStateChanged(const AbilityStateData abilityStateData.abilityState, payload); } +void RmsApplicationStateObserver::MarshallingProcessData(const ProcessData &processData, nlohmann::json &payload) +{ + payload["pid"] = std::to_string(processData.pid); + payload["uid"] = std::to_string(processData.uid); + payload["processType"] = std::to_string(static_cast(processData.processType)); + payload["renderUid"] = std::to_string(processData.renderUid); + payload["bundleName"] = processData.bundleName; + payload["state"] = static_cast(processData.state); + payload["extensionType"] = static_cast(processData.extensionType); +} + void RmsApplicationStateObserver::OnProcessCreated(const ProcessData &processData) { if (!ValidateProcessData(processData)) { @@ -132,11 +143,7 @@ void RmsApplicationStateObserver::OnProcessCreated(const ProcessData &processDat } nlohmann::json payload; - payload["pid"] = std::to_string(processData.pid); - payload["uid"] = std::to_string(processData.uid); - payload["processType"] = std::to_string(static_cast(processData.processType)); - payload["renderUid"] = std::to_string(processData.renderUid); - payload["bundleName"] = processData.bundleName; + MarshallingProcessData(processData, payload); ResSchedUtils::GetInstance().ReportDataInProcess( ResType::RES_TYPE_PROCESS_STATE_CHANGE, ResType::ProcessStatus::PROCESS_CREATED, payload); } @@ -159,9 +166,7 @@ void RmsApplicationStateObserver::OnProcessDied(const ProcessData &processData) } nlohmann::json payload; - payload["pid"] = std::to_string(processData.pid); - payload["uid"] = std::to_string(processData.uid); - payload["bundleName"] = processData.bundleName; + MarshallingProcessData(processData, payload); ResSchedUtils::GetInstance().ReportDataInProcess( ResType::RES_TYPE_PROCESS_STATE_CHANGE, ResType::ProcessStatus::PROCESS_DIED, payload); } @@ -192,6 +197,28 @@ void RmsApplicationStateObserver::OnApplicationStateChanged(const AppStateData & ResSchedUtils::GetInstance().ReportDataInProcess(ResType::RES_TYPE_APP_STATE_CHANGE, appStateData.state, payload); } +void RmsApplicationStateObserver::MarshallingAppStateData(const AppStateData &appStateData, nlohmann::json &payload) +{ + payload["pid"] = appStateData.pid; + payload["uid"] = appStateData.uid; + payload["bundleName"] = appStateData.bundleName; + payload["state"] = static_cast(appStateData.state); + payload["extensionType"] = static_cast(appStateData.extensionType); +} + +void RmsApplicationStateObserver::OnAppStateChanged(const AppStateData &appStateData) +{ + if (!ValidateAppStateData(appStateData)) { + CGS_LOGE("%{public}s : validate app state data failed!", __func__); + return; + } + + nlohmann::json payload; + MarshallingAppStateData(appStateData, payload); + ResSchedUtils::GetInstance().ReportDataInProcess(ResType::RES_TYPE_ON_APP_STATE_CHANGED, appStateData.state, + payload); +} + void RmsApplicationStateObserver::OnProcessStateChanged(const ProcessData &processData) { if (!ValidateProcessData(processData)) { @@ -211,9 +238,7 @@ void RmsApplicationStateObserver::OnProcessStateChanged(const ProcessData &proce } nlohmann::json payload; - payload["pid"] = std::to_string(processData.pid); - payload["uid"] = std::to_string(processData.uid); - payload["bundleName"] = processData.bundleName; + MarshallingProcessData(processData, payload); ResSchedUtils::GetInstance().ReportDataInProcess( ResType::RES_TYPE_PROCESS_STATE_CHANGE, static_cast(processData.state), payload); } diff --git a/cgroup_sched/framework/sched_controller/background_task_observer.cpp b/cgroup_sched/framework/sched_controller/background_task_observer.cpp index 6fc1dd00..1eb5be74 100644 --- a/cgroup_sched/framework/sched_controller/background_task_observer.cpp +++ b/cgroup_sched/framework/sched_controller/background_task_observer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -28,6 +28,14 @@ namespace { constexpr HiviewDFX::HiLogLabel LOG_LABEL = {LOG_CORE, LOG_TAG_DOMAIN_ID_RMS, "BackgroundTaskObserver"}; } +void BackgroundTaskObserver::MarshallingTransientTaskAppInfo( + const std::shared_ptr& info, nlohmann::json& payload) +{ + payload["pid"] = std::to_string(info->GetPid()); + payload["uid"] = std::to_string(info->GetUid()); + payload["bundleName"] = info->GetPackageName(); +} + void BackgroundTaskObserver::OnTransientTaskStart(const std::shared_ptr& info) { if (!ValidateTaskInfo(info)) { @@ -46,9 +54,7 @@ void BackgroundTaskObserver::OnTransientTaskStart(const std::shared_ptrGetPid()); - payload["uid"] = std::to_string(info->GetUid()); - payload["bundleName"] = info->GetPackageName(); + MarshallingTransientTaskAppInfo(info, payload); ResSchedUtils::GetInstance().ReportDataInProcess( ResType::RES_TYPE_TRANSIENT_TASK, ResType::TransientTaskStatus::TRANSIENT_TASK_START, payload); } @@ -71,13 +77,21 @@ void BackgroundTaskObserver::OnTransientTaskEnd(const std::shared_ptrGetPid()); - payload["uid"] = std::to_string(info->GetUid()); - payload["bundleName"] = info->GetPackageName(); + MarshallingTransientTaskAppInfo(info, payload); ResSchedUtils::GetInstance().ReportDataInProcess( ResType::RES_TYPE_TRANSIENT_TASK, ResType::TransientTaskStatus::TRANSIENT_TASK_END, payload); } +void BackgroundTaskObserver::MarshallingContinuousTaskCallbackInfo( + const std::shared_ptr& continuousTaskCallbackInfo, nlohmann::json& payload) +{ + payload["pid"] = std::to_string(continuousTaskCallbackInfo->GetCreatorPid()); + payload["uid"] = std::to_string(continuousTaskCallbackInfo->GetCreatorUid()); + payload["abilityName"] = continuousTaskCallbackInfo->GetAbilityName(); + payload["typeId"] = std::to_string(continuousTaskCallbackInfo->GetTypeId()); + payload["isFromWebview"] = continuousTaskCallbackInfo->IsFromWebview(); +} + void BackgroundTaskObserver::OnContinuousTaskStart( const std::shared_ptr &continuousTaskCallbackInfo) { @@ -98,10 +112,7 @@ void BackgroundTaskObserver::OnContinuousTaskStart( } nlohmann::json payload; - payload["pid"] = std::to_string(continuousTaskCallbackInfo->GetCreatorPid()); - payload["uid"] = std::to_string(continuousTaskCallbackInfo->GetCreatorUid()); - payload["abilityName"] = continuousTaskCallbackInfo->GetAbilityName(); - payload["typeId"] = std::to_string(continuousTaskCallbackInfo->GetTypeId()); + MarshallingContinuousTaskCallbackInfo(continuousTaskCallbackInfo, payload); ResSchedUtils::GetInstance().ReportDataInProcess( ResType::RES_TYPE_CONTINUOUS_TASK, ResType::ContinuousTaskStatus::CONTINUOUS_TASK_START, payload); } @@ -126,10 +137,7 @@ void BackgroundTaskObserver::OnContinuousTaskStop( } nlohmann::json payload; - payload["pid"] = std::to_string(continuousTaskCallbackInfo->GetCreatorPid()); - payload["uid"] = std::to_string(continuousTaskCallbackInfo->GetCreatorUid()); - payload["abilityName"] = continuousTaskCallbackInfo->GetAbilityName(); - payload["typeId"] = std::to_string(continuousTaskCallbackInfo->GetTypeId()); + MarshallingContinuousTaskCallbackInfo(continuousTaskCallbackInfo, payload); ResSchedUtils::GetInstance().ReportDataInProcess( ResType::RES_TYPE_CONTINUOUS_TASK, ResType::ContinuousTaskStatus::CONTINUOUS_TASK_END, payload); } @@ -138,6 +146,59 @@ void BackgroundTaskObserver::OnRemoteDied(const wptr &object) { CGS_LOGI("%{public}s.", __func__); } + +void BackgroundTaskObserver::MarshallingResourceInfo( + const std::shared_ptr &resourceInfo, nlohmann::json &payload) +{ + payload["pid"] = resourceInfo->GetPid(); + payload["uid"] = resourceInfo->GetUid(); + payload["resourceNumber"] = resourceInfo->GetResourceNumber(); + payload["bundleName"] = resourceInfo->GetBundleName(); +} + +void BackgroundTaskObserver::OnAppEfficiencyResourcesApply( + const std::shared_ptr &resourceInfo) +{ + nlohmann::json payload; + MarshallingResourceInfo(resourceInfo, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED, + ResType::EfficiencyResourcesStatus::APP_EFFICIENCY_RESOURCES_APPLY, + payload); +} + +void BackgroundTaskObserver::OnAppEfficiencyResourcesReset( + const std::shared_ptr &resourceInfo) +{ + nlohmann::json payload; + MarshallingResourceInfo(resourceInfo, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED, + ResType::EfficiencyResourcesStatus::APP_EFFICIENCY_RESOURCES_RESET, + payload); +} + +void BackgroundTaskObserver::OnProcEfficiencyResourcesApply( + const std::shared_ptr &resourceInfo) +{ + nlohmann::json payload; + MarshallingResourceInfo(resourceInfo, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED, + ResType::EfficiencyResourcesStatus::PROC_EFFICIENCY_RESOURCES_APPLY, + payload); +} + +void BackgroundTaskObserver::OnProcEfficiencyResourcesReset( + const std::shared_ptr &resourceInfo) +{ + nlohmann::json payload; + MarshallingResourceInfo(resourceInfo, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED, + ResType::EfficiencyResourcesStatus::PROC_EFFICIENCY_RESOURCES_RESET, + payload); +} } // namespace ResourceSchedule } // namespace OHOS #endif diff --git a/cgroup_sched/framework/sched_controller/include/app_state_observer.h b/cgroup_sched/framework/sched_controller/include/app_state_observer.h index 0dfce0f3..8ec9507a 100644 --- a/cgroup_sched/framework/sched_controller/include/app_state_observer.h +++ b/cgroup_sched/framework/sched_controller/include/app_state_observer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -16,6 +16,7 @@ #ifndef CGROUP_SCHED_FRAMEWORK_SCHED_CONTROLLER_INCLUDE_APP_STATE_OBSERVER_H_ #define CGROUP_SCHED_FRAMEWORK_SCHED_CONTROLLER_INCLUDE_APP_STATE_OBSERVER_H_ +#include "nlohmann/json.hpp" #include "application_state_observer_stub.h" namespace OHOS { @@ -34,6 +35,7 @@ public: void OnProcessDied(const ProcessData &processData) override; void OnApplicationStateChanged(const AppStateData &appStateData) override; void OnProcessStateChanged(const ProcessData &processData) override; + void OnAppStateChanged(const AppStateData &appStateData) override; private: inline bool ValidateAppStateData(const AppStateData &appStateData) const @@ -55,6 +57,8 @@ private: return processData.uid > 0 && processData.pid >= 0 && processData.bundleName.size() > 0; } + void MarshallingProcessData(const ProcessData &processData, nlohmann::json &payload); + void MarshallingAppStateData(const AppStateData &appStateData, nlohmann::json &payload); }; } // namespace ResourceSchedule } // namespace OHOS diff --git a/cgroup_sched/framework/sched_controller/include/background_task_observer.h b/cgroup_sched/framework/sched_controller/include/background_task_observer.h index 79cba024..ac512a7c 100644 --- a/cgroup_sched/framework/sched_controller/include/background_task_observer.h +++ b/cgroup_sched/framework/sched_controller/include/background_task_observer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -39,6 +39,22 @@ public: void OnContinuousTaskStart(const std::shared_ptr &continuousTaskCallbackInfo) override; void OnContinuousTaskStop(const std::shared_ptr &continuousTaskCallbackInfo) override; void OnRemoteDied(const wptr &object) override; + virtual void OnAppEfficiencyResourcesApply( + const std::shared_ptr &resourceInfo) override; + virtual void OnAppEfficiencyResourcesReset( + const std::shared_ptr &resourceInfo) override; + virtual void OnProcEfficiencyResourcesApply( + const std::shared_ptr &resourceInfo) override; + virtual void OnProcEfficiencyResourcesReset( + const std::shared_ptr &resourceInfo) override; + +private: + void MarshallingTransientTaskAppInfo( + const std::shared_ptr& info, nlohmann::json& payload); + void MarshallingContinuousTaskCallbackInfo( + const std::shared_ptr& continuousTaskCallbackInfo, nlohmann::json& payload); + void MarshallingResourceInfo( + const std::shared_ptr &resourceInfo, nlohmann::json &payload); private: inline bool ValidateTaskInfo(const std::shared_ptr& info) const diff --git a/cgroup_sched/framework/sched_controller/include/window_state_observer.h b/cgroup_sched/framework/sched_controller/include/window_state_observer.h index 2a7adc47..bb4ccab5 100644 --- a/cgroup_sched/framework/sched_controller/include/window_state_observer.h +++ b/cgroup_sched/framework/sched_controller/include/window_state_observer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -20,6 +20,7 @@ #include "iremote_object.h" #include "window_manager.h" #include "wm_common.h" +#include "nlohmann/json.hpp" namespace OHOS { namespace ResourceSchedule { @@ -38,6 +39,9 @@ public: class WindowVisibilityObserver : public IVisibilityChangedListener { public: void OnWindowVisibilityChanged(const std::vector>& windowVisibilityInfo) override; + +private: + void MarshallingWindowVisibilityInfo(const sptr& info, nlohmann::json& payload); }; } // namespace ResourceSchedule } // namespace OHOS diff --git a/cgroup_sched/framework/sched_controller/window_state_observer.cpp b/cgroup_sched/framework/sched_controller/window_state_observer.cpp index 3842c3cf..0e15bb3a 100644 --- a/cgroup_sched/framework/sched_controller/window_state_observer.cpp +++ b/cgroup_sched/framework/sched_controller/window_state_observer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -83,6 +83,16 @@ void WindowStateObserver::OnUnfocused(const sptr& focusChangeIn ResType::RES_TYPE_WINDOW_FOCUS, ResType::WindowFocusStatus::WINDOW_UNFOCUS, payload); } +void WindowVisibilityObserver::MarshallingWindowVisibilityInfo(const sptr& info, + nlohmann::json& payload) +{ + payload["pid"] = std::to_string(info->pid_); + payload["uid"] = std::to_string(info->uid_); + payload["windowId"] = std::to_string(info->windowId_); + payload["windowType"] = std::to_string((int32_t)info->windowType_); + payload["visibilityState"] = std::to_string(info->visibilityState_); +} + void WindowVisibilityObserver::OnWindowVisibilityChanged( const std::vector>& windowVisibilityInfo) { @@ -103,11 +113,7 @@ void WindowVisibilityObserver::OnWindowVisibilityChanged( cgHandler->HandleWindowVisibilityChanged(windowId, visibilityState, windowType, pid, uid); }); nlohmann::json payload; - payload["pid"] = std::to_string(pid); - payload["uid"] = std::to_string(uid); - payload["windowId"] = std::to_string(windowId); - payload["windowType"] = std::to_string((int32_t)windowType); - payload["visibilityState"] = std::to_string(visibilityState); + MarshallingWindowVisibilityInfo(info, payload); bool isVisible = visibilityState < Rosen::WindowVisibilityState::WINDOW_VISIBILITY_STATE_TOTALLY_OCCUSION; ResSchedUtils::GetInstance().ReportDataInProcess(ResType::RES_TYPE_WINDOW_VISIBILITY_CHANGE, isVisible ? ResType::WindowVisibilityStatus::VISIBLE : ResType::WindowVisibilityStatus::INVISIBLE, payload); diff --git a/ressched/interfaces/innerkits/ressched_client/include/res_type.h b/ressched/interfaces/innerkits/ressched_client/include/res_type.h index 9027aeaf..9d72df89 100644 --- a/ressched/interfaces/innerkits/ressched_client/include/res_type.h +++ b/ressched/interfaces/innerkits/ressched_client/include/res_type.h @@ -140,6 +140,18 @@ enum : uint32_t { RES_TYPE_ANCO_APP_FRONT = 49, // report time zone changed RES_TYPE_TIMEZONE_CHANGED = 50, + // report connection status + RES_TYPE_CONNECTION_OBSERVER = 51, + // report av session create event + RES_TYPE_AV_SESSION_ON_SESSION_CREATE = 52, + // report av session release event + RES_TYPE_AV_SESSION_ON_SESSION_RELEASE = 53, + // report av session change event + RES_TYPE_AV_SESSION_ON_TOP_SESSION_CHANGE = 54, + // report OnAppStateChanged event + RES_TYPE_ON_APP_STATE_CHANGED = 55, + // report efficiency resources event + RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED = 56, }; inline const std::map resTypeToStr = { @@ -193,7 +205,13 @@ inline const std::map resTypeToStr = { { RES_TYPE_MMI_INPUT_STATE, "RES_TYPE_MMI_INPUT_STATE" }, { RES_TYPE_ANCO_CUST, "RES_TYPE_ANCO_CUST" }, { RES_TYPE_ANCO_APP_FRONT, "RES_TYPE_ANCO_APP_FRONT" }, - { RES_TYPE_TIMEZONE_CHANGED, "RES_TYPE_TIMEZONE_CHANGED" } + { RES_TYPE_TIMEZONE_CHANGED, "RES_TYPE_TIMEZONE_CHANGED" }, + { RES_TYPE_CONNECTION_OBSERVER, "RES_TYPE_CONNECTION_OBSERVER" }, + { RES_TYPE_AV_SESSION_ON_SESSION_CREATE, "RES_TYPE_AV_SESSION_ON_SESSION_CREATE" }, + { RES_TYPE_AV_SESSION_ON_SESSION_RELEASE, "RES_TYPE_AV_SESSION_ON_SESSION_RELEASE" }, + { RES_TYPE_AV_SESSION_ON_TOP_SESSION_CHANGE, "RES_TYPE_AV_SESSION_ON_TOP_SESSION_CHANGE" }, + { RES_TYPE_ON_APP_STATE_CHANGED, "RES_TYPE_ON_APP_STATE_CHANGED" }, + { RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED, "RES_TYPE_EFFICIENCY_RESOURCES_STATE_CHANGED" }, }; /** @@ -249,6 +267,16 @@ enum ContinuousTaskStatus : int64_t { CONTINUOUS_TASK_END = 1, }; +/** + * @brief efficiency resources status + */ +enum EfficiencyResourcesStatus : int64_t { + APP_EFFICIENCY_RESOURCES_APPLY, + APP_EFFICIENCY_RESOURCES_RESET, + PROC_EFFICIENCY_RESOURCES_APPLY, + PROC_EFFICIENCY_RESOURCES_RESET, +}; + /** * @brief Window focus status */ @@ -445,6 +473,16 @@ enum AncoConfig : int64_t { PROTECT_LRU = 0, DEFAULT = 1, }; + +/** + * @brief connection State + */ +enum ConnectionObserverStatus : int64_t { + EXTENSION_CONNECTED = 0, + EXTENSION_DISCONNECTED, + DLP_ABILITY_OPENED, + DLP_ABILITY_CLOSED, +}; } // namespace ResType } // namespace ResourceSchedule } // namespace OHOS diff --git a/ressched/ressched.gni b/ressched/ressched.gni index bff82186..3faa1d15 100644 --- a/ressched/ressched.gni +++ b/ressched/ressched.gni @@ -72,4 +72,10 @@ declare_args() { !defined(global_parts_info.communication_bluetooth)) { communication_bluetooth_perception_enable = false } + + ressched_with_resourceschedule_multimedia_av_session_enable = true + if (defined(global_parts_info) && + !defined(global_parts_info.multimedia_av_session)) { + ressched_with_resourceschedule_multimedia_av_session_enable = false + } } diff --git a/ressched/sched_controller/observer/include/audio_observer.h b/ressched/sched_controller/observer/include/audio_observer.h index 3db7693e..ab64820b 100644 --- a/ressched/sched_controller/observer/include/audio_observer.h +++ b/ressched/sched_controller/observer/include/audio_observer.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -18,6 +18,7 @@ #include +#include "nlohmann/json.hpp" #include "audio_stream_manager.h" #include "audio_system_manager.h" @@ -32,6 +33,9 @@ public: void OnVolumeKeyEvent(AudioStandard::VolumeEvent volumeEvent) override; private: int32_t mode_ = -1; + void MarshallingAudioRendererChangeInfo( + const std::unique_ptr &audioRendererChangeInfo, + nlohmann::json &payload); }; } // namespace ResourceSchedule } // namespace OHOS diff --git a/ressched/sched_controller/observer/include/av_session_state_listener.h b/ressched/sched_controller/observer/include/av_session_state_listener.h new file mode 100644 index 00000000..d407316b --- /dev/null +++ b/ressched/sched_controller/observer/include/av_session_state_listener.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_AV_SESSION_STATE_LISTENER_H +#define RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_AV_SESSION_STATE_LISTENER_H + +#include "avsession_info.h" +#include "nlohmann/json.hpp" + +namespace OHOS { +namespace ResourceSchedule { +class AvSessionStateListener : public AVSession::SessionListener { +public: + virtual void OnSessionCreate(const AVSession::AVSessionDescriptor& descriptor) override; + virtual void OnSessionRelease(const AVSession::AVSessionDescriptor& descriptor) override; + virtual void OnTopSessionChange(const AVSession::AVSessionDescriptor& descriptor) override; + +private: + void MarshallingAVSessionDescriptor(const AVSession::AVSessionDescriptor& descriptor, nlohmann::json &payload); +}; +} // OHOS +} // namespace ResourceSchedule +#endif // RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_AV_SESSION_STATE_LISTENER_H diff --git a/ressched/sched_controller/observer/include/connection_subscriber.h b/ressched/sched_controller/observer/include/connection_subscriber.h new file mode 100644 index 00000000..f6c14d5a --- /dev/null +++ b/ressched/sched_controller/observer/include/connection_subscriber.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_ABILITY_RUNTIME_CONNECTION_OBSERVER_H +#define RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_ABILITY_RUNTIME_CONNECTION_OBSERVER_H + +#include "nlohmann/json.hpp" +#include "connection_observer.h" + +namespace OHOS { +namespace ResourceSchedule { +class ConnectionSubscriber : public AbilityRuntime::ConnectionObserver { +public: + virtual void OnExtensionConnected(const AbilityRuntime::ConnectionData& data) override; + virtual void OnExtensionDisconnected(const AbilityRuntime::ConnectionData& data) override; + virtual void OnDlpAbilityOpened(const AbilityRuntime::DlpStateData& data) override; + virtual void OnDlpAbilityClosed(const AbilityRuntime::DlpStateData& data) override; + virtual void OnServiceDied() override; + +private: + void MarshallingConnectionData(const AbilityRuntime::ConnectionData& data, nlohmann::json &payload); + void MarshallingDlpStateData(const AbilityRuntime::DlpStateData& data, nlohmann::json &payload); +}; +} // namespace ResourceSchedule +} // namespace OHOS +#endif // RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_ABILITY_RUNTIME_CONNECTION_OBSERVER_H \ No newline at end of file diff --git a/ressched/sched_controller/observer/include/observer_manager.h b/ressched/sched_controller/observer/include/observer_manager.h index b0790ef9..164165bd 100644 --- a/ressched/sched_controller/observer/include/observer_manager.h +++ b/ressched/sched_controller/observer/include/observer_manager.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -22,6 +22,7 @@ #include "audio_observer.h" #include "hisysevent_observer.h" +#include "connection_subscriber.h" #ifdef DEVICE_MOVEMENT_PERCEPTION_ENABLE #include "device_movement_observer.h" #endif @@ -29,6 +30,9 @@ #include "sched_telephony_observer.h" #endif #include "mmi_observer.h" +#ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE +#include "av_session_state_listener.h" +#endif namespace OHOS { namespace ResourceSchedule { @@ -62,6 +66,13 @@ public: void InitSysAbilityListener(); void AddItemToSysAbilityListener(int32_t systemAbilityId, sptr& systemAbilityManager); void GetAllMmiStatusData(); + void InitConnectionSubscriber(); + void DisableConnectionSubscriber(); +#ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE + void InitAVSessionStateChangeListener(); + void DisableAVSessionStateChangeListener(); + std::shared_ptr avSessionStateListener_ = nullptr; +#endif pid_t pid_ = -1; std::map> handleObserverMap_; @@ -78,6 +89,7 @@ public: sptr sysAbilityListener_ = nullptr; std::shared_ptr mmiEventObserver_ = nullptr; std::map, int32_t> mmiStatusData_; + std::shared_ptr connectionSubscriber_ = nullptr; }; } // namespace ResourceSchedule } // namespace OHOS diff --git a/ressched/sched_controller/observer/src/audio_observer.cpp b/ressched/sched_controller/observer/src/audio_observer.cpp index 3730a57d..dafa9ac7 100644 --- a/ressched/sched_controller/observer/src/audio_observer.cpp +++ b/ressched/sched_controller/observer/src/audio_observer.cpp @@ -20,6 +20,18 @@ namespace OHOS { namespace ResourceSchedule { +void AudioObserver::MarshallingAudioRendererChangeInfo( + const std::unique_ptr &audioRendererChangeInfo, nlohmann::json &payload) +{ + payload["uid"] = std::to_string(audioRendererChangeInfo->clientUID); + payload["sessionId"] = std::to_string(audioRendererChangeInfo->sessionId); + payload["rendererState"] = static_cast(audioRendererChangeInfo->rendererState); + + /* struct AudioRendererInfo */ + payload["rendererInfo.contentType"] = static_cast(audioRendererChangeInfo->rendererInfo.contentType); + payload["rendererInfo.streamUsage"] = static_cast(audioRendererChangeInfo->rendererInfo.streamUsage); +} + void AudioObserver::OnRendererStateChange( const std::vector> &audioRendererChangeInfos) { @@ -27,8 +39,8 @@ void AudioObserver::OnRendererStateChange( RESSCHED_LOGD("enter AudioRenderStateObserver::OnRendererStateChange, state: %{public}d", audioRendererChangeInfo->rendererState); nlohmann::json payload; - payload["uid"] = std::to_string(audioRendererChangeInfo->clientUID); - payload["sessionId"] = std::to_string(audioRendererChangeInfo->sessionId); + MarshallingAudioRendererChangeInfo(audioRendererChangeInfo, payload); + ResSchedMgr::GetInstance().ReportData(ResType::RES_TYPE_AUDIO_RENDER_STATE_CHANGE, audioRendererChangeInfo->rendererState, payload); } diff --git a/ressched/sched_controller/observer/src/av_session_state_listener.cpp b/ressched/sched_controller/observer/src/av_session_state_listener.cpp new file mode 100644 index 00000000..5a38ca34 --- /dev/null +++ b/ressched/sched_controller/observer/src/av_session_state_listener.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "av_session_state_listener.h" + +#include "res_sched_log.h" +#include "res_sched_mgr.h" +#include "ressched_utils.h" +#include "res_type.h" + +namespace OHOS { +namespace ResourceSchedule { +void AvSessionStateListener::MarshallingAVSessionDescriptor(const AVSession::AVSessionDescriptor& descriptor, + nlohmann::json &payload) +{ + payload["sessionId_"] = descriptor.sessionId_; + payload["pid_"] = descriptor.pid_; + payload["uid_"] = descriptor.uid_; +} + +void AvSessionStateListener::OnSessionCreate(const AVSession::AVSessionDescriptor& descriptor) +{ + RESSCHED_LOGD("Ressched AvSessionStateListener OnSessionCreate"); + nlohmann::json payload; + MarshallingAVSessionDescriptor(descriptor, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_AV_SESSION_ON_SESSION_CREATE, 0, payload); +} + +void AvSessionStateListener::OnSessionRelease(const AVSession::AVSessionDescriptor& descriptor) +{ + RESSCHED_LOGD("Ressched AvSessionStateListener OnSessionRelease"); + nlohmann::json payload; + MarshallingAVSessionDescriptor(descriptor, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_AV_SESSION_ON_SESSION_RELEASE, 0, payload); +} + +void AvSessionStateListener::OnTopSessionChange(const AVSession::AVSessionDescriptor& descriptor) +{ + RESSCHED_LOGD("Ressched AvSessionStateListener OnTopSessionChange"); + nlohmann::json payload; + MarshallingAVSessionDescriptor(descriptor, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_AV_SESSION_ON_TOP_SESSION_CHANGE, 0, payload); +} +} // OHOS +} // namespace ResourceSchedule \ No newline at end of file diff --git a/ressched/sched_controller/observer/src/connection_subscriber.cpp b/ressched/sched_controller/observer/src/connection_subscriber.cpp new file mode 100644 index 00000000..74aa55df --- /dev/null +++ b/ressched/sched_controller/observer/src/connection_subscriber.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2023-2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "connection_subscriber.h" + +#include "res_sched_log.h" +#include "res_sched_mgr.h" +#include "ressched_utils.h" +#include "res_type.h" + +namespace OHOS { +namespace ResourceSchedule { +void ConnectionSubscriber::MarshallingConnectionData( + const AbilityRuntime::ConnectionData& data, nlohmann::json &payload) +{ + payload["extensionPid"] = data.extensionPid; + payload["extensionUid"] = data.extensionUid; + payload["extensionBundleName"] = data.extensionBundleName; + payload["extensionModuleName"] = data.extensionModuleName; + payload["extensionName"] = data.extensionName; + payload["extensionType"] = static_cast(data.extensionType); + payload["callerUid"] = data.callerUid; + payload["callerPid"] = data.callerPid; + payload["callerName"] = data.callerName; +} + +void ConnectionSubscriber::OnExtensionConnected(const AbilityRuntime::ConnectionData& data) +{ + RESSCHED_LOGD("Ressched ConnectionSubscriber OnExtensionConnected"); + nlohmann::json payload; + MarshallingConnectionData(data, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_CONNECTION_OBSERVER, ResType::ConnectionObserverStatus::EXTENSION_CONNECTED, payload); +} + +void ConnectionSubscriber::OnExtensionDisconnected(const AbilityRuntime::ConnectionData& data) +{ + RESSCHED_LOGD("Ressched ConnectionSubscriber OnExtensionDisconnected"); + nlohmann::json payload; + MarshallingConnectionData(data, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_CONNECTION_OBSERVER, ResType::ConnectionObserverStatus::EXTENSION_DISCONNECTED, payload); +} + +void ConnectionSubscriber::MarshallingDlpStateData(const AbilityRuntime::DlpStateData& data, nlohmann::json &payload) +{ + payload["targetPid"] = data.targetPid; + payload["targetUid"] = data.targetUid; + payload["targetBundleName"] = data.targetBundleName; + payload["targetModuleName"] = data.targetModuleName; + payload["targetAbilityName"] = data.targetAbilityName; + payload["callerUid"] = data.callerUid; + payload["callerPid"] = data.callerPid; + payload["callerName"] = data.callerName; +} + +void ConnectionSubscriber::OnDlpAbilityOpened(const AbilityRuntime::DlpStateData& data) +{ + RESSCHED_LOGD("Ressched ConnectionSubscriber OnDlpAbilityOpened"); + nlohmann::json payload; + MarshallingDlpStateData(data, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_CONNECTION_OBSERVER, ResType::ConnectionObserverStatus::DLP_ABILITY_OPENED, payload); +} + +void ConnectionSubscriber::OnDlpAbilityClosed(const AbilityRuntime::DlpStateData& data) +{ + RESSCHED_LOGD("Ressched ConnectionSubscriber OnDlpAbilityClosed"); + nlohmann::json payload; + MarshallingDlpStateData(data, payload); + ResSchedUtils::GetInstance().ReportDataInProcess( + ResType::RES_TYPE_CONNECTION_OBSERVER, ResType::ConnectionObserverStatus::DLP_ABILITY_CLOSED, payload); +} + +void ConnectionSubscriber::OnServiceDied() +{} +} // namespace ResourceSchedule +} // namespace OHOS diff --git a/ressched/sched_controller/observer/src/observer_manager.cpp b/ressched/sched_controller/observer/src/observer_manager.cpp index 0b8987d7..c3c8b9c2 100644 --- a/ressched/sched_controller/observer/src/observer_manager.cpp +++ b/ressched/sched_controller/observer/src/observer_manager.cpp @@ -23,6 +23,7 @@ #include "iservice_registry.h" #include "parameters.h" #include "res_sched_log.h" +#include "connection_observer_client.h" #ifdef RESSCHED_TELEPHONY_STATE_REGISTRY_ENABLE #include "telephony_observer_client.h" #endif @@ -34,6 +35,9 @@ #include "input_manager.h" #include "sched_controller.h" #include "supervisor.h" +#ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE +#include "avsession_manager.h" +#endif namespace OHOS { namespace ResourceSchedule { @@ -86,7 +90,11 @@ void ObserverManager::InitSysAbilityListener() std::bind(&ObserverManager::InitTelephonyObserver, std::placeholders::_1) }, { AUDIO_POLICY_SERVICE_ID, std::bind(&ObserverManager::InitAudioObserver, std::placeholders::_1) }, { MSDP_MOVEMENT_SERVICE_ID, std::bind(&ObserverManager::InitDeviceMovementObserver, std::placeholders::_1) }, - { MULTIMODAL_INPUT_SERVICE_ID, std::bind(&ObserverManager::InitMMiEventObserver, std::placeholders::_1) } + { MULTIMODAL_INPUT_SERVICE_ID, std::bind(&ObserverManager::InitMMiEventObserver, std::placeholders::_1) }, + { ABILITY_MST_SERVICE_ID, std::bind(&ObserverManager::InitConnectionSubscriber, std::placeholders::_1) }, +#ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE + { AVSESSION_SERVICE_ID, std::bind(&ObserverManager::InitAVSessionStateChangeListener, std::placeholders::_1) }, +#endif }; removeObserverMap_ = { { DFX_SYS_EVENT_SERVICE_ABILITY_ID, std::bind(&ObserverManager::DisableHiSysEventObserver, @@ -95,13 +103,22 @@ void ObserverManager::InitSysAbilityListener() std::bind(&ObserverManager::DisableTelephonyObserver, std::placeholders::_1) }, { AUDIO_POLICY_SERVICE_ID, std::bind(&ObserverManager::DisableAudioObserver, std::placeholders::_1) }, { MSDP_MOVEMENT_SERVICE_ID, std::bind(&ObserverManager::DisableDeviceMovementObserver, std::placeholders::_1) }, - { MULTIMODAL_INPUT_SERVICE_ID, std::bind(&ObserverManager::DisableMMiEventObserver, std::placeholders::_1) } + { MULTIMODAL_INPUT_SERVICE_ID, std::bind(&ObserverManager::DisableMMiEventObserver, std::placeholders::_1) }, + { ABILITY_MST_SERVICE_ID, std::bind(&ObserverManager::DisableConnectionSubscriber, std::placeholders::_1) }, +#ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE + { AVSESSION_SERVICE_ID, + std::bind(&ObserverManager::DisableAVSessionStateChangeListener, std::placeholders::_1) }, +#endif }; AddItemToSysAbilityListener(DFX_SYS_EVENT_SERVICE_ABILITY_ID, systemAbilityManager); AddItemToSysAbilityListener(TELEPHONY_STATE_REGISTRY_SYS_ABILITY_ID, systemAbilityManager); AddItemToSysAbilityListener(AUDIO_POLICY_SERVICE_ID, systemAbilityManager); AddItemToSysAbilityListener(MSDP_MOVEMENT_SERVICE_ID, systemAbilityManager); AddItemToSysAbilityListener(MULTIMODAL_INPUT_SERVICE_ID, systemAbilityManager); + AddItemToSysAbilityListener(ABILITY_MST_SERVICE_ID, systemAbilityManager); +#ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE + AddItemToSysAbilityListener(AVSESSION_SERVICE_ID, systemAbilityManager); +#endif } inline void ObserverManager::AddItemToSysAbilityListener(int32_t systemAbilityId, @@ -392,6 +409,68 @@ void ObserverManager::GetAllMmiStatusData() } } +void ObserverManager::InitConnectionSubscriber() +{ + if (!connectionSubscriber_) { + connectionSubscriber_ = std::make_shared(); + } + + auto res = AbilityRuntime::ConnectionObserverClient::GetInstance().RegisterObserver(connectionSubscriber_); + if (res == OPERATION_SUCCESS) { + RESSCHED_LOGD("ObserverManager init connectionSubscriber successfully"); + } else { + RESSCHED_LOGW("ObserverManager init connectionSubscriber failed"); + HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::RSS, "INIT_FAULT", HiviewDFX::HiSysEvent::EventType::FAULT, + "COMPONENT_NAME", "MAIN", + "ERR_TYPE", "register failure", + "ERR_MSG", "Register a connect subscriber failed!"); + } +} + +void ObserverManager::DisableConnectionSubscriber() +{ + RESSCHED_LOGI("Disable connect subscriber state listener"); + if (!connectionSubscriber_) { + RESSCHED_LOGD("ObserverManager has been disable connect subscriber state listener"); + return; + } + + auto res = AbilityRuntime::ConnectionObserverClient::GetInstance().UnregisterObserver(connectionSubscriber_); + if (res == OPERATION_SUCCESS) { + RESSCHED_LOGD("ObserverManager disable connect subscriber state listener successfully"); + } else { + RESSCHED_LOGW("ObserverManager disable connect subscriber state listener failed"); + } + + connectionSubscriber_ = nullptr; +} + +#ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE +void ObserverManager::InitAVSessionStateChangeListener() +{ + if (!avSessionStateListener_) { + avSessionStateListener_ = std::make_shared(); + } + + auto res = AVSession::AVSessionManager::GetInstance().RegisterSessionListener(avSessionStateListener_); + if (res == OPERATION_SUCCESS) { + RESSCHED_LOGI("ObserverManager init session state listener successfully"); + } else { + RESSCHED_LOGW("ObserverManager init session state listener failed"); + HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::RSS, "INIT_FAULT", HiviewDFX::HiSysEvent::EventType::FAULT, + "COMPONENT_NAME", "MAIN", + "ERR_TYPE", "register failure", + "ERR_MSG", "Register a session state listener failed!"); + } +} + +void ObserverManager::DisableAVSessionStateChangeListener() +{ + RESSCHED_LOGI("Disable session state listener"); + avSessionStateListener_ = nullptr; +} +#endif + extern "C" void ObserverManagerInit() { ObserverManager::GetInstance().Init(); diff --git a/ressched/services/BUILD.gn b/ressched/services/BUILD.gn index d28b4393..b287899b 100644 --- a/ressched/services/BUILD.gn +++ b/ressched/services/BUILD.gn @@ -49,11 +49,14 @@ ohos_shared_library("resschedsvc") { include_dirs = [ "${cgroup_sched_framework}/sched_controller/include", "${cgroup_sched_framework}/process_group/include", + "//foundation/ability/ability_runtime/interfaces/inner_api/connectionobs_manager/include/", + "${cgroup_sched_framework}/utils/include/", ] sources = [ "../sched_controller/common_event/src/event_controller.cpp", "../sched_controller/observer/src/audio_observer.cpp", + "../sched_controller/observer/src/connection_subscriber.cpp", "../sched_controller/observer/src/hisysevent_observer.cpp", "../sched_controller/observer/src/mmi_observer.cpp", "../sched_controller/observer/src/observer_manager.cpp", @@ -75,6 +78,9 @@ ohos_shared_library("resschedsvc") { external_deps = [ "ability_base:want", + "ability_runtime:app_manager", + "ability_runtime:connection_obs_manager", + "ability_runtime:wantagent_innerkits", "access_token:libaccesstoken_sdk", "access_token:libtokenid_sdk", "audio_framework:audio_client", @@ -118,6 +124,12 @@ ohos_shared_library("resschedsvc") { defines += [ "RESSCHED_COMMUNICATION_BLUETOOTH_ENABLE" ] external_deps += [ "bluetooth:btframework" ] } + if (ressched_with_resourceschedule_multimedia_av_session_enable) { + sources += + [ "../sched_controller/observer/src/av_session_state_listener.cpp" ] + external_deps += [ "av_session:avsession_client" ] + } + version_script = "libresschedsvc.versionscript" shlib_type = "sa" subsystem_name = "resourceschedule" @@ -135,11 +147,17 @@ ohos_static_library("resschedsvc_static") { defines = [] - include_dirs = [] + include_dirs = [ + "//foundation/ability/ability_runtime/interfaces/inner_api/connectionobs_manager/include/", + "//foundation/resourceschedule/resource_schedule_service/cgroup_sched/framework/utils/include/", + "//foundation/resourceschedule/resource_schedule_service/cgroup_sched/framework/sched_controller/include/", + "//foundation/resourceschedule/resource_schedule_service/cgroup_sched/framework/process_group/include/", + ] sources = [ "../sched_controller/common_event/src/event_controller.cpp", "../sched_controller/observer/src/audio_observer.cpp", + "../sched_controller/observer/src/connection_subscriber.cpp", "../sched_controller/observer/src/hisysevent_observer.cpp", "../sched_controller/observer/src/mmi_observer.cpp", "../sched_controller/observer/src/observer_manager.cpp", @@ -161,6 +179,9 @@ ohos_static_library("resschedsvc_static") { external_deps = [ "ability_base:want", + "ability_runtime:app_manager", + "ability_runtime:connection_obs_manager", + "ability_runtime:wantagent_innerkits", "access_token:libaccesstoken_sdk", "access_token:libtokenid_sdk", "audio_framework:audio_client", @@ -204,6 +225,13 @@ ohos_static_library("resschedsvc_static") { defines += [ "RESSCHED_COMMUNICATION_BLUETOOTH_ENABLE" ] external_deps += [ "bluetooth:btframework" ] } + if (ressched_with_resourceschedule_multimedia_av_session_enable) { + defines += [ "RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE" ] + sources += + [ "../sched_controller/observer/src/av_session_state_listener.cpp" ] + external_deps += [ "av_session:avsession_client" ] + } + subsystem_name = "resourceschedule" part_name = "resource_schedule_service" } diff --git a/ressched/services/libresschedsvc.versionscript b/ressched/services/libresschedsvc.versionscript index 7ad26a5a..856f6aaa 100644 --- a/ressched/services/libresschedsvc.versionscript +++ b/ressched/services/libresschedsvc.versionscript @@ -20,6 +20,10 @@ *PluginMgr*UnSubscribeResource*; *PluginMgr*GetRunner*; ReportDataInProcess; + *Marshalling*; + *Subscrib*; + *Observer*; + *Listener*; local: *; }; -- Gitee