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 OnRequestIntercepted();
87 bool OnChangesWatch();
88 bool OnPlainTextReceived();
90 static void ConnectToGlobalSignal( bool ( *func )() )
92 Dali::Timer timer = Dali::Timer::New( 0 );
93 timer.TickSignal().Connect( func );
96 static void DisconnectFromGlobalSignal( bool ( *func )() )
98 Dali::Timer timer = Dali::Timer::New( 0 );
99 timer.TickSignal().Disconnect( func );
101 } // namespace anonymous
103 class MockWebEngineContext : public Dali::WebEngineContext
106 MockWebEngineContext()
107 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
111 Dali::WebEngineContext::CacheModel GetCacheModel() const override
116 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
118 mockModel = cacheModel;
121 void SetProxyUri( const std::string& uri ) override
126 std::string GetProxyUri() const override
131 void SetProxyBypassRule(const std::string& proxy, const std::string& bypass) override
133 mockBypassRule = bypass;
136 std::string GetProxyBypassRule() const override
138 return mockBypassRule;
141 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
145 void SetCertificateFilePath( const std::string& certificatePath ) override
147 mockCertificateFilePath = certificatePath;
150 std::string GetCertificateFilePath() const override
152 return mockCertificateFilePath;
155 void DeleteAllWebDatabase() override
159 bool GetWebDatabaseOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback) override
163 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
164 mSecurityOriginAcquiredCallback = callback;
169 bool DeleteWebDatabase(Dali::WebEngineSecurityOrigin& origin) override
174 bool GetWebStorageOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback) override
178 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
179 mSecurityOriginAcquiredCallback = callback;
184 bool GetWebStorageUsageForOrigin(Dali::WebEngineSecurityOrigin& origin, Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback callback) override
188 ConnectToGlobalSignal(&OnStorageUsageAcquired);
189 mStorageUsageAcquiredCallback = callback;
194 void DeleteAllWebStorage() override
198 bool DeleteWebStorage(Dali::WebEngineSecurityOrigin& origin) override
203 void DeleteLocalFileSystem() override
207 void ClearCache() override
211 bool DeleteApplicationCache(Dali::WebEngineSecurityOrigin& origin) override
216 void GetFormPasswordList(Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback callback) override
220 ConnectToGlobalSignal(&OnFormPasswordAcquired);
221 mFormPasswordAcquiredCallback = callback;
225 void RegisterDownloadStartedCallback(Dali::WebEngineContext::WebEngineDownloadStartedCallback callback) override
229 ConnectToGlobalSignal(&OnDownloadStarted);
230 mDownloadStartedCallback = callback;
234 void RegisterMimeOverriddenCallback(Dali::WebEngineContext::WebEngineMimeOverriddenCallback callback) override
238 ConnectToGlobalSignal(&OnMimeOverridden);
239 mMimeOverriddenCallback = callback;
243 void RegisterRequestInterceptedCallback(Dali::WebEngineContext::WebEngineRequestInterceptedCallback callback) override
247 ConnectToGlobalSignal(&OnRequestIntercepted);
248 mRequestInterceptedCallback = callback;
252 void EnableCache( bool cacheEnabled ) override
254 mockCacheEnabled = cacheEnabled;
257 bool IsCacheEnabled() const override
259 return mockCacheEnabled;
262 void SetAppId(const std::string& appID) override
266 bool SetAppVersion(const std::string& appVersion) override
271 void SetApplicationType(const Dali::WebEngineContext::ApplicationType applicationType) override
275 void SetTimeOffset(float timeOffset) override
279 void SetTimeZoneOffset(float timeZoneOffset, float daylightSavingTime) override
283 void RegisterUrlSchemesAsCorsEnabled(const std::vector<std::string>& schemes) override
287 void RegisterJsPluginMimeTypes(const std::vector<std::string>& mimeTypes) override
291 void SetDefaultZoomFactor(float zoomFactor) override
293 mockZoomFactor = zoomFactor;
296 float GetDefaultZoomFactor() const override
298 return mockZoomFactor;
301 bool DeleteAllApplicationCache() override
306 bool DeleteAllWebIndexedDatabase() override
311 void DeleteFormPasswordDataList(const std::vector<std::string>& list) override
315 void DeleteAllFormPasswordData() override
319 void DeleteAllFormCandidateData() override
323 bool FreeUnusedMemory() override
329 Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback mSecurityOriginAcquiredCallback;
330 Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback mStorageUsageAcquiredCallback;
331 Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback mFormPasswordAcquiredCallback;
332 Dali::WebEngineContext::WebEngineDownloadStartedCallback mDownloadStartedCallback;
333 Dali::WebEngineContext::WebEngineMimeOverriddenCallback mMimeOverriddenCallback;
334 Dali::WebEngineContext::WebEngineRequestInterceptedCallback mRequestInterceptedCallback;
337 Dali::WebEngineContext::CacheModel mockModel;
338 std::string mockProxyUri;
339 std::string mockBypassRule;
340 std::string mockCertificateFilePath;
341 bool mockCacheEnabled;
342 float mockZoomFactor;
345 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
348 MockWebEngineCookieManager()
349 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
353 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
355 mockCookieAcceptPolicy = policy;
358 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
360 return mockCookieAcceptPolicy;
363 void ClearCookies() override
367 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
371 void ChangesWatch( Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback callback ) override
375 ConnectToGlobalSignal( &OnChangesWatch );
376 mChangesWatchCallback = callback;
381 Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback mChangesWatchCallback;
384 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
387 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
390 MockWebEngineBackForwardListItem()
391 : mockUrl( "http://url" ),
392 mockTitle( "title" ),
393 mockOriginalUrl( "http://originalurl" )
397 std::string GetUrl() const override
402 std::string GetTitle() const override
407 std::string GetOriginalUrl() const override
409 return mockOriginalUrl;
414 std::string mockTitle;
415 std::string mockOriginalUrl;
418 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
421 MockWebEngineBackForwardList()
425 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetCurrentItem() const override
427 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
431 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetPreviousItem() const override
433 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
437 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetNextItem() const override
439 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
443 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetItemAtIndex( uint32_t index ) const override
445 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
449 uint32_t GetItemCount() const override
454 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetBackwardItems(int limit) override
456 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
457 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
458 ret.push_back(std::move(item));
462 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetForwardItems(int limit) override
464 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
465 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
466 ret.push_back(std::move(item));
472 class MockWebEngineCertificate : public Dali::WebEngineCertificate
475 MockWebEngineCertificate()
479 void Allow(bool allowed) override
483 bool IsFromMainFrame() const override
488 std::string GetPem() const override
493 bool IsContextSecure() const override
499 class MockWebEngineHttpAuthHandler : public Dali::WebEngineHttpAuthHandler
502 MockWebEngineHttpAuthHandler()
506 std::string GetRealm() const override
511 void Suspend() override
515 void UseCredential(const std::string& user, const std::string& password) override
519 void CancelCredential() override
524 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
527 MockWebEngineFormRepostDecision()
531 void Reply(bool allowed) override {}
534 class MockWebEngineFrame : public Dali::WebEngineFrame
541 bool IsMainFrame() const override
547 class MockWebEnginePolicyDecision : public Dali::WebEnginePolicyDecision
550 MockWebEnginePolicyDecision()
554 std::string GetUrl() const override
556 return "http://test.html";
559 std::string GetCookie() const override
564 Dali::WebEnginePolicyDecision::DecisionType GetDecisionType() const
566 return Dali::WebEnginePolicyDecision::DecisionType::USE;
569 std::string GetResponseMime() const
574 int32_t GetResponseStatusCode() const
579 Dali::WebEnginePolicyDecision::NavigationType GetNavigationType() const
581 return Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
584 Dali::WebEngineFrame& GetFrame() const
586 return *(Dali::WebEngineFrame*)(&mockWebFrame);
589 std::string GetScheme() const
610 MockWebEngineFrame mockWebFrame;
613 class MockWebEngineRequestInterceptor : public WebEngineRequestInterceptor
616 MockWebEngineRequestInterceptor()
620 std::string GetUrl() const override
622 return "http://test.html";
625 Dali::Property::Map GetHeaders() const override
627 return mockHeadersMap;
630 std::string GetMethod() const override
635 bool Ignore() override
640 bool SetResponseStatus(int statusCode, const std::string& customedStatusText) override
645 bool AddResponseHeader(const std::string& fieldName, const std::string& fieldValue) override
647 mockHeadersMap.Add(fieldName, fieldValue);
651 bool AddResponseHeaders(const Dali::Property::Map& headers) override
653 mockHeadersMap.Merge(headers);
657 bool AddResponseBody(const std::string& body, uint32_t length) override
662 bool AddResponse(const std::string& headers, const std::string& body, uint32_t length) override
667 bool WriteResponseChunk(const std::string& chunk, uint32_t length) override
673 Dali::Property::Map mockHeadersMap;
676 class MockWebEngineConsoleMessage : public Dali::WebEngineConsoleMessage
679 MockWebEngineConsoleMessage()
683 std::string GetSource() const override
688 uint32_t GetLine() const override
693 SeverityLevel GetSeverityLevel() const override
695 return SeverityLevel::EMPTY;
698 std::string GetText() const override
700 return "This is a text.";
704 class MockWebEngineLoadError : public Dali::WebEngineLoadError
707 MockWebEngineLoadError(const std::string& url)
712 std::string GetUrl() const override
717 ErrorCode GetCode() const override
719 return ErrorCode::UNKNOWN;
722 std::string GetDescription() const override
724 return "This is an error.";
727 ErrorType GetType() const override
729 return ErrorType::NONE;
736 class MockWebEngineContextMenuItem : public Dali::WebEngineContextMenuItem
739 MockWebEngineContextMenuItem()
743 ItemTag GetTag() const override
745 return ItemTag::NO_ACTION;
748 ItemType GetType() const override
750 return ItemType::ACTION;
753 bool IsEnabled() const override
758 std::string GetLinkUrl() const override
760 return "http://test.html";
763 std::string GetImageUrl() const override
765 return "http://test.jpg";
768 std::string GetTitle() const override
773 std::unique_ptr<Dali::WebEngineContextMenu> GetParentMenu() const override
775 std::unique_ptr<Dali::WebEngineContextMenu> result;
780 class MockWebEngineContextMenu : public Dali::WebEngineContextMenu
783 MockWebEngineContextMenu()
787 uint32_t GetItemCount() const override
792 std::unique_ptr<Dali::WebEngineContextMenuItem> GetItemAt(uint32_t index) const override
794 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
798 std::vector<std::unique_ptr<WebEngineContextMenuItem>> GetItemList() const override
800 std::vector<std::unique_ptr<WebEngineContextMenuItem>> result;
801 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
802 result.push_back(std::move(webitem));
806 bool RemoveItem(WebEngineContextMenuItem& item) override
811 bool AppendItemAsAction(WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled) override
816 bool AppendItem(WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled) override
821 bool SelectItem(WebEngineContextMenuItem& item) override
832 class MockWebEngineHitTest : public Dali::WebEngineHitTest
835 MockWebEngineHitTest()
839 ResultContext GetResultContext() const override
841 return ResultContext::DOCUMENT;
844 std::string GetLinkUri() const override
846 return "http://test.html";
849 std::string GetLinkTitle() const override
854 std::string GetLinkLabel() const override
859 std::string GetImageUri() const override
861 return "http://test.jpg";
864 std::string GetMediaUri() const override
866 return "http://test.mp4";
869 std::string GetTagName() const override
874 std::string GetNodeValue() const override
879 Dali::Property::Map GetAttributes() const override
881 return mockAttributesMap;
884 std::string GetImageFileNameExtension() const override
889 Dali::PixelData GetImageBuffer() override
891 uint8_t* imageData = new uint8_t[16];
892 memset(imageData, 0xff, 16);
893 return Dali::PixelData::New(imageData, 16, 2, 2,
894 Dali::Pixel::Format::RGBA8888,
895 Dali::PixelData::ReleaseFunction::DELETE_ARRAY);
899 mutable Dali::Property::Map mockAttributesMap;
902 class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin
905 MockWebEngineSecurityOrigin()
906 : mockUrl("https://test.html")
907 , mockPotocol("https")
911 std::string GetHost() const
916 std::string GetProtocol() const
923 std::string mockPotocol;
926 class MockWebEngineSettings : public WebEngineSettings
929 MockWebEngineSettings()
930 : mockDefaultFontSize( 16 ),
931 mockJavaScriptEnabled( true ),
932 mockAutoFittingEnabled ( true ),
933 mockPluginsEnabled ( true ),
934 mockPrivateBrowsingEnabled( true ),
935 mockLinkMagnifierEnabled( true ),
936 mockKeypadWithoutUserActionUsed( true ),
937 mockAutofillPasswordFormEnabled( true ),
938 mockFormCandidateDataEnabled( true ),
939 mockTextSelectionEnabled( true ),
940 mockTextAutosizingEnable( true ),
941 mockArrowScrollEnable( true ),
942 mockClipboardEnabled( true ),
943 mockImePanelEnabled( true ),
944 mockImageLoadedAutomatically( true ),
945 mockDefaultTextEncodingName()
949 uint32_t GetDefaultFontSize() const override
951 return mockDefaultFontSize;
954 void SetDefaultFontSize( uint32_t size ) override
956 mockDefaultFontSize = size;
959 bool IsJavaScriptEnabled() const override
961 return mockJavaScriptEnabled;
964 void EnableJavaScript( bool enabled ) override
966 mockJavaScriptEnabled = enabled;
969 bool IsAutoFittingEnabled() const override
971 return mockAutoFittingEnabled;
974 void EnableAutoFitting( bool enabled ) override
976 mockAutoFittingEnabled = enabled;
979 bool ArePluginsEnabled() const override
981 return mockPluginsEnabled;
984 void EnablePlugins( bool enabled ) override
986 mockPluginsEnabled = enabled;
989 bool IsPrivateBrowsingEnabled() const override
991 return mockPrivateBrowsingEnabled;
994 void EnablePrivateBrowsing( bool enabled ) override
996 mockPrivateBrowsingEnabled = enabled;
999 bool IsLinkMagnifierEnabled() const override
1001 return mockLinkMagnifierEnabled;
1004 void EnableLinkMagnifier( bool enabled ) override
1006 mockLinkMagnifierEnabled = enabled;
1009 bool IsKeypadWithoutUserActionUsed() const override
1011 return mockKeypadWithoutUserActionUsed;
1014 void UseKeypadWithoutUserAction( bool used ) override
1016 mockKeypadWithoutUserActionUsed = used;
1019 bool IsAutofillPasswordFormEnabled() const override
1021 return mockAutofillPasswordFormEnabled;
1024 void EnableAutofillPasswordForm( bool enabled ) override
1026 mockAutofillPasswordFormEnabled = enabled;
1029 bool IsFormCandidateDataEnabled() const override
1031 return mockFormCandidateDataEnabled;
1034 void EnableFormCandidateData( bool enabled ) override
1036 mockFormCandidateDataEnabled = enabled;
1039 bool IsTextSelectionEnabled() const override
1041 return mockTextSelectionEnabled;
1044 void EnableTextSelection( bool enabled ) override
1046 mockTextSelectionEnabled = enabled;
1049 bool IsTextAutosizingEnabled() const override
1051 return mockTextAutosizingEnable;
1054 void EnableTextAutosizing( bool enabled ) override
1056 mockTextAutosizingEnable = enabled;
1059 bool IsArrowScrollEnabled() const override
1061 return mockArrowScrollEnable;
1064 void EnableArrowScroll( bool enabled ) override
1066 mockArrowScrollEnable = enabled;
1069 bool IsClipboardEnabled() const override
1071 return mockClipboardEnabled;
1074 void EnableClipboard( bool enabled ) override
1076 mockClipboardEnabled = enabled;
1079 bool IsImePanelEnabled() const override
1081 return mockImePanelEnabled;
1084 void EnableImePanel( bool enabled ) override
1086 mockImePanelEnabled = enabled;
1089 bool AreImagesLoadedAutomatically() const override
1091 return mockImageLoadedAutomatically;
1094 void AllowImagesLoadAutomatically( bool automatic ) override
1096 mockImageLoadedAutomatically = automatic;
1099 std::string GetDefaultTextEncodingName() const override
1101 return mockDefaultTextEncodingName;
1104 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
1106 mockDefaultTextEncodingName = defaultTextEncodingName;
1109 void AllowMixedContents( bool allowed ) override
1113 void EnableSpatialNavigation( bool enabled ) override
1117 void EnableWebSecurity( bool enabled ) override
1121 void EnableCacheBuilder( bool enabled ) override
1125 void UseScrollbarThumbFocusNotifications( bool used ) override
1129 void EnableDoNotTrack( bool enabled ) override
1133 void AllowFileAccessFromExternalUrl( bool allowed ) override
1137 void AllowScriptsOpenWindows( bool allowed ) override
1141 bool SetViewportMetaTag(bool enable) override
1146 bool SetForceZoom(bool enable) override
1151 bool IsZoomForced() const override
1156 bool SetTextZoomEnabled(bool enable) override
1161 bool IsTextZoomEnabled() const override
1166 void SetExtraFeature(const std::string& feature, bool enable) override
1170 bool IsExtraFeatureEnabled(const std::string& feature) const override
1176 int mockDefaultFontSize;
1177 bool mockJavaScriptEnabled;
1178 bool mockAutoFittingEnabled;
1179 bool mockPluginsEnabled;
1180 bool mockPrivateBrowsingEnabled;
1181 bool mockLinkMagnifierEnabled;
1182 bool mockKeypadWithoutUserActionUsed;
1183 bool mockAutofillPasswordFormEnabled;
1184 bool mockFormCandidateDataEnabled;
1185 bool mockTextSelectionEnabled;
1186 bool mockTextAutosizingEnable;
1187 bool mockArrowScrollEnable;
1188 bool mockClipboardEnabled;
1189 bool mockImePanelEnabled;
1190 bool mockImageLoadedAutomatically;
1191 std::string mockDefaultTextEncodingName;
1194 class WebEngine: public Dali::BaseObject
1200 , mCurrentPlusOnePos( 0 )
1202 , mEvaluating( false )
1203 , mScrollPosition( 0, 0 )
1204 , mScrollSize( 500, 500 )
1205 , mContentSize( 500, 500 )
1208 if ( gInstanceCount == 1 ) // only first web engine need be saved.
1213 mockWebEngineSettings = new MockWebEngineSettings();
1214 MockWebEngineContext* engineContext = new MockWebEngineContext();
1215 mockWebEngineContext = engineContext;
1216 if ( gInstanceCount == 1 )
1218 gWebEngineContextInstance = engineContext;
1220 mockWebEngineCookieManager = new MockWebEngineCookieManager();
1221 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
1224 virtual ~WebEngine()
1227 if( !gInstanceCount )
1230 gWebEngineContextInstance = 0;
1233 delete mockWebEngineSettings;
1234 delete mockWebEngineContext;
1235 delete mockWebEngineCookieManager;
1236 delete mockWebEngineBackForwardList;
1239 Dali::WebEngineSettings& GetSettings() const
1241 return *mockWebEngineSettings;
1244 Dali::WebEngineContext& GetContext() const
1246 return *mockWebEngineContext;
1249 Dali::WebEngineCookieManager& GetCookieManager() const
1251 return *mockWebEngineCookieManager;
1254 Dali::WebEngineBackForwardList& GetBackForwardList() const
1256 return *mockWebEngineBackForwardList;
1259 void LoadUrl( const std::string& url )
1262 ConnectToGlobalSignal( &OnLoadUrl );
1265 std::string GetUrl() const
1270 std::string GetTitle() const
1272 return std::string("title");
1275 Dali::PixelData GetFavicon() const
1277 static int testGetFaviconCount = 0;
1278 if (testGetFaviconCount == 0)
1280 testGetFaviconCount++;
1281 uint8_t* faviconData = new uint8_t[16];
1282 memset(faviconData, 0xff, 16);
1283 return Dali::PixelData::New(faviconData, 16, 2, 2,
1284 Dali::Pixel::Format::RGBA8888,
1285 Dali::PixelData::ReleaseFunction::DELETE_ARRAY);
1289 return Dali::PixelData();
1293 bool CanGoForward() const
1295 return mHistory.size() > mCurrentPlusOnePos;
1300 ConnectToGlobalSignal( &OnGoForward );
1303 bool CanGoBack() const
1305 return mCurrentPlusOnePos > 1;
1310 ConnectToGlobalSignal( &OnGoBack );
1313 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1319 ConnectToGlobalSignal( &OnEvaluteJavaScript );
1321 mResultCallbacks.push_back( resultHandler );
1325 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1329 ConnectToGlobalSignal( &OnJavaScriptAlert );
1330 mJavaScriptAlertCallback = callback;
1334 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1338 ConnectToGlobalSignal( &OnJavaScriptConfirm );
1339 mJavaScriptConfirmCallback = callback;
1343 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1347 ConnectToGlobalSignal( &OnJavaScriptPrompt );
1348 mJavaScriptPromptCallback = callback;
1352 std::unique_ptr<Dali::WebEngineHitTest> CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
1354 std::unique_ptr<Dali::WebEngineHitTest> hitTest(new MockWebEngineHitTest());
1358 bool CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
1362 ConnectToGlobalSignal( &OnHitTestCreated );
1363 mHitTestCreatedCallback = callback;
1370 ConnectToGlobalSignal( &OnClearHistory );
1373 std::string GetUserAgent() const
1378 void SetUserAgent( const std::string& userAgent )
1380 mUserAgent = userAgent;
1383 void ScrollBy( int32_t dx, int32_t dy )
1385 mScrollPosition += Dali::Vector2( dx, dy );
1386 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1388 ConnectToGlobalSignal( &OnScrollEdge );
1392 bool ScrollEdgeBy( int32_t dx, int32_t dy )
1394 mScrollPosition += Dali::Vector2( dx, dy );
1395 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1397 ConnectToGlobalSignal( &OnScrollEdge );
1402 void SetScrollPosition( int32_t x, int32_t y )
1404 mScrollPosition.x = x;
1405 mScrollPosition.y = y;
1408 Dali::Vector2 GetScrollPosition() const
1410 return mScrollPosition;
1413 Dali::Vector2 GetScrollSize() const
1418 Dali::Vector2 GetContentSize() const
1420 return mContentSize;
1423 void SetPageZoomFactor(float zoomFactor)
1425 mPageZoomFactor = zoomFactor;
1428 float GetPageZoomFactor() const
1430 return mPageZoomFactor;
1433 void SetTextZoomFactor(float zoomFactor)
1435 mTextZoomFactor = zoomFactor;
1438 float GetTextZoomFactor() const
1440 return mTextZoomFactor;
1443 float GetLoadProgressPercentage() const
1448 void SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1450 mScaleFactor = scaleFactor;
1453 float GetScaleFactor() const
1455 return mScaleFactor;
1458 Dali::PixelData GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
1460 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
1461 uint8_t* pixel = new uint8_t[ bufferSize ];
1462 memset(pixel, 0xff, bufferSize);
1463 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
1464 Dali::Pixel::Format::RGBA8888,
1465 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1468 bool GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1472 ConnectToGlobalSignal( &OnScreenshotCaptured );
1473 mScreenshotCapturedCallback = callback;
1478 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1482 ConnectToGlobalSignal( &OnVideoPlaying );
1483 mVideoPlayingCallback = callback;
1488 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1492 ConnectToGlobalSignal( &OnGeolocationPermission );
1493 mGeolocationPermissionCallback = callback;
1497 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
1499 return mFrameRenderedSignal;
1502 void RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1504 mPageLoadStartedCallback = callback;
1507 void RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1509 mPageLoadInProgressCallback = callback;
1512 void RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1514 mPageLoadFinishedCallback = callback;
1517 void RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback)
1519 mPageLoadErrorCallback = callback;
1522 void RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback)
1524 mScrollEdgeReachedCallback = callback;
1527 void RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback)
1529 mUrlChangedCallback = callback;
1532 void RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback)
1534 mFormRepostDecidedCallback = callback;
1537 void RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback)
1539 mConsoleMessageCallback = callback;
1542 void RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback)
1544 mResponsePolicyDecisionCallback = callback;
1547 void RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
1549 mCertificateConfirmCallback = callback;
1552 void RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
1554 mSslCertificateChangedCallback = callback;
1557 void RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
1559 mHttpAuthHandlerCallback = callback;
1562 void RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
1564 mContextMenuShownCallback = callback;
1567 void RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
1569 mContextMenuHiddenCallback = callback;
1572 void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback)
1576 ConnectToGlobalSignal(&OnPlainTextReceived);
1577 mPlainTextReceivedCallback = callback;
1582 std::vector<std::string> mHistory;
1583 size_t mCurrentPlusOnePos;
1584 std::string mUserAgent;
1586 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1589 float mPageZoomFactor;
1590 float mTextZoomFactor;
1593 Dali::Vector2 mScrollPosition;
1594 Dali::Vector2 mScrollSize;
1595 Dali::Vector2 mContentSize;
1596 WebEngineBackForwardList* mockWebEngineBackForwardList;
1597 WebEngineContext* mockWebEngineContext;
1598 WebEngineCookieManager* mockWebEngineCookieManager;
1599 WebEngineSettings* mockWebEngineSettings;
1601 std::vector<Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback> mResultCallbacks;
1603 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadStartedCallback;
1604 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadInProgressCallback;
1605 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadFinishedCallback;
1606 Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback mPageLoadErrorCallback;
1607 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback mScrollEdgeReachedCallback;
1608 Dali::WebEnginePlugin::WebEngineUrlChangedCallback mUrlChangedCallback;
1609 Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback mFormRepostDecidedCallback;
1610 Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback;
1611 Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback mConsoleMessageCallback;
1612 Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback mResponsePolicyDecisionCallback;
1613 Dali::WebEnginePlugin::WebEngineCertificateCallback mCertificateConfirmCallback;
1614 Dali::WebEnginePlugin::WebEngineCertificateCallback mSslCertificateChangedCallback;
1615 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback mHttpAuthHandlerCallback;
1616 Dali::WebEnginePlugin::WebEngineContextMenuShownCallback mContextMenuShownCallback;
1617 Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback mContextMenuHiddenCallback;
1618 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1619 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1620 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1621 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1622 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1623 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1624 Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback;
1625 Dali::WebEnginePlugin::PlainTextReceivedCallback mPlainTextReceivedCallback;
1634 DisconnectFromGlobalSignal( &OnGoBack );
1636 if( gInstance && gInstance->CanGoBack() )
1638 gInstance->mCurrentPlusOnePos--;
1645 DisconnectFromGlobalSignal( &OnGoForward );
1647 if( gInstance && gInstance->CanGoForward() )
1649 gInstance->mCurrentPlusOnePos++;
1656 DisconnectFromGlobalSignal( &OnLoadUrl );
1660 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1662 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1664 gInstance->mHistory.push_back( gInstance->mUrl );
1665 gInstance->mCurrentPlusOnePos++;
1666 if (gInstance->mPageLoadStartedCallback)
1668 gInstance->mPageLoadStartedCallback( gInstance->mUrl );
1670 if (gInstance->mPageLoadInProgressCallback)
1672 gInstance->mPageLoadInProgressCallback( gInstance->mUrl );
1674 if (gInstance->mPageLoadFinishedCallback)
1676 gInstance->mPageLoadFinishedCallback( gInstance->mUrl );
1678 if (gInstance->mPageLoadErrorCallback)
1680 std::unique_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1681 gInstance->mPageLoadErrorCallback(std::move(error));
1683 if (gInstance->mUrlChangedCallback)
1685 gInstance->mUrlChangedCallback( "http://new-test" );
1687 if (gInstance->mFormRepostDecidedCallback)
1689 std::unique_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1690 gInstance->mFormRepostDecidedCallback(std::move(repostDecision));
1692 gInstance->mFrameRenderedSignal.Emit();
1693 if (gInstance->mFrameRenderedCallback)
1695 gInstance->mFrameRenderedCallback();
1697 if (gInstance->mConsoleMessageCallback)
1699 std::unique_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1700 gInstance->mConsoleMessageCallback(std::move(message));
1702 if (gInstance->mResponsePolicyDecisionCallback)
1704 std::unique_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1705 gInstance->mResponsePolicyDecisionCallback(std::move(policyDecision));
1707 if (gInstance->mCertificateConfirmCallback)
1709 std::unique_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1710 gInstance->mCertificateConfirmCallback(std::move(certificate));
1712 if (gInstance->mSslCertificateChangedCallback)
1714 std::unique_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1715 gInstance->mSslCertificateChangedCallback(std::move(sslCertificate));
1717 if (gInstance->mHttpAuthHandlerCallback)
1719 std::unique_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1720 gInstance->mHttpAuthHandlerCallback(std::move(handler));
1722 if (gInstance->mContextMenuShownCallback)
1724 std::unique_ptr<Dali::WebEngineContextMenu> menu(new MockWebEngineContextMenu());
1725 gInstance->mContextMenuShownCallback(std::move(menu));
1727 if (gInstance->mContextMenuHiddenCallback)
1729 std::unique_ptr<Dali::WebEngineContextMenu> hiddenMenu(new MockWebEngineContextMenu());
1730 gInstance->mContextMenuHiddenCallback(std::move(hiddenMenu));
1738 DisconnectFromGlobalSignal( &OnScrollEdge );
1740 if( gInstance && gInstance->mScrollEdgeReachedCallback )
1742 gInstance->mScrollEdgeReachedCallback( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1748 bool OnEvaluteJavaScript()
1750 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1754 for( auto& func : gInstance->mResultCallbacks )
1758 gInstance->mResultCallbacks.clear();
1763 bool OnJavaScriptAlert()
1765 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1768 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1773 bool OnJavaScriptConfirm()
1775 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1778 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1783 bool OnJavaScriptPrompt()
1785 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1788 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1793 bool OnScreenshotCaptured()
1795 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1798 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1799 memset(pixel, 0xff, 2 * 2 * 4);
1800 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1801 Dali::Pixel::Format::RGBA8888,
1802 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1803 gInstance->mScreenshotCapturedCallback( data );
1808 bool OnVideoPlaying()
1810 DisconnectFromGlobalSignal( &OnVideoPlaying );
1813 gInstance->mVideoPlayingCallback( true );
1818 bool OnGeolocationPermission()
1820 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1823 gInstance->mGeolocationPermissionCallback( "", "" );
1828 bool OnHitTestCreated()
1830 DisconnectFromGlobalSignal(&OnHitTestCreated);
1833 std::unique_ptr<Dali::WebEngineHitTest> test(new MockWebEngineHitTest());
1834 gInstance->mHitTestCreatedCallback(std::move(test));
1839 bool OnClearHistory()
1841 DisconnectFromGlobalSignal( &OnClearHistory );
1843 if( gInstance && gInstance->mCurrentPlusOnePos )
1845 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1846 std::vector< std::string >().swap( gInstance->mHistory );
1847 gInstance->mHistory.push_back( url );
1848 gInstance->mCurrentPlusOnePos = 1;
1853 bool OnSecurityOriginAcquired()
1855 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1856 if (gWebEngineContextInstance)
1858 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1859 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1860 securityOriginList.push_back(std::move(origin));
1861 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1866 bool OnStorageUsageAcquired()
1868 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1869 if (gWebEngineContextInstance)
1871 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1876 bool OnFormPasswordAcquired()
1878 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1879 if (gWebEngineContextInstance)
1881 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1882 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1883 data->url = "http://test.html";
1884 data->useFingerprint = false;
1885 formPasswordList.push_back(std::move(data));
1886 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1891 bool OnDownloadStarted()
1893 DisconnectFromGlobalSignal(&OnDownloadStarted);
1894 if (gWebEngineContextInstance)
1896 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1901 bool OnMimeOverridden()
1903 DisconnectFromGlobalSignal(&OnMimeOverridden);
1904 if (gWebEngineContextInstance)
1906 std::string newMime;
1907 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1912 bool OnRequestIntercepted()
1914 DisconnectFromGlobalSignal(&OnRequestIntercepted);
1915 if (gWebEngineContextInstance)
1917 Dali::WebEngineRequestInterceptorPtr interceptor = new MockWebEngineRequestInterceptor();
1918 gWebEngineContextInstance->mRequestInterceptedCallback(interceptor);
1923 bool OnChangesWatch()
1925 DisconnectFromGlobalSignal( &OnChangesWatch );
1929 MockWebEngineCookieManager* temp = (MockWebEngineCookieManager *)(&(gInstance->GetCookieManager()));
1932 temp->mChangesWatchCallback();
1939 bool OnPlainTextReceived()
1941 DisconnectFromGlobalSignal(&OnPlainTextReceived);
1944 std::string dummyResultText;
1945 gInstance->mPlainTextReceivedCallback(dummyResultText);
1952 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1954 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1955 BaseObject& handle = webEngine.GetBaseObject();
1956 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1959 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1961 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1962 const BaseObject& handle = webEngine.GetBaseObject();
1963 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1966 } // namespace Adaptor
1968 } // namespace Internal
1970 // Dali::WebEngine Implementation
1971 WebEngine::WebEngine()
1975 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1976 : BaseHandle( internal )
1980 WebEngine::~WebEngine()
1984 WebEngine WebEngine::New()
1986 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1988 return WebEngine( baseObject );
1991 WebEngine::WebEngine( const WebEngine& WebEngine )
1992 : BaseHandle( WebEngine )
1996 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
1998 BaseHandle::operator=( webEngine );
2002 WebEngine WebEngine::DownCast( BaseHandle handle )
2004 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
2007 void WebEngine::Create( uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId )
2011 void WebEngine::Create( uint32_t width, uint32_t height, uint32_t argc, char** argv )
2015 void WebEngine::Destroy()
2019 WebEngineSettings& WebEngine::GetSettings() const
2021 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
2024 WebEngineContext& WebEngine::GetContext() const
2026 return Internal::Adaptor::GetImplementation( *this ).GetContext();
2029 WebEngineCookieManager& WebEngine::GetCookieManager() const
2031 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
2034 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
2036 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
2039 void WebEngine::LoadUrl( const std::string& url )
2041 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
2044 std::string WebEngine::GetTitle() const
2046 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
2049 Dali::PixelData WebEngine::GetFavicon() const
2051 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
2054 std::string WebEngine::GetUrl() const
2056 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
2059 NativeImageSourcePtr WebEngine::GetNativeImageSource()
2062 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
2066 void WebEngine::LoadHtmlString( const std::string& htmlString )
2070 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
2075 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
2080 void WebEngine::Reload()
2084 bool WebEngine::ReloadWithoutCache()
2089 void WebEngine::StopLoading()
2093 void WebEngine::Suspend()
2097 void WebEngine::Resume()
2101 void WebEngine::SuspendNetworkLoading()
2105 void WebEngine::ResumeNetworkLoading()
2109 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
2114 bool WebEngine::RemoveCustomHeader(const std::string& name)
2119 uint32_t WebEngine::StartInspectorServer(uint32_t port)
2124 bool WebEngine::StopInspectorServer()
2129 bool WebEngine::CanGoForward()
2131 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
2134 void WebEngine::GoForward()
2136 Internal::Adaptor::GetImplementation( *this ).GoForward();
2139 bool WebEngine::CanGoBack()
2141 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
2144 void WebEngine::GoBack()
2146 Internal::Adaptor::GetImplementation( *this ).GoBack();
2149 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
2151 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
2154 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
2158 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
2160 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
2163 void WebEngine::JavaScriptAlertReply()
2167 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
2169 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
2172 void WebEngine::JavaScriptConfirmReply( bool confirmed )
2176 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
2178 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
2181 void WebEngine::JavaScriptPromptReply( const std::string& result )
2185 std::unique_ptr<Dali::WebEngineHitTest> WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
2187 return Internal::Adaptor::GetImplementation(*this).CreateHitTest(x, y, mode);
2190 bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
2192 return Internal::Adaptor::GetImplementation(*this).CreateHitTestAsynchronously(x, y, mode, callback);
2195 void WebEngine::ClearAllTilesResources()
2199 void WebEngine::ClearHistory()
2201 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
2204 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
2206 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
2209 float WebEngine::GetScaleFactor() const
2211 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
2214 void WebEngine::ActivateAccessibility(bool activated)
2218 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
2223 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
2227 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
2229 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
2232 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
2234 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
2237 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
2239 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
2242 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
2244 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
2247 std::string WebEngine::GetUserAgent() const
2249 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
2252 void WebEngine::SetUserAgent( const std::string& userAgent )
2254 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
2257 void WebEngine::ScrollBy( int32_t dx, int32_t dy )
2259 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
2262 bool WebEngine::ScrollEdgeBy( int32_t dx, int32_t dy )
2264 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
2267 void WebEngine::SetScrollPosition( int32_t x, int32_t y )
2269 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
2272 Dali::Vector2 WebEngine::GetScrollPosition() const
2274 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
2277 Dali::Vector2 WebEngine::GetScrollSize() const
2279 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
2282 Dali::Vector2 WebEngine::GetContentSize() const
2284 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
2287 void WebEngine::SetSize( uint32_t width, uint32_t height )
2291 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
2295 void WebEngine::ClearTilesWhenHidden(bool cleared)
2299 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
2303 void WebEngine::EnableCursorByClient(bool enabled)
2307 std::string WebEngine::GetSelectedText() const
2312 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
2317 bool WebEngine::SendKeyEvent( const KeyEvent& event )
2322 bool WebEngine::SendHoverEvent( const HoverEvent& event )
2327 bool WebEngine::SendWheelEvent( const WheelEvent& event )
2332 void WebEngine::SetFocus( bool focused )
2336 void WebEngine::SetPageZoomFactor(float zoomFactor)
2338 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
2341 float WebEngine::GetPageZoomFactor() const
2343 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
2346 void WebEngine::SetTextZoomFactor(float zoomFactor)
2348 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
2351 float WebEngine::GetTextZoomFactor() const
2353 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
2356 float WebEngine::GetLoadProgressPercentage() const
2358 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
2361 void WebEngine::UpdateDisplayArea( Dali::Rect< int32_t > displayArea )
2365 void WebEngine::EnableVideoHole( bool enabled )
2369 void WebEngine::EnableMouseEvents( bool enabled )
2373 void WebEngine::EnableKeyEvents( bool enabled )
2377 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
2379 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
2382 void WebEngine::RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2384 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadStartedCallback(callback);
2387 void WebEngine::RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2389 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadInProgressCallback(callback);
2392 void WebEngine::RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2394 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadFinishedCallback(callback);
2397 void WebEngine::RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback)
2399 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadErrorCallback(callback);
2402 void WebEngine::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback)
2404 Internal::Adaptor::GetImplementation( *this ).RegisterScrollEdgeReachedCallback(callback);
2407 void WebEngine::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback)
2409 Internal::Adaptor::GetImplementation( *this ).RegisterUrlChangedCallback(callback);
2412 void WebEngine::RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback)
2414 Internal::Adaptor::GetImplementation( *this ).RegisterFormRepostDecidedCallback(callback);
2417 void WebEngine::RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback)
2419 Internal::Adaptor::GetImplementation( *this ).RegisterConsoleMessageReceivedCallback(callback);
2422 void WebEngine::RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback)
2424 Internal::Adaptor::GetImplementation( *this ).RegisterResponsePolicyDecidedCallback(callback);
2427 void WebEngine::RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
2429 Internal::Adaptor::GetImplementation( *this ).RegisterCertificateConfirmedCallback(callback);
2432 void WebEngine::RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
2434 Internal::Adaptor::GetImplementation( *this ).RegisterSslCertificateChangedCallback(callback);
2437 void WebEngine::RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
2439 Internal::Adaptor::GetImplementation( *this ).RegisterHttpAuthHandlerCallback(callback);
2442 void WebEngine::RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
2444 Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuShownCallback(callback);
2447 void WebEngine::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
2449 Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuHiddenCallback(callback);
2452 void WebEngine::GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback)
2454 Internal::Adaptor::GetImplementation(*this).GetPlainTextAsynchronously(callback);
2457 } // namespace Dali;