1 /* 2 * Copyright (c) 2023-2024 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 COOPERATE_IN_H 17 #define COOPERATE_IN_H 18 19 #include "i_cooperate_state.h" 20 21 namespace OHOS { 22 namespace Msdp { 23 namespace DeviceStatus { 24 namespace Cooperate { 25 class CooperateIn final : public ICooperateState { 26 public: 27 CooperateIn(IStateMachine &parent, IContext *env); 28 ~CooperateIn(); 29 30 void OnEvent(Context &context, const CooperateEvent &event) override; 31 void OnEnterState(Context &context) override; 32 void OnLeaveState(Context &context) override; 33 34 private: 35 class Initial final : public ICooperateStep { 36 public: 37 Initial(CooperateIn &parent); 38 ~Initial() = default; 39 40 void OnProgress(Context &context, const CooperateEvent &event) override; 41 void OnReset(Context &context, const CooperateEvent &event) override; 42 43 static void BuildChains(std::shared_ptr<Initial> self, CooperateIn &parent); 44 static void RemoveChains(std::shared_ptr<Initial> self); 45 46 private: 47 void OnDisable(Context &context, const CooperateEvent &event); 48 void OnStart(Context &context, const CooperateEvent &event); 49 void OnComeBack(Context &context, const CooperateEvent &event); 50 void OnRelay(Context &context, const CooperateEvent &event); 51 void OnStop(Context &context, const CooperateEvent &event); 52 void OnRemoteStart(Context &context, const CooperateEvent &event); 53 void OnRemoteStop(Context &context, const CooperateEvent &event); 54 void OnAppClosed(Context &context, const CooperateEvent &event); 55 void OnPointerEvent(Context &context, const CooperateEvent &event); 56 void OnBoardOffline(Context &context, const CooperateEvent &event); 57 void OnSwitchChanged(Context &context, const CooperateEvent &event); 58 void OnSoftbusSessionClosed(Context &context, const CooperateEvent &event); 59 void OnUpdateCooperateFlag(Context &context, const CooperateEvent &event); 60 void OnRemoteHotPlug(Context &context, const CooperateEvent &event); 61 void OnRemoteInputDevice(Context &context, const CooperateEvent &event); 62 63 CooperateIn &parent_; 64 static std::set<int32_t> filterPointerActions_; 65 std::shared_ptr<ICooperateStep> relay_ { nullptr }; 66 }; 67 68 class RelayConfirmation : public ICooperateStep { 69 public: 70 RelayConfirmation(CooperateIn &parent, std::shared_ptr<ICooperateStep> prev); 71 ~RelayConfirmation() = default; 72 73 void OnProgress(Context &context, const CooperateEvent &event) override; 74 void OnReset(Context &context, const CooperateEvent &event) override; 75 76 private: 77 void OnDisable(Context &context, const CooperateEvent &event); 78 void OnStop(Context &context, const CooperateEvent &event); 79 void OnResponse(Context &context, const CooperateEvent &event); 80 void OnNormal(Context &context, const CooperateEvent &event); 81 void OnRemoteStart(Context &context, const CooperateEvent &event); 82 void OnRemoteStop(Context &context, const CooperateEvent &event); 83 void OnAppClosed(Context &context, const CooperateEvent &event); 84 void OnPointerEvent(Context &context, const CooperateEvent &event); 85 void OnBoardOffline(Context &context, const CooperateEvent &event); 86 void OnSwitchChanged(Context &context, const CooperateEvent &event); 87 void OnSoftbusSessionClosed(Context &context, const CooperateEvent &event); 88 89 CooperateIn &parent_; 90 int32_t timerId_ { -1 }; 91 }; 92 93 void StopCooperate(Context &context, const CooperateEvent &event); 94 void SetPointerVisible(Context &context); 95 void UnchainConnections(Context &context, const StopCooperateEvent &event) const; 96 97 IContext *env_ { nullptr }; 98 std::shared_ptr<Initial> initial_ { nullptr }; 99 }; 100 } // namespace Cooperate 101 } // namespace DeviceStatus 102 } // namespace Msdp 103 } // namespace OHOS 104 #endif // COOPERATE_IN_H 105