From 031be0b40bc51a67433a212cfde7c7fac86d05de Mon Sep 17 00:00:00 2001 From: dubj Date: Sun, 24 Apr 2022 20:29:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0js=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dubj Change-Id: Ie4efb20b953d816d479f860d711331b89342f335 --- extension/window_extension/BUILD.gn | 2 ++ .../src/js_window_extension.cpp | 27 +++++++++++++++++++ .../napi/window_extension/window_extension.js | 12 ++++++--- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/extension/window_extension/BUILD.gn b/extension/window_extension/BUILD.gn index b81bd3e3..79b429b4 100644 --- a/extension/window_extension/BUILD.gn +++ b/extension/window_extension/BUILD.gn @@ -23,6 +23,7 @@ config("libwindow_extension_private_config") { "../extension_connection/include/zidl", "../../interfaces/kits/napi/window_runtime/window_napi", "//foundation/aafwk/standard/frameworks/kits/ability/ability_runtime/include", + "//foundation/aafwk/standard/interfaces/kits/napi/aafwk/inner/napi_common", "//foundation/aafwk/standard/interfaces/innerkits/runtime/include", ] } @@ -50,6 +51,7 @@ ohos_shared_library("libwindow_extension") { public_configs = [ ":libwindow_extension_public_config" ] deps = [ + "//foundation/aafwk/standard/interfaces/kits/napi/aafwk/inner/napi_common:napi_common", "//foundation/graphic/standard/rosen/modules/render_service_client:librender_service_client", "//foundation/windowmanager/interfaces/kits/napi/window_runtime:window_native_kit", "//foundation/windowmanager/wm:libwm", diff --git a/extension/window_extension/src/js_window_extension.cpp b/extension/window_extension/src/js_window_extension.cpp index 81e67def..5234b3a5 100644 --- a/extension/window_extension/src/js_window_extension.cpp +++ b/extension/window_extension/src/js_window_extension.cpp @@ -15,6 +15,7 @@ #include "js_window_extension.h" +#include #include #include #include @@ -143,6 +144,19 @@ sptr JsWindowExtension::OnConnect(const AAFwk::Want &want) { WLOGFI("called."); Extension::OnConnect(want); + NativeEngine& engine = jsRuntime_.GetNativeEngine(); + std::unique_ptr complete = std::make_unique( + [=] (NativeEngine &engine, AsyncTask &task, int32_t status) { + NativeEngine* nativeEngine = &jsRuntime_.GetNativeEngine(); + napi_value napiWant = OHOS::AppExecFwk::WrapWant(reinterpret_cast(nativeEngine), want); + NativeValue* nativeWant = reinterpret_cast(napiWant); + NativeValue* argv[] = { nativeWant }; + CallJsMethod("onConnect", argv, ArraySize(argv)); + } + ); + NativeReference* callback = nullptr; + std::unique_ptr execute = nullptr; + AsyncTask::Schedule(engine, std::make_unique(callback, std::move(execute), std::move(complete))); if (!stub_) { WLOGFE("stub is nullptr."); @@ -155,6 +169,19 @@ sptr JsWindowExtension::OnConnect(const AAFwk::Want &want) void JsWindowExtension::OnDisconnect(const AAFwk::Want &want) { Extension::OnDisconnect(want); + NativeEngine& engine = jsRuntime_.GetNativeEngine(); + std::unique_ptr complete = std::make_unique( + [=] (NativeEngine &engine, AsyncTask &task, int32_t status) { + NativeEngine* nativeEngine = &jsRuntime_.GetNativeEngine(); + napi_value napiWant = OHOS::AppExecFwk::WrapWant(reinterpret_cast(nativeEngine), want); + NativeValue* nativeWant = reinterpret_cast(napiWant); + NativeValue* argv[] = { nativeWant }; + CallJsMethod("onDisconnect", argv, ArraySize(argv)); + } + ); + NativeReference* callback = nullptr; + std::unique_ptr execute = nullptr; + AsyncTask::Schedule(engine, std::make_unique(callback, std::move(execute), std::move(complete))); WLOGFI("called."); } diff --git a/interfaces/kits/napi/window_extension/window_extension.js b/interfaces/kits/napi/window_extension/window_extension.js index 4072a36f..fd338977 100644 --- a/interfaces/kits/napi/window_extension/window_extension.js +++ b/interfaces/kits/napi/window_extension/window_extension.js @@ -14,12 +14,16 @@ */ class WindowExtension { - onAbilityConnected() { - console.log('onAbilityConnected'); + onWindowReady(window) { + console.log('WindowExtension windowReady'); } - onWindowReady(window) { - console.log('windowReady'); + onConnect(want) { + console.log('WindowExtension onConnect, want:' + want.abilityName); + } + + onDisconnect(want) { + console.log('WindowExtension onDisconnect' + want.abilityName); } }