// clang-format off
DALI_TYPE_REGISTRATION_BEGIN(Toolkit::WebView, Toolkit::Control, Create)
-DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "url", STRING, URL )
-DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "userAgent", STRING, USER_AGENT )
-DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "scrollPosition", VECTOR2, SCROLL_POSITION )
-DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "scrollSize", VECTOR2, SCROLL_SIZE )
-DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "contentSize", VECTOR2, CONTENT_SIZE )
-DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "title", STRING, TITLE )
-DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "videoHoleEnabled", BOOLEAN, VIDEO_HOLE_ENABLED)
-
-DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadStarted", PAGE_LOAD_STARTED_SIGNAL )
-DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadFinished", PAGE_LOAD_FINISHED_SIGNAL )
-DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadError", PAGE_LOAD_ERROR_SIGNAL )
-DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "scrollEdgeReached", SCROLL_EDGE_REACHED_SIGNAL)
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "url", STRING, URL )
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "userAgent", STRING, USER_AGENT )
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "scrollPosition", VECTOR2, SCROLL_POSITION )
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "scrollSize", VECTOR2, SCROLL_SIZE )
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "contentSize", VECTOR2, CONTENT_SIZE )
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "title", STRING, TITLE )
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "videoHoleEnabled", BOOLEAN, VIDEO_HOLE_ENABLED )
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "mouseEventsEnabled", BOOLEAN, MOUSE_EVENTS_ENABLED)
+DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "keyEventsEnabled", BOOLEAN, KEY_EVENTS_ENABLED )
+
+DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadStarted", PAGE_LOAD_STARTED_SIGNAL )
+DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadInProgress", PAGE_LOAD_IN_PROGRESS_SIGNAL)
+DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadFinished", PAGE_LOAD_FINISHED_SIGNAL )
+DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadError", PAGE_LOAD_ERROR_SIGNAL )
+DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "scrollEdgeReached", SCROLL_EDGE_REACHED_SIGNAL )
+DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "urlChanged", URL_CHANGED_SIGNAL )
DALI_TYPE_REGISTRATION_END()
// clang-format on
mPageLoadFinishedSignal(),
mPageLoadErrorSignal(),
mVideoHoleEnabled(true),
- mWebViewArea(0, 0, mWebViewSize.width, mWebViewSize.height)
+ mWebViewArea(0, 0, mWebViewSize.width, mWebViewSize.height),
+ mUrlChangedSignal(),
+ mMouseEventsEnabled(true),
+ mKeyEventsEnabled(true)
{
mWebEngine = Dali::WebEngine::New();
mPageLoadFinishedSignal(),
mPageLoadErrorSignal(),
mVideoHoleEnabled(true),
- mWebViewArea(0, 0, mWebViewSize.width, mWebViewSize.height)
+ mWebViewArea(0, 0, mWebViewSize.width, mWebViewSize.height),
+ mUrlChangedSignal(),
+ mMouseEventsEnabled(true),
+ mKeyEventsEnabled(true)
{
mWebEngine = Dali::WebEngine::New();
self.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
self.TouchedSignal().Connect(this, &WebView::OnTouchEvent);
+ self.HoveredSignal().Connect(this, &WebView::OnHoverEvent);
+ self.WheelEventSignal().Connect(this, &WebView::OnWheelEvent);
mPositionUpdateNotification = self.AddPropertyNotification(Actor::Property::WORLD_POSITION, StepCondition(1.0f, 1.0f));
mSizeUpdateNotification = self.AddPropertyNotification(Actor::Property::SIZE, StepCondition(1.0f, 1.0f));
if(mWebEngine)
{
mWebEngine.PageLoadStartedSignal().Connect(this, &WebView::OnPageLoadStarted);
+ mWebEngine.PageLoadInProgressSignal().Connect(this, &WebView::OnPageLoadInProgress);
mWebEngine.PageLoadFinishedSignal().Connect(this, &WebView::OnPageLoadFinished);
mWebEngine.PageLoadErrorSignal().Connect(this, &WebView::OnPageLoadError);
mWebEngine.ScrollEdgeReachedSignal().Connect(this, &WebView::OnScrollEdgeReached);
+ mWebEngine.UrlChangedSignal().Connect(this, &WebView::OnUrlChanged);
mWebContext = std::unique_ptr<Dali::Toolkit::WebContext>(new WebContext(mWebEngine.GetContext()));
mWebCookieManager = std::unique_ptr<Dali::Toolkit::WebCookieManager>(new WebCookieManager(mWebEngine.GetCookieManager()));
}
}
-void WebView::ClearAllTilesResources()
+void WebView::RegisterJavaScriptAlertCallback(Dali::WebEnginePlugin::JavaScriptAlertCallback callback)
{
if(mWebEngine)
{
- mWebEngine.ClearAllTilesResources();
+ mWebEngine.RegisterJavaScriptAlertCallback(callback);
+ }
+}
+
+void WebView::JavaScriptAlertReply()
+{
+ if(mWebEngine)
+ {
+ mWebEngine.JavaScriptAlertReply();
+ }
+}
+
+void WebView::RegisterJavaScriptConfirmCallback(Dali::WebEnginePlugin::JavaScriptConfirmCallback callback)
+{
+ if(mWebEngine)
+ {
+ mWebEngine.RegisterJavaScriptConfirmCallback(callback);
+ }
+}
+
+void WebView::JavaScriptConfirmReply(bool confirmed)
+{
+ if(mWebEngine)
+ {
+ mWebEngine.JavaScriptConfirmReply(confirmed);
+ }
+}
+
+void WebView::RegisterJavaScriptPromptCallback(Dali::WebEnginePlugin::JavaScriptPromptCallback callback)
+{
+ if(mWebEngine)
+ {
+ mWebEngine.RegisterJavaScriptPromptCallback(callback);
+ }
+}
+
+void WebView::JavaScriptPromptReply(const std::string& result)
+{
+ if(mWebEngine)
+ {
+ mWebEngine.JavaScriptPromptReply(result);
}
}
}
}
+void WebView::ClearAllTilesResources()
+{
+ if(mWebEngine)
+ {
+ mWebEngine.ClearAllTilesResources();
+ }
+}
+
Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadStartedSignal()
{
return mPageLoadStartedSignal;
}
+Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadInProgressSignal()
+{
+ return mPageLoadInProgressSignal;
+}
+
Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadFinishedSignal()
{
return mPageLoadFinishedSignal;
return mScrollEdgeReachedSignal;
}
+Dali::Toolkit::WebView::WebViewUrlChangedSignalType& WebView::UrlChangedSignal()
+{
+ return mUrlChangedSignal;
+}
+
void WebView::OnPageLoadStarted(const std::string& url)
{
if(!mPageLoadStartedSignal.Empty())
}
}
+void WebView::OnPageLoadInProgress(const std::string& url)
+{
+ if(!mPageLoadInProgressSignal.Empty())
+ {
+ Dali::Toolkit::WebView handle(GetOwner());
+ mPageLoadInProgressSignal.Emit(handle, url);
+ }
+}
+
void WebView::OnPageLoadFinished(const std::string& url)
{
if(!mPageLoadFinishedSignal.Empty())
}
}
+void WebView::OnUrlChanged(const std::string& url)
+{
+ if(!mUrlChangedSignal.Empty())
+ {
+ Dali::Toolkit::WebView handle(GetOwner());
+ mUrlChangedSignal.Emit(handle, url);
+ }
+}
+
bool WebView::DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor)
{
Dali::BaseHandle handle(object);
webView.PageLoadStartedSignal().Connect(tracker, functor);
connected = true;
}
+ else if(0 == strcmp(signalName.c_str(), PAGE_LOAD_IN_PROGRESS_SIGNAL))
+ {
+ webView.PageLoadInProgressSignal().Connect(tracker, functor);
+ connected = true;
+ }
else if(0 == strcmp(signalName.c_str(), PAGE_LOAD_FINISHED_SIGNAL))
{
webView.PageLoadFinishedSignal().Connect(tracker, functor);
webView.ScrollEdgeReachedSignal().Connect(tracker, functor);
connected = true;
}
+ else if(0 == strcmp(signalName.c_str(), URL_CHANGED_SIGNAL))
+ {
+ webView.UrlChangedSignal().Connect(tracker, functor);
+ connected = true;
+ }
return connected;
}
}
break;
}
+ case Toolkit::WebView::Property::MOUSE_EVENTS_ENABLED:
+ {
+ bool input;
+ if(value.Get(input))
+ {
+ impl.EnableMouseEvents(input);
+ }
+ break;
+ }
+ case Toolkit::WebView::Property::KEY_EVENTS_ENABLED:
+ {
+ bool input;
+ if(value.Get(input))
+ {
+ impl.EnableKeyEvents(input);
+ }
+ break;
+ }
}
}
}
value = impl.mVideoHoleEnabled;
break;
}
+ case Toolkit::WebView::Property::MOUSE_EVENTS_ENABLED:
+ {
+ value = impl.mMouseEventsEnabled;
+ break;
+ }
+ case Toolkit::WebView::Property::KEY_EVENTS_ENABLED:
+ {
+ value = impl.mKeyEventsEnabled;
+ break;
+ }
default:
break;
}
return result;
}
+bool WebView::OnHoverEvent(Actor actor, const Dali::HoverEvent& hover)
+{
+ bool result = false;
+ if(mWebEngine)
+ {
+ result = mWebEngine.SendHoverEvent(hover);
+ }
+ return result;
+}
+
+bool WebView::OnWheelEvent(Actor actor, const Dali::WheelEvent& wheel)
+{
+ bool result = false;
+ if(mWebEngine)
+ {
+ result = mWebEngine.SendWheelEvent(wheel);
+ }
+ return result;
+}
+
void WebView::OnKeyInputFocusGained()
{
if(mWebEngine)
}
}
+void WebView::EnableMouseEvents(bool enabled)
+{
+ if(mWebEngine)
+ {
+ mMouseEventsEnabled = enabled;
+ mWebEngine.EnableMouseEvents(enabled);
+ }
+}
+
+void WebView::EnableKeyEvents(bool enabled)
+{
+ if(mWebEngine)
+ {
+ mKeyEventsEnabled = enabled;
+ mWebEngine.EnableKeyEvents(enabled);
+ }
+}
+
#undef GET_ENUM_STRING
#undef GET_ENUM_VALUE