| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef ANDROID_WEBVIEW_BROWSER_NET_AW_COOKIE_STORE_WRAPPER_H_ | 5 #ifndef ANDROID_WEBVIEW_BROWSER_NET_AW_COOKIE_STORE_WRAPPER_H_ |
| 6 #define ANDROID_WEBVIEW_BROWSER_NET_AW_COOKIE_STORE_WRAPPER_H_ | 6 #define ANDROID_WEBVIEW_BROWSER_NET_AW_COOKIE_STORE_WRAPPER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 // The CookieManager must outlive the AwCookieStoreWrapper. | 37 // The CookieManager must outlive the AwCookieStoreWrapper. |
| 38 class AwCookieStoreWrapper : public net::CookieStore { | 38 class AwCookieStoreWrapper : public net::CookieStore { |
| 39 public: | 39 public: |
| 40 AwCookieStoreWrapper(); | 40 AwCookieStoreWrapper(); |
| 41 ~AwCookieStoreWrapper() override; | 41 ~AwCookieStoreWrapper() override; |
| 42 | 42 |
| 43 // CookieStore implementation: | 43 // CookieStore implementation: |
| 44 void SetCookieWithOptionsAsync(const GURL& url, | 44 void SetCookieWithOptionsAsync(const GURL& url, |
| 45 const std::string& cookie_line, | 45 const std::string& cookie_line, |
| 46 const net::CookieOptions& options, | 46 const net::CookieOptions& options, |
| 47 const SetCookiesCallback& callback) override; | 47 SetCookiesCallback callback) override; |
| 48 void SetCookieWithDetailsAsync(const GURL& url, | 48 void SetCookieWithDetailsAsync(const GURL& url, |
| 49 const std::string& name, | 49 const std::string& name, |
| 50 const std::string& value, | 50 const std::string& value, |
| 51 const std::string& domain, | 51 const std::string& domain, |
| 52 const std::string& path, | 52 const std::string& path, |
| 53 base::Time creation_time, | 53 base::Time creation_time, |
| 54 base::Time expiration_time, | 54 base::Time expiration_time, |
| 55 base::Time last_access_time, | 55 base::Time last_access_time, |
| 56 bool secure, | 56 bool secure, |
| 57 bool http_only, | 57 bool http_only, |
| 58 net::CookieSameSite same_site, | 58 net::CookieSameSite same_site, |
| 59 net::CookiePriority priority, | 59 net::CookiePriority priority, |
| 60 const SetCookiesCallback& callback) override; | 60 SetCookiesCallback callback) override; |
| 61 void SetCanonicalCookieAsync(std::unique_ptr<net::CanonicalCookie> cookie, | 61 void SetCanonicalCookieAsync(std::unique_ptr<net::CanonicalCookie> cookie, |
| 62 bool secure_source, | 62 bool secure_source, |
| 63 bool modify_http_only, | 63 bool modify_http_only, |
| 64 const SetCookiesCallback& callback) override; | 64 SetCookiesCallback callback) override; |
| 65 void GetCookiesWithOptionsAsync(const GURL& url, | 65 void GetCookiesWithOptionsAsync(const GURL& url, |
| 66 const net::CookieOptions& options, | 66 const net::CookieOptions& options, |
| 67 const GetCookiesCallback& callback) override; | 67 GetCookiesCallback callback) override; |
| 68 void GetCookieListWithOptionsAsync( | 68 void GetCookieListWithOptionsAsync(const GURL& url, |
| 69 const GURL& url, | 69 const net::CookieOptions& options, |
| 70 const net::CookieOptions& options, | 70 GetCookieListCallback callback) override; |
| 71 const GetCookieListCallback& callback) override; | 71 void GetAllCookiesAsync(GetCookieListCallback callback) override; |
| 72 void GetAllCookiesAsync(const GetCookieListCallback& callback) override; | |
| 73 void DeleteCookieAsync(const GURL& url, | 72 void DeleteCookieAsync(const GURL& url, |
| 74 const std::string& cookie_name, | 73 const std::string& cookie_name, |
| 75 const base::Closure& callback) override; | 74 base::OnceClosure callback) override; |
| 76 void DeleteCanonicalCookieAsync(const net::CanonicalCookie& cookie, | 75 void DeleteCanonicalCookieAsync(const net::CanonicalCookie& cookie, |
| 77 const DeleteCallback& callback) override; | 76 DeleteCallback callback) override; |
| 78 void DeleteAllCreatedBetweenAsync(const base::Time& delete_begin, | 77 void DeleteAllCreatedBetweenAsync(const base::Time& delete_begin, |
| 79 const base::Time& delete_end, | 78 const base::Time& delete_end, |
| 80 const DeleteCallback& callback) override; | 79 DeleteCallback callback) override; |
| 81 void DeleteAllCreatedBetweenWithPredicateAsync( | 80 void DeleteAllCreatedBetweenWithPredicateAsync( |
| 82 const base::Time& delete_begin, | 81 const base::Time& delete_begin, |
| 83 const base::Time& delete_end, | 82 const base::Time& delete_end, |
| 84 const CookiePredicate& predicate, | 83 const CookiePredicate& predicate, |
| 85 const DeleteCallback& callback) override; | 84 DeleteCallback callback) override; |
| 86 void DeleteSessionCookiesAsync(const DeleteCallback& callback) override; | 85 void DeleteSessionCookiesAsync(DeleteCallback callback) override; |
| 87 void FlushStore(const base::Closure& callback) override; | 86 void FlushStore(base::OnceClosure callback) override; |
| 88 void SetForceKeepSessionState() override; | 87 void SetForceKeepSessionState() override; |
| 89 std::unique_ptr<CookieChangedSubscription> AddCallbackForCookie( | 88 std::unique_ptr<CookieChangedSubscription> AddCallbackForCookie( |
| 90 const GURL& url, | 89 const GURL& url, |
| 91 const std::string& name, | 90 const std::string& name, |
| 92 const CookieChangedCallback& callback) override; | 91 const CookieChangedCallback& callback) override; |
| 93 bool IsEphemeral() override; | 92 bool IsEphemeral() override; |
| 94 | 93 |
| 95 private: | 94 private: |
| 96 // Used by CreateWrappedCallback below. Takes an arugment of Type and posts | 95 // Used by CreateWrappedCallback below. Takes an argument of Type and posts |
| 97 // a task to |task_runner| to invoke |callback| with that argument. If | 96 // a task to |task_runner| to invoke |callback| with that argument. If |
| 98 // |weak_cookie_store| is deleted before the task is run, the task will not | 97 // |weak_cookie_store| is deleted before the task is run, the task will not |
| 99 // be run. | 98 // be run. |
| 100 template <class Type> | 99 template <class Type> |
| 101 static void RunCallbackOnClientThread( | 100 static void RunCallbackOnClientThread( |
| 102 base::TaskRunner* task_runner, | 101 base::TaskRunner* task_runner, |
| 103 base::WeakPtr<AwCookieStoreWrapper> weak_cookie_store, | 102 base::WeakPtr<AwCookieStoreWrapper> weak_cookie_store, |
| 104 base::Callback<void(Type)> callback, | 103 base::OnceCallback<void(Type)> callback, |
| 105 Type argument) { | 104 Type argument) { |
| 106 task_runner->PostTask( | 105 task_runner->PostTask( |
| 107 FROM_HERE, | 106 FROM_HERE, |
| 108 base::Bind(&AwCookieStoreWrapper::RunClosureCallback, weak_cookie_store, | 107 base::BindOnce(&AwCookieStoreWrapper::RunClosureCallback, |
| 109 base::Bind(callback, argument))); | 108 weak_cookie_store, |
| 109 base::BindOnce(std::move(callback), argument))); |
| 110 } | 110 } |
| 111 | 111 |
| 112 // Returns a base::Callback that takes an argument of Type and posts a task to | 112 // Returns a base::Callback that takes an argument of Type and posts a task to |
| 113 // the |client_task_runner_| to invoke |callback| with that argument. | 113 // the |client_task_runner_| to invoke |callback| with that argument. |
| 114 template <class Type> | 114 template <class Type> |
| 115 base::Callback<void(Type)> CreateWrappedCallback( | 115 base::OnceCallback<void(Type)> CreateWrappedCallback( |
| 116 base::Callback<void(Type)> callback) { | 116 base::OnceCallback<void(Type)> callback) { |
| 117 if (callback.is_null()) | 117 if (callback.is_null()) |
| 118 return callback; | 118 return std::move(callback); |
| 119 return base::Bind(&AwCookieStoreWrapper::RunCallbackOnClientThread<Type>, | 119 return base::BindOnce( |
| 120 base::RetainedRef(client_task_runner_), | 120 &AwCookieStoreWrapper::RunCallbackOnClientThread<Type>, |
| 121 weak_factory_.GetWeakPtr(), callback); | 121 base::RetainedRef(client_task_runner_), weak_factory_.GetWeakPtr(), |
| 122 std::move(callback)); |
| 122 } | 123 } |
| 123 | 124 |
| 124 // Returns a base::Closure that posts a task to the |client_task_runner_| to | 125 // Returns a base::OnceClosure that posts a task to the |client_task_runner_| |
| 125 // invoke |callback|. | 126 // to invoke |callback|. |
| 126 base::Closure CreateWrappedClosureCallback(const base::Closure& callback); | 127 base::OnceClosure CreateWrappedClosureCallback(base::OnceClosure callback); |
| 127 | 128 |
| 128 // Runs |callback|. Used to prevent callbacks from being invoked after the | 129 // Runs |callback|. Used to prevent callbacks from being invoked after the |
| 129 // AwCookieStoreWrapper has been destroyed. | 130 // AwCookieStoreWrapper has been destroyed. |
| 130 void RunClosureCallback(const base::Closure& callback); | 131 void RunClosureCallback(base::OnceClosure callback); |
| 131 | 132 |
| 132 scoped_refptr<base::SingleThreadTaskRunner> client_task_runner_; | 133 scoped_refptr<base::SingleThreadTaskRunner> client_task_runner_; |
| 133 | 134 |
| 134 base::WeakPtrFactory<AwCookieStoreWrapper> weak_factory_; | 135 base::WeakPtrFactory<AwCookieStoreWrapper> weak_factory_; |
| 135 }; | 136 }; |
| 136 | 137 |
| 137 } // namespace android_webview | 138 } // namespace android_webview |
| 138 | 139 |
| 139 #endif // ANDROID_WEBVIEW_BROWSER_NET_AW_COOKIE_STORE_WRAPPER_H_ | 140 #endif // ANDROID_WEBVIEW_BROWSER_NET_AW_COOKIE_STORE_WRAPPER_H_ |
| OLD | NEW |