diff --git a/packages/webview_flutter/tizen/src/webview.cc b/packages/webview_flutter/tizen/src/webview.cc index e41ba7d60..6716a34fd 100644 --- a/packages/webview_flutter/tizen/src/webview.cc +++ b/packages/webview_flutter/tizen/src/webview.cc @@ -1,12 +1,11 @@ +#include "webview.h" + +#include +#include #include -#include -#include -#include #include #include -#include "webview_flutter_tizen_plugin.h" -#include "webview.h" #include #include @@ -18,10 +17,6 @@ #include "lwe/PlatformIntegrationData.h" #include "webview_factory.h" -#include -#include - - #define LWE_EXPORT extern "C" size_t LWE_EXPORT createWebViewInstance( unsigned x, unsigned y, unsigned width, unsigned height, @@ -64,12 +59,12 @@ WebView::WebView(flutter::PluginRegistrar* registrar, int viewId, FlutterTextureRegistrar* textureRegistrar, double width, double height, const std::string initialUrl) : PlatformView(registrar, viewId), - tbmSurface_(nullptr), textureRegistrar_(textureRegistrar), webViewInstance_(nullptr), currentUrl_(initialUrl), width_(width), - height_(height) { + height_(height), + tbmSurface_(nullptr) { SetTextureId(FlutterRegisterExternalTexture(textureRegistrar_)); InitWebView(); auto channel = @@ -473,7 +468,9 @@ void WebView::InitWebView() { } float scaleFactor = 1; - webViewInstance_ = (LWE::WebContainer*)createWebViewInstance(0,0,width_, height_,scaleFactor, "SamsungOneUI", "ko-KR", "Asia/Seoul",[this]() -> LWE::WebContainer::ExternalImageInfo { + webViewInstance_ = (LWE::WebContainer*)createWebViewInstance( + 0, 0, width_, height_, scaleFactor, "SamsungOneUI", "ko-KR", "Asia/Seoul", + [this]() -> LWE::WebContainer::ExternalImageInfo { LWE::WebContainer::ExternalImageInfo result; tbmSurface_ = tbm_surface_create(width_, height_, TBM_FORMAT_ARGB8888); tbm_surface_info_s tbmSurfaceInfo; @@ -482,7 +479,8 @@ void WebView::InitWebView() { result.imageAddress = (void*)tbmSurface_; } return result; - }, [this](LWE::WebContainer* c) { + }, + [this](LWE::WebContainer* c) { FlutterMarkExternalTextureFrameAvailable(textureRegistrar_, GetTextureId(), tbmSurface_); tbm_surface_destroy(tbmSurface_); @@ -528,7 +526,19 @@ void WebView::HandleMethodCall( } else if (methodName.compare("currentUrl") == 0) { result->Success(flutter::EncodableValue(GetCurrentUrl().c_str())); } else if (methodName.compare("evaluateJavascript") == 0) { - result->NotImplemented(); + if (std::holds_alternative(arguments)) { + std::string jsString = std::get(arguments); + webViewInstance_->EvaluateJavaScript( + jsString, [res = result.release()](std::string value) { + LOG_DEBUG("value: %s\n", value.c_str()); + if (res) { + res->Success(flutter::EncodableValue(value)); + delete res; + } + }); + } else { + result->Error("Invalid Arguments", "Invalid Arguments"); + } } else if (methodName.compare("addJavascriptChannels") == 0) { result->NotImplemented(); } else if (methodName.compare("removeJavascriptChannels") == 0) { diff --git a/packages/webview_flutter/tizen/src/webview.h b/packages/webview_flutter/tizen/src/webview.h index 12fe001bf..59fc3e366 100644 --- a/packages/webview_flutter/tizen/src/webview.h +++ b/packages/webview_flutter/tizen/src/webview.h @@ -1,8 +1,12 @@ #ifndef FLUTTER_PLUGIN_WEBVIEW_FLUTTER_TIZEN_WEVIEW_H_ #define FLUTTER_PLUGIN_WEBVIEW_FLUTTER_TIZEN_WEVIEW_H_ +#include +#include +#include #include #include +#include #include // #include "lwe/LWEWebView.h"