OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 // Brought to you by the letter D and the number 2. | 5 // Brought to you by the letter D and the number 2. |
6 | 6 |
7 #ifndef NET_COOKIES_COOKIE_MONSTER_H_ | 7 #ifndef NET_COOKIES_COOKIE_MONSTER_H_ |
8 #define NET_COOKIES_COOKIE_MONSTER_H_ | 8 #define NET_COOKIES_COOKIE_MONSTER_H_ |
9 | 9 |
10 #include <deque> | 10 #include <deque> |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 const std::string& name, | 164 const std::string& name, |
165 const std::string& value, | 165 const std::string& value, |
166 const std::string& domain, | 166 const std::string& domain, |
167 const std::string& path, | 167 const std::string& path, |
168 const base::Time& expiration_time, | 168 const base::Time& expiration_time, |
169 bool secure, | 169 bool secure, |
170 bool http_only, | 170 bool http_only, |
171 CookiePriority priority, | 171 CookiePriority priority, |
172 const SetCookiesCallback& callback); | 172 const SetCookiesCallback& callback); |
173 | 173 |
174 | |
175 // Returns all the cookies, for use in management UI, etc. This does not mark | 174 // Returns all the cookies, for use in management UI, etc. This does not mark |
176 // the cookies as having been accessed. | 175 // the cookies as having been accessed. |
177 // The returned cookies are ordered by longest path, then by earliest | 176 // The returned cookies are ordered by longest path, then by earliest |
178 // creation date. | 177 // creation date. |
179 void GetAllCookiesAsync(const GetCookieListCallback& callback); | 178 void GetAllCookiesAsync(const GetCookieListCallback& callback); |
180 | 179 |
181 // Returns all the cookies, for use in management UI, etc. Filters results | 180 // Returns all the cookies, for use in management UI, etc. Filters results |
182 // using given url scheme, host / domain and path and options. This does not | 181 // using given url scheme, host / domain and path and options. This does not |
183 // mark the cookies as having been accessed. | 182 // mark the cookies as having been accessed. |
184 // The returned cookies are ordered by longest path, then earliest | 183 // The returned cookies are ordered by longest path, then earliest |
185 // creation date. | 184 // creation date. |
186 void GetAllCookiesForURLWithOptionsAsync( | 185 void GetAllCookiesForURLWithOptionsAsync( |
187 const GURL& url, | 186 const GURL& url, |
188 const CookieOptions& options, | 187 const CookieOptions& options, |
189 const GetCookieListCallback& callback); | 188 const GetCookieListCallback& callback); |
190 | 189 |
191 // Deletes all of the cookies. | 190 // Deletes all of the cookies. |
192 void DeleteAllAsync(const DeleteCallback& callback); | 191 void DeleteAllAsync(const DeleteCallback& callback); |
193 | 192 |
194 // Deletes all cookies that match the host of the given URL | 193 // Deletes all cookies that match the host of the given URL |
195 // regardless of path. This includes all http_only and secure cookies, | 194 // regardless of path. This includes all http_only and secure cookies, |
196 // but does not include any domain cookies that may apply to this host. | 195 // but does not include any domain cookies that may apply to this host. |
197 // Returns the number of cookies deleted. | 196 // Returns the number of cookies deleted. |
198 void DeleteAllForHostAsync(const GURL& url, | 197 void DeleteAllForHostAsync(const GURL& url, const DeleteCallback& callback); |
199 const DeleteCallback& callback); | |
200 | 198 |
201 // Deletes one specific cookie. | 199 // Deletes one specific cookie. |
202 void DeleteCanonicalCookieAsync(const CanonicalCookie& cookie, | 200 void DeleteCanonicalCookieAsync(const CanonicalCookie& cookie, |
203 const DeleteCookieCallback& callback); | 201 const DeleteCookieCallback& callback); |
204 | 202 |
205 // Checks whether for a given ETLD+1, there currently exist any cookies. | 203 // Checks whether for a given ETLD+1, there currently exist any cookies. |
206 void HasCookiesForETLDP1Async(const std::string& etldp1, | 204 void HasCookiesForETLDP1Async(const std::string& etldp1, |
207 const HasCookiesForETLDP1Callback& callback); | 205 const HasCookiesForETLDP1Callback& callback); |
208 | 206 |
209 // Resets the list of cookieable schemes to the supplied schemes. | 207 // Resets the list of cookieable schemes to the supplied schemes. |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 scoped_ptr<CookieChangedSubscription> AddCallbackForCookie( | 316 scoped_ptr<CookieChangedSubscription> AddCallbackForCookie( |
319 const GURL& url, | 317 const GURL& url, |
320 const std::string& name, | 318 const std::string& name, |
321 const CookieChangedCallback& callback) override; | 319 const CookieChangedCallback& callback) override; |
322 | 320 |
323 bool loaded(); | 321 bool loaded(); |
324 | 322 |
325 private: | 323 private: |
326 // For queueing the cookie monster calls. | 324 // For queueing the cookie monster calls. |
327 class CookieMonsterTask; | 325 class CookieMonsterTask; |
328 template <typename Result> class DeleteTask; | 326 template <typename Result> |
| 327 class DeleteTask; |
329 class DeleteAllCreatedBetweenTask; | 328 class DeleteAllCreatedBetweenTask; |
330 class DeleteAllCreatedBetweenForHostTask; | 329 class DeleteAllCreatedBetweenForHostTask; |
331 class DeleteAllForHostTask; | 330 class DeleteAllForHostTask; |
332 class DeleteAllTask; | 331 class DeleteAllTask; |
333 class DeleteCookieTask; | 332 class DeleteCookieTask; |
334 class DeleteCanonicalCookieTask; | 333 class DeleteCanonicalCookieTask; |
335 class GetAllCookiesForURLWithOptionsTask; | 334 class GetAllCookiesForURLWithOptionsTask; |
336 class GetAllCookiesTask; | 335 class GetAllCookiesTask; |
337 class GetCookiesWithOptionsTask; | 336 class GetCookiesWithOptionsTask; |
338 class SetCookieWithDetailsTask; | 337 class SetCookieWithDetailsTask; |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 // was invoked and is used for reporting histogram_time_blocked_on_load_. | 487 // was invoked and is used for reporting histogram_time_blocked_on_load_. |
489 // See PersistentCookieStore::Load for details on the contents of cookies. | 488 // See PersistentCookieStore::Load for details on the contents of cookies. |
490 void OnLoaded(base::TimeTicks beginning_time, | 489 void OnLoaded(base::TimeTicks beginning_time, |
491 const std::vector<CanonicalCookie*>& cookies); | 490 const std::vector<CanonicalCookie*>& cookies); |
492 | 491 |
493 // Stores cookies loaded from the backing store and invokes the deferred | 492 // Stores cookies loaded from the backing store and invokes the deferred |
494 // task(s) pending loading of cookies associated with the domain key | 493 // task(s) pending loading of cookies associated with the domain key |
495 // (eTLD+1). Called when all cookies for the domain key(eTLD+1) have been | 494 // (eTLD+1). Called when all cookies for the domain key(eTLD+1) have been |
496 // loaded from DB. See PersistentCookieStore::Load for details on the contents | 495 // loaded from DB. See PersistentCookieStore::Load for details on the contents |
497 // of cookies. | 496 // of cookies. |
498 void OnKeyLoaded( | 497 void OnKeyLoaded(const std::string& key, |
499 const std::string& key, | 498 const std::vector<CanonicalCookie*>& cookies); |
500 const std::vector<CanonicalCookie*>& cookies); | |
501 | 499 |
502 // Stores the loaded cookies. | 500 // Stores the loaded cookies. |
503 void StoreLoadedCookies(const std::vector<CanonicalCookie*>& cookies); | 501 void StoreLoadedCookies(const std::vector<CanonicalCookie*>& cookies); |
504 | 502 |
505 // Invokes deferred calls. | 503 // Invokes deferred calls. |
506 void InvokeQueue(); | 504 void InvokeQueue(); |
507 | 505 |
508 // Checks that |cookies_| matches our invariants, and tries to repair any | 506 // Checks that |cookies_| matches our invariants, and tries to repair any |
509 // inconsistencies. (In other words, it does not have duplicate cookies). | 507 // inconsistencies. (In other words, it does not have duplicate cookies). |
510 void EnsureCookiesMapIsValid(); | 508 void EnsureCookiesMapIsValid(); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
561 const base::Time& creation_time, | 559 const base::Time& creation_time, |
562 const CookieOptions& options); | 560 const CookieOptions& options); |
563 | 561 |
564 void InternalUpdateCookieAccessTime(CanonicalCookie* cc, | 562 void InternalUpdateCookieAccessTime(CanonicalCookie* cc, |
565 const base::Time& current_time); | 563 const base::Time& current_time); |
566 | 564 |
567 // |deletion_cause| argument is used for collecting statistics and choosing | 565 // |deletion_cause| argument is used for collecting statistics and choosing |
568 // the correct CookieMonsterDelegate::ChangeCause for OnCookieChanged | 566 // the correct CookieMonsterDelegate::ChangeCause for OnCookieChanged |
569 // notifications. Guarantee: All iterators to cookies_ except to the | 567 // notifications. Guarantee: All iterators to cookies_ except to the |
570 // deleted entry remain vaild. | 568 // deleted entry remain vaild. |
571 void InternalDeleteCookie(CookieMap::iterator it, bool sync_to_store, | 569 void InternalDeleteCookie(CookieMap::iterator it, |
| 570 bool sync_to_store, |
572 DeletionCause deletion_cause); | 571 DeletionCause deletion_cause); |
573 | 572 |
574 // If the number of cookies for CookieMap key |key|, or globally, are | 573 // If the number of cookies for CookieMap key |key|, or globally, are |
575 // over the preset maximums above, garbage collect, first for the host and | 574 // over the preset maximums above, garbage collect, first for the host and |
576 // then globally. See comments above garbage collection threshold | 575 // then globally. See comments above garbage collection threshold |
577 // constants for details. | 576 // constants for details. |
578 // | 577 // |
579 // Returns the number of cookies deleted (useful for debugging). | 578 // Returns the number of cookies deleted (useful for debugging). |
580 int GarbageCollect(const base::Time& current, const std::string& key); | 579 int GarbageCollect(const base::Time& current, const std::string& key); |
581 | 580 |
(...skipping 29 matching lines...) Expand all Loading... |
611 // ugly and increment when we've seen the same time twice. | 610 // ugly and increment when we've seen the same time twice. |
612 base::Time CurrentTime(); | 611 base::Time CurrentTime(); |
613 | 612 |
614 // Runs the task if, or defers the task until, the full cookie database is | 613 // Runs the task if, or defers the task until, the full cookie database is |
615 // loaded. | 614 // loaded. |
616 void DoCookieTask(const scoped_refptr<CookieMonsterTask>& task_item); | 615 void DoCookieTask(const scoped_refptr<CookieMonsterTask>& task_item); |
617 | 616 |
618 // Runs the task if, or defers the task until, the cookies for the given URL | 617 // Runs the task if, or defers the task until, the cookies for the given URL |
619 // are loaded. | 618 // are loaded. |
620 void DoCookieTaskForURL(const scoped_refptr<CookieMonsterTask>& task_item, | 619 void DoCookieTaskForURL(const scoped_refptr<CookieMonsterTask>& task_item, |
621 const GURL& url); | 620 const GURL& url); |
622 | 621 |
623 // Run all cookie changed callbacks that are monitoring |cookie|. | 622 // Run all cookie changed callbacks that are monitoring |cookie|. |
624 // |removed| is true if the cookie was deleted. | 623 // |removed| is true if the cookie was deleted. |
625 void RunCallbacks(const CanonicalCookie& cookie, bool removed); | 624 void RunCallbacks(const CanonicalCookie& cookie, bool removed); |
626 | 625 |
627 // Histogram variables; see CookieMonster::InitializeHistograms() in | 626 // Histogram variables; see CookieMonster::InitializeHistograms() in |
628 // cookie_monster.cc for details. | 627 // cookie_monster.cc for details. |
629 base::HistogramBase* histogram_expiration_duration_minutes_; | 628 base::HistogramBase* histogram_expiration_duration_minutes_; |
630 base::HistogramBase* histogram_between_access_interval_minutes_; | 629 base::HistogramBase* histogram_between_access_interval_minutes_; |
631 base::HistogramBase* histogram_evicted_last_access_minutes_; | 630 base::HistogramBase* histogram_evicted_last_access_minutes_; |
(...skipping 15 matching lines...) Expand all Loading... |
647 // Indicates whether loading from the backend store is completed and | 646 // Indicates whether loading from the backend store is completed and |
648 // calls may be immediately processed. | 647 // calls may be immediately processed. |
649 bool loaded_; | 648 bool loaded_; |
650 | 649 |
651 // List of domain keys that have been loaded from the DB. | 650 // List of domain keys that have been loaded from the DB. |
652 std::set<std::string> keys_loaded_; | 651 std::set<std::string> keys_loaded_; |
653 | 652 |
654 // Map of domain keys to their associated task queues. These tasks are blocked | 653 // Map of domain keys to their associated task queues. These tasks are blocked |
655 // until all cookies for the associated domain key eTLD+1 are loaded from the | 654 // until all cookies for the associated domain key eTLD+1 are loaded from the |
656 // backend store. | 655 // backend store. |
657 std::map<std::string, std::deque<scoped_refptr<CookieMonsterTask> > > | 656 std::map<std::string, std::deque<scoped_refptr<CookieMonsterTask>>> |
658 tasks_pending_for_key_; | 657 tasks_pending_for_key_; |
659 | 658 |
660 // Queues tasks that are blocked until all cookies are loaded from the backend | 659 // Queues tasks that are blocked until all cookies are loaded from the backend |
661 // store. | 660 // store. |
662 std::queue<scoped_refptr<CookieMonsterTask> > tasks_pending_; | 661 std::queue<scoped_refptr<CookieMonsterTask>> tasks_pending_; |
663 | 662 |
664 scoped_refptr<PersistentCookieStore> store_; | 663 scoped_refptr<PersistentCookieStore> store_; |
665 | 664 |
666 base::Time last_time_seen_; | 665 base::Time last_time_seen_; |
667 | 666 |
668 // Minimum delay after updating a cookie's LastAccessDate before we will | 667 // Minimum delay after updating a cookie's LastAccessDate before we will |
669 // update it again. | 668 // update it again. |
670 const base::TimeDelta last_access_threshold_; | 669 const base::TimeDelta last_access_threshold_; |
671 | 670 |
672 // Approximate date of access time of least recently accessed cookie | 671 // Approximate date of access time of least recently accessed cookie |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 virtual ~PersistentCookieStore() {} | 786 virtual ~PersistentCookieStore() {} |
788 | 787 |
789 private: | 788 private: |
790 friend class base::RefCountedThreadSafe<PersistentCookieStore>; | 789 friend class base::RefCountedThreadSafe<PersistentCookieStore>; |
791 DISALLOW_COPY_AND_ASSIGN(PersistentCookieStore); | 790 DISALLOW_COPY_AND_ASSIGN(PersistentCookieStore); |
792 }; | 791 }; |
793 | 792 |
794 } // namespace net | 793 } // namespace net |
795 | 794 |
796 #endif // NET_COOKIES_COOKIE_MONSTER_H_ | 795 #endif // NET_COOKIES_COOKIE_MONSTER_H_ |
OLD | NEW |