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