| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 #include "ios/net/cookies/cookie_store_ios.h" | 5 #include "ios/net/cookies/cookie_store_ios.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 960 system_store_ != [NSHTTPCookieStorage sharedHTTPCookieStorage]) { | 960 system_store_ != [NSHTTPCookieStorage sharedHTTPCookieStorage]) { |
| 961 return; | 961 return; |
| 962 } | 962 } |
| 963 | 963 |
| 964 for (const auto& hook_map_entry : hook_map_) { | 964 for (const auto& hook_map_entry : hook_map_) { |
| 965 std::pair<GURL, std::string> key = hook_map_entry.first; | 965 std::pair<GURL, std::string> key = hook_map_entry.first; |
| 966 std::vector<net::CanonicalCookie> removed_cookies; | 966 std::vector<net::CanonicalCookie> removed_cookies; |
| 967 std::vector<net::CanonicalCookie> added_cookies; | 967 std::vector<net::CanonicalCookie> added_cookies; |
| 968 if (UpdateCacheForCookieFromSystem(key.first, key.second, &removed_cookies, | 968 if (UpdateCacheForCookieFromSystem(key.first, key.second, &removed_cookies, |
| 969 &added_cookies)) { | 969 &added_cookies)) { |
| 970 RunCallbacksForCookies(key.first, key.second, removed_cookies, true); | 970 RunCallbacksForCookies(key.first, key.second, removed_cookies, |
| 971 RunCallbacksForCookies(key.first, key.second, added_cookies, false); | 971 net::CookieStore::ChangeCause::UNKNOWN_DELETION); |
| 972 RunCallbacksForCookies(key.first, key.second, added_cookies, |
| 973 net::CookieStore::ChangeCause::INSERTED); |
| 972 } | 974 } |
| 973 } | 975 } |
| 974 | 976 |
| 975 // Do not schedule a flush if one is already scheduled. | 977 // Do not schedule a flush if one is already scheduled. |
| 976 if (!flush_closure_.IsCancelled()) | 978 if (!flush_closure_.IsCancelled()) |
| 977 return; | 979 return; |
| 978 | 980 |
| 979 flush_closure_.Reset(base::Bind(&CookieStoreIOS::FlushStore, | 981 flush_closure_.Reset(base::Bind(&CookieStoreIOS::FlushStore, |
| 980 weak_factory_.GetWeakPtr(), base::Closure())); | 982 weak_factory_.GetWeakPtr(), base::Closure())); |
| 981 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 983 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1013 std::vector<net::CanonicalCookie> system_cookies; | 1015 std::vector<net::CanonicalCookie> system_cookies; |
| 1014 GetSystemCookies(gurl, name, &system_cookies); | 1016 GetSystemCookies(gurl, name, &system_cookies); |
| 1015 return cookie_cache_->Update(gurl, name, system_cookies, out_removed_cookies, | 1017 return cookie_cache_->Update(gurl, name, system_cookies, out_removed_cookies, |
| 1016 out_added_cookies); | 1018 out_added_cookies); |
| 1017 } | 1019 } |
| 1018 | 1020 |
| 1019 void CookieStoreIOS::RunCallbacksForCookies( | 1021 void CookieStoreIOS::RunCallbacksForCookies( |
| 1020 const GURL& url, | 1022 const GURL& url, |
| 1021 const std::string& name, | 1023 const std::string& name, |
| 1022 const std::vector<net::CanonicalCookie>& cookies, | 1024 const std::vector<net::CanonicalCookie>& cookies, |
| 1023 bool removed) { | 1025 net::CookieStore::ChangeCause cause) { |
| 1024 DCHECK(thread_checker_.CalledOnValidThread()); | 1026 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1025 if (cookies.empty()) | 1027 if (cookies.empty()) |
| 1026 return; | 1028 return; |
| 1027 | 1029 |
| 1028 std::pair<GURL, std::string> key(url, name); | 1030 std::pair<GURL, std::string> key(url, name); |
| 1029 CookieChangedCallbackList* callbacks = hook_map_[key].get(); | 1031 CookieChangedCallbackList* callbacks = hook_map_[key].get(); |
| 1030 for (const auto& cookie : cookies) { | 1032 for (const auto& cookie : cookies) { |
| 1031 DCHECK_EQ(name, cookie.Name()); | 1033 DCHECK_EQ(name, cookie.Name()); |
| 1032 callbacks->Notify(cookie, removed); | 1034 callbacks->Notify(cookie, cause); |
| 1033 } | 1035 } |
| 1034 } | 1036 } |
| 1035 | 1037 |
| 1036 bool CookieStoreIOS::GetSystemCookies( | 1038 bool CookieStoreIOS::GetSystemCookies( |
| 1037 const GURL& gurl, | 1039 const GURL& gurl, |
| 1038 const std::string& name, | 1040 const std::string& name, |
| 1039 std::vector<net::CanonicalCookie>* cookies) { | 1041 std::vector<net::CanonicalCookie>* cookies) { |
| 1040 DCHECK(thread_checker_.CalledOnValidThread()); | 1042 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1041 NSURL* url = net::NSURLWithGURL(gurl); | 1043 NSURL* url = net::NSURLWithGURL(gurl); |
| 1042 NSArray* nscookies = [system_store_ cookiesForURL:url]; | 1044 NSArray* nscookies = [system_store_ cookiesForURL:url]; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1055 void CookieStoreIOS::GotCookieListFor(const std::pair<GURL, std::string> key, | 1057 void CookieStoreIOS::GotCookieListFor(const std::pair<GURL, std::string> key, |
| 1056 const net::CookieList& cookies) { | 1058 const net::CookieList& cookies) { |
| 1057 DCHECK(thread_checker_.CalledOnValidThread()); | 1059 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1058 | 1060 |
| 1059 net::CookieList filtered; | 1061 net::CookieList filtered; |
| 1060 OnlyCookiesWithName(cookies, key.second, &filtered); | 1062 OnlyCookiesWithName(cookies, key.second, &filtered); |
| 1061 std::vector<net::CanonicalCookie> removed_cookies; | 1063 std::vector<net::CanonicalCookie> removed_cookies; |
| 1062 std::vector<net::CanonicalCookie> added_cookies; | 1064 std::vector<net::CanonicalCookie> added_cookies; |
| 1063 if (cookie_cache_->Update(key.first, key.second, filtered, &removed_cookies, | 1065 if (cookie_cache_->Update(key.first, key.second, filtered, &removed_cookies, |
| 1064 &added_cookies)) { | 1066 &added_cookies)) { |
| 1065 RunCallbacksForCookies(key.first, key.second, removed_cookies, true); | 1067 RunCallbacksForCookies(key.first, key.second, removed_cookies, |
| 1066 RunCallbacksForCookies(key.first, key.second, added_cookies, false); | 1068 net::CookieStore::ChangeCause::UNKNOWN_DELETION); |
| 1069 RunCallbacksForCookies(key.first, key.second, added_cookies, |
| 1070 net::CookieStore::ChangeCause::INSERTED); |
| 1067 } | 1071 } |
| 1068 } | 1072 } |
| 1069 | 1073 |
| 1070 void CookieStoreIOS::DidClearNSHTTPCookieStorageCookies( | 1074 void CookieStoreIOS::DidClearNSHTTPCookieStorageCookies( |
| 1071 const DeleteCallback& delete_callback, | 1075 const DeleteCallback& delete_callback, |
| 1072 int num_deleted) { | 1076 int num_deleted) { |
| 1073 DCHECK(thread_checker_.CalledOnValidThread()); | 1077 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1074 | 1078 |
| 1075 CookieStoreIOSClient* client = net::GetCookieStoreIOSClient(); | 1079 CookieStoreIOSClient* client = net::GetCookieStoreIOSClient(); |
| 1076 DCHECK(client); | 1080 DCHECK(client); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1154 weak_factory_.GetWeakPtr(), callback); | 1158 weak_factory_.GetWeakPtr(), callback); |
| 1155 } | 1159 } |
| 1156 | 1160 |
| 1157 base::Closure CookieStoreIOS::WrapClosure(const base::Closure& callback) { | 1161 base::Closure CookieStoreIOS::WrapClosure(const base::Closure& callback) { |
| 1158 DCHECK(thread_checker_.CalledOnValidThread()); | 1162 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1159 return base::Bind(&CookieStoreIOS::UpdateCachesAfterClosure, | 1163 return base::Bind(&CookieStoreIOS::UpdateCachesAfterClosure, |
| 1160 weak_factory_.GetWeakPtr(), callback); | 1164 weak_factory_.GetWeakPtr(), callback); |
| 1161 } | 1165 } |
| 1162 | 1166 |
| 1163 } // namespace net | 1167 } // namespace net |
| OLD | NEW |