X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fweb-view%2Fweb-view-impl.cpp;h=632baafe1f490ef77798d7253542fa50a76a2cda;hp=e3f24067f46ba0b9e3315fd0e64318c130c017f2;hb=2f810b8a969d39e569b39107a02dfaf35c0c48bc;hpb=5538e6464abd7f224dcde5de9aeeee6d94177b29 diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp index e3f2406..632baaf 100755 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,19 +19,19 @@ #include "web-view-impl.h" // EXTERNAL INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -44,8 +44,6 @@ // INTERNAL INCLUDES #include #include -#include -#include #include #include #include @@ -97,6 +95,8 @@ DALI_TYPE_REGISTRATION_END() #define GET_ENUM_VALUE(structName, inputExp, outputExp) \ Scripting::GetEnumerationProperty(inputExp, structName##_TABLE, structName##_TABLE_COUNT, outputExp) +std::unordered_map> WebView::mPluginWebViewMap; + WebView::WebView(const std::string& locale, const std::string& timezoneId) : Control(ControlBehaviour(ACTOR_BEHAVIOUR_DEFAULT | DISABLE_STYLE_CHANGE_SIGNALS)), mVisual(), @@ -147,6 +147,11 @@ WebView::~WebView() if(mWebEngine) { mWebEngine.FrameRenderedSignal().Disconnect(this, &WebView::OnFrameRendered); + auto iter = mPluginWebViewMap.find(mWebEngine.GetPlugin()); + if (iter != mPluginWebViewMap.end()) + { + mPluginWebViewMap.erase(iter); + } mWebEngine.Destroy(); } } @@ -155,7 +160,10 @@ Toolkit::WebView WebView::New() { WebView* impl = new WebView(); Toolkit::WebView handle = Toolkit::WebView(*impl); - + if (impl->GetPlugin()) + { + mPluginWebViewMap[impl->GetPlugin()] = handle; + } impl->Initialize(); return handle; } @@ -164,7 +172,10 @@ Toolkit::WebView WebView::New(const std::string& locale, const std::string& time { WebView* impl = new WebView(locale, timezoneId); Toolkit::WebView handle = Toolkit::WebView(*impl); - + if (impl->GetPlugin()) + { + mPluginWebViewMap[impl->GetPlugin()] = handle; + } impl->Initialize(); return handle; } @@ -173,11 +184,34 @@ Toolkit::WebView WebView::New(uint32_t argc, char** argv) { WebView* impl = new WebView(argc, argv); Toolkit::WebView handle = Toolkit::WebView(*impl); - + if (impl->GetPlugin()) + { + mPluginWebViewMap[impl->GetPlugin()] = handle; + } impl->Initialize(); return handle; } +Toolkit::WebView WebView::FindWebView(Dali::WebEnginePlugin* plugin) +{ + auto iter = mPluginWebViewMap.find(plugin); + if (iter != mPluginWebViewMap.end()) + { + return iter->second.GetHandle(); + } + return Toolkit::WebView(); +} + +Dali::WebEngineContext* WebView::GetContext() +{ + return Dali::WebEngine::GetContext(); +} + +Dali::WebEngineCookieManager* WebView::GetCookieManager() +{ + return Dali::WebEngine::GetCookieManager(); +} + void WebView::OnInitialize() { Actor self = Self(); @@ -199,8 +233,6 @@ void WebView::OnInitialize() if(mWebEngine) { mWebEngine.FrameRenderedSignal().Connect(this, &WebView::OnFrameRendered); - mWebContext = std::unique_ptr(new WebContext(mWebEngine.GetContext())); - mWebCookieManager = std::unique_ptr(new WebCookieManager(mWebEngine.GetCookieManager())); mWebSettings = std::unique_ptr(new WebSettings(mWebEngine.GetSettings())); mWebBackForwardList = std::unique_ptr(new WebBackForwardList(mWebEngine.GetBackForwardList())); } @@ -208,6 +240,11 @@ void WebView::OnInitialize() self.SetProperty(DevelControl::Property::ACCESSIBILITY_ROLE, Dali::Accessibility::Role::FILLER); } +Dali::WebEnginePlugin* WebView::GetPlugin() const +{ + return mWebEngine ? mWebEngine.GetPlugin() : nullptr; +} + DevelControl::ControlAccessible* WebView::CreateAccessibleObject() { return new WebViewAccessible(Self(), mWebEngine); @@ -218,16 +255,6 @@ Dali::Toolkit::WebSettings* WebView::GetSettings() const return mWebSettings.get(); } -Dali::Toolkit::WebContext* WebView::GetContext() const -{ - return mWebContext.get(); -} - -Dali::Toolkit::WebCookieManager* WebView::GetCookieManager() const -{ - return mWebCookieManager.get(); -} - Dali::Toolkit::WebBackForwardList* WebView::GetBackForwardList() const { return mWebBackForwardList.get(); @@ -1293,8 +1320,13 @@ void WebView::WebViewAccessible::OnAccessibilityDisabled() void WebView::WebViewAccessible::SetRemoteChildAddress(Dali::Accessibility::Address address) { - mRemoteChild.SetAddress(std::move(address)); + mRemoteChild.SetAddress(address); OnChildrenChanged(); + + if(address) + { + Accessibility::Bridge::GetCurrentBridge()->EmbedAtkSocket(GetAddress(), address); + } } #undef GET_ENUM_STRING