+void WebView::OnKeyInputFocusGained()
+{
+ if( mWebEngine )
+ {
+ mWebEngine.SetFocus( true );
+ }
+ EmitKeyInputFocusSignal( true ); // Calls back into the Control hence done last.
+}
+
+void WebView::OnKeyInputFocusLost()
+{
+ if( mWebEngine )
+ {
+ mWebEngine.SetFocus( false );
+ }
+ EmitKeyInputFocusSignal( false ); // Calls back into the Control hence done last.
+}
+
+void WebView::OnFrameRendered()
+{
+ // Make sure that mVisual is created only once.
+ if (mVisual)
+ return;
+
+ mVisual = CreateNativeImageVisual(mWebEngine.GetNativeImageSource());
+ if (mVisual)
+ {
+ DevelControl::RegisterVisual(*this, Toolkit::WebView::Property::URL, mVisual);
+ EnableBlendMode(!mVideoHoleEnabled);
+ }
+}
+
+void WebView::OnDisplayAreaUpdated(Dali::PropertyNotification& /*source*/)
+{
+ if( !mWebEngine )
+ return;
+
+ Actor self( Self() );
+
+ bool positionUsesAnchorPoint = self.GetProperty< bool >( Actor::Property::POSITION_USES_ANCHOR_POINT );
+ Vector3 actorSize = self.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ) * self.GetCurrentProperty< Vector3 >( Actor::Property::SCALE );
+ Vector3 anchorPointOffSet = actorSize * ( positionUsesAnchorPoint ? self.GetCurrentProperty< Vector3 >( Actor::Property::ANCHOR_POINT ) : AnchorPoint::TOP_LEFT );
+ Vector2 screenPosition = self.GetProperty< Vector2 >( Actor::Property::SCREEN_POSITION );
+
+ Dali::Rect< int > displayArea;
+ displayArea.x = screenPosition.x - anchorPointOffSet.x;
+ displayArea.y = screenPosition.y - anchorPointOffSet.y;
+ displayArea.width = actorSize.x;
+ displayArea.height = actorSize.y;
+
+ Size displaySize = Size( displayArea.width, displayArea.height );
+ if ( mWebViewSize != displaySize )
+ {
+ mWebViewSize = displaySize;
+ }
+
+ if (mWebViewArea != displayArea )
+ {
+ mWebViewArea = displayArea;
+ mWebEngine.UpdateDisplayArea( mWebViewArea );
+ }
+}
+
+void WebView::SetScrollPosition( int x, int y )
+{
+ if( mWebEngine )
+ {
+ mWebEngine.SetScrollPosition( x, y );
+ }
+}
+
+void WebView::GetScrollPosition( int& x, int& y ) const
+{
+ if( mWebEngine )
+ {
+ mWebEngine.GetScrollPosition( x, y );
+ }
+}
+
+void WebView::GetScrollSize( int& width, int& height ) const
+{
+ if( mWebEngine )
+ {
+ mWebEngine.GetScrollSize( width, height );
+ }
+}
+
+void WebView::GetContentSize( int& width, int& height ) const
+{
+ if( mWebEngine )
+ {
+ mWebEngine.GetContentSize( width, height );
+ }
+}
+
+std::string WebView::GetUrl() const
+{
+ return mWebEngine ? mWebEngine.GetUrl() : kEmptyString;
+}
+
+std::string WebView::GetTitle() const
+{
+ return mWebEngine ? mWebEngine.GetTitle() : kEmptyString;
+}
+
+std::string WebView::GetUserAgent() const
+{
+ return mWebEngine ? mWebEngine.GetUserAgent() : kEmptyString;
+}
+
+void WebView::SetUserAgent( const std::string& userAgent )
+{
+ if( mWebEngine )
+ {
+ mWebEngine.SetUserAgent( userAgent );
+ }
+}
+