1 /* 2 * Copyright (c) 2022-2023 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 #ifndef RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_OBSERVER_MANAGER_H 17 #define RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_OBSERVER_MANAGER_H 18 19 #include <memory> 20 #include "account_observer.h" 21 #include "if_system_ability_manager.h" 22 #include "system_ability_status_change_stub.h" 23 #include "singleton.h" 24 #ifdef RESSCHED_AUDIO_FRAMEWORK_ENABLE 25 #include "audio_observer.h" 26 #endif 27 #include "hisysevent_observer.h" 28 #include "connection_subscriber.h" 29 #ifdef DEVICE_MOVEMENT_PERCEPTION_ENABLE 30 #include "device_movement_observer.h" 31 #endif 32 #ifdef RESSCHED_TELEPHONY_STATE_REGISTRY_ENABLE 33 #include "sched_telephony_observer.h" 34 #endif 35 #include "mmi_observer.h" 36 #ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE 37 #include "av_session_state_listener.h" 38 #endif 39 #include "fold_display_mode_observer.h" 40 #ifdef RESSCHED_REQUEST_REQUEST 41 #include "download_upload_observer.h" 42 #endif 43 44 namespace OHOS { 45 namespace ResourceSchedule { 46 using ReportFunc = bool (*)(); 47 class ObserverManager : public DelayedSingleton<ObserverManager>, 48 public std::enable_shared_from_this<ObserverManager> { 49 public: ObserverManager()50 ObserverManager() {} ~ObserverManager()51 ~ObserverManager() {} 52 void Init(); 53 void Disable(); 54 55 private: 56 class SystemAbilityStatusChangeListener : public OHOS::SystemAbilityStatusChangeStub { 57 public: SystemAbilityStatusChangeListener()58 SystemAbilityStatusChangeListener() {}; 59 virtual void OnAddSystemAbility(int32_t systemAbilityId, const std::string& deviceId) override; 60 virtual void OnRemoveSystemAbility(int32_t systemAbilityId, const std::string& deviceId) override; 61 }; 62 63 void InitHiSysEventObserver(); 64 void DisableHiSysEventObserver(); 65 void InitTelephonyObserver(); 66 void DisableTelephonyObserver(); 67 void InitAudioObserver(); 68 void DisableAudioObserver(); 69 void InitDeviceMovementObserver(); 70 void DisableDeviceMovementObserver(); 71 void InitMMiEventObserver(); 72 void DisableMMiEventObserver(); 73 void InitDisplayModeObserver(); 74 void DisableDisplayModeObserver(); 75 void InitSysAbilityListener(); 76 void AddItemToSysAbilityListener(int32_t systemAbilityId, sptr<ISystemAbilityManager>& systemAbilityManager); 77 void GetAllMmiStatusData(); 78 void InitObserverCbMap(); 79 void InitConnectionSubscriber(); 80 void DisableConnectionSubscriber(); 81 void GetReportFunc(); 82 void InitDataShareObserver(); 83 void DisableDataShareObserver(); 84 void InitAccountObserver(); 85 void DisableAccountObserver(); 86 #ifdef RESSCHED_REQUEST_REQUEST 87 void InitDownloadUploadObserver(); 88 void DisableDownloadUploadObserver(); 89 #endif 90 91 #ifdef RESSCHED_MULTIMEDIA_AV_SESSION_ENABLE 92 void InitAVSessionStateChangeListener(); 93 void DisableAVSessionStateChangeListener(); 94 std::shared_ptr<AvSessionStateListener> avSessionStateListener_ = nullptr; 95 #endif 96 97 pid_t pid_ = -1; 98 std::map<int32_t, std::function<void(std::shared_ptr<ObserverManager>)>> handleObserverMap_; 99 std::map<int32_t, std::function<void(std::shared_ptr<ObserverManager>)>> removeObserverMap_; 100 std::shared_ptr<HiviewDFX::HiSysEventListener> hiSysEventObserver_ = nullptr; 101 #ifdef RESSCHED_TELEPHONY_STATE_REGISTRY_ENABLE 102 int32_t slotId_ = 0; 103 sptr<SchedTelephonyObserver> telephonyObserver_ = nullptr; 104 #endif 105 #ifdef RESSCHED_AUDIO_FRAMEWORK_ENABLE 106 std::shared_ptr<AudioObserver> audioObserver_ = nullptr; 107 #endif 108 #ifdef DEVICE_MOVEMENT_PERCEPTION_ENABLE 109 sptr<DeviceMovementObserver> deviceMovementObserver_ = nullptr; 110 #endif 111 sptr<SystemAbilityStatusChangeListener> sysAbilityListener_ = nullptr; 112 std::shared_ptr<MmiObserver> mmiEventObserver_ = nullptr; 113 std::shared_ptr<ConnectionSubscriber> connectionSubscriber_ = nullptr; 114 sptr<FoldDisplayModeObserver> foldDisplayModeObserver_ = nullptr; 115 #ifdef RESSCHED_REQUEST_REQUEST 116 std::shared_ptr<DownLoadUploadObserver> downLoadUploadObserver_ = nullptr; 117 #endif 118 std::shared_ptr<AccountObserver> accountObserver_ = nullptr; 119 bool isNeedReport_ = true; 120 }; 121 } // namespace ResourceSchedule 122 } // namespace OHOS 123 #endif // RESSCHED_SCHED_CONTROLLER_OBSERVER_INCLUDE_OBSERVER_MANAGER_H 124