diff --git a/packages/webview_flutter/example/lib/main.dart b/packages/webview_flutter/example/lib/main.dart index 55f1c9975..5e26b5dac 100644 --- a/packages/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/example/lib/main.dart @@ -58,7 +58,7 @@ class _WebViewExampleState extends State { // to allow calling Scaffold.of(context) so we can show a snackbar. body: Builder(builder: (BuildContext context) { return WebView( - initialUrl: 'http://www.naver.com', + initialUrl: 'https://www.apache.org/licenses/LICENSE-2.0.txt', javascriptMode: JavascriptMode.unrestricted, onWebViewCreated: (WebViewController webViewController) { _controller.complete(webViewController); diff --git a/packages/webview_flutter/example/tizen/lib/arm/liblightweight-web-engine.mobile.so b/packages/webview_flutter/example/tizen/lib/arm/liblightweight-web-engine.mobile.so new file mode 100755 index 000000000..432f7e846 Binary files /dev/null and b/packages/webview_flutter/example/tizen/lib/arm/liblightweight-web-engine.mobile.so differ diff --git a/packages/webview_flutter/tizen/inc/lwe/LWEWebView.h b/packages/webview_flutter/tizen/inc/lwe/LWEWebView.h index 445d1469a..e204a703e 100644 --- a/packages/webview_flutter/tizen/inc/lwe/LWEWebView.h +++ b/packages/webview_flutter/tizen/inc/lwe/LWEWebView.h @@ -158,6 +158,20 @@ class LWE_EXPORT WebContainer { onGLSwapBuffers, float devicePixelRatio, const char* defaultFontName, const char* locale, const char* timezoneID); + + struct ExternalImageInfo { + void* imageAddress; + }; + + static WebContainer* CreateGLWithPlatformImage( + unsigned width, unsigned height, + const std::function& onGLMakeCurrent, + const std::function& + onGLSwapBuffers, + const std::function& prepareImageCb, + const std::function& renderedCb, + float devicePixelRatio, const char* defaultFontName, const char* locale, + const char* timezoneID); // <--- end of function set for render with OpenGL // Function set for headless diff --git a/packages/webview_flutter/tizen/lib/liblightweight-web-engine.mobile.so b/packages/webview_flutter/tizen/lib/liblightweight-web-engine.mobile.so new file mode 100755 index 000000000..6a4c9296d Binary files /dev/null and b/packages/webview_flutter/tizen/lib/liblightweight-web-engine.mobile.so differ diff --git a/packages/webview_flutter/tizen/lib/liblightweight-web-engine.so b/packages/webview_flutter/tizen/lib/liblightweight-web-engine.so deleted file mode 100755 index d23f992ad..000000000 Binary files a/packages/webview_flutter/tizen/lib/liblightweight-web-engine.so and /dev/null differ diff --git a/packages/webview_flutter/tizen/project_def.prop b/packages/webview_flutter/tizen/project_def.prop index 60838aab7..2384067c9 100644 --- a/packages/webview_flutter/tizen/project_def.prop +++ b/packages/webview_flutter/tizen/project_def.prop @@ -16,12 +16,12 @@ USER_CPP_UNDEFS = # Compiler/linker flags USER_CFLAGS_MISC = -USER_CPPFLAGS_MISC = -c -fmessage-length=0 -USER_LFLAGS = -llightweight-web-engine +USER_CPPFLAGS_MISC = -c -fmessage-length=0 +USER_LFLAGS = -llightweight-web-engine.mobile -Wl,-rpath=/opt/usr/globalapps/org.tizen.webview_flutter_tizen_example/lib/arm # Libraries and objects USER_LIB_DIRS = lib -USER_LIBS = lightweight-web-engine +USER_LIBS = lightweight-web-engine.mobile USER_OBJS = # User includes diff --git a/packages/webview_flutter/tizen/src/webview.cc b/packages/webview_flutter/tizen/src/webview.cc index 1e17f611d..645d6d4e9 100644 --- a/packages/webview_flutter/tizen/src/webview.cc +++ b/packages/webview_flutter/tizen/src/webview.cc @@ -21,6 +21,16 @@ #include #include + +#define LWE_EXPORT +extern "C" size_t LWE_EXPORT createWebViewInstance( + unsigned x, unsigned y, unsigned width, unsigned height, + float devicePixelRatio, const char* defaultFontName, const char* locale, + const char* timezoneID, + const std::function<::LWE::WebContainer::ExternalImageInfo(void)>& + prepareImageCb, + const std::function& renderedCb); + std::string ExtractStringFromMap(const flutter::EncodableValue& arguments, const char* key) { if (std::holds_alternative(arguments)) { @@ -438,23 +448,16 @@ void WebView::InitWebView() { } float scaleFactor = 1; - LWE::WebView* webview = LWE::WebView::Create(nullptr,0,0,width_, height_,scaleFactor, "SamsungOneUI", "ko-KR", "Asia/Seoul"); - webViewInstance_ = webview->FetchWebContainer(); - webViewInstance_->RegisterPreRenderingHandler( - [this]() -> LWE::WebContainer::RenderInfo { - LWE::WebContainer::RenderInfo result; + 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; if (tbm_surface_map(tbmSurface_, TBM_SURF_OPTION_WRITE, &tbmSurfaceInfo) == TBM_SURFACE_ERROR_NONE) { - result.updatedBufferAddress = (void*)tbmSurface_; - result.bufferStride = 0; + result.imageAddress = (void*)tbmSurface_; } return result; - }); - - webViewInstance_->RegisterOnRenderedHandler( - [this](LWE::WebContainer* c, LWE::WebContainer::RenderResult r) { + }, [this](LWE::WebContainer* c) { FlutterMarkExternalTextureFrameAvailable(textureRegistrar_, GetTextureId(), tbmSurface_); tbm_surface_destroy(tbmSurface_);