1 /*
2  * Copyright (c) 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 FOUNDATION_ACE_INTERFACES_JS_OBSERVER_H
17 #define FOUNDATION_ACE_INTERFACES_JS_OBSERVER_H
18 
19 #include <string>
20 #include <map>
21 
22 #include "napi/native_api.h"
23 #include "napi/native_common.h"
24 #include "napi/native_node_api.h"
25 
26 namespace OHOS::Ace::Napi {
27 class ObserverProcess {
28 public:
29     ObserverProcess();
30     ~ObserverProcess() = default;
31     static ObserverProcess& GetInstance();
32     napi_value ProcessRegister(napi_env env, napi_callback_info info);
33     napi_value ProcessUnRegister(napi_env env, napi_callback_info info);
34 private:
35     napi_value ProcessNavigationRegister(napi_env env, napi_callback_info info);
36     napi_value ProcessNavigationUnRegister(napi_env env, napi_callback_info info);
37     napi_value ProcessScrollEventRegister(napi_env env, napi_callback_info info);
38     napi_value ProcessScrollEventUnRegister(napi_env env, napi_callback_info info);
39     napi_value ProcessRouterPageRegister(napi_env env, napi_callback_info info);
40     napi_value ProcessRouterPageUnRegister(napi_env env, napi_callback_info info);
41     napi_value ProcessDensityRegister(napi_env env, napi_callback_info info);
42     using Func = napi_value (ObserverProcess::*)(napi_env, napi_callback_info);
43     napi_value ProcessDensityUnRegister(napi_env env, napi_callback_info info);
44     napi_value ProcessDrawCommandSendRegister(napi_env env, napi_callback_info info);
45     napi_value ProcessDrawCommandSendUnRegister(napi_env env, napi_callback_info info);
46     napi_value ProcessLayoutDoneRegister(napi_env env, napi_callback_info info);
47     napi_value ProcessLayoutDoneUnRegister(napi_env env, napi_callback_info info);
48     napi_value ProcessNavDestinationSwitchRegister(napi_env env, napi_callback_info info);
49     napi_value ProcessNavDestinationSwitchUnRegister(napi_env env, napi_callback_info info);
50     napi_value ProcessWillClickRegister(napi_env env, napi_callback_info info);
51     napi_value ProcessWillClickUnRegister(napi_env env, napi_callback_info info);
52     napi_value ProcessDidClickRegister(napi_env env, napi_callback_info info);
53     napi_value ProcessDidClickUnRegister(napi_env env, napi_callback_info info);
54     napi_value ProcessTabContentStateRegister(napi_env env, napi_callback_info info);
55     napi_value ProcessTabContentStateUnRegister(napi_env env, napi_callback_info info);
56     napi_value AddToScrollEventType(napi_env env);
57     napi_value AddToRouterPageState(napi_env env);
58     napi_value CreateNavDestinationState(napi_env env);
59     bool isNavigationHandleFuncSetted_ = false;
60     bool isScrollEventChangeFuncSetted_ = false;
61     bool isDensityChangeSetted_ = false;
62     bool isDrawCommandSendChangeSetted_ = false;
63     bool isLayoutDoneChangeSetted_ = false;
64     bool isWillClickFuncSetted_ = false;
65     bool isDidClickFuncSetted_ = false;
66     bool isTabContentStateUpdateFuncSetted_ = false;
67     bool isRouterPageHandleFuncSetted_ = false;
68     bool isDestinationSwitchHandleFuncSetted_ = false;
69     std::map<std::string, Func> registerProcessMap_;
70     std::map<std::string, Func> unregisterProcessMap_;
71 };
72 } // namespace OHOS::Ace::Napi
73 
74 #endif // FOUNDATION_ACE_INTERFACES_JS_OBSERVER_H
75