2 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "web-view-impl.h"
22 #include <dali/devel-api/adaptor-framework/web-engine-back-forward-list.h>
23 #include <dali/devel-api/adaptor-framework/web-engine-context.h>
24 #include <dali/devel-api/adaptor-framework/web-engine-cookie-manager.h>
25 #include <dali/devel-api/adaptor-framework/web-engine-settings.h>
26 #include <dali/devel-api/common/stage.h>
27 #include <dali/devel-api/scripting/enum-helper.h>
28 #include <dali/devel-api/scripting/scripting.h>
29 #include <dali/public-api/adaptor-framework/native-image-source.h>
30 #include <dali/public-api/object/type-registry-helper.h>
31 #include <dali/public-api/object/type-registry.h>
35 #include <dali-toolkit/devel-api/controls/control-devel.h>
36 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list.h>
37 #include <dali-toolkit/devel-api/controls/web-view/web-context.h>
38 #include <dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h>
39 #include <dali-toolkit/devel-api/controls/web-view/web-settings.h>
40 #include <dali-toolkit/devel-api/image-loader/texture-manager.h>
41 #include <dali-toolkit/internal/visuals/visual-factory-impl.h>
42 #include <dali-toolkit/public-api/image-loader/image.h>
43 #include <dali-toolkit/public-api/visuals/image-visual-properties.h>
55 return Toolkit::WebView::New();
59 DALI_TYPE_REGISTRATION_BEGIN(Toolkit::WebView, Toolkit::Control, Create)
61 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "url", STRING, URL )
62 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "userAgent", STRING, USER_AGENT )
63 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "scrollPosition", VECTOR2, SCROLL_POSITION )
64 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "scrollSize", VECTOR2, SCROLL_SIZE )
65 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "contentSize", VECTOR2, CONTENT_SIZE )
66 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "title", STRING, TITLE )
67 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "videoHoleEnabled", BOOLEAN, VIDEO_HOLE_ENABLED )
68 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "mouseEventsEnabled", BOOLEAN, MOUSE_EVENTS_ENABLED )
69 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "keyEventsEnabled", BOOLEAN, KEY_EVENTS_ENABLED )
70 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "documentBackgroundColor", VECTOR4, DOCUMENT_BACKGROUND_COLOR )
71 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "tilesClearedWhenHidden", BOOLEAN, TILES_CLEARED_WHEN_HIDDEN )
72 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "tileCoverAreaMultiplier", FLOAT, TILE_COVER_AREA_MULTIPLIER)
73 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "cursorEnabledByClient", BOOLEAN, CURSOR_ENABLED_BY_CLIENT )
74 DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "selectedText", STRING, SELECTED_TEXT )
76 DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadStarted", PAGE_LOAD_STARTED_SIGNAL )
77 DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadInProgress", PAGE_LOAD_IN_PROGRESS_SIGNAL)
78 DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadFinished", PAGE_LOAD_FINISHED_SIGNAL )
79 DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadError", PAGE_LOAD_ERROR_SIGNAL )
80 DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "scrollEdgeReached", SCROLL_EDGE_REACHED_SIGNAL )
81 DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "urlChanged", URL_CHANGED_SIGNAL )
83 DALI_TYPE_REGISTRATION_END()
86 const std::string kEmptyString;
90 #define GET_ENUM_STRING(structName, inputExp) \
91 Scripting::GetLinearEnumerationName<Toolkit::WebView::structName::Type>(static_cast<Toolkit::WebView::structName::Type>(inputExp), structName##_TABLE, structName##_TABLE_COUNT)
93 #define GET_ENUM_VALUE(structName, inputExp, outputExp) \
94 Scripting::GetEnumerationProperty<Toolkit::WebView::structName::Type>(inputExp, structName##_TABLE, structName##_TABLE_COUNT, outputExp)
96 WebView::WebView(const std::string& locale, const std::string& timezoneId)
97 : Control(ControlBehaviour(ACTOR_BEHAVIOUR_DEFAULT | DISABLE_STYLE_CHANGE_SIGNALS)),
100 mWebViewSize(Stage::GetCurrent().GetSize()),
102 mPageLoadStartedSignal(),
103 mPageLoadFinishedSignal(),
104 mPageLoadErrorSignal(),
106 mVideoHoleEnabled(true),
107 mWebViewArea(0, 0, mWebViewSize.width, mWebViewSize.height),
108 mMouseEventsEnabled(true),
109 mKeyEventsEnabled(true)
111 mWebEngine = Dali::WebEngine::New();
113 // WebEngine is empty when it is not properly initialized.
116 mWebEngine.Create(mWebViewSize.width, mWebViewSize.height, locale, timezoneId);
120 WebView::WebView(int argc, char** argv)
121 : Control(ControlBehaviour(ACTOR_BEHAVIOUR_DEFAULT | DISABLE_STYLE_CHANGE_SIGNALS)),
124 mWebViewSize(Stage::GetCurrent().GetSize()),
126 mPageLoadStartedSignal(),
127 mPageLoadFinishedSignal(),
128 mPageLoadErrorSignal(),
130 mVideoHoleEnabled(true),
131 mWebViewArea(0, 0, mWebViewSize.width, mWebViewSize.height),
132 mMouseEventsEnabled(true),
133 mKeyEventsEnabled(true)
135 mWebEngine = Dali::WebEngine::New();
137 // WebEngine is empty when it is not properly initialized.
140 mWebEngine.Create(mWebViewSize.width, mWebViewSize.height, argc, argv);
153 mWebEngine.Destroy();
157 Toolkit::WebView WebView::New()
159 WebView* impl = new WebView();
160 Toolkit::WebView handle = Toolkit::WebView(*impl);
166 Toolkit::WebView WebView::New(const std::string& locale, const std::string& timezoneId)
168 WebView* impl = new WebView(locale, timezoneId);
169 Toolkit::WebView handle = Toolkit::WebView(*impl);
175 Toolkit::WebView WebView::New(int argc, char** argv)
177 WebView* impl = new WebView(argc, argv);
178 Toolkit::WebView handle = Toolkit::WebView(*impl);
184 void WebView::OnInitialize()
188 self.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
189 self.TouchedSignal().Connect(this, &WebView::OnTouchEvent);
190 self.HoveredSignal().Connect(this, &WebView::OnHoverEvent);
191 self.WheelEventSignal().Connect(this, &WebView::OnWheelEvent);
193 mPositionUpdateNotification = self.AddPropertyNotification(Actor::Property::WORLD_POSITION, StepCondition(1.0f, 1.0f));
194 mSizeUpdateNotification = self.AddPropertyNotification(Actor::Property::SIZE, StepCondition(1.0f, 1.0f));
195 mScaleUpdateNotification = self.AddPropertyNotification(Actor::Property::WORLD_SCALE, StepCondition(0.1f, 1.0f));
196 mPositionUpdateNotification.NotifySignal().Connect(this, &WebView::UpdateDisplayArea);
197 mSizeUpdateNotification.NotifySignal().Connect(this, &WebView::UpdateDisplayArea);
198 mScaleUpdateNotification.NotifySignal().Connect(this, &WebView::UpdateDisplayArea);
202 mWebEngine.PageLoadStartedSignal().Connect(this, &WebView::OnPageLoadStarted);
203 mWebEngine.PageLoadInProgressSignal().Connect(this, &WebView::OnPageLoadInProgress);
204 mWebEngine.PageLoadFinishedSignal().Connect(this, &WebView::OnPageLoadFinished);
205 mWebEngine.PageLoadErrorSignal().Connect(this, &WebView::OnPageLoadError);
206 mWebEngine.ScrollEdgeReachedSignal().Connect(this, &WebView::OnScrollEdgeReached);
207 mWebEngine.UrlChangedSignal().Connect(this, &WebView::OnUrlChanged);
209 mWebContext = std::unique_ptr<Dali::Toolkit::WebContext>(new WebContext(mWebEngine.GetContext()));
210 mWebCookieManager = std::unique_ptr<Dali::Toolkit::WebCookieManager>(new WebCookieManager(mWebEngine.GetCookieManager()));
211 mWebSettings = std::unique_ptr<Dali::Toolkit::WebSettings>(new WebSettings(mWebEngine.GetSettings()));
212 mWebBackForwardList = std::unique_ptr<Dali::Toolkit::WebBackForwardList>(new WebBackForwardList(mWebEngine.GetBackForwardList()));
216 Dali::Toolkit::WebSettings* WebView::GetSettings() const
218 return mWebSettings.get();
221 Dali::Toolkit::WebContext* WebView::GetContext() const
223 return mWebContext.get();
226 Dali::Toolkit::WebCookieManager* WebView::GetCookieManager() const
228 return mWebCookieManager.get();
231 Dali::Toolkit::WebBackForwardList* WebView::GetBackForwardList() const
233 return mWebBackForwardList.get();
236 Dali::Toolkit::ImageView& WebView::GetFavicon()
240 Dali::PixelData pixelData = mWebEngine.GetFavicon();
241 std::string url = Dali::Toolkit::Image::GenerateUrl(pixelData);
242 mFaviconView = Dali::Toolkit::ImageView::New(url);
243 mFaviconView.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS);
244 mFaviconView.SetProperty(Dali::Actor::Property::SIZE, Vector2(pixelData.GetWidth(), pixelData.GetHeight()));
249 void WebView::LoadUrl(const std::string& url)
254 Texture texture = Dali::Texture::New(*mWebEngine.GetNativeImageSource());
255 const std::string nativeImageUrl = Dali::Toolkit::TextureManager::AddTexture(texture);
256 mVisual = Toolkit::VisualFactory::Get().CreateVisual(
257 {{Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE},
258 {Toolkit::ImageVisual::Property::URL, nativeImageUrl}});
262 // Clean up previously registered visual and add new one.
263 DevelControl::RegisterVisual(*this, Toolkit::WebView::Property::URL, mVisual);
264 mWebEngine.LoadUrl(url);
267 if(mVideoHoleEnabled)
269 EnableBlendMode(false);
274 void WebView::LoadHtmlString(const std::string& htmlString)
278 Texture texture = Dali::Texture::New(*mWebEngine.GetNativeImageSource());
279 const std::string nativeImageUrl = Dali::Toolkit::TextureManager::AddTexture(texture);
280 mVisual = Toolkit::VisualFactory::Get().CreateVisual(
281 {{Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE},
282 {Toolkit::ImageVisual::Property::URL, nativeImageUrl}});
286 DevelControl::RegisterVisual(*this, Toolkit::WebView::Property::URL, mVisual);
287 mWebEngine.LoadHtmlString(htmlString);
290 if(mVideoHoleEnabled)
292 EnableBlendMode(false);
297 void WebView::Reload()
305 void WebView::StopLoading()
309 mWebEngine.StopLoading();
313 void WebView::Suspend()
317 mWebEngine.Suspend();
321 void WebView::Resume()
329 void WebView::ScrollBy(int deltaX, int deltaY)
333 mWebEngine.ScrollBy(deltaX, deltaY);
337 bool WebView::CanGoForward()
339 return mWebEngine ? mWebEngine.CanGoForward() : false;
342 void WebView::GoForward()
346 mWebEngine.GoForward();
350 bool WebView::CanGoBack()
352 return mWebEngine ? mWebEngine.CanGoBack() : false;
355 void WebView::GoBack()
363 void WebView::EvaluateJavaScript(const std::string& script, std::function<void(const std::string&)> resultHandler)
367 mWebEngine.EvaluateJavaScript(script, resultHandler);
371 void WebView::AddJavaScriptMessageHandler(const std::string& exposedObjectName, std::function<void(const std::string&)> handler)
375 mWebEngine.AddJavaScriptMessageHandler(exposedObjectName, handler);
379 void WebView::RegisterJavaScriptAlertCallback(Dali::WebEnginePlugin::JavaScriptAlertCallback callback)
383 mWebEngine.RegisterJavaScriptAlertCallback(callback);
387 void WebView::JavaScriptAlertReply()
391 mWebEngine.JavaScriptAlertReply();
395 void WebView::RegisterJavaScriptConfirmCallback(Dali::WebEnginePlugin::JavaScriptConfirmCallback callback)
399 mWebEngine.RegisterJavaScriptConfirmCallback(callback);
403 void WebView::JavaScriptConfirmReply(bool confirmed)
407 mWebEngine.JavaScriptConfirmReply(confirmed);
411 void WebView::RegisterJavaScriptPromptCallback(Dali::WebEnginePlugin::JavaScriptPromptCallback callback)
415 mWebEngine.RegisterJavaScriptPromptCallback(callback);
419 void WebView::JavaScriptPromptReply(const std::string& result)
423 mWebEngine.JavaScriptPromptReply(result);
427 void WebView::ClearHistory()
431 mWebEngine.ClearHistory();
435 void WebView::UpdateDisplayArea(Dali::PropertyNotification& /*source*/)
442 bool positionUsesAnchorPoint = self.GetProperty<bool>(Actor::Property::POSITION_USES_ANCHOR_POINT);
443 Vector3 actorSize = self.GetCurrentProperty<Vector3>(Actor::Property::SIZE) * self.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
444 Vector3 anchorPointOffSet = actorSize * (positionUsesAnchorPoint ? self.GetCurrentProperty<Vector3>(Actor::Property::ANCHOR_POINT) : AnchorPoint::TOP_LEFT);
445 Vector2 screenPosition = self.GetProperty<Vector2>(Actor::Property::SCREEN_POSITION);
447 Dali::Rect<int> displayArea;
448 displayArea.x = screenPosition.x - anchorPointOffSet.x;
449 displayArea.y = screenPosition.y - anchorPointOffSet.y;
450 displayArea.width = actorSize.x;
451 displayArea.height = actorSize.y;
453 Size displaySize = Size(displayArea.width, displayArea.height);
454 if(mWebViewSize != displaySize)
456 mWebViewSize = displaySize;
459 if(mWebViewArea != displayArea)
461 mWebViewArea = displayArea;
462 mWebEngine.UpdateDisplayArea(mWebViewArea);
466 void WebView::EnableVideoHole(bool enabled)
468 mVideoHoleEnabled = enabled;
470 EnableBlendMode(!mVideoHoleEnabled);
474 mWebEngine.EnableVideoHole(mVideoHoleEnabled);
478 void WebView::EnableBlendMode(bool blendEnabled)
481 for(uint32_t i = 0; i < self.GetRendererCount(); i++)
483 Dali::Renderer render = self.GetRendererAt(i);
484 render.SetProperty(Renderer::Property::BLEND_MODE, blendEnabled ? BlendMode::ON : BlendMode::OFF);
488 void WebView::ClearAllTilesResources()
492 mWebEngine.ClearAllTilesResources();
496 Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadStartedSignal()
498 return mPageLoadStartedSignal;
501 Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadInProgressSignal()
503 return mPageLoadInProgressSignal;
506 Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadFinishedSignal()
508 return mPageLoadFinishedSignal;
511 Dali::Toolkit::WebView::WebViewPageLoadErrorSignalType& WebView::PageLoadErrorSignal()
513 return mPageLoadErrorSignal;
516 Dali::Toolkit::WebView::WebViewScrollEdgeReachedSignalType& WebView::ScrollEdgeReachedSignal()
518 return mScrollEdgeReachedSignal;
521 Dali::Toolkit::WebView::WebViewUrlChangedSignalType& WebView::UrlChangedSignal()
523 return mUrlChangedSignal;
526 void WebView::OnPageLoadStarted(const std::string& url)
528 if(!mPageLoadStartedSignal.Empty())
530 Dali::Toolkit::WebView handle(GetOwner());
531 mPageLoadStartedSignal.Emit(handle, url);
535 void WebView::OnPageLoadInProgress(const std::string& url)
537 if(!mPageLoadInProgressSignal.Empty())
539 Dali::Toolkit::WebView handle(GetOwner());
540 mPageLoadInProgressSignal.Emit(handle, url);
544 void WebView::OnPageLoadFinished(const std::string& url)
546 if(!mPageLoadFinishedSignal.Empty())
548 Dali::Toolkit::WebView handle(GetOwner());
549 mPageLoadFinishedSignal.Emit(handle, url);
553 void WebView::OnPageLoadError(const std::string& url, int errorCode)
555 if(!mPageLoadErrorSignal.Empty())
557 Dali::Toolkit::WebView handle(GetOwner());
558 mPageLoadErrorSignal.Emit(handle, url, static_cast<Toolkit::WebView::LoadErrorCode>(errorCode));
562 void WebView::OnScrollEdgeReached(Dali::WebEnginePlugin::ScrollEdge edge)
564 if(!mScrollEdgeReachedSignal.Empty())
566 Dali::Toolkit::WebView handle(GetOwner());
567 mScrollEdgeReachedSignal.Emit(handle, edge);
571 void WebView::OnUrlChanged(const std::string& url)
573 if(!mUrlChangedSignal.Empty())
575 Dali::Toolkit::WebView handle(GetOwner());
576 mUrlChangedSignal.Emit(handle, url);
580 bool WebView::DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor)
582 Dali::BaseHandle handle(object);
584 bool connected = false;
585 Toolkit::WebView webView = Toolkit::WebView::DownCast(handle);
587 if(0 == strcmp(signalName.c_str(), PAGE_LOAD_STARTED_SIGNAL))
589 webView.PageLoadStartedSignal().Connect(tracker, functor);
592 else if(0 == strcmp(signalName.c_str(), PAGE_LOAD_IN_PROGRESS_SIGNAL))
594 webView.PageLoadInProgressSignal().Connect(tracker, functor);
597 else if(0 == strcmp(signalName.c_str(), PAGE_LOAD_FINISHED_SIGNAL))
599 webView.PageLoadFinishedSignal().Connect(tracker, functor);
602 else if(0 == strcmp(signalName.c_str(), PAGE_LOAD_ERROR_SIGNAL))
604 webView.PageLoadErrorSignal().Connect(tracker, functor);
607 else if(0 == strcmp(signalName.c_str(), SCROLL_EDGE_REACHED_SIGNAL))
609 webView.ScrollEdgeReachedSignal().Connect(tracker, functor);
612 else if(0 == strcmp(signalName.c_str(), URL_CHANGED_SIGNAL))
614 webView.UrlChangedSignal().Connect(tracker, functor);
621 Vector3 WebView::GetNaturalSize()
625 Vector2 rendererNaturalSize;
626 mVisual.GetNaturalSize(rendererNaturalSize);
627 return Vector3(rendererNaturalSize);
630 return Vector3(mWebViewSize);
633 void WebView::OnSceneConnection(int depth)
635 Control::OnSceneConnection(depth);
637 EnableBlendMode(!mVideoHoleEnabled);
640 void WebView::SetProperty(BaseObject* object, Property::Index index, const Property::Value& value)
642 Toolkit::WebView webView = Toolkit::WebView::DownCast(Dali::BaseHandle(object));
646 WebView& impl = GetImpl(webView);
649 case Toolkit::WebView::Property::URL:
658 case Toolkit::WebView::Property::USER_AGENT:
663 impl.SetUserAgent(input);
667 case Toolkit::WebView::Property::SCROLL_POSITION:
672 impl.SetScrollPosition(input.x, input.y);
676 case Toolkit::WebView::Property::VIDEO_HOLE_ENABLED:
681 impl.EnableVideoHole(input);
685 case Toolkit::WebView::Property::MOUSE_EVENTS_ENABLED:
690 impl.EnableMouseEvents(input);
694 case Toolkit::WebView::Property::KEY_EVENTS_ENABLED:
699 impl.EnableKeyEvents(input);
703 case Toolkit::WebView::Property::DOCUMENT_BACKGROUND_COLOR:
708 impl.SetDocumentBackgroundColor(input);
712 case Toolkit::WebView::Property::TILES_CLEARED_WHEN_HIDDEN:
717 impl.ClearTilesWhenHidden(input);
721 case Toolkit::WebView::Property::TILE_COVER_AREA_MULTIPLIER:
726 impl.SetTileCoverAreaMultiplier(input);
730 case Toolkit::WebView::Property::CURSOR_ENABLED_BY_CLIENT:
735 impl.EnableCursorByClient(input);
743 Property::Value WebView::GetProperty(BaseObject* object, Property::Index propertyIndex)
745 Property::Value value;
747 Toolkit::WebView webView = Toolkit::WebView::DownCast(Dali::BaseHandle(object));
751 WebView& impl = GetImpl(webView);
752 switch(propertyIndex)
754 case Toolkit::WebView::Property::URL:
759 case Toolkit::WebView::Property::USER_AGENT:
761 value = impl.GetUserAgent();
764 case Toolkit::WebView::Property::SCROLL_POSITION:
766 value = impl.GetScrollPosition();
769 case Toolkit::WebView::Property::SCROLL_SIZE:
771 value = impl.GetScrollSize();
774 case Toolkit::WebView::Property::CONTENT_SIZE:
776 value = impl.GetContentSize();
779 case Toolkit::WebView::Property::TITLE:
781 value = impl.GetTitle();
784 case Toolkit::WebView::Property::VIDEO_HOLE_ENABLED:
786 value = impl.mVideoHoleEnabled;
789 case Toolkit::WebView::Property::MOUSE_EVENTS_ENABLED:
791 value = impl.mMouseEventsEnabled;
794 case Toolkit::WebView::Property::KEY_EVENTS_ENABLED:
796 value = impl.mKeyEventsEnabled;
799 case Toolkit::WebView::Property::SELECTED_TEXT:
801 value = impl.GetSelectedText();
812 bool WebView::OnTouchEvent(Actor actor, const Dali::TouchEvent& touch)
818 result = mWebEngine.SendTouchEvent(touch);
823 bool WebView::OnKeyEvent(const Dali::KeyEvent& event)
829 result = mWebEngine.SendKeyEvent(event);
834 bool WebView::OnHoverEvent(Actor actor, const Dali::HoverEvent& hover)
839 result = mWebEngine.SendHoverEvent(hover);
844 bool WebView::OnWheelEvent(Actor actor, const Dali::WheelEvent& wheel)
849 result = mWebEngine.SendWheelEvent(wheel);
854 void WebView::OnKeyInputFocusGained()
858 mWebEngine.SetFocus(true);
861 EmitKeyInputFocusSignal(true); // Calls back into the Control hence done last.
864 void WebView::OnKeyInputFocusLost()
868 mWebEngine.SetFocus(false);
871 EmitKeyInputFocusSignal(false); // Calls back into the Control hence done last.
874 void WebView::SetScrollPosition(int x, int y)
878 mWebEngine.SetScrollPosition(x, y);
882 Dali::Vector2 WebView::GetScrollPosition() const
884 return mWebEngine ? mWebEngine.GetScrollPosition() : Dali::Vector2::ZERO;
887 Dali::Vector2 WebView::GetScrollSize() const
889 return mWebEngine ? mWebEngine.GetScrollSize() : Dali::Vector2::ZERO;
892 Dali::Vector2 WebView::GetContentSize() const
894 return mWebEngine ? mWebEngine.GetContentSize() : Dali::Vector2::ZERO;
897 std::string WebView::GetTitle() const
899 return mWebEngine ? mWebEngine.GetTitle() : kEmptyString;
902 void WebView::SetDocumentBackgroundColor(Dali::Vector4 color)
906 mWebEngine.SetDocumentBackgroundColor(color);
910 void WebView::ClearTilesWhenHidden(bool cleared)
914 mWebEngine.ClearTilesWhenHidden(cleared);
918 void WebView::SetTileCoverAreaMultiplier(float multiplier)
922 mWebEngine.SetTileCoverAreaMultiplier(multiplier);
926 void WebView::EnableCursorByClient(bool enabled)
930 mWebEngine.EnableCursorByClient(enabled);
934 std::string WebView::GetSelectedText() const
936 return mWebEngine ? mWebEngine.GetSelectedText() : kEmptyString;
939 const std::string& WebView::GetUserAgent() const
941 return mWebEngine ? mWebEngine.GetUserAgent() : kEmptyString;
944 void WebView::SetUserAgent(const std::string& userAgent)
948 mWebEngine.SetUserAgent(userAgent);
952 void WebView::EnableMouseEvents(bool enabled)
956 mMouseEventsEnabled = enabled;
957 mWebEngine.EnableMouseEvents(enabled);
961 void WebView::EnableKeyEvents(bool enabled)
965 mKeyEventsEnabled = enabled;
966 mWebEngine.EnableKeyEvents(enabled);
970 #undef GET_ENUM_STRING
971 #undef GET_ENUM_VALUE
973 } // namespace Internal
975 } // namespace Toolkit