1 /*
2  * Copyright (c) 2021-2022 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 OHOS_JS_WINDOW_STAGE_H
17 #define OHOS_JS_WINDOW_STAGE_H
18 #include <map>
19 #include <refbase.h>
20 #include "native_engine/native_engine.h"
21 #include "native_engine/native_reference.h"
22 #include "native_engine/native_value.h"
23 #include "window_scene.h"
24 #include "window_option.h"
25 namespace OHOS {
26 namespace Rosen {
27 #ifdef _WIN32
28 #define WINDOW_EXPORT __attribute__((dllexport))
29 #else
30 #define WINDOW_EXPORT __attribute__((visibility("default")))
31 #endif
32 WINDOW_EXPORT napi_value CreateJsWindowStage(napi_env env, std::shared_ptr<Rosen::WindowScene> windowScene);
33 class JsWindowStage {
34 public:
35     explicit JsWindowStage(const std::shared_ptr<Rosen::WindowScene>& windowScene);
36     ~JsWindowStage();
37     static void Finalizer(napi_env env, void* data, void* hint);
38     static napi_value SetUIContent(napi_env env, napi_callback_info info);
39     static napi_value GetMainWindow(napi_env env, napi_callback_info info);
40     static napi_value GetMainWindowSync(napi_env env, napi_callback_info info);
41     static napi_value On(napi_env env, napi_callback_info info);
42     static napi_value Off(napi_env env, napi_callback_info info);
43     static napi_value LoadContent(napi_env env, napi_callback_info info);
44     static napi_value LoadContentByName(napi_env env, napi_callback_info info);
45     static napi_value GetWindowMode(napi_env env, napi_callback_info info);
46     static napi_value CreateSubWindow(napi_env env, napi_callback_info info);
47     static napi_value CreateSubWindowWithOptions(napi_env env, napi_callback_info info);
48     static napi_value GetSubWindow(napi_env env, napi_callback_info info);
49     static napi_value SetWindowModal(napi_env env, napi_callback_info info);
50     static napi_value SetShowOnLockScreen(napi_env env, napi_callback_info info);
51     static napi_value DisableWindowDecor(napi_env env, napi_callback_info info);
52     static napi_value SetDefaultDensityEnabled(napi_env env, napi_callback_info info);
53     static napi_value RemoveStartingWindow(napi_env env, napi_callback_info info);
54     static napi_value SetWindowRectAutoSave(napi_env env, napi_callback_info info);
55     static napi_value IsWindowRectAutoSave(napi_env env, napi_callback_info info);
56 
57 private:
58     napi_value OnSetUIContent(napi_env env, napi_callback_info info);
59     napi_value OnGetMainWindow(napi_env env, napi_callback_info info);
60     napi_value OnGetMainWindowSync(napi_env env, napi_callback_info info);
61     napi_value OnEvent(napi_env env, napi_callback_info info);
62     napi_value OffEvent(napi_env env, napi_callback_info info);
63     napi_value OnLoadContent(napi_env env, napi_callback_info info, bool isLoadedByName);
64     napi_value OnGetWindowMode(napi_env env, napi_callback_info info);
65     napi_value OnCreateSubWindow(napi_env env, napi_callback_info info);
66     napi_value OnCreateSubWindowWithOptions(napi_env env, napi_callback_info info);
67     napi_value OnGetSubWindow(napi_env env, napi_callback_info info);
68     napi_value OnSetWindowModal(napi_env env, napi_callback_info info);
69     napi_value OnSetShowOnLockScreen(napi_env env, napi_callback_info info);
70     napi_value OnDisableWindowDecor(napi_env env, napi_callback_info info);
71     napi_value OnSetDefaultDensityEnabled(napi_env env, napi_callback_info info);
72     napi_value OnRemoveStartingWindow(napi_env env, napi_callback_info info);
73     napi_value OnSetWindowRectAutoSave(napi_env env, napi_callback_info info);
74     napi_value OnIsWindowRectAutoSave(napi_env env, napi_callback_info info);
75 
76     std::weak_ptr<WindowScene> windowScene_;
77 };
78 }  // namespace Rosen
79 }  // namespace OHOS
80 #endif  // OHOS_JS_WINDOW_STAGE_H
81