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.
18 #include "toolkit-timer.h"
20 #include <dali/devel-api/adaptor-framework/web-engine.h>
21 #include <dali/devel-api/adaptor-framework/web-engine-back-forward-list.h>
22 #include <dali/devel-api/adaptor-framework/web-engine-back-forward-list-item.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-form-repost-decision.h>
26 #include <dali/devel-api/adaptor-framework/web-engine-settings.h>
27 #include <dali/public-api/adaptor-framework/native-image-source.h>
28 #include <dali/public-api/images/pixel-data.h>
29 #include <dali/public-api/object/any.h>
30 #include <dali/public-api/object/base-object.h>
32 #include <toolkit-application.h>
48 // Generally only one WebEngine instance exists.
49 // If > 1, a new web engine has been created by CreateWindowSignal.
50 static WebEngine* gInstance = 0;
51 static int gInstanceCount = 0;
56 bool OnEvaluteJavaScript();
57 bool OnJavaScriptAlert();
58 bool OnJavaScriptConfirm();
59 bool OnJavaScriptPrompt();
61 bool OnClearHistory();
63 static void ConnectToGlobalSignal( bool ( *func )() )
65 Dali::Timer timer = Dali::Timer::New( 0 );
66 timer.TickSignal().Connect( func );
69 static void DisconnectFromGlobalSignal( bool ( *func )() )
71 Dali::Timer timer = Dali::Timer::New( 0 );
72 timer.TickSignal().Disconnect( func );
74 } // namespace anonymous
76 class MockWebEngineContext : public Dali::WebEngineContext
79 MockWebEngineContext()
80 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
84 Dali::WebEngineContext::CacheModel GetCacheModel() const override
89 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
91 mockModel = cacheModel;
94 void SetProxyUri( const std::string& uri ) override
98 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
102 void SetCertificateFilePath( const std::string& certificatePath ) override
106 void DeleteWebDatabase() override
110 void DeleteWebStorage() override
114 void DeleteLocalFileSystem() override
118 void DisableCache( bool cacheDisabled ) override
122 void ClearCache() override
127 Dali::WebEngineContext::CacheModel mockModel;
130 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
133 MockWebEngineCookieManager()
134 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
138 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
140 mockCookieAcceptPolicy = policy;
143 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
145 return mockCookieAcceptPolicy;
148 void ClearCookies() override
152 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
157 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
160 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
163 MockWebEngineBackForwardListItem()
164 : mockUrl( "http://url" ),
165 mockTitle( "title" ),
166 mockOriginalUrl( "http://originalurl" )
170 std::string GetUrl() const override
175 std::string GetTitle() const override
180 std::string GetOriginalUrl() const override
182 return mockOriginalUrl;
187 std::string mockTitle;
188 std::string mockOriginalUrl;
191 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
194 MockWebEngineBackForwardList( )
196 pMockItem( &mockItem )
200 Dali::WebEngineBackForwardListItem& GetCurrentItem() const override
205 Dali::WebEngineBackForwardListItem& GetItemAtIndex( uint32_t index ) const override
210 uint32_t GetItemCount() const override
216 MockWebEngineBackForwardListItem mockItem;
217 WebEngineBackForwardListItem* pMockItem;
220 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
223 MockWebEngineFormRepostDecision()
227 void Reply(bool allowed) override {}
230 class MockWebEngineSettings : public WebEngineSettings
233 MockWebEngineSettings()
234 : mockDefaultFontSize( 16 ),
235 mockJavaScriptEnabled( true ),
236 mockAutoFittingEnabled ( true ),
237 mockPluginsEnabled ( true ),
238 mockPrivateBrowsingEnabled( true ),
239 mockLinkMagnifierEnabled( true ),
240 mockKeypadWithoutUserActionUsed( true ),
241 mockAutofillPasswordFormEnabled( true ),
242 mockFormCandidateDataEnabled( true ),
243 mockTextSelectionEnabled( true ),
244 mockTextAutosizingEnable( true ),
245 mockArrowScrollEnable( true ),
246 mockClipboardEnabled( true ),
247 mockImePanelEnabled( true ),
248 mockImageLoadedAutomatically( true ),
249 mockDefaultTextEncodingName()
253 uint32_t GetDefaultFontSize() const override
255 return mockDefaultFontSize;
258 void SetDefaultFontSize( uint32_t size ) override
260 mockDefaultFontSize = size;
263 bool IsJavaScriptEnabled() const override
265 return mockJavaScriptEnabled;
268 void EnableJavaScript( bool enabled ) override
270 mockJavaScriptEnabled = enabled;
273 bool IsAutoFittingEnabled() const override
275 return mockAutoFittingEnabled;
278 void EnableAutoFitting( bool enabled ) override
280 mockAutoFittingEnabled = enabled;
283 bool ArePluginsEnabled() const override
285 return mockPluginsEnabled;
288 void EnablePlugins( bool enabled ) override
290 mockPluginsEnabled = enabled;
293 bool IsPrivateBrowsingEnabled() const override
295 return mockPrivateBrowsingEnabled;
298 void EnablePrivateBrowsing( bool enabled ) override
300 mockPrivateBrowsingEnabled = enabled;
303 bool IsLinkMagnifierEnabled() const override
305 return mockLinkMagnifierEnabled;
308 void EnableLinkMagnifier( bool enabled ) override
310 mockLinkMagnifierEnabled = enabled;
313 bool IsKeypadWithoutUserActionUsed() const override
315 return mockKeypadWithoutUserActionUsed;
318 void UseKeypadWithoutUserAction( bool used ) override
320 mockKeypadWithoutUserActionUsed = used;
323 bool IsAutofillPasswordFormEnabled() const override
325 return mockAutofillPasswordFormEnabled;
328 void EnableAutofillPasswordForm( bool enabled ) override
330 mockAutofillPasswordFormEnabled = enabled;
333 bool IsFormCandidateDataEnabled() const override
335 return mockFormCandidateDataEnabled;
338 void EnableFormCandidateData( bool enabled ) override
340 mockFormCandidateDataEnabled = enabled;
343 bool IsTextSelectionEnabled() const override
345 return mockTextSelectionEnabled;
348 void EnableTextSelection( bool enabled ) override
350 mockTextSelectionEnabled = enabled;
353 bool IsTextAutosizingEnabled() const override
355 return mockTextAutosizingEnable;
358 void EnableTextAutosizing( bool enabled ) override
360 mockTextAutosizingEnable = enabled;
363 bool IsArrowScrollEnabled() const override
365 return mockArrowScrollEnable;
368 void EnableArrowScroll( bool enabled ) override
370 mockArrowScrollEnable = enabled;
373 bool IsClipboardEnabled() const override
375 return mockClipboardEnabled;
378 void EnableClipboard( bool enabled ) override
380 mockClipboardEnabled = enabled;
383 bool IsImePanelEnabled() const override
385 return mockImePanelEnabled;
388 void EnableImePanel( bool enabled ) override
390 mockImePanelEnabled = enabled;
393 bool AreImagesLoadedAutomatically() const override
395 return mockImageLoadedAutomatically;
398 void AllowImagesLoadAutomatically( bool automatic ) override
400 mockImageLoadedAutomatically = automatic;
403 std::string GetDefaultTextEncodingName() const override
405 return mockDefaultTextEncodingName;
408 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
410 mockDefaultTextEncodingName = defaultTextEncodingName;
413 void AllowMixedContents( bool allowed ) override
417 void EnableSpatialNavigation( bool enabled ) override
421 void EnableWebSecurity( bool enabled ) override
425 void EnableCacheBuilder( bool enabled ) override
429 void UseScrollbarThumbFocusNotifications( bool used ) override
433 void EnableDoNotTrack( bool enabled ) override
437 void AllowFileAccessFromExternalUrl( bool allowed ) override
441 void AllowScriptsOpenWindows( bool allowed ) override
446 int mockDefaultFontSize;
447 bool mockJavaScriptEnabled;
448 bool mockAutoFittingEnabled;
449 bool mockPluginsEnabled;
450 bool mockPrivateBrowsingEnabled;
451 bool mockLinkMagnifierEnabled;
452 bool mockKeypadWithoutUserActionUsed;
453 bool mockAutofillPasswordFormEnabled;
454 bool mockFormCandidateDataEnabled;
455 bool mockTextSelectionEnabled;
456 bool mockTextAutosizingEnable;
457 bool mockArrowScrollEnable;
458 bool mockClipboardEnabled;
459 bool mockImePanelEnabled;
460 bool mockImageLoadedAutomatically;
461 std::string mockDefaultTextEncodingName;
464 class WebEngine: public Dali::BaseObject
468 using JavaScriptEvaluatedResultCallback = std::function<void(const std::string&)>;
469 using JavaScriptAlertCallback = std::function<bool(const std::string&)>;
470 using JavaScriptConfirmCallback = std::function<bool(const std::string&)>;
471 using JavaScriptPromptCallback = std::function<bool(const std::string&, const std::string&)>;
475 , mCurrentPlusOnePos( 0 )
477 , mEvaluating( false )
478 , mScrollPosition( 0, 0 )
479 , mScrollSize( 500, 500 )
480 , mContentSize( 500, 500 )
483 if ( gInstanceCount == 1 ) // only first web engine need be saved.
488 mockWebEngineSettings = new MockWebEngineSettings();
489 mockWebEngineContext = new MockWebEngineContext();
490 mockWebEngineCookieManager = new MockWebEngineCookieManager();
491 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
497 if( !gInstanceCount )
502 delete mockWebEngineSettings;
503 delete mockWebEngineContext;
504 delete mockWebEngineCookieManager;
505 delete mockWebEngineBackForwardList;
508 Dali::WebEngineSettings& GetSettings() const
510 return *mockWebEngineSettings;
513 Dali::WebEngineContext& GetContext() const
515 return *mockWebEngineContext;
518 Dali::WebEngineCookieManager& GetCookieManager() const
520 return *mockWebEngineCookieManager;
523 Dali::WebEngineBackForwardList& GetBackForwardList() const
525 return *mockWebEngineBackForwardList;
528 void LoadUrl( const std::string& url )
531 ConnectToGlobalSignal( &OnLoadUrl );
534 const std::string& GetUrl() const
539 std::string GetTitle() const
541 return std::string("title");
544 Dali::PixelData GetFavicon() const
546 uint8_t* faviconData = new uint8_t[ 16 ];
548 faviconData[ 0 ] = 0xff;
549 faviconData[ 1 ] = 0x00;
550 faviconData[ 2 ] = 0x00;
551 faviconData[ 3 ] = 0xff;
552 faviconData[ 4 ] = 0xff;
553 faviconData[ 5 ] = 0x00;
554 faviconData[ 6 ] = 0x00;
555 faviconData[ 7 ] = 0xff;
556 faviconData[ 8 ] = 0xff;
557 faviconData[ 9 ] = 0x00;
558 faviconData[ 10 ] = 0x00;
559 faviconData[ 11 ] = 0xff;
560 faviconData[ 12 ] = 0xff;
561 faviconData[ 13 ] = 0x00;
562 faviconData[ 14 ] = 0x00;
563 faviconData[ 15 ] = 0xff;
565 return Dali::PixelData::New( faviconData, 16, 2, 2,
566 Dali::Pixel::Format::RGBA8888,
567 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
570 bool CanGoForward() const
572 return mHistory.size() > mCurrentPlusOnePos;
577 ConnectToGlobalSignal( &OnGoForward );
580 bool CanGoBack() const
582 return mCurrentPlusOnePos > 1;
587 ConnectToGlobalSignal( &OnGoBack );
590 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
596 ConnectToGlobalSignal( &OnEvaluteJavaScript );
598 mResultCallbacks.push_back( resultHandler );
602 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
606 ConnectToGlobalSignal( &OnJavaScriptAlert );
607 mJavaScriptAlertCallback = callback;
611 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
615 ConnectToGlobalSignal( &OnJavaScriptConfirm );
616 mJavaScriptConfirmCallback = callback;
620 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
624 ConnectToGlobalSignal( &OnJavaScriptPrompt );
625 mJavaScriptPromptCallback = callback;
631 ConnectToGlobalSignal( &OnClearHistory );
634 const std::string& GetUserAgent() const
639 void SetUserAgent( const std::string& userAgent )
641 mUserAgent = userAgent;
644 void ScrollBy( int dx, int dy )
646 mScrollPosition += Dali::Vector2( dx, dy );
647 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
649 ConnectToGlobalSignal( &OnScrollEdge );
653 void SetScrollPosition( int x, int y )
655 mScrollPosition.x = x;
656 mScrollPosition.y = y;
659 Dali::Vector2 GetScrollPosition() const
661 return mScrollPosition;
664 Dali::Vector2 GetScrollSize() const
669 Dali::Vector2 GetContentSize() const
674 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal()
676 return mPageLoadStartedSignal;
679 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadInProgressSignal()
681 return mPageLoadInProgressSignal;
684 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal()
686 return mPageLoadFinishedSignal;
689 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal()
691 return mPageLoadErrorSignal;
694 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal()
696 return mScrollEdgeReachedSignal;
699 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& UrlChangedSignal()
701 return mUrlChangedSignal;
704 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal()
706 return mFormRepostDecisionSignal;
709 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
711 return mFrameRenderedSignal;
715 std::vector< std::string > mHistory;
716 size_t mCurrentPlusOnePos;
717 std::string mUserAgent;
718 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
719 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
720 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
721 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
722 std::vector<JavaScriptEvaluatedResultCallback> mResultCallbacks;
725 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
726 Dali::Vector2 mScrollPosition;
727 Dali::Vector2 mScrollSize;
728 Dali::Vector2 mContentSize;
729 WebEngineBackForwardList* mockWebEngineBackForwardList;
730 WebEngineContext* mockWebEngineContext;
731 WebEngineCookieManager* mockWebEngineCookieManager;
732 WebEngineSettings* mockWebEngineSettings;
733 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
734 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
735 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
737 JavaScriptAlertCallback mJavaScriptAlertCallback;
738 JavaScriptConfirmCallback mJavaScriptConfirmCallback;
739 JavaScriptPromptCallback mJavaScriptPromptCallback;
748 DisconnectFromGlobalSignal( &OnGoBack );
750 if( gInstance && gInstance->CanGoBack() )
752 gInstance->mCurrentPlusOnePos--;
759 DisconnectFromGlobalSignal( &OnGoForward );
761 if( gInstance && gInstance->CanGoForward() )
763 gInstance->mCurrentPlusOnePos++;
770 DisconnectFromGlobalSignal( &OnLoadUrl );
774 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
776 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
778 gInstance->mHistory.push_back( gInstance->mUrl );
779 gInstance->mCurrentPlusOnePos++;
780 gInstance->mPageLoadStartedSignal.Emit( gInstance->mUrl );
781 gInstance->mPageLoadInProgressSignal.Emit( gInstance->mUrl );
782 gInstance->mPageLoadFinishedSignal.Emit( gInstance->mUrl );
783 gInstance->mUrlChangedSignal.Emit( "http://new-test" );
785 std::shared_ptr<Dali::WebEngineFormRepostDecision> decision(new MockWebEngineFormRepostDecision());
786 gInstance->mFormRepostDecisionSignal.Emit(decision);
787 gInstance->mFrameRenderedSignal.Emit();
794 DisconnectFromGlobalSignal( &OnScrollEdge );
798 gInstance->mScrollEdgeReachedSignal.Emit( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
804 bool OnEvaluteJavaScript()
806 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
810 for( auto& func : gInstance->mResultCallbacks )
814 gInstance->mResultCallbacks.clear();
819 bool OnJavaScriptAlert()
821 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
824 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
829 bool OnJavaScriptConfirm()
831 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
834 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
839 bool OnJavaScriptPrompt()
841 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
844 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
849 bool OnClearHistory()
851 DisconnectFromGlobalSignal( &OnClearHistory );
853 if( gInstance && gInstance->mCurrentPlusOnePos )
855 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
856 std::vector< std::string >().swap( gInstance->mHistory );
857 gInstance->mHistory.push_back( url );
858 gInstance->mCurrentPlusOnePos = 1;
865 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
867 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
868 BaseObject& handle = webEngine.GetBaseObject();
869 return static_cast< Internal::Adaptor::WebEngine& >( handle );
872 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
874 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
875 const BaseObject& handle = webEngine.GetBaseObject();
876 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
879 } // namespace Adaptor
881 } // namespace Internal
883 // Dali::WebEngine Implementation
884 WebEngine::WebEngine()
888 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
889 : BaseHandle( internal )
893 WebEngine::~WebEngine()
897 WebEngine WebEngine::New()
899 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
901 return WebEngine( baseObject );
904 WebEngine::WebEngine( const WebEngine& WebEngine )
905 : BaseHandle( WebEngine )
909 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
911 BaseHandle::operator=( webEngine );
915 WebEngine WebEngine::DownCast( BaseHandle handle )
917 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
920 void WebEngine::Create( int width, int height, const std::string& locale, const std::string& timezoneId )
924 void WebEngine::Create( int width, int height, int argc, char** argv )
928 void WebEngine::Destroy()
932 WebEngineSettings& WebEngine::GetSettings() const
934 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
937 WebEngineContext& WebEngine::GetContext() const
939 return Internal::Adaptor::GetImplementation( *this ).GetContext();
942 WebEngineCookieManager& WebEngine::GetCookieManager() const
944 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
947 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
949 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
952 void WebEngine::LoadUrl( const std::string& url )
954 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
957 std::string WebEngine::GetTitle() const
959 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
962 Dali::PixelData WebEngine::GetFavicon() const
964 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
967 const std::string& WebEngine::GetUrl()
969 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
972 NativeImageInterfacePtr WebEngine::GetNativeImageSource()
975 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
979 void WebEngine::LoadHtmlString( const std::string& htmlString )
983 void WebEngine::Reload()
987 void WebEngine::StopLoading()
991 void WebEngine::Suspend()
995 void WebEngine::Resume()
999 bool WebEngine::CanGoForward()
1001 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
1004 void WebEngine::GoForward()
1006 Internal::Adaptor::GetImplementation( *this ).GoForward();
1009 bool WebEngine::CanGoBack()
1011 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
1014 void WebEngine::GoBack()
1016 Internal::Adaptor::GetImplementation( *this ).GoBack();
1019 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1021 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
1024 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
1028 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1030 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
1033 void WebEngine::JavaScriptAlertReply()
1037 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1039 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
1042 void WebEngine::JavaScriptConfirmReply( bool confirmed )
1046 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1048 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
1051 void WebEngine::JavaScriptPromptReply( const std::string& result )
1055 void WebEngine::ClearAllTilesResources()
1059 void WebEngine::ClearHistory()
1061 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
1064 const std::string& WebEngine::GetUserAgent() const
1066 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
1069 void WebEngine::SetUserAgent( const std::string& userAgent )
1071 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
1074 void WebEngine::ScrollBy( int dx, int dy )
1076 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
1079 void WebEngine::SetScrollPosition( int x, int y )
1081 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
1084 Dali::Vector2 WebEngine::GetScrollPosition() const
1086 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
1089 Dali::Vector2 WebEngine::GetScrollSize() const
1091 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
1094 Dali::Vector2 WebEngine::GetContentSize() const
1096 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
1099 void WebEngine::SetSize( int width, int height )
1103 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
1107 void WebEngine::ClearTilesWhenHidden(bool cleared)
1111 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
1115 void WebEngine::EnableCursorByClient(bool enabled)
1119 std::string WebEngine::GetSelectedText() const
1124 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
1129 bool WebEngine::SendKeyEvent( const KeyEvent& event )
1134 bool WebEngine::SendHoverEvent( const HoverEvent& event )
1139 bool WebEngine::SendWheelEvent( const WheelEvent& event )
1144 void WebEngine::SetFocus( bool focused )
1148 void WebEngine::UpdateDisplayArea( Dali::Rect< int > displayArea )
1152 void WebEngine::EnableVideoHole( bool enabled )
1156 void WebEngine::EnableMouseEvents( bool enabled )
1160 void WebEngine::EnableKeyEvents( bool enabled )
1164 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadStartedSignal()
1166 return Internal::Adaptor::GetImplementation( *this ).PageLoadStartedSignal();
1169 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadInProgressSignal()
1171 return Internal::Adaptor::GetImplementation( *this ).PageLoadInProgressSignal();
1174 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadFinishedSignal()
1176 return Internal::Adaptor::GetImplementation( *this ).PageLoadFinishedSignal();
1179 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& WebEngine::PageLoadErrorSignal()
1181 return Internal::Adaptor::GetImplementation( *this ).PageLoadErrorSignal();
1184 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& WebEngine::ScrollEdgeReachedSignal()
1186 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeReachedSignal();
1189 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& WebEngine::UrlChangedSignal()
1191 return Internal::Adaptor::GetImplementation( *this ).UrlChangedSignal();
1194 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& WebEngine::FormRepostDecisionSignal()
1196 return Internal::Adaptor::GetImplementation( *this ).FormRepostDecisionSignal();
1199 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
1201 return Internal::Adaptor::GetImplementation( *this ).FrameRenderedSignal();
1204 } // namespace Dali;