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 #ifndef OHOS_JS_EXTENSION_WINDOW_CONFIG_H 17 #define OHOS_JS_EXTENSION_WINDOW_CONFIG_H 18 #include "native_engine/native_engine.h" 19 #include "native_engine/native_reference.h" 20 #include "native_engine/native_value.h" 21 #include "js_runtime_utils.h" 22 #include "wm_common.h" 23 24 namespace OHOS { 25 namespace Rosen { 26 #ifdef _WIN32 27 #define WINDOW_EXPORT __attribute__((dllexport)) 28 #else 29 #define WINDOW_EXPORT __attribute__((visibility("default"))) 30 #endif 31 32 WINDOW_EXPORT napi_value CreateJsExtensionWindowConfig(napi_env env, 33 const std::shared_ptr<ExtensionWindowConfig>& extensionWindowConfig); 34 35 class JsExtensionWindowConfig { 36 public: 37 explicit JsExtensionWindowConfig(const std::shared_ptr<ExtensionWindowConfig>& extensionWindowConfig); 38 ~JsExtensionWindowConfig(); 39 static void Finalizer(napi_env env, void* data, void* hint); 40 static napi_value GetWindowName(napi_env env, napi_callback_info info); 41 static napi_value GetWindowAttribute(napi_env env, napi_callback_info info); 42 static napi_value GetWindowRect(napi_env env, napi_callback_info info); 43 static napi_value GetWindowRectLeft(napi_env env, napi_callback_info info); 44 static napi_value GetWindowRectTop(napi_env env, napi_callback_info info); 45 static napi_value GetWindowRectWidth(napi_env env, napi_callback_info info); 46 static napi_value GetWindowRectHeight(napi_env env, napi_callback_info info); 47 static napi_value GetSubWindowOptions(napi_env env, napi_callback_info info); 48 static napi_value GetSubWindowOptionsTitle(napi_env env, napi_callback_info info); 49 static napi_value GetSubWindowOptionsDecorEnabled(napi_env env, napi_callback_info info); 50 static napi_value GetSubWindowOptionsIsModal(napi_env env, napi_callback_info info); 51 static napi_value GetSubWindowOptionsIsTopmost(napi_env env, napi_callback_info info); 52 static napi_value GetSystemWindowOptions(napi_env env, napi_callback_info info); 53 static napi_value GetSystemWindowOptionsWindowType(napi_env env, napi_callback_info info); 54 static napi_value SetWindowName(napi_env env, napi_callback_info info); 55 static napi_value SetWindowAttribute(napi_env env, napi_callback_info info); 56 static napi_value SetWindowRect(napi_env env, napi_callback_info info); 57 static napi_value SetWindowRectLeft(napi_env env, napi_callback_info info); 58 static napi_value SetWindowRectTop(napi_env env, napi_callback_info info); 59 static napi_value SetWindowRectWidth(napi_env env, napi_callback_info info); 60 static napi_value SetWindowRectHeight(napi_env env, napi_callback_info info); 61 static napi_value SetSubWindowOptions(napi_env env, napi_callback_info info); 62 static napi_value SetSubWindowOptionsTitle(napi_env env, napi_callback_info info); 63 static napi_value SetSubWindowOptionsDecorEnabled(napi_env env, napi_callback_info info); 64 static napi_value SetSubWindowOptionsIsModal(napi_env env, napi_callback_info info); 65 static napi_value SetSubWindowOptionsIsTopmost(napi_env env, napi_callback_info info); 66 static napi_value SetSystemWindowOptions(napi_env env, napi_callback_info info); 67 static napi_value SetSystemWindowOptionsWindowType(napi_env env, napi_callback_info info); 68 69 private: 70 napi_value OnGetWindowName(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 71 napi_value OnGetWindowAttribute(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 72 napi_value OnGetWindowRect(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 73 napi_value OnGetWindowRectLeft(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 74 napi_value OnGetWindowRectTop(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 75 napi_value OnGetWindowRectWidth(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 76 napi_value OnGetWindowRectHeight(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 77 napi_value OnGetSubWindowOptions(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 78 napi_value OnGetSubWindowOptionsTitle(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 79 napi_value OnGetSubWindowOptionsDecorEnabled(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 80 napi_value OnGetSubWindowOptionsIsModal(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 81 napi_value OnGetSubWindowOptionsIsTopmost(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 82 napi_value OnGetSystemWindowOptions(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 83 napi_value OnGetSystemWindowOptionsWindowType(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 84 napi_value OnSetWindowName(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 85 napi_value OnSetWindowAttribute(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 86 napi_value OnSetWindowRect(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 87 napi_value OnSetWindowRectLeft(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 88 napi_value OnSetWindowRectTop(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 89 napi_value OnSetWindowRectWidth(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 90 napi_value OnSetWindowRectHeight(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 91 napi_value OnSetSubWindowOptions(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 92 napi_value OnSetSubWindowOptionsTitle(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 93 napi_value OnSetSubWindowOptionsDecorEnabled(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 94 napi_value OnSetSubWindowOptionsIsModal(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 95 napi_value OnSetSubWindowOptionsIsTopmost(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 96 napi_value OnSetSystemWindowOptions(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 97 napi_value OnSetSystemWindowOptionsWindowType(napi_env env, AbilityRuntime::NapiCallbackInfo& info); 98 99 std::shared_ptr<ExtensionWindowConfig> extensionWindowConfig_; 100 }; 101 } // namespace Rosen 102 } // namespace OHOS 103 #endif // OHOS_JS_EXTENSION_WINDOW_CONFIG_H