• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 #include "window_ffi.h"
17 #include <transaction/rs_interfaces.h>
18 #include "pixel_map_impl.h"
19 #include "window_manager_hilog.h"
20 
21 using namespace OHOS::FFI;
22 using namespace OHOS::Media;
23 
24 namespace OHOS {
25 namespace Rosen {
26 extern "C" {
27 const int32_t WM_ERROR_STATE_ABNORMALLY = 1300002;
28 
FfiOHOSCreateWindow(char * name,uint32_t windowType,OHOS::AbilityRuntime::Context * context,int64_t displayId,int64_t parentId)29 RetDataI64 FfiOHOSCreateWindow(char* name, uint32_t windowType, OHOS::AbilityRuntime::Context* context,
30     int64_t displayId, int64_t parentId)
31 {
32     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] CreateWindow start");
33     std::string nm = name;
34     RetDataI64 ret;
35     WindowParameters window;
36     window.name = nm;
37     window.winType = windowType;
38     window.context = context;
39     window.displayId = displayId;
40     window.parentId = parentId;
41     window.windowId = &ret.data;
42     ret.code = OHOS::Rosen::WindowManagerImpl::CreateWindow(window);
43     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] CreateWindow success");
44     return ret;
45 }
46 
FfiOHOSWindowSetWindowLayoutMode(uint32_t mode)47 int32_t FfiOHOSWindowSetWindowLayoutMode(uint32_t mode)
48 {
49     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutMode start");
50     int32_t ret = OHOS::Rosen::WindowManagerImpl::SetWindowLayoutMode(mode);
51     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutMode success");
52     return ret;
53 }
54 
FfiOHOSWindowMinimizeAll(int64_t displayId)55 int32_t FfiOHOSWindowMinimizeAll(int64_t displayId)
56 {
57     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MinimizeAll start");
58     int32_t ret = OHOS::Rosen::WindowManagerImpl::MinimizeAll(displayId);
59     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MinimizeAll success");
60     return ret;
61 }
62 
FfiOHOSGetLastWindow(OHOS::AbilityRuntime::Context * ctx)63 RetDataI64 FfiOHOSGetLastWindow(OHOS::AbilityRuntime::Context* ctx)
64 {
65     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetLastWindow start");
66     RetDataI64 ret;
67     ret.code = OHOS::Rosen::WindowManagerImpl::GetLastWindow(ctx, ret.data);
68     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetLastWindow success");
69     return ret;
70 }
71 
FfiOHOSShiftAppWindowFocus(int32_t sourceWindowId,int32_t targetWindowId)72 int32_t FfiOHOSShiftAppWindowFocus(int32_t sourceWindowId, int32_t targetWindowId)
73 {
74     TLOGI(WmsLogTag::WMS_FOCUS, "ShiftAppWindowFocus start");
75     int32_t ret = OHOS::Rosen::WindowManagerImpl::ShiftAppWindowFocus(sourceWindowId, targetWindowId);
76     TLOGI(WmsLogTag::WMS_FOCUS, "ShiftAppWindowFocus success");
77     return ret;
78 }
79 
80 // window
FfiOHOSWindowHide(int64_t id)81 int32_t FfiOHOSWindowHide(int64_t id)
82 {
83     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Hide start");
84     auto instance = FFIData::GetData<CJWindowImpl>(id);
85     if (instance == nullptr) {
86         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
87         return WM_ERROR_STATE_ABNORMALLY;
88     }
89     int32_t res = instance->Hide();
90     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Hide success");
91     return res;
92 }
93 
FfiOHOSWindowHideWithAnimation(int64_t id)94 int32_t FfiOHOSWindowHideWithAnimation(int64_t id)
95 {
96     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] HideWithAnimation start");
97     auto instance = FFIData::GetData<CJWindowImpl>(id);
98     if (instance == nullptr) {
99         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
100         return WM_ERROR_STATE_ABNORMALLY;
101     }
102     int32_t res = instance->HideWithAnimation();
103     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] HideWithAnimation success");
104     return res;
105 }
106 
FfiOHOSWindowShowWindow(int64_t id)107 int32_t FfiOHOSWindowShowWindow(int64_t id)
108 {
109     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWindow start");
110     auto instance = FFIData::GetData<CJWindowImpl>(id);
111     if (instance == nullptr) {
112         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
113         return WM_ERROR_STATE_ABNORMALLY;
114     }
115     int32_t res = instance->ShowWindow();
116     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWindow success");
117     return res;
118 }
119 
FfiOHOSWindowShowWithAnimation(int64_t id)120 int32_t FfiOHOSWindowShowWithAnimation(int64_t id)
121 {
122     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWithAnimation start");
123     auto instance = FFIData::GetData<CJWindowImpl>(id);
124     if (instance == nullptr) {
125         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
126         return WM_ERROR_STATE_ABNORMALLY;
127     }
128     int32_t res = instance->ShowWithAnimation();
129     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] ShowWithAnimation success");
130     return res;
131 }
132 
FfiOHOSWindowDestroyWindow(int64_t id)133 int32_t FfiOHOSWindowDestroyWindow(int64_t id)
134 {
135     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] DestroyWindow start");
136     auto instance = FFIData::GetData<CJWindowImpl>(id);
137     if (instance == nullptr) {
138         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
139         return WM_ERROR_STATE_ABNORMALLY;
140     }
141     int32_t res = instance->DestroyWindow();
142     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] DestroyWindow success");
143     return res;
144 }
145 
FfiOHOSWindowMoveWindowTo(int64_t id,int32_t x,int32_t y)146 int32_t FfiOHOSWindowMoveWindowTo(int64_t id, int32_t x, int32_t y)
147 {
148     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MoveWindowTo start");
149     auto instance = FFIData::GetData<CJWindowImpl>(id);
150     if (instance == nullptr) {
151         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
152         return WM_ERROR_STATE_ABNORMALLY;
153     }
154     int32_t res = instance->MoveWindowTo(x, y);
155     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] MoveWindowTo success");
156     return res;
157 }
158 
FfiOHOSWindowResize(int64_t id,uint32_t width,uint32_t height)159 int32_t FfiOHOSWindowResize(int64_t id, uint32_t width, uint32_t height)
160 {
161     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Resize start");
162     auto instance = FFIData::GetData<CJWindowImpl>(id);
163     if (instance == nullptr) {
164         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
165         return WM_ERROR_STATE_ABNORMALLY;
166     }
167     int32_t res = instance->Resize(width, height);
168     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Resize success");
169     return res;
170 }
171 
FfiOHOSWindowSetWindowMode(int64_t id,uint32_t mode)172 int32_t FfiOHOSWindowSetWindowMode(int64_t id, uint32_t mode)
173 {
174     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowMode start");
175     auto instance = FFIData::GetData<CJWindowImpl>(id);
176     if (instance == nullptr) {
177         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
178         return WM_ERROR_STATE_ABNORMALLY;
179     }
180     int32_t res = instance->SetWindowMode(mode);
181     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowMode success");
182     return res;
183 }
184 
FfiOHOSWindowGetWindowProperties(int64_t id,int32_t * errCode)185 CWindowProperties FfiOHOSWindowGetWindowProperties(int64_t id, int32_t* errCode)
186 {
187     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowProperties start");
188     CWindowProperties res;
189     auto instance = FFIData::GetData<CJWindowImpl>(id);
190     if (instance == nullptr) {
191         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
192         *errCode = WM_ERROR_STATE_ABNORMALLY;
193         return res;
194     }
195     res = instance->GetWindowProperties(errCode);
196     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowProperties success");
197     return res;
198 }
199 
FfiOHOSWindowSetWindowLayoutFullScreen(int64_t id,bool isLayoutFullScreen)200 int32_t FfiOHOSWindowSetWindowLayoutFullScreen(int64_t id, bool isLayoutFullScreen)
201 {
202     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutFullScreen start");
203     auto instance = FFIData::GetData<CJWindowImpl>(id);
204     if (instance == nullptr) {
205         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
206         return WM_ERROR_STATE_ABNORMALLY;
207     }
208     int32_t res = instance->SetWindowLayoutFullScreen(isLayoutFullScreen);
209     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowLayoutFullScreen success");
210     return res;
211 }
212 
FfiOHOSSetWindowBackgroundColor(int64_t id,const char * color)213 int32_t FfiOHOSSetWindowBackgroundColor(int64_t id, const char* color)
214 {
215     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBackgroundColor start");
216     auto instance = FFIData::GetData<CJWindowImpl>(id);
217     if (instance == nullptr) {
218         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
219         return WM_ERROR_STATE_ABNORMALLY;
220     }
221     int32_t ret = instance->SetWindowBackgroundColor(color);
222     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBackgroundColor success");
223     return ret;
224 }
225 
FfiOHOSWindowSetWindowBrightness(int64_t id,float brightness)226 int32_t FfiOHOSWindowSetWindowBrightness(int64_t id, float brightness)
227 {
228     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBrightness start");
229     auto instance = FFIData::GetData<CJWindowImpl>(id);
230     if (instance == nullptr) {
231         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
232         return WM_ERROR_STATE_ABNORMALLY;
233     }
234     int32_t res = instance->SetWindowBrightness(brightness);
235     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowBrightness success");
236     return res;
237 }
238 
FfiOHOSWindowSetWindowFocusable(int64_t id,bool focusable)239 int32_t FfiOHOSWindowSetWindowFocusable(int64_t id, bool focusable)
240 {
241     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowFocusable start");
242     auto instance = FFIData::GetData<CJWindowImpl>(id);
243     if (instance == nullptr) {
244         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
245         return WM_ERROR_STATE_ABNORMALLY;
246     }
247     int32_t res = instance->SetWindowFocusable(focusable);
248     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowFocusable success");
249     return res;
250 }
251 
FfiOHOSWindowSetWindowKeepScreenOn(int64_t id,bool keepScreenOn)252 int32_t FfiOHOSWindowSetWindowKeepScreenOn(int64_t id, bool keepScreenOn)
253 {
254     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowKeepScreenOn start");
255     auto instance = FFIData::GetData<CJWindowImpl>(id);
256     if (instance == nullptr) {
257         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
258         return WM_ERROR_STATE_ABNORMALLY;
259     }
260     int32_t res = instance->SetWindowKeepScreenOn(keepScreenOn);
261     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowKeepScreenOn success");
262     return res;
263 }
264 
FfiOHOSWindowSetWindowPrivacyMode(int64_t id,bool isPrivacyMode)265 int32_t FfiOHOSWindowSetWindowPrivacyMode(int64_t id, bool isPrivacyMode)
266 {
267     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowPrivacyMode start");
268     auto instance = FFIData::GetData<CJWindowImpl>(id);
269     if (instance == nullptr) {
270         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
271         return WM_ERROR_STATE_ABNORMALLY;
272     }
273     int32_t res = instance->SetWindowPrivacyMode(isPrivacyMode);
274     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowPrivacyMode success");
275     return res;
276 }
277 
FfiOHOSWindowSetWindowTouchable(int64_t id,bool touchable)278 int32_t FfiOHOSWindowSetWindowTouchable(int64_t id, bool touchable)
279 {
280     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowTouchable start");
281     auto instance = FFIData::GetData<CJWindowImpl>(id);
282     if (instance == nullptr) {
283         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
284         return WM_ERROR_STATE_ABNORMALLY;
285     }
286     int32_t res = instance->SetWindowTouchable(touchable);
287     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowTouchable success");
288     return res;
289 }
290 
FfiOHOSWindowSetForbidSplitMove(int64_t id,bool isForbidSplitMove)291 int32_t FfiOHOSWindowSetForbidSplitMove(int64_t id, bool isForbidSplitMove)
292 {
293     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetForbidSplitMove start");
294     auto instance = FFIData::GetData<CJWindowImpl>(id);
295     if (instance == nullptr) {
296         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
297         return WM_ERROR_STATE_ABNORMALLY;
298     }
299     int32_t res = instance->SetForbidSplitMove(isForbidSplitMove);
300     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetForbidSplitMove success");
301     return res;
302 }
303 
FfiOHOSWindowIsWindowSupportWideGamut(int64_t id,int32_t * errCode)304 bool FfiOHOSWindowIsWindowSupportWideGamut(int64_t id, int32_t* errCode)
305 {
306     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowSupportWideGamut start");
307     bool res = false;
308     auto instance = FFIData::GetData<CJWindowImpl>(id);
309     if (instance == nullptr) {
310         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
311         *errCode = WM_ERROR_STATE_ABNORMALLY;
312         return res;
313     }
314     res = instance->IsWindowSupportWideGamut(errCode);
315     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowSupportWideGamut success");
316     return res;
317 }
318 
FfiOHOSWindowIsWindowShowing(int64_t id,int32_t * errCode)319 bool FfiOHOSWindowIsWindowShowing(int64_t id, int32_t* errCode)
320 {
321     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowShowing start");
322     bool res = false;
323     auto instance = FFIData::GetData<CJWindowImpl>(id);
324     if (instance == nullptr) {
325         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] instance not exist %{public}" PRId64, id);
326         *errCode = WM_ERROR_STATE_ABNORMALLY;
327         return res;
328     }
329     res = instance->IsWindowShowing(errCode);
330     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] IsWindowShowing success");
331     return res;
332 }
333 
FFiOHOSWindowFindWindow(char * name)334 RetDataI64 FFiOHOSWindowFindWindow(char* name)
335 {
336     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowFindWindow start");
337     RetDataI64 ret;
338     ret.code = WindowManagerImpl::FindWindow(name, ret.data);
339     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowFindWindow success");
340     return ret;
341 }
342 
FFiOHOSWindowToggleShownStateForAllAppWindows()343 int32_t FFiOHOSWindowToggleShownStateForAllAppWindows()
344 {
345     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows start");
346     WmErrorCode ret = WM_JS_TO_ERROR_CODE_MAP.at(
347         SingletonContainer::Get<WindowManager>().ToggleShownStateForAllAppWindows());
348     if (ret != WmErrorCode::WM_OK) {
349         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows error %{public}d", ret);
350         return static_cast<int32_t>(ret);
351     }
352     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowToggleShownStateForAllAppWindows success");
353     return SUCCESS_CODE;
354 }
355 
FFiOHOSWindowSetGestureNavigationEnabled(bool enable)356 int32_t FFiOHOSWindowSetGestureNavigationEnabled(bool enable)
357 {
358     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled start");
359     WmErrorCode ret = WM_JS_TO_ERROR_CODE_MAP.at(
360         SingletonContainer::Get<WindowManager>().SetGestureNavigationEnabled(enable));
361     if (ret != WmErrorCode::WM_OK) {
362         TLOGE(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled error %{public}d", ret);
363         return static_cast<int32_t>(ret);
364     }
365     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetGestureNavigationEnabled success");
366     return SUCCESS_CODE;
367 }
368 
FFiOHOSWindowSetWaterMarkImage(int64_t pixelMapId,bool enable)369 int32_t FFiOHOSWindowSetWaterMarkImage(int64_t pixelMapId, bool enable)
370 {
371     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkImage start");
372     auto pixelMapImpl = FFIData::GetData<PixelMapImpl>(pixelMapId);
373     if (pixelMapImpl == nullptr) {
374         return WM_ERROR_STATE_ABNORMALLY;
375     }
376     auto pixelMap = pixelMapImpl->GetRealPixelMap();
377     RSInterfaces::GetInstance().ShowWatermark(pixelMap, enable);
378     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkImage success");
379     return SUCCESS_CODE;
380 }
381 
FFiOHOSWindowSetBackdropBlurStyle(int64_t id,uint32_t blurStyle)382 int32_t FFiOHOSWindowSetBackdropBlurStyle(int64_t id, uint32_t blurStyle)
383 {
384     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlurStyle start");
385     auto instance = FFIData::GetData<CJWindowImpl>(id);
386     if (instance == nullptr) {
387         return WM_ERROR_STATE_ABNORMALLY;
388     }
389     int32_t res = instance->SetBackdropBlurStyle(blurStyle);
390     if (res == SUCCESS_CODE) {
391         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlurStyle success");
392     }
393     return res;
394 }
395 
FFiOHOSWindowSetPreferredOrientation(int64_t id,uint32_t orientation)396 int32_t FFiOHOSWindowSetPreferredOrientation(int64_t id, uint32_t orientation)
397 {
398     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetPreferredOrientation start");
399     auto instance = FFIData::GetData<CJWindowImpl>(id);
400     if (instance == nullptr) {
401         return WM_ERROR_STATE_ABNORMALLY;
402     }
403     int32_t res = instance->SetPreferredOrientation(orientation);
404     if (res == SUCCESS_CODE) {
405         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetPreferredOrientation success");
406     }
407     return res;
408 }
409 
FFiOHOSWindowGetWindowAvoidArea(int64_t id,uint32_t areaType,OHOS::Rosen::CAvoidArea * retPtr)410 int32_t FFiOHOSWindowGetWindowAvoidArea(int64_t id, uint32_t areaType, OHOS::Rosen::CAvoidArea* retPtr)
411 {
412     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowGetWindowAvoidArea start");
413     auto instance = FFIData::GetData<CJWindowImpl>(id);
414     if (instance == nullptr) {
415         return WM_ERROR_STATE_ABNORMALLY;
416     }
417     int32_t res = instance->GetWindowAvoidArea(areaType, retPtr);
418     if (res == SUCCESS_CODE) {
419         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowGetWindowAvoidArea success");
420     }
421     return res;
422 }
423 
FFiOHOSWindowSetWaterMarkFlag(int64_t id,bool enable)424 int32_t FFiOHOSWindowSetWaterMarkFlag(int64_t id, bool enable)
425 {
426     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkFlag start");
427     auto instance = FFIData::GetData<CJWindowImpl>(id);
428     if (instance == nullptr) {
429         return WM_ERROR_STATE_ABNORMALLY;
430     }
431     int32_t res = instance->SetWaterMarkFlag(enable);
432     if (res == SUCCESS_CODE) {
433         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetWaterMarkFlag success");
434     }
435     return res;
436 }
437 
FFiOHOSWindowSetAspectRatio(int64_t id,double ratio)438 int32_t FFiOHOSWindowSetAspectRatio(int64_t id, double ratio)
439 {
440     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetAspectRatio start");
441     auto instance = FFIData::GetData<CJWindowImpl>(id);
442     if (instance == nullptr) {
443         return WM_ERROR_STATE_ABNORMALLY;
444     }
445     int32_t res = instance->SetAspectRatio(ratio);
446     if (res == SUCCESS_CODE) {
447         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetAspectRatio success");
448     }
449     return res;
450 }
451 
FFiOHOSWindowSetShadowRadius(int64_t id,double radius)452 int32_t FFiOHOSWindowSetShadowRadius(int64_t id, double radius)
453 {
454     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowRadius start");
455     auto instance = FFIData::GetData<CJWindowImpl>(id);
456     if (instance == nullptr) {
457         return WM_ERROR_STATE_ABNORMALLY;
458     }
459     int32_t res = instance->SetShadowRadius(radius);
460     if (res == SUCCESS_CODE) {
461         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowRadius success");
462     }
463     return res;
464 }
465 
FFiOHOSWindowSetShadowColor(int64_t id,char * color)466 int32_t FFiOHOSWindowSetShadowColor(int64_t id, char* color)
467 {
468     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowColor start");
469     std::string windowColor = color;
470     auto instance = FFIData::GetData<CJWindowImpl>(id);
471     if (instance == nullptr) {
472         return WM_ERROR_STATE_ABNORMALLY;
473     }
474     int32_t res = instance->SetShadowColor(windowColor);
475     if (res == SUCCESS_CODE) {
476         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowColor success");
477     }
478     return res;
479 }
480 
FFiOHOSWindowSetShadowOffsetX(int64_t id,double offsetX)481 int32_t FFiOHOSWindowSetShadowOffsetX(int64_t id, double offsetX)
482 {
483     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetX start");
484     auto instance = FFIData::GetData<CJWindowImpl>(id);
485     if (instance == nullptr) {
486         return WM_ERROR_STATE_ABNORMALLY;
487     }
488     int32_t res = instance->SetShadowOffsetX(offsetX);
489     if (res == SUCCESS_CODE) {
490         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetX success");
491     }
492     return res;
493 }
494 
FFiOHOSWindowSetShadowOffsetY(int64_t id,double offsetY)495 int32_t FFiOHOSWindowSetShadowOffsetY(int64_t id, double offsetY)
496 {
497     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetY start");
498     auto instance = FFIData::GetData<CJWindowImpl>(id);
499     if (instance == nullptr) {
500         return WM_ERROR_STATE_ABNORMALLY;
501     }
502     int32_t res = instance->SetShadowOffsetY(offsetY);
503     if (res == SUCCESS_CODE) {
504         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetShadowOffsetY success");
505     }
506     return res;
507 }
508 
FFiOHOSWindowSetBackdropBlur(int64_t id,double radius)509 int32_t FFiOHOSWindowSetBackdropBlur(int64_t id, double radius)
510 {
511     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlur start");
512     auto instance = FFIData::GetData<CJWindowImpl>(id);
513     if (instance == nullptr) {
514         return WM_ERROR_STATE_ABNORMALLY;
515     }
516     int32_t res = instance->SetBackdropBlur(radius);
517     if (res == SUCCESS_CODE) {
518         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBackdropBlur success");
519     }
520     return res;
521 }
522 
FFiOHOSWindowSetBlur(int64_t id,double radius)523 int32_t FFiOHOSWindowSetBlur(int64_t id, double radius)
524 {
525     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBlur start");
526     auto instance = FFIData::GetData<CJWindowImpl>(id);
527     if (instance == nullptr) {
528         return WM_ERROR_STATE_ABNORMALLY;
529     }
530     int32_t res = instance->SetBlur(radius);
531     if (res == SUCCESS_CODE) {
532         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowSetBlur success");
533     }
534     return res;
535 }
536 
FFiOHOSWindowResetAspectRatio(int64_t id)537 int32_t FFiOHOSWindowResetAspectRatio(int64_t id)
538 {
539     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowResetAspectRatio start");
540     auto instance = FFIData::GetData<CJWindowImpl>(id);
541     if (instance == nullptr) {
542         return WM_ERROR_STATE_ABNORMALLY;
543     }
544     int32_t res = instance->ResetAspectRatio();
545     if (res == SUCCESS_CODE) {
546         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] FFiOHOSWindowResetAspectRatio success");
547     }
548     return res;
549 }
550 
FFiOHOSWindowMinimize(int64_t id)551 int32_t FFiOHOSWindowMinimize(int64_t id)
552 {
553     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Minimize start");
554     auto instance = FFIData::GetData<CJWindowImpl>(id);
555     if (instance == nullptr) {
556         return WM_ERROR_STATE_ABNORMALLY;
557     }
558     int32_t res = instance->Minimize();
559     if (res == SUCCESS_CODE) {
560         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Minimize success");
561     }
562     return res;
563 }
564 
FFiOHOSWindowSetWindowColorSpace(int64_t id,uint32_t colorSpace)565 int32_t FFiOHOSWindowSetWindowColorSpace(int64_t id, uint32_t colorSpace)
566 {
567     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowColorSpace start");
568     auto instance = FFIData::GetData<CJWindowImpl>(id);
569     if (instance == nullptr) {
570         return WM_ERROR_STATE_ABNORMALLY;
571     }
572     int32_t res = instance->SetWindowColorSpace(colorSpace);
573     if (res == SUCCESS_CODE) {
574         TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowColorSpace success");
575     }
576     return res;
577 }
578 
FFiOHOSWindowSetCornerRadius(int64_t id,float radius)579 int32_t FFiOHOSWindowSetCornerRadius(int64_t id, float radius)
580 {
581     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetCornerRadius start");
582     auto instance = FFIData::GetData<CJWindowImpl>(id);
583     if (instance == nullptr) {
584         return WM_ERROR_STATE_ABNORMALLY;
585     }
586     int32_t res = instance->SetCornerRadius(radius);
587     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetCornerRadius success");
588     return res;
589 }
590 
FFiOHOSWindowSetResizeByDragEnabled(int64_t id,bool enable)591 int32_t FFiOHOSWindowSetResizeByDragEnabled(int64_t id, bool enable)
592 {
593     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetResizeByDragEnabled start");
594     auto instance = FFIData::GetData<CJWindowImpl>(id);
595     if (instance == nullptr) {
596         return WM_ERROR_STATE_ABNORMALLY;
597     }
598     int32_t res = instance->SetResizeByDragEnabled(enable);
599     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetResizeByDragEnabled success");
600     return res;
601 }
602 
FFiOHOSWindowRaiseToAppTop(int64_t id)603 int32_t FFiOHOSWindowRaiseToAppTop(int64_t id)
604 {
605     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseToAppTop start");
606     auto instance = FFIData::GetData<CJWindowImpl>(id);
607     if (instance == nullptr) {
608         return WM_ERROR_STATE_ABNORMALLY;
609     }
610     int32_t res = instance->RaiseToAppTop();
611     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseToAppTop success");
612     return res;
613 }
614 
FFiOHOSWindowSetSnapshotSkip(int64_t id,bool isSkip)615 int32_t FFiOHOSWindowSetSnapshotSkip(int64_t id, bool isSkip)
616 {
617     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetSnapshotSkip start");
618     auto instance = FFIData::GetData<CJWindowImpl>(id);
619     if (instance == nullptr) {
620         return WM_ERROR_STATE_ABNORMALLY;
621     }
622     int32_t res = instance->SetSnapshotSkip(isSkip);
623     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetSnapshotSkip success");
624     return res;
625 }
626 
FFiOHOSWindowSetWakeUpScreen(int64_t id,bool wakeUp)627 int32_t FFiOHOSWindowSetWakeUpScreen(int64_t id, bool wakeUp)
628 {
629     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWakeUpScreen start");
630     auto instance = FFIData::GetData<CJWindowImpl>(id);
631     if (instance == nullptr) {
632         return WM_ERROR_STATE_ABNORMALLY;
633     }
634     int32_t res = static_cast<int32_t>(instance->SetWakeUpScreen(wakeUp));
635     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWakeUpScreen success");
636     return res;
637 }
638 
FFiOHOSWindowSetRaiseByClickEnabled(int64_t id,bool enable)639 int32_t FFiOHOSWindowSetRaiseByClickEnabled(int64_t id, bool enable)
640 {
641     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetRaiseByClickEnabled start");
642     auto instance = FFIData::GetData<CJWindowImpl>(id);
643     if (instance == nullptr) {
644         return WM_ERROR_STATE_ABNORMALLY;
645     }
646     int32_t res = instance->SetRaiseByClickEnabled(enable);
647     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetRaiseByClickEnabled success");
648     return res;
649 }
650 
FFiOHOSWindowGetWindowColorSpace(int64_t id,int32_t * errCode)651 int32_t FFiOHOSWindowGetWindowColorSpace(int64_t id, int32_t* errCode)
652 {
653     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowColorSpace start");
654     auto instance = FFIData::GetData<CJWindowImpl>(id);
655     if (instance == nullptr) {
656         *errCode = WM_ERROR_STATE_ABNORMALLY;
657         return 0;
658     }
659     int32_t res = static_cast<int32_t>(instance->GetWindowColorSpace(errCode));
660     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] GetWindowColorSpace success");
661     return res;
662 }
663 
FFiOHOSWindowRaiseAboveTarget(int64_t id,int32_t windowId)664 int32_t FFiOHOSWindowRaiseAboveTarget(int64_t id, int32_t windowId)
665 {
666     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseAboveTarget start");
667     auto instance = FFIData::GetData<CJWindowImpl>(id);
668     if (instance == nullptr) {
669         return WM_ERROR_STATE_ABNORMALLY;
670     }
671     int32_t res = instance->RaiseAboveTarget(windowId);
672     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] RaiseAboveTarget success");
673     return res;
674 }
675 
FFiOHOSWindowTranslate(int64_t id,double x,double y,double z)676 int32_t FFiOHOSWindowTranslate(int64_t id, double x, double y, double z)
677 {
678     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Translate start");
679     auto instance = FFIData::GetData<CJWindowImpl>(id);
680     if (instance == nullptr) {
681         return WM_ERROR_STATE_ABNORMALLY;
682     }
683     int32_t res = instance->Translate(x, y, z);
684     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Translate success");
685     return res;
686 }
687 
FFiOHOSWindowRotate(int64_t id,WindowRotate window)688 int32_t FFiOHOSWindowRotate(int64_t id, WindowRotate window)
689 {
690     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Rotate start");
691     auto instance = FFIData::GetData<CJWindowImpl>(id);
692     if (instance == nullptr) {
693         return WM_ERROR_STATE_ABNORMALLY;
694     }
695     int32_t res = instance->Rotate(window.x, window.y, window.z, window.pivotX, window.pivotY);
696     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Rotate success");
697     return res;
698 }
699 
FFiOHOSWindowScale(int64_t id,double x,double y,double pivotX,double pivotY)700 int32_t FFiOHOSWindowScale(int64_t id, double x, double y, double pivotX, double pivotY)
701 {
702     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Scale start");
703     auto instance = FFIData::GetData<CJWindowImpl>(id);
704     if (instance == nullptr) {
705         return WM_ERROR_STATE_ABNORMALLY;
706     }
707     int32_t res = instance->Scale(x, y, pivotX, pivotY);
708     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Scale success");
709     return res;
710 }
711 
FFiOHOSWindowOpacity(int64_t id,double opacity)712 int32_t FFiOHOSWindowOpacity(int64_t id, double opacity)
713 {
714     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Opacity start");
715     auto instance = FFIData::GetData<CJWindowImpl>(id);
716     if (instance == nullptr) {
717         return WM_ERROR_STATE_ABNORMALLY;
718     }
719     int32_t res = instance->Opacity(opacity);
720     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Opacity success");
721     return res;
722 }
723 
FFiOHOSWindowSnapshot(int64_t id,int32_t * errCode)724 int64_t FFiOHOSWindowSnapshot(int64_t id, int32_t* errCode)
725 {
726     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Snapshot start");
727     auto instance = FFIData::GetData<CJWindowImpl>(id);
728     if (instance == nullptr) {
729         *errCode = WM_ERROR_STATE_ABNORMALLY;
730         return 0;
731     }
732     std::shared_ptr<Media::PixelMap> pmap = instance->Snapshot(errCode);
733     if (*errCode != 0) {
734         return 0;
735     }
736     auto nativeImage = FFIData::Create<PixelMapImpl>(move(pmap));
737     if (nativeImage == nullptr) {
738         TLOGI(WmsLogTag::WMS_DIALOG, "create image failed");
739         return 0;
740     }
741     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] Snapshot success");
742     return nativeImage->GetID();
743 }
744 
FFiOHOSWindowSetWindowSystemBarEnable(int64_t id,CArrString arr)745 int32_t FFiOHOSWindowSetWindowSystemBarEnable(int64_t id, CArrString arr)
746 {
747     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarEnable start");
748     auto instance = FFIData::GetData<CJWindowImpl>(id);
749     if (instance == nullptr) {
750         return WM_ERROR_STATE_ABNORMALLY;
751     }
752     int32_t res = instance->SetWindowSystemBarEnable(arr.head, (uint32_t)arr.size);
753     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarEnable success");
754     return res;
755 }
756 
FFiOHOSWindowSetWindowSystemBarProperties(int64_t id,CJBarProperties properties)757 int32_t FFiOHOSWindowSetWindowSystemBarProperties(int64_t id, CJBarProperties properties)
758 {
759     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarProperties start");
760     auto instance = FFIData::GetData<CJWindowImpl>(id);
761     if (instance == nullptr) {
762         return WM_ERROR_STATE_ABNORMALLY;
763     }
764     CBarProperties cProperties;
765     cProperties.statusBarColor = properties.statusBarColor;
766     cProperties.isStatusBarLightIcon = properties.isStatusBarLightIcon;
767     cProperties.statusBarContentColor = properties.statusBarContentColor;
768     cProperties.navigationBarColor = properties.navigationBarColor;
769     cProperties.navigationBarContentColor = properties.navigationBarContentColor;
770     cProperties.isNavigationBarLightIcon = properties.isNavigationBarLightIcon;
771     cProperties.enableStatusBarAnimation = properties.enableStatusBarAnimation;
772     cProperties.enableNavigationBarAnimation = properties.enableNavigationBarAnimation;
773     int32_t res = instance->SetWindowSystemBarProperties(cProperties);
774     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] SetWindowSystemBarProperties success");
775     return res;
776 }
777 
FfiOHOSOnKeyboardHeightChange(int64_t id,int64_t callbackId)778 int32_t FfiOHOSOnKeyboardHeightChange(int64_t id, int64_t callbackId)
779 {
780     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnKeyboardHeightChange start");
781     auto instance = FFIData::GetData<CJWindowImpl>(id);
782     if (instance == nullptr) {
783         return WM_ERROR_STATE_ABNORMALLY;
784     }
785     int32_t ret = instance->OnRegisterWindowCallback("keyboardHeightChange", callbackId);
786     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnKeyboardHeightChange success");
787     return ret;
788 }
789 
FfiOHOSOffKeyboardHeightChange(int64_t id)790 int32_t FfiOHOSOffKeyboardHeightChange(int64_t id)
791 {
792     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OffKeyboardHeightChange start");
793     auto instance = FFIData::GetData<CJWindowImpl>(id);
794     if (instance == nullptr) {
795         return WM_ERROR_STATE_ABNORMALLY;
796     }
797     int32_t ret = instance->UnregisterWindowCallback("keyboardHeightChange", (-1));
798     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OffKeyboardHeightChange success");
799     return ret;
800 }
801 
FfiOHOSOnWindowEvent(int64_t id,int64_t callbackId)802 int32_t FfiOHOSOnWindowEvent(int64_t id, int64_t callbackId)
803 {
804     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnWindowEvent start");
805     auto instance = FFIData::GetData<CJWindowImpl>(id);
806     if (instance == nullptr) {
807         return WM_ERROR_STATE_ABNORMALLY;
808     }
809     int32_t ret = instance->OnRegisterWindowCallback("windowEvent", callbackId);
810     TLOGI(WmsLogTag::WMS_DIALOG, "[Window] OnWindowEvent success");
811     return ret;
812 }
813 
FfiOHOSOnCallback(int64_t id,int64_t callbackId,const char * callbackType)814 int32_t FfiOHOSOnCallback(int64_t id, int64_t callbackId, const char* callbackType)
815 {
816     TLOGI(WmsLogTag::DEFAULT, "On %{public}s start", callbackType);
817     auto instance = FFIData::GetData<CJWindowImpl>(id);
818     if (instance == nullptr) {
819         return WM_ERROR_STATE_ABNORMALLY;
820     }
821     const std::string type = callbackType;
822     int32_t ret = instance->OnRegisterWindowCallback(type, callbackId);
823     TLOGI(WmsLogTag::DEFAULT, "On %{public}s success", callbackType);
824     return ret;
825 }
826 
FfiOHOSOffCallback(int64_t id,int64_t callbackId,const char * callbackType)827 int32_t FfiOHOSOffCallback(int64_t id, int64_t callbackId, const char* callbackType)
828 {
829     TLOGI(WmsLogTag::DEFAULT, "Off %{public}s start", callbackType);
830     auto instance = FFIData::GetData<CJWindowImpl>(id);
831     if (instance == nullptr) {
832         return WM_ERROR_STATE_ABNORMALLY;
833     }
834     const std::string type = callbackType;
835     int32_t ret = instance->UnregisterWindowCallback(type, callbackId);
836     TLOGI(WmsLogTag::DEFAULT, "Off %{public}s success", callbackType);
837     return ret;
838 }
839 
FfiOHOSOnNoInteractionDetected(int64_t id,int64_t timeout,int64_t callbackId)840 int32_t FfiOHOSOnNoInteractionDetected(int64_t id, int64_t timeout, int64_t callbackId)
841 {
842     TLOGI(WmsLogTag::DEFAULT, "OnNoInteractionDetected start");
843     auto instance = FFIData::GetData<CJWindowImpl>(id);
844     if (instance == nullptr) {
845         return WM_ERROR_STATE_ABNORMALLY;
846     }
847     const std::string type = "noInteractionDetected";
848     int32_t ret = instance->OnRegisterWindowCallback(type, callbackId, timeout);
849     TLOGI(WmsLogTag::DEFAULT, "OnNoInteractionDetected success");
850     return ret;
851 }
852 
FfiOHOSSetSubWindowModal(int64_t id,bool isModal)853 int32_t FfiOHOSSetSubWindowModal(int64_t id, bool isModal)
854 {
855     TLOGI(WmsLogTag::WMS_SUB, "SetSubWindowModal start");
856     auto instance = FFIData::GetData<CJWindowImpl>(id);
857     if (instance == nullptr) {
858         return WM_ERROR_STATE_ABNORMALLY;
859     }
860     int32_t ret = instance->SetSubWindowModal(isModal);
861     TLOGI(WmsLogTag::WMS_SUB, "SetSubWindowModal success");
862     return ret;
863 }
864 
FfiOHOSIsFocused(int64_t id,int32_t * errCode)865 int32_t FfiOHOSIsFocused(int64_t id, int32_t* errCode)
866 {
867     TLOGI(WmsLogTag::WMS_FOCUS, "IsFocused start");
868     auto instance = FFIData::GetData<CJWindowImpl>(id);
869     if (instance == nullptr) {
870         *errCode = WM_ERROR_STATE_ABNORMALLY;
871         return 0;
872     }
873     int32_t ret = instance->GetWindowProperties(errCode).focusable;
874     TLOGI(WmsLogTag::WMS_FOCUS, "IsFocused success");
875     return ret;
876 }
877 
FfiOHOSSetWindowLimits(int64_t id,OHOS::Rosen::CWindowLimits windloLimits,OHOS::Rosen::CWindowLimits * retPtr)878 int32_t FfiOHOSSetWindowLimits(int64_t id,
879                                OHOS::Rosen::CWindowLimits windloLimits,
880                                OHOS::Rosen::CWindowLimits* retPtr)
881 {
882     TLOGI(WmsLogTag::WMS_LAYOUT, "SetWindowLimits start");
883     auto instance = FFIData::GetData<CJWindowImpl>(id);
884     if (instance == nullptr) {
885         return WM_ERROR_STATE_ABNORMALLY;
886     }
887 
888     CWindowLimits cWindowLimits;
889     cWindowLimits.maxWidth = windloLimits.maxWidth;
890     cWindowLimits.maxHeight = windloLimits.maxHeight;
891     cWindowLimits.minWidth = windloLimits.minWidth;
892     cWindowLimits.minHeight = windloLimits.minHeight;
893 
894     int32_t ret = instance->SetWindowLimits(cWindowLimits, *retPtr);
895     TLOGI(WmsLogTag::WMS_LAYOUT, "SetWindowLimits success");
896     return ret;
897 }
898 
FfiOHOSGetWindowLimits(int64_t id,OHOS::Rosen::CWindowLimits * retPtr)899 int32_t FfiOHOSGetWindowLimits(int64_t id, OHOS::Rosen::CWindowLimits* retPtr)
900 {
901     TLOGI(WmsLogTag::WMS_LAYOUT, "GetWindowLimits start");
902     auto instance = FFIData::GetData<CJWindowImpl>(id);
903     if (instance == nullptr) {
904         return WM_ERROR_STATE_ABNORMALLY;
905     }
906 
907     int32_t ret = instance->GetWindowLimits(*retPtr);
908     TLOGI(WmsLogTag::WMS_LAYOUT, "GetWindowLimits success");
909     return ret;
910 }
911 
FfiOHOSGetImmersiveModeEnabledState(int64_t id,int32_t * errCode)912 bool FfiOHOSGetImmersiveModeEnabledState(int64_t id, int32_t* errCode)
913 {
914     TLOGI(WmsLogTag::WMS_IMMS, "GetImmersiveModeEnabledState start");
915     auto instance = FFIData::GetData<CJWindowImpl>(id);
916     if (instance == nullptr) {
917         *errCode = WM_ERROR_STATE_ABNORMALLY;
918         return false;
919     }
920     bool ret = instance->GetImmersiveModeEnabledState(*errCode);
921     TLOGI(WmsLogTag::WMS_IMMS, "GetImmersiveModeEnabledState success");
922     return ret;
923 }
924 
FfiOHOSSetImmersiveModeEnabledState(int64_t id,bool enabled)925 int32_t FfiOHOSSetImmersiveModeEnabledState(int64_t id, bool enabled)
926 {
927     TLOGI(WmsLogTag::WMS_IMMS, "SetImmersiveModeEnabledState start");
928     auto instance = FFIData::GetData<CJWindowImpl>(id);
929     if (instance == nullptr) {
930         return WM_ERROR_STATE_ABNORMALLY;
931     }
932     int32_t ret = instance->SetImmersiveModeEnabledState(enabled);
933     TLOGI(WmsLogTag::WMS_IMMS, "SetImmersiveModeEnabledState success");
934     return ret;
935 }
936 
FfiOHOSKeepKeyboardOnFocus(int64_t id,bool keepKeyboardFlag)937 int32_t FfiOHOSKeepKeyboardOnFocus(int64_t id, bool keepKeyboardFlag)
938 {
939     TLOGI(WmsLogTag::WMS_KEYBOARD, "KeepKeyboardOnFocus start");
940     auto instance = FFIData::GetData<CJWindowImpl>(id);
941     if (instance == nullptr) {
942         return WM_ERROR_STATE_ABNORMALLY;
943     }
944     int32_t ret = instance->KeepKeyboardOnFocus(keepKeyboardFlag);
945     TLOGI(WmsLogTag::WMS_KEYBOARD, "KeepKeyboardOnFocus success");
946     return ret;
947 }
948 
FfiOHOSGetWindowDecorHeight(int64_t id,int32_t * height)949 int32_t FfiOHOSGetWindowDecorHeight(int64_t id, int32_t* height)
950 {
951     TLOGI(WmsLogTag::WMS_DECOR, "GetWindowDecorHeight start");
952     auto instance = FFIData::GetData<CJWindowImpl>(id);
953     if (instance == nullptr) {
954         return WM_ERROR_STATE_ABNORMALLY;
955     }
956 
957     int32_t ret = instance->GetWindowDecorHeight(*height);
958     TLOGI(WmsLogTag::WMS_DECOR, "GetWindowDecorHeight success");
959     return ret;
960 }
961 
FfiOHOSSetWindowDecorHeight(int64_t id,int32_t height)962 int32_t FfiOHOSSetWindowDecorHeight(int64_t id, int32_t height)
963 {
964     TLOGI(WmsLogTag::WMS_DECOR, "SetWindowDecorHeight start");
965     auto instance = FFIData::GetData<CJWindowImpl>(id);
966     if (instance == nullptr) {
967         return WM_ERROR_STATE_ABNORMALLY;
968     }
969 
970     int32_t ret = instance->SetWindowDecorHeight(height);
971     TLOGI(WmsLogTag::WMS_DECOR, "SetWindowDecorHeight success");
972     return ret;
973 }
974 
FfiOHOSRecover(int64_t id)975 int32_t FfiOHOSRecover(int64_t id)
976 {
977     TLOGI(WmsLogTag::WMS_RECOVER, "Recover start");
978     auto instance = FFIData::GetData<CJWindowImpl>(id);
979     if (instance == nullptr) {
980         return WM_ERROR_STATE_ABNORMALLY;
981     }
982 
983     int32_t ret = instance->Recover();
984     TLOGI(WmsLogTag::WMS_RECOVER, "Recover success");
985     return ret;
986 }
987 
FfiOHOSSetWindowDecorVisible(int64_t id,bool isVisible)988 int32_t FfiOHOSSetWindowDecorVisible(int64_t id, bool isVisible)
989 {
990     TLOGI(WmsLogTag::WMS_DECOR, "SetWindowDecorVisible start");
991     auto instance = FFIData::GetData<CJWindowImpl>(id);
992     if (instance == nullptr) {
993         return WM_ERROR_STATE_ABNORMALLY;
994     }
995     int32_t ret = instance->SetWindowDecorVisible(isVisible);
996     TLOGI(WmsLogTag::WMS_DECOR, "SetWindowDecorVisible success");
997     return ret;
998 }
999 
FfiOHOSGetTitleButtonRect(int64_t id,OHOS::Rosen::CTitleButtonRect * retPtr)1000 int32_t FfiOHOSGetTitleButtonRect(int64_t id,
1001                                   OHOS::Rosen::CTitleButtonRect* retPtr)
1002 {
1003     TLOGI(WmsLogTag::WMS_DECOR, "GetTitleButtonRect start");
1004     auto instance = FFIData::GetData<CJWindowImpl>(id);
1005     if (instance == nullptr) {
1006         return WM_ERROR_STATE_ABNORMALLY;
1007     }
1008 
1009     int32_t ret = instance->GetTitleButtonRect(*retPtr);
1010     TLOGI(WmsLogTag::WMS_DECOR, "GetTitleButtonRect success");
1011     return ret;
1012 }
1013 
FfiOHOSSetDialogBackGestureEnabled(int64_t id,bool enabled)1014 int32_t FfiOHOSSetDialogBackGestureEnabled(int64_t id, bool enabled)
1015 {
1016     TLOGI(WmsLogTag::WMS_DIALOG, "SetDialogBackGestureEnabled start");
1017     auto instance = FFIData::GetData<CJWindowImpl>(id);
1018     if (instance == nullptr) {
1019         return WM_ERROR_STATE_ABNORMALLY;
1020     }
1021     int32_t ret = instance->SetDialogBackGestureEnabled(enabled);
1022     TLOGI(WmsLogTag::WMS_DIALOG, "SetDialogBackGestureEnabled success");
1023     return ret;
1024 }
1025 
FfiOHOSDisableLandscapeMultiWindow(int64_t id)1026 int32_t FfiOHOSDisableLandscapeMultiWindow(int64_t id)
1027 {
1028     TLOGI(WmsLogTag::WMS_MULTI_WINDOW, "DisableLandscapeMultiWindow start");
1029     auto instance = FFIData::GetData<CJWindowImpl>(id);
1030     if (instance == nullptr) {
1031         return WM_ERROR_STATE_ABNORMALLY;
1032     }
1033     int32_t ret = instance->DisableLandscapeMultiWindow();
1034     TLOGI(WmsLogTag::WMS_MULTI_WINDOW, "DisableLandscapeMultiWindow success");
1035     return ret;
1036 }
1037 
FfiOHOSEnableLandscapeMultiWindow(int64_t id)1038 int32_t FfiOHOSEnableLandscapeMultiWindow(int64_t id)
1039 {
1040     TLOGI(WmsLogTag::WMS_MULTI_WINDOW, "EnableLandscapeMultiWindow start");
1041     auto instance = FFIData::GetData<CJWindowImpl>(id);
1042     if (instance == nullptr) {
1043         return WM_ERROR_STATE_ABNORMALLY;
1044     }
1045     int32_t ret = instance->EnableLandscapeMultiWindow();
1046     TLOGI(WmsLogTag::WMS_MULTI_WINDOW, "EnableLandscapeMultiWindow success");
1047     return ret;
1048 }
1049 
FfiOHOSSetWindowGrayScale(int64_t id,float grayScale)1050 int32_t FfiOHOSSetWindowGrayScale(int64_t id, float grayScale)
1051 {
1052     TLOGI(WmsLogTag::WMS_ATTRIBUTE, "SetWindowGrayScale start");
1053     auto instance = FFIData::GetData<CJWindowImpl>(id);
1054     if (instance == nullptr) {
1055         return WM_ERROR_STATE_ABNORMALLY;
1056     }
1057     int32_t ret = instance->SetWindowGrayScale(grayScale);
1058     TLOGI(WmsLogTag::WMS_ATTRIBUTE, "SetWindowGrayScale success");
1059     return ret;
1060 }
1061 
FfiOHOSSpecificSystemBarEnabled(int64_t id,int32_t name,bool enable,bool enableAnimation)1062 int32_t FfiOHOSSpecificSystemBarEnabled(int64_t id, int32_t name, bool enable,
1063                                         bool enableAnimation)
1064 {
1065     TLOGI(WmsLogTag::WMS_IMMS, "SpecificSystemBarEnabled start");
1066     auto instance = FFIData::GetData<CJWindowImpl>(id);
1067     if (instance == nullptr) {
1068         return WM_ERROR_STATE_ABNORMALLY;
1069     }
1070     int32_t ret = instance->SpecificSystemBarEnabled(name, enable, enableAnimation);
1071     TLOGI(WmsLogTag::WMS_IMMS, "SpecificSystemBarEnabled success");
1072     return ret;
1073 }
1074 
FfiOHOSGetWindowSystemBarProperties(int64_t id,CJBarProperties * systemBarProperty)1075 int32_t FfiOHOSGetWindowSystemBarProperties(int64_t id,
1076                                             CJBarProperties* systemBarProperty)
1077 {
1078     TLOGI(WmsLogTag::WMS_IMMS, "GetWindowSystemBarProperties start");
1079     auto instance = FFIData::GetData<CJWindowImpl>(id);
1080     if (instance == nullptr) {
1081         return WM_ERROR_STATE_ABNORMALLY;
1082     }
1083     int32_t ret = instance->GetWindowSystemBarProperties(*systemBarProperty);
1084     TLOGI(WmsLogTag::WMS_IMMS, "GetWindowSystemBarProperties success");
1085     return ret;
1086 }
1087 
FfiOHOSGetPreferredOrientation(int64_t id,int32_t * errCode)1088 uint32_t FfiOHOSGetPreferredOrientation(int64_t id, int32_t* errCode)
1089 {
1090     auto instance = FFIData::GetData<CJWindowImpl>(id);
1091     if (instance == nullptr) {
1092         return WM_ERROR_STATE_ABNORMALLY;
1093     }
1094     uint32_t ret = instance->GetPreferredOrientation(*errCode);
1095     return ret;
1096 }
1097 
FfiOHOSGetWindowStatus(int64_t id,int32_t * errCode)1098 int32_t FfiOHOSGetWindowStatus(int64_t id, int32_t* errCode)
1099 {
1100     TLOGI(WmsLogTag::WMS_PC, "GetWindowStatus start");
1101     auto instance = FFIData::GetData<CJWindowImpl>(id);
1102     if (instance == nullptr) {
1103         return WM_ERROR_STATE_ABNORMALLY;
1104     }
1105     int32_t ret = instance->GetWindowStatus(*errCode);
1106     TLOGI(WmsLogTag::WMS_PC, "GetWindowStatus success");
1107     return ret;
1108 }
1109 
FfiOHOSMaximize(int64_t id,int32_t presentation)1110 int32_t FfiOHOSMaximize(int64_t id, int32_t presentation)
1111 {
1112     TLOGI(WmsLogTag::WMS_LAYOUT_PC, "Maximize start");
1113     auto instance = FFIData::GetData<CJWindowImpl>(id);
1114     if (instance == nullptr) {
1115         return WM_ERROR_STATE_ABNORMALLY;
1116     }
1117     int32_t ret = instance->Maximize(presentation);
1118     TLOGI(WmsLogTag::WMS_LAYOUT_PC, "Maximize success");
1119     return ret;
1120 }
1121 
FfiOHOSCreateSubWindowWithOptions(int64_t id,char * name,CSubWindowOptions option)1122 RetDataI64 FfiOHOSCreateSubWindowWithOptions(int64_t id, char* name,
1123                                              CSubWindowOptions option)
1124 {
1125     TLOGI(WmsLogTag::WMS_SUB, "CreateSubWindowWithOptions start");
1126     RetDataI64 ret;
1127     std::string nm = name;
1128     auto instance = FFIData::GetData<CJWindowImpl>(id);
1129     if (instance == nullptr) {
1130         ret.code = WM_ERROR_STATE_ABNORMALLY;
1131         return ret;
1132     }
1133     ret.code = instance->CreateSubWindowWithOptions(nm, ret.data, option);
1134     TLOGI(WmsLogTag::WMS_SUB, "CreateSubWindowWithOptions success");
1135     return ret;
1136 }
1137 
1138 // WindowStage
FfiOHOSBindWindowStage(int64_t windowStageImplPtr)1139 RetDataI64 FfiOHOSBindWindowStage(int64_t windowStageImplPtr)
1140 {
1141     TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] bind to created WindowStage");
1142     RetDataI64 ret;
1143     auto actualWs = reinterpret_cast<CJWindowStageImpl*>(windowStageImplPtr);
1144     if (actualWs == nullptr) {
1145         TLOGE(WmsLogTag::WMS_DIALOG, "[WindowStage] Bind null obj");
1146         ret.code = static_cast<int32_t>(WMError::WM_ERROR_NULLPTR);
1147         return ret;
1148     }
1149     ret.code = static_cast<int32_t>(WMError::WM_OK);
1150     ret.data = actualWs->GetID();
1151     return ret;
1152 }
1153 
FfiOHOSGetMainWindow(int64_t id)1154 RetDataI64 FfiOHOSGetMainWindow(int64_t id)
1155 {
1156     TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] getMainWindow start");
1157     RetDataI64 ret;
1158     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1159     if (instance == nullptr) {
1160         ret.code = WM_ERROR_STATE_ABNORMALLY;
1161         return ret;
1162     }
1163     ret.code = instance->GetMainWindow(ret.data);
1164     return ret;
1165 }
1166 
FfiOHOSCreateSubWindow(int64_t id,char * name)1167 RetDataI64 FfiOHOSCreateSubWindow(int64_t id, char* name)
1168 {
1169     TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] createSubWindow start");
1170     RetDataI64 ret;
1171     std::string nm = name;
1172     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1173     if (instance == nullptr) {
1174         ret.code = WM_ERROR_STATE_ABNORMALLY;
1175         return ret;
1176     }
1177     ret.code = instance->CreateSubWindow(nm, ret.data);
1178     return ret;
1179 }
1180 
FfiOHOSGetSubWindow(int64_t id)1181 RetStruct FfiOHOSGetSubWindow(int64_t id)
1182 {
1183     TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] getSubWindow start");
1184     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1185     if (instance == nullptr) {
1186         return {WM_ERROR_STATE_ABNORMALLY, 0, nullptr};
1187     }
1188     auto ret = instance->GetSubWindow();
1189     return ret;
1190 }
1191 
FfiOHOSLoadContent(int64_t id,char * path)1192 int32_t FfiOHOSLoadContent(int64_t id, char* path)
1193 {
1194     TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] loadContent start");
1195     std::string url = path;
1196     std::string storageJson = " ";
1197     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1198     if (instance == nullptr) {
1199         return WM_ERROR_STATE_ABNORMALLY;
1200     }
1201     return instance->OnLoadContent(url, storageJson, false);
1202 }
1203 
FfiOHOSLoadContentByName(int64_t id,char * name)1204 int32_t FfiOHOSLoadContentByName(int64_t id, char* name)
1205 {
1206     TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] loadContentByName start");
1207     return SUCCESS_CODE;
1208 }
1209 
FfiOHOSDisableWindowDecor(int64_t id)1210 int32_t FfiOHOSDisableWindowDecor(int64_t id)
1211 {
1212     TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] disableWindowDecor start");
1213     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1214     if (instance == nullptr) {
1215         return WM_ERROR_STATE_ABNORMALLY;
1216     }
1217     return instance->DisableWindowDecor();
1218 }
1219 
FfiOHOSSetShowOnLockScreen(int64_t id,bool showOnLockScreen)1220 int32_t FfiOHOSSetShowOnLockScreen(int64_t id, bool showOnLockScreen)
1221 {
1222     TLOGI(WmsLogTag::WMS_DIALOG, "[WindowStage] setShowOnLockScreen start");
1223     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1224     if (instance == nullptr) {
1225         return WM_ERROR_STATE_ABNORMALLY;
1226     }
1227     return instance->SetShowOnLockScreen(showOnLockScreen);
1228 }
1229 
FfiOHOSSetDefaultDensityEnabled(int64_t id,bool enabled)1230 int32_t FfiOHOSSetDefaultDensityEnabled(int64_t id, bool enabled)
1231 {
1232     TLOGI(WmsLogTag::WMS_ATTRIBUTE, "setDefaultDensityEnabled start");
1233     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1234     if (instance == nullptr) {
1235         return WM_ERROR_STATE_ABNORMALLY;
1236     }
1237     return instance->SetDefaultDensityEnabled(enabled);
1238 }
1239 
FfiOHOSStageOn(int64_t id,int64_t callbackId)1240 int32_t FfiOHOSStageOn(int64_t id, int64_t callbackId)
1241 {
1242     TLOGI(WmsLogTag::DEFAULT, "on windowStageEvent start");
1243     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1244     if (instance == nullptr) {
1245         TLOGI(WmsLogTag::DEFAULT, "on windowStageEvent is nullptr");
1246         return WM_ERROR_STATE_ABNORMALLY;
1247     }
1248     int32_t ret = instance->OnEvent(callbackId);
1249     TLOGI(WmsLogTag::DEFAULT, "on windowStageEvent success");
1250     return ret;
1251 }
1252 
FfiOHOSStageOff(int64_t id,int64_t callbackId)1253 int32_t FfiOHOSStageOff(int64_t id, int64_t callbackId)
1254 {
1255     TLOGI(WmsLogTag::DEFAULT, "off windowStageEvent start");
1256     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1257     if (instance == nullptr) {
1258         TLOGI(WmsLogTag::DEFAULT, "off windowStageEvent is nullptr");
1259         return WM_ERROR_STATE_ABNORMALLY;
1260     }
1261     int32_t ret = instance->OffEvent(callbackId);
1262     TLOGI(WmsLogTag::DEFAULT, "off windowStageEvent success");
1263     return ret;
1264 }
1265 
FfiOHOSCreateSubWindowWithOptionsStage(int64_t id,const char * name,const char * title,bool decorEnabled,bool isModal)1266 RetDataI64 FfiOHOSCreateSubWindowWithOptionsStage(int64_t id, const char* name,
1267     const char* title, bool decorEnabled, bool isModal)
1268 {
1269     TLOGI(WmsLogTag::WMS_SUB, "CreateSubWindowWithOptionsStage start");
1270     RetDataI64 ret;
1271     const std::string nameStr = name;
1272     const std::string titleStr = title;
1273     auto instance = FFIData::GetData<CJWindowStageImpl>(id);
1274     if (instance == nullptr) {
1275         ret.code = WM_ERROR_STATE_ABNORMALLY;
1276         return ret;
1277     }
1278     ret.code = instance->CreateSubWindowWithOptions(ret.data, nameStr, titleStr, decorEnabled, isModal);
1279     return ret;
1280 }
1281 
1282 } // extern "C"
1283 }
1284 }
1285