From 0d70a26cc6f894ffed6031108567049a1333fda4 Mon Sep 17 00:00:00 2001 From: "yh106.jung" Date: Tue, 28 Mar 2017 13:35:50 +0900 Subject: [PATCH] [M85 Migration][API] Add ewk APIs to allow cookies for file scheme URLs This patch adds below two APIs. - ewk_cookie_manager_file_scheme_cookies_allow_get: Queries if the cookie manager allows cookies for file scheme URLs. - ewk_cookie_manager_file_scheme_cookies_allow_set: Sets whether cookie manager to accept cookies for file scheme URLs. References: https://review.tizen.org/gerrit/c/platform/framework/web/chromium-efl/+/219886 Change-Id: Ieedc2b1374f65c77765809dad2abd39f80c3a909 Signed-off-by: yh106.jung --- tizen_src/ewk/efl_integration/cookie_manager.cc | 27 ++++++++++++++++++++++ tizen_src/ewk/efl_integration/cookie_manager.h | 6 +++++ .../efl_integration/public/ewk_cookie_manager.cc | 7 +++--- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/tizen_src/ewk/efl_integration/cookie_manager.cc b/tizen_src/ewk/efl_integration/cookie_manager.cc index 044680f..3bdf5dc 100644 --- a/tizen_src/ewk/efl_integration/cookie_manager.cc +++ b/tizen_src/ewk/efl_integration/cookie_manager.cc @@ -275,6 +275,33 @@ bool CookieManager::AllowSetCookie(const GURL& url, return AllowCookies(url, net::SiteForCookies::FromUrl(first_party), true); } +bool CookieManager::IsFileSchemeCookiesAllowed() { + auto cookie_monster = + static_cast(GetCookieStore().get()); + if (!cookie_monster) + return false; + + AutoLock lock(file_scheme_lock_); + return cookie_monster->IsCookieableScheme(url::kFileScheme); +} + +void CookieManager::SetAcceptFileSchemeCookies(bool accept) { + auto cookie_monster = + static_cast(GetCookieStore().get()); + if (!cookie_monster) + return; + + std::vector schemes( + CookieMonster::kDefaultCookieableSchemes, + CookieMonster::kDefaultCookieableSchemes + + CookieMonster::kDefaultCookieableSchemesCount); + if (accept) + schemes.push_back(url::kFileScheme); + + AutoLock lock(file_scheme_lock_); + cookie_monster->SetCookieableSchemes(schemes, base::DoNothing()); +} + static void SignalGetCookieValueCompleted(base::WaitableEvent* completion, std::string* result, const std::string& value) { diff --git a/tizen_src/ewk/efl_integration/cookie_manager.h b/tizen_src/ewk/efl_integration/cookie_manager.h index 842cf87..0a90df6 100644 --- a/tizen_src/ewk/efl_integration/cookie_manager.h +++ b/tizen_src/ewk/efl_integration/cookie_manager.h @@ -92,6 +92,10 @@ class CookieManager : public base::RefCountedThreadSafe { return weak_ptr_factory_.GetWeakPtr(); } + // file scheme + bool IsFileSchemeCookiesAllowed(); + void SetAcceptFileSchemeCookies(bool accept); + private: struct EwkGetHostCallback; @@ -114,6 +118,8 @@ class CookieManager : public base::RefCountedThreadSafe { // This only mutates on the UI thread. std::queue< EwkGetHostCallback* > host_callback_queue_; base::WeakPtrFactory weak_ptr_factory_; + // file scheme + base::Lock file_scheme_lock_; DISALLOW_COPY_AND_ASSIGN(CookieManager); }; diff --git a/tizen_src/ewk/efl_integration/public/ewk_cookie_manager.cc b/tizen_src/ewk/efl_integration/public/ewk_cookie_manager.cc index 5633cee..287843f 100644 --- a/tizen_src/ewk/efl_integration/public/ewk_cookie_manager.cc +++ b/tizen_src/ewk/efl_integration/public/ewk_cookie_manager.cc @@ -96,13 +96,14 @@ void ewk_cookie_manager_cookies_clear(Ewk_Cookie_Manager* manager) Eina_Bool ewk_cookie_manager_file_scheme_cookies_allow_get(Ewk_Cookie_Manager* manager) { - LOG_EWK_API_MOCKUP(); - return false; + EWK_COOKIE_MANAGER_GET_OR_RETURN(manager, cookie_manager, EINA_FALSE); + return cookie_manager->IsFileSchemeCookiesAllowed(); } void ewk_cookie_manager_file_scheme_cookies_allow_set(Ewk_Cookie_Manager* manager, Eina_Bool allow) { - LOG_EWK_API_MOCKUP(); + EWK_COOKIE_MANAGER_GET_OR_RETURN(manager, cookie_manager); + cookie_manager->SetAcceptFileSchemeCookies(allow); } -- 2.7.4