• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 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 napi_value CreateJsWindowObject(napi_env env, sptr<Window>& window);
35 napi_value CreateJsWindowArrayObject(napi_env env, const std::vector<sptr<Window>>& windows);
36 std::shared_ptr<NativeReference> FindJsWindowObject(const std::string& windowName);
37 void BindFunctions(napi_env env, napi_value object, const char* moduleName);
38 napi_value NapiGetUndefined(napi_env env);
39 napi_valuetype GetType(napi_env env, napi_value value);
40 bool NapiIsCallable(napi_env env, napi_value value);
41 napi_value NapiThrowError(napi_env env, WmErrorCode errCode);
42 napi_value NapiThrowError(napi_env env, WmErrorCode errCode, const std::string& msg);
43 class JsWindow final {
44 public:
45     explicit JsWindow(const sptr<Window>& window);
46     ~JsWindow();
47     static void Finalizer(napi_env env, void* data, void* hint);
48     static napi_value Show(napi_env env, napi_callback_info info);
49     static napi_value ShowWindow(napi_env env, napi_callback_info info);
50     static napi_value ShowWithAnimation(napi_env env, napi_callback_info info);
51     static napi_value Destroy(napi_env env, napi_callback_info info);
52     static napi_value DestroyWindow(napi_env env, napi_callback_info info);
53     static napi_value Hide(napi_env env, napi_callback_info info);
54     static napi_value HideWithAnimation(napi_env env, napi_callback_info info);
55 
56     /*
57      * Window Layout
58      */
59     static napi_value MoveTo(napi_env env, napi_callback_info info);
60     static napi_value MoveWindowTo(napi_env env, napi_callback_info info);
61     static napi_value MoveWindowToAsync(napi_env env, napi_callback_info info);
62     static napi_value MoveWindowToGlobal(napi_env env, napi_callback_info info);
63     static napi_value MoveWindowToGlobalDisplay(napi_env env, napi_callback_info info);
64     static napi_value GetGlobalScaledRect(napi_env env, napi_callback_info info);
65     static napi_value Resize(napi_env env, napi_callback_info info);
66     static napi_value ResizeWindow(napi_env env, napi_callback_info info);
67     static napi_value ResizeWindowAsync(napi_env env, napi_callback_info info);
68     static napi_value ResizeWindowWithAnimation(napi_env env, napi_callback_info info);
69     static napi_value ClientToGlobalDisplay(napi_env env, napi_callback_info info);
70     static napi_value GlobalDisplayToClient(napi_env env, napi_callback_info info);
71 
72     static napi_value SetWindowType(napi_env env, napi_callback_info info);
73     static napi_value SetWindowMode(napi_env env, napi_callback_info info);
74     static napi_value GetProperties(napi_env env, napi_callback_info info);
75     static napi_value GetWindowPropertiesSync(napi_env env, napi_callback_info info);
76     static napi_value RegisterWindowCallback(napi_env env, napi_callback_info info);
77     static napi_value UnregisterWindowCallback(napi_env env, napi_callback_info info);
78     static napi_value BindDialogTarget(napi_env env, napi_callback_info info);
79     static napi_value SetDialogBackGestureEnabled(napi_env env, napi_callback_info info);
80     static napi_value LoadContent(napi_env env, napi_callback_info info);
81     static napi_value LoadContentByName(napi_env env, napi_callback_info info);
82     static napi_value GetUIContext(napi_env env, napi_callback_info info);
83     static napi_value SetUIContent(napi_env env, napi_callback_info info);
84     static napi_value IsShowing(napi_env env, napi_callback_info info);
85     static napi_value IsWindowShowingSync(napi_env env, napi_callback_info info);
86     static napi_value SetBackgroundColor(napi_env env, napi_callback_info info);
87     static napi_value SetWindowBackgroundColorSync(napi_env env, napi_callback_info info);
88     static napi_value SetBrightness(napi_env env, napi_callback_info info);
89     static napi_value SetWindowBrightness(napi_env env, napi_callback_info info);
90     static napi_value SetDimBehind(napi_env env, napi_callback_info info);
91     static napi_value SetFocusable(napi_env env, napi_callback_info info);
92     static napi_value SetWindowFocusable(napi_env env, napi_callback_info info);
93     static napi_value SetTopmost(napi_env env, napi_callback_info info);
94     static napi_value SetWindowTopmost(napi_env env, napi_callback_info info);
95     static napi_value SetSubWindowZLevel(napi_env env, napi_callback_info info);
96     static napi_value GetSubWindowZLevel(napi_env env, napi_callback_info info);
97     static napi_value SetWindowDelayRaiseOnDrag(napi_env env, napi_callback_info info);
98     static napi_value SetKeepScreenOn(napi_env env, napi_callback_info info);
99     static napi_value SetWindowKeepScreenOn(napi_env env, napi_callback_info info);
100     static napi_value SetWakeUpScreen(napi_env env, napi_callback_info info);
101     static napi_value SetOutsideTouchable(napi_env env, napi_callback_info info);
102     static napi_value SetPrivacyMode(napi_env env, napi_callback_info info);
103     static napi_value SetWindowPrivacyMode(napi_env env, napi_callback_info info);
104     static napi_value SetTouchable(napi_env env, napi_callback_info info);
105     static napi_value SetTouchableAreas(napi_env env, napi_callback_info info);
106     static napi_value SetResizeByDragEnabled(napi_env env, napi_callback_info info);
107     static napi_value SetRaiseByClickEnabled(napi_env env, napi_callback_info info);
108     static napi_value HideNonSystemFloatingWindows(napi_env env, napi_callback_info info);
109     static napi_value SetWindowTouchable(napi_env env, napi_callback_info info);
110     static napi_value SetTransparent(napi_env env, napi_callback_info info);
111     static napi_value SetCallingWindow(napi_env env, napi_callback_info info);
112     static napi_value SetPreferredOrientation(napi_env env, napi_callback_info info);
113     static napi_value GetPreferredOrientation(napi_env env, napi_callback_info info);
114     static napi_value SetSnapshotSkip(napi_env env, napi_callback_info info);
115     static napi_value RaiseToAppTop(napi_env env, napi_callback_info info);
116     static napi_value SetAspectRatio(napi_env env, napi_callback_info info);
117     static napi_value ResetAspectRatio(napi_env env, napi_callback_info info);
118     static napi_value Minimize(napi_env env, napi_callback_info info);
119     static napi_value RaiseAboveTarget(napi_env env, napi_callback_info info);
120     static napi_value RaiseMainWindowAboveTarget(napi_env env, napi_callback_info info);
121     static napi_value KeepKeyboardOnFocus(napi_env env, napi_callback_info info);
122     static napi_value GetWindowLimits(napi_env env, napi_callback_info info);
123     static napi_value SetWindowLimits(napi_env env, napi_callback_info info);
124     static napi_value SetSingleFrameComposerEnabled(napi_env env, napi_callback_info info);
125     static napi_value EnableLandscapeMultiWindow(napi_env env, napi_callback_info info);
126     static napi_value DisableLandscapeMultiWindow(napi_env env, napi_callback_info info);
127     static napi_value IsFocused(napi_env env, napi_callback_info info);
128     static napi_value RequestFocus(napi_env env, napi_callback_info info);
129     static napi_value StartMoving(napi_env env, napi_callback_info info);
130     static napi_value StopMoving(napi_env env, napi_callback_info info);
131     static napi_value GetWindowDensityInfo(napi_env env, napi_callback_info info);
132     static napi_value SetDefaultDensityEnabled(napi_env env, napi_callback_info info);
133     static napi_value IsMainWindowFullScreenAcrossDisplays(napi_env env, napi_callback_info info);
134     static napi_value EnableDrag(napi_env env, napi_callback_info info);
135     static napi_value SetExclusivelyHighlighted(napi_env env, napi_callback_info info);
136     static napi_value IsWindowHighlighted(napi_env env, napi_callback_info info);
137 
138     // colorspace, gamut
139     static napi_value IsSupportWideGamut(napi_env env, napi_callback_info info);
140     static napi_value IsWindowSupportWideGamut(napi_env env, napi_callback_info info);
141     static napi_value SetColorSpace(napi_env env, napi_callback_info info);
142     static napi_value SetWindowColorSpace(napi_env env, napi_callback_info info);
143     static napi_value GetColorSpace(napi_env env, napi_callback_info info);
144     static napi_value GetWindowColorSpaceSync(napi_env env, napi_callback_info info);
145     static napi_value Dump(napi_env env, napi_callback_info info);
146     static napi_value SetForbidSplitMove(napi_env env, napi_callback_info info);
147     static napi_value Snapshot(napi_env env, napi_callback_info info);
148     static napi_value SnapshotSync(napi_env env, napi_callback_info info);
149     static napi_value SnapshotIgnorePrivacy(napi_env env, napi_callback_info info);
150 
151     // animation config
152     static napi_value Opacity(napi_env env, napi_callback_info info);
153     static napi_value Scale(napi_env env, napi_callback_info info);
154     static napi_value Rotate(napi_env env, napi_callback_info info);
155     static napi_value Translate(napi_env env, napi_callback_info info);
156     static napi_value GetTransitionController(napi_env env, napi_callback_info info);
157 
158     /*
159      * Window Property
160      */
161     static napi_value SetCornerRadius(napi_env env, napi_callback_info info);
162     static napi_value SetWindowCornerRadius(napi_env env, napi_callback_info info);
163     static napi_value GetWindowCornerRadius(napi_env env, napi_callback_info info);
164     static napi_value SetShadow(napi_env env, napi_callback_info info);
165     static napi_value SetWindowShadowRadius(napi_env env, napi_callback_info info);
166     static napi_value SetBlur(napi_env env, napi_callback_info info);
167     static napi_value SetBackdropBlur(napi_env env, napi_callback_info info);
168     static napi_value SetBackdropBlurStyle(napi_env env, napi_callback_info info);
169     static napi_value SetWaterMarkFlag(napi_env env, napi_callback_info info);
170     static napi_value SetHandwritingFlag(napi_env env, napi_callback_info info);
171     static napi_value SetWindowGrayScale(napi_env env, napi_callback_info info);
172 
173     /*
174      * Sub Window
175      */
176     static napi_value CreateSubWindowWithOptions(napi_env env, napi_callback_info info);
177     static napi_value SetSubWindowModal(napi_env env, napi_callback_info info);
178     static napi_value SetParentWindow(napi_env env, napi_callback_info info);
179     static napi_value GetParentWindow(napi_env env, napi_callback_info info);
180 
181     /*
182      * Gesture Back
183      */
184     static napi_value SetGestureBackEnabled(napi_env env, napi_callback_info info);
185     static napi_value GetGestureBackEnabled(napi_env env, napi_callback_info info);
186 
187     /*
188      * PC Window
189      */
190     static napi_value GetWindowStatus(napi_env env, napi_callback_info info);
191     static napi_value SetWindowMask(napi_env env, napi_callback_info info);
192     static napi_value SetFollowParentMultiScreenPolicy(napi_env env, napi_callback_info info);
193 
194     /*
195      * Window Transition Animation For PC
196      */
197     static napi_value SetWindowTransitionAnimation(napi_env env, napi_callback_info info);
198     static napi_value GetWindowTransitionAnimation(napi_env env, napi_callback_info info);
199 
200     /*
201      * Window Decor
202      */
203     static napi_value DisableWindowDecor(napi_env env, napi_callback_info info);
204     static napi_value SetWindowDecorVisible(napi_env env, napi_callback_info info);
205     static napi_value GetWindowDecorVisible(napi_env env, napi_callback_info info);
206     static napi_value SetWindowTitleMoveEnabled(napi_env env, napi_callback_info info);
207     static napi_value SetWindowDecorHeight(napi_env env, napi_callback_info info);
208     static napi_value GetWindowDecorHeight(napi_env env, napi_callback_info info);
209     static napi_value GetTitleButtonRect(napi_env env, napi_callback_info info);
210     static napi_value SetTitleButtonVisible(napi_env env, napi_callback_info info);
211     static napi_value SetWindowTitleButtonVisible(napi_env env, napi_callback_info info);
212     static napi_value SetWindowContainerColor(napi_env env, napi_callback_info info);
213     static napi_value SetWindowContainerModalColor(napi_env env, napi_callback_info info);
214     static napi_value SetDecorButtonStyle(napi_env env, napi_callback_info info);
215     static napi_value GetDecorButtonStyle(napi_env env, napi_callback_info info);
216     static napi_value SetWindowTitle(napi_env env, napi_callback_info info);
217 
218     /*
219      * PC Window Layout
220      */
221     static napi_value Recover(napi_env env, napi_callback_info info);
222     static napi_value Maximize(napi_env env, napi_callback_info info);
223     static napi_value SetTitleAndDockHoverShown(napi_env env, napi_callback_info info);
224     static napi_value Restore(napi_env env, napi_callback_info info);
225     static napi_value SetDragKeyFramePolicy(napi_env env, napi_callback_info info);
226 
227     /*
228      * Window Immersive
229      */
230     static napi_value SetFullScreen(napi_env env, napi_callback_info info);
231     static napi_value SetLayoutFullScreen(napi_env env, napi_callback_info info);
232     static napi_value SetWindowLayoutFullScreen(napi_env env, napi_callback_info info);
233     static napi_value SetSystemBarEnable(napi_env env, napi_callback_info info);
234     static napi_value SetWindowSystemBarEnable(napi_env env, napi_callback_info info);
235     static napi_value SetSystemBarProperties(napi_env env, napi_callback_info info);
236     static napi_value GetWindowSystemBarPropertiesSync(napi_env env, napi_callback_info info);
237     static napi_value SetWindowSystemBarProperties(napi_env env, napi_callback_info info);
238     static napi_value SetStatusBarColor(napi_env env, napi_callback_info info);
239     static napi_value GetStatusBarProperty(napi_env env, napi_callback_info info);
240     static napi_value GetAvoidArea(napi_env env, napi_callback_info info);
241     static napi_value GetWindowAvoidAreaSync(napi_env env, napi_callback_info info);
242     static napi_value SetSpecificSystemBarEnabled(napi_env env, napi_callback_info info);
243     static napi_value SetSystemAvoidAreaEnabled(napi_env env, napi_callback_info info);
244     static napi_value IsSystemAvoidAreaEnabled(napi_env env, napi_callback_info info);
245     static napi_value SetImmersiveModeEnabledState(napi_env env, napi_callback_info info);
246     static napi_value GetImmersiveModeEnabledState(napi_env env, napi_callback_info info);
247     static napi_value IsImmersiveLayout(napi_env env, napi_callback_info info);
248     static napi_value SetRelativePositionToParentWindowEnabled(napi_env env, napi_callback_info info);
249     static napi_value SetFollowParentWindowLayoutEnabled(napi_env env, napi_callback_info info);
250     static napi_value SetWindowShadowEnabled(napi_env env, napi_callback_info info);
251 
252 private:
253     const std::string& GetWindowName() const;
254     static bool ParseScaleOption(napi_env env, napi_value jsObject, Transform& trans);
255     static bool ParseRotateOption(napi_env env, napi_value jsObject, Transform& trans);
256     static bool ParseTranslateOption(napi_env env, napi_value jsObject, Transform& trans);
257     static bool ParseWindowLimits(napi_env env, napi_value jsObject, WindowLimits& windowLimits);
258     void ParseShadowOptionalParameters(WmErrorCode& ret, std::shared_ptr<ShadowsInfo>& shadowsInfo,
259         napi_env env, const napi_value* argv, size_t argc);
260     bool CheckWindowMaskParams(napi_env env, napi_value jsObject);
261     napi_value LoadContentScheduleOld(napi_env env, napi_callback_info info, bool isLoadedByName);
262     napi_value LoadContentScheduleNew(napi_env env, napi_callback_info info, bool isLoadedByName);
263     napi_value HideWindowFunction(napi_env env, napi_callback_info info, WmErrorCode errCode);
264     napi_value OnShow(napi_env env, napi_callback_info info);
265     napi_value OnShowWindow(napi_env env, napi_callback_info info);
266     napi_value OnShowWithAnimation(napi_env env, napi_callback_info info);
267     napi_value OnDestroy(napi_env env, napi_callback_info info);
268     napi_value OnDestroyWindow(napi_env env, napi_callback_info info);
269     napi_value OnHide(napi_env env, napi_callback_info info);
270     napi_value OnHideWithAnimation(napi_env env, napi_callback_info info);
271 
272     /*
273      * Window Layout
274      */
275     napi_value OnMoveTo(napi_env env, napi_callback_info info);
276     napi_value OnMoveWindowTo(napi_env env, napi_callback_info info);
277     napi_value OnMoveWindowToAsync(napi_env env, napi_callback_info info);
278     napi_value OnMoveWindowToGlobal(napi_env env, napi_callback_info info);
279     napi_value OnMoveWindowToGlobalDisplay(napi_env env, napi_callback_info info);
280     napi_value OnGetGlobalScaledRect(napi_env env, napi_callback_info info);
281     napi_value OnResize(napi_env env, napi_callback_info info);
282     napi_value OnResizeWindow(napi_env env, napi_callback_info info);
283     napi_value OnResizeWindowAsync(napi_env env, napi_callback_info info);
284     napi_value OnResizeWindowWithAnimation(napi_env env, napi_callback_info info);
285     template <typename PositionTransformFunc>
286     napi_value HandlePositionTransform(
287         napi_env env, napi_callback_info info, PositionTransformFunc transformFunc, const char* caller);
288     napi_value OnClientToGlobalDisplay(napi_env env, napi_callback_info info);
289     napi_value OnGlobalDisplayToClient(napi_env env, napi_callback_info info);
290 
291     napi_value OnSetWindowType(napi_env env, napi_callback_info info);
292     napi_value OnSetWindowMode(napi_env env, napi_callback_info info);
293     napi_value OnGetProperties(napi_env env, napi_callback_info info);
294     napi_value OnGetWindowPropertiesSync(napi_env env, napi_callback_info info);
295     napi_value OnRegisterWindowCallback(napi_env env, napi_callback_info info);
296     napi_value OnUnregisterWindowCallback(napi_env env, napi_callback_info info);
297     napi_value OnBindDialogTarget(napi_env env, napi_callback_info info);
298     napi_value OnSetDialogBackGestureEnabled(napi_env env, napi_callback_info info);
299     napi_value OnLoadContent(napi_env env, napi_callback_info info, bool isLoadedByName);
300     napi_value OnGetUIContext(napi_env env, napi_callback_info info);
301     napi_value OnSetUIContent(napi_env env, napi_callback_info info);
302     napi_value OnIsShowing(napi_env env, napi_callback_info info);
303     napi_value OnIsWindowShowingSync(napi_env env, napi_callback_info info);
304     napi_value OnSetPreferredOrientation(napi_env env, napi_callback_info info);
305     napi_value OnGetPreferredOrientation(napi_env env, napi_callback_info info);
306     napi_value OnRaiseToAppTop(napi_env env, napi_callback_info info);
307     napi_value OnSetAspectRatio(napi_env env, napi_callback_info info);
308     napi_value OnResetAspectRatio(napi_env env, napi_callback_info info);
309     napi_value OnMinimize(napi_env env, napi_callback_info info);
310     WmErrorCode CheckRaiseMainWindowParams(napi_env env, size_t argc, napi_value argv[],
311                                            int32_t sourceId, int32_t& targetId);
312     napi_value OnRaiseAboveTarget(napi_env env, napi_callback_info info);
313     napi_value OnRaiseMainWindowAboveTarget(napi_env env, napi_callback_info info);
314     napi_value OnKeepKeyboardOnFocus(napi_env env, napi_callback_info info);
315     napi_value OnSetWindowLimits(napi_env env, napi_callback_info info);
316     napi_value OnGetWindowLimits(napi_env env, napi_callback_info info);
317 
318     napi_value OnIsFocused(napi_env env, napi_callback_info info);
319     napi_value OnRequestFocus(napi_env env, napi_callback_info info);
320     napi_value OnGetWindowDensityInfo(napi_env env, napi_callback_info info);
321     napi_value OnSetDefaultDensityEnabled(napi_env env, napi_callback_info info);
322     napi_value OnIsMainWindowFullScreenAcrossDisplays(napi_env env, napi_callback_info info);
323     napi_value OnSetExclusivelyHighlighted(napi_env env, napi_callback_info info);
324     napi_value OnIsWindowHighlighted(napi_env env, napi_callback_info info);
325 
326     // colorspace, gamut
327     napi_value OnIsSupportWideGamut(napi_env env, napi_callback_info info);
328     napi_value OnIsWindowSupportWideGamut(napi_env env, napi_callback_info info);
329     napi_value OnSetColorSpace(napi_env env, napi_callback_info info);
330     napi_value OnSetWindowColorSpace(napi_env env, napi_callback_info info);
331     napi_value OnGetColorSpace(napi_env env, napi_callback_info info);
332     napi_value OnGetWindowColorSpaceSync(napi_env env, napi_callback_info info);
333     napi_value OnSetBackgroundColor(napi_env env, napi_callback_info info);
334     napi_value OnSetWindowBackgroundColorSync(napi_env env, napi_callback_info info);
335     napi_value OnSetBrightness(napi_env env, napi_callback_info info);
336     napi_value OnSetWindowBrightness(napi_env env, napi_callback_info info);
337     napi_value OnSetDimBehind(napi_env env, napi_callback_info info);
338     napi_value OnSetFocusable(napi_env env, napi_callback_info info);
339     napi_value OnSetWindowFocusable(napi_env env, napi_callback_info info);
340     napi_value OnSetTopmost(napi_env env, napi_callback_info info);
341     napi_value OnSetWindowTopmost(napi_env env, napi_callback_info info);
342     napi_value OnSetSubWindowZLevel(napi_env env, napi_callback_info info);
343     napi_value OnGetSubWindowZLevel(napi_env env, napi_callback_info info);
344     napi_value OnSetWindowDelayRaiseOnDrag(napi_env env, napi_callback_info info);
345     napi_value OnSetKeepScreenOn(napi_env env, napi_callback_info info);
346     napi_value OnSetWindowKeepScreenOn(napi_env env, napi_callback_info info);
347     napi_value OnSetWakeUpScreen(napi_env env, napi_callback_info info);
348     napi_value OnSetOutsideTouchable(napi_env env, napi_callback_info info);
349     napi_value OnSetPrivacyMode(napi_env env, napi_callback_info info);
350     napi_value OnSetWindowPrivacyMode(napi_env env, napi_callback_info info);
351     napi_value OnSetTouchable(napi_env env, napi_callback_info info);
352     napi_value OnSetTouchableAreas(napi_env env, napi_callback_info info);
353     napi_value OnSetResizeByDragEnabled(napi_env env, napi_callback_info info);
354     napi_value OnSetRaiseByClickEnabled(napi_env env, napi_callback_info info);
355     napi_value OnHideNonSystemFloatingWindows(napi_env env, napi_callback_info info);
356     napi_value OnSetWindowTouchable(napi_env env, napi_callback_info info);
357     napi_value OnSetTransparent(napi_env env, napi_callback_info info);
358     napi_value OnSetCallingWindow(napi_env env, napi_callback_info info);
359     napi_value OnDump(napi_env env, napi_callback_info info);
360     napi_value OnSetForbidSplitMove(napi_env env, napi_callback_info info);
361     napi_value OnSnapshot(napi_env env, napi_callback_info info);
362     napi_value OnSnapshotSync(napi_env env, napi_callback_info info);
363     napi_value OnSnapshotIgnorePrivacy(napi_env env, napi_callback_info info);
364     napi_value OnSetSnapshotSkip(napi_env env, napi_callback_info info);
365     napi_value OnSetSingleFrameComposerEnabled(napi_env env, napi_callback_info info);
366     napi_value OnEnableLandscapeMultiWindow(napi_env env, napi_callback_info info);
367     napi_value OnDisableLandscapeMultiWindow(napi_env env, napi_callback_info info);
368 
369     // animation Config
370     napi_value OnOpacity(napi_env env, napi_callback_info info);
371     napi_value OnScale(napi_env env, napi_callback_info info);
372     napi_value OnRotate(napi_env env, napi_callback_info info);
373     napi_value OnTranslate(napi_env env, napi_callback_info info);
374     napi_value OnGetTransitionController(napi_env env, napi_callback_info info);
375     WmErrorCode CreateTransitionController(napi_env env);
376 
377     /*
378      * Window Property
379      */
380     napi_value OnSetCornerRadius(napi_env env, napi_callback_info info);
381     napi_value OnSetWindowCornerRadius(napi_env env, napi_callback_info info);
382     napi_value OnGetWindowCornerRadius(napi_env env, napi_callback_info info);
383     napi_value OnSetShadow(napi_env env, napi_callback_info info);
384     napi_value OnSetWindowShadowRadius(napi_env env, napi_callback_info info);
385     napi_value OnSetBlur(napi_env env, napi_callback_info info);
386     napi_value OnSetBackdropBlur(napi_env env, napi_callback_info info);
387     napi_value OnSetBackdropBlurStyle(napi_env env, napi_callback_info info);
388     napi_value OnSetWaterMarkFlag(napi_env env, napi_callback_info info);
389     napi_value OnSetHandwritingFlag(napi_env env, napi_callback_info info);
390     napi_value OnSetWindowGrayScale(napi_env env, napi_callback_info info);
391     napi_value OnEnableDrag(napi_env env, napi_callback_info info);
392     napi_value OnStartMoving(napi_env env, napi_callback_info info);
393     napi_value OnStopMoving(napi_env env, napi_callback_info info);
394 
395     /*
396      * Sub Window
397      */
398     napi_value OnCreateSubWindowWithOptions(napi_env env, napi_callback_info info);
399     napi_value OnSetSubWindowModal(napi_env env, napi_callback_info info);
400     napi_value OnSetParentWindow(napi_env env, napi_callback_info info);
401     napi_value OnGetParentWindow(napi_env env, napi_callback_info info);
402 
403     /*
404      * Gesture Back
405      */
406     napi_value OnSetGestureBackEnabled(napi_env env, napi_callback_info info);
407     napi_value OnGetGestureBackEnabled(napi_env env, napi_callback_info info);
408 
409     /*
410      * PC Window
411      */
412     napi_value OnSetWindowMask(napi_env env, napi_callback_info info);
413     napi_value OnGetWindowStatus(napi_env env, napi_callback_info info);
414     napi_value OnSetFollowParentMultiScreenPolicy(napi_env env, napi_callback_info info);
415 
416     /*
417      * Window Transition Animation For PC
418      */
419     napi_value OnSetWindowTransitionAnimation(napi_env env, napi_callback_info info);
420     napi_value OnGetWindowTransitionAnimation(napi_env env, napi_callback_info info);
421 
422     /*
423      * Window Decor
424      */
425     napi_value OnDisableWindowDecor(napi_env env, napi_callback_info info);
426     napi_value OnSetWindowDecorVisible(napi_env env, napi_callback_info info);
427     napi_value OnGetWindowDecorVisible(napi_env env, napi_callback_info info);
428     napi_value OnSetWindowTitleMoveEnabled(napi_env env, napi_callback_info info);
429     napi_value OnSetWindowDecorHeight(napi_env env, napi_callback_info info);
430     napi_value OnGetWindowDecorHeight(napi_env env, napi_callback_info info);
431     napi_value OnGetTitleButtonRect(napi_env env, napi_callback_info info);
432     napi_value OnSetTitleButtonVisible(napi_env env, napi_callback_info info);
433     napi_value OnSetWindowTitleButtonVisible(napi_env env, napi_callback_info info);
434     napi_value OnSetWindowContainerColor(napi_env env, napi_callback_info info);
435     napi_value OnSetWindowContainerModalColor(napi_env env, napi_callback_info info);
436     napi_value OnSetDecorButtonStyle(napi_env env, napi_callback_info info);
437     napi_value OnGetDecorButtonStyle(napi_env env, napi_callback_info info);
438     napi_value OnSetWindowTitle(napi_env env, napi_callback_info info);
439 
440     /*
441      * PC Window Layout
442      */
443     napi_value OnRecover(napi_env env, napi_callback_info info);
444     napi_value OnMaximize(napi_env env, napi_callback_info info);
445     napi_value OnSetTitleAndDockHoverShown(napi_env env, napi_callback_info info);
446     napi_value OnRestore(napi_env env, napi_callback_info info);
447     napi_value OnStartMoveWindowWithCoordinate(napi_env env, size_t argc, napi_value* argv);
448     napi_value OnSetDragKeyFramePolicy(napi_env env, napi_callback_info info);
449 
450     std::string windowName_;
451     sptr<Window> windowToken_ = nullptr;
452     std::unique_ptr<JsWindowRegisterManager> registerManager_ = nullptr;
453     std::shared_ptr<NativeReference> jsTransControllerObj_ = nullptr;
454 
455     /*
456      * Window Immersive
457      */
458     napi_value OnSetFullScreen(napi_env env, napi_callback_info info);
459     napi_value OnSetLayoutFullScreen(napi_env env, napi_callback_info info);
460     napi_value OnSetWindowLayoutFullScreen(napi_env env, napi_callback_info info);
461     napi_value OnSetSystemBarEnable(napi_env env, napi_callback_info info);
462     napi_value OnSetWindowSystemBarEnable(napi_env env, napi_callback_info info);
463     napi_value OnSetSystemBarProperties(napi_env env, napi_callback_info info);
464     napi_value OnGetWindowSystemBarPropertiesSync(napi_env env, napi_callback_info info);
465     napi_value OnSetWindowSystemBarProperties(napi_env env, napi_callback_info info);
466     napi_value OnSetStatusBarColor(napi_env env, napi_callback_info info);
467     napi_value OnGetStatusBarPropertySync(napi_env env, napi_callback_info info);
468     napi_value OnGetAvoidArea(napi_env env, napi_callback_info info);
469     napi_value OnGetWindowAvoidAreaSync(napi_env env, napi_callback_info info);
470     napi_value OnSetSpecificSystemBarEnabled(napi_env env, napi_callback_info info);
471     napi_value OnSetImmersiveModeEnabledState(napi_env env, napi_callback_info info);
472     napi_value OnGetImmersiveModeEnabledState(napi_env env, napi_callback_info info);
473     napi_value OnIsImmersiveLayout(napi_env env, napi_callback_info info);
474     napi_value OnSetSystemAvoidAreaEnabled(napi_env env, napi_callback_info info);
475     napi_value OnIsSystemAvoidAreaEnabled(napi_env env, napi_callback_info info);
476     napi_value OnSetFollowParentWindowLayoutEnabled(napi_env env, napi_callback_info info);
477     napi_value OnSetRelativePositionToParentWindowEnabled(napi_env env, napi_callback_info info);
478     napi_value OnSetWindowShadowEnabled(napi_env env, napi_callback_info info);
479 };
480 }  // namespace Rosen
481 }  // namespace OHOS
482 #endif