2 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "toolkit-timer.h"
20 #include <dali/devel-api/adaptor-framework/web-engine.h>
21 #include <dali/devel-api/adaptor-framework/web-engine-back-forward-list.h>
22 #include <dali/devel-api/adaptor-framework/web-engine-back-forward-list-item.h>
23 #include <dali/devel-api/adaptor-framework/web-engine-certificate.h>
24 #include <dali/devel-api/adaptor-framework/web-engine-console-message.h>
25 #include <dali/devel-api/adaptor-framework/web-engine-context.h>
26 #include <dali/devel-api/adaptor-framework/web-engine-context-menu.h>
27 #include <dali/devel-api/adaptor-framework/web-engine-context-menu-item.h>
28 #include <dali/devel-api/adaptor-framework/web-engine-cookie-manager.h>
29 #include <dali/devel-api/adaptor-framework/web-engine-form-repost-decision.h>
30 #include <dali/devel-api/adaptor-framework/web-engine-frame.h>
31 #include <dali/devel-api/adaptor-framework/web-engine-hit-test.h>
32 #include <dali/devel-api/adaptor-framework/web-engine-http-auth-handler.h>
33 #include <dali/devel-api/adaptor-framework/web-engine-load-error.h>
34 #include <dali/devel-api/adaptor-framework/web-engine-policy-decision.h>
35 #include <dali/devel-api/adaptor-framework/web-engine-request-interceptor.h>
36 #include <dali/devel-api/adaptor-framework/web-engine-security-origin.h>
37 #include <dali/devel-api/adaptor-framework/web-engine-settings.h>
38 #include <dali/public-api/adaptor-framework/native-image-source.h>
39 #include <dali/public-api/images/pixel-data.h>
40 #include <dali/public-api/object/any.h>
41 #include <dali/public-api/object/base-object.h>
42 #include <dali/public-api/object/property-map.h>
45 #include <toolkit-application.h>
57 class MockWebEngineContext;
62 // Generally only one WebEngine instance exists.
63 // If > 1, a new web engine has been created by CreateWindowSignal.
64 static WebEngine* gInstance = nullptr;
65 static int gInstanceCount = 0;
66 static MockWebEngineContext* gWebEngineContextInstance = nullptr;
71 bool OnEvaluteJavaScript();
72 bool OnJavaScriptAlert();
73 bool OnJavaScriptConfirm();
74 bool OnJavaScriptPrompt();
75 bool OnHitTestCreated();
77 bool OnScreenshotCaptured();
78 bool OnVideoPlaying();
79 bool OnGeolocationPermission();
80 bool OnClearHistory();
81 bool OnSecurityOriginAcquired();
82 bool OnStorageUsageAcquired();
83 bool OnFormPasswordAcquired();
84 bool OnDownloadStarted();
85 bool OnMimeOverridden();
86 bool OnChangesWatch();
88 static void ConnectToGlobalSignal( bool ( *func )() )
90 Dali::Timer timer = Dali::Timer::New( 0 );
91 timer.TickSignal().Connect( func );
94 static void DisconnectFromGlobalSignal( bool ( *func )() )
96 Dali::Timer timer = Dali::Timer::New( 0 );
97 timer.TickSignal().Disconnect( func );
99 } // namespace anonymous
101 class MockWebEngineContext : public Dali::WebEngineContext
104 MockWebEngineContext()
105 : mockModel( Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER )
109 Dali::WebEngineContext::CacheModel GetCacheModel() const override
114 void SetCacheModel( Dali::WebEngineContext::CacheModel cacheModel ) override
116 mockModel = cacheModel;
119 void SetProxyUri( const std::string& uri ) override
123 void SetDefaultProxyAuth( const std::string& username, const std::string& password ) override
127 void SetCertificateFilePath( const std::string& certificatePath ) override
131 void DeleteAllWebDatabase() override
135 bool GetWebDatabaseOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
139 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
140 mSecurityOriginAcquiredCallback = callback;
145 bool DeleteWebDatabase(Dali::WebEngineSecurityOrigin& origin)
150 bool GetWebStorageOrigins(Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback callback)
154 ConnectToGlobalSignal(&OnSecurityOriginAcquired);
155 mSecurityOriginAcquiredCallback = callback;
160 bool GetWebStorageUsageForOrigin(Dali::WebEngineSecurityOrigin& origin, Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback callback)
164 ConnectToGlobalSignal(&OnStorageUsageAcquired);
165 mStorageUsageAcquiredCallback = callback;
170 void DeleteAllWebStorage() override
174 bool DeleteWebStorageOrigin(Dali::WebEngineSecurityOrigin& origin)
179 void DeleteLocalFileSystem() override
183 void DisableCache( bool cacheDisabled ) override
187 void ClearCache() override
191 bool DeleteApplicationCache(Dali::WebEngineSecurityOrigin& origin)
196 void GetFormPasswordList(Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback callback)
200 ConnectToGlobalSignal(&OnFormPasswordAcquired);
201 mFormPasswordAcquiredCallback = callback;
205 void RegisterDownloadStartedCallback(Dali::WebEngineContext::WebEngineDownloadStartedCallback callback)
209 ConnectToGlobalSignal(&OnDownloadStarted);
210 mDownloadStartedCallback = callback;
214 void RegisterMimeOverriddenCallback(Dali::WebEngineContext::WebEngineMimeOverriddenCallback callback)
218 ConnectToGlobalSignal(&OnMimeOverridden);
219 mMimeOverriddenCallback = callback;
224 Dali::WebEngineContext::WebEngineSecurityOriginAcquiredCallback mSecurityOriginAcquiredCallback;
225 Dali::WebEngineContext::WebEngineStorageUsageAcquiredCallback mStorageUsageAcquiredCallback;
226 Dali::WebEngineContext::WebEngineFormPasswordAcquiredCallback mFormPasswordAcquiredCallback;
227 Dali::WebEngineContext::WebEngineDownloadStartedCallback mDownloadStartedCallback;
228 Dali::WebEngineContext::WebEngineMimeOverriddenCallback mMimeOverriddenCallback;
231 Dali::WebEngineContext::CacheModel mockModel;
234 class MockWebEngineCookieManager : public Dali::WebEngineCookieManager
237 MockWebEngineCookieManager()
238 : mockCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY )
242 void SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy policy ) override
244 mockCookieAcceptPolicy = policy;
247 Dali::WebEngineCookieManager::CookieAcceptPolicy GetCookieAcceptPolicy() const override
249 return mockCookieAcceptPolicy;
252 void ClearCookies() override
256 void SetPersistentStorage( const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage ) override
260 void ChangesWatch( Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback callback ) override
264 ConnectToGlobalSignal( &OnChangesWatch );
265 mChangesWatchCallback = callback;
270 Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback mChangesWatchCallback;
273 Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy;
276 class MockWebEngineBackForwardListItem : public Dali::WebEngineBackForwardListItem
279 MockWebEngineBackForwardListItem()
280 : mockUrl( "http://url" ),
281 mockTitle( "title" ),
282 mockOriginalUrl( "http://originalurl" )
286 std::string GetUrl() const override
291 std::string GetTitle() const override
296 std::string GetOriginalUrl() const override
298 return mockOriginalUrl;
303 std::string mockTitle;
304 std::string mockOriginalUrl;
307 class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList
310 MockWebEngineBackForwardList()
314 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetCurrentItem() const override
316 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
320 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetPreviousItem() const override
322 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
326 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetNextItem() const override
328 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
332 std::unique_ptr<Dali::WebEngineBackForwardListItem> GetItemAtIndex( uint32_t index ) const override
334 std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(new MockWebEngineBackForwardListItem());
338 uint32_t GetItemCount() const override
343 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetBackwardItems(int limit) override
345 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
346 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
347 ret.push_back(std::move(item));
351 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetForwardItems(int limit) override
353 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
354 std::unique_ptr<Dali::WebEngineBackForwardListItem> item(new MockWebEngineBackForwardListItem());
355 ret.push_back(std::move(item));
361 class MockWebEngineCertificate : public Dali::WebEngineCertificate
364 MockWebEngineCertificate()
368 void Allow(bool allowed) override
372 bool IsFromMainFrame() const override
377 std::string GetPem() const override
382 bool IsContextSecure() const override
388 class MockWebEngineHttpAuthHandler : public Dali::WebEngineHttpAuthHandler
391 MockWebEngineHttpAuthHandler()
395 std::string GetRealm() const override
400 void Suspend() override
404 void UseCredential(const std::string& user, const std::string& password) override
408 void CancelCredential() override
413 class MockWebEngineFormRepostDecision : public WebEngineFormRepostDecision
416 MockWebEngineFormRepostDecision()
420 void Reply(bool allowed) override {}
423 class MockWebEngineFrame : public Dali::WebEngineFrame
430 bool IsMainFrame() const override
436 class MockWebEnginePolicyDecision : public Dali::WebEnginePolicyDecision
439 MockWebEnginePolicyDecision()
443 std::string GetUrl() const override
445 return "http://test.html";
448 std::string GetCookie() const override
453 Dali::WebEnginePolicyDecision::DecisionType GetDecisionType() const
455 return Dali::WebEnginePolicyDecision::DecisionType::USE;
458 std::string GetResponseMime() const
463 int32_t GetResponseStatusCode() const
468 Dali::WebEnginePolicyDecision::NavigationType GetNavigationType() const
470 return Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
473 Dali::WebEngineFrame& GetFrame() const
475 return *(Dali::WebEngineFrame*)(&mockWebFrame);
478 std::string GetScheme() const
499 MockWebEngineFrame mockWebFrame;
502 class MockWebEngineRequestInterceptor : public WebEngineRequestInterceptor
505 MockWebEngineRequestInterceptor()
509 std::string GetUrl() const override
511 return "http://test.html";
514 bool Ignore() override
519 bool SetResponseStatus(int statusCode, const std::string &customedStatusText) override
524 bool AddResponseHeader(const std::string &fieldName, const std::string &fieldValue) override
529 bool AddResponseBody(const std::string &body, uint32_t length) override
535 class MockWebEngineConsoleMessage : public Dali::WebEngineConsoleMessage
538 MockWebEngineConsoleMessage()
542 std::string GetSource() const override
547 uint32_t GetLine() const override
552 SeverityLevel GetSeverityLevel() const override
554 return SeverityLevel::EMPTY;
557 std::string GetText() const override
559 return "This is a text.";
563 class MockWebEngineLoadError : public Dali::WebEngineLoadError
566 MockWebEngineLoadError(const std::string& url)
571 std::string GetUrl() const override
576 ErrorCode GetCode() const override
578 return ErrorCode::UNKNOWN;
581 std::string GetDescription() const override
583 return "This is an error.";
586 ErrorType GetType() const override
588 return ErrorType::NONE;
595 class MockWebEngineContextMenuItem : public Dali::WebEngineContextMenuItem
598 MockWebEngineContextMenuItem()
602 ItemTag GetTag() const override
604 return ItemTag::NO_ACTION;
607 ItemType GetType() const override
609 return ItemType::ACTION;
612 bool IsEnabled() const override
617 std::string GetLinkUrl() const override
619 return "http://test.html";
622 std::string GetImageUrl() const override
624 return "http://test.jpg";
627 std::string GetTitle() const override
632 std::unique_ptr<Dali::WebEngineContextMenu> GetParentMenu() const override
634 std::unique_ptr<Dali::WebEngineContextMenu> result;
639 class MockWebEngineContextMenu : public Dali::WebEngineContextMenu
642 MockWebEngineContextMenu()
646 uint32_t GetItemCount() const override
651 std::unique_ptr<Dali::WebEngineContextMenuItem> GetItemAt(uint32_t index) const override
653 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
657 std::vector<std::unique_ptr<WebEngineContextMenuItem>> GetItemList() const override
659 std::vector<std::unique_ptr<WebEngineContextMenuItem>> result;
660 std::unique_ptr<Dali::WebEngineContextMenuItem> webitem(new MockWebEngineContextMenuItem());
661 result.push_back(std::move(webitem));
665 Dali::Vector2 GetPosition() const override
667 return Dali::Vector2(100, 100);
670 bool RemoveItem(WebEngineContextMenuItem& item) override
675 bool AppendItemAsAction(WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled) override
680 bool AppendItem(WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled) override
685 bool SelectItem(WebEngineContextMenuItem& item) override
696 class MockWebEngineHitTest : public Dali::WebEngineHitTest
699 MockWebEngineHitTest()
703 ResultContext GetResultContext() const override
705 return ResultContext::DOCUMENT;
708 std::string GetLinkUri() const override
710 return "http://test.html";
713 std::string GetLinkTitle() const override
718 std::string GetLinkLabel() const override
723 std::string GetImageUri() const override
725 return "http://test.jpg";
728 std::string GetMediaUri() const override
730 return "http://test.mp4";
733 std::string GetTagName() const override
738 std::string GetNodeValue() const override
743 Dali::Property::Map& GetAttributes() const override
745 return mockAttributesMap;
748 std::string GetImageFileNameExtension() const override
753 Dali::PixelData GetImageBuffer() override
755 uint8_t* faviconData = new uint8_t[ 16 ];
756 memset(faviconData, 0xff, 16);
757 return Dali::PixelData::New( faviconData, 16, 2, 2,
758 Dali::Pixel::Format::RGBA8888,
759 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
763 mutable Dali::Property::Map mockAttributesMap;
766 class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin
769 MockWebEngineSecurityOrigin()
770 : mockUrl("https://test.html")
771 , mockPotocol("https")
775 std::string GetHost() const
780 std::string GetProtocol() const
787 std::string mockPotocol;
790 class MockWebEngineSettings : public WebEngineSettings
793 MockWebEngineSettings()
794 : mockDefaultFontSize( 16 ),
795 mockJavaScriptEnabled( true ),
796 mockAutoFittingEnabled ( true ),
797 mockPluginsEnabled ( true ),
798 mockPrivateBrowsingEnabled( true ),
799 mockLinkMagnifierEnabled( true ),
800 mockKeypadWithoutUserActionUsed( true ),
801 mockAutofillPasswordFormEnabled( true ),
802 mockFormCandidateDataEnabled( true ),
803 mockTextSelectionEnabled( true ),
804 mockTextAutosizingEnable( true ),
805 mockArrowScrollEnable( true ),
806 mockClipboardEnabled( true ),
807 mockImePanelEnabled( true ),
808 mockImageLoadedAutomatically( true ),
809 mockDefaultTextEncodingName()
813 uint32_t GetDefaultFontSize() const override
815 return mockDefaultFontSize;
818 void SetDefaultFontSize( uint32_t size ) override
820 mockDefaultFontSize = size;
823 bool IsJavaScriptEnabled() const override
825 return mockJavaScriptEnabled;
828 void EnableJavaScript( bool enabled ) override
830 mockJavaScriptEnabled = enabled;
833 bool IsAutoFittingEnabled() const override
835 return mockAutoFittingEnabled;
838 void EnableAutoFitting( bool enabled ) override
840 mockAutoFittingEnabled = enabled;
843 bool ArePluginsEnabled() const override
845 return mockPluginsEnabled;
848 void EnablePlugins( bool enabled ) override
850 mockPluginsEnabled = enabled;
853 bool IsPrivateBrowsingEnabled() const override
855 return mockPrivateBrowsingEnabled;
858 void EnablePrivateBrowsing( bool enabled ) override
860 mockPrivateBrowsingEnabled = enabled;
863 bool IsLinkMagnifierEnabled() const override
865 return mockLinkMagnifierEnabled;
868 void EnableLinkMagnifier( bool enabled ) override
870 mockLinkMagnifierEnabled = enabled;
873 bool IsKeypadWithoutUserActionUsed() const override
875 return mockKeypadWithoutUserActionUsed;
878 void UseKeypadWithoutUserAction( bool used ) override
880 mockKeypadWithoutUserActionUsed = used;
883 bool IsAutofillPasswordFormEnabled() const override
885 return mockAutofillPasswordFormEnabled;
888 void EnableAutofillPasswordForm( bool enabled ) override
890 mockAutofillPasswordFormEnabled = enabled;
893 bool IsFormCandidateDataEnabled() const override
895 return mockFormCandidateDataEnabled;
898 void EnableFormCandidateData( bool enabled ) override
900 mockFormCandidateDataEnabled = enabled;
903 bool IsTextSelectionEnabled() const override
905 return mockTextSelectionEnabled;
908 void EnableTextSelection( bool enabled ) override
910 mockTextSelectionEnabled = enabled;
913 bool IsTextAutosizingEnabled() const override
915 return mockTextAutosizingEnable;
918 void EnableTextAutosizing( bool enabled ) override
920 mockTextAutosizingEnable = enabled;
923 bool IsArrowScrollEnabled() const override
925 return mockArrowScrollEnable;
928 void EnableArrowScroll( bool enabled ) override
930 mockArrowScrollEnable = enabled;
933 bool IsClipboardEnabled() const override
935 return mockClipboardEnabled;
938 void EnableClipboard( bool enabled ) override
940 mockClipboardEnabled = enabled;
943 bool IsImePanelEnabled() const override
945 return mockImePanelEnabled;
948 void EnableImePanel( bool enabled ) override
950 mockImePanelEnabled = enabled;
953 bool AreImagesLoadedAutomatically() const override
955 return mockImageLoadedAutomatically;
958 void AllowImagesLoadAutomatically( bool automatic ) override
960 mockImageLoadedAutomatically = automatic;
963 std::string GetDefaultTextEncodingName() const override
965 return mockDefaultTextEncodingName;
968 void SetDefaultTextEncodingName( const std::string& defaultTextEncodingName ) override
970 mockDefaultTextEncodingName = defaultTextEncodingName;
973 void AllowMixedContents( bool allowed ) override
977 void EnableSpatialNavigation( bool enabled ) override
981 void EnableWebSecurity( bool enabled ) override
985 void EnableCacheBuilder( bool enabled ) override
989 void UseScrollbarThumbFocusNotifications( bool used ) override
993 void EnableDoNotTrack( bool enabled ) override
997 void AllowFileAccessFromExternalUrl( bool allowed ) override
1001 void AllowScriptsOpenWindows( bool allowed ) override
1005 bool SetViewportMetaTag(bool enable) override
1010 bool SetForceZoom(bool enable) override
1015 bool IsZoomForced() const override
1020 bool SetTextZoomEnabled(bool enable) override
1025 bool IsTextZoomEnabled() const override
1030 void SetExtraFeature(const std::string& feature, bool enable) override
1034 bool IsExtraFeatureEnabled(const std::string& feature) const override
1040 int mockDefaultFontSize;
1041 bool mockJavaScriptEnabled;
1042 bool mockAutoFittingEnabled;
1043 bool mockPluginsEnabled;
1044 bool mockPrivateBrowsingEnabled;
1045 bool mockLinkMagnifierEnabled;
1046 bool mockKeypadWithoutUserActionUsed;
1047 bool mockAutofillPasswordFormEnabled;
1048 bool mockFormCandidateDataEnabled;
1049 bool mockTextSelectionEnabled;
1050 bool mockTextAutosizingEnable;
1051 bool mockArrowScrollEnable;
1052 bool mockClipboardEnabled;
1053 bool mockImePanelEnabled;
1054 bool mockImageLoadedAutomatically;
1055 std::string mockDefaultTextEncodingName;
1058 class WebEngine: public Dali::BaseObject
1062 using JavaScriptEvaluatedResultCallback = std::function<void(const std::string&)>;
1066 , mCurrentPlusOnePos( 0 )
1068 , mEvaluating( false )
1069 , mScrollPosition( 0, 0 )
1070 , mScrollSize( 500, 500 )
1071 , mContentSize( 500, 500 )
1074 if ( gInstanceCount == 1 ) // only first web engine need be saved.
1079 mockWebEngineSettings = new MockWebEngineSettings();
1080 MockWebEngineContext* engineContext = new MockWebEngineContext();
1081 mockWebEngineContext = engineContext;
1082 if ( gInstanceCount == 1 )
1084 gWebEngineContextInstance = engineContext;
1086 mockWebEngineCookieManager = new MockWebEngineCookieManager();
1087 mockWebEngineBackForwardList = new MockWebEngineBackForwardList();
1090 virtual ~WebEngine()
1093 if( !gInstanceCount )
1096 gWebEngineContextInstance = 0;
1099 delete mockWebEngineSettings;
1100 delete mockWebEngineContext;
1101 delete mockWebEngineCookieManager;
1102 delete mockWebEngineBackForwardList;
1105 Dali::WebEngineSettings& GetSettings() const
1107 return *mockWebEngineSettings;
1110 Dali::WebEngineContext& GetContext() const
1112 return *mockWebEngineContext;
1115 Dali::WebEngineCookieManager& GetCookieManager() const
1117 return *mockWebEngineCookieManager;
1120 Dali::WebEngineBackForwardList& GetBackForwardList() const
1122 return *mockWebEngineBackForwardList;
1125 void LoadUrl( const std::string& url )
1128 ConnectToGlobalSignal( &OnLoadUrl );
1131 const std::string& GetUrl() const
1136 std::string GetTitle() const
1138 return std::string("title");
1141 Dali::PixelData GetFavicon() const
1143 uint8_t* faviconData = new uint8_t[ 16 ];
1145 faviconData[ 0 ] = 0xff;
1146 faviconData[ 1 ] = 0x00;
1147 faviconData[ 2 ] = 0x00;
1148 faviconData[ 3 ] = 0xff;
1149 faviconData[ 4 ] = 0xff;
1150 faviconData[ 5 ] = 0x00;
1151 faviconData[ 6 ] = 0x00;
1152 faviconData[ 7 ] = 0xff;
1153 faviconData[ 8 ] = 0xff;
1154 faviconData[ 9 ] = 0x00;
1155 faviconData[ 10 ] = 0x00;
1156 faviconData[ 11 ] = 0xff;
1157 faviconData[ 12 ] = 0xff;
1158 faviconData[ 13 ] = 0x00;
1159 faviconData[ 14 ] = 0x00;
1160 faviconData[ 15 ] = 0xff;
1162 return Dali::PixelData::New( faviconData, 16, 2, 2,
1163 Dali::Pixel::Format::RGBA8888,
1164 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1167 bool CanGoForward() const
1169 return mHistory.size() > mCurrentPlusOnePos;
1174 ConnectToGlobalSignal( &OnGoForward );
1177 bool CanGoBack() const
1179 return mCurrentPlusOnePos > 1;
1184 ConnectToGlobalSignal( &OnGoBack );
1187 void EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1193 ConnectToGlobalSignal( &OnEvaluteJavaScript );
1195 mResultCallbacks.push_back( resultHandler );
1199 void RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1203 ConnectToGlobalSignal( &OnJavaScriptAlert );
1204 mJavaScriptAlertCallback = callback;
1208 void RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1212 ConnectToGlobalSignal( &OnJavaScriptConfirm );
1213 mJavaScriptConfirmCallback = callback;
1217 void RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1221 ConnectToGlobalSignal( &OnJavaScriptPrompt );
1222 mJavaScriptPromptCallback = callback;
1226 std::unique_ptr<Dali::WebEngineHitTest> CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
1228 std::unique_ptr<Dali::WebEngineHitTest> hitTest(new MockWebEngineHitTest());
1232 bool CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
1236 ConnectToGlobalSignal( &OnHitTestCreated );
1237 mHitTestCreatedCallback = callback;
1244 ConnectToGlobalSignal( &OnClearHistory );
1247 const std::string& GetUserAgent() const
1252 void SetUserAgent( const std::string& userAgent )
1254 mUserAgent = userAgent;
1257 void ScrollBy( int32_t dx, int32_t dy )
1259 mScrollPosition += Dali::Vector2( dx, dy );
1260 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1262 ConnectToGlobalSignal( &OnScrollEdge );
1266 bool ScrollEdgeBy( int32_t dx, int32_t dy )
1268 mScrollPosition += Dali::Vector2( dx, dy );
1269 if ( mScrollPosition.y + mScrollSize.height > mContentSize.height )
1271 ConnectToGlobalSignal( &OnScrollEdge );
1276 void SetScrollPosition( int32_t x, int32_t y )
1278 mScrollPosition.x = x;
1279 mScrollPosition.y = y;
1282 Dali::Vector2 GetScrollPosition() const
1284 return mScrollPosition;
1287 Dali::Vector2 GetScrollSize() const
1292 Dali::Vector2 GetContentSize() const
1294 return mContentSize;
1297 void SetPageZoomFactor(float zoomFactor)
1299 mPageZoomFactor = zoomFactor;
1302 float GetPageZoomFactor() const
1304 return mPageZoomFactor;
1307 void SetTextZoomFactor(float zoomFactor)
1309 mTextZoomFactor = zoomFactor;
1312 float GetTextZoomFactor() const
1314 return mTextZoomFactor;
1317 float GetLoadProgressPercentage() const
1322 void SetScaleFactor(float scaleFactor, Dali::Vector2 point)
1324 mScaleFactor = scaleFactor;
1327 float GetScaleFactor() const
1329 return mScaleFactor;
1332 Dali::PixelData GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
1334 uint32_t bufferSize = viewArea.width * viewArea.height * 4 ;
1335 uint8_t* pixel = new uint8_t[ bufferSize ];
1336 memset(pixel, 0xff, bufferSize);
1337 return Dali::PixelData::New( pixel, bufferSize, viewArea.width, viewArea.height,
1338 Dali::Pixel::Format::RGBA8888,
1339 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1342 bool GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
1346 ConnectToGlobalSignal( &OnScreenshotCaptured );
1347 mScreenshotCapturedCallback = callback;
1352 bool CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
1356 ConnectToGlobalSignal( &OnVideoPlaying );
1357 mVideoPlayingCallback = callback;
1362 void RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
1366 ConnectToGlobalSignal( &OnGeolocationPermission );
1367 mGeolocationPermissionCallback = callback;
1371 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal()
1373 return mPageLoadStartedSignal;
1376 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadInProgressSignal()
1378 return mPageLoadInProgressSignal;
1381 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadFinishedSignal()
1383 return mPageLoadFinishedSignal;
1386 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& PageLoadErrorSignal()
1388 return mPageLoadErrorSignal;
1391 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& ScrollEdgeReachedSignal()
1393 return mScrollEdgeReachedSignal;
1396 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& UrlChangedSignal()
1398 return mUrlChangedSignal;
1401 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& FormRepostDecisionSignal()
1403 return mFormRepostDecisionSignal;
1406 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal()
1408 return mFrameRenderedSignal;
1411 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& RequestInterceptorSignal()
1413 return mRequestInterceptorSignal;
1416 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& ConsoleMessageSignal()
1418 return mConsoleMessageSignal;
1421 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType& PolicyDecisionSignal()
1423 return mPolicyDecisionSignal;
1426 Dali::WebEnginePlugin::WebEngineCertificateSignalType& CertificateConfirmSignal()
1428 return mCertificateConfirmSignal;
1431 Dali::WebEnginePlugin::WebEngineCertificateSignalType& SslCertificateChangedSignal()
1433 return mSslCertificateChangedSignal;
1436 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& HttpAuthHandlerSignal()
1438 return mHttpAuthHandlerSignal;
1441 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& ContextMenuCustomizedSignal()
1443 return mContextMenuCustomizedSignal;
1446 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& ContextMenuItemSelectedSignal()
1448 return mContextMenuItemSelectedSignal;
1452 std::vector<std::string> mHistory;
1453 size_t mCurrentPlusOnePos;
1454 std::string mUserAgent;
1456 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal;
1457 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal;
1458 Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal;
1459 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal;
1460 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal;
1461 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal;
1462 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal;
1463 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal;
1464 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal;
1465 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal;
1466 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal;
1467 Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal;
1468 Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal;
1469 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal;
1470 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType mContextMenuCustomizedSignal;
1471 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType mContextMenuItemSelectedSignal;
1474 float mPageZoomFactor;
1475 float mTextZoomFactor;
1478 Dali::Vector2 mScrollPosition;
1479 Dali::Vector2 mScrollSize;
1480 Dali::Vector2 mContentSize;
1481 WebEngineBackForwardList* mockWebEngineBackForwardList;
1482 WebEngineContext* mockWebEngineContext;
1483 WebEngineCookieManager* mockWebEngineCookieManager;
1484 WebEngineSettings* mockWebEngineSettings;
1486 std::vector<JavaScriptEvaluatedResultCallback> mResultCallbacks;
1487 Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback;
1488 Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback;
1489 Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback;
1490 Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback;
1491 Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback;
1492 Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback;
1493 Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback;
1502 DisconnectFromGlobalSignal( &OnGoBack );
1504 if( gInstance && gInstance->CanGoBack() )
1506 gInstance->mCurrentPlusOnePos--;
1513 DisconnectFromGlobalSignal( &OnGoForward );
1515 if( gInstance && gInstance->CanGoForward() )
1517 gInstance->mCurrentPlusOnePos++;
1524 DisconnectFromGlobalSignal( &OnLoadUrl );
1528 if( gInstance->mHistory.size() > gInstance->mCurrentPlusOnePos )
1530 gInstance->mHistory.erase( gInstance->mHistory.begin() + gInstance->mCurrentPlusOnePos, gInstance->mHistory.end() );
1532 gInstance->mHistory.push_back( gInstance->mUrl );
1533 gInstance->mCurrentPlusOnePos++;
1534 gInstance->mPageLoadStartedSignal.Emit( gInstance->mUrl );
1535 gInstance->mPageLoadInProgressSignal.Emit( gInstance->mUrl );
1536 gInstance->mPageLoadFinishedSignal.Emit( gInstance->mUrl );
1537 gInstance->mUrlChangedSignal.Emit( "http://new-test" );
1539 std::shared_ptr<Dali::WebEngineFormRepostDecision> repostDecision(new MockWebEngineFormRepostDecision());
1540 gInstance->mFormRepostDecisionSignal.Emit(std::move(repostDecision));
1541 gInstance->mFrameRenderedSignal.Emit();
1542 std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor(new MockWebEngineRequestInterceptor());
1543 gInstance->mRequestInterceptorSignal.Emit(std::move(interceptor));
1545 std::shared_ptr<Dali::WebEngineLoadError> error(new MockWebEngineLoadError(gInstance->mUrl));
1546 gInstance->mPageLoadErrorSignal.Emit(std::move(error));
1547 std::shared_ptr<Dali::WebEngineConsoleMessage> message(new MockWebEngineConsoleMessage());
1548 gInstance->mConsoleMessageSignal.Emit(std::move(message));
1549 std::shared_ptr<Dali::WebEnginePolicyDecision> policyDecision(new MockWebEnginePolicyDecision());
1550 gInstance->mPolicyDecisionSignal.Emit(std::move(policyDecision));
1552 std::shared_ptr<Dali::WebEngineCertificate> certificate(new MockWebEngineCertificate());
1553 gInstance->mCertificateConfirmSignal.Emit(std::move(certificate));
1554 std::shared_ptr<Dali::WebEngineCertificate> sslCertificate(new MockWebEngineCertificate());
1555 gInstance->mSslCertificateChangedSignal.Emit(std::move(sslCertificate));
1556 std::shared_ptr<Dali::WebEngineHttpAuthHandler> handler(new MockWebEngineHttpAuthHandler());
1557 gInstance->mHttpAuthHandlerSignal.Emit(std::move(handler));
1559 std::shared_ptr<Dali::WebEngineContextMenu> menu(new MockWebEngineContextMenu());
1560 gInstance->mContextMenuCustomizedSignal.Emit(std::move(menu));
1561 std::shared_ptr<Dali::WebEngineContextMenuItem> item(new MockWebEngineContextMenuItem());
1562 gInstance->mContextMenuItemSelectedSignal.Emit(std::move(item));
1569 DisconnectFromGlobalSignal( &OnScrollEdge );
1573 gInstance->mScrollEdgeReachedSignal.Emit( Dali::WebEnginePlugin::ScrollEdge::BOTTOM );
1579 bool OnEvaluteJavaScript()
1581 DisconnectFromGlobalSignal( &OnEvaluteJavaScript );
1585 for( auto& func : gInstance->mResultCallbacks )
1589 gInstance->mResultCallbacks.clear();
1594 bool OnJavaScriptAlert()
1596 DisconnectFromGlobalSignal( &OnJavaScriptAlert );
1599 gInstance->mJavaScriptAlertCallback( "this is an alert popup." );
1604 bool OnJavaScriptConfirm()
1606 DisconnectFromGlobalSignal( &OnJavaScriptConfirm );
1609 gInstance->mJavaScriptConfirmCallback( "this is a confirm popup." );
1614 bool OnJavaScriptPrompt()
1616 DisconnectFromGlobalSignal( &OnJavaScriptPrompt );
1619 gInstance->mJavaScriptPromptCallback( "this is a prompt pompt.", "" );
1624 bool OnScreenshotCaptured()
1626 DisconnectFromGlobalSignal( &OnScreenshotCaptured );
1629 uint8_t* pixel = new uint8_t[ 2 * 2 * 4 ];
1630 memset(pixel, 0xff, 2 * 2 * 4);
1631 Dali::PixelData data = Dali::PixelData::New( pixel, 2 * 2 * 4, 2, 2,
1632 Dali::Pixel::Format::RGBA8888,
1633 Dali::PixelData::ReleaseFunction::DELETE_ARRAY );
1634 gInstance->mScreenshotCapturedCallback( data );
1639 bool OnVideoPlaying()
1641 DisconnectFromGlobalSignal( &OnVideoPlaying );
1644 gInstance->mVideoPlayingCallback( true );
1649 bool OnGeolocationPermission()
1651 DisconnectFromGlobalSignal( &OnGeolocationPermission );
1654 gInstance->mGeolocationPermissionCallback( "", "" );
1659 bool OnHitTestCreated()
1661 DisconnectFromGlobalSignal(&OnHitTestCreated);
1664 std::unique_ptr<Dali::WebEngineHitTest> test(new MockWebEngineHitTest());
1665 gInstance->mHitTestCreatedCallback(std::move(test));
1670 bool OnClearHistory()
1672 DisconnectFromGlobalSignal( &OnClearHistory );
1674 if( gInstance && gInstance->mCurrentPlusOnePos )
1676 std::string url = gInstance->mHistory[ gInstance->mCurrentPlusOnePos - 1 ];
1677 std::vector< std::string >().swap( gInstance->mHistory );
1678 gInstance->mHistory.push_back( url );
1679 gInstance->mCurrentPlusOnePos = 1;
1684 bool OnSecurityOriginAcquired()
1686 DisconnectFromGlobalSignal(&OnSecurityOriginAcquired);
1687 if (gWebEngineContextInstance)
1689 std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> securityOriginList;
1690 std::unique_ptr<Dali::WebEngineSecurityOrigin> origin(new MockWebEngineSecurityOrigin());
1691 securityOriginList.push_back(std::move(origin));
1692 gWebEngineContextInstance->mSecurityOriginAcquiredCallback(securityOriginList);
1697 bool OnStorageUsageAcquired()
1699 DisconnectFromGlobalSignal(&OnStorageUsageAcquired);
1700 if (gWebEngineContextInstance)
1702 gWebEngineContextInstance->mStorageUsageAcquiredCallback(0);
1707 bool OnFormPasswordAcquired()
1709 DisconnectFromGlobalSignal(&OnFormPasswordAcquired);
1710 if (gWebEngineContextInstance)
1712 std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> formPasswordList;
1713 std::unique_ptr<Dali::WebEngineContext::PasswordData> data(new Dali::WebEngineContext::PasswordData());
1714 data->url = "http://test.html";
1715 data->useFingerprint = false;
1716 formPasswordList.push_back(std::move(data));
1717 gWebEngineContextInstance->mFormPasswordAcquiredCallback(formPasswordList);
1722 bool OnDownloadStarted()
1724 DisconnectFromGlobalSignal(&OnDownloadStarted);
1725 if (gWebEngineContextInstance)
1727 gWebEngineContextInstance->mDownloadStartedCallback("http://test.html");
1732 bool OnMimeOverridden()
1734 DisconnectFromGlobalSignal(&OnMimeOverridden);
1735 if (gWebEngineContextInstance)
1737 std::string newMime;
1738 gWebEngineContextInstance->mMimeOverriddenCallback("http://test.html", "txt/xml", newMime);
1743 bool OnChangesWatch()
1745 DisconnectFromGlobalSignal( &OnChangesWatch );
1749 MockWebEngineCookieManager* temp = (MockWebEngineCookieManager *)(&(gInstance->GetCookieManager()));
1752 temp->mChangesWatchCallback();
1761 inline WebEngine& GetImplementation( Dali::WebEngine& webEngine )
1763 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1764 BaseObject& handle = webEngine.GetBaseObject();
1765 return static_cast< Internal::Adaptor::WebEngine& >( handle );
1768 inline const WebEngine& GetImplementation( const Dali::WebEngine& webEngine )
1770 DALI_ASSERT_ALWAYS( webEngine && "WebEngine handle is empty." );
1771 const BaseObject& handle = webEngine.GetBaseObject();
1772 return static_cast< const Internal::Adaptor::WebEngine& >( handle );
1775 } // namespace Adaptor
1777 } // namespace Internal
1779 // Dali::WebEngine Implementation
1780 WebEngine::WebEngine()
1784 WebEngine::WebEngine( Internal::Adaptor::WebEngine* internal )
1785 : BaseHandle( internal )
1789 WebEngine::~WebEngine()
1793 WebEngine WebEngine::New()
1795 Internal::Adaptor::WebEngine* baseObject = new Internal::Adaptor::WebEngine();
1797 return WebEngine( baseObject );
1800 WebEngine::WebEngine( const WebEngine& WebEngine )
1801 : BaseHandle( WebEngine )
1805 WebEngine& WebEngine::operator=( const WebEngine& webEngine )
1807 BaseHandle::operator=( webEngine );
1811 WebEngine WebEngine::DownCast( BaseHandle handle )
1813 return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) );
1816 void WebEngine::Create( uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId )
1820 void WebEngine::Create( uint32_t width, uint32_t height, uint32_t argc, char** argv )
1824 void WebEngine::Destroy()
1828 WebEngineSettings& WebEngine::GetSettings() const
1830 return Internal::Adaptor::GetImplementation( *this ).GetSettings();
1833 WebEngineContext& WebEngine::GetContext() const
1835 return Internal::Adaptor::GetImplementation( *this ).GetContext();
1838 WebEngineCookieManager& WebEngine::GetCookieManager() const
1840 return Internal::Adaptor::GetImplementation( *this ).GetCookieManager();
1843 WebEngineBackForwardList& WebEngine::GetBackForwardList() const
1845 return Internal::Adaptor::GetImplementation( *this ).GetBackForwardList();
1848 void WebEngine::LoadUrl( const std::string& url )
1850 return Internal::Adaptor::GetImplementation( *this ).LoadUrl( url );
1853 std::string WebEngine::GetTitle() const
1855 return Internal::Adaptor::GetImplementation( *this ).GetTitle();
1858 Dali::PixelData WebEngine::GetFavicon() const
1860 return Internal::Adaptor::GetImplementation( *this ).GetFavicon();
1863 const std::string& WebEngine::GetUrl()
1865 return Internal::Adaptor::GetImplementation( *this ).GetUrl();
1868 NativeImageInterfacePtr WebEngine::GetNativeImageSource()
1871 Dali::NativeImageSourcePtr sourcePtr = Dali::NativeImageSource::New( source );
1875 void WebEngine::LoadHtmlString( const std::string& htmlString )
1879 bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl)
1884 bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri)
1889 void WebEngine::Reload()
1893 bool WebEngine::ReloadWithoutCache()
1898 void WebEngine::StopLoading()
1902 void WebEngine::Suspend()
1906 void WebEngine::Resume()
1910 void WebEngine::SuspendNetworkLoading()
1914 void WebEngine::ResumeNetworkLoading()
1918 bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value)
1923 bool WebEngine::RemoveCustomHeader(const std::string& name)
1928 uint32_t WebEngine::StartInspectorServer(uint32_t port)
1933 bool WebEngine::StopInspectorServer()
1938 bool WebEngine::CanGoForward()
1940 return Internal::Adaptor::GetImplementation( *this ).CanGoForward();
1943 void WebEngine::GoForward()
1945 Internal::Adaptor::GetImplementation( *this ).GoForward();
1948 bool WebEngine::CanGoBack()
1950 return Internal::Adaptor::GetImplementation( *this ).CanGoBack();
1953 void WebEngine::GoBack()
1955 Internal::Adaptor::GetImplementation( *this ).GoBack();
1958 void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler )
1960 Internal::Adaptor::GetImplementation( *this ).EvaluateJavaScript( script, resultHandler );
1963 void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
1967 void WebEngine::RegisterJavaScriptAlertCallback( Dali::WebEnginePlugin::JavaScriptAlertCallback callback )
1969 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptAlertCallback( callback );
1972 void WebEngine::JavaScriptAlertReply()
1976 void WebEngine::RegisterJavaScriptConfirmCallback( Dali::WebEnginePlugin::JavaScriptConfirmCallback callback )
1978 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptConfirmCallback( callback );
1981 void WebEngine::JavaScriptConfirmReply( bool confirmed )
1985 void WebEngine::RegisterJavaScriptPromptCallback( Dali::WebEnginePlugin::JavaScriptPromptCallback callback )
1987 Internal::Adaptor::GetImplementation( *this ).RegisterJavaScriptPromptCallback( callback );
1990 void WebEngine::JavaScriptPromptReply( const std::string& result )
1994 std::unique_ptr<Dali::WebEngineHitTest> WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode)
1996 return Internal::Adaptor::GetImplementation(*this).CreateHitTest(x, y, mode);
1999 bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback)
2001 return Internal::Adaptor::GetImplementation(*this).CreateHitTestAsynchronously(x, y, mode, callback);
2004 void WebEngine::ClearAllTilesResources()
2008 void WebEngine::ClearHistory()
2010 Internal::Adaptor::GetImplementation( *this ).ClearHistory();
2013 void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point)
2015 Internal::Adaptor::GetImplementation( *this ).SetScaleFactor(scaleFactor, point);
2018 float WebEngine::GetScaleFactor() const
2020 return Internal::Adaptor::GetImplementation( *this ).GetScaleFactor();
2023 void WebEngine::ActivateAccessibility(bool activated)
2027 bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount)
2032 void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath)
2036 Dali::PixelData WebEngine::GetScreenshot(Dali::Rect<int32_t> viewArea, float scaleFactor)
2038 return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor);
2041 bool WebEngine::GetScreenshotAsynchronously(Dali::Rect<int32_t> viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback)
2043 return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback);
2046 bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback)
2048 return Internal::Adaptor::GetImplementation( *this ).CheckVideoPlayingAsynchronously(callback);
2051 void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback)
2053 Internal::Adaptor::GetImplementation( *this ).RegisterGeolocationPermissionCallback(callback);
2056 const std::string& WebEngine::GetUserAgent() const
2058 return Internal::Adaptor::GetImplementation( *this ).GetUserAgent();
2061 void WebEngine::SetUserAgent( const std::string& userAgent )
2063 Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent );
2066 void WebEngine::ScrollBy( int32_t dx, int32_t dy )
2068 Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy );
2071 bool WebEngine::ScrollEdgeBy( int32_t dx, int32_t dy )
2073 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy );
2076 void WebEngine::SetScrollPosition( int32_t x, int32_t y )
2078 Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y );
2081 Dali::Vector2 WebEngine::GetScrollPosition() const
2083 return Internal::Adaptor::GetImplementation( *this ).GetScrollPosition();
2086 Dali::Vector2 WebEngine::GetScrollSize() const
2088 return Internal::Adaptor::GetImplementation( *this ).GetScrollSize();
2091 Dali::Vector2 WebEngine::GetContentSize() const
2093 return Internal::Adaptor::GetImplementation( *this ).GetContentSize();
2096 void WebEngine::SetSize( uint32_t width, uint32_t height )
2100 void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color)
2104 void WebEngine::ClearTilesWhenHidden(bool cleared)
2108 void WebEngine::SetTileCoverAreaMultiplier(float multiplier)
2112 void WebEngine::EnableCursorByClient(bool enabled)
2116 std::string WebEngine::GetSelectedText() const
2121 bool WebEngine::SendTouchEvent( const TouchEvent& touch )
2126 bool WebEngine::SendKeyEvent( const KeyEvent& event )
2131 bool WebEngine::SendHoverEvent( const HoverEvent& event )
2136 bool WebEngine::SendWheelEvent( const WheelEvent& event )
2141 void WebEngine::SetFocus( bool focused )
2145 void WebEngine::SetPageZoomFactor(float zoomFactor)
2147 Internal::Adaptor::GetImplementation( *this ).SetPageZoomFactor(zoomFactor);
2150 float WebEngine::GetPageZoomFactor() const
2152 return Internal::Adaptor::GetImplementation( *this ).GetPageZoomFactor();
2155 void WebEngine::SetTextZoomFactor(float zoomFactor)
2157 Internal::Adaptor::GetImplementation( *this ).SetTextZoomFactor(zoomFactor);
2160 float WebEngine::GetTextZoomFactor() const
2162 return Internal::Adaptor::GetImplementation( *this ).GetTextZoomFactor();
2165 float WebEngine::GetLoadProgressPercentage() const
2167 return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage();
2170 void WebEngine::UpdateDisplayArea( Dali::Rect< int32_t > displayArea )
2174 void WebEngine::EnableVideoHole( bool enabled )
2178 void WebEngine::EnableMouseEvents( bool enabled )
2182 void WebEngine::EnableKeyEvents( bool enabled )
2186 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadStartedSignal()
2188 return Internal::Adaptor::GetImplementation( *this ).PageLoadStartedSignal();
2191 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadInProgressSignal()
2193 return Internal::Adaptor::GetImplementation( *this ).PageLoadInProgressSignal();
2196 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadFinishedSignal()
2198 return Internal::Adaptor::GetImplementation( *this ).PageLoadFinishedSignal();
2201 Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& WebEngine::PageLoadErrorSignal()
2203 return Internal::Adaptor::GetImplementation( *this ).PageLoadErrorSignal();
2206 Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& WebEngine::ScrollEdgeReachedSignal()
2208 return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeReachedSignal();
2211 Dali::WebEnginePlugin::WebEngineUrlChangedSignalType& WebEngine::UrlChangedSignal()
2213 return Internal::Adaptor::GetImplementation( *this ).UrlChangedSignal();
2216 Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType& WebEngine::FormRepostDecisionSignal()
2218 return Internal::Adaptor::GetImplementation(*this).FormRepostDecisionSignal();
2221 Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
2223 return Internal::Adaptor::GetImplementation(*this).FrameRenderedSignal();
2226 Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType& WebEngine::RequestInterceptorSignal()
2228 return Internal::Adaptor::GetImplementation(*this).RequestInterceptorSignal();
2231 Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType& WebEngine::ConsoleMessageSignal()
2233 return Internal::Adaptor::GetImplementation(*this).ConsoleMessageSignal();
2236 Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType& WebEngine::PolicyDecisionSignal()
2238 return Internal::Adaptor::GetImplementation(*this).PolicyDecisionSignal();
2241 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::CertificateConfirmSignal()
2243 return Internal::Adaptor::GetImplementation(*this).CertificateConfirmSignal();
2246 Dali::WebEnginePlugin::WebEngineCertificateSignalType& WebEngine::SslCertificateChangedSignal()
2248 return Internal::Adaptor::GetImplementation(*this).SslCertificateChangedSignal();
2251 Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& WebEngine::HttpAuthHandlerSignal()
2253 return Internal::Adaptor::GetImplementation(*this).HttpAuthHandlerSignal();
2256 Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& WebEngine::ContextMenuCustomizedSignal()
2258 return Internal::Adaptor::GetImplementation( *this ).ContextMenuCustomizedSignal();
2261 Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& WebEngine::ContextMenuItemSelectedSignal()
2263 return Internal::Adaptor::GetImplementation( *this ).ContextMenuItemSelectedSignal();
2266 } // namespace Dali;