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::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 RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback)
1549 mNavigationPolicyDecisionCallback = callback;
1552 void RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
1554 mCertificateConfirmCallback = callback;
1557 void RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
1559 mSslCertificateChangedCallback = callback;
1562 void RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
1564 mHttpAuthHandlerCallback = callback;
1567 void RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
1569 mContextMenuShownCallback = callback;
1572 void RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
1574 mContextMenuHiddenCallback = callback;
1577 void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback)
1581 ConnectToGlobalSignal(&OnPlainTextReceived);
1582 mPlainTextReceivedCallback = callback;
1587 std::vector<std::string> mHistory;
1588 size_t mCurrentPlusOnePos;
1589 std::string mUserAgent;
1591 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1594 float mPageZoomFactor;
1595 float mTextZoomFactor;
1598 Dali::Vector2 mScrollPosition;
1599 Dali::Vector2 mScrollSize;
1600 Dali::Vector2 mContentSize;
1601 WebEngineBackForwardList* mockWebEngineBackForwardList;
1602 WebEngineContext* mockWebEngineContext;
1603 WebEngineCookieManager* mockWebEngineCookieManager;
1604 WebEngineSettings* mockWebEngineSettings;
1606 std::vector<Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback> mResultCallbacks;
1608 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadStartedCallback;
1609 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadInProgressCallback;
1610 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadFinishedCallback;
1611 Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback mPageLoadErrorCallback;
1612 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback mScrollEdgeReachedCallback;
1613 Dali::WebEnginePlugin::WebEngineUrlChangedCallback mUrlChangedCallback;
1614 Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback mFormRepostDecidedCallback;
1615 Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback;
1616 Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback mConsoleMessageCallback;
1617 Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback mResponsePolicyDecisionCallback;
1618 Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback mNavigationPolicyDecisionCallback;
1619 Dali::WebEnginePlugin::WebEngineCertificateCallback mCertificateConfirmCallback;
1620 Dali::WebEnginePlugin::WebEngineCertificateCallback mSslCertificateChangedCallback;
1621 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback mHttpAuthHandlerCallback;
1622 Dali::WebEnginePlugin::WebEngineContextMenuShownCallback mContextMenuShownCallback;
1623 Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback mContextMenuHiddenCallback;
1624 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1625 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1626 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1627 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1628 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1629 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1630 Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback;
1631 Dali::WebEnginePlugin::PlainTextReceivedCallback mPlainTextReceivedCallback;
1640 DisconnectFromGlobalSignal( &OnGoBack );
1642 if( gInstance && gInstance->CanGoBack() )
1644 gInstance->mCurrentPlusOnePos--;
1651 DisconnectFromGlobalSignal( &OnGoForward );
1653 if( gInstance && gInstance->CanGoForward() )
1655 gInstance->mCurrentPlusOnePos++;
1662 DisconnectFromGlobalSignal( &OnLoadUrl );
1666 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1668 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1670 gInstance->mHistory.push_back( gInstance->mUrl );
1671 gInstance->mCurrentPlusOnePos++;
1672 if (gInstance->mPageLoadStartedCallback)
1674 gInstance->mPageLoadStartedCallback( gInstance->mUrl );
1676 if (gInstance->mPageLoadInProgressCallback)
1678 gInstance->mPageLoadInProgressCallback( gInstance->mUrl );
1680 if (gInstance->mPageLoadFinishedCallback)
1682 gInstance->mPageLoadFinishedCallback( gInstance->mUrl );
1684 if (gInstance->mPageLoadErrorCallback)
1686 std::unique_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1687 gInstance->mPageLoadErrorCallback(std::move(error));
1689 if (gInstance->mUrlChangedCallback)
1691 gInstance->mUrlChangedCallback( "http://new-test" );
1693 if (gInstance->mFormRepostDecidedCallback)
1695 std::unique_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1696 gInstance->mFormRepostDecidedCallback(std::move(repostDecision));
1698 gInstance->mFrameRenderedSignal.Emit();
1699 if (gInstance->mFrameRenderedCallback)
1701 gInstance->mFrameRenderedCallback();
1703 if (gInstance->mConsoleMessageCallback)
1705 std::unique_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1706 gInstance->mConsoleMessageCallback(std::move(message));
1708 if (gInstance->mResponsePolicyDecisionCallback)
1710 std::unique_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1711 gInstance->mResponsePolicyDecisionCallback(std::move(policyDecision));
1713 if (gInstance->mNavigationPolicyDecisionCallback)
1715 std::unique_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1716 gInstance->mNavigationPolicyDecisionCallback(std::move(policyDecision));
1718 if (gInstance->mCertificateConfirmCallback)
1720 std::unique_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1721 gInstance->mCertificateConfirmCallback(std::move(certificate));
1723 if (gInstance->mSslCertificateChangedCallback)
1725 std::unique_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1726 gInstance->mSslCertificateChangedCallback(std::move(sslCertificate));
1728 if (gInstance->mHttpAuthHandlerCallback)
1730 std::unique_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1731 gInstance->mHttpAuthHandlerCallback(std::move(handler));
1733 if (gInstance->mContextMenuShownCallback)
1735 std::unique_ptr<Dali::WebEngineContextMenu> menu(new MockWebEngineContextMenu());
1736 gInstance->mContextMenuShownCallback(std::move(menu));
1738 if (gInstance->mContextMenuHiddenCallback)
1740 std::unique_ptr<Dali::WebEngineContextMenu> hiddenMenu(new MockWebEngineContextMenu());
1741 gInstance->mContextMenuHiddenCallback(std::move(hiddenMenu));
1749 DisconnectFromGlobalSignal( &OnScrollEdge );
1751 if( gInstance && gInstance->mScrollEdgeReachedCallback )
1753 gInstance->mScrollEdgeReachedCallback( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1759 bool OnEvaluteJavaScript()
1761 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1765 for( auto& func : gInstance->mResultCallbacks )
1769 gInstance->mResultCallbacks.clear();
1774 bool OnJavaScriptAlert()
1776 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1779 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1784 bool OnJavaScriptConfirm()
1786 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1789 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1794 bool OnJavaScriptPrompt()
1796 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1799 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1804 bool OnScreenshotCaptured()
1806 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1809 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1810 memset(pixel, 0xff, 2 * 2 * 4);
1811 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1812 Dali::Pixel::Format::RGBA8888,
1813 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1814 gInstance->mScreenshotCapturedCallback( data );
1819 bool OnVideoPlaying()
1821 DisconnectFromGlobalSignal( &OnVideoPlaying );
1824 gInstance->mVideoPlayingCallback( true );
1829 bool OnGeolocationPermission()
1831 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1834 gInstance->mGeolocationPermissionCallback( "", "" );
1839 bool OnHitTestCreated()
1841 DisconnectFromGlobalSignal(&OnHitTestCreated);
1844 std::unique_ptr<Dali::WebEngineHitTest> test(new MockWebEngineHitTest());
1845 gInstance->mHitTestCreatedCallback(std::move(test));
1850 bool OnClearHistory()
1852 DisconnectFromGlobalSignal( &OnClearHistory );
1854 if( gInstance && gInstance->mCurrentPlusOnePos )
1856 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1857 std::vector< std::string >().swap( gInstance->mHistory );
1858 gInstance->mHistory.push_back( url );
1859 gInstance->mCurrentPlusOnePos = 1;
1864 bool OnSecurityOriginAcquired()
1866 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1867 if (gWebEngineContextInstance)
1869 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1870 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1871 securityOriginList.push_back(std::move(origin));
1872 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1877 bool OnStorageUsageAcquired()
1879 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1880 if (gWebEngineContextInstance)
1882 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1887 bool OnFormPasswordAcquired()
1889 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1890 if (gWebEngineContextInstance)
1892 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1893 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1894 data->url = "http://test.html";
1895 data->useFingerprint = false;
1896 formPasswordList.push_back(std::move(data));
1897 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1902 bool OnDownloadStarted()
1904 DisconnectFromGlobalSignal(&OnDownloadStarted);
1905 if (gWebEngineContextInstance)
1907 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1912 bool OnMimeOverridden()
1914 DisconnectFromGlobalSignal(&OnMimeOverridden);
1915 if (gWebEngineContextInstance)
1917 std::string newMime;
1918 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1923 bool OnRequestIntercepted()
1925 DisconnectFromGlobalSignal(&OnRequestIntercepted);
1926 if (gWebEngineContextInstance)
1928 Dali::WebEngineRequestInterceptorPtr interceptor = new MockWebEngineRequestInterceptor();
1929 gWebEngineContextInstance->mRequestInterceptedCallback(interceptor);
1934 bool OnChangesWatch()
1936 DisconnectFromGlobalSignal( &OnChangesWatch );
1940 MockWebEngineCookieManager* temp = (MockWebEngineCookieManager *)(&(gInstance->GetCookieManager()));
1943 temp->mChangesWatchCallback();
1950 bool OnPlainTextReceived()
1952 DisconnectFromGlobalSignal(&OnPlainTextReceived);
1955 std::string dummyResultText;
1956 gInstance->mPlainTextReceivedCallback(dummyResultText);
1963 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1965 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1966 BaseObject& handle = webEngine.GetBaseObject();
1967 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1970 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1972 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1973 const BaseObject& handle = webEngine.GetBaseObject();
1974 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1977 } // namespace Adaptor
1979 } // namespace Internal
1981 // Dali::WebEngine Implementation
1982 WebEngine::WebEngine()
1986 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1987 : BaseHandle( internal )
1991 WebEngine::~WebEngine()
1995 WebEngine WebEngine::New()
1997 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1999 return WebEngine( baseObject );
2002 WebEngine::WebEngine( const WebEngine& WebEngine )
2003 : BaseHandle( WebEngine )
2007 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
2009 BaseHandle::operator=( webEngine );
2013 WebEngine WebEngine::DownCast( BaseHandle handle )
2015 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
2018 void WebEngine::Create( uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId )
2022 void WebEngine::Create( uint32_t width, uint32_t height, uint32_t argc, char** argv )
2026 void WebEngine::Destroy()
2030 WebEngineSettings& WebEngine::GetSettings() const
2032 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
2035 WebEngineContext& WebEngine::GetContext() const
2037 return Internal::Adaptor::GetImplementation( *this ).GetContext();
2040 WebEngineCookieManager& WebEngine::GetCookieManager() const
2042 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
2045 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
2047 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
2050 void WebEngine::LoadUrl( const std::string& url )
2052 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
2055 std::string WebEngine::GetTitle() const
2057 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
2060 Dali::PixelData WebEngine::GetFavicon() const
2062 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
2065 std::string WebEngine::GetUrl() const
2067 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
2070 NativeImageSourcePtr WebEngine::GetNativeImageSource()
2073 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
2077 void WebEngine::LoadHtmlString( const std::string& htmlString )
2081 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
2086 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
2091 void WebEngine::Reload()
2095 bool WebEngine::ReloadWithoutCache()
2100 void WebEngine::StopLoading()
2104 void WebEngine::Suspend()
2108 void WebEngine::Resume()
2112 void WebEngine::SuspendNetworkLoading()
2116 void WebEngine::ResumeNetworkLoading()
2120 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
2125 bool WebEngine::RemoveCustomHeader(const std::string& name)
2130 uint32_t WebEngine::StartInspectorServer(uint32_t port)
2135 bool WebEngine::StopInspectorServer()
2140 bool WebEngine::CanGoForward()
2142 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
2145 void WebEngine::GoForward()
2147 Internal::Adaptor::GetImplementation( *this ).GoForward();
2150 bool WebEngine::CanGoBack()
2152 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
2155 void WebEngine::GoBack()
2157 Internal::Adaptor::GetImplementation( *this ).GoBack();
2160 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
2162 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
2165 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
2169 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
2171 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
2174 void WebEngine::JavaScriptAlertReply()
2178 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
2180 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
2183 void WebEngine::JavaScriptConfirmReply( bool confirmed )
2187 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
2189 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
2192 void WebEngine::JavaScriptPromptReply( const std::string& result )
2196 std::unique_ptr<Dali::WebEngineHitTest> WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
2198 return Internal::Adaptor::GetImplementation(*this).CreateHitTest(x, y, mode);
2201 bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
2203 return Internal::Adaptor::GetImplementation(*this).CreateHitTestAsynchronously(x, y, mode, callback);
2206 void WebEngine::ClearAllTilesResources()
2210 void WebEngine::ClearHistory()
2212 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
2215 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
2217 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
2220 float WebEngine::GetScaleFactor() const
2222 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
2225 void WebEngine::ActivateAccessibility(bool activated)
2229 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
2234 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
2238 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
2240 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
2243 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
2245 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
2248 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
2250 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
2253 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
2255 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
2258 std::string WebEngine::GetUserAgent() const
2260 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
2263 void WebEngine::SetUserAgent( const std::string& userAgent )
2265 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
2268 void WebEngine::ScrollBy( int32_t dx, int32_t dy )
2270 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
2273 bool WebEngine::ScrollEdgeBy( int32_t dx, int32_t dy )
2275 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
2278 void WebEngine::SetScrollPosition( int32_t x, int32_t y )
2280 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
2283 Dali::Vector2 WebEngine::GetScrollPosition() const
2285 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
2288 Dali::Vector2 WebEngine::GetScrollSize() const
2290 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
2293 Dali::Vector2 WebEngine::GetContentSize() const
2295 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
2298 void WebEngine::SetSize( uint32_t width, uint32_t height )
2302 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
2306 void WebEngine::ClearTilesWhenHidden(bool cleared)
2310 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
2314 void WebEngine::EnableCursorByClient(bool enabled)
2318 std::string WebEngine::GetSelectedText() const
2323 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
2328 bool WebEngine::SendKeyEvent( const KeyEvent& event )
2333 bool WebEngine::SendHoverEvent( const HoverEvent& event )
2338 bool WebEngine::SendWheelEvent( const WheelEvent& event )
2343 void WebEngine::SetFocus( bool focused )
2347 void WebEngine::SetPageZoomFactor(float zoomFactor)
2349 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
2352 float WebEngine::GetPageZoomFactor() const
2354 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
2357 void WebEngine::SetTextZoomFactor(float zoomFactor)
2359 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
2362 float WebEngine::GetTextZoomFactor() const
2364 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
2367 float WebEngine::GetLoadProgressPercentage() const
2369 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
2372 void WebEngine::UpdateDisplayArea( Dali::Rect< int32_t > displayArea )
2376 void WebEngine::EnableVideoHole( bool enabled )
2380 void WebEngine::EnableMouseEvents( bool enabled )
2384 void WebEngine::EnableKeyEvents( bool enabled )
2388 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
2390 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
2393 void WebEngine::RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2395 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadStartedCallback(callback);
2398 void WebEngine::RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2400 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadInProgressCallback(callback);
2403 void WebEngine::RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2405 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadFinishedCallback(callback);
2408 void WebEngine::RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback)
2410 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadErrorCallback(callback);
2413 void WebEngine::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback)
2415 Internal::Adaptor::GetImplementation( *this ).RegisterScrollEdgeReachedCallback(callback);
2418 void WebEngine::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback)
2420 Internal::Adaptor::GetImplementation( *this ).RegisterUrlChangedCallback(callback);
2423 void WebEngine::RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback)
2425 Internal::Adaptor::GetImplementation( *this ).RegisterFormRepostDecidedCallback(callback);
2428 void WebEngine::RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback)
2430 Internal::Adaptor::GetImplementation( *this ).RegisterConsoleMessageReceivedCallback(callback);
2433 void WebEngine::RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback)
2435 Internal::Adaptor::GetImplementation( *this ).RegisterResponsePolicyDecidedCallback(callback);
2438 void WebEngine::RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback)
2440 Internal::Adaptor::GetImplementation(*this).RegisterNavigationPolicyDecidedCallback(callback);
2443 void WebEngine::RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
2445 Internal::Adaptor::GetImplementation( *this ).RegisterCertificateConfirmedCallback(callback);
2448 void WebEngine::RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
2450 Internal::Adaptor::GetImplementation( *this ).RegisterSslCertificateChangedCallback(callback);
2453 void WebEngine::RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
2455 Internal::Adaptor::GetImplementation( *this ).RegisterHttpAuthHandlerCallback(callback);
2458 void WebEngine::RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
2460 Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuShownCallback(callback);
2463 void WebEngine::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
2465 Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuHiddenCallback(callback);
2468 void WebEngine::GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback)
2470 Internal::Adaptor::GetImplementation(*this).GetPlainTextAsynchronously(callback);
2473 } // namespace Dali;