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 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 void SetForceKeepSessionState(); | 227 void SetForceKeepSessionState(); |
228 | 228 |
229 // Flush the backing store (if any) to disk and post the given callback when | 229 // Flush the backing store (if any) to disk and post the given callback when |
230 // done. | 230 // done. |
231 // WARNING: THE CALLBACK WILL RUN ON A RANDOM THREAD. IT MUST BE THREAD SAFE. | 231 // WARNING: THE CALLBACK WILL RUN ON A RANDOM THREAD. IT MUST BE THREAD SAFE. |
232 // It may be posted to the current thread, or it may run on the thread that | 232 // It may be posted to the current thread, or it may run on the thread that |
233 // actually does the flushing. Your Task should generally post a notification | 233 // actually does the flushing. Your Task should generally post a notification |
234 // to the thread you actually want to be notified on. | 234 // to the thread you actually want to be notified on. |
235 void FlushStore(const base::Closure& callback); | 235 void FlushStore(const base::Closure& callback); |
236 | 236 |
| 237 // Replaces all the cookies by |list|. This method does not flush the backend. |
| 238 void SetAllCookiesAsync(const CookieList& list, |
| 239 const SetCookiesCallback& callback); |
| 240 |
237 // CookieStore implementation. | 241 // CookieStore implementation. |
238 | 242 |
239 // Sets the cookies specified by |cookie_list| returned from |url| | 243 // Sets the cookies specified by |cookie_list| returned from |url| |
240 // with options |options| in effect. | 244 // with options |options| in effect. |
241 void SetCookieWithOptionsAsync(const GURL& url, | 245 void SetCookieWithOptionsAsync(const GURL& url, |
242 const std::string& cookie_line, | 246 const std::string& cookie_line, |
243 const CookieOptions& options, | 247 const CookieOptions& options, |
244 const SetCookiesCallback& callback) override; | 248 const SetCookiesCallback& callback) override; |
245 | 249 |
246 // Gets all cookies that apply to |url| given |options|. | 250 // Gets all cookies that apply to |url| given |options|. |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 class DeleteTask; | 319 class DeleteTask; |
316 class DeleteAllCreatedBetweenTask; | 320 class DeleteAllCreatedBetweenTask; |
317 class DeleteAllCreatedBetweenForHostTask; | 321 class DeleteAllCreatedBetweenForHostTask; |
318 class DeleteAllForHostTask; | 322 class DeleteAllForHostTask; |
319 class DeleteAllTask; | 323 class DeleteAllTask; |
320 class DeleteCookieTask; | 324 class DeleteCookieTask; |
321 class DeleteCanonicalCookieTask; | 325 class DeleteCanonicalCookieTask; |
322 class GetAllCookiesForURLWithOptionsTask; | 326 class GetAllCookiesForURLWithOptionsTask; |
323 class GetAllCookiesTask; | 327 class GetAllCookiesTask; |
324 class GetCookiesWithOptionsTask; | 328 class GetCookiesWithOptionsTask; |
| 329 class SetAllCookiesTask; |
325 class SetCookieWithDetailsTask; | 330 class SetCookieWithDetailsTask; |
326 class SetCookieWithOptionsTask; | 331 class SetCookieWithOptionsTask; |
327 class DeleteSessionCookiesTask; | 332 class DeleteSessionCookiesTask; |
328 class HasCookiesForETLDP1Task; | 333 class HasCookiesForETLDP1Task; |
329 | 334 |
330 // Testing support. | 335 // Testing support. |
331 // For SetCookieWithCreationTime. | 336 // For SetCookieWithCreationTime. |
332 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, | 337 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, |
333 TestCookieDeleteAllCreatedBetweenTimestamps); | 338 TestCookieDeleteAllCreatedBetweenTimestamps); |
334 // For SetCookieWithCreationTime. | 339 // For SetCookieWithCreationTime. |
335 FRIEND_TEST_ALL_PREFIXES(MultiThreadedCookieMonsterTest, | 340 FRIEND_TEST_ALL_PREFIXES(MultiThreadedCookieMonsterTest, |
336 ThreadCheckDeleteAllCreatedBetweenForHost); | 341 ThreadCheckDeleteAllCreatedBetweenForHost); |
337 | 342 |
338 // For gargage collection constants. | 343 // For gargage collection constants. |
339 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestHostGarbageCollection); | 344 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestHostGarbageCollection); |
340 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestTotalGarbageCollection); | 345 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestTotalGarbageCollection); |
341 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, GarbageCollectionTriggers); | 346 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, GarbageCollectionTriggers); |
342 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestGCTimes); | 347 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestGCTimes); |
343 | 348 |
344 // For validation of key values. | 349 // For validation of key values. |
345 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestDomainTree); | 350 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestDomainTree); |
346 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestImport); | 351 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestImport); |
347 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, GetKey); | 352 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, GetKey); |
348 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestGetKey); | 353 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestGetKey); |
349 | 354 |
350 // For FindCookiesForKey. | 355 // For FindCookiesForKey. |
351 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, ShortLivedSessionCookies); | 356 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, ShortLivedSessionCookies); |
352 | 357 |
| 358 // For ComputeCookieDiff. |
| 359 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, ComputeCookieDiff); |
| 360 |
353 // Internal reasons for deletion, used to populate informative histograms | 361 // Internal reasons for deletion, used to populate informative histograms |
354 // and to provide a public cause for onCookieChange notifications. | 362 // and to provide a public cause for onCookieChange notifications. |
355 // | 363 // |
356 // If you add or remove causes from this list, please be sure to also update | 364 // If you add or remove causes from this list, please be sure to also update |
357 // the CookieMonsterDelegate::ChangeCause mapping inside ChangeCauseMapping. | 365 // the CookieMonsterDelegate::ChangeCause mapping inside ChangeCauseMapping. |
358 // Moreover, these are used as array indexes, so avoid reordering to keep the | 366 // Moreover, these are used as array indexes, so avoid reordering to keep the |
359 // histogram buckets consistent. New items (if necessary) should be added | 367 // histogram buckets consistent. New items (if necessary) should be added |
360 // at the end of the list, just before DELETE_COOKIE_LAST_ENTRY. | 368 // at the end of the list, just before DELETE_COOKIE_LAST_ENTRY. |
361 enum DeletionCause { | 369 enum DeletionCause { |
362 DELETE_COOKIE_EXPLICIT = 0, | 370 DELETE_COOKIE_EXPLICIT = 0, |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 const std::string& cookie_line, | 545 const std::string& cookie_line, |
538 const base::Time& creation_time, | 546 const base::Time& creation_time, |
539 const CookieOptions& options); | 547 const CookieOptions& options); |
540 | 548 |
541 // Helper function that sets a canonical cookie, deleting equivalents and | 549 // Helper function that sets a canonical cookie, deleting equivalents and |
542 // performing garbage collection. | 550 // performing garbage collection. |
543 bool SetCanonicalCookie(scoped_ptr<CanonicalCookie>* cc, | 551 bool SetCanonicalCookie(scoped_ptr<CanonicalCookie>* cc, |
544 const base::Time& creation_time, | 552 const base::Time& creation_time, |
545 const CookieOptions& options); | 553 const CookieOptions& options); |
546 | 554 |
| 555 // Helper function calling SetCanonicalCookie() for all cookies in |list|. |
| 556 bool SetCanonicalCookies(const CookieList& list); |
| 557 |
547 void InternalUpdateCookieAccessTime(CanonicalCookie* cc, | 558 void InternalUpdateCookieAccessTime(CanonicalCookie* cc, |
548 const base::Time& current_time); | 559 const base::Time& current_time); |
549 | 560 |
550 // |deletion_cause| argument is used for collecting statistics and choosing | 561 // |deletion_cause| argument is used for collecting statistics and choosing |
551 // the correct CookieMonsterDelegate::ChangeCause for OnCookieChanged | 562 // the correct CookieMonsterDelegate::ChangeCause for OnCookieChanged |
552 // notifications. Guarantee: All iterators to cookies_ except to the | 563 // notifications. Guarantee: All iterators to cookies_ except to the |
553 // deleted entry remain vaild. | 564 // deleted entry remain vaild. |
554 void InternalDeleteCookie(CookieMap::iterator it, | 565 void InternalDeleteCookie(CookieMap::iterator it, |
555 bool sync_to_store, | 566 bool sync_to_store, |
556 DeletionCause deletion_cause); | 567 DeletionCause deletion_cause); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 | 612 |
602 // 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 |
603 // loaded. | 614 // loaded. |
604 void DoCookieTask(const scoped_refptr<CookieMonsterTask>& task_item); | 615 void DoCookieTask(const scoped_refptr<CookieMonsterTask>& task_item); |
605 | 616 |
606 // 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 |
607 // are loaded. | 618 // are loaded. |
608 void DoCookieTaskForURL(const scoped_refptr<CookieMonsterTask>& task_item, | 619 void DoCookieTaskForURL(const scoped_refptr<CookieMonsterTask>& task_item, |
609 const GURL& url); | 620 const GURL& url); |
610 | 621 |
| 622 // Computes the difference between |old_cookies| and |new_cookies|, and writes |
| 623 // the result in |cookies_to_add| and |cookies_to_delete|. |
| 624 // This function has the side effect of changing the order of |old_cookies| |
| 625 // and |new_cookies|. |cookies_to_add| and |cookies_to_delete| must be empty, |
| 626 // and none of the arguments can be null. |
| 627 void ComputeCookieDiff(CookieList* old_cookies, |
| 628 CookieList* new_cookies, |
| 629 CookieList* cookies_to_add, |
| 630 CookieList* cookies_to_delete); |
| 631 |
611 // Run all cookie changed callbacks that are monitoring |cookie|. | 632 // Run all cookie changed callbacks that are monitoring |cookie|. |
612 // |removed| is true if the cookie was deleted. | 633 // |removed| is true if the cookie was deleted. |
613 void RunCallbacks(const CanonicalCookie& cookie, bool removed); | 634 void RunCallbacks(const CanonicalCookie& cookie, bool removed); |
614 | 635 |
615 // Histogram variables; see CookieMonster::InitializeHistograms() in | 636 // Histogram variables; see CookieMonster::InitializeHistograms() in |
616 // cookie_monster.cc for details. | 637 // cookie_monster.cc for details. |
617 base::HistogramBase* histogram_expiration_duration_minutes_; | 638 base::HistogramBase* histogram_expiration_duration_minutes_; |
618 base::HistogramBase* histogram_between_access_interval_minutes_; | 639 base::HistogramBase* histogram_between_access_interval_minutes_; |
619 base::HistogramBase* histogram_evicted_last_access_minutes_; | 640 base::HistogramBase* histogram_evicted_last_access_minutes_; |
620 base::HistogramBase* histogram_count_; | 641 base::HistogramBase* histogram_count_; |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 virtual ~PersistentCookieStore() {} | 793 virtual ~PersistentCookieStore() {} |
773 | 794 |
774 private: | 795 private: |
775 friend class base::RefCountedThreadSafe<PersistentCookieStore>; | 796 friend class base::RefCountedThreadSafe<PersistentCookieStore>; |
776 DISALLOW_COPY_AND_ASSIGN(PersistentCookieStore); | 797 DISALLOW_COPY_AND_ASSIGN(PersistentCookieStore); |
777 }; | 798 }; |
778 | 799 |
779 } // namespace net | 800 } // namespace net |
780 | 801 |
781 #endif // NET_COOKIES_COOKIE_MONSTER_H_ | 802 #endif // NET_COOKIES_COOKIE_MONSTER_H_ |
OLD | NEW |