From c24f1189cd87b2dc9f8ecc7ad433d540acb0fce3 Mon Sep 17 00:00:00 2001 From: zhouleonlei Date: Wed, 17 Mar 2021 16:08:19 +0800 Subject: [PATCH 1/1] Add changesWatch for webview cookie Change-Id: Ice11a906d847d8abf4fcfe5317e2d1b0935825d1 --- .../dali-toolkit-test-utils/toolkit-web-engine.cpp | 29 ++++++++++++++++++++++ .../src/dali-toolkit/utc-Dali-WebView.cpp | 23 +++++++++++++++++ .../controls/web-view/web-cookie-manager.cpp | 5 ++++ .../controls/web-view/web-cookie-manager.h | 7 ++++++ 4 files changed, 64 insertions(+) mode change 100644 => 100755 dali-toolkit/devel-api/controls/web-view/web-cookie-manager.cpp 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 430615d..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 @@ -83,6 +83,7 @@ bool OnStorageUsageAcquired(); bool OnFormPasswordAcquired(); bool OnDownloadStarted(); bool OnMimeOverridden(); +bool OnChangesWatch(); static void ConnectToGlobalSignal( bool ( *func )() ) { @@ -256,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; }; @@ -1727,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 ) diff --git a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp index 39ebd29..a4ae7e1 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp @@ -101,6 +101,7 @@ static std::shared_ptr gContextMenuInstance = nullpt static int gContextMenuItemSelectedCallbackCalled = 0; static std::shared_ptr gContextMenuItemInstance = nullptr; static int gHitTestCreatedCallbackCalled = 0; +static int gCookieManagerChangsWatchCallbackCalled = 0; struct CallbackFunctor { @@ -204,6 +205,11 @@ static bool OnTouched( Actor actor, const Dali::TouchEvent& touch ) return true; } +static void OnChangesWatch() +{ + gCookieManagerChangsWatchCallbackCalled++; +} + static bool OnHovered( Actor actor, const Dali::HoverEvent& hover ) { gHovered = true; @@ -1696,6 +1702,23 @@ int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void) END_TEST; } +int UtcDaliWebCookieManagerChangesWatch(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager(); + DALI_TEST_CHECK( cookieManager != 0 ) + + cookieManager->ChangesWatch(&OnChangesWatch); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gCookieManagerChangsWatchCallbackCalled, 1, TEST_LOCATION ); + + END_TEST; +} + // test cases for web settings. int UtcDaliWebSettingsGetSetDefaultFontSize(void) diff --git a/dali-toolkit/devel-api/controls/web-view/web-cookie-manager.cpp b/dali-toolkit/devel-api/controls/web-view/web-cookie-manager.cpp old mode 100644 new mode 100755 index fba924a..61529a8 --- a/dali-toolkit/devel-api/controls/web-view/web-cookie-manager.cpp +++ b/dali-toolkit/devel-api/controls/web-view/web-cookie-manager.cpp @@ -51,6 +51,11 @@ void WebCookieManager::SetPersistentStorage(const std::string& path, Dali::WebEn mWebEngineCookieManager.SetPersistentStorage(path, storage); } +void WebCookieManager::ChangesWatch(Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback callback) +{ + mWebEngineCookieManager.ChangesWatch(callback); +} + } // namespace Toolkit } // namespace Dali diff --git a/dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h b/dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h index adb133a..421db32 100755 --- a/dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h +++ b/dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h @@ -93,6 +93,13 @@ public: */ void SetPersistentStorage(const std::string& path, Dali::WebEngineCookieManager::CookiePersistentStorage storage); + /** + * @brief Watch for cookies' changes in @a manager. + * + * @param[in] callback cookies are added, removed or modified. + */ + void ChangesWatch(Dali::WebEngineCookieManager::WebEngineCookieManagerChangesWatchCallback callback); + private: Dali::WebEngineCookieManager& mWebEngineCookieManager; }; -- 2.7.4