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