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 void OnProgressWithOptions(Context &context, const CooperateEvent &event) override; 46 47 private: 48 void OnDisable(Context &context, const CooperateEvent &event); 49 void OnStart(Context &context, const CooperateEvent &event); 50 void OnComeBack(Context &context, const CooperateEvent &event); 51 void OnRelay(Context &context, const CooperateEvent &event); 52 void OnStop(Context &context, const CooperateEvent &event); 53 void OnRemoteStart(Context &context, const CooperateEvent &event); 54 void OnRemoteStop(Context &context, const CooperateEvent &event); 55 void OnAppClosed(Context &context, const CooperateEvent &event); 56 void OnPointerEvent(Context &context, const CooperateEvent &event); 57 void OnBoardOffline(Context &context, const CooperateEvent &event); 58 void OnSwitchChanged(Context &context, const CooperateEvent &event); 59 void OnSoftbusSessionClosed(Context &context, const CooperateEvent &event); 60 void OnUpdateCooperateFlag(Context &context, const CooperateEvent &event); 61 void OnRemoteHotPlug(Context &context, const CooperateEvent &event); 62 void OnRemoteInputDevice(Context &context, const CooperateEvent &event); 63 void OnStartWithOptions(Context &context, const CooperateEvent &event); 64 void OnComeBackWithOptions(Context &context, const CooperateEvent &event); 65 void OnRemoteStartWithOptions(Context &context, const CooperateEvent &event); 66 void OnRelayWithOptions(Context &context, const CooperateEvent &event); 67 68 CooperateIn &parent_; 69 static std::set<int32_t> filterPointerActions_; 70 std::shared_ptr<ICooperateStep> relay_ { nullptr }; 71 }; 72 73 class RelayConfirmation : public ICooperateStep { 74 public: 75 RelayConfirmation(CooperateIn &parent, std::shared_ptr<ICooperateStep> prev); 76 ~RelayConfirmation() = default; 77 78 void OnProgress(Context &context, const CooperateEvent &event) override; 79 void OnReset(Context &context, const CooperateEvent &event) override; 80 void OnProgressWithOptions(Context &context, const CooperateEvent &event) override; 81 82 private: 83 void OnDisable(Context &context, const CooperateEvent &event); 84 void OnStop(Context &context, const CooperateEvent &event); 85 void OnResponse(Context &context, const CooperateEvent &event); 86 void OnNormal(Context &context, const CooperateEvent &event); 87 void OnRemoteStart(Context &context, const CooperateEvent &event); 88 void OnRemoteStop(Context &context, const CooperateEvent &event); 89 void OnAppClosed(Context &context, const CooperateEvent &event); 90 void OnPointerEvent(Context &context, const CooperateEvent &event); 91 void OnBoardOffline(Context &context, const CooperateEvent &event); 92 void OnSwitchChanged(Context &context, const CooperateEvent &event); 93 void OnSoftbusSessionClosed(Context &context, const CooperateEvent &event); 94 void OnRemoteStartWithOptions(Context &context, const CooperateEvent &event); 95 void OnNormalWithOptions(Context &context, const CooperateEvent &event); 96 void OnResetWithNotifyMessage(Context &context, const CooperateEvent &event); 97 void OnResponseWithOptions(Context &context, const CooperateEvent &event); 98 void OnResetWithOptionsNotifyMessage(Context &context, const CooperateEvent &event); 99 100 CooperateIn &parent_; 101 int32_t timerId_ { -1 }; 102 StartWithOptionsEvent startWithOptionsEvent_; 103 }; 104 105 void StopCooperate(Context &context, const CooperateEvent &event); 106 void SetPointerVisible(Context &context); 107 void UnchainConnections(Context &context, const StopCooperateEvent &event) const; 108 109 IContext *env_ { nullptr }; 110 std::shared_ptr<Initial> initial_ { nullptr }; 111 }; 112 } // namespace Cooperate 113 } // namespace DeviceStatus 114 } // namespace Msdp 115 } // namespace OHOS 116 #endif // COOPERATE_IN_H 117