1 /*
2 * Copyright (c) 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 FOUNDATION_ACE_FRAMEWORKS_BRIDGE_CJ_FRONTEND_CJ_FRONTEND_H
17 #define FOUNDATION_ACE_FRAMEWORKS_BRIDGE_CJ_FRONTEND_CJ_FRONTEND_H
18 
19 #include "bridge/cj_frontend/frontend/cj_frontend_abstract.h"
20 
21 namespace OHOS::Ace::Framework {
22 
23 class CJPageRouter;
24 
25 class CJFrontend final : public CJFrontendAbstract {
26 DECLARE_ACE_TYPE(CJFrontend, CJFrontendAbstract)
27 
28 public:
29     void AttachPipelineContext(const RefPtr<PipelineBase>& context) override;
30 
31     RefPtr<AcePage> GetStagingPage();
32 
33 protected:
34     friend class CJEventHandler;
35 
36     void InternalInitialize() override;
37 
38 private:
39     RefPtr<CJPageRouter> classicRouter_;
40     RefPtr<AceEventHandler> handler_;
41 };
42 
43 class CJEventHandler final : public AceEventHandler {
44 public:
CJEventHandler(WeakPtr<CJFrontend> src)45     explicit CJEventHandler(WeakPtr<CJFrontend> src): frontend_(std::move(src)) {}
46 
47     void HandleAsyncEvent(const EventMarker& eventMarker) override;
48 
49     void HandleAsyncEvent(const EventMarker& eventMarker, int32_t param) override;
50 
51     void HandleAsyncEvent(const EventMarker& eventMarker, const BaseEventInfo& info) override;
52 
53     void HandleAsyncEvent(const EventMarker& eventMarker, const std::shared_ptr<BaseEventInfo>& info) override;
54 
55     void HandleAsyncEvent(const EventMarker& eventMarker, const KeyEvent& info) override;
56 
57     void HandleAsyncEvent(const EventMarker& eventMarker, const std::string& param) override;
58 
59     void HandleSyncEvent(const EventMarker& eventMarker, bool& result) override;
60 
61     void HandleSyncEvent(const EventMarker& eventMarker, const BaseEventInfo& info, bool& result) override;
62 
63     void HandleSyncEvent(const EventMarker& eventMarker, const KeyEvent& info, bool& result) override;
64 
65     void HandleSyncEvent(const EventMarker& eventMarker, const std::string& param, std::string& result) override;
66 
67     void HandleSyncEvent(const EventMarker& eventMarker, const std::shared_ptr<BaseEventInfo>& info) override;
68 
69     void HandleSyncEvent(const EventMarker& eventMarker, const std::string& componentId, const int32_t nodeId,
70             const bool isDestroy) override;
71 
72 private:
73     WeakPtr<CJFrontend> frontend_;
74 };
75 
76 }
77 
78 #endif // FOUNDATION_ACE_FRAMEWORKS_BRIDGE_CJ_FRONTEND_CJ_FRONTEND_H
79