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=5aeeabfb2e81410ac95eb3f5ffc19492012f8349;hb=2f810b8a969d39e569b39107a02dfaf35c0c48bc;hpb=b6e5096fe564c1fb6c56383b1e878eb51358ae41 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 5aeeabf..632baaf 100755 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -95,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(), @@ -145,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(); } } @@ -153,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; } @@ -162,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; } @@ -171,11 +184,24 @@ 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(); @@ -214,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);