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-context-menu.h>
27 #include <dali/devel-api/adaptor-framework/web-engine-context-menu-item.h>
28 #include <dali/devel-api/adaptor-framework/web-engine-cookie-manager.h>
29 #include <dali/devel-api/adaptor-framework/web-engine-form-repost-decision.h>
30 #include <dali/devel-api/adaptor-framework/web-engine-frame.h>
31 #include <dali/devel-api/adaptor-framework/web-engine-http-auth-handler.h>
32 #include <dali/devel-api/adaptor-framework/web-engine-load-error.h>
33 #include <dali/devel-api/adaptor-framework/web-engine-policy-decision.h>
34 #include <dali/devel-api/adaptor-framework/web-engine-request-interceptor.h>
35 #include <dali/devel-api/adaptor-framework/web-engine-security-origin.h>
36 #include <dali/devel-api/adaptor-framework/web-engine-settings.h>
37 #include <dali/public-api/adaptor-framework/native-image-source.h>
38 #include <dali/public-api/images/pixel-data.h>
39 #include <dali/public-api/object/any.h>
40 #include <dali/public-api/object/base-object.h>
43 #include <toolkit-application.h>
55 class MockWebEngineContext;
60 // Generally only one WebEngine instance exists.
61 // If > 1, a new web engine has been created by CreateWindowSignal.
62 static WebEngine* gInstance = nullptr;
63 static int gInstanceCount = 0;
64 static MockWebEngineContext* gWebEngineContextInstance = nullptr;
69 bool OnEvaluteJavaScript();
70 bool OnJavaScriptAlert();
71 bool OnJavaScriptConfirm();
72 bool OnJavaScriptPrompt();
74 bool OnScreenshotCaptured();
75 bool OnVideoPlaying();
76 bool OnGeolocationPermission();
77 bool OnClearHistory();
78 bool OnSecurityOriginAcquired();
79 bool OnStorageUsageAcquired();
80 bool OnFormPasswordAcquired();
81 bool OnDownloadStarted();
82 bool OnMimeOverridden();
84 static void ConnectToGlobalSignal( bool ( *func )() )
86 Dali::Timer timer = Dali::Timer::New( 0 );
87 timer.TickSignal().Connect( func );
90 static void DisconnectFromGlobalSignal( bool ( *func )() )
92 Dali::Timer timer = Dali::Timer::New( 0 );
93 timer.TickSignal().Disconnect( func );
95 } // namespace anonymous
97 class MockWebEngineContext : public Dali::WebEngineContext
100 MockWebEngineContext()
101 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
105 Dali::WebEngineContext::CacheModel GetCacheModel() const override
110 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
112 mockModel = cacheModel;
115 void SetProxyUri( const std::string& uri ) override
119 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
123 void SetCertificateFilePath( const std::string& certificatePath ) override
127 void DeleteAllWebDatabase() override
131 bool GetWebDatabaseOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
135 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
136 mSecurityOriginAcquiredCallback = callback;
141 bool DeleteWebDatabase(Dali::WebEngineSecurityOrigin& origin)
146 bool GetWebStorageOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
150 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
151 mSecurityOriginAcquiredCallback = callback;
156 bool GetWebStorageUsageForOrigin(Dali::WebEngineSecurityOrigin& origin, Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback callback)
160 ConnectToGlobalSignal(&OnStorageUsageAcquired);
161 mStorageUsageAcquiredCallback = callback;
166 void DeleteAllWebStorage() override
170 bool DeleteWebStorageOrigin(Dali::WebEngineSecurityOrigin& origin)
175 void DeleteLocalFileSystem() override
179 void DisableCache( bool cacheDisabled ) override
183 void ClearCache() override
187 bool DeleteApplicationCache(Dali::WebEngineSecurityOrigin& origin)
192 void GetFormPasswordList(Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback callback)
196 ConnectToGlobalSignal(&OnFormPasswordAcquired);
197 mFormPasswordAcquiredCallback = callback;
201 void RegisterDownloadStartedCallback(Dali::WebEngineContext::WebEngineDownloadStartedCallback callback)
205 ConnectToGlobalSignal(&OnDownloadStarted);
206 mDownloadStartedCallback = callback;
210 void RegisterMimeOverriddenCallback(Dali::WebEngineContext::WebEngineMimeOverriddenCallback callback)
214 ConnectToGlobalSignal(&OnMimeOverridden);
215 mMimeOverriddenCallback = callback;
220 Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback mSecurityOriginAcquiredCallback;
221 Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback mStorageUsageAcquiredCallback;
222 Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback mFormPasswordAcquiredCallback;
223 Dali::WebEngineContext::WebEngineDownloadStartedCallback mDownloadStartedCallback;
224 Dali::WebEngineContext::WebEngineMimeOverriddenCallback mMimeOverriddenCallback;
227 Dali::WebEngineContext::CacheModel mockModel;
230 class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin
233 MockWebEngineSecurityOrigin()
234 : mockUrl("https://test.html")
235 , mockPotocol("https")
239 std::string GetHost() const
244 std::string GetProtocol() const
251 std::string mockPotocol;
254 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
257 MockWebEngineCookieManager()
258 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
262 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
264 mockCookieAcceptPolicy = policy;
267 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
269 return mockCookieAcceptPolicy;
272 void ClearCookies() override
276 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
281 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
284 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
287 MockWebEngineBackForwardListItem()
288 : mockUrl( "http://url" ),
289 mockTitle( "title" ),
290 mockOriginalUrl( "http://originalurl" )
294 std::string GetUrl() const override
299 std::string GetTitle() const override
304 std::string GetOriginalUrl() const override
306 return mockOriginalUrl;
311 std::string mockTitle;
312 std::string mockOriginalUrl;
315 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
318 MockWebEngineBackForwardList()
322 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetCurrentItem() const override
324 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
328 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetPreviousItem() const override
330 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
334 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetNextItem() const override
336 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
340 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetItemAtIndex( uint32_t index ) const override
342 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
346 uint32_t GetItemCount() const override
351 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetBackwardItems(int limit) override
353 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
354 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
355 ret.push_back(std::move(item));
359 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetForwardItems(int limit) override
361 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
362 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
363 ret.push_back(std::move(item));
369 class MockWebEngineCertificate : public Dali::WebEngineCertificate
372 MockWebEngineCertificate()
376 void Allow(bool allowed) override
380 bool IsFromMainFrame() const override
385 std::string GetPem() const override
390 bool IsContextSecure() const override
396 class MockWebEngineHttpAuthHandler : public Dali::WebEngineHttpAuthHandler
399 MockWebEngineHttpAuthHandler()
403 std::string GetRealm() const override
408 void Suspend() override
412 void UseCredential(const std::string& user, const std::string& password) override
416 void CancelCredential() override
421 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
424 MockWebEngineFormRepostDecision()
428 void Reply(bool allowed) override {}
431 class MockWebEngineFrame : public Dali::WebEngineFrame
438 bool IsMainFrame() const override
444 class MockWebEnginePolicyDecision : public Dali::WebEnginePolicyDecision
447 MockWebEnginePolicyDecision()
451 std::string GetUrl() const override
453 return "http://test.html";
456 std::string GetCookie() const override
461 Dali::WebEnginePolicyDecision::DecisionType GetDecisionType() const
463 return Dali::WebEnginePolicyDecision::DecisionType::USE;
466 std::string GetResponseMime() const
471 int32_t GetResponseStatusCode() const
476 Dali::WebEnginePolicyDecision::NavigationType GetNavigationType() const
478 return Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
481 Dali::WebEngineFrame& GetFrame() const
483 return *(Dali::WebEngineFrame*)(&mockWebFrame);
486 std::string GetScheme() const
507 MockWebEngineFrame mockWebFrame;
510 class MockWebEngineRequestInterceptor : public WebEngineRequestInterceptor
513 MockWebEngineRequestInterceptor()
517 std::string GetUrl() const override
519 return "http://test.html";
522 bool Ignore() override
527 bool SetResponseStatus(int statusCode, const std::string &customedStatusText) override
532 bool AddResponseHeader(const std::string &fieldName, const std::string &fieldValue) override
537 bool AddResponseBody(const std::string &body, uint32_t length) override
543 class MockWebEngineConsoleMessage : public Dali::WebEngineConsoleMessage
546 MockWebEngineConsoleMessage()
550 std::string GetSource() const override
555 uint32_t GetLine() const override
560 SeverityLevel GetSeverityLevel() const override
562 return SeverityLevel::EMPTY;
565 std::string GetText() const override
567 return "This is a text.";
571 class MockWebEngineLoadError : public Dali::WebEngineLoadError
574 MockWebEngineLoadError(const std::string& url)
579 std::string GetUrl() const override
584 ErrorCode GetCode() const override
586 return ErrorCode::UNKNOWN;
589 std::string GetDescription() const override
591 return "This is an error.";
594 ErrorType GetType() const override
596 return ErrorType::NONE;
603 class MockWebEngineContextMenuItem : public Dali::WebEngineContextMenuItem
606 MockWebEngineContextMenuItem()
610 ItemTag GetTag() const override
612 return ItemTag::NO_ACTION;
615 ItemType GetType() const override
617 return ItemType::ACTION;
620 bool IsEnabled() const override
625 std::string GetLinkUrl() const override
627 return "http://test.html";
630 std::string GetImageUrl() const override
632 return "http://test.jpg";
635 std::string GetTitle() const override
640 std::unique_ptr<Dali::WebEngineContextMenu> GetParentMenu() const override
642 std::unique_ptr<Dali::WebEngineContextMenu> result;
647 class MockWebEngineContextMenu : public Dali::WebEngineContextMenu
650 MockWebEngineContextMenu()
654 uint32_t GetItemCount() const override
659 std::unique_ptr<Dali::WebEngineContextMenuItem> GetItemAt(uint32_t index) const override
661 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
665 std::vector<std::unique_ptr<WebEngineContextMenuItem>> GetItemList() const override
667 std::vector<std::unique_ptr<WebEngineContextMenuItem>> result;
668 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
669 result.push_back(std::move(webitem));
673 Dali::Vector2 GetPosition() const override
675 return Dali::Vector2(100, 100);
678 bool RemoveItem(WebEngineContextMenuItem& item) override
683 bool AppendItemAsAction(WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled) override
688 bool AppendItem(WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled) override
693 bool SelectItem(WebEngineContextMenuItem& item) override
704 class MockWebEngineSettings : public WebEngineSettings
707 MockWebEngineSettings()
708 : mockDefaultFontSize( 16 ),
709 mockJavaScriptEnabled( true ),
710 mockAutoFittingEnabled ( true ),
711 mockPluginsEnabled ( true ),
712 mockPrivateBrowsingEnabled( true ),
713 mockLinkMagnifierEnabled( true ),
714 mockKeypadWithoutUserActionUsed( true ),
715 mockAutofillPasswordFormEnabled( true ),
716 mockFormCandidateDataEnabled( true ),
717 mockTextSelectionEnabled( true ),
718 mockTextAutosizingEnable( true ),
719 mockArrowScrollEnable( true ),
720 mockClipboardEnabled( true ),
721 mockImePanelEnabled( true ),
722 mockImageLoadedAutomatically( true ),
723 mockDefaultTextEncodingName()
727 uint32_t GetDefaultFontSize() const override
729 return mockDefaultFontSize;
732 void SetDefaultFontSize( uint32_t size ) override
734 mockDefaultFontSize = size;
737 bool IsJavaScriptEnabled() const override
739 return mockJavaScriptEnabled;
742 void EnableJavaScript( bool enabled ) override
744 mockJavaScriptEnabled = enabled;
747 bool IsAutoFittingEnabled() const override
749 return mockAutoFittingEnabled;
752 void EnableAutoFitting( bool enabled ) override
754 mockAutoFittingEnabled = enabled;
757 bool ArePluginsEnabled() const override
759 return mockPluginsEnabled;
762 void EnablePlugins( bool enabled ) override
764 mockPluginsEnabled = enabled;
767 bool IsPrivateBrowsingEnabled() const override
769 return mockPrivateBrowsingEnabled;
772 void EnablePrivateBrowsing( bool enabled ) override
774 mockPrivateBrowsingEnabled = enabled;
777 bool IsLinkMagnifierEnabled() const override
779 return mockLinkMagnifierEnabled;
782 void EnableLinkMagnifier( bool enabled ) override
784 mockLinkMagnifierEnabled = enabled;
787 bool IsKeypadWithoutUserActionUsed() const override
789 return mockKeypadWithoutUserActionUsed;
792 void UseKeypadWithoutUserAction( bool used ) override
794 mockKeypadWithoutUserActionUsed = used;
797 bool IsAutofillPasswordFormEnabled() const override
799 return mockAutofillPasswordFormEnabled;
802 void EnableAutofillPasswordForm( bool enabled ) override
804 mockAutofillPasswordFormEnabled = enabled;
807 bool IsFormCandidateDataEnabled() const override
809 return mockFormCandidateDataEnabled;
812 void EnableFormCandidateData( bool enabled ) override
814 mockFormCandidateDataEnabled = enabled;
817 bool IsTextSelectionEnabled() const override
819 return mockTextSelectionEnabled;
822 void EnableTextSelection( bool enabled ) override
824 mockTextSelectionEnabled = enabled;
827 bool IsTextAutosizingEnabled() const override
829 return mockTextAutosizingEnable;
832 void EnableTextAutosizing( bool enabled ) override
834 mockTextAutosizingEnable = enabled;
837 bool IsArrowScrollEnabled() const override
839 return mockArrowScrollEnable;
842 void EnableArrowScroll( bool enabled ) override
844 mockArrowScrollEnable = enabled;
847 bool IsClipboardEnabled() const override
849 return mockClipboardEnabled;
852 void EnableClipboard( bool enabled ) override
854 mockClipboardEnabled = enabled;
857 bool IsImePanelEnabled() const override
859 return mockImePanelEnabled;
862 void EnableImePanel( bool enabled ) override
864 mockImePanelEnabled = enabled;
867 bool AreImagesLoadedAutomatically() const override
869 return mockImageLoadedAutomatically;
872 void AllowImagesLoadAutomatically( bool automatic ) override
874 mockImageLoadedAutomatically = automatic;
877 std::string GetDefaultTextEncodingName() const override
879 return mockDefaultTextEncodingName;
882 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
884 mockDefaultTextEncodingName = defaultTextEncodingName;
887 void AllowMixedContents( bool allowed ) override
891 void EnableSpatialNavigation( bool enabled ) override
895 void EnableWebSecurity( bool enabled ) override
899 void EnableCacheBuilder( bool enabled ) override
903 void UseScrollbarThumbFocusNotifications( bool used ) override
907 void EnableDoNotTrack( bool enabled ) override
911 void AllowFileAccessFromExternalUrl( bool allowed ) override
915 void AllowScriptsOpenWindows( bool allowed ) override
920 int mockDefaultFontSize;
921 bool mockJavaScriptEnabled;
922 bool mockAutoFittingEnabled;
923 bool mockPluginsEnabled;
924 bool mockPrivateBrowsingEnabled;
925 bool mockLinkMagnifierEnabled;
926 bool mockKeypadWithoutUserActionUsed;
927 bool mockAutofillPasswordFormEnabled;
928 bool mockFormCandidateDataEnabled;
929 bool mockTextSelectionEnabled;
930 bool mockTextAutosizingEnable;
931 bool mockArrowScrollEnable;
932 bool mockClipboardEnabled;
933 bool mockImePanelEnabled;
934 bool mockImageLoadedAutomatically;
935 std::string mockDefaultTextEncodingName;
938 class WebEngine: public Dali::BaseObject
942 using JavaScriptEvaluatedResultCallback = std::function<void(const std::string&)>;
946 , mCurrentPlusOnePos( 0 )
948 , mEvaluating( false )
949 , mScrollPosition( 0, 0 )
950 , mScrollSize( 500, 500 )
951 , mContentSize( 500, 500 )
954 if ( gInstanceCount == 1 ) // only first web engine need be saved.
959 mockWebEngineSettings = new MockWebEngineSettings();
960 MockWebEngineContext* engineContext = new MockWebEngineContext();
961 mockWebEngineContext = engineContext;
962 if ( gInstanceCount == 1 )
964 gWebEngineContextInstance = engineContext;
966 mockWebEngineCookieManager = new MockWebEngineCookieManager();
967 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
973 if( !gInstanceCount )
976 gWebEngineContextInstance = 0;
979 delete mockWebEngineSettings;
980 delete mockWebEngineContext;
981 delete mockWebEngineCookieManager;
982 delete mockWebEngineBackForwardList;
985 Dali::WebEngineSettings& GetSettings() const
987 return *mockWebEngineSettings;
990 Dali::WebEngineContext& GetContext() const
992 return *mockWebEngineContext;
995 Dali::WebEngineCookieManager& GetCookieManager() const
997 return *mockWebEngineCookieManager;
1000 Dali::WebEngineBackForwardList& GetBackForwardList() const
1002 return *mockWebEngineBackForwardList;
1005 void LoadUrl( const std::string& url )
1008 ConnectToGlobalSignal( &OnLoadUrl );
1011 const std::string& GetUrl() const
1016 std::string GetTitle() const
1018 return std::string("title");
1021 Dali::PixelData GetFavicon() const
1023 uint8_t* faviconData = new uint8_t[ 16 ];
1025 faviconData[ 0 ] = 0xff;
1026 faviconData[ 1 ] = 0x00;
1027 faviconData[ 2 ] = 0x00;
1028 faviconData[ 3 ] = 0xff;
1029 faviconData[ 4 ] = 0xff;
1030 faviconData[ 5 ] = 0x00;
1031 faviconData[ 6 ] = 0x00;
1032 faviconData[ 7 ] = 0xff;
1033 faviconData[ 8 ] = 0xff;
1034 faviconData[ 9 ] = 0x00;
1035 faviconData[ 10 ] = 0x00;
1036 faviconData[ 11 ] = 0xff;
1037 faviconData[ 12 ] = 0xff;
1038 faviconData[ 13 ] = 0x00;
1039 faviconData[ 14 ] = 0x00;
1040 faviconData[ 15 ] = 0xff;
1042 return Dali::PixelData::New( faviconData, 16, 2, 2,
1043 Dali::Pixel::Format::RGBA8888,
1044 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1047 bool CanGoForward() const
1049 return mHistory.size() > mCurrentPlusOnePos;
1054 ConnectToGlobalSignal( &OnGoForward );
1057 bool CanGoBack() const
1059 return mCurrentPlusOnePos > 1;
1064 ConnectToGlobalSignal( &OnGoBack );
1067 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1073 ConnectToGlobalSignal( &OnEvaluteJavaScript );
1075 mResultCallbacks.push_back( resultHandler );
1079 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1083 ConnectToGlobalSignal( &OnJavaScriptAlert );
1084 mJavaScriptAlertCallback = callback;
1088 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1092 ConnectToGlobalSignal( &OnJavaScriptConfirm );
1093 mJavaScriptConfirmCallback = callback;
1097 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1101 ConnectToGlobalSignal( &OnJavaScriptPrompt );
1102 mJavaScriptPromptCallback = callback;
1108 ConnectToGlobalSignal( &OnClearHistory );
1111 const std::string& GetUserAgent() const
1116 void SetUserAgent( const std::string& userAgent )
1118 mUserAgent = userAgent;
1121 void ScrollBy( int dx, int dy )
1123 mScrollPosition += Dali::Vector2( dx, dy );
1124 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1126 ConnectToGlobalSignal( &OnScrollEdge );
1130 bool ScrollEdgeBy( int dx, int dy )
1132 mScrollPosition += Dali::Vector2( dx, dy );
1133 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1135 ConnectToGlobalSignal( &OnScrollEdge );
1140 void SetScrollPosition( int x, int y )
1142 mScrollPosition.x = x;
1143 mScrollPosition.y = y;
1146 Dali::Vector2 GetScrollPosition() const
1148 return mScrollPosition;
1151 Dali::Vector2 GetScrollSize() const
1156 Dali::Vector2 GetContentSize() const
1158 return mContentSize;
1161 void SetPageZoomFactor(float zoomFactor)
1163 mPageZoomFactor = zoomFactor;
1166 float GetPageZoomFactor() const
1168 return mPageZoomFactor;
1171 void SetTextZoomFactor(float zoomFactor)
1173 mTextZoomFactor = zoomFactor;
1176 float GetTextZoomFactor() const
1178 return mTextZoomFactor;
1181 float GetLoadProgressPercentage() const
1186 void SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1188 mScaleFactor = scaleFactor;
1191 float GetScaleFactor() const
1193 return mScaleFactor;
1196 Dali::PixelData GetScreenshot(Dali::Rect<int> viewArea, float scaleFactor)
1198 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
1199 uint8_t* pixel = new uint8_t[ bufferSize ];
1200 memset(pixel, 0xff, bufferSize);
1201 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
1202 Dali::Pixel::Format::RGBA8888,
1203 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1206 bool GetScreenshotAsynchronously(Dali::Rect<int> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1210 ConnectToGlobalSignal( &OnScreenshotCaptured );
1211 mScreenshotCapturedCallback = callback;
1216 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1220 ConnectToGlobalSignal( &OnVideoPlaying );
1221 mVideoPlayingCallback = callback;
1226 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1230 ConnectToGlobalSignal( &OnGeolocationPermission );
1231 mGeolocationPermissionCallback = callback;
1235 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal()
1237 return mPageLoadStartedSignal;
1240 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadInProgressSignal()
1242 return mPageLoadInProgressSignal;
1245 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal()
1247 return mPageLoadFinishedSignal;
1250 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal()
1252 return mPageLoadErrorSignal;
1255 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal()
1257 return mScrollEdgeReachedSignal;
1260 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& UrlChangedSignal()
1262 return mUrlChangedSignal;
1265 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal()
1267 return mFormRepostDecisionSignal;
1270 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
1272 return mFrameRenderedSignal;
1275 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& RequestInterceptorSignal()
1277 return mRequestInterceptorSignal;
1280 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& ConsoleMessageSignal()
1282 return mConsoleMessageSignal;
1285 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType& PolicyDecisionSignal()
1287 return mPolicyDecisionSignal;
1290 Dali::WebEnginePlugin::WebEngineCertificateSignalType& CertificateConfirmSignal()
1292 return mCertificateConfirmSignal;
1295 Dali::WebEnginePlugin::WebEngineCertificateSignalType& SslCertificateChangedSignal()
1297 return mSslCertificateChangedSignal;
1300 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& HttpAuthHandlerSignal()
1302 return mHttpAuthHandlerSignal;
1305 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& ContextMenuCustomizedSignal()
1307 return mContextMenuCustomizedSignal;
1310 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& ContextMenuItemSelectedSignal()
1312 return mContextMenuItemSelectedSignal;
1316 std::vector<std::string> mHistory;
1317 size_t mCurrentPlusOnePos;
1318 std::string mUserAgent;
1320 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
1321 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
1322 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
1323 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
1324 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
1325 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
1326 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
1327 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1328 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
1329 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
1330 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal;
1331 Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
1332 Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
1333 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
1334 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType mContextMenuCustomizedSignal;
1335 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType mContextMenuItemSelectedSignal;
1338 float mPageZoomFactor;
1339 float mTextZoomFactor;
1342 Dali::Vector2 mScrollPosition;
1343 Dali::Vector2 mScrollSize;
1344 Dali::Vector2 mContentSize;
1345 WebEngineBackForwardList* mockWebEngineBackForwardList;
1346 WebEngineContext* mockWebEngineContext;
1347 WebEngineCookieManager* mockWebEngineCookieManager;
1348 WebEngineSettings* mockWebEngineSettings;
1350 std::vector<JavaScriptEvaluatedResultCallback> mResultCallbacks;
1351 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1352 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1353 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1354 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1355 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1356 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1365 DisconnectFromGlobalSignal( &OnGoBack );
1367 if( gInstance && gInstance->CanGoBack() )
1369 gInstance->mCurrentPlusOnePos--;
1376 DisconnectFromGlobalSignal( &OnGoForward );
1378 if( gInstance && gInstance->CanGoForward() )
1380 gInstance->mCurrentPlusOnePos++;
1387 DisconnectFromGlobalSignal( &OnLoadUrl );
1391 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1393 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1395 gInstance->mHistory.push_back( gInstance->mUrl );
1396 gInstance->mCurrentPlusOnePos++;
1397 gInstance->mPageLoadStartedSignal.Emit( gInstance->mUrl );
1398 gInstance->mPageLoadInProgressSignal.Emit( gInstance->mUrl );
1399 gInstance->mPageLoadFinishedSignal.Emit( gInstance->mUrl );
1400 gInstance->mUrlChangedSignal.Emit( "http://new-test" );
1402 std::shared_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1403 gInstance->mFormRepostDecisionSignal.Emit(std::move(repostDecision));
1404 gInstance->mFrameRenderedSignal.Emit();
1405 std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor(new MockWebEngineRequestInterceptor());
1406 gInstance->mRequestInterceptorSignal.Emit(std::move(interceptor));
1408 std::shared_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1409 gInstance->mPageLoadErrorSignal.Emit(std::move(error));
1410 std::shared_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1411 gInstance->mConsoleMessageSignal.Emit(std::move(message));
1412 std::shared_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1413 gInstance->mPolicyDecisionSignal.Emit(std::move(policyDecision));
1415 std::shared_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1416 gInstance->mCertificateConfirmSignal.Emit(std::move(certificate));
1417 std::shared_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1418 gInstance->mSslCertificateChangedSignal.Emit(std::move(sslCertificate));
1419 std::shared_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1420 gInstance->mHttpAuthHandlerSignal.Emit(std::move(handler));
1422 std::shared_ptr<Dali::WebEngineContextMenu> menu(new MockWebEngineContextMenu());
1423 gInstance->mContextMenuCustomizedSignal.Emit(std::move(menu));
1424 std::shared_ptr<Dali::WebEngineContextMenuItem> item(new MockWebEngineContextMenuItem());
1425 gInstance->mContextMenuItemSelectedSignal.Emit(std::move(item));
1432 DisconnectFromGlobalSignal( &OnScrollEdge );
1436 gInstance->mScrollEdgeReachedSignal.Emit( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1442 bool OnEvaluteJavaScript()
1444 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1448 for( auto& func : gInstance->mResultCallbacks )
1452 gInstance->mResultCallbacks.clear();
1457 bool OnJavaScriptAlert()
1459 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1462 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1467 bool OnJavaScriptConfirm()
1469 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1472 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1477 bool OnJavaScriptPrompt()
1479 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1482 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1487 bool OnScreenshotCaptured()
1489 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1492 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1493 memset(pixel, 0xff, 2 * 2 * 4);
1494 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1495 Dali::Pixel::Format::RGBA8888,
1496 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1497 gInstance->mScreenshotCapturedCallback( data );
1502 bool OnVideoPlaying()
1504 DisconnectFromGlobalSignal( &OnVideoPlaying );
1507 gInstance->mVideoPlayingCallback( true );
1512 bool OnGeolocationPermission()
1514 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1517 gInstance->mGeolocationPermissionCallback( "", "" );
1522 bool OnClearHistory()
1524 DisconnectFromGlobalSignal( &OnClearHistory );
1526 if( gInstance && gInstance->mCurrentPlusOnePos )
1528 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1529 std::vector< std::string >().swap( gInstance->mHistory );
1530 gInstance->mHistory.push_back( url );
1531 gInstance->mCurrentPlusOnePos = 1;
1536 bool OnSecurityOriginAcquired()
1538 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1539 if (gWebEngineContextInstance)
1541 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1542 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1543 securityOriginList.push_back(std::move(origin));
1544 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1549 bool OnStorageUsageAcquired()
1551 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1552 if (gWebEngineContextInstance)
1554 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1559 bool OnFormPasswordAcquired()
1561 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1562 if (gWebEngineContextInstance)
1564 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1565 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1566 data->url = "http://test.html";
1567 data->useFingerprint = false;
1568 formPasswordList.push_back(std::move(data));
1569 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1574 bool OnDownloadStarted()
1576 DisconnectFromGlobalSignal(&OnDownloadStarted);
1577 if (gWebEngineContextInstance)
1579 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1584 bool OnMimeOverridden()
1586 DisconnectFromGlobalSignal(&OnMimeOverridden);
1587 if (gWebEngineContextInstance)
1589 std::string newMime;
1590 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1597 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1599 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1600 BaseObject& handle = webEngine.GetBaseObject();
1601 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1604 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1606 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1607 const BaseObject& handle = webEngine.GetBaseObject();
1608 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1611 } // namespace Adaptor
1613 } // namespace Internal
1615 // Dali::WebEngine Implementation
1616 WebEngine::WebEngine()
1620 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1621 : BaseHandle( internal )
1625 WebEngine::~WebEngine()
1629 WebEngine WebEngine::New()
1631 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1633 return WebEngine( baseObject );
1636 WebEngine::WebEngine( const WebEngine& WebEngine )
1637 : BaseHandle( WebEngine )
1641 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
1643 BaseHandle::operator=( webEngine );
1647 WebEngine WebEngine::DownCast( BaseHandle handle )
1649 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
1652 void WebEngine::Create( int width, int height, const std::string& locale, const std::string& timezoneId )
1656 void WebEngine::Create( int width, int height, int argc, char** argv )
1660 void WebEngine::Destroy()
1664 WebEngineSettings& WebEngine::GetSettings() const
1666 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
1669 WebEngineContext& WebEngine::GetContext() const
1671 return Internal::Adaptor::GetImplementation( *this ).GetContext();
1674 WebEngineCookieManager& WebEngine::GetCookieManager() const
1676 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
1679 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
1681 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
1684 void WebEngine::LoadUrl( const std::string& url )
1686 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
1689 std::string WebEngine::GetTitle() const
1691 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
1694 Dali::PixelData WebEngine::GetFavicon() const
1696 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
1699 const std::string& WebEngine::GetUrl()
1701 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
1704 NativeImageInterfacePtr WebEngine::GetNativeImageSource()
1707 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
1711 void WebEngine::LoadHtmlString( const std::string& htmlString )
1715 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
1720 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
1725 void WebEngine::Reload()
1729 bool WebEngine::ReloadWithoutCache()
1734 void WebEngine::StopLoading()
1738 void WebEngine::Suspend()
1742 void WebEngine::Resume()
1746 void WebEngine::SuspendNetworkLoading()
1750 void WebEngine::ResumeNetworkLoading()
1754 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
1759 bool WebEngine::RemoveCustomHeader(const std::string& name)
1764 uint32_t WebEngine::StartInspectorServer(uint32_t port)
1769 bool WebEngine::StopInspectorServer()
1774 bool WebEngine::CanGoForward()
1776 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
1779 void WebEngine::GoForward()
1781 Internal::Adaptor::GetImplementation( *this ).GoForward();
1784 bool WebEngine::CanGoBack()
1786 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
1789 void WebEngine::GoBack()
1791 Internal::Adaptor::GetImplementation( *this ).GoBack();
1794 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1796 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
1799 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
1803 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1805 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
1808 void WebEngine::JavaScriptAlertReply()
1812 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1814 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
1817 void WebEngine::JavaScriptConfirmReply( bool confirmed )
1821 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1823 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
1826 void WebEngine::JavaScriptPromptReply( const std::string& result )
1830 void WebEngine::ClearAllTilesResources()
1834 void WebEngine::ClearHistory()
1836 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
1839 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1841 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
1844 float WebEngine::GetScaleFactor() const
1846 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
1849 void WebEngine::ActivateAccessibility(bool activated)
1853 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
1858 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
1862 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int> viewArea, float scaleFactor)
1864 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
1867 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1869 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
1872 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1874 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
1877 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1879 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
1882 const std::string& WebEngine::GetUserAgent() const
1884 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
1887 void WebEngine::SetUserAgent( const std::string& userAgent )
1889 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
1892 void WebEngine::ScrollBy( int dx, int dy )
1894 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
1897 bool WebEngine::ScrollEdgeBy( int dx, int dy )
1899 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
1902 void WebEngine::SetScrollPosition( int x, int y )
1904 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
1907 Dali::Vector2 WebEngine::GetScrollPosition() const
1909 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
1912 Dali::Vector2 WebEngine::GetScrollSize() const
1914 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
1917 Dali::Vector2 WebEngine::GetContentSize() const
1919 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
1922 void WebEngine::SetSize( int width, int height )
1926 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
1930 void WebEngine::ClearTilesWhenHidden(bool cleared)
1934 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
1938 void WebEngine::EnableCursorByClient(bool enabled)
1942 std::string WebEngine::GetSelectedText() const
1947 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
1952 bool WebEngine::SendKeyEvent( const KeyEvent& event )
1957 bool WebEngine::SendHoverEvent( const HoverEvent& event )
1962 bool WebEngine::SendWheelEvent( const WheelEvent& event )
1967 void WebEngine::SetFocus( bool focused )
1971 void WebEngine::SetPageZoomFactor(float zoomFactor)
1973 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
1976 float WebEngine::GetPageZoomFactor() const
1978 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
1981 void WebEngine::SetTextZoomFactor(float zoomFactor)
1983 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
1986 float WebEngine::GetTextZoomFactor() const
1988 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
1991 float WebEngine::GetLoadProgressPercentage() const
1993 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
1996 void WebEngine::UpdateDisplayArea( Dali::Rect< int > displayArea )
2000 void WebEngine::EnableVideoHole( bool enabled )
2004 void WebEngine::EnableMouseEvents( bool enabled )
2008 void WebEngine::EnableKeyEvents( bool enabled )
2012 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadStartedSignal()
2014 return Internal::Adaptor::GetImplementation( *this ).PageLoadStartedSignal();
2017 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadInProgressSignal()
2019 return Internal::Adaptor::GetImplementation( *this ).PageLoadInProgressSignal();
2022 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadFinishedSignal()
2024 return Internal::Adaptor::GetImplementation( *this ).PageLoadFinishedSignal();
2027 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& WebEngine::PageLoadErrorSignal()
2029 return Internal::Adaptor::GetImplementation( *this ).PageLoadErrorSignal();
2032 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& WebEngine::ScrollEdgeReachedSignal()
2034 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeReachedSignal();
2037 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& WebEngine::UrlChangedSignal()
2039 return Internal::Adaptor::GetImplementation( *this ).UrlChangedSignal();
2042 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& WebEngine::FormRepostDecisionSignal()
2044 return Internal::Adaptor::GetImplementation(*this).FormRepostDecisionSignal();
2047 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
2049 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
2052 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& WebEngine::RequestInterceptorSignal()
2054 return Internal::Adaptor::GetImplementation(*this).RequestInterceptorSignal();
2057 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& WebEngine::ConsoleMessageSignal()
2059 return Internal::Adaptor::GetImplementation(*this).ConsoleMessageSignal();
2062 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType& WebEngine::PolicyDecisionSignal()
2064 return Internal::Adaptor::GetImplementation(*this).PolicyDecisionSignal();
2067 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::CertificateConfirmSignal()
2069 return Internal::Adaptor::GetImplementation(*this).CertificateConfirmSignal();
2072 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::SslCertificateChangedSignal()
2074 return Internal::Adaptor::GetImplementation(*this).SslCertificateChangedSignal();
2077 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& WebEngine::HttpAuthHandlerSignal()
2079 return Internal::Adaptor::GetImplementation(*this).HttpAuthHandlerSignal();
2082 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& WebEngine::ContextMenuCustomizedSignal()
2084 return Internal::Adaptor::GetImplementation( *this ).ContextMenuCustomizedSignal();
2087 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& WebEngine::ContextMenuItemSelectedSignal()
2089 return Internal::Adaptor::GetImplementation( *this ).ContextMenuItemSelectedSignal();
2092 } // namespace Dali;