• 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 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* GetUIContext(NativeEngine* engine, NativeCallbackInfo* info);
62     static NativeValue* SetUIContent(NativeEngine* engine, NativeCallbackInfo* info);
63     static NativeValue* SetFullScreen(NativeEngine* engine, NativeCallbackInfo* info);
64     static NativeValue* SetLayoutFullScreen(NativeEngine* engine, NativeCallbackInfo* info);
65     static NativeValue* SetWindowLayoutFullScreen(NativeEngine* engine, NativeCallbackInfo* info);
66     static NativeValue* SetSystemBarEnable(NativeEngine* engine, NativeCallbackInfo* info);
67     static NativeValue* SetWindowSystemBarEnable(NativeEngine* engine, NativeCallbackInfo* info);
68     static NativeValue* SetSystemBarProperties(NativeEngine* engine, NativeCallbackInfo* info);
69     static NativeValue* SetWindowSystemBarProperties(NativeEngine* engine, NativeCallbackInfo* info);
70     static NativeValue* GetAvoidArea(NativeEngine* engine, NativeCallbackInfo* info);
71     static NativeValue* GetWindowAvoidAreaSync(NativeEngine* engine, NativeCallbackInfo* info);
72     static NativeValue* IsShowing(NativeEngine* engine, NativeCallbackInfo* info);
73     static NativeValue* IsWindowShowingSync(NativeEngine* engine, NativeCallbackInfo* info);
74     static NativeValue* SetBackgroundColor(NativeEngine* engine, NativeCallbackInfo* info);
75     static NativeValue* SetWindowBackgroundColorSync(NativeEngine* engine, NativeCallbackInfo* info);
76     static NativeValue* SetBrightness(NativeEngine* engine, NativeCallbackInfo* info);
77     static NativeValue* SetWindowBrightness(NativeEngine* engine, NativeCallbackInfo* info);
78     static NativeValue* SetDimBehind(NativeEngine* engine, NativeCallbackInfo* info);
79     static NativeValue* SetFocusable(NativeEngine* engine, NativeCallbackInfo* info);
80     static NativeValue* SetWindowFocusable(NativeEngine* engine, NativeCallbackInfo* info);
81     static NativeValue* SetKeepScreenOn(NativeEngine* engine, NativeCallbackInfo* info);
82     static NativeValue* SetWindowKeepScreenOn(NativeEngine* engine, NativeCallbackInfo* info);
83     static NativeValue* SetWakeUpScreen(NativeEngine* engine, NativeCallbackInfo* info);
84     static NativeValue* SetOutsideTouchable(NativeEngine* engine, NativeCallbackInfo* info);
85     static NativeValue* SetPrivacyMode(NativeEngine* engine, NativeCallbackInfo* info);
86     static NativeValue* SetWindowPrivacyMode(NativeEngine* engine, NativeCallbackInfo* info);
87     static NativeValue* SetTouchable(NativeEngine* engine, NativeCallbackInfo* info);
88     static NativeValue* SetResizeByDragEnabled(NativeEngine* engine, NativeCallbackInfo* info);
89     static NativeValue* SetRaiseByClickEnabled(NativeEngine* engine, NativeCallbackInfo* info);
90     static NativeValue* SetWindowTouchable(NativeEngine* engine, NativeCallbackInfo* info);
91     static NativeValue* SetTransparent(NativeEngine* engine, NativeCallbackInfo* info);
92     static NativeValue* SetCallingWindow(NativeEngine* engine, NativeCallbackInfo* info);
93     static NativeValue* SetPreferredOrientation(NativeEngine* engine, NativeCallbackInfo* info);
94     static NativeValue* DisableWindowDecor(NativeEngine* engine, NativeCallbackInfo* info);
95     static NativeValue* SetSnapshotSkip(NativeEngine* engine, NativeCallbackInfo* info);
96     static NativeValue* RaiseToAppTop(NativeEngine* engine, NativeCallbackInfo* info);
97     static NativeValue* SetAspectRatio(NativeEngine* engine, NativeCallbackInfo* info);
98     static NativeValue* ResetAspectRatio(NativeEngine* engine, NativeCallbackInfo* info);
99     static NativeValue* Minimize(NativeEngine* engine, NativeCallbackInfo* info);
100     static NativeValue* RaiseAboveTarget(NativeEngine* engine, NativeCallbackInfo* info);
101 
102     // colorspace, gamut
103     static NativeValue* IsSupportWideGamut(NativeEngine* engine, NativeCallbackInfo* info);
104     static NativeValue* IsWindowSupportWideGamut(NativeEngine* engine, NativeCallbackInfo* info);
105     static NativeValue* SetColorSpace(NativeEngine* engine, NativeCallbackInfo* info);
106     static NativeValue* SetWindowColorSpace(NativeEngine* engine, NativeCallbackInfo* info);
107     static NativeValue* GetColorSpace(NativeEngine* engine, NativeCallbackInfo* info);
108     static NativeValue* GetWindowColorSpaceSync(NativeEngine* engine, NativeCallbackInfo* info);
109     static NativeValue* Dump(NativeEngine* engine, NativeCallbackInfo* info);
110     static NativeValue* SetForbidSplitMove(NativeEngine* engine, NativeCallbackInfo* info);
111     static NativeValue* Snapshot(NativeEngine* engine, NativeCallbackInfo* info);
112 
113     // animation config
114     static NativeValue* Opacity(NativeEngine* engine, NativeCallbackInfo* info);
115     static NativeValue* Scale(NativeEngine* engine, NativeCallbackInfo* info);
116     static NativeValue* Rotate(NativeEngine* engine, NativeCallbackInfo* info);
117     static NativeValue* Translate(NativeEngine* engine, NativeCallbackInfo* info);
118     static NativeValue* GetTransitionController(NativeEngine* engine, NativeCallbackInfo* info);
119 
120     // window effect
121     static NativeValue* SetCornerRadius(NativeEngine* engine, NativeCallbackInfo* info);
122     static NativeValue* SetShadow(NativeEngine* engine, NativeCallbackInfo* info);
123     static NativeValue* SetBlur(NativeEngine* engine, NativeCallbackInfo* info);
124     static NativeValue* SetBackdropBlur(NativeEngine* engine, NativeCallbackInfo* info);
125     static NativeValue* SetBackdropBlurStyle(NativeEngine* engine, NativeCallbackInfo* info);
126     static NativeValue* SetWaterMarkFlag(NativeEngine* engine, NativeCallbackInfo* info);
127 private:
128     std::string GetWindowName();
129     static bool ParseScaleOption(NativeEngine& engine, NativeObject* jsObject, Transform& trans);
130     static bool ParseRotateOption(NativeEngine& engine, NativeObject* jsObject, Transform& trans);
131     static bool ParseTranslateOption(NativeEngine& engine, NativeObject* jsObject, Transform& trans);
132     NativeValue* LoadContentScheduleOld(NativeEngine& engine, NativeCallbackInfo& info);
133     NativeValue* LoadContentScheduleNew(NativeEngine& engine, NativeCallbackInfo& info);
134     NativeValue* OnShow(NativeEngine& engine, NativeCallbackInfo& info);
135     NativeValue* OnShowWindow(NativeEngine& engine, NativeCallbackInfo& info);
136     NativeValue* OnShowWithAnimation(NativeEngine& engine, NativeCallbackInfo& info);
137     NativeValue* OnDestroy(NativeEngine& engine, NativeCallbackInfo& info);
138     NativeValue* OnDestroyWindow(NativeEngine& engine, NativeCallbackInfo& info);
139     NativeValue* OnHide(NativeEngine& engine, NativeCallbackInfo& info);
140     NativeValue* OnHideWithAnimation(NativeEngine& engine, NativeCallbackInfo& info);
141     NativeValue* OnMoveTo(NativeEngine& engine, NativeCallbackInfo& info);
142     NativeValue* OnMoveWindowTo(NativeEngine& engine, NativeCallbackInfo& info);
143     NativeValue* OnResize(NativeEngine& engine, NativeCallbackInfo& info);
144     NativeValue* OnResizeWindow(NativeEngine& engine, NativeCallbackInfo& info);
145     NativeValue* OnSetWindowType(NativeEngine& engine, NativeCallbackInfo& info);
146     NativeValue* OnSetWindowMode(NativeEngine& engine, NativeCallbackInfo& info);
147     NativeValue* OnGetProperties(NativeEngine& engine, NativeCallbackInfo& info);
148     NativeValue* OnGetWindowPropertiesSync(NativeEngine& engine, NativeCallbackInfo& info);
149     NativeValue* OnRegisterWindowCallback(NativeEngine& engine, NativeCallbackInfo& info);
150     NativeValue* OnUnregisterWindowCallback(NativeEngine& engine, NativeCallbackInfo& info);
151     NativeValue* OnBindDialogTarget(NativeEngine& engine, NativeCallbackInfo& info);
152     NativeValue* OnSetFullScreen(NativeEngine& engine, NativeCallbackInfo& info);
153     NativeValue* OnSetLayoutFullScreen(NativeEngine& engine, NativeCallbackInfo& info);
154     NativeValue* OnSetWindowLayoutFullScreen(NativeEngine& engine, NativeCallbackInfo& info);
155     NativeValue* OnSetSystemBarEnable(NativeEngine& engine, NativeCallbackInfo& info);
156     NativeValue* OnSetWindowSystemBarEnable(NativeEngine& engine, NativeCallbackInfo& info);
157     NativeValue* OnSetSystemBarProperties(NativeEngine& engine, NativeCallbackInfo& info);
158     NativeValue* OnSetWindowSystemBarProperties(NativeEngine& engine, NativeCallbackInfo& info);
159     NativeValue* OnLoadContent(NativeEngine& engine, NativeCallbackInfo& info);
160     NativeValue* OnGetUIContext(NativeEngine& engine, NativeCallbackInfo& info);
161     NativeValue* OnSetUIContent(NativeEngine& engine, NativeCallbackInfo& info);
162     NativeValue* OnGetAvoidArea(NativeEngine& engine, NativeCallbackInfo& info);
163     NativeValue* OnGetWindowAvoidAreaSync(NativeEngine& engine, NativeCallbackInfo& info);
164     NativeValue* OnIsShowing(NativeEngine& engine, NativeCallbackInfo& info);
165     NativeValue* OnIsWindowShowingSync(NativeEngine& engine, NativeCallbackInfo& info);
166     NativeValue* OnSetPreferredOrientation(NativeEngine& engine, NativeCallbackInfo& info);
167     NativeValue* OnRaiseToAppTop(NativeEngine& engine, NativeCallbackInfo& info);
168     NativeValue* OnSetAspectRatio(NativeEngine& engine, NativeCallbackInfo& info);
169     NativeValue* OnResetAspectRatio(NativeEngine& engine, NativeCallbackInfo& info);
170     NativeValue* OnMinimize(NativeEngine& engine, NativeCallbackInfo& info);
171     NativeValue* OnRaiseAboveTarget(NativeEngine& engine, NativeCallbackInfo& info);
172 
173     // colorspace, gamut
174     NativeValue* OnIsSupportWideGamut(NativeEngine& engine, NativeCallbackInfo& info);
175     NativeValue* OnIsWindowSupportWideGamut(NativeEngine& engine, NativeCallbackInfo& info);
176     NativeValue* OnSetColorSpace(NativeEngine& engine, NativeCallbackInfo& info);
177     NativeValue* OnSetWindowColorSpace(NativeEngine& engine, NativeCallbackInfo& info);
178     NativeValue* OnGetColorSpace(NativeEngine& engine, NativeCallbackInfo& info);
179     NativeValue* OnGetWindowColorSpaceSync(NativeEngine& engine, NativeCallbackInfo& info);
180     NativeValue* OnSetBackgroundColor(NativeEngine& engine, NativeCallbackInfo& info);
181     NativeValue* OnSetWindowBackgroundColorSync(NativeEngine& engine, NativeCallbackInfo& info);
182     NativeValue* OnSetBrightness(NativeEngine& engine, NativeCallbackInfo& info);
183     NativeValue* OnSetWindowBrightness(NativeEngine& engine, NativeCallbackInfo& info);
184     NativeValue* OnSetDimBehind(NativeEngine& engine, NativeCallbackInfo& info);
185     NativeValue* OnSetFocusable(NativeEngine& engine, NativeCallbackInfo& info);
186     NativeValue* OnSetWindowFocusable(NativeEngine& engine, NativeCallbackInfo& info);
187     NativeValue* OnSetKeepScreenOn(NativeEngine& engine, NativeCallbackInfo& info);
188     NativeValue* OnSetWindowKeepScreenOn(NativeEngine& engine, NativeCallbackInfo& info);
189     NativeValue* OnSetWakeUpScreen(NativeEngine& engine, NativeCallbackInfo& info);
190     NativeValue* OnSetOutsideTouchable(NativeEngine& engine, NativeCallbackInfo& info);
191     NativeValue* OnSetPrivacyMode(NativeEngine& engine, NativeCallbackInfo& info);
192     NativeValue* OnSetWindowPrivacyMode(NativeEngine& engine, NativeCallbackInfo& info);
193     NativeValue* OnSetTouchable(NativeEngine& engine, NativeCallbackInfo& info);
194     NativeValue* OnSetResizeByDragEnabled(NativeEngine& engine, NativeCallbackInfo& info);
195     NativeValue* OnSetRaiseByClickEnabled(NativeEngine& engine, NativeCallbackInfo& info);
196     NativeValue* OnSetWindowTouchable(NativeEngine& engine, NativeCallbackInfo& info);
197     NativeValue* OnSetTransparent(NativeEngine& engine, NativeCallbackInfo& info);
198     NativeValue* OnSetCallingWindow(NativeEngine& engine, NativeCallbackInfo& info);
199     NativeValue* OnDisableWindowDecor(NativeEngine& engine, NativeCallbackInfo& info);
200     NativeValue* OnDump(NativeEngine& engine, NativeCallbackInfo& info);
201     NativeValue* OnSetForbidSplitMove(NativeEngine& engine, NativeCallbackInfo& info);
202     NativeValue* OnSnapshot(NativeEngine& engine, NativeCallbackInfo& info);
203     NativeValue* OnSetSnapshotSkip(NativeEngine& engine, NativeCallbackInfo& info);
204 
205     // animation Config
206     NativeValue* OnOpacity(NativeEngine& engine, NativeCallbackInfo& info);
207     NativeValue* OnScale(NativeEngine& engine, NativeCallbackInfo& info);
208     NativeValue* OnRotate(NativeEngine& engine, NativeCallbackInfo& info);
209     NativeValue* OnTranslate(NativeEngine& engine, NativeCallbackInfo& info);
210     NativeValue* OnGetTransitionController(NativeEngine& engine, NativeCallbackInfo& info);
211     WmErrorCode CreateTransitionController(NativeEngine& engine);
212 
213     // window effect
214     NativeValue* OnSetCornerRadius(NativeEngine& engine, NativeCallbackInfo& info);
215     NativeValue* OnSetShadow(NativeEngine& engine, NativeCallbackInfo& info);
216     NativeValue* OnSetBlur(NativeEngine& engine, NativeCallbackInfo& info);
217     NativeValue* OnSetBackdropBlur(NativeEngine& engine, NativeCallbackInfo& info);
218     NativeValue* OnSetBackdropBlurStyle(NativeEngine& engine, NativeCallbackInfo& info);
219     NativeValue* OnSetWaterMarkFlag(NativeEngine& engine, NativeCallbackInfo& info);
220 
221     sptr<Window> windowToken_ = nullptr;
222     std::unique_ptr<JsWindowRegisterManager> registerManager_ = nullptr;
223     std::shared_ptr<NativeReference> jsTransControllerObj_ = nullptr;
224 };
225 }  // namespace Rosen
226 }  // namespace OHOS
227 #endif