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-hit-test.h>
32 #include <dali/devel-api/adaptor-framework/web-engine-http-auth-handler.h>
33 #include <dali/devel-api/adaptor-framework/web-engine-load-error.h>
34 #include <dali/devel-api/adaptor-framework/web-engine-policy-decision.h>
35 #include <dali/devel-api/adaptor-framework/web-engine-request-interceptor.h>
36 #include <dali/devel-api/adaptor-framework/web-engine-security-origin.h>
37 #include <dali/devel-api/adaptor-framework/web-engine-settings.h>
38 #include <dali/public-api/adaptor-framework/native-image-source.h>
39 #include <dali/public-api/images/pixel-data.h>
40 #include <dali/public-api/object/any.h>
41 #include <dali/public-api/object/base-object.h>
42 #include <dali/public-api/object/property-map.h>
45 #include <toolkit-application.h>
57 class MockWebEngineContext;
62 // Generally only one WebEngine instance exists.
63 // If > 1, a new web engine has been created by CreateWindowSignal.
64 static WebEngine* gInstance = nullptr;
65 static int gInstanceCount = 0;
66 static MockWebEngineContext* gWebEngineContextInstance = nullptr;
71 bool OnEvaluteJavaScript();
72 bool OnJavaScriptAlert();
73 bool OnJavaScriptConfirm();
74 bool OnJavaScriptPrompt();
75 bool OnHitTestCreated();
77 bool OnScreenshotCaptured();
78 bool OnVideoPlaying();
79 bool OnGeolocationPermission();
80 bool OnClearHistory();
81 bool OnSecurityOriginAcquired();
82 bool OnStorageUsageAcquired();
83 bool OnFormPasswordAcquired();
84 bool OnDownloadStarted();
85 bool OnMimeOverridden();
87 static void ConnectToGlobalSignal( bool ( *func )() )
89 Dali::Timer timer = Dali::Timer::New( 0 );
90 timer.TickSignal().Connect( func );
93 static void DisconnectFromGlobalSignal( bool ( *func )() )
95 Dali::Timer timer = Dali::Timer::New( 0 );
96 timer.TickSignal().Disconnect( func );
98 } // namespace anonymous
100 class MockWebEngineContext : public Dali::WebEngineContext
103 MockWebEngineContext()
104 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
108 Dali::WebEngineContext::CacheModel GetCacheModel() const override
113 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
115 mockModel = cacheModel;
118 void SetProxyUri( const std::string& uri ) override
122 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
126 void SetCertificateFilePath( const std::string& certificatePath ) override
130 void DeleteAllWebDatabase() override
134 bool GetWebDatabaseOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
138 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
139 mSecurityOriginAcquiredCallback = callback;
144 bool DeleteWebDatabase(Dali::WebEngineSecurityOrigin& origin)
149 bool GetWebStorageOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
153 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
154 mSecurityOriginAcquiredCallback = callback;
159 bool GetWebStorageUsageForOrigin(Dali::WebEngineSecurityOrigin& origin, Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback callback)
163 ConnectToGlobalSignal(&OnStorageUsageAcquired);
164 mStorageUsageAcquiredCallback = callback;
169 void DeleteAllWebStorage() override
173 bool DeleteWebStorageOrigin(Dali::WebEngineSecurityOrigin& origin)
178 void DeleteLocalFileSystem() override
182 void DisableCache( bool cacheDisabled ) override
186 void ClearCache() override
190 bool DeleteApplicationCache(Dali::WebEngineSecurityOrigin& origin)
195 void GetFormPasswordList(Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback callback)
199 ConnectToGlobalSignal(&OnFormPasswordAcquired);
200 mFormPasswordAcquiredCallback = callback;
204 void RegisterDownloadStartedCallback(Dali::WebEngineContext::WebEngineDownloadStartedCallback callback)
208 ConnectToGlobalSignal(&OnDownloadStarted);
209 mDownloadStartedCallback = callback;
213 void RegisterMimeOverriddenCallback(Dali::WebEngineContext::WebEngineMimeOverriddenCallback callback)
217 ConnectToGlobalSignal(&OnMimeOverridden);
218 mMimeOverriddenCallback = callback;
223 Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback mSecurityOriginAcquiredCallback;
224 Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback mStorageUsageAcquiredCallback;
225 Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback mFormPasswordAcquiredCallback;
226 Dali::WebEngineContext::WebEngineDownloadStartedCallback mDownloadStartedCallback;
227 Dali::WebEngineContext::WebEngineMimeOverriddenCallback mMimeOverriddenCallback;
230 Dali::WebEngineContext::CacheModel mockModel;
233 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
236 MockWebEngineCookieManager()
237 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
241 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
243 mockCookieAcceptPolicy = policy;
246 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
248 return mockCookieAcceptPolicy;
251 void ClearCookies() override
255 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
260 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
263 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
266 MockWebEngineBackForwardListItem()
267 : mockUrl( "http://url" ),
268 mockTitle( "title" ),
269 mockOriginalUrl( "http://originalurl" )
273 std::string GetUrl() const override
278 std::string GetTitle() const override
283 std::string GetOriginalUrl() const override
285 return mockOriginalUrl;
290 std::string mockTitle;
291 std::string mockOriginalUrl;
294 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
297 MockWebEngineBackForwardList()
301 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetCurrentItem() const override
303 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
307 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetPreviousItem() const override
309 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
313 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetNextItem() const override
315 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
319 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetItemAtIndex( uint32_t index ) const override
321 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
325 uint32_t GetItemCount() const override
330 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetBackwardItems(int limit) override
332 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
333 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
334 ret.push_back(std::move(item));
338 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetForwardItems(int limit) override
340 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
341 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
342 ret.push_back(std::move(item));
348 class MockWebEngineCertificate : public Dali::WebEngineCertificate
351 MockWebEngineCertificate()
355 void Allow(bool allowed) override
359 bool IsFromMainFrame() const override
364 std::string GetPem() const override
369 bool IsContextSecure() const override
375 class MockWebEngineHttpAuthHandler : public Dali::WebEngineHttpAuthHandler
378 MockWebEngineHttpAuthHandler()
382 std::string GetRealm() const override
387 void Suspend() override
391 void UseCredential(const std::string& user, const std::string& password) override
395 void CancelCredential() override
400 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
403 MockWebEngineFormRepostDecision()
407 void Reply(bool allowed) override {}
410 class MockWebEngineFrame : public Dali::WebEngineFrame
417 bool IsMainFrame() const override
423 class MockWebEnginePolicyDecision : public Dali::WebEnginePolicyDecision
426 MockWebEnginePolicyDecision()
430 std::string GetUrl() const override
432 return "http://test.html";
435 std::string GetCookie() const override
440 Dali::WebEnginePolicyDecision::DecisionType GetDecisionType() const
442 return Dali::WebEnginePolicyDecision::DecisionType::USE;
445 std::string GetResponseMime() const
450 int32_t GetResponseStatusCode() const
455 Dali::WebEnginePolicyDecision::NavigationType GetNavigationType() const
457 return Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
460 Dali::WebEngineFrame& GetFrame() const
462 return *(Dali::WebEngineFrame*)(&mockWebFrame);
465 std::string GetScheme() const
486 MockWebEngineFrame mockWebFrame;
489 class MockWebEngineRequestInterceptor : public WebEngineRequestInterceptor
492 MockWebEngineRequestInterceptor()
496 std::string GetUrl() const override
498 return "http://test.html";
501 bool Ignore() override
506 bool SetResponseStatus(int statusCode, const std::string &customedStatusText) override
511 bool AddResponseHeader(const std::string &fieldName, const std::string &fieldValue) override
516 bool AddResponseBody(const std::string &body, uint32_t length) override
522 class MockWebEngineConsoleMessage : public Dali::WebEngineConsoleMessage
525 MockWebEngineConsoleMessage()
529 std::string GetSource() const override
534 uint32_t GetLine() const override
539 SeverityLevel GetSeverityLevel() const override
541 return SeverityLevel::EMPTY;
544 std::string GetText() const override
546 return "This is a text.";
550 class MockWebEngineLoadError : public Dali::WebEngineLoadError
553 MockWebEngineLoadError(const std::string& url)
558 std::string GetUrl() const override
563 ErrorCode GetCode() const override
565 return ErrorCode::UNKNOWN;
568 std::string GetDescription() const override
570 return "This is an error.";
573 ErrorType GetType() const override
575 return ErrorType::NONE;
582 class MockWebEngineContextMenuItem : public Dali::WebEngineContextMenuItem
585 MockWebEngineContextMenuItem()
589 ItemTag GetTag() const override
591 return ItemTag::NO_ACTION;
594 ItemType GetType() const override
596 return ItemType::ACTION;
599 bool IsEnabled() const override
604 std::string GetLinkUrl() const override
606 return "http://test.html";
609 std::string GetImageUrl() const override
611 return "http://test.jpg";
614 std::string GetTitle() const override
619 std::unique_ptr<Dali::WebEngineContextMenu> GetParentMenu() const override
621 std::unique_ptr<Dali::WebEngineContextMenu> result;
626 class MockWebEngineContextMenu : public Dali::WebEngineContextMenu
629 MockWebEngineContextMenu()
633 uint32_t GetItemCount() const override
638 std::unique_ptr<Dali::WebEngineContextMenuItem> GetItemAt(uint32_t index) const override
640 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
644 std::vector<std::unique_ptr<WebEngineContextMenuItem>> GetItemList() const override
646 std::vector<std::unique_ptr<WebEngineContextMenuItem>> result;
647 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
648 result.push_back(std::move(webitem));
652 Dali::Vector2 GetPosition() const override
654 return Dali::Vector2(100, 100);
657 bool RemoveItem(WebEngineContextMenuItem& item) override
662 bool AppendItemAsAction(WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled) override
667 bool AppendItem(WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled) override
672 bool SelectItem(WebEngineContextMenuItem& item) override
683 class MockWebEngineHitTest : public Dali::WebEngineHitTest
686 MockWebEngineHitTest()
690 ResultContext GetResultContext() const override
692 return ResultContext::DOCUMENT;
695 std::string GetLinkUri() const override
697 return "http://test.html";
700 std::string GetLinkTitle() const override
705 std::string GetLinkLabel() const override
710 std::string GetImageUri() const override
712 return "http://test.jpg";
715 std::string GetMediaUri() const override
717 return "http://test.mp4";
720 std::string GetTagName() const override
725 std::string GetNodeValue() const override
730 Dali::Property::Map& GetAttributes() const override
732 return mockAttributesMap;
735 std::string GetImageFileNameExtension() const override
740 Dali::PixelData GetImageBuffer() override
742 uint8_t* faviconData = new uint8_t[ 16 ];
743 memset(faviconData, 0xff, 16);
744 return Dali::PixelData::New( faviconData, 16, 2, 2,
745 Dali::Pixel::Format::RGBA8888,
746 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
750 mutable Dali::Property::Map mockAttributesMap;
753 class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin
756 MockWebEngineSecurityOrigin()
757 : mockUrl("https://test.html")
758 , mockPotocol("https")
762 std::string GetHost() const
767 std::string GetProtocol() const
774 std::string mockPotocol;
777 class MockWebEngineSettings : public WebEngineSettings
780 MockWebEngineSettings()
781 : mockDefaultFontSize( 16 ),
782 mockJavaScriptEnabled( true ),
783 mockAutoFittingEnabled ( true ),
784 mockPluginsEnabled ( true ),
785 mockPrivateBrowsingEnabled( true ),
786 mockLinkMagnifierEnabled( true ),
787 mockKeypadWithoutUserActionUsed( true ),
788 mockAutofillPasswordFormEnabled( true ),
789 mockFormCandidateDataEnabled( true ),
790 mockTextSelectionEnabled( true ),
791 mockTextAutosizingEnable( true ),
792 mockArrowScrollEnable( true ),
793 mockClipboardEnabled( true ),
794 mockImePanelEnabled( true ),
795 mockImageLoadedAutomatically( true ),
796 mockDefaultTextEncodingName()
800 uint32_t GetDefaultFontSize() const override
802 return mockDefaultFontSize;
805 void SetDefaultFontSize( uint32_t size ) override
807 mockDefaultFontSize = size;
810 bool IsJavaScriptEnabled() const override
812 return mockJavaScriptEnabled;
815 void EnableJavaScript( bool enabled ) override
817 mockJavaScriptEnabled = enabled;
820 bool IsAutoFittingEnabled() const override
822 return mockAutoFittingEnabled;
825 void EnableAutoFitting( bool enabled ) override
827 mockAutoFittingEnabled = enabled;
830 bool ArePluginsEnabled() const override
832 return mockPluginsEnabled;
835 void EnablePlugins( bool enabled ) override
837 mockPluginsEnabled = enabled;
840 bool IsPrivateBrowsingEnabled() const override
842 return mockPrivateBrowsingEnabled;
845 void EnablePrivateBrowsing( bool enabled ) override
847 mockPrivateBrowsingEnabled = enabled;
850 bool IsLinkMagnifierEnabled() const override
852 return mockLinkMagnifierEnabled;
855 void EnableLinkMagnifier( bool enabled ) override
857 mockLinkMagnifierEnabled = enabled;
860 bool IsKeypadWithoutUserActionUsed() const override
862 return mockKeypadWithoutUserActionUsed;
865 void UseKeypadWithoutUserAction( bool used ) override
867 mockKeypadWithoutUserActionUsed = used;
870 bool IsAutofillPasswordFormEnabled() const override
872 return mockAutofillPasswordFormEnabled;
875 void EnableAutofillPasswordForm( bool enabled ) override
877 mockAutofillPasswordFormEnabled = enabled;
880 bool IsFormCandidateDataEnabled() const override
882 return mockFormCandidateDataEnabled;
885 void EnableFormCandidateData( bool enabled ) override
887 mockFormCandidateDataEnabled = enabled;
890 bool IsTextSelectionEnabled() const override
892 return mockTextSelectionEnabled;
895 void EnableTextSelection( bool enabled ) override
897 mockTextSelectionEnabled = enabled;
900 bool IsTextAutosizingEnabled() const override
902 return mockTextAutosizingEnable;
905 void EnableTextAutosizing( bool enabled ) override
907 mockTextAutosizingEnable = enabled;
910 bool IsArrowScrollEnabled() const override
912 return mockArrowScrollEnable;
915 void EnableArrowScroll( bool enabled ) override
917 mockArrowScrollEnable = enabled;
920 bool IsClipboardEnabled() const override
922 return mockClipboardEnabled;
925 void EnableClipboard( bool enabled ) override
927 mockClipboardEnabled = enabled;
930 bool IsImePanelEnabled() const override
932 return mockImePanelEnabled;
935 void EnableImePanel( bool enabled ) override
937 mockImePanelEnabled = enabled;
940 bool AreImagesLoadedAutomatically() const override
942 return mockImageLoadedAutomatically;
945 void AllowImagesLoadAutomatically( bool automatic ) override
947 mockImageLoadedAutomatically = automatic;
950 std::string GetDefaultTextEncodingName() const override
952 return mockDefaultTextEncodingName;
955 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
957 mockDefaultTextEncodingName = defaultTextEncodingName;
960 void AllowMixedContents( bool allowed ) override
964 void EnableSpatialNavigation( bool enabled ) override
968 void EnableWebSecurity( bool enabled ) override
972 void EnableCacheBuilder( bool enabled ) override
976 void UseScrollbarThumbFocusNotifications( bool used ) override
980 void EnableDoNotTrack( bool enabled ) override
984 void AllowFileAccessFromExternalUrl( bool allowed ) override
988 void AllowScriptsOpenWindows( bool allowed ) override
992 bool SetViewportMetaTag(bool enable) override
997 bool SetForceZoom(bool enable) override
1002 bool IsZoomForced() const override
1007 bool SetTextZoomEnabled(bool enable) override
1012 bool IsTextZoomEnabled() const override
1017 void SetExtraFeature(const std::string& feature, bool enable) override
1021 bool IsExtraFeatureEnabled(const std::string& feature) const override
1027 int mockDefaultFontSize;
1028 bool mockJavaScriptEnabled;
1029 bool mockAutoFittingEnabled;
1030 bool mockPluginsEnabled;
1031 bool mockPrivateBrowsingEnabled;
1032 bool mockLinkMagnifierEnabled;
1033 bool mockKeypadWithoutUserActionUsed;
1034 bool mockAutofillPasswordFormEnabled;
1035 bool mockFormCandidateDataEnabled;
1036 bool mockTextSelectionEnabled;
1037 bool mockTextAutosizingEnable;
1038 bool mockArrowScrollEnable;
1039 bool mockClipboardEnabled;
1040 bool mockImePanelEnabled;
1041 bool mockImageLoadedAutomatically;
1042 std::string mockDefaultTextEncodingName;
1045 class WebEngine: public Dali::BaseObject
1049 using JavaScriptEvaluatedResultCallback = std::function<void(const std::string&)>;
1053 , mCurrentPlusOnePos( 0 )
1055 , mEvaluating( false )
1056 , mScrollPosition( 0, 0 )
1057 , mScrollSize( 500, 500 )
1058 , mContentSize( 500, 500 )
1061 if ( gInstanceCount == 1 ) // only first web engine need be saved.
1066 mockWebEngineSettings = new MockWebEngineSettings();
1067 MockWebEngineContext* engineContext = new MockWebEngineContext();
1068 mockWebEngineContext = engineContext;
1069 if ( gInstanceCount == 1 )
1071 gWebEngineContextInstance = engineContext;
1073 mockWebEngineCookieManager = new MockWebEngineCookieManager();
1074 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
1077 virtual ~WebEngine()
1080 if( !gInstanceCount )
1083 gWebEngineContextInstance = 0;
1086 delete mockWebEngineSettings;
1087 delete mockWebEngineContext;
1088 delete mockWebEngineCookieManager;
1089 delete mockWebEngineBackForwardList;
1092 Dali::WebEngineSettings& GetSettings() const
1094 return *mockWebEngineSettings;
1097 Dali::WebEngineContext& GetContext() const
1099 return *mockWebEngineContext;
1102 Dali::WebEngineCookieManager& GetCookieManager() const
1104 return *mockWebEngineCookieManager;
1107 Dali::WebEngineBackForwardList& GetBackForwardList() const
1109 return *mockWebEngineBackForwardList;
1112 void LoadUrl( const std::string& url )
1115 ConnectToGlobalSignal( &OnLoadUrl );
1118 const std::string& GetUrl() const
1123 std::string GetTitle() const
1125 return std::string("title");
1128 Dali::PixelData GetFavicon() const
1130 uint8_t* faviconData = new uint8_t[ 16 ];
1132 faviconData[ 0 ] = 0xff;
1133 faviconData[ 1 ] = 0x00;
1134 faviconData[ 2 ] = 0x00;
1135 faviconData[ 3 ] = 0xff;
1136 faviconData[ 4 ] = 0xff;
1137 faviconData[ 5 ] = 0x00;
1138 faviconData[ 6 ] = 0x00;
1139 faviconData[ 7 ] = 0xff;
1140 faviconData[ 8 ] = 0xff;
1141 faviconData[ 9 ] = 0x00;
1142 faviconData[ 10 ] = 0x00;
1143 faviconData[ 11 ] = 0xff;
1144 faviconData[ 12 ] = 0xff;
1145 faviconData[ 13 ] = 0x00;
1146 faviconData[ 14 ] = 0x00;
1147 faviconData[ 15 ] = 0xff;
1149 return Dali::PixelData::New( faviconData, 16, 2, 2,
1150 Dali::Pixel::Format::RGBA8888,
1151 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1154 bool CanGoForward() const
1156 return mHistory.size() > mCurrentPlusOnePos;
1161 ConnectToGlobalSignal( &OnGoForward );
1164 bool CanGoBack() const
1166 return mCurrentPlusOnePos > 1;
1171 ConnectToGlobalSignal( &OnGoBack );
1174 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1180 ConnectToGlobalSignal( &OnEvaluteJavaScript );
1182 mResultCallbacks.push_back( resultHandler );
1186 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1190 ConnectToGlobalSignal( &OnJavaScriptAlert );
1191 mJavaScriptAlertCallback = callback;
1195 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1199 ConnectToGlobalSignal( &OnJavaScriptConfirm );
1200 mJavaScriptConfirmCallback = callback;
1204 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1208 ConnectToGlobalSignal( &OnJavaScriptPrompt );
1209 mJavaScriptPromptCallback = callback;
1213 std::unique_ptr<Dali::WebEngineHitTest> CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
1215 std::unique_ptr<Dali::WebEngineHitTest> hitTest(new MockWebEngineHitTest());
1219 bool CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
1223 ConnectToGlobalSignal( &OnHitTestCreated );
1224 mHitTestCreatedCallback = callback;
1231 ConnectToGlobalSignal( &OnClearHistory );
1234 const std::string& GetUserAgent() const
1239 void SetUserAgent( const std::string& userAgent )
1241 mUserAgent = userAgent;
1244 void ScrollBy( int32_t dx, int32_t dy )
1246 mScrollPosition += Dali::Vector2( dx, dy );
1247 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1249 ConnectToGlobalSignal( &OnScrollEdge );
1253 bool ScrollEdgeBy( int32_t dx, int32_t dy )
1255 mScrollPosition += Dali::Vector2( dx, dy );
1256 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1258 ConnectToGlobalSignal( &OnScrollEdge );
1263 void SetScrollPosition( int32_t x, int32_t y )
1265 mScrollPosition.x = x;
1266 mScrollPosition.y = y;
1269 Dali::Vector2 GetScrollPosition() const
1271 return mScrollPosition;
1274 Dali::Vector2 GetScrollSize() const
1279 Dali::Vector2 GetContentSize() const
1281 return mContentSize;
1284 void SetPageZoomFactor(float zoomFactor)
1286 mPageZoomFactor = zoomFactor;
1289 float GetPageZoomFactor() const
1291 return mPageZoomFactor;
1294 void SetTextZoomFactor(float zoomFactor)
1296 mTextZoomFactor = zoomFactor;
1299 float GetTextZoomFactor() const
1301 return mTextZoomFactor;
1304 float GetLoadProgressPercentage() const
1309 void SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1311 mScaleFactor = scaleFactor;
1314 float GetScaleFactor() const
1316 return mScaleFactor;
1319 Dali::PixelData GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
1321 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
1322 uint8_t* pixel = new uint8_t[ bufferSize ];
1323 memset(pixel, 0xff, bufferSize);
1324 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
1325 Dali::Pixel::Format::RGBA8888,
1326 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1329 bool GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1333 ConnectToGlobalSignal( &OnScreenshotCaptured );
1334 mScreenshotCapturedCallback = callback;
1339 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1343 ConnectToGlobalSignal( &OnVideoPlaying );
1344 mVideoPlayingCallback = callback;
1349 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1353 ConnectToGlobalSignal( &OnGeolocationPermission );
1354 mGeolocationPermissionCallback = callback;
1358 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal()
1360 return mPageLoadStartedSignal;
1363 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadInProgressSignal()
1365 return mPageLoadInProgressSignal;
1368 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal()
1370 return mPageLoadFinishedSignal;
1373 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal()
1375 return mPageLoadErrorSignal;
1378 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal()
1380 return mScrollEdgeReachedSignal;
1383 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& UrlChangedSignal()
1385 return mUrlChangedSignal;
1388 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal()
1390 return mFormRepostDecisionSignal;
1393 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
1395 return mFrameRenderedSignal;
1398 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& RequestInterceptorSignal()
1400 return mRequestInterceptorSignal;
1403 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& ConsoleMessageSignal()
1405 return mConsoleMessageSignal;
1408 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType& PolicyDecisionSignal()
1410 return mPolicyDecisionSignal;
1413 Dali::WebEnginePlugin::WebEngineCertificateSignalType& CertificateConfirmSignal()
1415 return mCertificateConfirmSignal;
1418 Dali::WebEnginePlugin::WebEngineCertificateSignalType& SslCertificateChangedSignal()
1420 return mSslCertificateChangedSignal;
1423 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& HttpAuthHandlerSignal()
1425 return mHttpAuthHandlerSignal;
1428 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& ContextMenuCustomizedSignal()
1430 return mContextMenuCustomizedSignal;
1433 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& ContextMenuItemSelectedSignal()
1435 return mContextMenuItemSelectedSignal;
1439 std::vector<std::string> mHistory;
1440 size_t mCurrentPlusOnePos;
1441 std::string mUserAgent;
1443 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
1444 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
1445 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
1446 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
1447 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
1448 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
1449 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
1450 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1451 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
1452 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
1453 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal;
1454 Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
1455 Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
1456 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
1457 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType mContextMenuCustomizedSignal;
1458 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType mContextMenuItemSelectedSignal;
1461 float mPageZoomFactor;
1462 float mTextZoomFactor;
1465 Dali::Vector2 mScrollPosition;
1466 Dali::Vector2 mScrollSize;
1467 Dali::Vector2 mContentSize;
1468 WebEngineBackForwardList* mockWebEngineBackForwardList;
1469 WebEngineContext* mockWebEngineContext;
1470 WebEngineCookieManager* mockWebEngineCookieManager;
1471 WebEngineSettings* mockWebEngineSettings;
1473 std::vector<JavaScriptEvaluatedResultCallback> mResultCallbacks;
1474 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1475 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1476 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1477 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1478 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1479 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1480 Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback;
1489 DisconnectFromGlobalSignal( &OnGoBack );
1491 if( gInstance && gInstance->CanGoBack() )
1493 gInstance->mCurrentPlusOnePos--;
1500 DisconnectFromGlobalSignal( &OnGoForward );
1502 if( gInstance && gInstance->CanGoForward() )
1504 gInstance->mCurrentPlusOnePos++;
1511 DisconnectFromGlobalSignal( &OnLoadUrl );
1515 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1517 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1519 gInstance->mHistory.push_back( gInstance->mUrl );
1520 gInstance->mCurrentPlusOnePos++;
1521 gInstance->mPageLoadStartedSignal.Emit( gInstance->mUrl );
1522 gInstance->mPageLoadInProgressSignal.Emit( gInstance->mUrl );
1523 gInstance->mPageLoadFinishedSignal.Emit( gInstance->mUrl );
1524 gInstance->mUrlChangedSignal.Emit( "http://new-test" );
1526 std::shared_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1527 gInstance->mFormRepostDecisionSignal.Emit(std::move(repostDecision));
1528 gInstance->mFrameRenderedSignal.Emit();
1529 std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor(new MockWebEngineRequestInterceptor());
1530 gInstance->mRequestInterceptorSignal.Emit(std::move(interceptor));
1532 std::shared_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1533 gInstance->mPageLoadErrorSignal.Emit(std::move(error));
1534 std::shared_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1535 gInstance->mConsoleMessageSignal.Emit(std::move(message));
1536 std::shared_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1537 gInstance->mPolicyDecisionSignal.Emit(std::move(policyDecision));
1539 std::shared_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1540 gInstance->mCertificateConfirmSignal.Emit(std::move(certificate));
1541 std::shared_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1542 gInstance->mSslCertificateChangedSignal.Emit(std::move(sslCertificate));
1543 std::shared_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1544 gInstance->mHttpAuthHandlerSignal.Emit(std::move(handler));
1546 std::shared_ptr<Dali::WebEngineContextMenu> menu(new MockWebEngineContextMenu());
1547 gInstance->mContextMenuCustomizedSignal.Emit(std::move(menu));
1548 std::shared_ptr<Dali::WebEngineContextMenuItem> item(new MockWebEngineContextMenuItem());
1549 gInstance->mContextMenuItemSelectedSignal.Emit(std::move(item));
1556 DisconnectFromGlobalSignal( &OnScrollEdge );
1560 gInstance->mScrollEdgeReachedSignal.Emit( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1566 bool OnEvaluteJavaScript()
1568 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1572 for( auto& func : gInstance->mResultCallbacks )
1576 gInstance->mResultCallbacks.clear();
1581 bool OnJavaScriptAlert()
1583 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1586 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1591 bool OnJavaScriptConfirm()
1593 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1596 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1601 bool OnJavaScriptPrompt()
1603 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1606 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1611 bool OnScreenshotCaptured()
1613 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1616 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1617 memset(pixel, 0xff, 2 * 2 * 4);
1618 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1619 Dali::Pixel::Format::RGBA8888,
1620 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1621 gInstance->mScreenshotCapturedCallback( data );
1626 bool OnVideoPlaying()
1628 DisconnectFromGlobalSignal( &OnVideoPlaying );
1631 gInstance->mVideoPlayingCallback( true );
1636 bool OnGeolocationPermission()
1638 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1641 gInstance->mGeolocationPermissionCallback( "", "" );
1646 bool OnHitTestCreated()
1648 DisconnectFromGlobalSignal(&OnHitTestCreated);
1651 std::unique_ptr<Dali::WebEngineHitTest> test(new MockWebEngineHitTest());
1652 gInstance->mHitTestCreatedCallback(std::move(test));
1657 bool OnClearHistory()
1659 DisconnectFromGlobalSignal( &OnClearHistory );
1661 if( gInstance && gInstance->mCurrentPlusOnePos )
1663 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1664 std::vector< std::string >().swap( gInstance->mHistory );
1665 gInstance->mHistory.push_back( url );
1666 gInstance->mCurrentPlusOnePos = 1;
1671 bool OnSecurityOriginAcquired()
1673 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1674 if (gWebEngineContextInstance)
1676 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1677 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1678 securityOriginList.push_back(std::move(origin));
1679 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1684 bool OnStorageUsageAcquired()
1686 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1687 if (gWebEngineContextInstance)
1689 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1694 bool OnFormPasswordAcquired()
1696 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1697 if (gWebEngineContextInstance)
1699 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1700 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1701 data->url = "http://test.html";
1702 data->useFingerprint = false;
1703 formPasswordList.push_back(std::move(data));
1704 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1709 bool OnDownloadStarted()
1711 DisconnectFromGlobalSignal(&OnDownloadStarted);
1712 if (gWebEngineContextInstance)
1714 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1719 bool OnMimeOverridden()
1721 DisconnectFromGlobalSignal(&OnMimeOverridden);
1722 if (gWebEngineContextInstance)
1724 std::string newMime;
1725 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1732 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1734 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1735 BaseObject& handle = webEngine.GetBaseObject();
1736 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1739 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1741 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1742 const BaseObject& handle = webEngine.GetBaseObject();
1743 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1746 } // namespace Adaptor
1748 } // namespace Internal
1750 // Dali::WebEngine Implementation
1751 WebEngine::WebEngine()
1755 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1756 : BaseHandle( internal )
1760 WebEngine::~WebEngine()
1764 WebEngine WebEngine::New()
1766 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1768 return WebEngine( baseObject );
1771 WebEngine::WebEngine( const WebEngine& WebEngine )
1772 : BaseHandle( WebEngine )
1776 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
1778 BaseHandle::operator=( webEngine );
1782 WebEngine WebEngine::DownCast( BaseHandle handle )
1784 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
1787 void WebEngine::Create( uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId )
1791 void WebEngine::Create( uint32_t width, uint32_t height, uint32_t argc, char** argv )
1795 void WebEngine::Destroy()
1799 WebEngineSettings& WebEngine::GetSettings() const
1801 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
1804 WebEngineContext& WebEngine::GetContext() const
1806 return Internal::Adaptor::GetImplementation( *this ).GetContext();
1809 WebEngineCookieManager& WebEngine::GetCookieManager() const
1811 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
1814 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
1816 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
1819 void WebEngine::LoadUrl( const std::string& url )
1821 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
1824 std::string WebEngine::GetTitle() const
1826 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
1829 Dali::PixelData WebEngine::GetFavicon() const
1831 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
1834 const std::string& WebEngine::GetUrl()
1836 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
1839 NativeImageInterfacePtr WebEngine::GetNativeImageSource()
1842 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
1846 void WebEngine::LoadHtmlString( const std::string& htmlString )
1850 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
1855 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
1860 void WebEngine::Reload()
1864 bool WebEngine::ReloadWithoutCache()
1869 void WebEngine::StopLoading()
1873 void WebEngine::Suspend()
1877 void WebEngine::Resume()
1881 void WebEngine::SuspendNetworkLoading()
1885 void WebEngine::ResumeNetworkLoading()
1889 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
1894 bool WebEngine::RemoveCustomHeader(const std::string& name)
1899 uint32_t WebEngine::StartInspectorServer(uint32_t port)
1904 bool WebEngine::StopInspectorServer()
1909 bool WebEngine::CanGoForward()
1911 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
1914 void WebEngine::GoForward()
1916 Internal::Adaptor::GetImplementation( *this ).GoForward();
1919 bool WebEngine::CanGoBack()
1921 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
1924 void WebEngine::GoBack()
1926 Internal::Adaptor::GetImplementation( *this ).GoBack();
1929 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1931 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
1934 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
1938 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1940 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
1943 void WebEngine::JavaScriptAlertReply()
1947 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1949 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
1952 void WebEngine::JavaScriptConfirmReply( bool confirmed )
1956 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1958 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
1961 void WebEngine::JavaScriptPromptReply( const std::string& result )
1965 std::unique_ptr<Dali::WebEngineHitTest> WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
1967 return Internal::Adaptor::GetImplementation(*this).CreateHitTest(x, y, mode);
1970 bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
1972 return Internal::Adaptor::GetImplementation(*this).CreateHitTestAsynchronously(x, y, mode, callback);
1975 void WebEngine::ClearAllTilesResources()
1979 void WebEngine::ClearHistory()
1981 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
1984 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1986 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
1989 float WebEngine::GetScaleFactor() const
1991 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
1994 void WebEngine::ActivateAccessibility(bool activated)
1998 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
2003 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
2007 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
2009 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
2012 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
2014 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
2017 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
2019 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
2022 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
2024 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
2027 const std::string& WebEngine::GetUserAgent() const
2029 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
2032 void WebEngine::SetUserAgent( const std::string& userAgent )
2034 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
2037 void WebEngine::ScrollBy( int32_t dx, int32_t dy )
2039 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
2042 bool WebEngine::ScrollEdgeBy( int32_t dx, int32_t dy )
2044 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
2047 void WebEngine::SetScrollPosition( int32_t x, int32_t y )
2049 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
2052 Dali::Vector2 WebEngine::GetScrollPosition() const
2054 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
2057 Dali::Vector2 WebEngine::GetScrollSize() const
2059 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
2062 Dali::Vector2 WebEngine::GetContentSize() const
2064 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
2067 void WebEngine::SetSize( uint32_t width, uint32_t height )
2071 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
2075 void WebEngine::ClearTilesWhenHidden(bool cleared)
2079 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
2083 void WebEngine::EnableCursorByClient(bool enabled)
2087 std::string WebEngine::GetSelectedText() const
2092 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
2097 bool WebEngine::SendKeyEvent( const KeyEvent& event )
2102 bool WebEngine::SendHoverEvent( const HoverEvent& event )
2107 bool WebEngine::SendWheelEvent( const WheelEvent& event )
2112 void WebEngine::SetFocus( bool focused )
2116 void WebEngine::SetPageZoomFactor(float zoomFactor)
2118 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
2121 float WebEngine::GetPageZoomFactor() const
2123 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
2126 void WebEngine::SetTextZoomFactor(float zoomFactor)
2128 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
2131 float WebEngine::GetTextZoomFactor() const
2133 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
2136 float WebEngine::GetLoadProgressPercentage() const
2138 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
2141 void WebEngine::UpdateDisplayArea( Dali::Rect< int32_t > displayArea )
2145 void WebEngine::EnableVideoHole( bool enabled )
2149 void WebEngine::EnableMouseEvents( bool enabled )
2153 void WebEngine::EnableKeyEvents( bool enabled )
2157 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadStartedSignal()
2159 return Internal::Adaptor::GetImplementation( *this ).PageLoadStartedSignal();
2162 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadInProgressSignal()
2164 return Internal::Adaptor::GetImplementation( *this ).PageLoadInProgressSignal();
2167 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadFinishedSignal()
2169 return Internal::Adaptor::GetImplementation( *this ).PageLoadFinishedSignal();
2172 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& WebEngine::PageLoadErrorSignal()
2174 return Internal::Adaptor::GetImplementation( *this ).PageLoadErrorSignal();
2177 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& WebEngine::ScrollEdgeReachedSignal()
2179 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeReachedSignal();
2182 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& WebEngine::UrlChangedSignal()
2184 return Internal::Adaptor::GetImplementation( *this ).UrlChangedSignal();
2187 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& WebEngine::FormRepostDecisionSignal()
2189 return Internal::Adaptor::GetImplementation(*this).FormRepostDecisionSignal();
2192 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
2194 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
2197 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& WebEngine::RequestInterceptorSignal()
2199 return Internal::Adaptor::GetImplementation(*this).RequestInterceptorSignal();
2202 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& WebEngine::ConsoleMessageSignal()
2204 return Internal::Adaptor::GetImplementation(*this).ConsoleMessageSignal();
2207 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType& WebEngine::PolicyDecisionSignal()
2209 return Internal::Adaptor::GetImplementation(*this).PolicyDecisionSignal();
2212 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::CertificateConfirmSignal()
2214 return Internal::Adaptor::GetImplementation(*this).CertificateConfirmSignal();
2217 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::SslCertificateChangedSignal()
2219 return Internal::Adaptor::GetImplementation(*this).SslCertificateChangedSignal();
2222 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& WebEngine::HttpAuthHandlerSignal()
2224 return Internal::Adaptor::GetImplementation(*this).HttpAuthHandlerSignal();
2227 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& WebEngine::ContextMenuCustomizedSignal()
2229 return Internal::Adaptor::GetImplementation( *this ).ContextMenuCustomizedSignal();
2232 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& WebEngine::ContextMenuItemSelectedSignal()
2234 return Internal::Adaptor::GetImplementation( *this ).ContextMenuItemSelectedSignal();
2237 } // namespace Dali;