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-certificate.h>
24 #include <dali/devel-api/adaptor-framework/web-engine-console-message.h>
25 #include <dali/devel-api/adaptor-framework/web-engine-context.h>
26 #include <dali/devel-api/adaptor-framework/web-engine-cookie-manager.h>
27 #include <dali/devel-api/adaptor-framework/web-engine-form-repost-decision.h>
28 #include <dali/devel-api/adaptor-framework/web-engine-frame.h>
29 #include <dali/devel-api/adaptor-framework/web-engine-http-auth-handler.h>
30 #include <dali/devel-api/adaptor-framework/web-engine-load-error.h>
31 #include <dali/devel-api/adaptor-framework/web-engine-policy-decision.h>
32 #include <dali/devel-api/adaptor-framework/web-engine-request-interceptor.h>
33 #include <dali/devel-api/adaptor-framework/web-engine-security-origin.h>
34 #include <dali/devel-api/adaptor-framework/web-engine-settings.h>
35 #include <dali/public-api/adaptor-framework/native-image-source.h>
36 #include <dali/public-api/images/pixel-data.h>
37 #include <dali/public-api/object/any.h>
38 #include <dali/public-api/object/base-object.h>
41 #include <toolkit-application.h>
53 class MockWebEngineContext;
58 // Generally only one WebEngine instance exists.
59 // If > 1, a new web engine has been created by CreateWindowSignal.
60 static WebEngine* gInstance = nullptr;
61 static int gInstanceCount = 0;
62 static MockWebEngineContext* gWebEngineContextInstance = nullptr;
67 bool OnEvaluteJavaScript();
68 bool OnJavaScriptAlert();
69 bool OnJavaScriptConfirm();
70 bool OnJavaScriptPrompt();
72 bool OnScreenshotCaptured();
73 bool OnVideoPlaying();
74 bool OnGeolocationPermission();
75 bool OnClearHistory();
76 bool OnSecurityOriginAcquired();
77 bool OnStorageUsageAcquired();
78 bool OnFormPasswordAcquired();
79 bool OnDownloadStarted();
80 bool OnMimeOverridden();
82 static void ConnectToGlobalSignal( bool ( *func )() )
84 Dali::Timer timer = Dali::Timer::New( 0 );
85 timer.TickSignal().Connect( func );
88 static void DisconnectFromGlobalSignal( bool ( *func )() )
90 Dali::Timer timer = Dali::Timer::New( 0 );
91 timer.TickSignal().Disconnect( func );
93 } // namespace anonymous
95 class MockWebEngineContext : public Dali::WebEngineContext
98 MockWebEngineContext()
99 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
103 Dali::WebEngineContext::CacheModel GetCacheModel() const override
108 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
110 mockModel = cacheModel;
113 void SetProxyUri( const std::string& uri ) override
117 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
121 void SetCertificateFilePath( const std::string& certificatePath ) override
125 void DeleteAllWebDatabase() override
129 bool GetWebDatabaseOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
133 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
134 mSecurityOriginAcquiredCallback = callback;
139 bool DeleteWebDatabase(Dali::WebEngineSecurityOrigin& origin)
144 bool GetWebStorageOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
148 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
149 mSecurityOriginAcquiredCallback = callback;
154 bool GetWebStorageUsageForOrigin(Dali::WebEngineSecurityOrigin& origin, Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback callback)
158 ConnectToGlobalSignal(&OnStorageUsageAcquired);
159 mStorageUsageAcquiredCallback = callback;
164 void DeleteAllWebStorage() override
168 bool DeleteWebStorageOrigin(Dali::WebEngineSecurityOrigin& origin)
173 void DeleteLocalFileSystem() override
177 void DisableCache( bool cacheDisabled ) override
181 void ClearCache() override
185 bool DeleteApplicationCache(Dali::WebEngineSecurityOrigin& origin)
190 void GetFormPasswordList(Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback callback)
194 ConnectToGlobalSignal(&OnFormPasswordAcquired);
195 mFormPasswordAcquiredCallback = callback;
199 void RegisterDownloadStartedCallback(Dali::WebEngineContext::WebEngineDownloadStartedCallback callback)
203 ConnectToGlobalSignal(&OnDownloadStarted);
204 mDownloadStartedCallback = callback;
208 void RegisterMimeOverriddenCallback(Dali::WebEngineContext::WebEngineMimeOverriddenCallback callback)
212 ConnectToGlobalSignal(&OnMimeOverridden);
213 mMimeOverriddenCallback = callback;
218 Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback mSecurityOriginAcquiredCallback;
219 Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback mStorageUsageAcquiredCallback;
220 Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback mFormPasswordAcquiredCallback;
221 Dali::WebEngineContext::WebEngineDownloadStartedCallback mDownloadStartedCallback;
222 Dali::WebEngineContext::WebEngineMimeOverriddenCallback mMimeOverriddenCallback;
225 Dali::WebEngineContext::CacheModel mockModel;
228 class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin
231 MockWebEngineSecurityOrigin()
232 : mockUrl("https://test.html")
233 , mockPotocol("https")
237 std::string GetHost() const
242 std::string GetProtocol() const
249 std::string mockPotocol;
252 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
255 MockWebEngineCookieManager()
256 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
260 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
262 mockCookieAcceptPolicy = policy;
265 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
267 return mockCookieAcceptPolicy;
270 void ClearCookies() override
274 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
279 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
282 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
285 MockWebEngineBackForwardListItem()
286 : mockUrl( "http://url" ),
287 mockTitle( "title" ),
288 mockOriginalUrl( "http://originalurl" )
292 std::string GetUrl() const override
297 std::string GetTitle() const override
302 std::string GetOriginalUrl() const override
304 return mockOriginalUrl;
309 std::string mockTitle;
310 std::string mockOriginalUrl;
313 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
316 MockWebEngineBackForwardList()
318 pMockItem( &mockItem )
322 Dali::WebEngineBackForwardListItem& GetCurrentItem() const override
327 Dali::WebEngineBackForwardListItem& GetItemAtIndex( uint32_t index ) const override
332 uint32_t GetItemCount() const override
338 MockWebEngineBackForwardListItem mockItem;
339 WebEngineBackForwardListItem* pMockItem;
342 class MockWebEngineCertificate : public Dali::WebEngineCertificate
345 MockWebEngineCertificate()
349 void Allow(bool allowed) override
353 bool IsFromMainFrame() const override
358 std::string GetPem() const override
363 bool IsContextSecure() const override
369 class MockWebEngineHttpAuthHandler : public Dali::WebEngineHttpAuthHandler
372 MockWebEngineHttpAuthHandler()
376 std::string GetRealm() const override
381 void Suspend() override
385 void UseCredential(const std::string& user, const std::string& password) override
389 void CancelCredential() override
394 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
397 MockWebEngineFormRepostDecision()
401 void Reply(bool allowed) override {}
404 class MockWebEngineFrame : public Dali::WebEngineFrame
411 bool IsMainFrame() const override
417 class MockWebEnginePolicyDecision : public Dali::WebEnginePolicyDecision
420 MockWebEnginePolicyDecision()
424 std::string GetUrl() const override
426 return "http://test.html";
429 std::string GetCookie() const override
434 Dali::WebEnginePolicyDecision::DecisionType GetDecisionType() const
436 return Dali::WebEnginePolicyDecision::DecisionType::USE;
439 std::string GetResponseMime() const
444 int32_t GetResponseStatusCode() const
449 Dali::WebEnginePolicyDecision::NavigationType GetNavigationType() const
451 return Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
454 Dali::WebEngineFrame& GetFrame() const
456 return *(Dali::WebEngineFrame*)(&mockWebFrame);
459 std::string GetScheme() const
480 MockWebEngineFrame mockWebFrame;
483 class MockWebEngineRequestInterceptor : public WebEngineRequestInterceptor
486 MockWebEngineRequestInterceptor()
490 std::string GetUrl() const override
492 return "http://test.html";
495 bool Ignore() override
500 bool SetResponseStatus(int statusCode, const std::string &customedStatusText) override
505 bool AddResponseHeader(const std::string &fieldName, const std::string &fieldValue) override
510 bool AddResponseBody(const std::string &body, uint32_t length) override
516 class MockWebEngineConsoleMessage : public Dali::WebEngineConsoleMessage
519 MockWebEngineConsoleMessage()
523 std::string GetSource() const override
528 uint32_t GetLine() const override
533 SeverityLevel GetSeverityLevel() const override
535 return SeverityLevel::EMPTY;
538 std::string GetText() const override
540 return "This is a text.";
544 class MockWebEngineLoadError : public Dali::WebEngineLoadError
547 MockWebEngineLoadError(const std::string& url)
552 std::string GetUrl() const override
557 ErrorCode GetCode() const override
559 return ErrorCode::UNKNOWN;
562 std::string GetDescription() const override
564 return "This is an error.";
567 ErrorType GetType() const override
569 return ErrorType::NONE;
576 class MockWebEngineSettings : public WebEngineSettings
579 MockWebEngineSettings()
580 : mockDefaultFontSize( 16 ),
581 mockJavaScriptEnabled( true ),
582 mockAutoFittingEnabled ( true ),
583 mockPluginsEnabled ( true ),
584 mockPrivateBrowsingEnabled( true ),
585 mockLinkMagnifierEnabled( true ),
586 mockKeypadWithoutUserActionUsed( true ),
587 mockAutofillPasswordFormEnabled( true ),
588 mockFormCandidateDataEnabled( true ),
589 mockTextSelectionEnabled( true ),
590 mockTextAutosizingEnable( true ),
591 mockArrowScrollEnable( true ),
592 mockClipboardEnabled( true ),
593 mockImePanelEnabled( true ),
594 mockImageLoadedAutomatically( true ),
595 mockDefaultTextEncodingName()
599 uint32_t GetDefaultFontSize() const override
601 return mockDefaultFontSize;
604 void SetDefaultFontSize( uint32_t size ) override
606 mockDefaultFontSize = size;
609 bool IsJavaScriptEnabled() const override
611 return mockJavaScriptEnabled;
614 void EnableJavaScript( bool enabled ) override
616 mockJavaScriptEnabled = enabled;
619 bool IsAutoFittingEnabled() const override
621 return mockAutoFittingEnabled;
624 void EnableAutoFitting( bool enabled ) override
626 mockAutoFittingEnabled = enabled;
629 bool ArePluginsEnabled() const override
631 return mockPluginsEnabled;
634 void EnablePlugins( bool enabled ) override
636 mockPluginsEnabled = enabled;
639 bool IsPrivateBrowsingEnabled() const override
641 return mockPrivateBrowsingEnabled;
644 void EnablePrivateBrowsing( bool enabled ) override
646 mockPrivateBrowsingEnabled = enabled;
649 bool IsLinkMagnifierEnabled() const override
651 return mockLinkMagnifierEnabled;
654 void EnableLinkMagnifier( bool enabled ) override
656 mockLinkMagnifierEnabled = enabled;
659 bool IsKeypadWithoutUserActionUsed() const override
661 return mockKeypadWithoutUserActionUsed;
664 void UseKeypadWithoutUserAction( bool used ) override
666 mockKeypadWithoutUserActionUsed = used;
669 bool IsAutofillPasswordFormEnabled() const override
671 return mockAutofillPasswordFormEnabled;
674 void EnableAutofillPasswordForm( bool enabled ) override
676 mockAutofillPasswordFormEnabled = enabled;
679 bool IsFormCandidateDataEnabled() const override
681 return mockFormCandidateDataEnabled;
684 void EnableFormCandidateData( bool enabled ) override
686 mockFormCandidateDataEnabled = enabled;
689 bool IsTextSelectionEnabled() const override
691 return mockTextSelectionEnabled;
694 void EnableTextSelection( bool enabled ) override
696 mockTextSelectionEnabled = enabled;
699 bool IsTextAutosizingEnabled() const override
701 return mockTextAutosizingEnable;
704 void EnableTextAutosizing( bool enabled ) override
706 mockTextAutosizingEnable = enabled;
709 bool IsArrowScrollEnabled() const override
711 return mockArrowScrollEnable;
714 void EnableArrowScroll( bool enabled ) override
716 mockArrowScrollEnable = enabled;
719 bool IsClipboardEnabled() const override
721 return mockClipboardEnabled;
724 void EnableClipboard( bool enabled ) override
726 mockClipboardEnabled = enabled;
729 bool IsImePanelEnabled() const override
731 return mockImePanelEnabled;
734 void EnableImePanel( bool enabled ) override
736 mockImePanelEnabled = enabled;
739 bool AreImagesLoadedAutomatically() const override
741 return mockImageLoadedAutomatically;
744 void AllowImagesLoadAutomatically( bool automatic ) override
746 mockImageLoadedAutomatically = automatic;
749 std::string GetDefaultTextEncodingName() const override
751 return mockDefaultTextEncodingName;
754 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
756 mockDefaultTextEncodingName = defaultTextEncodingName;
759 void AllowMixedContents( bool allowed ) override
763 void EnableSpatialNavigation( bool enabled ) override
767 void EnableWebSecurity( bool enabled ) override
771 void EnableCacheBuilder( bool enabled ) override
775 void UseScrollbarThumbFocusNotifications( bool used ) override
779 void EnableDoNotTrack( bool enabled ) override
783 void AllowFileAccessFromExternalUrl( bool allowed ) override
787 void AllowScriptsOpenWindows( bool allowed ) override
792 int mockDefaultFontSize;
793 bool mockJavaScriptEnabled;
794 bool mockAutoFittingEnabled;
795 bool mockPluginsEnabled;
796 bool mockPrivateBrowsingEnabled;
797 bool mockLinkMagnifierEnabled;
798 bool mockKeypadWithoutUserActionUsed;
799 bool mockAutofillPasswordFormEnabled;
800 bool mockFormCandidateDataEnabled;
801 bool mockTextSelectionEnabled;
802 bool mockTextAutosizingEnable;
803 bool mockArrowScrollEnable;
804 bool mockClipboardEnabled;
805 bool mockImePanelEnabled;
806 bool mockImageLoadedAutomatically;
807 std::string mockDefaultTextEncodingName;
810 class WebEngine: public Dali::BaseObject
814 using JavaScriptEvaluatedResultCallback = std::function<void(const std::string&)>;
818 , mCurrentPlusOnePos( 0 )
820 , mEvaluating( false )
821 , mScrollPosition( 0, 0 )
822 , mScrollSize( 500, 500 )
823 , mContentSize( 500, 500 )
826 if ( gInstanceCount == 1 ) // only first web engine need be saved.
831 mockWebEngineSettings = new MockWebEngineSettings();
832 MockWebEngineContext* engineContext = new MockWebEngineContext();
833 mockWebEngineContext = engineContext;
834 if ( gInstanceCount == 1 )
836 gWebEngineContextInstance = engineContext;
838 mockWebEngineCookieManager = new MockWebEngineCookieManager();
839 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
845 if( !gInstanceCount )
848 gWebEngineContextInstance = 0;
851 delete mockWebEngineSettings;
852 delete mockWebEngineContext;
853 delete mockWebEngineCookieManager;
854 delete mockWebEngineBackForwardList;
857 Dali::WebEngineSettings& GetSettings() const
859 return *mockWebEngineSettings;
862 Dali::WebEngineContext& GetContext() const
864 return *mockWebEngineContext;
867 Dali::WebEngineCookieManager& GetCookieManager() const
869 return *mockWebEngineCookieManager;
872 Dali::WebEngineBackForwardList& GetBackForwardList() const
874 return *mockWebEngineBackForwardList;
877 void LoadUrl( const std::string& url )
880 ConnectToGlobalSignal( &OnLoadUrl );
883 const std::string& GetUrl() const
888 std::string GetTitle() const
890 return std::string("title");
893 Dali::PixelData GetFavicon() const
895 uint8_t* faviconData = new uint8_t[ 16 ];
897 faviconData[ 0 ] = 0xff;
898 faviconData[ 1 ] = 0x00;
899 faviconData[ 2 ] = 0x00;
900 faviconData[ 3 ] = 0xff;
901 faviconData[ 4 ] = 0xff;
902 faviconData[ 5 ] = 0x00;
903 faviconData[ 6 ] = 0x00;
904 faviconData[ 7 ] = 0xff;
905 faviconData[ 8 ] = 0xff;
906 faviconData[ 9 ] = 0x00;
907 faviconData[ 10 ] = 0x00;
908 faviconData[ 11 ] = 0xff;
909 faviconData[ 12 ] = 0xff;
910 faviconData[ 13 ] = 0x00;
911 faviconData[ 14 ] = 0x00;
912 faviconData[ 15 ] = 0xff;
914 return Dali::PixelData::New( faviconData, 16, 2, 2,
915 Dali::Pixel::Format::RGBA8888,
916 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
919 bool CanGoForward() const
921 return mHistory.size() > mCurrentPlusOnePos;
926 ConnectToGlobalSignal( &OnGoForward );
929 bool CanGoBack() const
931 return mCurrentPlusOnePos > 1;
936 ConnectToGlobalSignal( &OnGoBack );
939 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
945 ConnectToGlobalSignal( &OnEvaluteJavaScript );
947 mResultCallbacks.push_back( resultHandler );
951 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
955 ConnectToGlobalSignal( &OnJavaScriptAlert );
956 mJavaScriptAlertCallback = callback;
960 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
964 ConnectToGlobalSignal( &OnJavaScriptConfirm );
965 mJavaScriptConfirmCallback = callback;
969 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
973 ConnectToGlobalSignal( &OnJavaScriptPrompt );
974 mJavaScriptPromptCallback = callback;
980 ConnectToGlobalSignal( &OnClearHistory );
983 const std::string& GetUserAgent() const
988 void SetUserAgent( const std::string& userAgent )
990 mUserAgent = userAgent;
993 void ScrollBy( int dx, int dy )
995 mScrollPosition += Dali::Vector2( dx, dy );
996 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
998 ConnectToGlobalSignal( &OnScrollEdge );
1002 bool ScrollEdgeBy( int dx, int dy )
1004 mScrollPosition += Dali::Vector2( dx, dy );
1005 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1007 ConnectToGlobalSignal( &OnScrollEdge );
1012 void SetScrollPosition( int x, int y )
1014 mScrollPosition.x = x;
1015 mScrollPosition.y = y;
1018 Dali::Vector2 GetScrollPosition() const
1020 return mScrollPosition;
1023 Dali::Vector2 GetScrollSize() const
1028 Dali::Vector2 GetContentSize() const
1030 return mContentSize;
1033 void SetPageZoomFactor(float zoomFactor)
1035 mPageZoomFactor = zoomFactor;
1038 float GetPageZoomFactor() const
1040 return mPageZoomFactor;
1043 void SetTextZoomFactor(float zoomFactor)
1045 mTextZoomFactor = zoomFactor;
1048 float GetTextZoomFactor() const
1050 return mTextZoomFactor;
1053 float GetLoadProgressPercentage() const
1058 void SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1060 mScaleFactor = scaleFactor;
1063 float GetScaleFactor() const
1065 return mScaleFactor;
1068 Dali::PixelData GetScreenshot(Dali::Rect<int> viewArea, float scaleFactor)
1070 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
1071 uint8_t* pixel = new uint8_t[ bufferSize ];
1072 memset(pixel, 0xff, bufferSize);
1073 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
1074 Dali::Pixel::Format::RGBA8888,
1075 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1078 bool GetScreenshotAsynchronously(Dali::Rect<int> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1082 ConnectToGlobalSignal( &OnScreenshotCaptured );
1083 mScreenshotCapturedCallback = callback;
1088 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1092 ConnectToGlobalSignal( &OnVideoPlaying );
1093 mVideoPlayingCallback = callback;
1098 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1102 ConnectToGlobalSignal( &OnGeolocationPermission );
1103 mGeolocationPermissionCallback = callback;
1107 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal()
1109 return mPageLoadStartedSignal;
1112 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadInProgressSignal()
1114 return mPageLoadInProgressSignal;
1117 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal()
1119 return mPageLoadFinishedSignal;
1122 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal()
1124 return mPageLoadErrorSignal;
1127 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal()
1129 return mScrollEdgeReachedSignal;
1132 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& UrlChangedSignal()
1134 return mUrlChangedSignal;
1137 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal()
1139 return mFormRepostDecisionSignal;
1142 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
1144 return mFrameRenderedSignal;
1147 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& RequestInterceptorSignal()
1149 return mRequestInterceptorSignal;
1152 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& ConsoleMessageSignal()
1154 return mConsoleMessageSignal;
1157 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType& PolicyDecisionSignal()
1159 return mPolicyDecisionSignal;
1162 Dali::WebEnginePlugin::WebEngineCertificateSignalType& CertificateConfirmSignal()
1164 return mCertificateConfirmSignal;
1167 Dali::WebEnginePlugin::WebEngineCertificateSignalType& SslCertificateChangedSignal()
1169 return mSslCertificateChangedSignal;
1172 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& HttpAuthHandlerSignal()
1174 return mHttpAuthHandlerSignal;
1178 std::vector<std::string> mHistory;
1179 size_t mCurrentPlusOnePos;
1180 std::string mUserAgent;
1182 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
1183 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
1184 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
1185 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
1186 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
1187 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
1188 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
1189 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1190 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
1191 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
1192 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal;
1193 Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
1194 Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
1195 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
1198 float mPageZoomFactor;
1199 float mTextZoomFactor;
1202 Dali::Vector2 mScrollPosition;
1203 Dali::Vector2 mScrollSize;
1204 Dali::Vector2 mContentSize;
1205 WebEngineBackForwardList* mockWebEngineBackForwardList;
1206 WebEngineContext* mockWebEngineContext;
1207 WebEngineCookieManager* mockWebEngineCookieManager;
1208 WebEngineSettings* mockWebEngineSettings;
1210 std::vector<JavaScriptEvaluatedResultCallback> mResultCallbacks;
1211 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1212 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1213 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1214 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1215 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1216 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1225 DisconnectFromGlobalSignal( &OnGoBack );
1227 if( gInstance && gInstance->CanGoBack() )
1229 gInstance->mCurrentPlusOnePos--;
1236 DisconnectFromGlobalSignal( &OnGoForward );
1238 if( gInstance && gInstance->CanGoForward() )
1240 gInstance->mCurrentPlusOnePos++;
1247 DisconnectFromGlobalSignal( &OnLoadUrl );
1251 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1253 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1255 gInstance->mHistory.push_back( gInstance->mUrl );
1256 gInstance->mCurrentPlusOnePos++;
1257 gInstance->mPageLoadStartedSignal.Emit( gInstance->mUrl );
1258 gInstance->mPageLoadInProgressSignal.Emit( gInstance->mUrl );
1259 gInstance->mPageLoadFinishedSignal.Emit( gInstance->mUrl );
1260 gInstance->mUrlChangedSignal.Emit( "http://new-test" );
1262 std::shared_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1263 gInstance->mFormRepostDecisionSignal.Emit(std::move(repostDecision));
1264 gInstance->mFrameRenderedSignal.Emit();
1265 std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor(new MockWebEngineRequestInterceptor());
1266 gInstance->mRequestInterceptorSignal.Emit(std::move(interceptor));
1268 std::shared_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1269 gInstance->mPageLoadErrorSignal.Emit(std::move(error));
1270 std::shared_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1271 gInstance->mConsoleMessageSignal.Emit(std::move(message));
1272 std::shared_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1273 gInstance->mPolicyDecisionSignal.Emit(std::move(policyDecision));
1275 std::shared_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1276 gInstance->mCertificateConfirmSignal.Emit(std::move(certificate));
1277 std::shared_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1278 gInstance->mSslCertificateChangedSignal.Emit(std::move(sslCertificate));
1279 std::shared_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1280 gInstance->mHttpAuthHandlerSignal.Emit(std::move(handler));
1287 DisconnectFromGlobalSignal( &OnScrollEdge );
1291 gInstance->mScrollEdgeReachedSignal.Emit( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1297 bool OnEvaluteJavaScript()
1299 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1303 for( auto& func : gInstance->mResultCallbacks )
1307 gInstance->mResultCallbacks.clear();
1312 bool OnJavaScriptAlert()
1314 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1317 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1322 bool OnJavaScriptConfirm()
1324 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1327 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1332 bool OnJavaScriptPrompt()
1334 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1337 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1342 bool OnScreenshotCaptured()
1344 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1347 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1348 memset(pixel, 0xff, 2 * 2 * 4);
1349 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1350 Dali::Pixel::Format::RGBA8888,
1351 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1352 gInstance->mScreenshotCapturedCallback( data );
1357 bool OnVideoPlaying()
1359 DisconnectFromGlobalSignal( &OnVideoPlaying );
1362 gInstance->mVideoPlayingCallback( true );
1367 bool OnGeolocationPermission()
1369 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1372 gInstance->mGeolocationPermissionCallback( "", "" );
1377 bool OnClearHistory()
1379 DisconnectFromGlobalSignal( &OnClearHistory );
1381 if( gInstance && gInstance->mCurrentPlusOnePos )
1383 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1384 std::vector< std::string >().swap( gInstance->mHistory );
1385 gInstance->mHistory.push_back( url );
1386 gInstance->mCurrentPlusOnePos = 1;
1391 bool OnSecurityOriginAcquired()
1393 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1394 if (gWebEngineContextInstance)
1396 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1397 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1398 securityOriginList.push_back(std::move(origin));
1399 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1404 bool OnStorageUsageAcquired()
1406 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1407 if (gWebEngineContextInstance)
1409 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1414 bool OnFormPasswordAcquired()
1416 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1417 if (gWebEngineContextInstance)
1419 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1420 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1421 data->url = "http://test.html";
1422 data->useFingerprint = false;
1423 formPasswordList.push_back(std::move(data));
1424 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1429 bool OnDownloadStarted()
1431 DisconnectFromGlobalSignal(&OnDownloadStarted);
1432 if (gWebEngineContextInstance)
1434 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1439 bool OnMimeOverridden()
1441 DisconnectFromGlobalSignal(&OnMimeOverridden);
1442 if (gWebEngineContextInstance)
1444 std::string newMime;
1445 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1452 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1454 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1455 BaseObject& handle = webEngine.GetBaseObject();
1456 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1459 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1461 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1462 const BaseObject& handle = webEngine.GetBaseObject();
1463 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1466 } // namespace Adaptor
1468 } // namespace Internal
1470 // Dali::WebEngine Implementation
1471 WebEngine::WebEngine()
1475 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1476 : BaseHandle( internal )
1480 WebEngine::~WebEngine()
1484 WebEngine WebEngine::New()
1486 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1488 return WebEngine( baseObject );
1491 WebEngine::WebEngine( const WebEngine& WebEngine )
1492 : BaseHandle( WebEngine )
1496 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
1498 BaseHandle::operator=( webEngine );
1502 WebEngine WebEngine::DownCast( BaseHandle handle )
1504 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
1507 void WebEngine::Create( int width, int height, const std::string& locale, const std::string& timezoneId )
1511 void WebEngine::Create( int width, int height, int argc, char** argv )
1515 void WebEngine::Destroy()
1519 WebEngineSettings& WebEngine::GetSettings() const
1521 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
1524 WebEngineContext& WebEngine::GetContext() const
1526 return Internal::Adaptor::GetImplementation( *this ).GetContext();
1529 WebEngineCookieManager& WebEngine::GetCookieManager() const
1531 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
1534 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
1536 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
1539 void WebEngine::LoadUrl( const std::string& url )
1541 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
1544 std::string WebEngine::GetTitle() const
1546 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
1549 Dali::PixelData WebEngine::GetFavicon() const
1551 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
1554 const std::string& WebEngine::GetUrl()
1556 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
1559 NativeImageInterfacePtr WebEngine::GetNativeImageSource()
1562 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
1566 void WebEngine::LoadHtmlString( const std::string& htmlString )
1570 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
1575 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
1580 void WebEngine::Reload()
1584 bool WebEngine::ReloadWithoutCache()
1589 void WebEngine::StopLoading()
1593 void WebEngine::Suspend()
1597 void WebEngine::Resume()
1601 void WebEngine::SuspendNetworkLoading()
1605 void WebEngine::ResumeNetworkLoading()
1609 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
1614 bool WebEngine::RemoveCustomHeader(const std::string& name)
1619 uint32_t WebEngine::StartInspectorServer(uint32_t port)
1624 bool WebEngine::StopInspectorServer()
1629 bool WebEngine::CanGoForward()
1631 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
1634 void WebEngine::GoForward()
1636 Internal::Adaptor::GetImplementation( *this ).GoForward();
1639 bool WebEngine::CanGoBack()
1641 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
1644 void WebEngine::GoBack()
1646 Internal::Adaptor::GetImplementation( *this ).GoBack();
1649 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1651 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
1654 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
1658 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1660 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
1663 void WebEngine::JavaScriptAlertReply()
1667 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1669 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
1672 void WebEngine::JavaScriptConfirmReply( bool confirmed )
1676 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1678 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
1681 void WebEngine::JavaScriptPromptReply( const std::string& result )
1685 void WebEngine::ClearAllTilesResources()
1689 void WebEngine::ClearHistory()
1691 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
1694 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1696 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
1699 float WebEngine::GetScaleFactor() const
1701 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
1704 void WebEngine::ActivateAccessibility(bool activated)
1708 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
1713 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
1717 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int> viewArea, float scaleFactor)
1719 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
1722 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1724 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
1727 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1729 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
1732 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1734 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
1737 const std::string& WebEngine::GetUserAgent() const
1739 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
1742 void WebEngine::SetUserAgent( const std::string& userAgent )
1744 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
1747 void WebEngine::ScrollBy( int dx, int dy )
1749 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
1752 bool WebEngine::ScrollEdgeBy( int dx, int dy )
1754 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
1757 void WebEngine::SetScrollPosition( int x, int y )
1759 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
1762 Dali::Vector2 WebEngine::GetScrollPosition() const
1764 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
1767 Dali::Vector2 WebEngine::GetScrollSize() const
1769 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
1772 Dali::Vector2 WebEngine::GetContentSize() const
1774 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
1777 void WebEngine::SetSize( int width, int height )
1781 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
1785 void WebEngine::ClearTilesWhenHidden(bool cleared)
1789 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
1793 void WebEngine::EnableCursorByClient(bool enabled)
1797 std::string WebEngine::GetSelectedText() const
1802 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
1807 bool WebEngine::SendKeyEvent( const KeyEvent& event )
1812 bool WebEngine::SendHoverEvent( const HoverEvent& event )
1817 bool WebEngine::SendWheelEvent( const WheelEvent& event )
1822 void WebEngine::SetFocus( bool focused )
1826 void WebEngine::SetPageZoomFactor(float zoomFactor)
1828 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
1831 float WebEngine::GetPageZoomFactor() const
1833 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
1836 void WebEngine::SetTextZoomFactor(float zoomFactor)
1838 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
1841 float WebEngine::GetTextZoomFactor() const
1843 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
1846 float WebEngine::GetLoadProgressPercentage() const
1848 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
1851 void WebEngine::UpdateDisplayArea( Dali::Rect< int > displayArea )
1855 void WebEngine::EnableVideoHole( bool enabled )
1859 void WebEngine::EnableMouseEvents( bool enabled )
1863 void WebEngine::EnableKeyEvents( bool enabled )
1867 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadStartedSignal()
1869 return Internal::Adaptor::GetImplementation( *this ).PageLoadStartedSignal();
1872 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadInProgressSignal()
1874 return Internal::Adaptor::GetImplementation( *this ).PageLoadInProgressSignal();
1877 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadFinishedSignal()
1879 return Internal::Adaptor::GetImplementation( *this ).PageLoadFinishedSignal();
1882 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& WebEngine::PageLoadErrorSignal()
1884 return Internal::Adaptor::GetImplementation( *this ).PageLoadErrorSignal();
1887 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& WebEngine::ScrollEdgeReachedSignal()
1889 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeReachedSignal();
1892 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& WebEngine::UrlChangedSignal()
1894 return Internal::Adaptor::GetImplementation( *this ).UrlChangedSignal();
1897 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& WebEngine::FormRepostDecisionSignal()
1899 return Internal::Adaptor::GetImplementation(*this).FormRepostDecisionSignal();
1902 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
1904 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
1907 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& WebEngine::RequestInterceptorSignal()
1909 return Internal::Adaptor::GetImplementation(*this).RequestInterceptorSignal();
1912 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& WebEngine::ConsoleMessageSignal()
1914 return Internal::Adaptor::GetImplementation(*this).ConsoleMessageSignal();
1917 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType& WebEngine::PolicyDecisionSignal()
1919 return Internal::Adaptor::GetImplementation(*this).PolicyDecisionSignal();
1922 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::CertificateConfirmSignal()
1924 return Internal::Adaptor::GetImplementation(*this).CertificateConfirmSignal();
1927 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::SslCertificateChangedSignal()
1929 return Internal::Adaptor::GetImplementation(*this).SslCertificateChangedSignal();
1932 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& WebEngine::HttpAuthHandlerSignal()
1934 return Internal::Adaptor::GetImplementation(*this).HttpAuthHandlerSignal();
1937 } // namespace Dali;