From fbf9c1f4ddb7e9e76a47713503d82bec13439007 Mon Sep 17 00:00:00 2001 From: Wonsik Jung Date: Tue, 15 Nov 2022 13:29:44 +0900 Subject: [PATCH] Revert "[Tizen][Web] Check WebEngineManager available + Ignore duplicate destroy" This reverts commit 7bd905e1ffb976db9d7b2794926ab44dd1d58417. --- .../tizen-web-engine-chromium.cpp | 306 ++++++++++++--------- .../tizen-web-engine-manager.cpp | 41 +-- .../web-engine-chromium/tizen-web-engine-manager.h | 6 +- 3 files changed, 177 insertions(+), 176 deletions(-) mode change 100644 => 100755 dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp mode change 100644 => 100755 dali-extension/web-engine-chromium/tizen-web-engine-manager.cpp mode change 100644 => 100755 dali-extension/web-engine-chromium/tizen-web-engine-manager.h diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp old mode 100644 new mode 100755 index 0702a23..849091c --- a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp +++ b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp @@ -20,8 +20,8 @@ #include "tizen-web-engine-back-forward-list.h" #include "tizen-web-engine-certificate.h" #include "tizen-web-engine-console-message.h" -#include "tizen-web-engine-context-menu-item.h" #include "tizen-web-engine-context-menu.h" +#include "tizen-web-engine-context-menu-item.h" #include "tizen-web-engine-form-repost-decision.h" #include "tizen-web-engine-hit-test.h" #include "tizen-web-engine-http-auth-handler.h" @@ -48,42 +48,44 @@ namespace Dali { namespace Plugin { + namespace { -template + +template void ExecuteCallback(Callback callback, Args... args) { - if(callback) + if (callback) { callback(args...); } } -template +template void ExecuteCallback(Callback callback, std::unique_ptr arg) { - if(callback) + if (callback) { callback(std::move(arg)); } } -template +template Ret ExecuteCallbackReturn(Callback callback, Args... args) { Ret returnVal = Ret(); - if(callback) + if (callback) { returnVal = callback(args...); } return returnVal; } -template +template Ret ExecuteCallbackReturn(Callback callback, std::unique_ptr arg) { Ret returnVal = Ret(); - if(callback) + if (callback) { returnVal = callback(std::move(arg)); } @@ -98,7 +100,7 @@ public: explicit TBMSurfaceSourceInitializer(NativeImageSourcePtr& imageSrc, uint32_t width, uint32_t height) { mSurface = tbm_surface_create(width, height, TBM_FORMAT_ARGB8888); - if(!mSurface) + if (!mSurface) { DALI_LOG_ERROR("Failed to create tbm surface."); } @@ -111,9 +113,9 @@ public: ~TBMSurfaceSourceInitializer() { - if(mSurface) + if (mSurface) { - if(tbm_surface_destroy(mSurface) != TBM_SURFACE_ERROR_NONE) + if (tbm_surface_destroy(mSurface) != TBM_SURFACE_ERROR_NONE) { DALI_LOG_ERROR("Failed to destroy tbm surface."); } @@ -125,10 +127,10 @@ private: }; TizenWebEngineChromium::TizenWebEngineChromium() -: mWebView(nullptr), - mWidth(0), - mHeight(0), - mJavaScriptEvaluationCount(0) + : mWebView(nullptr) + , mWidth(0) + , mHeight(0) + , mJavaScriptEvaluationCount(0) { } @@ -139,7 +141,7 @@ TizenWebEngineChromium::~TizenWebEngineChromium() void TizenWebEngineChromium::Create(uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneID) { - mWidth = width; + mWidth = width; mHeight = height; InitWebView(0, nullptr); WebEngineManager::Get().Add(mWebView, this); @@ -148,7 +150,7 @@ void TizenWebEngineChromium::Create(uint32_t width, uint32_t height, const std:: void TizenWebEngineChromium::Create(uint32_t width, uint32_t height, uint32_t argc, char** argv) { - mWidth = width; + mWidth = width; mHeight = height; InitWebView(argc, argv); WebEngineManager::Get().Add(mWebView, this); @@ -160,15 +162,8 @@ void TizenWebEngineChromium::Destroy() mJavaScriptEvaluationResultHandlers.clear(); mJavaScriptMessageHandlers.clear(); - if(mWebView) - { - if(WebEngineManager::IsAvailable()) - { - WebEngineManager::Get().Remove(mWebView); - } - evas_object_del(mWebView); - mWebView = nullptr; - } + WebEngineManager::Get().Remove(mWebView); + evas_object_del(mWebView); } void TizenWebEngineChromium::LoadUrl(const std::string& path) @@ -185,7 +180,7 @@ std::string TizenWebEngineChromium::GetTitle() const Dali::PixelData TizenWebEngineChromium::GetFavicon() const { Evas_Object* iconObject = ewk_view_favicon_get(mWebView); - if(!iconObject) + if (!iconObject) { return Dali::PixelData(); } @@ -210,16 +205,17 @@ void TizenWebEngineChromium::LoadHtmlString(const std::string& html) bool TizenWebEngineChromium::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl) { - char* cBasicUri = basicUri.length() ? (char*)basicUri.c_str() : nullptr; - char* cUnreachableUrl = unreachableUrl.length() ? (char*)unreachableUrl.c_str() : nullptr; + char* cBasicUri = basicUri.length() ? (char *)basicUri.c_str() : nullptr; + char* cUnreachableUrl = unreachableUrl.length() ? (char *)unreachableUrl.c_str() : nullptr; return ewk_view_html_string_override_current_entry_load(mWebView, html.c_str(), cBasicUri, cUnreachableUrl); } -bool TizenWebEngineChromium::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri) +bool TizenWebEngineChromium::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, + const std::string& encoding, const std::string& baseUri) { - char* cMimeType = mimeType.length() ? (char*)mimeType.c_str() : nullptr; - char* cEncoding = encoding.length() ? (char*)encoding.c_str() : nullptr; - char* cBaseUri = baseUri.length() ? (char*)baseUri.c_str() : nullptr; + char* cMimeType = mimeType.length() ? (char *)mimeType.c_str() : nullptr; + char* cEncoding = encoding.length() ? (char *)encoding.c_str() : nullptr; + char* cBaseUri = baseUri.length() ? (char *)baseUri.c_str() : nullptr; return ewk_view_contents_set(mWebView, contents.c_str(), contentSize, cMimeType, cEncoding, cBaseUri); } @@ -342,13 +338,13 @@ void TizenWebEngineChromium::EvaluateJavaScript(const std::string& script, JavaS { mJavaScriptEvaluationResultHandlers.emplace(mJavaScriptEvaluationCount, resultHandler); } - catch(std::bad_alloc& e) + catch (std::bad_alloc& e) { badAlloc = true; DALI_LOG_ERROR("Too many ongoing JavaScript evaluations."); } - if(!badAlloc) + if (!badAlloc) { ewk_view_script_execute(mWebView, script.c_str(), &TizenWebEngineChromium::OnEvaluateJavaScript, (void*)mJavaScriptEvaluationCount); mJavaScriptEvaluationCount++; @@ -357,7 +353,7 @@ void TizenWebEngineChromium::EvaluateJavaScript(const std::string& script, JavaS void TizenWebEngineChromium::AddJavaScriptMessageHandler(const std::string& exposedObjectName, JavaScriptMessageHandlerCallback handler) { - if(mJavaScriptMessageHandlers.emplace(exposedObjectName, handler).second) + if (mJavaScriptMessageHandlers.emplace(exposedObjectName, handler).second) { ewk_view_javascript_message_handler_add(mWebView, &TizenWebEngineChromium::OnJavaScriptMessage, exposedObjectName.c_str()); } @@ -436,8 +432,8 @@ Dali::WebEngineBackForwardList& TizenWebEngineChromium::GetBackForwardList() con std::unique_ptr TizenWebEngineChromium::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode) { // sync... - Evas* evas = ecore_evas_get(WebEngineManager::Get().GetWindow()); - Ewk_Hit_Test* hitTest = ewk_view_hit_test_new(mWebView, x, y, (int)mode); + Evas* evas = ecore_evas_get(WebEngineManager::Get().GetWindow()); + Ewk_Hit_Test* hitTest = ewk_view_hit_test_new(mWebView, x, y, (int)mode); std::unique_ptr webHitTest(new TizenWebEngineHitTest(hitTest, evas, true)); return webHitTest; } @@ -445,13 +441,13 @@ std::unique_ptr TizenWebEngineChromium::CreateHitTest(in bool TizenWebEngineChromium::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, WebEngineHitTestCreatedCallback callback) { mHitTestCreatedCallback = callback; - bool result = ewk_view_hit_test_request(mWebView, x, y, (int)mode, &TizenWebEngineChromium::OnHitTestCreated, this); + bool result = ewk_view_hit_test_request(mWebView, x, y, (int)mode, &TizenWebEngineChromium::OnHitTestCreated, this); return result; } void TizenWebEngineChromium::SetSize(uint32_t width, uint32_t height) { - mWidth = width; + mWidth = width; mHeight = height; evas_object_resize(mWebView, mWidth, mHeight); } @@ -494,22 +490,22 @@ bool TizenWebEngineChromium::SendTouchEvent(const Dali::TouchEvent& touch) bool TizenWebEngineChromium::SendKeyEvent(const Dali::KeyEvent& keyEvent) { void* evasKeyEvent = 0; - if(keyEvent.GetState() == Dali::KeyEvent::DOWN) + if (keyEvent.GetState() == Dali::KeyEvent::DOWN) { Evas_Event_Key_Down downEvent; memset(&downEvent, 0, sizeof(Evas_Event_Key_Down)); - downEvent.key = keyEvent.GetKeyName().c_str(); + downEvent.key = keyEvent.GetKeyName().c_str(); downEvent.string = keyEvent.GetKeyString().c_str(); - evasKeyEvent = static_cast(&downEvent); + evasKeyEvent = static_cast(&downEvent); ewk_view_send_key_event(mWebView, evasKeyEvent, true); } else { Evas_Event_Key_Up upEvent; memset(&upEvent, 0, sizeof(Evas_Event_Key_Up)); - upEvent.key = keyEvent.GetKeyName().c_str(); + upEvent.key = keyEvent.GetKeyName().c_str(); upEvent.string = keyEvent.GetKeyString().c_str(); - evasKeyEvent = static_cast(&upEvent); + evasKeyEvent = static_cast(&upEvent); ewk_view_send_key_event(mWebView, evasKeyEvent, false); } return false; @@ -523,9 +519,9 @@ bool TizenWebEngineChromium::SendHoverEvent(const Dali::HoverEvent& event) bool TizenWebEngineChromium::SendWheelEvent(const Dali::WheelEvent& wheel) { Eina_Bool direction = wheel.GetDirection() ? false : true; - int step = wheel.GetDelta(); - float x = wheel.GetPoint().x; - float y = wheel.GetPoint().y; + int step = wheel.GetDelta(); + float x = wheel.GetPoint().x; + float y = wheel.GetPoint().y; ewk_view_feed_mouse_wheel(mWebView, direction, step, x, y); return false; } @@ -593,14 +589,14 @@ Accessibility::Address TizenWebEngineChromium::GetAccessibilityAddress() std::string_view plugId; - if(auto* data = static_cast(evas_object_data_get(mWebView, plugIdKey))) + if (auto* data = static_cast(evas_object_data_get(mWebView, plugIdKey))) { plugId = {data}; } // We expect plugId to be of the form ":1.23:/org/a11y/atspi/accessible/root" auto pos = plugId.rfind(':'); - if(pos == std::string_view::npos || pos == 0) + if (pos == std::string_view::npos || pos == 0) { DALI_LOG_ERROR("Cannot parse PlugID set by Chromium: %s = \"%s\"", plugIdKey, plugId.data()); return {}; @@ -628,9 +624,9 @@ Dali::PixelData TizenWebEngineChromium::GetScreenshot(Dali::Rect viewAr { Eina_Rectangle rect; EINA_RECTANGLE_SET(&rect, viewArea.x, viewArea.y, viewArea.width, viewArea.height); - Evas* evas = ecore_evas_get(WebEngineManager::Get().GetWindow()); - Evas_Object* snapShotObject = ewk_view_screenshot_contents_get(mWebView, rect, scaleFactor, evas); - if(!snapShotObject) + Evas *evas = ecore_evas_get(WebEngineManager::Get().GetWindow()); + Evas_Object *snapShotObject = ewk_view_screenshot_contents_get(mWebView, rect, scaleFactor, evas); + if (!snapShotObject) { return Dali::PixelData(); } @@ -641,7 +637,7 @@ bool TizenWebEngineChromium::GetScreenshotAsynchronously(Dali::Rect vie { Eina_Rectangle rect; EINA_RECTANGLE_SET(&rect, viewArea.x, viewArea.y, viewArea.width, viewArea.height); - Evas* evas = ecore_evas_get(WebEngineManager::Get().GetWindow()); + Evas *evas = ecore_evas_get(WebEngineManager::Get().GetWindow()); return ewk_view_screenshot_contents_get_async(mWebView, rect, scaleFactor, evas, &TizenWebEngineChromium::OnScreenshotCaptured, this); } @@ -757,12 +753,12 @@ void TizenWebEngineChromium::RegisterContextMenuHiddenCallback(WebEngineContextM void TizenWebEngineChromium::RunJavaScriptEvaluationResultHandler(size_t key, const char* result) { auto handler = mJavaScriptEvaluationResultHandlers.find(key); - if(handler == mJavaScriptEvaluationResultHandlers.end()) + if (handler == mJavaScriptEvaluationResultHandlers.end()) { return; } - if(handler->second) + if (handler->second) { std::string stored(result); handler->second(stored); @@ -774,7 +770,7 @@ void TizenWebEngineChromium::RunJavaScriptEvaluationResultHandler(size_t key, co void TizenWebEngineChromium::RunJavaScriptMessageHandler(const std::string& objectName, const std::string& message) { auto handler = mJavaScriptMessageHandlers.find(objectName); - if(handler == mJavaScriptMessageHandlers.end()) + if (handler == mJavaScriptMessageHandlers.end()) { return; } @@ -825,13 +821,13 @@ void TizenWebEngineChromium::PlainTextRecieved(const std::string& plainText) void TizenWebEngineChromium::InitWebView(uint32_t argc, char** argv) { - if(argc > 0) + if (argc > 0) { ewk_set_arguments(argc, argv); } - Ecore_Wl2_Window* win = AnyCast(Adaptor::Get().GetNativeWindowHandle()); - Ewk_Context* context = ewk_context_default_get(); + Ecore_Wl2_Window* win = AnyCast(Adaptor::Get().GetNativeWindowHandle()); + Ewk_Context* context = ewk_context_default_get(); ewk_context_max_refresh_rate_set(context, 60); mWebView = ewk_view_add(ecore_evas_get(WebEngineManager::Get().GetWindow())); ewk_view_offscreen_rendering_enabled_set(mWebView, true); @@ -845,24 +841,60 @@ void TizenWebEngineChromium::InitWebView(uint32_t argc, char** argv) ewk_settings_viewport_meta_tag_set(settings, false); - evas_object_smart_callback_add(mWebView, "offscreen,frame,rendered", &TizenWebEngineChromium::OnFrameRendered, this); - evas_object_smart_callback_add(mWebView, "load,started", &TizenWebEngineChromium::OnLoadStarted, this); - evas_object_smart_callback_add(mWebView, "load,progress", &TizenWebEngineChromium::OnLoadInProgress, this); - evas_object_smart_callback_add(mWebView, "load,finished", &TizenWebEngineChromium::OnLoadFinished, this); - evas_object_smart_callback_add(mWebView, "load,error", &TizenWebEngineChromium::OnLoadError, this); - evas_object_smart_callback_add(mWebView, "url,changed", &TizenWebEngineChromium::OnUrlChanged, this); - evas_object_smart_callback_add(mWebView, "console,message", &TizenWebEngineChromium::OnConsoleMessageReceived, this); - evas_object_smart_callback_add(mWebView, "edge,left", &TizenWebEngineChromium::OnEdgeLeft, this); - evas_object_smart_callback_add(mWebView, "edge,right", &TizenWebEngineChromium::OnEdgeRight, this); - evas_object_smart_callback_add(mWebView, "edge,top", &TizenWebEngineChromium::OnEdgeTop, this); - evas_object_smart_callback_add(mWebView, "edge,bottom", &TizenWebEngineChromium::OnEdgeBottom, this); - evas_object_smart_callback_add(mWebView, "form,repost,warning,show", &TizenWebEngineChromium::OnFormRepostDecided, this); - evas_object_smart_callback_add(mWebView, "policy,response,decide", &TizenWebEngineChromium::OnResponsePolicyDecided, this); - evas_object_smart_callback_add(mWebView, "policy,navigation,decide", &TizenWebEngineChromium::OnNavigationPolicyDecided, this); - evas_object_smart_callback_add(mWebView, "request,certificate,confirm", &TizenWebEngineChromium::OnCertificateConfirmed, this); - evas_object_smart_callback_add(mWebView, "ssl,certificate,changed", &TizenWebEngineChromium::OnSslCertificateChanged, this); - evas_object_smart_callback_add(mWebView, "contextmenu,show", &TizenWebEngineChromium::OnContextMenuShown, this); - evas_object_smart_callback_add(mWebView, "contextmenu,hide", &TizenWebEngineChromium::OnContextMenuHidden, this); + evas_object_smart_callback_add(mWebView, "offscreen,frame,rendered", + &TizenWebEngineChromium::OnFrameRendered, + this); + evas_object_smart_callback_add(mWebView, "load,started", + &TizenWebEngineChromium::OnLoadStarted, + this); + evas_object_smart_callback_add(mWebView, "load,progress", + &TizenWebEngineChromium::OnLoadInProgress, + this); + evas_object_smart_callback_add(mWebView, "load,finished", + &TizenWebEngineChromium::OnLoadFinished, + this); + evas_object_smart_callback_add(mWebView, "load,error", + &TizenWebEngineChromium::OnLoadError, + this); + evas_object_smart_callback_add(mWebView, "url,changed", + &TizenWebEngineChromium::OnUrlChanged, + this); + evas_object_smart_callback_add(mWebView, "console,message", + &TizenWebEngineChromium::OnConsoleMessageReceived, + this); + evas_object_smart_callback_add(mWebView, "edge,left", + &TizenWebEngineChromium::OnEdgeLeft, + this); + evas_object_smart_callback_add(mWebView, "edge,right", + &TizenWebEngineChromium::OnEdgeRight, + this); + evas_object_smart_callback_add(mWebView, "edge,top", + &TizenWebEngineChromium::OnEdgeTop, + this); + evas_object_smart_callback_add(mWebView, "edge,bottom", + &TizenWebEngineChromium::OnEdgeBottom, + this); + evas_object_smart_callback_add(mWebView, "form,repost,warning,show", + &TizenWebEngineChromium::OnFormRepostDecided, + this); + evas_object_smart_callback_add(mWebView, "policy,response,decide", + &TizenWebEngineChromium::OnResponsePolicyDecided, + this); + evas_object_smart_callback_add(mWebView, "policy,navigation,decide", + &TizenWebEngineChromium::OnNavigationPolicyDecided, + this); + evas_object_smart_callback_add(mWebView, "request,certificate,confirm", + &TizenWebEngineChromium::OnCertificateConfirmed, + this); + evas_object_smart_callback_add(mWebView, "ssl,certificate,changed", + &TizenWebEngineChromium::OnSslCertificateChanged, + this); + evas_object_smart_callback_add(mWebView, "contextmenu,show", + &TizenWebEngineChromium::OnContextMenuShown, + this); + evas_object_smart_callback_add(mWebView, "contextmenu,hide", + &TizenWebEngineChromium::OnContextMenuHidden, + this); ewk_view_authentication_callback_set(mWebView, &TizenWebEngineChromium::OnAuthenticationChallenged, this); @@ -873,7 +905,7 @@ void TizenWebEngineChromium::InitWebView(uint32_t argc, char** argv) bool TizenWebEngineChromium::FeedMouseEvent(const TouchEvent& touch) { Ewk_Mouse_Button_Type type = (Ewk_Mouse_Button_Type)0; - switch(touch.GetMouseButton(0)) + switch (touch.GetMouseButton(0)) { case MouseButton::PRIMARY: { @@ -896,7 +928,7 @@ bool TizenWebEngineChromium::FeedMouseEvent(const TouchEvent& touch) } } - switch(touch.GetState(0)) + switch (touch.GetState(0)) { case PointState::DOWN: { @@ -929,31 +961,31 @@ bool TizenWebEngineChromium::FeedMouseEvent(const TouchEvent& touch) bool TizenWebEngineChromium::FeedTouchEvent(const TouchEvent& touch) { - Ewk_Touch_Event_Type type = EWK_TOUCH_START; + Ewk_Touch_Event_Type type = EWK_TOUCH_START; Evas_Touch_Point_State state = EVAS_TOUCH_POINT_DOWN; - switch(touch.GetState(0)) + switch (touch.GetState(0)) { case PointState::DOWN: { - type = EWK_TOUCH_START; + type = EWK_TOUCH_START; state = EVAS_TOUCH_POINT_DOWN; break; } case PointState::UP: { - type = EWK_TOUCH_END; + type = EWK_TOUCH_END; state = EVAS_TOUCH_POINT_UP; break; } case PointState::MOTION: { - type = EWK_TOUCH_MOVE; + type = EWK_TOUCH_MOVE; state = EVAS_TOUCH_POINT_MOVE; break; } case PointState::INTERRUPTED: { - type = EWK_TOUCH_CANCEL; + type = EWK_TOUCH_CANCEL; state = EVAS_TOUCH_POINT_CANCEL; break; } @@ -963,13 +995,13 @@ bool TizenWebEngineChromium::FeedTouchEvent(const TouchEvent& touch) } } - Eina_List* pointList = 0; + Eina_List* pointList = 0; Ewk_Touch_Point point; - point.id = 0; - point.x = touch.GetScreenPosition(0).x; - point.y = touch.GetScreenPosition(0).y; + point.id = 0; + point.x = touch.GetScreenPosition(0).x; + point.y = touch.GetScreenPosition(0).y; point.state = state; - pointList = eina_list_append(pointList, &point); + pointList = eina_list_append(pointList, &point); bool fed = ewk_view_feed_touch_event(mWebView, type, pointList, 0); eina_list_free(pointList); @@ -980,7 +1012,7 @@ Dali::PixelData TizenWebEngineChromium::ConvertImageColorSpace(Evas_Object* imag { // color-space is argb8888. uint8_t* pixelBuffer = (uint8_t*)evas_object_image_data_get(image, false); - if(!pixelBuffer) + if (!pixelBuffer) { return Dali::PixelData(); } @@ -988,19 +1020,21 @@ Dali::PixelData TizenWebEngineChromium::ConvertImageColorSpace(Evas_Object* imag int width = 0, height = 0; evas_object_image_size_get(image, &width, &height); - uint32_t bufferSize = width * height * 4; + uint32_t bufferSize = width * height * 4; uint8_t* convertedBuffer = new uint8_t[bufferSize]; // convert the color-space to rgba8888. - for(uint32_t i = 0; i < bufferSize; i += 4) + for (uint32_t i = 0; i < bufferSize; i += 4) { - convertedBuffer[i] = pixelBuffer[i + 1]; + convertedBuffer[i] = pixelBuffer[i + 1]; convertedBuffer[i + 1] = pixelBuffer[i + 2]; convertedBuffer[i + 2] = pixelBuffer[i + 3]; convertedBuffer[i + 3] = pixelBuffer[i]; } - return Dali::PixelData::New(convertedBuffer, bufferSize, width, height, Dali::Pixel::Format::RGBA8888, Dali::PixelData::ReleaseFunction::DELETE_ARRAY); + return Dali::PixelData::New(convertedBuffer, bufferSize, width, height, + Dali::Pixel::Format::RGBA8888, + Dali::PixelData::ReleaseFunction::DELETE_ARRAY); } void TizenWebEngineChromium::OnFrameRendered(void* data, Evas_Object*, void* buffer) @@ -1029,23 +1063,23 @@ void TizenWebEngineChromium::OnLoadFinished(void* data, Evas_Object*, void*) void TizenWebEngineChromium::OnLoadError(void* data, Evas_Object*, void* rawError) { - auto pThis = static_cast(data); - Ewk_Error* error = static_cast(rawError); + auto pThis = static_cast(data); + Ewk_Error* error = static_cast(rawError); std::unique_ptr loadError(new TizenWebEngineLoadError(error)); pThis->LoadError(std::move(loadError)); } void TizenWebEngineChromium::OnUrlChanged(void* data, Evas_Object*, void* newUrl) { - auto pThis = static_cast(data); - std::string url = static_cast(newUrl); + auto pThis = static_cast(data); + std::string url = static_cast(newUrl); pThis->UrlChanged(url); } void TizenWebEngineChromium::OnConsoleMessageReceived(void* data, Evas_Object*, void* eventInfo) { - auto pThis = static_cast(data); - Ewk_Console_Message* message = static_cast(eventInfo); + auto pThis = static_cast(data); + Ewk_Console_Message* message = static_cast(eventInfo); std::unique_ptr webConsoleMessage(new TizenWebEngineConsoleMessage(message)); pThis->ConsoleMessageReceived(std::move(webConsoleMessage)); } @@ -1076,63 +1110,63 @@ void TizenWebEngineChromium::OnEdgeBottom(void* data, Evas_Object*, void*) void TizenWebEngineChromium::OnFormRepostDecided(void* data, Evas_Object*, void* eventInfo) { - auto pThis = static_cast(data); - Ewk_Form_Repost_Decision_Request* decisionRequest = static_cast(eventInfo); + auto pThis = static_cast(data); + Ewk_Form_Repost_Decision_Request* decisionRequest = static_cast(eventInfo); std::unique_ptr webDecisionRequest(new TizenWebEngineFormRepostDecision(decisionRequest)); pThis->RequestFormRepostDecided(std::move(webDecisionRequest)); } void TizenWebEngineChromium::OnResponsePolicyDecided(void* data, Evas_Object*, void* policy) { - auto pThis = static_cast(data); - Ewk_Policy_Decision* policyDecision = static_cast(policy); + auto pThis = static_cast(data); + Ewk_Policy_Decision* policyDecision = static_cast(policy); std::unique_ptr webPolicyDecision(new TizenWebEnginePolicyDecision(policyDecision)); pThis->ResponsePolicyDecided(std::move(webPolicyDecision)); } void TizenWebEngineChromium::OnNavigationPolicyDecided(void* data, Evas_Object*, void* policy) { - auto pThis = static_cast(data); - Ewk_Policy_Decision* policyDecision = static_cast(policy); + auto pThis = static_cast(data); + Ewk_Policy_Decision* policyDecision = static_cast(policy); std::unique_ptr webPolicyDecision(new TizenWebEnginePolicyDecision(policyDecision)); pThis->NavigationPolicyDecided(std::move(webPolicyDecision)); } void TizenWebEngineChromium::OnCertificateConfirmed(void* data, Evas_Object*, void* eventInfo) { - auto pThis = static_cast(data); - Ewk_Certificate_Policy_Decision* policyDecision = static_cast(eventInfo); + auto pThis = static_cast(data); + Ewk_Certificate_Policy_Decision* policyDecision = static_cast(eventInfo); std::unique_ptr webPolicyDecision(new TizenWebEngineCertificate(policyDecision)); pThis->CertificateConfirmed(std::move(webPolicyDecision)); } void TizenWebEngineChromium::OnSslCertificateChanged(void* data, Evas_Object*, void* eventInfo) { - auto pThis = static_cast(data); - Ewk_Certificate_Info* info = static_cast(eventInfo); + auto pThis = static_cast(data); + Ewk_Certificate_Info* info = static_cast(eventInfo); std::unique_ptr webCertiInfo(new TizenWebEngineCertificate(info)); pThis->SslCertificateChanged(std::move(webCertiInfo)); } void TizenWebEngineChromium::OnContextMenuShown(void* data, Evas_Object*, void* eventInfo) { - auto pThis = static_cast(data); - Ewk_Context_Menu* menu = (Ewk_Context_Menu*)eventInfo; + auto pThis = static_cast(data); + Ewk_Context_Menu* menu = (Ewk_Context_Menu*)eventInfo; std::unique_ptr contextMenu(new TizenWebEngineContextMenu(menu)); pThis->ContextMenuShown(std::move(contextMenu)); } void TizenWebEngineChromium::OnContextMenuHidden(void* data, Evas_Object*, void* eventInfo) { - auto pThis = static_cast(data); - Ewk_Context_Menu* menu = (Ewk_Context_Menu*)eventInfo; + auto pThis = static_cast(data); + Ewk_Context_Menu* menu = (Ewk_Context_Menu*)eventInfo; std::unique_ptr contextMenu(new TizenWebEngineContextMenu(menu)); pThis->ContextMenuHidden(std::move(contextMenu)); } void TizenWebEngineChromium::OnAuthenticationChallenged(Evas_Object*, Ewk_Auth_Challenge* authChallenge, void* data) { - auto pThis = static_cast(data); + auto pThis = static_cast(data); std::unique_ptr authHandler(new TizenWebEngineHttpAuthHandler(authChallenge)); pThis->AuthenticationChallenged(std::move(authHandler)); } @@ -1140,7 +1174,7 @@ void TizenWebEngineChromium::OnAuthenticationChallenged(Evas_Object*, Ewk_Auth_C void TizenWebEngineChromium::OnEvaluateJavaScript(Evas_Object* o, const char* result, void* data) { auto plugin = WebEngineManager::Get().Find(o); - if(plugin) + if (plugin) { auto pThis = static_cast(plugin); pThis->RunJavaScriptEvaluationResultHandler((size_t)data, result); @@ -1150,7 +1184,7 @@ void TizenWebEngineChromium::OnEvaluateJavaScript(Evas_Object* o, const char* re void TizenWebEngineChromium::OnJavaScriptMessage(Evas_Object* o, Ewk_Script_Message message) { auto plugin = WebEngineManager::Get().Find(o); - if(plugin) + if (plugin) { auto pThis = static_cast(plugin); pThis->RunJavaScriptMessageHandler(message.name, static_cast(message.body)); @@ -1160,8 +1194,8 @@ void TizenWebEngineChromium::OnJavaScriptMessage(Evas_Object* o, Ewk_Script_Mess Eina_Bool TizenWebEngineChromium::OnJavaScriptAlert(Evas_Object* o, const char* alert_text, void* data) { bool result = false; - auto pThis = static_cast(data); - if(pThis) + auto pThis = static_cast(data); + if (pThis) { result = pThis->JavaScriptAlert(const_cast(alert_text)); } @@ -1171,8 +1205,8 @@ Eina_Bool TizenWebEngineChromium::OnJavaScriptAlert(Evas_Object* o, const char* Eina_Bool TizenWebEngineChromium::OnJavaScriptConfirm(Evas_Object* o, const char* message, void* data) { bool result = false; - auto pThis = static_cast(data); - if(pThis) + auto pThis = static_cast(data); + if (pThis) { result = pThis->JavaScriptConfirm(const_cast(message)); } @@ -1182,8 +1216,8 @@ Eina_Bool TizenWebEngineChromium::OnJavaScriptConfirm(Evas_Object* o, const char Eina_Bool TizenWebEngineChromium::OnJavaScriptPrompt(Evas_Object* o, const char* message, const char* default_value, void* data) { bool result = false; - auto pThis = static_cast(data); - if(pThis) + auto pThis = static_cast(data); + if (pThis) { result = pThis->JavaScriptPrompt(const_cast(message), const_cast(default_value)); } @@ -1192,15 +1226,15 @@ Eina_Bool TizenWebEngineChromium::OnJavaScriptPrompt(Evas_Object* o, const char* void TizenWebEngineChromium::OnHitTestCreated(Evas_Object*, int x, int y, int hitTestMode, Ewk_Hit_Test* hitTest, void* data) { - auto pThis = static_cast(data); - Evas* evas = ecore_evas_get(WebEngineManager::Get().GetWindow()); + auto pThis = static_cast(data); + Evas* evas = ecore_evas_get(WebEngineManager::Get().GetWindow()); std::unique_ptr webHitTest(new TizenWebEngineHitTest(hitTest, evas, false)); pThis->HitTestCreated(std::move(webHitTest)); } void TizenWebEngineChromium::OnScreenshotCaptured(Evas_Object* image, void* data) { - auto pThis = static_cast(data); + auto pThis = static_cast(data); Dali::PixelData pixelData = ConvertImageColorSpace(image); pThis->ScreenshotCaptured(pixelData); } @@ -1213,10 +1247,10 @@ void TizenWebEngineChromium::OnVideoPlaying(Evas_Object*, Eina_Bool isPlaying, v void TizenWebEngineChromium::OnPlainTextReceived(Evas_Object* o, const char* plainText, void* data) { - auto pThis = static_cast(data); + auto pThis = static_cast(data); std::string resultText; - if(plainText != nullptr) + if (plainText != nullptr) { resultText = std::string(plainText); } @@ -1226,16 +1260,16 @@ void TizenWebEngineChromium::OnPlainTextReceived(Evas_Object* o, const char* pla Eina_Bool TizenWebEngineChromium::OnGeolocationPermission(Evas_Object*, Ewk_Geolocation_Permission_Request* request, void* data) { - auto pThis = static_cast(data); + auto pThis = static_cast(data); const Ewk_Security_Origin* securityOrigin = ewk_geolocation_permission_request_origin_get(request); - std::string host = ewk_security_origin_host_get(securityOrigin); - std::string protocol = ewk_security_origin_protocol_get(securityOrigin); + std::string host = ewk_security_origin_host_get(securityOrigin); + std::string protocol = ewk_security_origin_protocol_get(securityOrigin); return pThis->GeolocationPermission(host, protocol); } void TizenWebEngineChromium::UpdateImage(tbm_surface_h buffer) { - if(!buffer) + if (!buffer) { return; } @@ -1345,7 +1379,7 @@ extern "C" DALI_EXPORT_API Dali::WebEnginePlugin* CreateWebEnginePlugin() extern "C" DALI_EXPORT_API void DestroyWebEnginePlugin(Dali::WebEnginePlugin* plugin) { - if(plugin) + if (plugin) { delete plugin; } diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-manager.cpp b/dali-extension/web-engine-chromium/tizen-web-engine-manager.cpp old mode 100644 new mode 100755 index 2123af4..5d4a9f8 --- a/dali-extension/web-engine-chromium/tizen-web-engine-manager.cpp +++ b/dali-extension/web-engine-chromium/tizen-web-engine-manager.cpp @@ -33,20 +33,15 @@ namespace Dali { namespace Plugin { + WebEngineManager& WebEngineManager::Get() { static WebEngineManager instance; return instance; } -bool WebEngineManager::IsAvailable() -{ - return Get().mWebEngineManagerAvailable; -} - WebEngineManager::WebEngineManager() -: mSlotDelegate(this), - mWebEngineManagerAvailable(true) + : mSlotDelegate(this) { elm_init(0, 0); ewk_init(); @@ -60,15 +55,6 @@ WebEngineManager::WebEngineManager() Dali::LifecycleController::Get().TerminateSignal().Connect(mSlotDelegate, &WebEngineManager::OnTerminated); } -WebEngineManager::~WebEngineManager() -{ - if(mWebEngineManagerAvailable) - { - // Call OnTerminated directly. - OnTerminated(); - } -} - Ecore_Evas* WebEngineManager::GetWindow() { return mWindow; @@ -92,7 +78,7 @@ void WebEngineManager::Add(Evas_Object* webView, Dali::WebEnginePlugin* engine) void WebEngineManager::Remove(Evas_Object* webView) { auto iter = mWebEngines.find(webView); - if(iter != mWebEngines.end()) + if (iter != mWebEngines.end()) { mWebEngines.erase(iter); } @@ -101,7 +87,7 @@ void WebEngineManager::Remove(Evas_Object* webView) Dali::WebEnginePlugin* WebEngineManager::Find(Evas_Object* webView) { auto iter = mWebEngines.find(webView); - if(iter != mWebEngines.end()) + if (iter != mWebEngines.end()) { return iter->second; } @@ -113,27 +99,12 @@ Dali::WebEnginePlugin* WebEngineManager::Find(Evas_Object* webView) void WebEngineManager::OnTerminated() { - // App is terminated. Now web engine is not available anymore. - mWebEngineManagerAvailable = false; - - Dali::LifecycleController::Get().TerminateSignal().Disconnect(mSlotDelegate, &WebEngineManager::OnTerminated); - - for(auto it = mWebEngines.begin(); it != mWebEngines.end(); it++) + for (auto it = mWebEngines.begin(); it != mWebEngines.end(); it++) { - // Destroy WebEngine - auto webEnginePlugin = it->second; - if(webEnginePlugin) - { - webEnginePlugin->Destroy(); - } + evas_object_del(it->first); } mWebEngines.clear(); ecore_evas_free(mWindow); - - // Release context and cookie manager before ewk_shutdown. - mWebEngineContext.reset(); - mWebEngineCookieManager.reset(); - ewk_shutdown(); elm_shutdown(); DALI_LOG_RELEASE_INFO("#WebEngineManager is destroyed fully.\n"); diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-manager.h b/dali-extension/web-engine-chromium/tizen-web-engine-manager.h old mode 100644 new mode 100755 index b6a9362..97dd009 --- a/dali-extension/web-engine-chromium/tizen-web-engine-manager.h +++ b/dali-extension/web-engine-chromium/tizen-web-engine-manager.h @@ -32,6 +32,7 @@ namespace Dali { namespace Plugin { + /** * @brief A class for managing multiple web views */ @@ -40,8 +41,6 @@ class WebEngineManager public: static WebEngineManager& Get(); - static bool IsAvailable(); - WebEngineManager(WebEngineManager const&) = delete; void operator=(WebEngineManager const&) = delete; @@ -61,8 +60,6 @@ public: private: WebEngineManager(); - ~WebEngineManager(); - void OnTerminated(); SlotDelegate mSlotDelegate; @@ -70,7 +67,6 @@ private: std::unique_ptr mWebEngineCookieManager; Ecore_Evas* mWindow; std::map mWebEngines; - bool mWebEngineManagerAvailable; }; } // namespace Plugin -- 2.7.4