[M85 Migration][API] Add ewk APIs to allow cookies for file scheme URLs 71/245371/2
authoryh106.jung <yh106.jung@samsung.com>
Tue, 28 Mar 2017 04:35:50 +0000 (13:35 +0900)
committerBot Blink <blinkbot@samsung.com>
Mon, 12 Oct 2020 07:11:02 +0000 (07:11 +0000)
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 <yh106.jung@samsung.com>
tizen_src/ewk/efl_integration/cookie_manager.cc
tizen_src/ewk/efl_integration/cookie_manager.h
tizen_src/ewk/efl_integration/public/ewk_cookie_manager.cc

index 044680f..3bdf5dc 100644 (file)
@@ -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<net::CookieMonster*>(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<net::CookieMonster*>(GetCookieStore().get());
+  if (!cookie_monster)
+    return;
+
+  std::vector<std::string> 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) {
index 842cf87..0a90df6 100644 (file)
@@ -92,6 +92,10 @@ class CookieManager : public base::RefCountedThreadSafe<CookieManager> {
     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<CookieManager> {
   // This only mutates on the UI thread.
   std::queue< EwkGetHostCallback* > host_callback_queue_;
   base::WeakPtrFactory<CookieManager> weak_ptr_factory_;
+  // file scheme
+  base::Lock file_scheme_lock_;
 
   DISALLOW_COPY_AND_ASSIGN(CookieManager);
 };
index 5633cee..287843f 100644 (file)
@@ -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);
 }