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>
33 #include <toolkit-application.h>
49 // Generally only one WebEngine instance exists.
50 // If > 1, a new web engine has been created by CreateWindowSignal.
51 static WebEngine* gInstance = 0;
52 static int gInstanceCount = 0;
57 bool OnEvaluteJavaScript();
58 bool OnJavaScriptAlert();
59 bool OnJavaScriptConfirm();
60 bool OnJavaScriptPrompt();
62 bool OnScreenshotCaptured();
63 bool OnVideoPlaying();
64 bool OnGeolocationPermission();
65 bool OnClearHistory();
67 static void ConnectToGlobalSignal( bool ( *func )() )
69 Dali::Timer timer = Dali::Timer::New( 0 );
70 timer.TickSignal().Connect( func );
73 static void DisconnectFromGlobalSignal( bool ( *func )() )
75 Dali::Timer timer = Dali::Timer::New( 0 );
76 timer.TickSignal().Disconnect( func );
78 } // namespace anonymous
80 class MockWebEngineContext : public Dali::WebEngineContext
83 MockWebEngineContext()
84 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
88 Dali::WebEngineContext::CacheModel GetCacheModel() const override
93 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
95 mockModel = cacheModel;
98 void SetProxyUri( const std::string& uri ) override
102 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
106 void SetCertificateFilePath( const std::string& certificatePath ) override
110 void DeleteWebDatabase() override
114 void DeleteWebStorage() override
118 void DeleteLocalFileSystem() override
122 void DisableCache( bool cacheDisabled ) override
126 void ClearCache() override
131 Dali::WebEngineContext::CacheModel mockModel;
134 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
137 MockWebEngineCookieManager()
138 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
142 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
144 mockCookieAcceptPolicy = policy;
147 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
149 return mockCookieAcceptPolicy;
152 void ClearCookies() override
156 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
161 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
164 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
167 MockWebEngineBackForwardListItem()
168 : mockUrl( "http://url" ),
169 mockTitle( "title" ),
170 mockOriginalUrl( "http://originalurl" )
174 std::string GetUrl() const override
179 std::string GetTitle() const override
184 std::string GetOriginalUrl() const override
186 return mockOriginalUrl;
191 std::string mockTitle;
192 std::string mockOriginalUrl;
195 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
198 MockWebEngineBackForwardList( )
200 pMockItem( &mockItem )
204 Dali::WebEngineBackForwardListItem& GetCurrentItem() const override
209 Dali::WebEngineBackForwardListItem& GetItemAtIndex( uint32_t index ) const override
214 uint32_t GetItemCount() const override
220 MockWebEngineBackForwardListItem mockItem;
221 WebEngineBackForwardListItem* pMockItem;
224 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
227 MockWebEngineFormRepostDecision()
231 void Reply(bool allowed) override {}
234 class MockWebEngineSettings : public WebEngineSettings
237 MockWebEngineSettings()
238 : mockDefaultFontSize( 16 ),
239 mockJavaScriptEnabled( true ),
240 mockAutoFittingEnabled ( true ),
241 mockPluginsEnabled ( true ),
242 mockPrivateBrowsingEnabled( true ),
243 mockLinkMagnifierEnabled( true ),
244 mockKeypadWithoutUserActionUsed( true ),
245 mockAutofillPasswordFormEnabled( true ),
246 mockFormCandidateDataEnabled( true ),
247 mockTextSelectionEnabled( true ),
248 mockTextAutosizingEnable( true ),
249 mockArrowScrollEnable( true ),
250 mockClipboardEnabled( true ),
251 mockImePanelEnabled( true ),
252 mockImageLoadedAutomatically( true ),
253 mockDefaultTextEncodingName()
257 uint32_t GetDefaultFontSize() const override
259 return mockDefaultFontSize;
262 void SetDefaultFontSize( uint32_t size ) override
264 mockDefaultFontSize = size;
267 bool IsJavaScriptEnabled() const override
269 return mockJavaScriptEnabled;
272 void EnableJavaScript( bool enabled ) override
274 mockJavaScriptEnabled = enabled;
277 bool IsAutoFittingEnabled() const override
279 return mockAutoFittingEnabled;
282 void EnableAutoFitting( bool enabled ) override
284 mockAutoFittingEnabled = enabled;
287 bool ArePluginsEnabled() const override
289 return mockPluginsEnabled;
292 void EnablePlugins( bool enabled ) override
294 mockPluginsEnabled = enabled;
297 bool IsPrivateBrowsingEnabled() const override
299 return mockPrivateBrowsingEnabled;
302 void EnablePrivateBrowsing( bool enabled ) override
304 mockPrivateBrowsingEnabled = enabled;
307 bool IsLinkMagnifierEnabled() const override
309 return mockLinkMagnifierEnabled;
312 void EnableLinkMagnifier( bool enabled ) override
314 mockLinkMagnifierEnabled = enabled;
317 bool IsKeypadWithoutUserActionUsed() const override
319 return mockKeypadWithoutUserActionUsed;
322 void UseKeypadWithoutUserAction( bool used ) override
324 mockKeypadWithoutUserActionUsed = used;
327 bool IsAutofillPasswordFormEnabled() const override
329 return mockAutofillPasswordFormEnabled;
332 void EnableAutofillPasswordForm( bool enabled ) override
334 mockAutofillPasswordFormEnabled = enabled;
337 bool IsFormCandidateDataEnabled() const override
339 return mockFormCandidateDataEnabled;
342 void EnableFormCandidateData( bool enabled ) override
344 mockFormCandidateDataEnabled = enabled;
347 bool IsTextSelectionEnabled() const override
349 return mockTextSelectionEnabled;
352 void EnableTextSelection( bool enabled ) override
354 mockTextSelectionEnabled = enabled;
357 bool IsTextAutosizingEnabled() const override
359 return mockTextAutosizingEnable;
362 void EnableTextAutosizing( bool enabled ) override
364 mockTextAutosizingEnable = enabled;
367 bool IsArrowScrollEnabled() const override
369 return mockArrowScrollEnable;
372 void EnableArrowScroll( bool enabled ) override
374 mockArrowScrollEnable = enabled;
377 bool IsClipboardEnabled() const override
379 return mockClipboardEnabled;
382 void EnableClipboard( bool enabled ) override
384 mockClipboardEnabled = enabled;
387 bool IsImePanelEnabled() const override
389 return mockImePanelEnabled;
392 void EnableImePanel( bool enabled ) override
394 mockImePanelEnabled = enabled;
397 bool AreImagesLoadedAutomatically() const override
399 return mockImageLoadedAutomatically;
402 void AllowImagesLoadAutomatically( bool automatic ) override
404 mockImageLoadedAutomatically = automatic;
407 std::string GetDefaultTextEncodingName() const override
409 return mockDefaultTextEncodingName;
412 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
414 mockDefaultTextEncodingName = defaultTextEncodingName;
417 void AllowMixedContents( bool allowed ) override
421 void EnableSpatialNavigation( bool enabled ) override
425 void EnableWebSecurity( bool enabled ) override
429 void EnableCacheBuilder( bool enabled ) override
433 void UseScrollbarThumbFocusNotifications( bool used ) override
437 void EnableDoNotTrack( bool enabled ) override
441 void AllowFileAccessFromExternalUrl( bool allowed ) override
445 void AllowScriptsOpenWindows( bool allowed ) override
450 int mockDefaultFontSize;
451 bool mockJavaScriptEnabled;
452 bool mockAutoFittingEnabled;
453 bool mockPluginsEnabled;
454 bool mockPrivateBrowsingEnabled;
455 bool mockLinkMagnifierEnabled;
456 bool mockKeypadWithoutUserActionUsed;
457 bool mockAutofillPasswordFormEnabled;
458 bool mockFormCandidateDataEnabled;
459 bool mockTextSelectionEnabled;
460 bool mockTextAutosizingEnable;
461 bool mockArrowScrollEnable;
462 bool mockClipboardEnabled;
463 bool mockImePanelEnabled;
464 bool mockImageLoadedAutomatically;
465 std::string mockDefaultTextEncodingName;
468 class WebEngine: public Dali::BaseObject
472 using JavaScriptEvaluatedResultCallback = std::function<void(const std::string&)>;
476 , mCurrentPlusOnePos( 0 )
478 , mEvaluating( false )
479 , mScrollPosition( 0, 0 )
480 , mScrollSize( 500, 500 )
481 , mContentSize( 500, 500 )
484 if ( gInstanceCount == 1 ) // only first web engine need be saved.
489 mockWebEngineSettings = new MockWebEngineSettings();
490 mockWebEngineContext = new MockWebEngineContext();
491 mockWebEngineCookieManager = new MockWebEngineCookieManager();
492 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
498 if( !gInstanceCount )
503 delete mockWebEngineSettings;
504 delete mockWebEngineContext;
505 delete mockWebEngineCookieManager;
506 delete mockWebEngineBackForwardList;
509 Dali::WebEngineSettings& GetSettings() const
511 return *mockWebEngineSettings;
514 Dali::WebEngineContext& GetContext() const
516 return *mockWebEngineContext;
519 Dali::WebEngineCookieManager& GetCookieManager() const
521 return *mockWebEngineCookieManager;
524 Dali::WebEngineBackForwardList& GetBackForwardList() const
526 return *mockWebEngineBackForwardList;
529 void LoadUrl( const std::string& url )
532 ConnectToGlobalSignal( &OnLoadUrl );
535 const std::string& GetUrl() const
540 std::string GetTitle() const
542 return std::string("title");
545 Dali::PixelData GetFavicon() const
547 uint8_t* faviconData = new uint8_t[ 16 ];
549 faviconData[ 0 ] = 0xff;
550 faviconData[ 1 ] = 0x00;
551 faviconData[ 2 ] = 0x00;
552 faviconData[ 3 ] = 0xff;
553 faviconData[ 4 ] = 0xff;
554 faviconData[ 5 ] = 0x00;
555 faviconData[ 6 ] = 0x00;
556 faviconData[ 7 ] = 0xff;
557 faviconData[ 8 ] = 0xff;
558 faviconData[ 9 ] = 0x00;
559 faviconData[ 10 ] = 0x00;
560 faviconData[ 11 ] = 0xff;
561 faviconData[ 12 ] = 0xff;
562 faviconData[ 13 ] = 0x00;
563 faviconData[ 14 ] = 0x00;
564 faviconData[ 15 ] = 0xff;
566 return Dali::PixelData::New( faviconData, 16, 2, 2,
567 Dali::Pixel::Format::RGBA8888,
568 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
571 bool CanGoForward() const
573 return mHistory.size() > mCurrentPlusOnePos;
578 ConnectToGlobalSignal( &OnGoForward );
581 bool CanGoBack() const
583 return mCurrentPlusOnePos > 1;
588 ConnectToGlobalSignal( &OnGoBack );
591 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
597 ConnectToGlobalSignal( &OnEvaluteJavaScript );
599 mResultCallbacks.push_back( resultHandler );
603 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
607 ConnectToGlobalSignal( &OnJavaScriptAlert );
608 mJavaScriptAlertCallback = callback;
612 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
616 ConnectToGlobalSignal( &OnJavaScriptConfirm );
617 mJavaScriptConfirmCallback = callback;
621 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
625 ConnectToGlobalSignal( &OnJavaScriptPrompt );
626 mJavaScriptPromptCallback = callback;
632 ConnectToGlobalSignal( &OnClearHistory );
635 const std::string& GetUserAgent() const
640 void SetUserAgent( const std::string& userAgent )
642 mUserAgent = userAgent;
645 void ScrollBy( int dx, int dy )
647 mScrollPosition += Dali::Vector2( dx, dy );
648 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
650 ConnectToGlobalSignal( &OnScrollEdge );
654 bool ScrollEdgeBy( int dx, int dy )
656 mScrollPosition += Dali::Vector2( dx, dy );
657 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
659 ConnectToGlobalSignal( &OnScrollEdge );
664 void SetScrollPosition( int x, int y )
666 mScrollPosition.x = x;
667 mScrollPosition.y = y;
670 Dali::Vector2 GetScrollPosition() const
672 return mScrollPosition;
675 Dali::Vector2 GetScrollSize() const
680 Dali::Vector2 GetContentSize() const
685 void SetPageZoomFactor(float zoomFactor)
687 mPageZoomFactor = zoomFactor;
690 float GetPageZoomFactor() const
692 return mPageZoomFactor;
695 void SetTextZoomFactor(float zoomFactor)
697 mTextZoomFactor = zoomFactor;
700 float GetTextZoomFactor() const
702 return mTextZoomFactor;
705 float GetLoadProgressPercentage() const
710 void SetScaleFactor(float scaleFactor, Dali::Vector2 point)
712 mScaleFactor = scaleFactor;
715 float GetScaleFactor() const
720 Dali::PixelData GetScreenshot(Dali::Rect<int> viewArea, float scaleFactor)
722 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
723 uint8_t* pixel = new uint8_t[ bufferSize ];
724 memset(pixel, 0xff, bufferSize);
725 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
726 Dali::Pixel::Format::RGBA8888,
727 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
730 bool GetScreenshotAsynchronously(Dali::Rect<int> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
734 ConnectToGlobalSignal( &OnScreenshotCaptured );
735 mScreenshotCapturedCallback = callback;
740 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
744 ConnectToGlobalSignal( &OnVideoPlaying );
745 mVideoPlayingCallback = callback;
750 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
754 ConnectToGlobalSignal( &OnGeolocationPermission );
755 mGeolocationPermissionCallback = callback;
759 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal()
761 return mPageLoadStartedSignal;
764 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadInProgressSignal()
766 return mPageLoadInProgressSignal;
769 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal()
771 return mPageLoadFinishedSignal;
774 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal()
776 return mPageLoadErrorSignal;
779 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal()
781 return mScrollEdgeReachedSignal;
784 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& UrlChangedSignal()
786 return mUrlChangedSignal;
789 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal()
791 return mFormRepostDecisionSignal;
794 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
796 return mFrameRenderedSignal;
800 std::vector< std::string > mHistory;
801 size_t mCurrentPlusOnePos;
802 std::string mUserAgent;
803 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
804 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
805 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
806 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
807 std::vector<JavaScriptEvaluatedResultCallback> mResultCallbacks;
809 float mPageZoomFactor;
810 float mTextZoomFactor;
813 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
814 Dali::Vector2 mScrollPosition;
815 Dali::Vector2 mScrollSize;
816 Dali::Vector2 mContentSize;
817 WebEngineBackForwardList* mockWebEngineBackForwardList;
818 WebEngineContext* mockWebEngineContext;
819 WebEngineCookieManager* mockWebEngineCookieManager;
820 WebEngineSettings* mockWebEngineSettings;
821 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
822 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
823 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
825 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
826 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
827 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
828 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
829 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
830 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
839 DisconnectFromGlobalSignal( &OnGoBack );
841 if( gInstance && gInstance->CanGoBack() )
843 gInstance->mCurrentPlusOnePos--;
850 DisconnectFromGlobalSignal( &OnGoForward );
852 if( gInstance && gInstance->CanGoForward() )
854 gInstance->mCurrentPlusOnePos++;
861 DisconnectFromGlobalSignal( &OnLoadUrl );
865 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
867 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
869 gInstance->mHistory.push_back( gInstance->mUrl );
870 gInstance->mCurrentPlusOnePos++;
871 gInstance->mPageLoadStartedSignal.Emit( gInstance->mUrl );
872 gInstance->mPageLoadInProgressSignal.Emit( gInstance->mUrl );
873 gInstance->mPageLoadFinishedSignal.Emit( gInstance->mUrl );
874 gInstance->mUrlChangedSignal.Emit( "http://new-test" );
876 std::shared_ptr<Dali::WebEngineFormRepostDecision> decision(new MockWebEngineFormRepostDecision());
877 gInstance->mFormRepostDecisionSignal.Emit(decision);
878 gInstance->mFrameRenderedSignal.Emit();
885 DisconnectFromGlobalSignal( &OnScrollEdge );
889 gInstance->mScrollEdgeReachedSignal.Emit( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
895 bool OnEvaluteJavaScript()
897 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
901 for( auto& func : gInstance->mResultCallbacks )
905 gInstance->mResultCallbacks.clear();
910 bool OnJavaScriptAlert()
912 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
915 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
920 bool OnJavaScriptConfirm()
922 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
925 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
930 bool OnJavaScriptPrompt()
932 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
935 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
940 bool OnScreenshotCaptured()
942 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
945 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
946 memset(pixel, 0xff, 2 * 2 * 4);
947 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
948 Dali::Pixel::Format::RGBA8888,
949 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
950 gInstance->mScreenshotCapturedCallback( data );
955 bool OnVideoPlaying()
957 DisconnectFromGlobalSignal( &OnVideoPlaying );
960 gInstance->mVideoPlayingCallback( true );
965 bool OnGeolocationPermission()
967 DisconnectFromGlobalSignal( &OnGeolocationPermission );
970 gInstance->mGeolocationPermissionCallback( "", "" );
975 bool OnClearHistory()
977 DisconnectFromGlobalSignal( &OnClearHistory );
979 if( gInstance && gInstance->mCurrentPlusOnePos )
981 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
982 std::vector< std::string >().swap( gInstance->mHistory );
983 gInstance->mHistory.push_back( url );
984 gInstance->mCurrentPlusOnePos = 1;
991 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
993 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
994 BaseObject& handle = webEngine.GetBaseObject();
995 return static_cast< Internal::Adaptor::WebEngine& >( handle );
998 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1000 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1001 const BaseObject& handle = webEngine.GetBaseObject();
1002 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1005 } // namespace Adaptor
1007 } // namespace Internal
1009 // Dali::WebEngine Implementation
1010 WebEngine::WebEngine()
1014 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1015 : BaseHandle( internal )
1019 WebEngine::~WebEngine()
1023 WebEngine WebEngine::New()
1025 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1027 return WebEngine( baseObject );
1030 WebEngine::WebEngine( const WebEngine& WebEngine )
1031 : BaseHandle( WebEngine )
1035 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
1037 BaseHandle::operator=( webEngine );
1041 WebEngine WebEngine::DownCast( BaseHandle handle )
1043 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
1046 void WebEngine::Create( int width, int height, const std::string& locale, const std::string& timezoneId )
1050 void WebEngine::Create( int width, int height, int argc, char** argv )
1054 void WebEngine::Destroy()
1058 WebEngineSettings& WebEngine::GetSettings() const
1060 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
1063 WebEngineContext& WebEngine::GetContext() const
1065 return Internal::Adaptor::GetImplementation( *this ).GetContext();
1068 WebEngineCookieManager& WebEngine::GetCookieManager() const
1070 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
1073 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
1075 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
1078 void WebEngine::LoadUrl( const std::string& url )
1080 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
1083 std::string WebEngine::GetTitle() const
1085 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
1088 Dali::PixelData WebEngine::GetFavicon() const
1090 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
1093 const std::string& WebEngine::GetUrl()
1095 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
1098 NativeImageInterfacePtr WebEngine::GetNativeImageSource()
1101 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
1105 void WebEngine::LoadHtmlString( const std::string& htmlString )
1109 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
1114 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
1119 void WebEngine::Reload()
1123 bool WebEngine::ReloadWithoutCache()
1128 void WebEngine::StopLoading()
1132 void WebEngine::Suspend()
1136 void WebEngine::Resume()
1140 void WebEngine::SuspendNetworkLoading()
1144 void WebEngine::ResumeNetworkLoading()
1148 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
1153 bool WebEngine::RemoveCustomHeader(const std::string& name)
1158 uint32_t WebEngine::StartInspectorServer(uint32_t port)
1163 bool WebEngine::StopInspectorServer()
1168 bool WebEngine::CanGoForward()
1170 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
1173 void WebEngine::GoForward()
1175 Internal::Adaptor::GetImplementation( *this ).GoForward();
1178 bool WebEngine::CanGoBack()
1180 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
1183 void WebEngine::GoBack()
1185 Internal::Adaptor::GetImplementation( *this ).GoBack();
1188 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1190 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
1193 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
1197 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1199 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
1202 void WebEngine::JavaScriptAlertReply()
1206 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1208 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
1211 void WebEngine::JavaScriptConfirmReply( bool confirmed )
1215 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1217 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
1220 void WebEngine::JavaScriptPromptReply( const std::string& result )
1224 void WebEngine::ClearAllTilesResources()
1228 void WebEngine::ClearHistory()
1230 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
1233 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1235 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
1238 float WebEngine::GetScaleFactor() const
1240 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
1243 void WebEngine::ActivateAccessibility(bool activated)
1247 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
1252 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
1256 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int> viewArea, float scaleFactor)
1258 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
1261 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1263 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
1266 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1268 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
1271 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1273 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
1276 const std::string& WebEngine::GetUserAgent() const
1278 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
1281 void WebEngine::SetUserAgent( const std::string& userAgent )
1283 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
1286 void WebEngine::ScrollBy( int dx, int dy )
1288 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
1291 bool WebEngine::ScrollEdgeBy( int dx, int dy )
1293 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
1296 void WebEngine::SetScrollPosition( int x, int y )
1298 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
1301 Dali::Vector2 WebEngine::GetScrollPosition() const
1303 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
1306 Dali::Vector2 WebEngine::GetScrollSize() const
1308 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
1311 Dali::Vector2 WebEngine::GetContentSize() const
1313 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
1316 void WebEngine::SetSize( int width, int height )
1320 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
1324 void WebEngine::ClearTilesWhenHidden(bool cleared)
1328 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
1332 void WebEngine::EnableCursorByClient(bool enabled)
1336 std::string WebEngine::GetSelectedText() const
1341 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
1346 bool WebEngine::SendKeyEvent( const KeyEvent& event )
1351 bool WebEngine::SendHoverEvent( const HoverEvent& event )
1356 bool WebEngine::SendWheelEvent( const WheelEvent& event )
1361 void WebEngine::SetFocus( bool focused )
1365 void WebEngine::SetPageZoomFactor(float zoomFactor)
1367 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
1370 float WebEngine::GetPageZoomFactor() const
1372 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
1375 void WebEngine::SetTextZoomFactor(float zoomFactor)
1377 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
1380 float WebEngine::GetTextZoomFactor() const
1382 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
1385 float WebEngine::GetLoadProgressPercentage() const
1387 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
1390 void WebEngine::UpdateDisplayArea( Dali::Rect< int > displayArea )
1394 void WebEngine::EnableVideoHole( bool enabled )
1398 void WebEngine::EnableMouseEvents( bool enabled )
1402 void WebEngine::EnableKeyEvents( bool enabled )
1406 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadStartedSignal()
1408 return Internal::Adaptor::GetImplementation( *this ).PageLoadStartedSignal();
1411 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadInProgressSignal()
1413 return Internal::Adaptor::GetImplementation( *this ).PageLoadInProgressSignal();
1416 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadFinishedSignal()
1418 return Internal::Adaptor::GetImplementation( *this ).PageLoadFinishedSignal();
1421 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& WebEngine::PageLoadErrorSignal()
1423 return Internal::Adaptor::GetImplementation( *this ).PageLoadErrorSignal();
1426 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& WebEngine::ScrollEdgeReachedSignal()
1428 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeReachedSignal();
1431 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& WebEngine::UrlChangedSignal()
1433 return Internal::Adaptor::GetImplementation( *this ).UrlChangedSignal();
1436 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& WebEngine::FormRepostDecisionSignal()
1438 return Internal::Adaptor::GetImplementation( *this ).FormRepostDecisionSignal();
1441 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
1443 return Internal::Adaptor::GetImplementation( *this ).FrameRenderedSignal();
1446 } // namespace Dali;