2 * Copyright (c) 2022 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/web-engine.h>
21 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-back-forward-list.h>
22 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-back-forward-list-item.h>
23 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-certificate.h>
24 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-console-message.h>
25 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-context.h>
26 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-context-menu.h>
27 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-context-menu-item.h>
28 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-cookie-manager.h>
29 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-form-repost-decision.h>
30 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-frame.h>
31 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-hit-test.h>
32 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-http-auth-handler.h>
33 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-load-error.h>
34 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-policy-decision.h>
35 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-request-interceptor.h>
36 #include <dali/devel-api/adaptor-framework/web-engine/web-engine-security-origin.h>
37 #include <dali/devel-api/adaptor-framework/web-engine/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;
58 class MockWebEngineCookieManager;
62 // Generally only one WebEngine instance exists.
63 // If > 1, a new web engine has been created by CreateWindowSignal.
64 WebEngine* gInstance = nullptr;
65 int gInstanceCount = 0;
66 MockWebEngineContext* gWebEngineContextInstance = nullptr;
67 MockWebEngineCookieManager* gMockWebEngineCookieManager = nullptr;
72 bool OnEvaluteJavaScript();
73 bool OnJavaScriptAlert();
74 bool OnJavaScriptConfirm();
75 bool OnJavaScriptPrompt();
76 bool OnHitTestCreated();
78 bool OnScreenshotCaptured();
79 bool OnVideoPlaying();
80 bool OnGeolocationPermission();
81 bool OnClearHistory();
82 bool OnSecurityOriginAcquired();
83 bool OnStorageUsageAcquired();
84 bool OnFormPasswordAcquired();
85 bool OnDownloadStarted();
86 bool OnMimeOverridden();
87 bool OnRequestIntercepted();
88 bool OnChangesWatch();
89 bool OnPlainTextReceived();
91 static void ConnectToGlobalSignal( bool ( *func )() )
93 Dali::Timer timer = Dali::Timer::New( 0 );
94 timer.TickSignal().Connect( func );
97 static void DisconnectFromGlobalSignal( bool ( *func )() )
99 Dali::Timer timer = Dali::Timer::New( 0 );
100 timer.TickSignal().Disconnect( func );
102 } // namespace anonymous
104 class MockWebEngineContext : public Dali::WebEngineContext
107 MockWebEngineContext()
108 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
112 Dali::WebEngineContext::CacheModel GetCacheModel() const override
117 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
119 mockModel = cacheModel;
122 void SetProxyUri( const std::string& uri ) override
127 std::string GetProxyUri() const override
132 void SetProxyBypassRule(const std::string& proxy, const std::string& bypass) override
134 mockBypassRule = bypass;
137 std::string GetProxyBypassRule() const override
139 return mockBypassRule;
142 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
146 void SetCertificateFilePath( const std::string& certificatePath ) override
148 mockCertificateFilePath = certificatePath;
151 std::string GetCertificateFilePath() const override
153 return mockCertificateFilePath;
156 void DeleteAllWebDatabase() override
160 bool GetWebDatabaseOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback) override
164 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
165 mSecurityOriginAcquiredCallback = callback;
170 bool DeleteWebDatabase(Dali::WebEngineSecurityOrigin& origin) override
175 bool GetWebStorageOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback) override
179 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
180 mSecurityOriginAcquiredCallback = callback;
185 bool GetWebStorageUsageForOrigin(Dali::WebEngineSecurityOrigin& origin, Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback callback) override
189 ConnectToGlobalSignal(&OnStorageUsageAcquired);
190 mStorageUsageAcquiredCallback = callback;
195 void DeleteAllWebStorage() override
199 bool DeleteWebStorage(Dali::WebEngineSecurityOrigin& origin) override
204 void DeleteLocalFileSystem() override
208 void ClearCache() override
212 bool DeleteApplicationCache(Dali::WebEngineSecurityOrigin& origin) override
217 void GetFormPasswordList(Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback callback) override
221 ConnectToGlobalSignal(&OnFormPasswordAcquired);
222 mFormPasswordAcquiredCallback = callback;
226 void RegisterDownloadStartedCallback(Dali::WebEngineContext::WebEngineDownloadStartedCallback callback) override
230 ConnectToGlobalSignal(&OnDownloadStarted);
231 mDownloadStartedCallback = callback;
235 void RegisterMimeOverriddenCallback(Dali::WebEngineContext::WebEngineMimeOverriddenCallback callback) override
239 ConnectToGlobalSignal(&OnMimeOverridden);
240 mMimeOverriddenCallback = callback;
244 void RegisterRequestInterceptedCallback(Dali::WebEngineContext::WebEngineRequestInterceptedCallback callback) override
248 ConnectToGlobalSignal(&OnRequestIntercepted);
249 mRequestInterceptedCallback = callback;
253 void EnableCache( bool cacheEnabled ) override
255 mockCacheEnabled = cacheEnabled;
258 bool IsCacheEnabled() const override
260 return mockCacheEnabled;
263 void SetAppId(const std::string& appID) override
267 bool SetAppVersion(const std::string& appVersion) override
272 void SetApplicationType(const Dali::WebEngineContext::ApplicationType applicationType) override
276 void SetTimeOffset(float timeOffset) override
280 void SetTimeZoneOffset(float timeZoneOffset, float daylightSavingTime) override
284 void RegisterUrlSchemesAsCorsEnabled(const std::vector<std::string>& schemes) override
288 void RegisterJsPluginMimeTypes(const std::vector<std::string>& mimeTypes) override
292 void SetDefaultZoomFactor(float zoomFactor) override
294 mockZoomFactor = zoomFactor;
297 float GetDefaultZoomFactor() const override
299 return mockZoomFactor;
302 bool DeleteAllApplicationCache() override
307 bool DeleteAllWebIndexedDatabase() override
312 void DeleteFormPasswordDataList(const std::vector<std::string>& list) override
316 void DeleteAllFormPasswordData() override
320 void DeleteAllFormCandidateData() override
324 bool FreeUnusedMemory() override
330 Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback mSecurityOriginAcquiredCallback;
331 Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback mStorageUsageAcquiredCallback;
332 Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback mFormPasswordAcquiredCallback;
333 Dali::WebEngineContext::WebEngineDownloadStartedCallback mDownloadStartedCallback;
334 Dali::WebEngineContext::WebEngineMimeOverriddenCallback mMimeOverriddenCallback;
335 Dali::WebEngineContext::WebEngineRequestInterceptedCallback mRequestInterceptedCallback;
338 Dali::WebEngineContext::CacheModel mockModel;
339 std::string mockProxyUri;
340 std::string mockBypassRule;
341 std::string mockCertificateFilePath;
342 bool mockCacheEnabled;
343 float mockZoomFactor;
346 Dali::WebEngineContext* GetContext()
348 if (!gWebEngineContextInstance)
350 gWebEngineContextInstance = new MockWebEngineContext();
352 return gWebEngineContextInstance;
355 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
358 MockWebEngineCookieManager()
359 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
363 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
365 mockCookieAcceptPolicy = policy;
368 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
370 return mockCookieAcceptPolicy;
373 void ClearCookies() override
377 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
381 void ChangesWatch( Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback callback ) override
385 ConnectToGlobalSignal( &OnChangesWatch );
386 mChangesWatchCallback = callback;
391 Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback mChangesWatchCallback;
394 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
397 Dali::WebEngineCookieManager* GetCookieManager()
399 if (!gMockWebEngineCookieManager)
401 gMockWebEngineCookieManager = new MockWebEngineCookieManager();
403 return gMockWebEngineCookieManager;
406 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
409 MockWebEngineBackForwardListItem()
410 : mockUrl( "http://url" ),
411 mockTitle( "title" ),
412 mockOriginalUrl( "http://originalurl" )
416 std::string GetUrl() const override
421 std::string GetTitle() const override
426 std::string GetOriginalUrl() const override
428 return mockOriginalUrl;
433 std::string mockTitle;
434 std::string mockOriginalUrl;
437 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
440 MockWebEngineBackForwardList()
444 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetCurrentItem() const override
446 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
450 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetPreviousItem() const override
452 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
456 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetNextItem() const override
458 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
462 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetItemAtIndex( uint32_t index ) const override
464 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
468 uint32_t GetItemCount() const override
473 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetBackwardItems(int limit) override
475 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
476 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
477 ret.push_back(std::move(item));
481 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetForwardItems(int limit) override
483 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
484 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
485 ret.push_back(std::move(item));
491 class MockWebEngineCertificate : public Dali::WebEngineCertificate
494 MockWebEngineCertificate()
498 void Allow(bool allowed) override
502 bool IsFromMainFrame() const override
507 std::string GetPem() const override
512 bool IsContextSecure() const override
518 class MockWebEngineHttpAuthHandler : public Dali::WebEngineHttpAuthHandler
521 MockWebEngineHttpAuthHandler()
525 std::string GetRealm() const override
530 void Suspend() override
534 void UseCredential(const std::string& user, const std::string& password) override
538 void CancelCredential() override
543 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
546 MockWebEngineFormRepostDecision()
550 void Reply(bool allowed) override {}
553 class MockWebEngineFrame : public Dali::WebEngineFrame
560 bool IsMainFrame() const override
566 class MockWebEnginePolicyDecision : public Dali::WebEnginePolicyDecision
569 MockWebEnginePolicyDecision()
573 std::string GetUrl() const override
575 return "http://test.html";
578 std::string GetCookie() const override
583 Dali::WebEnginePolicyDecision::DecisionType GetDecisionType() const
585 return Dali::WebEnginePolicyDecision::DecisionType::USE;
588 std::string GetResponseMime() const
593 int32_t GetResponseStatusCode() const
598 Dali::WebEnginePolicyDecision::NavigationType GetNavigationType() const
600 return Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
603 Dali::WebEngineFrame& GetFrame() const
605 return *(Dali::WebEngineFrame*)(&mockWebFrame);
608 std::string GetScheme() const
629 MockWebEngineFrame mockWebFrame;
632 class MockWebEngineRequestInterceptor : public WebEngineRequestInterceptor
635 MockWebEngineRequestInterceptor()
639 std::string GetUrl() const override
641 return "http://test.html";
644 Dali::Property::Map GetHeaders() const override
646 return mockHeadersMap;
649 std::string GetMethod() const override
654 bool Ignore() override
659 bool SetResponseStatus(int statusCode, const std::string& customedStatusText) override
664 bool AddResponseHeader(const std::string& fieldName, const std::string& fieldValue) override
666 mockHeadersMap.Add(fieldName, fieldValue);
670 bool AddResponseHeaders(const Dali::Property::Map& headers) override
672 mockHeadersMap.Merge(headers);
676 bool AddResponseBody(const int8_t* body, uint32_t length) override
681 bool AddResponse(const std::string& headers, const int8_t* body, uint32_t length) override
686 bool WriteResponseChunk(const int8_t* chunk, uint32_t length) override
692 Dali::Property::Map mockHeadersMap;
695 class MockWebEngineConsoleMessage : public Dali::WebEngineConsoleMessage
698 MockWebEngineConsoleMessage()
702 std::string GetSource() const override
707 uint32_t GetLine() const override
712 SeverityLevel GetSeverityLevel() const override
714 return SeverityLevel::EMPTY;
717 std::string GetText() const override
719 return "This is a text.";
723 class MockWebEngineLoadError : public Dali::WebEngineLoadError
726 MockWebEngineLoadError(const std::string& url)
731 std::string GetUrl() const override
736 ErrorCode GetCode() const override
738 return ErrorCode::UNKNOWN;
741 std::string GetDescription() const override
743 return "This is an error.";
746 ErrorType GetType() const override
748 return ErrorType::NONE;
755 class MockWebEngineContextMenuItem : public Dali::WebEngineContextMenuItem
758 MockWebEngineContextMenuItem()
762 ItemTag GetTag() const override
764 return ItemTag::NO_ACTION;
767 ItemType GetType() const override
769 return ItemType::ACTION;
772 bool IsEnabled() const override
777 std::string GetLinkUrl() const override
779 return "http://test.html";
782 std::string GetImageUrl() const override
784 return "http://test.jpg";
787 std::string GetTitle() const override
792 std::unique_ptr<Dali::WebEngineContextMenu> GetParentMenu() const override
794 std::unique_ptr<Dali::WebEngineContextMenu> result;
799 class MockWebEngineContextMenu : public Dali::WebEngineContextMenu
802 MockWebEngineContextMenu()
806 uint32_t GetItemCount() const override
811 std::unique_ptr<Dali::WebEngineContextMenuItem> GetItemAt(uint32_t index) const override
813 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
817 std::vector<std::unique_ptr<WebEngineContextMenuItem>> GetItemList() const override
819 std::vector<std::unique_ptr<WebEngineContextMenuItem>> result;
820 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
821 result.push_back(std::move(webitem));
825 bool RemoveItem(WebEngineContextMenuItem& item) override
830 bool AppendItemAsAction(WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled) override
835 bool AppendItem(WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled) override
840 bool SelectItem(WebEngineContextMenuItem& item) override
851 class MockWebEngineHitTest : public Dali::WebEngineHitTest
854 MockWebEngineHitTest()
858 ResultContext GetResultContext() const override
860 return ResultContext::DOCUMENT;
863 std::string GetLinkUri() const override
865 return "http://test.html";
868 std::string GetLinkTitle() const override
873 std::string GetLinkLabel() const override
878 std::string GetImageUri() const override
880 return "http://test.jpg";
883 std::string GetMediaUri() const override
885 return "http://test.mp4";
888 std::string GetTagName() const override
893 std::string GetNodeValue() const override
898 Dali::Property::Map GetAttributes() const override
900 return mockAttributesMap;
903 std::string GetImageFileNameExtension() const override
908 Dali::PixelData GetImageBuffer() override
910 uint8_t* imageData = new uint8_t[16];
911 memset(imageData, 0xff, 16);
912 return Dali::PixelData::New(imageData, 16, 2, 2,
913 Dali::Pixel::Format::RGBA8888,
914 Dali::PixelData::ReleaseFunction::DELETE_ARRAY);
918 mutable Dali::Property::Map mockAttributesMap;
921 class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin
924 MockWebEngineSecurityOrigin()
925 : mockUrl("https://test.html")
926 , mockPotocol("https")
930 std::string GetHost() const
935 std::string GetProtocol() const
942 std::string mockPotocol;
945 class MockWebEngineSettings : public WebEngineSettings
948 MockWebEngineSettings()
949 : mockDefaultFontSize( 16 ),
950 mockJavaScriptEnabled( true ),
951 mockAutoFittingEnabled ( true ),
952 mockPluginsEnabled ( true ),
953 mockPrivateBrowsingEnabled( true ),
954 mockLinkMagnifierEnabled( true ),
955 mockKeypadWithoutUserActionUsed( true ),
956 mockAutofillPasswordFormEnabled( true ),
957 mockFormCandidateDataEnabled( true ),
958 mockTextSelectionEnabled( true ),
959 mockTextAutosizingEnable( true ),
960 mockArrowScrollEnable( true ),
961 mockClipboardEnabled( true ),
962 mockImePanelEnabled( true ),
963 mockImageLoadedAutomatically( true ),
964 mockDefaultTextEncodingName()
968 uint32_t GetDefaultFontSize() const override
970 return mockDefaultFontSize;
973 void SetDefaultFontSize( uint32_t size ) override
975 mockDefaultFontSize = size;
978 bool IsJavaScriptEnabled() const override
980 return mockJavaScriptEnabled;
983 void EnableJavaScript( bool enabled ) override
985 mockJavaScriptEnabled = enabled;
988 bool IsAutoFittingEnabled() const override
990 return mockAutoFittingEnabled;
993 void EnableAutoFitting( bool enabled ) override
995 mockAutoFittingEnabled = enabled;
998 bool ArePluginsEnabled() const override
1000 return mockPluginsEnabled;
1003 void EnablePlugins( bool enabled ) override
1005 mockPluginsEnabled = enabled;
1008 bool IsPrivateBrowsingEnabled() const override
1010 return mockPrivateBrowsingEnabled;
1013 void EnablePrivateBrowsing( bool enabled ) override
1015 mockPrivateBrowsingEnabled = enabled;
1018 bool IsLinkMagnifierEnabled() const override
1020 return mockLinkMagnifierEnabled;
1023 void EnableLinkMagnifier( bool enabled ) override
1025 mockLinkMagnifierEnabled = enabled;
1028 bool IsKeypadWithoutUserActionUsed() const override
1030 return mockKeypadWithoutUserActionUsed;
1033 void UseKeypadWithoutUserAction( bool used ) override
1035 mockKeypadWithoutUserActionUsed = used;
1038 bool IsAutofillPasswordFormEnabled() const override
1040 return mockAutofillPasswordFormEnabled;
1043 void EnableAutofillPasswordForm( bool enabled ) override
1045 mockAutofillPasswordFormEnabled = enabled;
1048 bool IsFormCandidateDataEnabled() const override
1050 return mockFormCandidateDataEnabled;
1053 void EnableFormCandidateData( bool enabled ) override
1055 mockFormCandidateDataEnabled = enabled;
1058 bool IsTextSelectionEnabled() const override
1060 return mockTextSelectionEnabled;
1063 void EnableTextSelection( bool enabled ) override
1065 mockTextSelectionEnabled = enabled;
1068 bool IsTextAutosizingEnabled() const override
1070 return mockTextAutosizingEnable;
1073 void EnableTextAutosizing( bool enabled ) override
1075 mockTextAutosizingEnable = enabled;
1078 bool IsArrowScrollEnabled() const override
1080 return mockArrowScrollEnable;
1083 void EnableArrowScroll( bool enabled ) override
1085 mockArrowScrollEnable = enabled;
1088 bool IsClipboardEnabled() const override
1090 return mockClipboardEnabled;
1093 void EnableClipboard( bool enabled ) override
1095 mockClipboardEnabled = enabled;
1098 bool IsImePanelEnabled() const override
1100 return mockImePanelEnabled;
1103 void EnableImePanel( bool enabled ) override
1105 mockImePanelEnabled = enabled;
1108 bool AreImagesLoadedAutomatically() const override
1110 return mockImageLoadedAutomatically;
1113 void AllowImagesLoadAutomatically( bool automatic ) override
1115 mockImageLoadedAutomatically = automatic;
1118 std::string GetDefaultTextEncodingName() const override
1120 return mockDefaultTextEncodingName;
1123 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
1125 mockDefaultTextEncodingName = defaultTextEncodingName;
1128 void AllowMixedContents( bool allowed ) override
1132 void EnableSpatialNavigation( bool enabled ) override
1136 void EnableWebSecurity( bool enabled ) override
1140 void EnableCacheBuilder( bool enabled ) override
1144 void UseScrollbarThumbFocusNotifications( bool used ) override
1148 void EnableDoNotTrack( bool enabled ) override
1152 void AllowFileAccessFromExternalUrl( bool allowed ) override
1156 void AllowScriptsOpenWindows( bool allowed ) override
1160 bool SetViewportMetaTag(bool enable) override
1165 bool SetForceZoom(bool enable) override
1170 bool IsZoomForced() const override
1175 bool SetTextZoomEnabled(bool enable) override
1180 bool IsTextZoomEnabled() const override
1185 void SetExtraFeature(const std::string& feature, bool enable) override
1189 bool IsExtraFeatureEnabled(const std::string& feature) const override
1195 int mockDefaultFontSize;
1196 bool mockJavaScriptEnabled;
1197 bool mockAutoFittingEnabled;
1198 bool mockPluginsEnabled;
1199 bool mockPrivateBrowsingEnabled;
1200 bool mockLinkMagnifierEnabled;
1201 bool mockKeypadWithoutUserActionUsed;
1202 bool mockAutofillPasswordFormEnabled;
1203 bool mockFormCandidateDataEnabled;
1204 bool mockTextSelectionEnabled;
1205 bool mockTextAutosizingEnable;
1206 bool mockArrowScrollEnable;
1207 bool mockClipboardEnabled;
1208 bool mockImePanelEnabled;
1209 bool mockImageLoadedAutomatically;
1210 std::string mockDefaultTextEncodingName;
1213 class WebEngine: public Dali::BaseObject
1219 , mCurrentPlusOnePos( 0 )
1221 , mEvaluating( false )
1222 , mScrollPosition( 0, 0 )
1223 , mScrollSize( 500, 500 )
1224 , mContentSize( 500, 500 )
1227 if ( gInstanceCount == 1 ) // only first web engine need be saved.
1232 mockWebEngineSettings = new MockWebEngineSettings();
1233 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
1236 virtual ~WebEngine()
1239 if( !gInstanceCount )
1241 gInstance = nullptr;
1244 delete mockWebEngineSettings;
1245 delete mockWebEngineBackForwardList;
1248 Dali::WebEngineSettings& GetSettings() const
1250 return *mockWebEngineSettings;
1253 Dali::WebEngineBackForwardList& GetBackForwardList() const
1255 return *mockWebEngineBackForwardList;
1258 void LoadUrl( const std::string& url )
1261 ConnectToGlobalSignal( &OnLoadUrl );
1264 std::string GetUrl() const
1269 std::string GetTitle() const
1271 return std::string("title");
1274 Dali::PixelData GetFavicon() const
1276 static int testGetFaviconCount = 0;
1277 if (testGetFaviconCount == 0)
1279 testGetFaviconCount++;
1280 uint8_t* faviconData = new uint8_t[16];
1281 memset(faviconData, 0xff, 16);
1282 return Dali::PixelData::New(faviconData, 16, 2, 2,
1283 Dali::Pixel::Format::RGBA8888,
1284 Dali::PixelData::ReleaseFunction::DELETE_ARRAY);
1288 return Dali::PixelData();
1292 bool CanGoForward() const
1294 return mHistory.size() > mCurrentPlusOnePos;
1299 ConnectToGlobalSignal( &OnGoForward );
1302 bool CanGoBack() const
1304 return mCurrentPlusOnePos > 1;
1309 ConnectToGlobalSignal( &OnGoBack );
1312 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1318 ConnectToGlobalSignal( &OnEvaluteJavaScript );
1320 mResultCallbacks.push_back( resultHandler );
1324 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1328 ConnectToGlobalSignal( &OnJavaScriptAlert );
1329 mJavaScriptAlertCallback = callback;
1333 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1337 ConnectToGlobalSignal( &OnJavaScriptConfirm );
1338 mJavaScriptConfirmCallback = callback;
1342 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1346 ConnectToGlobalSignal( &OnJavaScriptPrompt );
1347 mJavaScriptPromptCallback = callback;
1351 std::unique_ptr<Dali::WebEngineHitTest> CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
1353 std::unique_ptr<Dali::WebEngineHitTest> hitTest(new MockWebEngineHitTest());
1357 bool CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
1361 ConnectToGlobalSignal( &OnHitTestCreated );
1362 mHitTestCreatedCallback = callback;
1369 ConnectToGlobalSignal( &OnClearHistory );
1372 std::string GetUserAgent() const
1377 void SetUserAgent( const std::string& userAgent )
1379 mUserAgent = userAgent;
1382 void ScrollBy( int32_t dx, int32_t dy )
1384 mScrollPosition += Dali::Vector2( dx, dy );
1385 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1387 ConnectToGlobalSignal( &OnScrollEdge );
1391 bool ScrollEdgeBy( int32_t dx, int32_t dy )
1393 mScrollPosition += Dali::Vector2( dx, dy );
1394 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1396 ConnectToGlobalSignal( &OnScrollEdge );
1401 void SetScrollPosition( int32_t x, int32_t y )
1403 mScrollPosition.x = x;
1404 mScrollPosition.y = y;
1407 Dali::Vector2 GetScrollPosition() const
1409 return mScrollPosition;
1412 Dali::Vector2 GetScrollSize() const
1417 Dali::Vector2 GetContentSize() const
1419 return mContentSize;
1422 void SetPageZoomFactor(float zoomFactor)
1424 mPageZoomFactor = zoomFactor;
1427 float GetPageZoomFactor() const
1429 return mPageZoomFactor;
1432 void SetTextZoomFactor(float zoomFactor)
1434 mTextZoomFactor = zoomFactor;
1437 float GetTextZoomFactor() const
1439 return mTextZoomFactor;
1442 float GetLoadProgressPercentage() const
1447 void SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1449 mScaleFactor = scaleFactor;
1452 float GetScaleFactor() const
1454 return mScaleFactor;
1457 Dali::Accessibility::Address GetAccessibilityAddress()
1459 return {":9.99", "root"};
1462 Dali::PixelData GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
1464 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
1465 uint8_t* pixel = new uint8_t[ bufferSize ];
1466 memset(pixel, 0xff, bufferSize);
1467 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
1468 Dali::Pixel::Format::RGBA8888,
1469 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1472 bool GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1476 ConnectToGlobalSignal( &OnScreenshotCaptured );
1477 mScreenshotCapturedCallback = callback;
1482 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1486 ConnectToGlobalSignal( &OnVideoPlaying );
1487 mVideoPlayingCallback = callback;
1492 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1496 ConnectToGlobalSignal( &OnGeolocationPermission );
1497 mGeolocationPermissionCallback = callback;
1501 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
1503 return mFrameRenderedSignal;
1506 void RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1508 mPageLoadStartedCallback = callback;
1511 void RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1513 mPageLoadInProgressCallback = callback;
1516 void RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
1518 mPageLoadFinishedCallback = callback;
1521 void RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback)
1523 mPageLoadErrorCallback = callback;
1526 void RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback)
1528 mScrollEdgeReachedCallback = callback;
1531 void RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback)
1533 mUrlChangedCallback = callback;
1536 void RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback)
1538 mFormRepostDecidedCallback = callback;
1541 void RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback)
1543 mConsoleMessageCallback = callback;
1546 void RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback)
1548 mResponsePolicyDecisionCallback = callback;
1551 void RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback)
1553 mNavigationPolicyDecisionCallback = callback;
1556 void RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
1558 mCertificateConfirmCallback = callback;
1561 void RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
1563 mSslCertificateChangedCallback = callback;
1566 void RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
1568 mHttpAuthHandlerCallback = callback;
1571 void RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
1573 mContextMenuShownCallback = callback;
1576 void RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
1578 mContextMenuHiddenCallback = callback;
1581 void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback)
1585 ConnectToGlobalSignal(&OnPlainTextReceived);
1586 mPlainTextReceivedCallback = callback;
1591 std::vector<std::string> mHistory;
1592 size_t mCurrentPlusOnePos;
1593 std::string mUserAgent;
1595 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1598 float mPageZoomFactor;
1599 float mTextZoomFactor;
1602 Dali::Vector2 mScrollPosition;
1603 Dali::Vector2 mScrollSize;
1604 Dali::Vector2 mContentSize;
1605 WebEngineBackForwardList* mockWebEngineBackForwardList;
1606 WebEngineSettings* mockWebEngineSettings;
1608 std::vector<Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback> mResultCallbacks;
1610 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadStartedCallback;
1611 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadInProgressCallback;
1612 Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadFinishedCallback;
1613 Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback mPageLoadErrorCallback;
1614 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback mScrollEdgeReachedCallback;
1615 Dali::WebEnginePlugin::WebEngineUrlChangedCallback mUrlChangedCallback;
1616 Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback mFormRepostDecidedCallback;
1617 Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback;
1618 Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback mConsoleMessageCallback;
1619 Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback mResponsePolicyDecisionCallback;
1620 Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback mNavigationPolicyDecisionCallback;
1621 Dali::WebEnginePlugin::WebEngineCertificateCallback mCertificateConfirmCallback;
1622 Dali::WebEnginePlugin::WebEngineCertificateCallback mSslCertificateChangedCallback;
1623 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback mHttpAuthHandlerCallback;
1624 Dali::WebEnginePlugin::WebEngineContextMenuShownCallback mContextMenuShownCallback;
1625 Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback mContextMenuHiddenCallback;
1626 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1627 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1628 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1629 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1630 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1631 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1632 Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback;
1633 Dali::WebEnginePlugin::PlainTextReceivedCallback mPlainTextReceivedCallback;
1642 DisconnectFromGlobalSignal( &OnGoBack );
1644 if( gInstance && gInstance->CanGoBack() )
1646 gInstance->mCurrentPlusOnePos--;
1653 DisconnectFromGlobalSignal( &OnGoForward );
1655 if( gInstance && gInstance->CanGoForward() )
1657 gInstance->mCurrentPlusOnePos++;
1664 DisconnectFromGlobalSignal( &OnLoadUrl );
1668 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1670 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1672 gInstance->mHistory.push_back( gInstance->mUrl );
1673 gInstance->mCurrentPlusOnePos++;
1674 if (gInstance->mPageLoadStartedCallback)
1676 gInstance->mPageLoadStartedCallback( gInstance->mUrl );
1678 if (gInstance->mPageLoadInProgressCallback)
1680 gInstance->mPageLoadInProgressCallback( gInstance->mUrl );
1682 if (gInstance->mPageLoadFinishedCallback)
1684 gInstance->mPageLoadFinishedCallback( gInstance->mUrl );
1686 if (gInstance->mPageLoadErrorCallback)
1688 std::unique_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1689 gInstance->mPageLoadErrorCallback(std::move(error));
1691 if (gInstance->mUrlChangedCallback)
1693 gInstance->mUrlChangedCallback( "http://new-test" );
1695 if (gInstance->mFormRepostDecidedCallback)
1697 std::unique_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1698 gInstance->mFormRepostDecidedCallback(std::move(repostDecision));
1700 gInstance->mFrameRenderedSignal.Emit();
1701 if (gInstance->mFrameRenderedCallback)
1703 gInstance->mFrameRenderedCallback();
1705 if (gInstance->mConsoleMessageCallback)
1707 std::unique_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1708 gInstance->mConsoleMessageCallback(std::move(message));
1710 if (gInstance->mResponsePolicyDecisionCallback)
1712 std::unique_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1713 gInstance->mResponsePolicyDecisionCallback(std::move(policyDecision));
1715 if (gInstance->mNavigationPolicyDecisionCallback)
1717 std::unique_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1718 gInstance->mNavigationPolicyDecisionCallback(std::move(policyDecision));
1720 if (gInstance->mCertificateConfirmCallback)
1722 std::unique_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1723 gInstance->mCertificateConfirmCallback(std::move(certificate));
1725 if (gInstance->mSslCertificateChangedCallback)
1727 std::unique_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1728 gInstance->mSslCertificateChangedCallback(std::move(sslCertificate));
1730 if (gInstance->mHttpAuthHandlerCallback)
1732 std::unique_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1733 gInstance->mHttpAuthHandlerCallback(std::move(handler));
1735 if (gInstance->mContextMenuShownCallback)
1737 std::unique_ptr<Dali::WebEngineContextMenu> menu(new MockWebEngineContextMenu());
1738 gInstance->mContextMenuShownCallback(std::move(menu));
1740 if (gInstance->mContextMenuHiddenCallback)
1742 std::unique_ptr<Dali::WebEngineContextMenu> hiddenMenu(new MockWebEngineContextMenu());
1743 gInstance->mContextMenuHiddenCallback(std::move(hiddenMenu));
1751 DisconnectFromGlobalSignal( &OnScrollEdge );
1753 if( gInstance && gInstance->mScrollEdgeReachedCallback )
1755 gInstance->mScrollEdgeReachedCallback( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1761 bool OnEvaluteJavaScript()
1763 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1767 for( auto& func : gInstance->mResultCallbacks )
1771 gInstance->mResultCallbacks.clear();
1776 bool OnJavaScriptAlert()
1778 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1781 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1786 bool OnJavaScriptConfirm()
1788 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1791 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1796 bool OnJavaScriptPrompt()
1798 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1801 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1806 bool OnScreenshotCaptured()
1808 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1811 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1812 memset(pixel, 0xff, 2 * 2 * 4);
1813 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1814 Dali::Pixel::Format::RGBA8888,
1815 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1816 gInstance->mScreenshotCapturedCallback( data );
1821 bool OnVideoPlaying()
1823 DisconnectFromGlobalSignal( &OnVideoPlaying );
1826 gInstance->mVideoPlayingCallback( true );
1831 bool OnGeolocationPermission()
1833 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1836 gInstance->mGeolocationPermissionCallback( "", "" );
1841 bool OnHitTestCreated()
1843 DisconnectFromGlobalSignal(&OnHitTestCreated);
1846 std::unique_ptr<Dali::WebEngineHitTest> test(new MockWebEngineHitTest());
1847 gInstance->mHitTestCreatedCallback(std::move(test));
1852 bool OnClearHistory()
1854 DisconnectFromGlobalSignal( &OnClearHistory );
1856 if( gInstance && gInstance->mCurrentPlusOnePos )
1858 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1859 std::vector< std::string >().swap( gInstance->mHistory );
1860 gInstance->mHistory.push_back( url );
1861 gInstance->mCurrentPlusOnePos = 1;
1866 bool OnSecurityOriginAcquired()
1868 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1869 if (gWebEngineContextInstance)
1871 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1872 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1873 securityOriginList.push_back(std::move(origin));
1874 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1879 bool OnStorageUsageAcquired()
1881 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1882 if (gWebEngineContextInstance)
1884 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1889 bool OnFormPasswordAcquired()
1891 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1892 if (gWebEngineContextInstance)
1894 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1895 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1896 data->url = "http://test.html";
1897 data->useFingerprint = false;
1898 formPasswordList.push_back(std::move(data));
1899 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1904 bool OnDownloadStarted()
1906 DisconnectFromGlobalSignal(&OnDownloadStarted);
1907 if (gWebEngineContextInstance)
1909 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1914 bool OnMimeOverridden()
1916 DisconnectFromGlobalSignal(&OnMimeOverridden);
1917 if (gWebEngineContextInstance)
1919 std::string newMime;
1920 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1925 bool OnRequestIntercepted()
1927 DisconnectFromGlobalSignal(&OnRequestIntercepted);
1928 if (gWebEngineContextInstance)
1930 Dali::WebEngineRequestInterceptorPtr interceptor = new MockWebEngineRequestInterceptor();
1931 gWebEngineContextInstance->mRequestInterceptedCallback(interceptor);
1936 bool OnChangesWatch()
1938 DisconnectFromGlobalSignal(&OnChangesWatch);
1939 if (gMockWebEngineCookieManager)
1941 gMockWebEngineCookieManager->mChangesWatchCallback();
1946 bool OnPlainTextReceived()
1948 DisconnectFromGlobalSignal(&OnPlainTextReceived);
1951 std::string dummyResultText;
1952 gInstance->mPlainTextReceivedCallback(dummyResultText);
1959 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1961 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1962 BaseObject& handle = webEngine.GetBaseObject();
1963 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1966 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1968 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1969 const BaseObject& handle = webEngine.GetBaseObject();
1970 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1973 } // namespace Adaptor
1975 } // namespace Internal
1977 // Dali::WebEngine Implementation
1978 WebEngine::WebEngine()
1982 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1983 : BaseHandle( internal )
1987 WebEngine::~WebEngine()
1991 WebEngine WebEngine::New()
1993 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1995 return WebEngine( baseObject );
1998 Dali::WebEngineContext* WebEngine::GetContext()
2000 return Internal::Adaptor::GetContext();
2003 Dali::WebEngineCookieManager* WebEngine::GetCookieManager()
2005 return Internal::Adaptor::GetCookieManager();
2008 WebEngine::WebEngine( const WebEngine& WebEngine )
2009 : BaseHandle( WebEngine )
2013 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
2015 BaseHandle::operator=( webEngine );
2019 WebEngine WebEngine::DownCast( BaseHandle handle )
2021 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
2024 void WebEngine::Create( uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId )
2028 void WebEngine::Create( uint32_t width, uint32_t height, uint32_t argc, char** argv )
2032 void WebEngine::Destroy()
2036 WebEngineSettings& WebEngine::GetSettings() const
2038 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
2041 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
2043 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
2046 void WebEngine::LoadUrl( const std::string& url )
2048 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
2051 std::string WebEngine::GetTitle() const
2053 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
2056 Dali::PixelData WebEngine::GetFavicon() const
2058 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
2061 std::string WebEngine::GetUrl() const
2063 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
2066 NativeImageSourcePtr WebEngine::GetNativeImageSource()
2069 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
2073 void WebEngine::LoadHtmlString( const std::string& htmlString )
2077 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
2082 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
2087 void WebEngine::Reload()
2091 bool WebEngine::ReloadWithoutCache()
2096 void WebEngine::StopLoading()
2100 void WebEngine::Suspend()
2104 void WebEngine::Resume()
2108 void WebEngine::SuspendNetworkLoading()
2112 void WebEngine::ResumeNetworkLoading()
2116 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
2121 bool WebEngine::RemoveCustomHeader(const std::string& name)
2126 uint32_t WebEngine::StartInspectorServer(uint32_t port)
2131 bool WebEngine::StopInspectorServer()
2136 bool WebEngine::CanGoForward()
2138 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
2141 void WebEngine::GoForward()
2143 Internal::Adaptor::GetImplementation( *this ).GoForward();
2146 bool WebEngine::CanGoBack()
2148 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
2151 void WebEngine::GoBack()
2153 Internal::Adaptor::GetImplementation( *this ).GoBack();
2156 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
2158 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
2161 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
2165 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
2167 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
2170 void WebEngine::JavaScriptAlertReply()
2174 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
2176 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
2179 void WebEngine::JavaScriptConfirmReply( bool confirmed )
2183 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
2185 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
2188 void WebEngine::JavaScriptPromptReply( const std::string& result )
2192 std::unique_ptr<Dali::WebEngineHitTest> WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
2194 return Internal::Adaptor::GetImplementation(*this).CreateHitTest(x, y, mode);
2197 bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
2199 return Internal::Adaptor::GetImplementation(*this).CreateHitTestAsynchronously(x, y, mode, callback);
2202 void WebEngine::ClearAllTilesResources()
2206 void WebEngine::ClearHistory()
2208 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
2211 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
2213 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
2216 float WebEngine::GetScaleFactor() const
2218 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
2221 void WebEngine::ActivateAccessibility(bool activated)
2225 Accessibility::Address WebEngine::GetAccessibilityAddress()
2227 return Internal::Adaptor::GetImplementation(*this).GetAccessibilityAddress();
2230 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
2235 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
2239 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
2241 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
2244 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
2246 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
2249 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
2251 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
2254 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
2256 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
2259 std::string WebEngine::GetUserAgent() const
2261 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
2264 void WebEngine::SetUserAgent( const std::string& userAgent )
2266 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
2269 void WebEngine::ScrollBy( int32_t dx, int32_t dy )
2271 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
2274 bool WebEngine::ScrollEdgeBy( int32_t dx, int32_t dy )
2276 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
2279 void WebEngine::SetScrollPosition( int32_t x, int32_t y )
2281 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
2284 Dali::Vector2 WebEngine::GetScrollPosition() const
2286 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
2289 Dali::Vector2 WebEngine::GetScrollSize() const
2291 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
2294 Dali::Vector2 WebEngine::GetContentSize() const
2296 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
2299 void WebEngine::SetSize( uint32_t width, uint32_t height )
2303 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
2307 void WebEngine::ClearTilesWhenHidden(bool cleared)
2311 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
2315 void WebEngine::EnableCursorByClient(bool enabled)
2319 std::string WebEngine::GetSelectedText() const
2324 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
2329 bool WebEngine::SendKeyEvent( const KeyEvent& event )
2334 bool WebEngine::SendHoverEvent( const HoverEvent& event )
2339 bool WebEngine::SendWheelEvent( const WheelEvent& event )
2344 void WebEngine::SetFocus( bool focused )
2348 void WebEngine::SetPageZoomFactor(float zoomFactor)
2350 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
2353 float WebEngine::GetPageZoomFactor() const
2355 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
2358 void WebEngine::SetTextZoomFactor(float zoomFactor)
2360 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
2363 float WebEngine::GetTextZoomFactor() const
2365 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
2368 float WebEngine::GetLoadProgressPercentage() const
2370 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
2373 void WebEngine::UpdateDisplayArea( Dali::Rect< int32_t > displayArea )
2377 void WebEngine::EnableVideoHole( bool enabled )
2381 void WebEngine::EnableMouseEvents( bool enabled )
2385 void WebEngine::EnableKeyEvents( bool enabled )
2389 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
2391 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
2394 void WebEngine::RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2396 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadStartedCallback(callback);
2399 void WebEngine::RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2401 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadInProgressCallback(callback);
2404 void WebEngine::RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
2406 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadFinishedCallback(callback);
2409 void WebEngine::RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback)
2411 Internal::Adaptor::GetImplementation( *this ).RegisterPageLoadErrorCallback(callback);
2414 void WebEngine::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback)
2416 Internal::Adaptor::GetImplementation( *this ).RegisterScrollEdgeReachedCallback(callback);
2419 void WebEngine::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback)
2421 Internal::Adaptor::GetImplementation( *this ).RegisterUrlChangedCallback(callback);
2424 void WebEngine::RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback)
2426 Internal::Adaptor::GetImplementation( *this ).RegisterFormRepostDecidedCallback(callback);
2429 void WebEngine::RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback)
2431 Internal::Adaptor::GetImplementation( *this ).RegisterConsoleMessageReceivedCallback(callback);
2434 void WebEngine::RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback)
2436 Internal::Adaptor::GetImplementation( *this ).RegisterResponsePolicyDecidedCallback(callback);
2439 void WebEngine::RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback)
2441 Internal::Adaptor::GetImplementation(*this).RegisterNavigationPolicyDecidedCallback(callback);
2444 void WebEngine::RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
2446 Internal::Adaptor::GetImplementation( *this ).RegisterCertificateConfirmedCallback(callback);
2449 void WebEngine::RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
2451 Internal::Adaptor::GetImplementation( *this ).RegisterSslCertificateChangedCallback(callback);
2454 void WebEngine::RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
2456 Internal::Adaptor::GetImplementation( *this ).RegisterHttpAuthHandlerCallback(callback);
2459 void WebEngine::RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
2461 Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuShownCallback(callback);
2464 void WebEngine::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
2466 Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuHiddenCallback(callback);
2469 void WebEngine::GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback)
2471 Internal::Adaptor::GetImplementation(*this).GetPlainTextAsynchronously(callback);
2474 } // namespace Dali;