From: David Steele Date: Fri, 23 Jul 2021 10:33:01 +0000 (+0000) Subject: Merge "DALi Version 2.0.36" into devel/master X-Git-Tag: dali_2.0.37~12 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=bb7636f379eb67e93984aa0c2ae7208983a147ba;hp=acb0f024bfd94e2c29f3c14f5876ca15459e8042 Merge "DALi Version 2.0.36" into devel/master --- 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 e6f47a8..c1d8700 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 @@ -84,6 +84,7 @@ bool OnFormPasswordAcquired(); bool OnDownloadStarted(); bool OnMimeOverridden(); bool OnChangesWatch(); +bool OnPlainTextReceived(); static void ConnectToGlobalSignal( bool ( *func )() ) { @@ -1532,6 +1533,15 @@ public: mContextMenuHiddenCallback = callback; } + void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback) + { + if (callback) + { + ConnectToGlobalSignal(&OnPlainTextReceived); + mPlainTextReceivedCallback = callback; + } + } + std::string mUrl; std::vector mHistory; size_t mCurrentPlusOnePos; @@ -1577,6 +1587,7 @@ public: Dali::WebEnginePlugin::VideoPlayingCallback mVideoPlayingCallback; Dali::WebEnginePlugin::GeolocationPermissionCallback mGeolocationPermissionCallback; Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback mHitTestCreatedCallback; + Dali::WebEnginePlugin::PlainTextReceivedCallback mPlainTextReceivedCallback; }; @@ -1884,6 +1895,17 @@ bool OnChangesWatch() return false; } +bool OnPlainTextReceived() +{ + DisconnectFromGlobalSignal(&OnPlainTextReceived); + if (gInstance) + { + std::string dummyResultText; + gInstance->mPlainTextReceivedCallback(dummyResultText); + } + return false; +} + } // namespace inline WebEngine& GetImplementation( Dali::WebEngine& webEngine ) @@ -2391,5 +2413,10 @@ void WebEngine::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngi Internal::Adaptor::GetImplementation( *this ).RegisterContextMenuHiddenCallback(callback); } +void WebEngine::GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback) +{ + Internal::Adaptor::GetImplementation(*this).GetPlainTextAsynchronously(callback); +} + } // namespace Dali; diff --git a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp index 4f7d8fa..16518da 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp @@ -102,6 +102,7 @@ static int gContextMenuHiddenCallbackCalled = 0; static std::unique_ptr gContextMenuHiddenInstance = nullptr; static int gHitTestCreatedCallbackCalled = 0; static int gCookieManagerChangsWatchCallbackCalled = 0; +static int gPlainTextReceivedCallbackCalled = 0; struct CallbackFunctor { @@ -154,6 +155,12 @@ static bool OnHitTestCreated(std::unique_ptr test) return true; } +static bool OnPlainTextReceived(const std::string& plainText) +{ + gPlainTextReceivedCallbackCalled++; + return true; +} + static void OnPageLoadError(std::unique_ptr error) { gPageLoadErrorCallbackCalled++; @@ -2294,3 +2301,19 @@ int UtcDaliWebSettingsSetExtraFeature(void) END_TEST; } +int UtcDaliWebViewGetPlainText(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK(view); + + view.LoadUrl(TEST_URL1); + + view.GetPlainTextAsynchronously(&OnPlainTextReceived); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS(gPlainTextReceivedCallbackCalled, 1, TEST_LOCATION); + + END_TEST; +} + diff --git a/dali-toolkit/devel-api/controls/web-view/web-view.cpp b/dali-toolkit/devel-api/controls/web-view/web-view.cpp index bfa5502..7fff902 100755 --- a/dali-toolkit/devel-api/controls/web-view/web-view.cpp +++ b/dali-toolkit/devel-api/controls/web-view/web-view.cpp @@ -394,6 +394,11 @@ void WebView::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngine Dali::Toolkit::GetImpl(*this).RegisterContextMenuHiddenCallback(callback); } +void WebView::GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback) +{ + Dali::Toolkit::GetImpl(*this).GetPlainTextAsynchronously(callback); +} + WebView::WebView(Internal::WebView& implementation) : Control(implementation) { diff --git a/dali-toolkit/devel-api/controls/web-view/web-view.h b/dali-toolkit/devel-api/controls/web-view/web-view.h index b4e7688..fa8cee3 100755 --- a/dali-toolkit/devel-api/controls/web-view/web-view.h +++ b/dali-toolkit/devel-api/controls/web-view/web-view.h @@ -733,6 +733,13 @@ public: */ void RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback); + /** + * @brief Get a plain text of current web page asynchronously. + * + * @param[in] callback The callback function called asynchronously. + */ + void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback); + public: // Not intended for application developers /// @cond internal /** diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp old mode 100755 new mode 100644 index 170495c..e336f2c --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -766,6 +766,14 @@ void WebView::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngine } } +void WebView::GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback) +{ + if(mWebEngine) + { + mWebEngine.GetPlainTextAsynchronously(callback); + } +} + void WebView::OnFrameRendered() { if(mFrameRenderedCallback) diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.h b/dali-toolkit/internal/controls/web-view/web-view-impl.h index c2d6742..15f3ce3 100755 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.h +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.h @@ -392,6 +392,11 @@ public: */ void RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback); + /** + * @copydoc Dali::Toolkit::WebView::GetPlainTextAsynchronously() + */ + void GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback); + public: // Properties /** * @brief Called when a property of an object of this type is set.