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 int8_t* body, uint32_t length) override
662 bool AddResponse(const std::string& headers, const int8_t* body, uint32_t length) override
667 bool WriteResponseChunk(const int8_t* 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::Accessibility::Address GetAccessibilityAddress()
1460 return {":9.99", "root"};
1463 Dali::PixelData GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
1465 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
1466 uint8_t* pixel = new uint8_t[ bufferSize ];
1467 memset(pixel, 0xff, bufferSize);
1468 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
1469 Dali::Pixel::Format::RGBA8888,
1470 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1473 bool GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1477 ConnectToGlobalSignal( &OnScreenshotCaptured );
1478 mScreenshotCapturedCallback = callback;
1483 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1487 ConnectToGlobalSignal( &OnVideoPlaying );
1488 mVideoPlayingCallback = callback;
1493 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1497 ConnectToGlobalSignal( &OnGeolocationPermission );
1498 mGeolocationPermissionCallback = callback;
1502 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
1504 return mFrameRenderedSignal;
1507 void RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1509 mPageLoadStartedCallback = callback;
1512 void RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1514 mPageLoadInProgressCallback = callback;
1517 void RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1519 mPageLoadFinishedCallback = callback;
1522 void RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback)
1524 mPageLoadErrorCallback = callback;
1527 void RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback)
1529 mScrollEdgeReachedCallback = callback;
1532 void RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback)
1534 mUrlChangedCallback = callback;
1537 void RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback)
1539 mFormRepostDecidedCallback = callback;
1542 void RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback)
1544 mConsoleMessageCallback = callback;
1547 void RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback)
1549 mResponsePolicyDecisionCallback = callback;
1552 void RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback)
1554 mNavigationPolicyDecisionCallback = callback;
1557 void RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
1559 mCertificateConfirmCallback = callback;
1562 void RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
1564 mSslCertificateChangedCallback = callback;
1567 void RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
1569 mHttpAuthHandlerCallback = callback;
1572 void RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
1574 mContextMenuShownCallback = callback;
1577 void RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
1579 mContextMenuHiddenCallback = callback;
1582 void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback)
1586 ConnectToGlobalSignal(&OnPlainTextReceived);
1587 mPlainTextReceivedCallback = callback;
1592 std::vector<std::string> mHistory;
1593 size_t mCurrentPlusOnePos;
1594 std::string mUserAgent;
1596 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1599 float mPageZoomFactor;
1600 float mTextZoomFactor;
1603 Dali::Vector2 mScrollPosition;
1604 Dali::Vector2 mScrollSize;
1605 Dali::Vector2 mContentSize;
1606 WebEngineBackForwardList* mockWebEngineBackForwardList;
1607 WebEngineContext* mockWebEngineContext;
1608 WebEngineCookieManager* mockWebEngineCookieManager;
1609 WebEngineSettings* mockWebEngineSettings;
1611 std::vector<Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback> mResultCallbacks;
1613 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadStartedCallback;
1614 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadInProgressCallback;
1615 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadFinishedCallback;
1616 Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback mPageLoadErrorCallback;
1617 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback mScrollEdgeReachedCallback;
1618 Dali::WebEnginePlugin::WebEngineUrlChangedCallback mUrlChangedCallback;
1619 Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback mFormRepostDecidedCallback;
1620 Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback;
1621 Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback mConsoleMessageCallback;
1622 Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback mResponsePolicyDecisionCallback;
1623 Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback mNavigationPolicyDecisionCallback;
1624 Dali::WebEnginePlugin::WebEngineCertificateCallback mCertificateConfirmCallback;
1625 Dali::WebEnginePlugin::WebEngineCertificateCallback mSslCertificateChangedCallback;
1626 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback mHttpAuthHandlerCallback;
1627 Dali::WebEnginePlugin::WebEngineContextMenuShownCallback mContextMenuShownCallback;
1628 Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback mContextMenuHiddenCallback;
1629 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1630 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1631 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1632 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1633 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1634 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1635 Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback;
1636 Dali::WebEnginePlugin::PlainTextReceivedCallback mPlainTextReceivedCallback;
1645 DisconnectFromGlobalSignal( &OnGoBack );
1647 if( gInstance && gInstance->CanGoBack() )
1649 gInstance->mCurrentPlusOnePos--;
1656 DisconnectFromGlobalSignal( &OnGoForward );
1658 if( gInstance && gInstance->CanGoForward() )
1660 gInstance->mCurrentPlusOnePos++;
1667 DisconnectFromGlobalSignal( &OnLoadUrl );
1671 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1673 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1675 gInstance->mHistory.push_back( gInstance->mUrl );
1676 gInstance->mCurrentPlusOnePos++;
1677 if (gInstance->mPageLoadStartedCallback)
1679 gInstance->mPageLoadStartedCallback( gInstance->mUrl );
1681 if (gInstance->mPageLoadInProgressCallback)
1683 gInstance->mPageLoadInProgressCallback( gInstance->mUrl );
1685 if (gInstance->mPageLoadFinishedCallback)
1687 gInstance->mPageLoadFinishedCallback( gInstance->mUrl );
1689 if (gInstance->mPageLoadErrorCallback)
1691 std::unique_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1692 gInstance->mPageLoadErrorCallback(std::move(error));
1694 if (gInstance->mUrlChangedCallback)
1696 gInstance->mUrlChangedCallback( "http://new-test" );
1698 if (gInstance->mFormRepostDecidedCallback)
1700 std::unique_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1701 gInstance->mFormRepostDecidedCallback(std::move(repostDecision));
1703 gInstance->mFrameRenderedSignal.Emit();
1704 if (gInstance->mFrameRenderedCallback)
1706 gInstance->mFrameRenderedCallback();
1708 if (gInstance->mConsoleMessageCallback)
1710 std::unique_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1711 gInstance->mConsoleMessageCallback(std::move(message));
1713 if (gInstance->mResponsePolicyDecisionCallback)
1715 std::unique_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1716 gInstance->mResponsePolicyDecisionCallback(std::move(policyDecision));
1718 if (gInstance->mNavigationPolicyDecisionCallback)
1720 std::unique_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1721 gInstance->mNavigationPolicyDecisionCallback(std::move(policyDecision));
1723 if (gInstance->mCertificateConfirmCallback)
1725 std::unique_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1726 gInstance->mCertificateConfirmCallback(std::move(certificate));
1728 if (gInstance->mSslCertificateChangedCallback)
1730 std::unique_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1731 gInstance->mSslCertificateChangedCallback(std::move(sslCertificate));
1733 if (gInstance->mHttpAuthHandlerCallback)
1735 std::unique_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1736 gInstance->mHttpAuthHandlerCallback(std::move(handler));
1738 if (gInstance->mContextMenuShownCallback)
1740 std::unique_ptr<Dali::WebEngineContextMenu> menu(new MockWebEngineContextMenu());
1741 gInstance->mContextMenuShownCallback(std::move(menu));
1743 if (gInstance->mContextMenuHiddenCallback)
1745 std::unique_ptr<Dali::WebEngineContextMenu> hiddenMenu(new MockWebEngineContextMenu());
1746 gInstance->mContextMenuHiddenCallback(std::move(hiddenMenu));
1754 DisconnectFromGlobalSignal( &OnScrollEdge );
1756 if( gInstance && gInstance->mScrollEdgeReachedCallback )
1758 gInstance->mScrollEdgeReachedCallback( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1764 bool OnEvaluteJavaScript()
1766 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1770 for( auto& func : gInstance->mResultCallbacks )
1774 gInstance->mResultCallbacks.clear();
1779 bool OnJavaScriptAlert()
1781 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1784 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1789 bool OnJavaScriptConfirm()
1791 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1794 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1799 bool OnJavaScriptPrompt()
1801 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1804 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1809 bool OnScreenshotCaptured()
1811 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1814 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1815 memset(pixel, 0xff, 2 * 2 * 4);
1816 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1817 Dali::Pixel::Format::RGBA8888,
1818 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1819 gInstance->mScreenshotCapturedCallback( data );
1824 bool OnVideoPlaying()
1826 DisconnectFromGlobalSignal( &OnVideoPlaying );
1829 gInstance->mVideoPlayingCallback( true );
1834 bool OnGeolocationPermission()
1836 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1839 gInstance->mGeolocationPermissionCallback( "", "" );
1844 bool OnHitTestCreated()
1846 DisconnectFromGlobalSignal(&OnHitTestCreated);
1849 std::unique_ptr<Dali::WebEngineHitTest> test(new MockWebEngineHitTest());
1850 gInstance->mHitTestCreatedCallback(std::move(test));
1855 bool OnClearHistory()
1857 DisconnectFromGlobalSignal( &OnClearHistory );
1859 if( gInstance && gInstance->mCurrentPlusOnePos )
1861 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1862 std::vector< std::string >().swap( gInstance->mHistory );
1863 gInstance->mHistory.push_back( url );
1864 gInstance->mCurrentPlusOnePos = 1;
1869 bool OnSecurityOriginAcquired()
1871 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1872 if (gWebEngineContextInstance)
1874 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1875 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1876 securityOriginList.push_back(std::move(origin));
1877 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1882 bool OnStorageUsageAcquired()
1884 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1885 if (gWebEngineContextInstance)
1887 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1892 bool OnFormPasswordAcquired()
1894 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1895 if (gWebEngineContextInstance)
1897 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1898 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1899 data->url = "http://test.html";
1900 data->useFingerprint = false;
1901 formPasswordList.push_back(std::move(data));
1902 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1907 bool OnDownloadStarted()
1909 DisconnectFromGlobalSignal(&OnDownloadStarted);
1910 if (gWebEngineContextInstance)
1912 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1917 bool OnMimeOverridden()
1919 DisconnectFromGlobalSignal(&OnMimeOverridden);
1920 if (gWebEngineContextInstance)
1922 std::string newMime;
1923 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1928 bool OnRequestIntercepted()
1930 DisconnectFromGlobalSignal(&OnRequestIntercepted);
1931 if (gWebEngineContextInstance)
1933 Dali::WebEngineRequestInterceptorPtr interceptor = new MockWebEngineRequestInterceptor();
1934 gWebEngineContextInstance->mRequestInterceptedCallback(interceptor);
1939 bool OnChangesWatch()
1941 DisconnectFromGlobalSignal( &OnChangesWatch );
1945 MockWebEngineCookieManager* temp = (MockWebEngineCookieManager *)(&(gInstance->GetCookieManager()));
1948 temp->mChangesWatchCallback();
1955 bool OnPlainTextReceived()
1957 DisconnectFromGlobalSignal(&OnPlainTextReceived);
1960 std::string dummyResultText;
1961 gInstance->mPlainTextReceivedCallback(dummyResultText);
1968 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1970 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1971 BaseObject& handle = webEngine.GetBaseObject();
1972 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1975 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1977 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1978 const BaseObject& handle = webEngine.GetBaseObject();
1979 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1982 } // namespace Adaptor
1984 } // namespace Internal
1986 // Dali::WebEngine Implementation
1987 WebEngine::WebEngine()
1991 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1992 : BaseHandle( internal )
1996 WebEngine::~WebEngine()
2000 WebEngine WebEngine::New()
2002 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
2004 return WebEngine( baseObject );
2007 WebEngine::WebEngine( const WebEngine& WebEngine )
2008 : BaseHandle( WebEngine )
2012 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
2014 BaseHandle::operator=( webEngine );
2018 WebEngine WebEngine::DownCast( BaseHandle handle )
2020 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
2023 void WebEngine::Create( uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId )
2027 void WebEngine::Create( uint32_t width, uint32_t height, uint32_t argc, char** argv )
2031 void WebEngine::Destroy()
2035 WebEngineSettings& WebEngine::GetSettings() const
2037 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
2040 WebEngineContext& WebEngine::GetContext() const
2042 return Internal::Adaptor::GetImplementation( *this ).GetContext();
2045 WebEngineCookieManager& WebEngine::GetCookieManager() const
2047 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
2050 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
2052 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
2055 void WebEngine::LoadUrl( const std::string& url )
2057 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
2060 std::string WebEngine::GetTitle() const
2062 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
2065 Dali::PixelData WebEngine::GetFavicon() const
2067 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
2070 std::string WebEngine::GetUrl() const
2072 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
2075 NativeImageSourcePtr WebEngine::GetNativeImageSource()
2078 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
2082 void WebEngine::LoadHtmlString( const std::string& htmlString )
2086 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
2091 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
2096 void WebEngine::Reload()
2100 bool WebEngine::ReloadWithoutCache()
2105 void WebEngine::StopLoading()
2109 void WebEngine::Suspend()
2113 void WebEngine::Resume()
2117 void WebEngine::SuspendNetworkLoading()
2121 void WebEngine::ResumeNetworkLoading()
2125 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
2130 bool WebEngine::RemoveCustomHeader(const std::string& name)
2135 uint32_t WebEngine::StartInspectorServer(uint32_t port)
2140 bool WebEngine::StopInspectorServer()
2145 bool WebEngine::CanGoForward()
2147 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
2150 void WebEngine::GoForward()
2152 Internal::Adaptor::GetImplementation( *this ).GoForward();
2155 bool WebEngine::CanGoBack()
2157 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
2160 void WebEngine::GoBack()
2162 Internal::Adaptor::GetImplementation( *this ).GoBack();
2165 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
2167 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
2170 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
2174 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
2176 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
2179 void WebEngine::JavaScriptAlertReply()
2183 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
2185 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
2188 void WebEngine::JavaScriptConfirmReply( bool confirmed )
2192 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
2194 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
2197 void WebEngine::JavaScriptPromptReply( const std::string& result )
2201 std::unique_ptr<Dali::WebEngineHitTest> WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
2203 return Internal::Adaptor::GetImplementation(*this).CreateHitTest(x, y, mode);
2206 bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
2208 return Internal::Adaptor::GetImplementation(*this).CreateHitTestAsynchronously(x, y, mode, callback);
2211 void WebEngine::ClearAllTilesResources()
2215 void WebEngine::ClearHistory()
2217 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
2220 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
2222 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
2225 float WebEngine::GetScaleFactor() const
2227 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
2230 void WebEngine::ActivateAccessibility(bool activated)
2234 Accessibility::Address WebEngine::GetAccessibilityAddress()
2236 return Internal::Adaptor::GetImplementation(*this).GetAccessibilityAddress();
2239 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
2244 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
2248 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
2250 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
2253 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
2255 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
2258 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
2260 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
2263 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
2265 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
2268 std::string WebEngine::GetUserAgent() const
2270 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
2273 void WebEngine::SetUserAgent( const std::string& userAgent )
2275 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
2278 void WebEngine::ScrollBy( int32_t dx, int32_t dy )
2280 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
2283 bool WebEngine::ScrollEdgeBy( int32_t dx, int32_t dy )
2285 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
2288 void WebEngine::SetScrollPosition( int32_t x, int32_t y )
2290 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
2293 Dali::Vector2 WebEngine::GetScrollPosition() const
2295 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
2298 Dali::Vector2 WebEngine::GetScrollSize() const
2300 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
2303 Dali::Vector2 WebEngine::GetContentSize() const
2305 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
2308 void WebEngine::SetSize( uint32_t width, uint32_t height )
2312 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
2316 void WebEngine::ClearTilesWhenHidden(bool cleared)
2320 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
2324 void WebEngine::EnableCursorByClient(bool enabled)
2328 std::string WebEngine::GetSelectedText() const
2333 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
2338 bool WebEngine::SendKeyEvent( const KeyEvent& event )
2343 bool WebEngine::SendHoverEvent( const HoverEvent& event )
2348 bool WebEngine::SendWheelEvent( const WheelEvent& event )
2353 void WebEngine::SetFocus( bool focused )
2357 void WebEngine::SetPageZoomFactor(float zoomFactor)
2359 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
2362 float WebEngine::GetPageZoomFactor() const
2364 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
2367 void WebEngine::SetTextZoomFactor(float zoomFactor)
2369 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
2372 float WebEngine::GetTextZoomFactor() const
2374 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
2377 float WebEngine::GetLoadProgressPercentage() const
2379 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
2382 void WebEngine::UpdateDisplayArea( Dali::Rect< int32_t > displayArea )
2386 void WebEngine::EnableVideoHole( bool enabled )
2390 void WebEngine::EnableMouseEvents( bool enabled )
2394 void WebEngine::EnableKeyEvents( bool enabled )
2398 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
2400 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
2403 void WebEngine::RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2405 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadStartedCallback(callback);
2408 void WebEngine::RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2410 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadInProgressCallback(callback);
2413 void WebEngine::RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2415 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadFinishedCallback(callback);
2418 void WebEngine::RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback)
2420 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadErrorCallback(callback);
2423 void WebEngine::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback)
2425 Internal::Adaptor::GetImplementation( *this ).RegisterScrollEdgeReachedCallback(callback);
2428 void WebEngine::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback)
2430 Internal::Adaptor::GetImplementation( *this ).RegisterUrlChangedCallback(callback);
2433 void WebEngine::RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback)
2435 Internal::Adaptor::GetImplementation( *this ).RegisterFormRepostDecidedCallback(callback);
2438 void WebEngine::RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback)
2440 Internal::Adaptor::GetImplementation( *this ).RegisterConsoleMessageReceivedCallback(callback);
2443 void WebEngine::RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback)
2445 Internal::Adaptor::GetImplementation( *this ).RegisterResponsePolicyDecidedCallback(callback);
2448 void WebEngine::RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback)
2450 Internal::Adaptor::GetImplementation(*this).RegisterNavigationPolicyDecidedCallback(callback);
2453 void WebEngine::RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
2455 Internal::Adaptor::GetImplementation( *this ).RegisterCertificateConfirmedCallback(callback);
2458 void WebEngine::RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
2460 Internal::Adaptor::GetImplementation( *this ).RegisterSslCertificateChangedCallback(callback);
2463 void WebEngine::RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
2465 Internal::Adaptor::GetImplementation( *this ).RegisterHttpAuthHandlerCallback(callback);
2468 void WebEngine::RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
2470 Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuShownCallback(callback);
2473 void WebEngine::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
2475 Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuHiddenCallback(callback);
2478 void WebEngine::GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback)
2480 Internal::Adaptor::GetImplementation(*this).GetPlainTextAsynchronously(callback);
2483 } // namespace Dali;