X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftoolkit-web-engine.cpp;h=765d01558ee8102297f5c9d2a9e76a0a4071cae6;hp=b33e1696a44e244c8657bf2799c968e53009dc33;hb=c24f1189cd87b2dc9f8ecc7ad433d540acb0fce3;hpb=8135447dde34dce2e12480c1290f48a4d1dfa702 diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp index b33e169..765d015 100755 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp @@ -23,9 +23,12 @@ #include #include #include +#include +#include #include #include #include +#include #include #include #include @@ -36,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -68,6 +72,7 @@ bool OnEvaluteJavaScript(); bool OnJavaScriptAlert(); bool OnJavaScriptConfirm(); bool OnJavaScriptPrompt(); +bool OnHitTestCreated(); bool OnScrollEdge(); bool OnScreenshotCaptured(); bool OnVideoPlaying(); @@ -78,6 +83,7 @@ bool OnStorageUsageAcquired(); bool OnFormPasswordAcquired(); bool OnDownloadStarted(); bool OnMimeOverridden(); +bool OnChangesWatch(); static void ConnectToGlobalSignal( bool ( *func )() ) { @@ -225,30 +231,6 @@ private: Dali::WebEngineContext::CacheModel mockModel; }; -class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin -{ -public: - MockWebEngineSecurityOrigin() - : mockUrl("https://test.html") - , mockPotocol("https") - { - } - - std::string GetHost() const - { - return mockUrl; - } - - std::string GetProtocol() const - { - return mockPotocol; - } - -private: - std::string mockUrl; - std::string mockPotocol; -}; - class MockWebEngineCookieManager : public Dali::WebEngineCookieManager { public: @@ -275,6 +257,18 @@ public: { } + void ChangesWatch( Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback callback ) override + { + if ( callback ) + { + ConnectToGlobalSignal( &OnChangesWatch ); + mChangesWatchCallback = callback; + } + } + +public: + Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback mChangesWatchCallback; + private: Dali::WebEngineCookieManager::CookieAcceptPolicy mockCookieAcceptPolicy; }; @@ -314,19 +308,31 @@ class MockWebEngineBackForwardList : public Dali::WebEngineBackForwardList { public: MockWebEngineBackForwardList() - : mockItem(), - pMockItem( &mockItem ) { } - Dali::WebEngineBackForwardListItem& GetCurrentItem() const override + std::unique_ptr GetCurrentItem() const override { - return *pMockItem; + std::unique_ptr ret(new MockWebEngineBackForwardListItem()); + return ret; } - Dali::WebEngineBackForwardListItem& GetItemAtIndex( uint32_t index ) const override + std::unique_ptr GetPreviousItem() const override { - return *pMockItem; + std::unique_ptr ret(new MockWebEngineBackForwardListItem()); + return ret; + } + + std::unique_ptr GetNextItem() const override + { + std::unique_ptr ret(new MockWebEngineBackForwardListItem()); + return ret; + } + + std::unique_ptr GetItemAtIndex( uint32_t index ) const override + { + std::unique_ptr ret(new MockWebEngineBackForwardListItem()); + return ret; } uint32_t GetItemCount() const override @@ -334,11 +340,24 @@ public: return 1; } -private: - MockWebEngineBackForwardListItem mockItem; - WebEngineBackForwardListItem* pMockItem; + std::vector> GetBackwardItems(int limit) override + { + std::vector> ret; + std::unique_ptr item(new MockWebEngineBackForwardListItem()); + ret.push_back(std::move(item)); + return ret; + } + + std::vector> GetForwardItems(int limit) override + { + std::vector> ret; + std::unique_ptr item(new MockWebEngineBackForwardListItem()); + ret.push_back(std::move(item)); + return ret; + } }; + class MockWebEngineCertificate : public Dali::WebEngineCertificate { public: @@ -573,6 +592,201 @@ private: std::string mockUrl; }; +class MockWebEngineContextMenuItem : public Dali::WebEngineContextMenuItem +{ +public: + MockWebEngineContextMenuItem() + { + } + + ItemTag GetTag() const override + { + return ItemTag::NO_ACTION; + } + + ItemType GetType() const override + { + return ItemType::ACTION; + } + + bool IsEnabled() const override + { + return true; + } + + std::string GetLinkUrl() const override + { + return "http://test.html"; + } + + std::string GetImageUrl() const override + { + return "http://test.jpg"; + } + + std::string GetTitle() const override + { + return "title"; + } + + std::unique_ptr GetParentMenu() const override + { + std::unique_ptr result; + return result; + } +}; + +class MockWebEngineContextMenu : public Dali::WebEngineContextMenu +{ +public: + MockWebEngineContextMenu() + { + } + + uint32_t GetItemCount() const override + { + return 1; + } + + std::unique_ptr GetItemAt(uint32_t index) const override + { + std::unique_ptr webitem(new MockWebEngineContextMenuItem()); + return webitem; + } + + std::vector> GetItemList() const override + { + std::vector> result; + std::unique_ptr webitem(new MockWebEngineContextMenuItem()); + result.push_back(std::move(webitem)); + return result; + } + + Dali::Vector2 GetPosition() const override + { + return Dali::Vector2(100, 100); + } + + bool RemoveItem(WebEngineContextMenuItem& item) override + { + return true; + } + + bool AppendItemAsAction(WebEngineContextMenuItem::ItemTag tag, const std::string& title, bool enabled) override + { + return true; + } + + bool AppendItem(WebEngineContextMenuItem::ItemTag tag, const std::string& title, const std::string& iconFile, bool enabled) override + { + return true; + } + + bool SelectItem(WebEngineContextMenuItem& item) override + { + return true; + } + + bool Hide() override + { + return true; + } +}; + +class MockWebEngineHitTest : public Dali::WebEngineHitTest +{ +public: + MockWebEngineHitTest() + { + } + + ResultContext GetResultContext() const override + { + return ResultContext::DOCUMENT; + } + + std::string GetLinkUri() const override + { + return "http://test.html"; + } + + std::string GetLinkTitle() const override + { + return "test"; + } + + std::string GetLinkLabel() const override + { + return "label"; + } + + std::string GetImageUri() const override + { + return "http://test.jpg"; + } + + std::string GetMediaUri() const override + { + return "http://test.mp4"; + } + + std::string GetTagName() const override + { + return "img"; + } + + std::string GetNodeValue() const override + { + return "test"; + } + + Dali::Property::Map& GetAttributes() const override + { + return mockAttributesMap; + } + + std::string GetImageFileNameExtension() const override + { + return "jpg"; + } + + Dali::PixelData GetImageBuffer() override + { + uint8_t* faviconData = new uint8_t[ 16 ]; + memset(faviconData, 0xff, 16); + return Dali::PixelData::New( faviconData, 16, 2, 2, + Dali::Pixel::Format::RGBA8888, + Dali::PixelData::ReleaseFunction::DELETE_ARRAY ); + } + +private: + mutable Dali::Property::Map mockAttributesMap; +}; + +class MockWebEngineSecurityOrigin : public Dali::WebEngineSecurityOrigin +{ +public: + MockWebEngineSecurityOrigin() + : mockUrl("https://test.html") + , mockPotocol("https") + { + } + + std::string GetHost() const + { + return mockUrl; + } + + std::string GetProtocol() const + { + return mockPotocol; + } + +private: + std::string mockUrl; + std::string mockPotocol; +}; + class MockWebEngineSettings : public WebEngineSettings { public: @@ -788,6 +1002,40 @@ public: { } + bool SetViewportMetaTag(bool enable) override + { + return true; + } + + bool SetForceZoom(bool enable) override + { + return true; + } + + bool IsZoomForced() const override + { + return true; + } + + bool SetTextZoomEnabled(bool enable) override + { + return true; + } + + bool IsTextZoomEnabled() const override + { + return true; + } + + void SetExtraFeature(const std::string& feature, bool enable) override + { + } + + bool IsExtraFeatureEnabled(const std::string& feature) const override + { + return true; + } + private: int mockDefaultFontSize; bool mockJavaScriptEnabled; @@ -975,6 +1223,22 @@ public: } } + std::unique_ptr CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode) + { + std::unique_ptr hitTest(new MockWebEngineHitTest()); + return hitTest; + } + + bool CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback) + { + if (callback) + { + ConnectToGlobalSignal( &OnHitTestCreated ); + mHitTestCreatedCallback = callback; + } + return true; + } + void ClearHistory() { ConnectToGlobalSignal( &OnClearHistory ); @@ -990,7 +1254,7 @@ public: mUserAgent = userAgent; } - void ScrollBy( int dx, int dy ) + void ScrollBy( int32_t dx, int32_t dy ) { mScrollPosition += Dali::Vector2( dx, dy ); if ( mScrollPosition.y + mScrollSize.height > mContentSize.height ) @@ -999,7 +1263,7 @@ public: } } - bool ScrollEdgeBy( int dx, int dy ) + bool ScrollEdgeBy( int32_t dx, int32_t dy ) { mScrollPosition += Dali::Vector2( dx, dy ); if ( mScrollPosition.y + mScrollSize.height > mContentSize.height ) @@ -1009,7 +1273,7 @@ public: return true; } - void SetScrollPosition( int x, int y ) + void SetScrollPosition( int32_t x, int32_t y ) { mScrollPosition.x = x; mScrollPosition.y = y; @@ -1065,7 +1329,7 @@ public: return mScaleFactor; } - Dali::PixelData GetScreenshot(Dali::Rect viewArea, float scaleFactor) + Dali::PixelData GetScreenshot(Dali::Rect viewArea, float scaleFactor) { uint32_t bufferSize = viewArea.width * viewArea.height * 4 ; uint8_t* pixel = new uint8_t[ bufferSize ]; @@ -1075,7 +1339,7 @@ public: Dali::PixelData::ReleaseFunction::DELETE_ARRAY ); } - bool GetScreenshotAsynchronously(Dali::Rect viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback) + bool GetScreenshotAsynchronously(Dali::Rect viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback) { if ( callback ) { @@ -1174,25 +1438,37 @@ public: return mHttpAuthHandlerSignal; } + Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& ContextMenuCustomizedSignal() + { + return mContextMenuCustomizedSignal; + } + + Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& ContextMenuItemSelectedSignal() + { + return mContextMenuItemSelectedSignal; + } + std::string mUrl; std::vector mHistory; size_t mCurrentPlusOnePos; std::string mUserAgent; - Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal; - Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal; - Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal; - Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal; - Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal; - Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal; - Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal; - Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal; - Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal; - Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal; - Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal; - Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal; - Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal; - Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal; + Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadStartedSignal; + Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadInProgressSignal; + Dali::WebEnginePlugin::WebEnginePageLoadSignalType mPageLoadFinishedSignal; + Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType mPageLoadErrorSignal; + Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType mScrollEdgeReachedSignal; + Dali::WebEnginePlugin::WebEngineUrlChangedSignalType mUrlChangedSignal; + Dali::WebEnginePlugin::WebEngineFormRepostDecisionSignalType mFormRepostDecisionSignal; + Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType mFrameRenderedSignal; + Dali::WebEnginePlugin::WebEngineRequestInterceptorSignalType mRequestInterceptorSignal; + Dali::WebEnginePlugin::WebEngineConsoleMessageSignalType mConsoleMessageSignal; + Dali::WebEnginePlugin::WebEnginePolicyDecisionSignalType mPolicyDecisionSignal; + Dali::WebEnginePlugin::WebEngineCertificateSignalType mCertificateConfirmSignal; + Dali::WebEnginePlugin::WebEngineCertificateSignalType mSslCertificateChangedSignal; + Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType mHttpAuthHandlerSignal; + Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType mContextMenuCustomizedSignal; + Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType mContextMenuItemSelectedSignal; bool mEvaluating; float mPageZoomFactor; @@ -1207,13 +1483,14 @@ public: WebEngineCookieManager* mockWebEngineCookieManager; WebEngineSettings* mockWebEngineSettings; - std::vector mResultCallbacks; - Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback; - Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback; - Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback; - Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback; - Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback; - Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback; + std::vector mResultCallbacks; + Dali::WebEnginePlugin::JavaScriptAlertCallback mJavaScriptAlertCallback; + Dali::WebEnginePlugin::JavaScriptConfirmCallback mJavaScriptConfirmCallback; + Dali::WebEnginePlugin::JavaScriptPromptCallback mJavaScriptPromptCallback; + Dali::WebEnginePlugin::ScreenshotCapturedCallback mScreenshotCapturedCallback; + Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback; + Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback; + Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback; }; @@ -1278,6 +1555,11 @@ bool OnLoadUrl() gInstance->mSslCertificateChangedSignal.Emit(std::move(sslCertificate)); std::shared_ptr handler(new MockWebEngineHttpAuthHandler()); gInstance->mHttpAuthHandlerSignal.Emit(std::move(handler)); + + std::shared_ptr menu(new MockWebEngineContextMenu()); + gInstance->mContextMenuCustomizedSignal.Emit(std::move(menu)); + std::shared_ptr item(new MockWebEngineContextMenuItem()); + gInstance->mContextMenuItemSelectedSignal.Emit(std::move(item)); } return false; } @@ -1374,6 +1656,17 @@ bool OnGeolocationPermission() return false; } +bool OnHitTestCreated() +{ + DisconnectFromGlobalSignal(&OnHitTestCreated); + if (gInstance) + { + std::unique_ptr test(new MockWebEngineHitTest()); + gInstance->mHitTestCreatedCallback(std::move(test)); + } + return false; +} + bool OnClearHistory() { DisconnectFromGlobalSignal( &OnClearHistory ); @@ -1447,6 +1740,22 @@ bool OnMimeOverridden() return false; } +bool OnChangesWatch() +{ + DisconnectFromGlobalSignal( &OnChangesWatch ); + + if ( gInstance ) + { + MockWebEngineCookieManager* temp = (MockWebEngineCookieManager *)(&(gInstance->GetCookieManager())); + if ( temp ) + { + temp->mChangesWatchCallback(); + } + } + + return false; +} + } // namespace inline WebEngine& GetImplementation( Dali::WebEngine& webEngine ) @@ -1504,11 +1813,11 @@ WebEngine WebEngine::DownCast( BaseHandle handle ) return WebEngine( dynamic_cast< Internal::Adaptor::WebEngine* >( handle.GetObjectPtr() ) ); } -void WebEngine::Create( int width, int height, const std::string& locale, const std::string& timezoneId ) +void WebEngine::Create( uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId ) { } -void WebEngine::Create( int width, int height, int argc, char** argv ) +void WebEngine::Create( uint32_t width, uint32_t height, uint32_t argc, char** argv ) { } @@ -1682,6 +1991,16 @@ void WebEngine::JavaScriptPromptReply( const std::string& result ) { } +std::unique_ptr WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode) +{ + return Internal::Adaptor::GetImplementation(*this).CreateHitTest(x, y, mode); +} + +bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback) +{ + return Internal::Adaptor::GetImplementation(*this).CreateHitTestAsynchronously(x, y, mode, callback); +} + void WebEngine::ClearAllTilesResources() { } @@ -1714,12 +2033,12 @@ void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::st { } -Dali::PixelData WebEngine::GetScreenshot(Dali::Rect viewArea, float scaleFactor) +Dali::PixelData WebEngine::GetScreenshot(Dali::Rect viewArea, float scaleFactor) { return Internal::Adaptor::GetImplementation( *this ).GetScreenshot(viewArea, scaleFactor); } -bool WebEngine::GetScreenshotAsynchronously(Dali::Rect viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback) +bool WebEngine::GetScreenshotAsynchronously(Dali::Rect viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback) { return Internal::Adaptor::GetImplementation( *this ).GetScreenshotAsynchronously(viewArea, scaleFactor, callback); } @@ -1744,17 +2063,17 @@ void WebEngine::SetUserAgent( const std::string& userAgent ) Internal::Adaptor::GetImplementation( *this ).SetUserAgent( userAgent ); } -void WebEngine::ScrollBy( int dx, int dy ) +void WebEngine::ScrollBy( int32_t dx, int32_t dy ) { Internal::Adaptor::GetImplementation( *this ).ScrollBy( dx, dy ); } -bool WebEngine::ScrollEdgeBy( int dx, int dy ) +bool WebEngine::ScrollEdgeBy( int32_t dx, int32_t dy ) { return Internal::Adaptor::GetImplementation( *this ).ScrollEdgeBy( dx, dy ); } -void WebEngine::SetScrollPosition( int x, int y ) +void WebEngine::SetScrollPosition( int32_t x, int32_t y ) { Internal::Adaptor::GetImplementation( *this ).SetScrollPosition( x, y ); } @@ -1774,7 +2093,7 @@ Dali::Vector2 WebEngine::GetContentSize() const return Internal::Adaptor::GetImplementation( *this ).GetContentSize(); } -void WebEngine::SetSize( int width, int height ) +void WebEngine::SetSize( uint32_t width, uint32_t height ) { } @@ -1848,7 +2167,7 @@ float WebEngine::GetLoadProgressPercentage() const return Internal::Adaptor::GetImplementation( *this ).GetLoadProgressPercentage(); } -void WebEngine::UpdateDisplayArea( Dali::Rect< int > displayArea ) +void WebEngine::UpdateDisplayArea( Dali::Rect< int32_t > displayArea ) { } @@ -1934,5 +2253,15 @@ Dali::WebEnginePlugin::WebEngineHttpAuthHandlerSignalType& WebEngine::HttpAuthHa return Internal::Adaptor::GetImplementation(*this).HttpAuthHandlerSignal(); } +Dali::WebEnginePlugin::WebEngineContextMenuCustomizedSignalType& WebEngine::ContextMenuCustomizedSignal() +{ + return Internal::Adaptor::GetImplementation( *this ).ContextMenuCustomizedSignal(); +} + +Dali::WebEnginePlugin::WebEngineContextMenuItemSelectedSignalType& WebEngine::ContextMenuItemSelectedSignal() +{ + return Internal::Adaptor::GetImplementation( *this ).ContextMenuItemSelectedSignal(); +} + } // namespace Dali;