Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2039)

Unified Diff: android_webview/native/cookie_manager.cc

Issue 2863233002: [WebView] Move files from native to browser (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/native/cookie_manager.cc
diff --git a/android_webview/native/cookie_manager.cc b/android_webview/native/cookie_manager.cc
deleted file mode 100644
index 33c24db65f945453c355c109dd80ee2a80e3704a..0000000000000000000000000000000000000000
--- a/android_webview/native/cookie_manager.cc
+++ /dev/null
@@ -1,647 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "android_webview/native/cookie_manager.h"
-
-#include <memory>
-#include <utility>
-#include <vector>
-
-#include "android_webview/browser/aw_browser_context.h"
-#include "android_webview/browser/aw_cookie_access_policy.h"
-#include "android_webview/browser/net/init_native_callback.h"
-#include "base/android/jni_string.h"
-#include "base/android/path_utils.h"
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/lazy_instance.h"
-#include "base/location.h"
-#include "base/logging.h"
-#include "base/memory/ref_counted.h"
-#include "base/path_service.h"
-#include "base/single_thread_task_runner.h"
-#include "base/synchronization/lock.h"
-#include "base/synchronization/waitable_event.h"
-#include "base/threading/sequenced_worker_pool.h"
-#include "base/threading/thread.h"
-#include "base/threading/thread_restrictions.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/cookie_store_factory.h"
-#include "jni/AwCookieManager_jni.h"
-#include "net/cookies/cookie_monster.h"
-#include "net/cookies/cookie_options.h"
-#include "net/cookies/cookie_store.h"
-#include "net/cookies/parsed_cookie.h"
-#include "net/extras/sqlite/cookie_crypto_delegate.h"
-#include "net/url_request/url_request_context.h"
-#include "url/url_constants.h"
-
-using base::FilePath;
-using base::WaitableEvent;
-using base::android::ConvertJavaStringToUTF8;
-using base::android::ConvertJavaStringToUTF16;
-using base::android::JavaParamRef;
-using base::android::ScopedJavaGlobalRef;
-using base::android::ScopedJavaLocalRef;
-using content::BrowserThread;
-using net::CookieList;
-
-// In the future, we may instead want to inject an explicit CookieStore
-// dependency into this object during process initialization to avoid
-// depending on the URLRequestContext.
-// See issue http://crbug.com/157683
-
-// On the CookieManager methods without a callback and methods with a callback
-// when that callback is null can be called from any thread, including threads
-// without a message loop. Methods with a non-null callback must be called on
-// a thread with a running message loop.
-
-namespace android_webview {
-
-namespace {
-
-typedef base::Callback<void(bool)> BoolCallback;
-typedef base::Callback<void(int)> IntCallback;
-
-// Holds a Java BooleanCookieCallback, knows how to invoke it and turn it
-// into a base callback.
-class BoolCookieCallbackHolder {
- public:
- BoolCookieCallbackHolder(JNIEnv* env, jobject callback) {
- callback_.Reset(env, callback);
- }
-
- void Invoke(bool result) {
- if (!callback_.is_null()) {
- JNIEnv* env = base::android::AttachCurrentThread();
- Java_AwCookieManager_invokeBooleanCookieCallback(env, callback_, result);
- }
- }
-
- static BoolCallback ConvertToCallback(
- std::unique_ptr<BoolCookieCallbackHolder> me) {
- return base::Bind(&BoolCookieCallbackHolder::Invoke,
- base::Owned(me.release()));
- }
-
- private:
- ScopedJavaGlobalRef<jobject> callback_;
- DISALLOW_COPY_AND_ASSIGN(BoolCookieCallbackHolder);
-};
-
-// Construct a closure which signals a waitable event if and when the closure
-// is called the waitable event must still exist.
-static base::Closure SignalEventClosure(WaitableEvent* completion) {
- return base::Bind(&WaitableEvent::Signal, base::Unretained(completion));
-}
-
-static void DiscardBool(const base::Closure& f, bool b) {
- f.Run();
-}
-
-static BoolCallback BoolCallbackAdapter(const base::Closure& f) {
- return base::Bind(&DiscardBool, f);
-}
-
-static void DiscardInt(const base::Closure& f, int i) {
- f.Run();
-}
-
-static IntCallback IntCallbackAdapter(const base::Closure& f) {
- return base::Bind(&DiscardInt, f);
-}
-
-// Are cookies allowed for file:// URLs by default?
-const bool kDefaultFileSchemeAllowed = false;
-
-void ImportLegacyCookieStore(const FilePath& cookie_store_path) {
- // We use the old cookie store to create the new cookie store only if the
- // new cookie store does not exist.
- if (base::PathExists(cookie_store_path))
- return;
-
- // WebViewClassic gets the database path from Context and appends a
- // hardcoded name. See:
- // https://android.googlesource.com/platform/frameworks/base/+/bf6f6f9d/core/java/android/webkit/JniUtil.java
- // https://android.googlesource.com/platform/external/webkit/+/7151e/
- // Source/WebKit/android/WebCoreSupport/WebCookieJar.cpp
- FilePath old_cookie_store_path;
- base::android::GetDatabaseDirectory(&old_cookie_store_path);
- old_cookie_store_path = old_cookie_store_path.Append(
- FILE_PATH_LITERAL("webviewCookiesChromium.db"));
- if (base::PathExists(old_cookie_store_path) &&
- !base::Move(old_cookie_store_path, cookie_store_path)) {
- LOG(WARNING) << "Failed to move old cookie store path from "
- << old_cookie_store_path.AsUTF8Unsafe() << " to "
- << cookie_store_path.AsUTF8Unsafe();
- }
-}
-
-void GetUserDataDir(FilePath* user_data_dir) {
- if (!PathService::Get(base::DIR_ANDROID_APP_DATA, user_data_dir)) {
- NOTREACHED() << "Failed to get app data directory for Android WebView";
- }
-}
-
-} // namespace
-
-// CookieManager creates and owns Webview's CookieStore, in addition to handling
-// calls into the CookieStore from Java.
-//
-// Since Java calls can be made on the IO Thread, and must synchronously return
-// a result, and the CookieStore API allows it to asynchronously return results,
-// the CookieStore must be run on its own thread, to prevent deadlock.
-class CookieManager {
- public:
- static CookieManager* GetInstance();
-
- // Returns the TaskRunner on which the CookieStore lives.
- base::SingleThreadTaskRunner* GetCookieStoreTaskRunner();
- // Returns the CookieStore, creating it if necessary. This must only be called
- // on the CookieStore TaskRunner.
- net::CookieStore* GetCookieStore();
-
- void SetShouldAcceptCookies(bool accept);
- bool GetShouldAcceptCookies();
- void SetCookie(const GURL& host,
- const std::string& cookie_value,
- std::unique_ptr<BoolCookieCallbackHolder> callback);
- void SetCookieSync(const GURL& host, const std::string& cookie_value);
- std::string GetCookie(const GURL& host);
- void RemoveSessionCookies(std::unique_ptr<BoolCookieCallbackHolder> callback);
- void RemoveAllCookies(std::unique_ptr<BoolCookieCallbackHolder> callback);
- void RemoveAllCookiesSync();
- void RemoveSessionCookiesSync();
- void RemoveExpiredCookies();
- void FlushCookieStore();
- bool HasCookies();
- bool AllowFileSchemeCookies();
- void SetAcceptFileSchemeCookies(bool accept);
-
- private:
- friend struct base::LazyInstanceTraitsBase<CookieManager>;
-
- CookieManager();
- ~CookieManager();
-
- void ExecCookieTaskSync(const base::Callback<void(BoolCallback)>& task);
- void ExecCookieTaskSync(const base::Callback<void(IntCallback)>& task);
- void ExecCookieTaskSync(const base::Callback<void(base::Closure)>& task);
- void ExecCookieTask(const base::Closure& task);
-
- void SetCookieHelper(const GURL& host,
- const std::string& value,
- BoolCallback callback);
-
- void GetCookieValueAsyncHelper(const GURL& host,
- std::string* result,
- base::Closure complete);
- void GetCookieValueCompleted(base::Closure complete,
- std::string* result,
- const std::string& value);
-
- void RemoveSessionCookiesHelper(BoolCallback callback);
- void RemoveAllCookiesHelper(BoolCallback callback);
- void RemoveCookiesCompleted(BoolCallback callback, int num_deleted);
-
- void FlushCookieStoreAsyncHelper(base::Closure complete);
-
- void HasCookiesAsyncHelper(bool* result, base::Closure complete);
- void HasCookiesCompleted(base::Closure complete,
- bool* result,
- const net::CookieList& cookies);
-
- // This protects the following two bools, as they're used on multiple threads.
- base::Lock accept_file_scheme_cookies_lock_;
- // True if cookies should be allowed for file URLs. Can only be changed prior
- // to creating the CookieStore.
- bool accept_file_scheme_cookies_;
- // True once the cookie store has been created. Just used to track when
- // |accept_file_scheme_cookies_| can no longer be modified.
- bool cookie_store_created_;
-
- base::Thread cookie_store_client_thread_;
- base::Thread cookie_store_backend_thread_;
-
- scoped_refptr<base::SingleThreadTaskRunner> cookie_store_task_runner_;
- std::unique_ptr<net::CookieStore> cookie_store_;
-
- DISALLOW_COPY_AND_ASSIGN(CookieManager);
-};
-
-namespace {
-base::LazyInstance<CookieManager>::Leaky g_lazy_instance;
-}
-
-// static
-CookieManager* CookieManager::GetInstance() {
- return g_lazy_instance.Pointer();
-}
-
-CookieManager::CookieManager()
- : accept_file_scheme_cookies_(kDefaultFileSchemeAllowed),
- cookie_store_created_(false),
- cookie_store_client_thread_("CookieMonsterClient"),
- cookie_store_backend_thread_("CookieMonsterBackend") {
- cookie_store_client_thread_.Start();
- cookie_store_backend_thread_.Start();
- cookie_store_task_runner_ = cookie_store_client_thread_.task_runner();
-}
-
-CookieManager::~CookieManager() {
-}
-
-// Executes the |task| on |cookie_store_task_runner_| and waits for it to
-// complete before returning.
-//
-// To execute a CookieTask synchronously you must arrange for Signal to be
-// called on the waitable event at some point. You can call the bool or int
-// versions of ExecCookieTaskSync, these will supply the caller with a dummy
-// callback which takes an int/bool, throws it away and calls Signal.
-// Alternatively you can call the version which supplies a Closure in which
-// case you must call Run on it when you want the unblock the calling code.
-//
-// Ignore a bool callback.
-void CookieManager::ExecCookieTaskSync(
- const base::Callback<void(BoolCallback)>& task) {
- WaitableEvent completion(base::WaitableEvent::ResetPolicy::AUTOMATIC,
- base::WaitableEvent::InitialState::NOT_SIGNALED);
- ExecCookieTask(
- base::Bind(task, BoolCallbackAdapter(SignalEventClosure(&completion))));
- base::ThreadRestrictions::ScopedAllowWait wait;
- completion.Wait();
-}
-
-// Ignore an int callback.
-void CookieManager::ExecCookieTaskSync(
- const base::Callback<void(IntCallback)>& task) {
- WaitableEvent completion(base::WaitableEvent::ResetPolicy::AUTOMATIC,
- base::WaitableEvent::InitialState::NOT_SIGNALED);
- ExecCookieTask(
- base::Bind(task, IntCallbackAdapter(SignalEventClosure(&completion))));
- base::ThreadRestrictions::ScopedAllowWait wait;
- completion.Wait();
-}
-
-// Call the supplied closure when you want to signal that the blocked code can
-// continue.
-void CookieManager::ExecCookieTaskSync(
- const base::Callback<void(base::Closure)>& task) {
- WaitableEvent completion(base::WaitableEvent::ResetPolicy::AUTOMATIC,
- base::WaitableEvent::InitialState::NOT_SIGNALED);
- ExecCookieTask(base::Bind(task, SignalEventClosure(&completion)));
- base::ThreadRestrictions::ScopedAllowWait wait;
- completion.Wait();
-}
-
-// Executes the |task| using |cookie_store_task_runner_|.
-void CookieManager::ExecCookieTask(const base::Closure& task) {
- cookie_store_task_runner_->PostTask(FROM_HERE, task);
-}
-
-base::SingleThreadTaskRunner* CookieManager::GetCookieStoreTaskRunner() {
- return cookie_store_task_runner_.get();
-}
-
-net::CookieStore* CookieManager::GetCookieStore() {
- DCHECK(cookie_store_task_runner_->RunsTasksOnCurrentThread());
-
- if (!cookie_store_) {
- FilePath user_data_dir;
- GetUserDataDir(&user_data_dir);
- FilePath cookie_store_path =
- user_data_dir.Append(FILE_PATH_LITERAL("Cookies"));
-
- cookie_store_backend_thread_.task_runner()->PostTask(
- FROM_HERE, base::Bind(ImportLegacyCookieStore, cookie_store_path));
-
- content::CookieStoreConfig cookie_config(
- cookie_store_path, content::CookieStoreConfig::RESTORED_SESSION_COOKIES,
- nullptr, nullptr);
- cookie_config.client_task_runner = cookie_store_task_runner_;
- cookie_config.background_task_runner =
- cookie_store_backend_thread_.task_runner();
-
- {
- base::AutoLock lock(accept_file_scheme_cookies_lock_);
-
- // There are some unknowns about how to correctly handle file:// cookies,
- // and our implementation for this is not robust. http://crbug.com/582985
- //
- // TODO(mmenke): This call should be removed once we can deprecate and
- // remove the Android WebView 'CookieManager::setAcceptFileSchemeCookies'
- // method. Until then, note that this is just not a great idea.
- cookie_config.cookieable_schemes.insert(
- cookie_config.cookieable_schemes.begin(),
- net::CookieMonster::kDefaultCookieableSchemes,
- net::CookieMonster::kDefaultCookieableSchemes +
- net::CookieMonster::kDefaultCookieableSchemesCount);
- if (accept_file_scheme_cookies_)
- cookie_config.cookieable_schemes.push_back(url::kFileScheme);
- cookie_store_created_ = true;
- }
-
- cookie_store_ = content::CreateCookieStore(cookie_config);
- }
-
- return cookie_store_.get();
-}
-
-void CookieManager::SetShouldAcceptCookies(bool accept) {
- AwCookieAccessPolicy::GetInstance()->SetShouldAcceptCookies(accept);
-}
-
-bool CookieManager::GetShouldAcceptCookies() {
- return AwCookieAccessPolicy::GetInstance()->GetShouldAcceptCookies();
-}
-
-void CookieManager::SetCookie(
- const GURL& host,
- const std::string& cookie_value,
- std::unique_ptr<BoolCookieCallbackHolder> callback_holder) {
- BoolCallback callback =
- BoolCookieCallbackHolder::ConvertToCallback(std::move(callback_holder));
- ExecCookieTask(base::Bind(&CookieManager::SetCookieHelper,
- base::Unretained(this),
- host,
- cookie_value,
- callback));
-}
-
-void CookieManager::SetCookieSync(const GURL& host,
- const std::string& cookie_value) {
- ExecCookieTaskSync(base::Bind(&CookieManager::SetCookieHelper,
- base::Unretained(this),
- host,
- cookie_value));
-}
-
-void CookieManager::SetCookieHelper(
- const GURL& host,
- const std::string& value,
- const BoolCallback callback) {
- net::CookieOptions options;
- options.set_include_httponly();
-
- // Log message for catching strict secure cookies related bugs.
- // TODO(sgurun) temporary. Add UMA stats to monitor, and remove afterwards.
- if (host.is_valid() &&
- (!host.has_scheme() || host.SchemeIs(url::kHttpScheme))) {
- net::ParsedCookie parsed_cookie(value);
- if (parsed_cookie.IsValid() && parsed_cookie.IsSecure()) {
- LOG(WARNING) << "Strict Secure Cookie policy does not allow setting a "
- "secure cookie for "
- << host.spec();
- GURL::Replacements replace_host;
- replace_host.SetSchemeStr("https");
- GURL new_host = host.ReplaceComponents(replace_host);
- GetCookieStore()->SetCookieWithOptionsAsync(new_host, value, options,
- callback);
- return;
- }
- }
-
- GetCookieStore()->SetCookieWithOptionsAsync(host, value, options, callback);
-}
-
-std::string CookieManager::GetCookie(const GURL& host) {
- std::string cookie_value;
- ExecCookieTaskSync(base::Bind(&CookieManager::GetCookieValueAsyncHelper,
- base::Unretained(this),
- host,
- &cookie_value));
- return cookie_value;
-}
-
-void CookieManager::GetCookieValueAsyncHelper(
- const GURL& host,
- std::string* result,
- base::Closure complete) {
- net::CookieOptions options;
- options.set_include_httponly();
-
- GetCookieStore()->GetCookiesWithOptionsAsync(
- host, options, base::Bind(&CookieManager::GetCookieValueCompleted,
- base::Unretained(this), complete, result));
-}
-
-void CookieManager::GetCookieValueCompleted(base::Closure complete,
- std::string* result,
- const std::string& value) {
- *result = value;
- complete.Run();
-}
-
-void CookieManager::RemoveSessionCookies(
- std::unique_ptr<BoolCookieCallbackHolder> callback_holder) {
- BoolCallback callback =
- BoolCookieCallbackHolder::ConvertToCallback(std::move(callback_holder));
- ExecCookieTask(base::Bind(&CookieManager::RemoveSessionCookiesHelper,
- base::Unretained(this),
- callback));
-}
-
-void CookieManager::RemoveSessionCookiesSync() {
- ExecCookieTaskSync(base::Bind(&CookieManager::RemoveSessionCookiesHelper,
- base::Unretained(this)));
-}
-
-void CookieManager::RemoveSessionCookiesHelper(
- BoolCallback callback) {
- GetCookieStore()->DeleteSessionCookiesAsync(
- base::Bind(&CookieManager::RemoveCookiesCompleted, base::Unretained(this),
- callback));
-}
-
-void CookieManager::RemoveCookiesCompleted(
- BoolCallback callback,
- int num_deleted) {
- callback.Run(num_deleted > 0);
-}
-
-void CookieManager::RemoveAllCookies(
- std::unique_ptr<BoolCookieCallbackHolder> callback_holder) {
- BoolCallback callback =
- BoolCookieCallbackHolder::ConvertToCallback(std::move(callback_holder));
- ExecCookieTask(base::Bind(&CookieManager::RemoveAllCookiesHelper,
- base::Unretained(this),
- callback));
-}
-
-void CookieManager::RemoveAllCookiesSync() {
- ExecCookieTaskSync(base::Bind(&CookieManager::RemoveAllCookiesHelper,
- base::Unretained(this)));
-}
-
-void CookieManager::RemoveAllCookiesHelper(
- const BoolCallback callback) {
- GetCookieStore()->DeleteAllAsync(
- base::Bind(&CookieManager::RemoveCookiesCompleted, base::Unretained(this),
- callback));
-}
-
-void CookieManager::RemoveExpiredCookies() {
- // HasCookies will call GetAllCookiesAsync, which in turn will force a GC.
- HasCookies();
-}
-
-void CookieManager::FlushCookieStore() {
- ExecCookieTaskSync(base::Bind(&CookieManager::FlushCookieStoreAsyncHelper,
- base::Unretained(this)));
-}
-
-void CookieManager::FlushCookieStoreAsyncHelper(
- base::Closure complete) {
- GetCookieStore()->FlushStore(complete);
-}
-
-bool CookieManager::HasCookies() {
- bool has_cookies;
- ExecCookieTaskSync(base::Bind(&CookieManager::HasCookiesAsyncHelper,
- base::Unretained(this),
- &has_cookies));
- return has_cookies;
-}
-
-// TODO(kristianm): Simplify this, copying the entire list around
-// should not be needed.
-void CookieManager::HasCookiesAsyncHelper(bool* result,
- base::Closure complete) {
- GetCookieStore()->GetAllCookiesAsync(
- base::Bind(&CookieManager::HasCookiesCompleted, base::Unretained(this),
- complete, result));
-}
-
-void CookieManager::HasCookiesCompleted(base::Closure complete,
- bool* result,
- const CookieList& cookies) {
- *result = cookies.size() != 0;
- complete.Run();
-}
-
-bool CookieManager::AllowFileSchemeCookies() {
- base::AutoLock lock(accept_file_scheme_cookies_lock_);
- return accept_file_scheme_cookies_;
-}
-
-void CookieManager::SetAcceptFileSchemeCookies(bool accept) {
- base::AutoLock lock(accept_file_scheme_cookies_lock_);
- // Can only modify this before the cookie store is created.
- if (!cookie_store_created_)
- accept_file_scheme_cookies_ = accept;
-}
-
-static void SetShouldAcceptCookies(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- jboolean accept) {
- CookieManager::GetInstance()->SetShouldAcceptCookies(accept);
-}
-
-static jboolean GetShouldAcceptCookies(JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- return CookieManager::GetInstance()->GetShouldAcceptCookies();
-}
-
-static void SetCookie(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jstring>& url,
- const JavaParamRef<jstring>& value,
- const JavaParamRef<jobject>& java_callback) {
- GURL host(ConvertJavaStringToUTF16(env, url));
- std::string cookie_value(ConvertJavaStringToUTF8(env, value));
- std::unique_ptr<BoolCookieCallbackHolder> callback(
- new BoolCookieCallbackHolder(env, java_callback));
- CookieManager::GetInstance()->SetCookie(host, cookie_value,
- std::move(callback));
-}
-
-static void SetCookieSync(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jstring>& url,
- const JavaParamRef<jstring>& value) {
- GURL host(ConvertJavaStringToUTF16(env, url));
- std::string cookie_value(ConvertJavaStringToUTF8(env, value));
-
- CookieManager::GetInstance()->SetCookieSync(host, cookie_value);
-}
-
-static ScopedJavaLocalRef<jstring> GetCookie(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jstring>& url) {
- GURL host(ConvertJavaStringToUTF16(env, url));
-
- return base::android::ConvertUTF8ToJavaString(
- env, CookieManager::GetInstance()->GetCookie(host));
-}
-
-static void RemoveSessionCookies(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jobject>& java_callback) {
- std::unique_ptr<BoolCookieCallbackHolder> callback(
- new BoolCookieCallbackHolder(env, java_callback));
- CookieManager::GetInstance()->RemoveSessionCookies(std::move(callback));
-}
-
-static void RemoveSessionCookiesSync(JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- CookieManager::GetInstance()->RemoveSessionCookiesSync();
-}
-
-static void RemoveAllCookies(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jobject>& java_callback) {
- std::unique_ptr<BoolCookieCallbackHolder> callback(
- new BoolCookieCallbackHolder(env, java_callback));
- CookieManager::GetInstance()->RemoveAllCookies(std::move(callback));
-}
-
-static void RemoveAllCookiesSync(JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- CookieManager::GetInstance()->RemoveAllCookiesSync();
-}
-
-static void RemoveExpiredCookies(JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- CookieManager::GetInstance()->RemoveExpiredCookies();
-}
-
-static void FlushCookieStore(JNIEnv* env, const JavaParamRef<jobject>& obj) {
- CookieManager::GetInstance()->FlushCookieStore();
-}
-
-static jboolean HasCookies(JNIEnv* env, const JavaParamRef<jobject>& obj) {
- return CookieManager::GetInstance()->HasCookies();
-}
-
-static jboolean AllowFileSchemeCookies(JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- return CookieManager::GetInstance()->AllowFileSchemeCookies();
-}
-
-static void SetAcceptFileSchemeCookies(JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- jboolean accept) {
- return CookieManager::GetInstance()->SetAcceptFileSchemeCookies(accept);
-}
-
-// The following two methods are used to avoid a circular project dependency.
-// TODO(mmenke): This is weird. Maybe there should be a leaky Singleton in
-// browser/net that creates and owns there?
-
-scoped_refptr<base::SingleThreadTaskRunner> GetCookieStoreTaskRunner() {
- return CookieManager::GetInstance()->GetCookieStoreTaskRunner();
-}
-
-net::CookieStore* GetCookieStore() {
- return CookieManager::GetInstance()->GetCookieStore();
-}
-
-bool RegisterCookieManager(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-
-} // android_webview namespace

Powered by Google App Engine
This is Rietveld 408576698