| 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 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 : NSHTTPCookieAcceptPolicyNever; | 320 : NSHTTPCookieAcceptPolicyNever; |
| 321 NSHTTPCookieStorage* store = [NSHTTPCookieStorage sharedHTTPCookieStorage]; | 321 NSHTTPCookieStorage* store = [NSHTTPCookieStorage sharedHTTPCookieStorage]; |
| 322 NSHTTPCookieAcceptPolicy current_policy = [store cookieAcceptPolicy]; | 322 NSHTTPCookieAcceptPolicy current_policy = [store cookieAcceptPolicy]; |
| 323 if (current_policy == policy) | 323 if (current_policy == policy) |
| 324 return; | 324 return; |
| 325 [store setCookieAcceptPolicy:policy]; | 325 [store setCookieAcceptPolicy:policy]; |
| 326 NotificationTrampoline::GetInstance()->NotifyCookiePolicyChanged(); | 326 NotificationTrampoline::GetInstance()->NotifyCookiePolicyChanged(); |
| 327 } | 327 } |
| 328 | 328 |
| 329 // static | 329 // static |
| 330 scoped_ptr<CookieStoreIOS> CookieStoreIOS::CreateCookieStore( | 330 std::unique_ptr<CookieStoreIOS> CookieStoreIOS::CreateCookieStore( |
| 331 NSHTTPCookieStorage* cookie_storage) { | 331 NSHTTPCookieStorage* cookie_storage) { |
| 332 DCHECK(cookie_storage); | 332 DCHECK(cookie_storage); |
| 333 // TODO(huey): Update this when CrNet supports multiple cookie jars. | 333 // TODO(huey): Update this when CrNet supports multiple cookie jars. |
| 334 [cookie_storage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; | 334 [cookie_storage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; |
| 335 | 335 |
| 336 // Create a cookie store with no persistent store backing. Then, populate | 336 // Create a cookie store with no persistent store backing. Then, populate |
| 337 // it from the system's cookie jar. | 337 // it from the system's cookie jar. |
| 338 scoped_ptr<CookieStoreIOS> cookie_store( | 338 std::unique_ptr<CookieStoreIOS> cookie_store( |
| 339 new CookieStoreIOS(nullptr, cookie_storage)); | 339 new CookieStoreIOS(nullptr, cookie_storage)); |
| 340 cookie_store->synchronization_state_ = SYNCHRONIZED; | 340 cookie_store->synchronization_state_ = SYNCHRONIZED; |
| 341 cookie_store->FlushStore(base::Closure()); | 341 cookie_store->FlushStore(base::Closure()); |
| 342 return cookie_store; | 342 return cookie_store; |
| 343 } | 343 } |
| 344 | 344 |
| 345 // static | 345 // static |
| 346 void CookieStoreIOS::SwitchSynchronizedStore(CookieStoreIOS* old_store, | 346 void CookieStoreIOS::SwitchSynchronizedStore(CookieStoreIOS* old_store, |
| 347 CookieStoreIOS* new_store) { | 347 CookieStoreIOS* new_store) { |
| 348 DCHECK(new_store); | 348 DCHECK(new_store); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 475 // should be written there instead. | 475 // should be written there instead. |
| 476 DCHECK(SystemCookiesAllowed()); | 476 DCHECK(SystemCookiesAllowed()); |
| 477 | 477 |
| 478 bool success = false; | 478 bool success = false; |
| 479 | 479 |
| 480 if (creation_time.is_null()) | 480 if (creation_time.is_null()) |
| 481 creation_time = base::Time::Now(); | 481 creation_time = base::Time::Now(); |
| 482 | 482 |
| 483 // First create a CanonicalCookie, to normalize the arguments, | 483 // First create a CanonicalCookie, to normalize the arguments, |
| 484 // particularly domain and path, and perform validation. | 484 // particularly domain and path, and perform validation. |
| 485 scoped_ptr<net::CanonicalCookie> canonical_cookie = | 485 std::unique_ptr<net::CanonicalCookie> canonical_cookie = |
| 486 net::CanonicalCookie::Create( | 486 net::CanonicalCookie::Create( |
| 487 url, name, value, domain, path, creation_time, expiration_time, | 487 url, name, value, domain, path, creation_time, expiration_time, |
| 488 secure, http_only, same_site, enforce_strict_secure, | 488 secure, http_only, same_site, enforce_strict_secure, priority); |
| 489 priority); | |
| 490 | 489 |
| 491 if (canonical_cookie) { | 490 if (canonical_cookie) { |
| 492 NSHTTPCookie* cookie = | 491 NSHTTPCookie* cookie = |
| 493 SystemCookieFromCanonicalCookie(*canonical_cookie); | 492 SystemCookieFromCanonicalCookie(*canonical_cookie); |
| 494 | 493 |
| 495 if (cookie != nil) { | 494 if (cookie != nil) { |
| 496 [system_store_ setCookie:cookie]; | 495 [system_store_ setCookie:cookie]; |
| 497 creation_time_manager_->SetCreationTime( | 496 creation_time_manager_->SetCreationTime( |
| 498 cookie, creation_time_manager_->MakeUniqueCreationTime( | 497 cookie, creation_time_manager_->MakeUniqueCreationTime( |
| 499 canonical_cookie->CreationDate())); | 498 canonical_cookie->CreationDate())); |
| (...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 974 // Do not schedule a flush if one is already scheduled. | 973 // Do not schedule a flush if one is already scheduled. |
| 975 if (!flush_closure_.IsCancelled()) | 974 if (!flush_closure_.IsCancelled()) |
| 976 return; | 975 return; |
| 977 | 976 |
| 978 flush_closure_.Reset(base::Bind(&CookieStoreIOS::FlushStore, | 977 flush_closure_.Reset(base::Bind(&CookieStoreIOS::FlushStore, |
| 979 weak_factory_.GetWeakPtr(), base::Closure())); | 978 weak_factory_.GetWeakPtr(), base::Closure())); |
| 980 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 979 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 981 FROM_HERE, flush_closure_.callback(), flush_delay_); | 980 FROM_HERE, flush_closure_.callback(), flush_delay_); |
| 982 } | 981 } |
| 983 | 982 |
| 984 scoped_ptr<net::CookieStore::CookieChangedSubscription> | 983 std::unique_ptr<net::CookieStore::CookieChangedSubscription> |
| 985 CookieStoreIOS::AddCallbackForCookie(const GURL& gurl, | 984 CookieStoreIOS::AddCallbackForCookie(const GURL& gurl, |
| 986 const std::string& name, | 985 const std::string& name, |
| 987 const CookieChangedCallback& callback) { | 986 const CookieChangedCallback& callback) { |
| 988 DCHECK(thread_checker_.CalledOnValidThread()); | 987 DCHECK(thread_checker_.CalledOnValidThread()); |
| 989 | 988 |
| 990 // Prefill cookie cache with all pertinent cookies for |url| if needed. | 989 // Prefill cookie cache with all pertinent cookies for |url| if needed. |
| 991 std::pair<GURL, std::string> key(gurl, name); | 990 std::pair<GURL, std::string> key(gurl, name); |
| 992 if (hook_map_.count(key) == 0) { | 991 if (hook_map_.count(key) == 0) { |
| 993 UpdateCacheForCookieFromSystem(gurl, name, nullptr, nullptr); | 992 UpdateCacheForCookieFromSystem(gurl, name, nullptr, nullptr); |
| 994 if (hook_map_.count(key) == 0) | 993 if (hook_map_.count(key) == 0) |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 weak_factory_.GetWeakPtr(), callback); | 1152 weak_factory_.GetWeakPtr(), callback); |
| 1154 } | 1153 } |
| 1155 | 1154 |
| 1156 base::Closure CookieStoreIOS::WrapClosure(const base::Closure& callback) { | 1155 base::Closure CookieStoreIOS::WrapClosure(const base::Closure& callback) { |
| 1157 DCHECK(thread_checker_.CalledOnValidThread()); | 1156 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1158 return base::Bind(&CookieStoreIOS::UpdateCachesAfterClosure, | 1157 return base::Bind(&CookieStoreIOS::UpdateCachesAfterClosure, |
| 1159 weak_factory_.GetWeakPtr(), callback); | 1158 weak_factory_.GetWeakPtr(), callback); |
| 1160 } | 1159 } |
| 1161 | 1160 |
| 1162 } // namespace net | 1161 } // namespace net |
| OLD | NEW |