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();
86 bool OnChangesWatch();
88 static void ConnectToGlobalSignal( bool ( *func )() )
90 Dali::Timer timer = Dali::Timer::New( 0 );
91 timer.TickSignal().Connect( func );
94 static void DisconnectFromGlobalSignal( bool ( *func )() )
96 Dali::Timer timer = Dali::Timer::New( 0 );
97 timer.TickSignal().Disconnect( func );
99 } // namespace anonymous
101 class MockWebEngineContext : public Dali::WebEngineContext
104 MockWebEngineContext()
105 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
109 Dali::WebEngineContext::CacheModel GetCacheModel() const override
114 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
116 mockModel = cacheModel;
119 void SetProxyUri( const std::string& uri ) override
124 std::string GetProxyUri() const override
129 void SetProxyBypassRule(const std::string& proxy, const std::string& bypass) override
131 mockBypassRule = bypass;
134 std::string GetProxyBypassRule() const override
136 return mockBypassRule;
139 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
143 void SetCertificateFilePath( const std::string& certificatePath ) override
145 mockCertificateFilePath = certificatePath;
148 std::string GetCertificateFilePath() const override
150 return mockCertificateFilePath;
153 void DeleteAllWebDatabase() override
157 bool GetWebDatabaseOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
161 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
162 mSecurityOriginAcquiredCallback = callback;
167 bool DeleteWebDatabase(Dali::WebEngineSecurityOrigin& origin)
172 bool GetWebStorageOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
176 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
177 mSecurityOriginAcquiredCallback = callback;
182 bool GetWebStorageUsageForOrigin(Dali::WebEngineSecurityOrigin& origin, Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback callback)
186 ConnectToGlobalSignal(&OnStorageUsageAcquired);
187 mStorageUsageAcquiredCallback = callback;
192 void DeleteAllWebStorage() override
196 bool DeleteWebStorage(Dali::WebEngineSecurityOrigin& origin)
201 void DeleteLocalFileSystem() override
205 void ClearCache() override
209 bool DeleteApplicationCache(Dali::WebEngineSecurityOrigin& origin)
214 void GetFormPasswordList(Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback callback)
218 ConnectToGlobalSignal(&OnFormPasswordAcquired);
219 mFormPasswordAcquiredCallback = callback;
223 void RegisterDownloadStartedCallback(Dali::WebEngineContext::WebEngineDownloadStartedCallback callback)
227 ConnectToGlobalSignal(&OnDownloadStarted);
228 mDownloadStartedCallback = callback;
232 void RegisterMimeOverriddenCallback(Dali::WebEngineContext::WebEngineMimeOverriddenCallback callback)
236 ConnectToGlobalSignal(&OnMimeOverridden);
237 mMimeOverriddenCallback = callback;
241 void EnableCache( bool cacheEnabled ) override
243 mockCacheEnabled = cacheEnabled;
246 bool IsCacheEnabled() const override
248 return mockCacheEnabled;
251 void SetAppId(const std::string& appID) override
255 bool SetAppVersion(const std::string& appVersion) override
260 void SetApplicationType(const Dali::WebEngineContext::ApplicationType applicationType) override
264 void SetTimeOffset(float timeOffset) override
268 void SetTimeZoneOffset(float timeZoneOffset, float daylightSavingTime) override
272 void RegisterUrlSchemesAsCorsEnabled(const std::vector<std::string>& schemes) override
276 void RegisterJsPluginMimeTypes(const std::vector<std::string>& mimeTypes) override
280 void SetDefaultZoomFactor(float zoomFactor) override
282 mockZoomFactor = zoomFactor;
285 float GetDefaultZoomFactor() const override
287 return mockZoomFactor;
290 bool DeleteAllApplicationCache() override
295 bool DeleteAllWebIndexedDatabase() override
300 void DeleteFormPasswordDataList(const std::vector<std::string>& list) override
304 void DeleteAllFormPasswordData() override
308 void DeleteAllFormCandidateData() override
312 bool FreeUnusedMemory() override
318 Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback mSecurityOriginAcquiredCallback;
319 Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback mStorageUsageAcquiredCallback;
320 Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback mFormPasswordAcquiredCallback;
321 Dali::WebEngineContext::WebEngineDownloadStartedCallback mDownloadStartedCallback;
322 Dali::WebEngineContext::WebEngineMimeOverriddenCallback mMimeOverriddenCallback;
325 Dali::WebEngineContext::CacheModel mockModel;
326 std::string mockProxyUri;
327 std::string mockBypassRule;
328 std::string mockCertificateFilePath;
329 bool mockCacheEnabled;
330 float mockZoomFactor;
333 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
336 MockWebEngineCookieManager()
337 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
341 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
343 mockCookieAcceptPolicy = policy;
346 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
348 return mockCookieAcceptPolicy;
351 void ClearCookies() override
355 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
359 void ChangesWatch( Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback callback ) override
363 ConnectToGlobalSignal( &OnChangesWatch );
364 mChangesWatchCallback = callback;
369 Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback mChangesWatchCallback;
372 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
375 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
378 MockWebEngineBackForwardListItem()
379 : mockUrl( "http://url" ),
380 mockTitle( "title" ),
381 mockOriginalUrl( "http://originalurl" )
385 std::string GetUrl() const override
390 std::string GetTitle() const override
395 std::string GetOriginalUrl() const override
397 return mockOriginalUrl;
402 std::string mockTitle;
403 std::string mockOriginalUrl;
406 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
409 MockWebEngineBackForwardList()
413 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetCurrentItem() const override
415 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
419 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetPreviousItem() const override
421 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
425 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetNextItem() const override
427 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
431 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetItemAtIndex( uint32_t index ) const override
433 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
437 uint32_t GetItemCount() const override
442 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetBackwardItems(int limit) override
444 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
445 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
446 ret.push_back(std::move(item));
450 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetForwardItems(int limit) override
452 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
453 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
454 ret.push_back(std::move(item));
460 class MockWebEngineCertificate : public Dali::WebEngineCertificate
463 MockWebEngineCertificate()
467 void Allow(bool allowed) override
471 bool IsFromMainFrame() const override
476 std::string GetPem() const override
481 bool IsContextSecure() const override
487 class MockWebEngineHttpAuthHandler : public Dali::WebEngineHttpAuthHandler
490 MockWebEngineHttpAuthHandler()
494 std::string GetRealm() const override
499 void Suspend() override
503 void UseCredential(const std::string& user, const std::string& password) override
507 void CancelCredential() override
512 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
515 MockWebEngineFormRepostDecision()
519 void Reply(bool allowed) override {}
522 class MockWebEngineFrame : public Dali::WebEngineFrame
529 bool IsMainFrame() const override
535 class MockWebEnginePolicyDecision : public Dali::WebEnginePolicyDecision
538 MockWebEnginePolicyDecision()
542 std::string GetUrl() const override
544 return "http://test.html";
547 std::string GetCookie() const override
552 Dali::WebEnginePolicyDecision::DecisionType GetDecisionType() const
554 return Dali::WebEnginePolicyDecision::DecisionType::USE;
557 std::string GetResponseMime() const
562 int32_t GetResponseStatusCode() const
567 Dali::WebEnginePolicyDecision::NavigationType GetNavigationType() const
569 return Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
572 Dali::WebEngineFrame& GetFrame() const
574 return *(Dali::WebEngineFrame*)(&mockWebFrame);
577 std::string GetScheme() const
598 MockWebEngineFrame mockWebFrame;
601 class MockWebEngineRequestInterceptor : public WebEngineRequestInterceptor
604 MockWebEngineRequestInterceptor()
608 std::string GetUrl() const override
610 return "http://test.html";
613 bool Ignore() override
618 bool SetResponseStatus(int statusCode, const std::string &customedStatusText) override
623 bool AddResponseHeader(const std::string &fieldName, const std::string &fieldValue) override
628 bool AddResponseBody(const std::string &body, uint32_t length) override
634 class MockWebEngineConsoleMessage : public Dali::WebEngineConsoleMessage
637 MockWebEngineConsoleMessage()
641 std::string GetSource() const override
646 uint32_t GetLine() const override
651 SeverityLevel GetSeverityLevel() const override
653 return SeverityLevel::EMPTY;
656 std::string GetText() const override
658 return "This is a text.";
662 class MockWebEngineLoadError : public Dali::WebEngineLoadError
665 MockWebEngineLoadError(const std::string& url)
670 std::string GetUrl() const override
675 ErrorCode GetCode() const override
677 return ErrorCode::UNKNOWN;
680 std::string GetDescription() const override
682 return "This is an error.";
685 ErrorType GetType() const override
687 return ErrorType::NONE;
694 class MockWebEngineContextMenuItem : public Dali::WebEngineContextMenuItem
697 MockWebEngineContextMenuItem()
701 ItemTag GetTag() const override
703 return ItemTag::NO_ACTION;
706 ItemType GetType() const override
708 return ItemType::ACTION;
711 bool IsEnabled() const override
716 std::string GetLinkUrl() const override
718 return "http://test.html";
721 std::string GetImageUrl() const override
723 return "http://test.jpg";
726 std::string GetTitle() const override
731 std::unique_ptr<Dali::WebEngineContextMenu> GetParentMenu() const override
733 std::unique_ptr<Dali::WebEngineContextMenu> result;
738 class MockWebEngineContextMenu : public Dali::WebEngineContextMenu
741 MockWebEngineContextMenu()
745 uint32_t GetItemCount() const override
750 std::unique_ptr<Dali::WebEngineContextMenuItem> GetItemAt(uint32_t index) const override
752 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
756 std::vector<std::unique_ptr<WebEngineContextMenuItem>> GetItemList() const override
758 std::vector<std::unique_ptr<WebEngineContextMenuItem>> result;
759 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
760 result.push_back(std::move(webitem));
764 bool RemoveItem(WebEngineContextMenuItem& item) override
769 bool AppendItemAsAction(WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled) override
774 bool AppendItem(WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled) override
779 bool SelectItem(WebEngineContextMenuItem& item) override
790 class MockWebEngineHitTest : public Dali::WebEngineHitTest
793 MockWebEngineHitTest()
797 ResultContext GetResultContext() const override
799 return ResultContext::DOCUMENT;
802 std::string GetLinkUri() const override
804 return "http://test.html";
807 std::string GetLinkTitle() const override
812 std::string GetLinkLabel() const override
817 std::string GetImageUri() const override
819 return "http://test.jpg";
822 std::string GetMediaUri() const override
824 return "http://test.mp4";
827 std::string GetTagName() const override
832 std::string GetNodeValue() const override
837 Dali::Property::Map& GetAttributes() const override
839 return mockAttributesMap;
842 std::string GetImageFileNameExtension() const override
847 Dali::PixelData GetImageBuffer() override
849 uint8_t* imageData = new uint8_t[16];
850 memset(imageData, 0xff, 16);
851 return Dali::PixelData::New(imageData, 16, 2, 2,
852 Dali::Pixel::Format::RGBA8888,
853 Dali::PixelData::ReleaseFunction::DELETE_ARRAY);
857 mutable Dali::Property::Map mockAttributesMap;
860 class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin
863 MockWebEngineSecurityOrigin()
864 : mockUrl("https://test.html")
865 , mockPotocol("https")
869 std::string GetHost() const
874 std::string GetProtocol() const
881 std::string mockPotocol;
884 class MockWebEngineSettings : public WebEngineSettings
887 MockWebEngineSettings()
888 : mockDefaultFontSize( 16 ),
889 mockJavaScriptEnabled( true ),
890 mockAutoFittingEnabled ( true ),
891 mockPluginsEnabled ( true ),
892 mockPrivateBrowsingEnabled( true ),
893 mockLinkMagnifierEnabled( true ),
894 mockKeypadWithoutUserActionUsed( true ),
895 mockAutofillPasswordFormEnabled( true ),
896 mockFormCandidateDataEnabled( true ),
897 mockTextSelectionEnabled( true ),
898 mockTextAutosizingEnable( true ),
899 mockArrowScrollEnable( true ),
900 mockClipboardEnabled( true ),
901 mockImePanelEnabled( true ),
902 mockImageLoadedAutomatically( true ),
903 mockDefaultTextEncodingName()
907 uint32_t GetDefaultFontSize() const override
909 return mockDefaultFontSize;
912 void SetDefaultFontSize( uint32_t size ) override
914 mockDefaultFontSize = size;
917 bool IsJavaScriptEnabled() const override
919 return mockJavaScriptEnabled;
922 void EnableJavaScript( bool enabled ) override
924 mockJavaScriptEnabled = enabled;
927 bool IsAutoFittingEnabled() const override
929 return mockAutoFittingEnabled;
932 void EnableAutoFitting( bool enabled ) override
934 mockAutoFittingEnabled = enabled;
937 bool ArePluginsEnabled() const override
939 return mockPluginsEnabled;
942 void EnablePlugins( bool enabled ) override
944 mockPluginsEnabled = enabled;
947 bool IsPrivateBrowsingEnabled() const override
949 return mockPrivateBrowsingEnabled;
952 void EnablePrivateBrowsing( bool enabled ) override
954 mockPrivateBrowsingEnabled = enabled;
957 bool IsLinkMagnifierEnabled() const override
959 return mockLinkMagnifierEnabled;
962 void EnableLinkMagnifier( bool enabled ) override
964 mockLinkMagnifierEnabled = enabled;
967 bool IsKeypadWithoutUserActionUsed() const override
969 return mockKeypadWithoutUserActionUsed;
972 void UseKeypadWithoutUserAction( bool used ) override
974 mockKeypadWithoutUserActionUsed = used;
977 bool IsAutofillPasswordFormEnabled() const override
979 return mockAutofillPasswordFormEnabled;
982 void EnableAutofillPasswordForm( bool enabled ) override
984 mockAutofillPasswordFormEnabled = enabled;
987 bool IsFormCandidateDataEnabled() const override
989 return mockFormCandidateDataEnabled;
992 void EnableFormCandidateData( bool enabled ) override
994 mockFormCandidateDataEnabled = enabled;
997 bool IsTextSelectionEnabled() const override
999 return mockTextSelectionEnabled;
1002 void EnableTextSelection( bool enabled ) override
1004 mockTextSelectionEnabled = enabled;
1007 bool IsTextAutosizingEnabled() const override
1009 return mockTextAutosizingEnable;
1012 void EnableTextAutosizing( bool enabled ) override
1014 mockTextAutosizingEnable = enabled;
1017 bool IsArrowScrollEnabled() const override
1019 return mockArrowScrollEnable;
1022 void EnableArrowScroll( bool enabled ) override
1024 mockArrowScrollEnable = enabled;
1027 bool IsClipboardEnabled() const override
1029 return mockClipboardEnabled;
1032 void EnableClipboard( bool enabled ) override
1034 mockClipboardEnabled = enabled;
1037 bool IsImePanelEnabled() const override
1039 return mockImePanelEnabled;
1042 void EnableImePanel( bool enabled ) override
1044 mockImePanelEnabled = enabled;
1047 bool AreImagesLoadedAutomatically() const override
1049 return mockImageLoadedAutomatically;
1052 void AllowImagesLoadAutomatically( bool automatic ) override
1054 mockImageLoadedAutomatically = automatic;
1057 std::string GetDefaultTextEncodingName() const override
1059 return mockDefaultTextEncodingName;
1062 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
1064 mockDefaultTextEncodingName = defaultTextEncodingName;
1067 void AllowMixedContents( bool allowed ) override
1071 void EnableSpatialNavigation( bool enabled ) override
1075 void EnableWebSecurity( bool enabled ) override
1079 void EnableCacheBuilder( bool enabled ) override
1083 void UseScrollbarThumbFocusNotifications( bool used ) override
1087 void EnableDoNotTrack( bool enabled ) override
1091 void AllowFileAccessFromExternalUrl( bool allowed ) override
1095 void AllowScriptsOpenWindows( bool allowed ) override
1099 bool SetViewportMetaTag(bool enable) override
1104 bool SetForceZoom(bool enable) override
1109 bool IsZoomForced() const override
1114 bool SetTextZoomEnabled(bool enable) override
1119 bool IsTextZoomEnabled() const override
1124 void SetExtraFeature(const std::string& feature, bool enable) override
1128 bool IsExtraFeatureEnabled(const std::string& feature) const override
1134 int mockDefaultFontSize;
1135 bool mockJavaScriptEnabled;
1136 bool mockAutoFittingEnabled;
1137 bool mockPluginsEnabled;
1138 bool mockPrivateBrowsingEnabled;
1139 bool mockLinkMagnifierEnabled;
1140 bool mockKeypadWithoutUserActionUsed;
1141 bool mockAutofillPasswordFormEnabled;
1142 bool mockFormCandidateDataEnabled;
1143 bool mockTextSelectionEnabled;
1144 bool mockTextAutosizingEnable;
1145 bool mockArrowScrollEnable;
1146 bool mockClipboardEnabled;
1147 bool mockImePanelEnabled;
1148 bool mockImageLoadedAutomatically;
1149 std::string mockDefaultTextEncodingName;
1152 class WebEngine: public Dali::BaseObject
1156 using JavaScriptEvaluatedResultCallback = std::function<void(const std::string&)>;
1160 , mCurrentPlusOnePos( 0 )
1162 , mEvaluating( false )
1163 , mScrollPosition( 0, 0 )
1164 , mScrollSize( 500, 500 )
1165 , mContentSize( 500, 500 )
1168 if ( gInstanceCount == 1 ) // only first web engine need be saved.
1173 mockWebEngineSettings = new MockWebEngineSettings();
1174 MockWebEngineContext* engineContext = new MockWebEngineContext();
1175 mockWebEngineContext = engineContext;
1176 if ( gInstanceCount == 1 )
1178 gWebEngineContextInstance = engineContext;
1180 mockWebEngineCookieManager = new MockWebEngineCookieManager();
1181 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
1184 virtual ~WebEngine()
1187 if( !gInstanceCount )
1190 gWebEngineContextInstance = 0;
1193 delete mockWebEngineSettings;
1194 delete mockWebEngineContext;
1195 delete mockWebEngineCookieManager;
1196 delete mockWebEngineBackForwardList;
1199 Dali::WebEngineSettings& GetSettings() const
1201 return *mockWebEngineSettings;
1204 Dali::WebEngineContext& GetContext() const
1206 return *mockWebEngineContext;
1209 Dali::WebEngineCookieManager& GetCookieManager() const
1211 return *mockWebEngineCookieManager;
1214 Dali::WebEngineBackForwardList& GetBackForwardList() const
1216 return *mockWebEngineBackForwardList;
1219 void LoadUrl( const std::string& url )
1222 ConnectToGlobalSignal( &OnLoadUrl );
1225 std::string GetUrl() const
1230 std::string GetTitle() const
1232 return std::string("title");
1235 Dali::PixelData GetFavicon() const
1237 static int testGetFaviconCount = 0;
1238 if (testGetFaviconCount == 0)
1240 testGetFaviconCount++;
1241 uint8_t* faviconData = new uint8_t[16];
1242 memset(faviconData, 0xff, 16);
1243 return Dali::PixelData::New(faviconData, 16, 2, 2,
1244 Dali::Pixel::Format::RGBA8888,
1245 Dali::PixelData::ReleaseFunction::DELETE_ARRAY);
1249 return Dali::PixelData();
1253 bool CanGoForward() const
1255 return mHistory.size() > mCurrentPlusOnePos;
1260 ConnectToGlobalSignal( &OnGoForward );
1263 bool CanGoBack() const
1265 return mCurrentPlusOnePos > 1;
1270 ConnectToGlobalSignal( &OnGoBack );
1273 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1279 ConnectToGlobalSignal( &OnEvaluteJavaScript );
1281 mResultCallbacks.push_back( resultHandler );
1285 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1289 ConnectToGlobalSignal( &OnJavaScriptAlert );
1290 mJavaScriptAlertCallback = callback;
1294 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1298 ConnectToGlobalSignal( &OnJavaScriptConfirm );
1299 mJavaScriptConfirmCallback = callback;
1303 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1307 ConnectToGlobalSignal( &OnJavaScriptPrompt );
1308 mJavaScriptPromptCallback = callback;
1312 std::unique_ptr<Dali::WebEngineHitTest> CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
1314 std::unique_ptr<Dali::WebEngineHitTest> hitTest(new MockWebEngineHitTest());
1318 bool CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
1322 ConnectToGlobalSignal( &OnHitTestCreated );
1323 mHitTestCreatedCallback = callback;
1330 ConnectToGlobalSignal( &OnClearHistory );
1333 std::string GetUserAgent() const
1338 void SetUserAgent( const std::string& userAgent )
1340 mUserAgent = userAgent;
1343 void ScrollBy( int32_t dx, int32_t dy )
1345 mScrollPosition += Dali::Vector2( dx, dy );
1346 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1348 ConnectToGlobalSignal( &OnScrollEdge );
1352 bool ScrollEdgeBy( int32_t dx, int32_t dy )
1354 mScrollPosition += Dali::Vector2( dx, dy );
1355 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1357 ConnectToGlobalSignal( &OnScrollEdge );
1362 void SetScrollPosition( int32_t x, int32_t y )
1364 mScrollPosition.x = x;
1365 mScrollPosition.y = y;
1368 Dali::Vector2 GetScrollPosition() const
1370 return mScrollPosition;
1373 Dali::Vector2 GetScrollSize() const
1378 Dali::Vector2 GetContentSize() const
1380 return mContentSize;
1383 void SetPageZoomFactor(float zoomFactor)
1385 mPageZoomFactor = zoomFactor;
1388 float GetPageZoomFactor() const
1390 return mPageZoomFactor;
1393 void SetTextZoomFactor(float zoomFactor)
1395 mTextZoomFactor = zoomFactor;
1398 float GetTextZoomFactor() const
1400 return mTextZoomFactor;
1403 float GetLoadProgressPercentage() const
1408 void SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1410 mScaleFactor = scaleFactor;
1413 float GetScaleFactor() const
1415 return mScaleFactor;
1418 Dali::PixelData GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
1420 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
1421 uint8_t* pixel = new uint8_t[ bufferSize ];
1422 memset(pixel, 0xff, bufferSize);
1423 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
1424 Dali::Pixel::Format::RGBA8888,
1425 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1428 bool GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1432 ConnectToGlobalSignal( &OnScreenshotCaptured );
1433 mScreenshotCapturedCallback = callback;
1438 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1442 ConnectToGlobalSignal( &OnVideoPlaying );
1443 mVideoPlayingCallback = callback;
1448 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1452 ConnectToGlobalSignal( &OnGeolocationPermission );
1453 mGeolocationPermissionCallback = callback;
1457 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal()
1459 return mPageLoadStartedSignal;
1462 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadInProgressSignal()
1464 return mPageLoadInProgressSignal;
1467 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal()
1469 return mPageLoadFinishedSignal;
1472 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal()
1474 return mPageLoadErrorSignal;
1477 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal()
1479 return mScrollEdgeReachedSignal;
1482 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& UrlChangedSignal()
1484 return mUrlChangedSignal;
1487 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal()
1489 return mFormRepostDecisionSignal;
1492 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
1494 return mFrameRenderedSignal;
1497 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& RequestInterceptorSignal()
1499 return mRequestInterceptorSignal;
1502 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& ConsoleMessageSignal()
1504 return mConsoleMessageSignal;
1507 Dali::WebEnginePlugin::WebEngineResponsePolicyDecisionSignalType& ResponsePolicyDecisionSignal()
1509 return mResponsePolicyDecisionSignal;
1512 Dali::WebEnginePlugin::WebEngineCertificateSignalType& CertificateConfirmSignal()
1514 return mCertificateConfirmSignal;
1517 Dali::WebEnginePlugin::WebEngineCertificateSignalType& SslCertificateChangedSignal()
1519 return mSslCertificateChangedSignal;
1522 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& HttpAuthHandlerSignal()
1524 return mHttpAuthHandlerSignal;
1527 Dali::WebEnginePlugin::WebEngineContextMenuShownSignalType& ContextMenuShownSignal()
1529 return mContextMenuShownSignal;
1532 Dali::WebEnginePlugin::WebEngineContextMenuHiddenSignalType& ContextMenuHiddenSignal()
1534 return mContextMenuHiddenSignal;
1538 std::vector<std::string> mHistory;
1539 size_t mCurrentPlusOnePos;
1540 std::string mUserAgent;
1542 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
1543 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
1544 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
1545 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
1546 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
1547 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
1548 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
1549 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1550 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
1551 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
1552 Dali::WebEnginePlugin::WebEngineResponsePolicyDecisionSignalType mResponsePolicyDecisionSignal;
1553 Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
1554 Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
1555 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
1556 Dali::WebEnginePlugin::WebEngineContextMenuShownSignalType mContextMenuShownSignal;
1557 Dali::WebEnginePlugin::WebEngineContextMenuHiddenSignalType mContextMenuHiddenSignal;
1560 float mPageZoomFactor;
1561 float mTextZoomFactor;
1564 Dali::Vector2 mScrollPosition;
1565 Dali::Vector2 mScrollSize;
1566 Dali::Vector2 mContentSize;
1567 WebEngineBackForwardList* mockWebEngineBackForwardList;
1568 WebEngineContext* mockWebEngineContext;
1569 WebEngineCookieManager* mockWebEngineCookieManager;
1570 WebEngineSettings* mockWebEngineSettings;
1572 std::vector<JavaScriptEvaluatedResultCallback> mResultCallbacks;
1573 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1574 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1575 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1576 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1577 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1578 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1579 Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback;
1588 DisconnectFromGlobalSignal( &OnGoBack );
1590 if( gInstance && gInstance->CanGoBack() )
1592 gInstance->mCurrentPlusOnePos--;
1599 DisconnectFromGlobalSignal( &OnGoForward );
1601 if( gInstance && gInstance->CanGoForward() )
1603 gInstance->mCurrentPlusOnePos++;
1610 DisconnectFromGlobalSignal( &OnLoadUrl );
1614 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1616 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1618 gInstance->mHistory.push_back( gInstance->mUrl );
1619 gInstance->mCurrentPlusOnePos++;
1620 gInstance->mPageLoadStartedSignal.Emit( gInstance->mUrl );
1621 gInstance->mPageLoadInProgressSignal.Emit( gInstance->mUrl );
1622 gInstance->mPageLoadFinishedSignal.Emit( gInstance->mUrl );
1623 gInstance->mUrlChangedSignal.Emit( "http://new-test" );
1625 std::shared_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1626 gInstance->mFormRepostDecisionSignal.Emit(std::move(repostDecision));
1627 gInstance->mFrameRenderedSignal.Emit();
1628 std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor(new MockWebEngineRequestInterceptor());
1629 gInstance->mRequestInterceptorSignal.Emit(std::move(interceptor));
1631 std::shared_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1632 gInstance->mPageLoadErrorSignal.Emit(std::move(error));
1633 std::shared_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1634 gInstance->mConsoleMessageSignal.Emit(std::move(message));
1635 std::shared_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1636 gInstance->mResponsePolicyDecisionSignal.Emit(std::move(policyDecision));
1638 std::shared_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1639 gInstance->mCertificateConfirmSignal.Emit(std::move(certificate));
1640 std::shared_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1641 gInstance->mSslCertificateChangedSignal.Emit(std::move(sslCertificate));
1642 std::shared_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1643 gInstance->mHttpAuthHandlerSignal.Emit(std::move(handler));
1645 std::shared_ptr<Dali::WebEngineContextMenu> menu(new MockWebEngineContextMenu());
1646 gInstance->mContextMenuShownSignal.Emit(std::move(menu));
1647 std::shared_ptr<Dali::WebEngineContextMenu> hiddenMenu(new MockWebEngineContextMenu());
1648 gInstance->mContextMenuHiddenSignal.Emit(std::move(hiddenMenu));
1655 DisconnectFromGlobalSignal( &OnScrollEdge );
1659 gInstance->mScrollEdgeReachedSignal.Emit( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1665 bool OnEvaluteJavaScript()
1667 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1671 for( auto& func : gInstance->mResultCallbacks )
1675 gInstance->mResultCallbacks.clear();
1680 bool OnJavaScriptAlert()
1682 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1685 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1690 bool OnJavaScriptConfirm()
1692 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1695 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1700 bool OnJavaScriptPrompt()
1702 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1705 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1710 bool OnScreenshotCaptured()
1712 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1715 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1716 memset(pixel, 0xff, 2 * 2 * 4);
1717 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1718 Dali::Pixel::Format::RGBA8888,
1719 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1720 gInstance->mScreenshotCapturedCallback( data );
1725 bool OnVideoPlaying()
1727 DisconnectFromGlobalSignal( &OnVideoPlaying );
1730 gInstance->mVideoPlayingCallback( true );
1735 bool OnGeolocationPermission()
1737 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1740 gInstance->mGeolocationPermissionCallback( "", "" );
1745 bool OnHitTestCreated()
1747 DisconnectFromGlobalSignal(&OnHitTestCreated);
1750 std::unique_ptr<Dali::WebEngineHitTest> test(new MockWebEngineHitTest());
1751 gInstance->mHitTestCreatedCallback(std::move(test));
1756 bool OnClearHistory()
1758 DisconnectFromGlobalSignal( &OnClearHistory );
1760 if( gInstance && gInstance->mCurrentPlusOnePos )
1762 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1763 std::vector< std::string >().swap( gInstance->mHistory );
1764 gInstance->mHistory.push_back( url );
1765 gInstance->mCurrentPlusOnePos = 1;
1770 bool OnSecurityOriginAcquired()
1772 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1773 if (gWebEngineContextInstance)
1775 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1776 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1777 securityOriginList.push_back(std::move(origin));
1778 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1783 bool OnStorageUsageAcquired()
1785 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1786 if (gWebEngineContextInstance)
1788 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1793 bool OnFormPasswordAcquired()
1795 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1796 if (gWebEngineContextInstance)
1798 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1799 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1800 data->url = "http://test.html";
1801 data->useFingerprint = false;
1802 formPasswordList.push_back(std::move(data));
1803 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1808 bool OnDownloadStarted()
1810 DisconnectFromGlobalSignal(&OnDownloadStarted);
1811 if (gWebEngineContextInstance)
1813 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1818 bool OnMimeOverridden()
1820 DisconnectFromGlobalSignal(&OnMimeOverridden);
1821 if (gWebEngineContextInstance)
1823 std::string newMime;
1824 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1829 bool OnChangesWatch()
1831 DisconnectFromGlobalSignal( &OnChangesWatch );
1835 MockWebEngineCookieManager* temp = (MockWebEngineCookieManager *)(&(gInstance->GetCookieManager()));
1838 temp->mChangesWatchCallback();
1847 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1849 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1850 BaseObject& handle = webEngine.GetBaseObject();
1851 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1854 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1856 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1857 const BaseObject& handle = webEngine.GetBaseObject();
1858 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1861 } // namespace Adaptor
1863 } // namespace Internal
1865 // Dali::WebEngine Implementation
1866 WebEngine::WebEngine()
1870 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1871 : BaseHandle( internal )
1875 WebEngine::~WebEngine()
1879 WebEngine WebEngine::New()
1881 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1883 return WebEngine( baseObject );
1886 WebEngine::WebEngine( const WebEngine& WebEngine )
1887 : BaseHandle( WebEngine )
1891 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
1893 BaseHandle::operator=( webEngine );
1897 WebEngine WebEngine::DownCast( BaseHandle handle )
1899 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
1902 void WebEngine::Create( uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId )
1906 void WebEngine::Create( uint32_t width, uint32_t height, uint32_t argc, char** argv )
1910 void WebEngine::Destroy()
1914 WebEngineSettings& WebEngine::GetSettings() const
1916 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
1919 WebEngineContext& WebEngine::GetContext() const
1921 return Internal::Adaptor::GetImplementation( *this ).GetContext();
1924 WebEngineCookieManager& WebEngine::GetCookieManager() const
1926 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
1929 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
1931 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
1934 void WebEngine::LoadUrl( const std::string& url )
1936 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
1939 std::string WebEngine::GetTitle() const
1941 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
1944 Dali::PixelData WebEngine::GetFavicon() const
1946 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
1949 std::string WebEngine::GetUrl() const
1951 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
1954 NativeImageInterfacePtr WebEngine::GetNativeImageSource()
1957 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
1961 void WebEngine::LoadHtmlString( const std::string& htmlString )
1965 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
1970 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
1975 void WebEngine::Reload()
1979 bool WebEngine::ReloadWithoutCache()
1984 void WebEngine::StopLoading()
1988 void WebEngine::Suspend()
1992 void WebEngine::Resume()
1996 void WebEngine::SuspendNetworkLoading()
2000 void WebEngine::ResumeNetworkLoading()
2004 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
2009 bool WebEngine::RemoveCustomHeader(const std::string& name)
2014 uint32_t WebEngine::StartInspectorServer(uint32_t port)
2019 bool WebEngine::StopInspectorServer()
2024 bool WebEngine::CanGoForward()
2026 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
2029 void WebEngine::GoForward()
2031 Internal::Adaptor::GetImplementation( *this ).GoForward();
2034 bool WebEngine::CanGoBack()
2036 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
2039 void WebEngine::GoBack()
2041 Internal::Adaptor::GetImplementation( *this ).GoBack();
2044 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
2046 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
2049 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
2053 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
2055 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
2058 void WebEngine::JavaScriptAlertReply()
2062 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
2064 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
2067 void WebEngine::JavaScriptConfirmReply( bool confirmed )
2071 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
2073 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
2076 void WebEngine::JavaScriptPromptReply( const std::string& result )
2080 std::unique_ptr<Dali::WebEngineHitTest> WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
2082 return Internal::Adaptor::GetImplementation(*this).CreateHitTest(x, y, mode);
2085 bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
2087 return Internal::Adaptor::GetImplementation(*this).CreateHitTestAsynchronously(x, y, mode, callback);
2090 void WebEngine::ClearAllTilesResources()
2094 void WebEngine::ClearHistory()
2096 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
2099 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
2101 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
2104 float WebEngine::GetScaleFactor() const
2106 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
2109 void WebEngine::ActivateAccessibility(bool activated)
2113 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
2118 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
2122 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
2124 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
2127 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
2129 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
2132 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
2134 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
2137 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
2139 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
2142 std::string WebEngine::GetUserAgent() const
2144 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
2147 void WebEngine::SetUserAgent( const std::string& userAgent )
2149 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
2152 void WebEngine::ScrollBy( int32_t dx, int32_t dy )
2154 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
2157 bool WebEngine::ScrollEdgeBy( int32_t dx, int32_t dy )
2159 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
2162 void WebEngine::SetScrollPosition( int32_t x, int32_t y )
2164 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
2167 Dali::Vector2 WebEngine::GetScrollPosition() const
2169 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
2172 Dali::Vector2 WebEngine::GetScrollSize() const
2174 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
2177 Dali::Vector2 WebEngine::GetContentSize() const
2179 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
2182 void WebEngine::SetSize( uint32_t width, uint32_t height )
2186 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
2190 void WebEngine::ClearTilesWhenHidden(bool cleared)
2194 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
2198 void WebEngine::EnableCursorByClient(bool enabled)
2202 std::string WebEngine::GetSelectedText() const
2207 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
2212 bool WebEngine::SendKeyEvent( const KeyEvent& event )
2217 bool WebEngine::SendHoverEvent( const HoverEvent& event )
2222 bool WebEngine::SendWheelEvent( const WheelEvent& event )
2227 void WebEngine::SetFocus( bool focused )
2231 void WebEngine::SetPageZoomFactor(float zoomFactor)
2233 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
2236 float WebEngine::GetPageZoomFactor() const
2238 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
2241 void WebEngine::SetTextZoomFactor(float zoomFactor)
2243 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
2246 float WebEngine::GetTextZoomFactor() const
2248 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
2251 float WebEngine::GetLoadProgressPercentage() const
2253 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
2256 void WebEngine::UpdateDisplayArea( Dali::Rect< int32_t > displayArea )
2260 void WebEngine::EnableVideoHole( bool enabled )
2264 void WebEngine::EnableMouseEvents( bool enabled )
2268 void WebEngine::EnableKeyEvents( bool enabled )
2272 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadStartedSignal()
2274 return Internal::Adaptor::GetImplementation( *this ).PageLoadStartedSignal();
2277 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadInProgressSignal()
2279 return Internal::Adaptor::GetImplementation( *this ).PageLoadInProgressSignal();
2282 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadFinishedSignal()
2284 return Internal::Adaptor::GetImplementation( *this ).PageLoadFinishedSignal();
2287 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& WebEngine::PageLoadErrorSignal()
2289 return Internal::Adaptor::GetImplementation( *this ).PageLoadErrorSignal();
2292 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& WebEngine::ScrollEdgeReachedSignal()
2294 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeReachedSignal();
2297 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& WebEngine::UrlChangedSignal()
2299 return Internal::Adaptor::GetImplementation( *this ).UrlChangedSignal();
2302 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& WebEngine::FormRepostDecisionSignal()
2304 return Internal::Adaptor::GetImplementation(*this).FormRepostDecisionSignal();
2307 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
2309 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
2312 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& WebEngine::RequestInterceptorSignal()
2314 return Internal::Adaptor::GetImplementation(*this).RequestInterceptorSignal();
2317 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& WebEngine::ConsoleMessageSignal()
2319 return Internal::Adaptor::GetImplementation(*this).ConsoleMessageSignal();
2322 Dali::WebEnginePlugin::WebEngineResponsePolicyDecisionSignalType& WebEngine::ResponsePolicyDecisionSignal()
2324 return Internal::Adaptor::GetImplementation(*this).ResponsePolicyDecisionSignal();
2327 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::CertificateConfirmSignal()
2329 return Internal::Adaptor::GetImplementation(*this).CertificateConfirmSignal();
2332 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::SslCertificateChangedSignal()
2334 return Internal::Adaptor::GetImplementation(*this).SslCertificateChangedSignal();
2337 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& WebEngine::HttpAuthHandlerSignal()
2339 return Internal::Adaptor::GetImplementation(*this).HttpAuthHandlerSignal();
2342 Dali::WebEnginePlugin::WebEngineContextMenuShownSignalType& WebEngine::ContextMenuShownSignal()
2344 return Internal::Adaptor::GetImplementation( *this ).ContextMenuShownSignal();
2347 Dali::WebEnginePlugin::WebEngineContextMenuHiddenSignalType& WebEngine::ContextMenuHiddenSignal()
2349 return Internal::Adaptor::GetImplementation( *this ).ContextMenuHiddenSignal();
2352 } // namespace Dali;