• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_H
17 #define OHOS_JS_WINDOW_H
18 
19 #include "js_runtime_utils.h"
20 
21 #ifndef WINDOW_PREVIEW
22 #include "js_window_register_manager.h"
23 #else
24 #include "mock/js_window_register_manager.h"
25 #endif
26 
27 #include "js_window_utils.h"
28 #include "native_engine/native_engine.h"
29 #include "native_engine/native_value.h"
30 #include "window.h"
31 
32 namespace OHOS {
33 namespace Rosen {
34 NativeValue* CreateJsWindowObject(NativeEngine& engine, sptr<Window>& window);
35 std::shared_ptr<NativeReference> FindJsWindowObject(std::string windowName);
36 void BindFunctions(NativeEngine& engine, NativeObject* object, const char *moduleName);
37 class JsWindow final {
38 public:
39     explicit JsWindow(const sptr<Window>& window);
40     ~JsWindow();
41     static void Finalizer(NativeEngine* engine, void* data, void* hint);
42     static NativeValue* Show(NativeEngine* engine, NativeCallbackInfo* info);
43     static NativeValue* ShowWindow(NativeEngine* engine, NativeCallbackInfo* info);
44     static NativeValue* ShowWithAnimation(NativeEngine* engine, NativeCallbackInfo* info);
45     static NativeValue* Destroy(NativeEngine* engine, NativeCallbackInfo* info);
46     static NativeValue* DestroyWindow(NativeEngine* engine, NativeCallbackInfo* info);
47     static NativeValue* Hide(NativeEngine* engine, NativeCallbackInfo* info);
48     static NativeValue* HideWithAnimation(NativeEngine* engine, NativeCallbackInfo* info);
49     static NativeValue* MoveTo(NativeEngine* engine, NativeCallbackInfo* info);
50     static NativeValue* MoveWindowTo(NativeEngine* engine, NativeCallbackInfo* info);
51     static NativeValue* Resize(NativeEngine* engine, NativeCallbackInfo* info);
52     static NativeValue* ResizeWindow(NativeEngine* engine, NativeCallbackInfo* info);
53     static NativeValue* SetWindowType(NativeEngine* engine, NativeCallbackInfo* info);
54     static NativeValue* SetWindowMode(NativeEngine* engine, NativeCallbackInfo* info);
55     static NativeValue* GetProperties(NativeEngine* engine, NativeCallbackInfo* info);
56     static NativeValue* GetWindowPropertiesSync(NativeEngine* engine, NativeCallbackInfo* info);
57     static NativeValue* RegisterWindowCallback(NativeEngine* engine, NativeCallbackInfo* info);
58     static NativeValue* UnregisterWindowCallback(NativeEngine* engine, NativeCallbackInfo* info);
59     static NativeValue* BindDialogTarget(NativeEngine* engine, NativeCallbackInfo* info);
60     static NativeValue* LoadContent(NativeEngine* engine, NativeCallbackInfo* info);
61     static NativeValue* SetUIContent(NativeEngine* engine, NativeCallbackInfo* info);
62     static NativeValue* SetFullScreen(NativeEngine* engine, NativeCallbackInfo* info);
63     static NativeValue* SetLayoutFullScreen(NativeEngine* engine, NativeCallbackInfo* info);
64     static NativeValue* SetWindowLayoutFullScreen(NativeEngine* engine, NativeCallbackInfo* info);
65     static NativeValue* SetSystemBarEnable(NativeEngine* engine, NativeCallbackInfo* info);
66     static NativeValue* SetWindowSystemBarEnable(NativeEngine* engine, NativeCallbackInfo* info);
67     static NativeValue* SetSystemBarProperties(NativeEngine* engine, NativeCallbackInfo* info);
68     static NativeValue* SetWindowSystemBarProperties(NativeEngine* engine, NativeCallbackInfo* info);
69     static NativeValue* GetAvoidArea(NativeEngine* engine, NativeCallbackInfo* info);
70     static NativeValue* GetWindowAvoidAreaSync(NativeEngine* engine, NativeCallbackInfo* info);
71     static NativeValue* IsShowing(NativeEngine* engine, NativeCallbackInfo* info);
72     static NativeValue* IsWindowShowingSync(NativeEngine* engine, NativeCallbackInfo* info);
73     static NativeValue* SetBackgroundColor(NativeEngine* engine, NativeCallbackInfo* info);
74     static NativeValue* SetWindowBackgroundColorSync(NativeEngine* engine, NativeCallbackInfo* info);
75     static NativeValue* SetBrightness(NativeEngine* engine, NativeCallbackInfo* info);
76     static NativeValue* SetWindowBrightness(NativeEngine* engine, NativeCallbackInfo* info);
77     static NativeValue* SetDimBehind(NativeEngine* engine, NativeCallbackInfo* info);
78     static NativeValue* SetFocusable(NativeEngine* engine, NativeCallbackInfo* info);
79     static NativeValue* SetWindowFocusable(NativeEngine* engine, NativeCallbackInfo* info);
80     static NativeValue* SetKeepScreenOn(NativeEngine* engine, NativeCallbackInfo* info);
81     static NativeValue* SetWindowKeepScreenOn(NativeEngine* engine, NativeCallbackInfo* info);
82     static NativeValue* SetWakeUpScreen(NativeEngine* engine, NativeCallbackInfo* info);
83     static NativeValue* SetOutsideTouchable(NativeEngine* engine, NativeCallbackInfo* info);
84     static NativeValue* SetPrivacyMode(NativeEngine* engine, NativeCallbackInfo* info);
85     static NativeValue* SetWindowPrivacyMode(NativeEngine* engine, NativeCallbackInfo* info);
86     static NativeValue* SetTouchable(NativeEngine* engine, NativeCallbackInfo* info);
87     static NativeValue* SetWindowTouchable(NativeEngine* engine, NativeCallbackInfo* info);
88     static NativeValue* SetTransparent(NativeEngine* engine, NativeCallbackInfo* info);
89     static NativeValue* SetCallingWindow(NativeEngine* engine, NativeCallbackInfo* info);
90     static NativeValue* SetPreferredOrientation(NativeEngine* engine, NativeCallbackInfo* info);
91     static NativeValue* DisableWindowDecor(NativeEngine* engine, NativeCallbackInfo* info);
92     static NativeValue* SetSnapshotSkip(NativeEngine* engine, NativeCallbackInfo* info);
93     // colorspace, gamut
94     static NativeValue* IsSupportWideGamut(NativeEngine* engine, NativeCallbackInfo* info);
95     static NativeValue* IsWindowSupportWideGamut(NativeEngine* engine, NativeCallbackInfo* info);
96     static NativeValue* SetColorSpace(NativeEngine* engine, NativeCallbackInfo* info);
97     static NativeValue* SetWindowColorSpace(NativeEngine* engine, NativeCallbackInfo* info);
98     static NativeValue* GetColorSpace(NativeEngine* engine, NativeCallbackInfo* info);
99     static NativeValue* GetWindowColorSpaceSync(NativeEngine* engine, NativeCallbackInfo* info);
100     static NativeValue* Dump(NativeEngine* engine, NativeCallbackInfo* info);
101     static NativeValue* SetForbidSplitMove(NativeEngine* engine, NativeCallbackInfo* info);
102     static NativeValue* Snapshot(NativeEngine* engine, NativeCallbackInfo* info);
103 
104     // animation config
105     static NativeValue* Opacity(NativeEngine* engine, NativeCallbackInfo* info);
106     static NativeValue* Scale(NativeEngine* engine, NativeCallbackInfo* info);
107     static NativeValue* Rotate(NativeEngine* engine, NativeCallbackInfo* info);
108     static NativeValue* Translate(NativeEngine* engine, NativeCallbackInfo* info);
109     static NativeValue* GetTransitionController(NativeEngine* engine, NativeCallbackInfo* info);
110 
111     // window effect
112     static NativeValue* SetCornerRadius(NativeEngine* engine, NativeCallbackInfo* info);
113     static NativeValue* SetShadow(NativeEngine* engine, NativeCallbackInfo* info);
114     static NativeValue* SetBlur(NativeEngine* engine, NativeCallbackInfo* info);
115     static NativeValue* SetBackdropBlur(NativeEngine* engine, NativeCallbackInfo* info);
116     static NativeValue* SetBackdropBlurStyle(NativeEngine* engine, NativeCallbackInfo* info);
117 private:
118     std::string GetWindowName();
119     static bool ParseScaleOption(NativeEngine& engine, NativeObject* jsObject, Transform& trans);
120     static bool ParseRotateOption(NativeEngine& engine, NativeObject* jsObject, Transform& trans);
121     static bool ParseTranslateOption(NativeEngine& engine, NativeObject* jsObject, Transform& trans);
122     NativeValue* LoadContentScheduleOld(NativeEngine& engine, NativeCallbackInfo& info);
123     NativeValue* LoadContentScheduleNew(NativeEngine& engine, NativeCallbackInfo& info);
124     NativeValue* OnShow(NativeEngine& engine, NativeCallbackInfo& info);
125     NativeValue* OnShowWindow(NativeEngine& engine, NativeCallbackInfo& info);
126     NativeValue* OnShowWithAnimation(NativeEngine& engine, NativeCallbackInfo& info);
127     NativeValue* OnDestroy(NativeEngine& engine, NativeCallbackInfo& info);
128     NativeValue* OnDestroyWindow(NativeEngine& engine, NativeCallbackInfo& info);
129     NativeValue* OnHide(NativeEngine& engine, NativeCallbackInfo& info);
130     NativeValue* OnHideWithAnimation(NativeEngine& engine, NativeCallbackInfo& info);
131     NativeValue* OnMoveTo(NativeEngine& engine, NativeCallbackInfo& info);
132     NativeValue* OnMoveWindowTo(NativeEngine& engine, NativeCallbackInfo& info);
133     NativeValue* OnResize(NativeEngine& engine, NativeCallbackInfo& info);
134     NativeValue* OnResizeWindow(NativeEngine& engine, NativeCallbackInfo& info);
135     NativeValue* OnSetWindowType(NativeEngine& engine, NativeCallbackInfo& info);
136     NativeValue* OnSetWindowMode(NativeEngine& engine, NativeCallbackInfo& info);
137     NativeValue* OnGetProperties(NativeEngine& engine, NativeCallbackInfo& info);
138     NativeValue* OnGetWindowPropertiesSync(NativeEngine& engine, NativeCallbackInfo& info);
139     NativeValue* OnRegisterWindowCallback(NativeEngine& engine, NativeCallbackInfo& info);
140     NativeValue* OnUnregisterWindowCallback(NativeEngine& engine, NativeCallbackInfo& info);
141     NativeValue* OnBindDialogTarget(NativeEngine& engine, NativeCallbackInfo& info);
142     NativeValue* OnSetFullScreen(NativeEngine& engine, NativeCallbackInfo& info);
143     NativeValue* OnSetLayoutFullScreen(NativeEngine& engine, NativeCallbackInfo& info);
144     NativeValue* OnSetWindowLayoutFullScreen(NativeEngine& engine, NativeCallbackInfo& info);
145     NativeValue* OnSetSystemBarEnable(NativeEngine& engine, NativeCallbackInfo& info);
146     NativeValue* OnSetWindowSystemBarEnable(NativeEngine& engine, NativeCallbackInfo& info);
147     NativeValue* OnSetSystemBarProperties(NativeEngine& engine, NativeCallbackInfo& info);
148     NativeValue* OnSetWindowSystemBarProperties(NativeEngine& engine, NativeCallbackInfo& info);
149     NativeValue* OnLoadContent(NativeEngine& engine, NativeCallbackInfo& info);
150     NativeValue* OnSetUIContent(NativeEngine& engine, NativeCallbackInfo& info);
151     NativeValue* OnGetAvoidArea(NativeEngine& engine, NativeCallbackInfo& info);
152     NativeValue* OnGetWindowAvoidAreaSync(NativeEngine& engine, NativeCallbackInfo& info);
153     NativeValue* OnIsShowing(NativeEngine& engine, NativeCallbackInfo& info);
154     NativeValue* OnIsWindowShowingSync(NativeEngine& engine, NativeCallbackInfo& info);
155     NativeValue* OnSetPreferredOrientation(NativeEngine& engine, NativeCallbackInfo& info);
156 
157     // colorspace, gamut
158     NativeValue* OnIsSupportWideGamut(NativeEngine& engine, NativeCallbackInfo& info);
159     NativeValue* OnIsWindowSupportWideGamut(NativeEngine& engine, NativeCallbackInfo& info);
160     NativeValue* OnSetColorSpace(NativeEngine& engine, NativeCallbackInfo& info);
161     NativeValue* OnSetWindowColorSpace(NativeEngine& engine, NativeCallbackInfo& info);
162     NativeValue* OnGetColorSpace(NativeEngine& engine, NativeCallbackInfo& info);
163     NativeValue* OnGetWindowColorSpaceSync(NativeEngine& engine, NativeCallbackInfo& info);
164     NativeValue* OnSetBackgroundColor(NativeEngine& engine, NativeCallbackInfo& info);
165     NativeValue* OnSetWindowBackgroundColorSync(NativeEngine& engine, NativeCallbackInfo& info);
166     NativeValue* OnSetBrightness(NativeEngine& engine, NativeCallbackInfo& info);
167     NativeValue* OnSetWindowBrightness(NativeEngine& engine, NativeCallbackInfo& info);
168     NativeValue* OnSetDimBehind(NativeEngine& engine, NativeCallbackInfo& info);
169     NativeValue* OnSetFocusable(NativeEngine& engine, NativeCallbackInfo& info);
170     NativeValue* OnSetWindowFocusable(NativeEngine& engine, NativeCallbackInfo& info);
171     NativeValue* OnSetKeepScreenOn(NativeEngine& engine, NativeCallbackInfo& info);
172     NativeValue* OnSetWindowKeepScreenOn(NativeEngine& engine, NativeCallbackInfo& info);
173     NativeValue* OnSetWakeUpScreen(NativeEngine& engine, NativeCallbackInfo& info);
174     NativeValue* OnSetOutsideTouchable(NativeEngine& engine, NativeCallbackInfo& info);
175     NativeValue* OnSetPrivacyMode(NativeEngine& engine, NativeCallbackInfo& info);
176     NativeValue* OnSetWindowPrivacyMode(NativeEngine& engine, NativeCallbackInfo& info);
177     NativeValue* OnSetTouchable(NativeEngine& engine, NativeCallbackInfo& info);
178     NativeValue* OnSetWindowTouchable(NativeEngine& engine, NativeCallbackInfo& info);
179     NativeValue* OnSetTransparent(NativeEngine& engine, NativeCallbackInfo& info);
180     NativeValue* OnSetCallingWindow(NativeEngine& engine, NativeCallbackInfo& info);
181     NativeValue* OnDisableWindowDecor(NativeEngine& engine, NativeCallbackInfo& info);
182     NativeValue* OnDump(NativeEngine& engine, NativeCallbackInfo& info);
183     NativeValue* OnSetForbidSplitMove(NativeEngine& engine, NativeCallbackInfo& info);
184     NativeValue* OnSnapshot(NativeEngine& engine, NativeCallbackInfo& info);
185     NativeValue* OnSetSnapshotSkip(NativeEngine& engine, NativeCallbackInfo& info);
186 
187     // animation Config
188     NativeValue* OnOpacity(NativeEngine& engine, NativeCallbackInfo& info);
189     NativeValue* OnScale(NativeEngine& engine, NativeCallbackInfo& info);
190     NativeValue* OnRotate(NativeEngine& engine, NativeCallbackInfo& info);
191     NativeValue* OnTranslate(NativeEngine& engine, NativeCallbackInfo& info);
192     NativeValue* OnGetTransitionController(NativeEngine& engine, NativeCallbackInfo& info);
193     void CreateTransitionController(NativeEngine& engine);
194 
195     // window effect
196     NativeValue* OnSetCornerRadius(NativeEngine& engine, NativeCallbackInfo& info);
197     NativeValue* OnSetShadow(NativeEngine& engine, NativeCallbackInfo& info);
198     NativeValue* OnSetBlur(NativeEngine& engine, NativeCallbackInfo& info);
199     NativeValue* OnSetBackdropBlur(NativeEngine& engine, NativeCallbackInfo& info);
200     NativeValue* OnSetBackdropBlurStyle(NativeEngine& engine, NativeCallbackInfo& info);
201 
202     sptr<Window> windowToken_ = nullptr;
203     std::unique_ptr<JsWindowRegisterManager> registerManager_ = nullptr;
204     std::shared_ptr<NativeReference> jsTransControllerObj_ = nullptr;
205 };
206 }  // namespace Rosen
207 }  // namespace OHOS
208 #endif