Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Side by Side Diff: net/cookies/cookie_monster.h

Issue 1000103002: Add a method to override all the cookies in CookieMonster (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | net/cookies/cookie_monster.cc » ('j') | net/cookies/cookie_monster.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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|.
238 // This method does not flush the backend, and does not update the creation
239 // time nor the last access time: if a cookie in |list| already exists in the
240 // cookie monster with a different time, the cookie is left untouched in the
241 // cookie monster.
droger 2015/03/12 15:50:29 I don't know if this behavior w.r.t. creation time
erikwright (departed) 2015/03/13 13:59:01 Presumably the rationale for not needing to update
droger 2015/03/13 15:10:47 Some context: on iOS when a WebView is attached to
242 void SetAllCookiesAsync(const CookieList& list,
243 const SetCookiesCallback& callback);
244
237 // CookieStore implementation. 245 // CookieStore implementation.
238 246
239 // Sets the cookies specified by |cookie_list| returned from |url| 247 // Sets the cookies specified by |cookie_list| returned from |url|
240 // with options |options| in effect. 248 // with options |options| in effect.
241 void SetCookieWithOptionsAsync(const GURL& url, 249 void SetCookieWithOptionsAsync(const GURL& url,
242 const std::string& cookie_line, 250 const std::string& cookie_line,
243 const CookieOptions& options, 251 const CookieOptions& options,
244 const SetCookiesCallback& callback) override; 252 const SetCookiesCallback& callback) override;
245 253
246 // Gets all cookies that apply to |url| given |options|. 254 // Gets all cookies that apply to |url| given |options|.
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 class DeleteTask; 323 class DeleteTask;
316 class DeleteAllCreatedBetweenTask; 324 class DeleteAllCreatedBetweenTask;
317 class DeleteAllCreatedBetweenForHostTask; 325 class DeleteAllCreatedBetweenForHostTask;
318 class DeleteAllForHostTask; 326 class DeleteAllForHostTask;
319 class DeleteAllTask; 327 class DeleteAllTask;
320 class DeleteCookieTask; 328 class DeleteCookieTask;
321 class DeleteCanonicalCookieTask; 329 class DeleteCanonicalCookieTask;
322 class GetAllCookiesForURLWithOptionsTask; 330 class GetAllCookiesForURLWithOptionsTask;
323 class GetAllCookiesTask; 331 class GetAllCookiesTask;
324 class GetCookiesWithOptionsTask; 332 class GetCookiesWithOptionsTask;
333 class SetAllCookiesTask;
325 class SetCookieWithDetailsTask; 334 class SetCookieWithDetailsTask;
326 class SetCookieWithOptionsTask; 335 class SetCookieWithOptionsTask;
327 class DeleteSessionCookiesTask; 336 class DeleteSessionCookiesTask;
328 class HasCookiesForETLDP1Task; 337 class HasCookiesForETLDP1Task;
329 338
330 // Testing support. 339 // Testing support.
331 // For SetCookieWithCreationTime. 340 // For SetCookieWithCreationTime.
332 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, 341 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest,
333 TestCookieDeleteAllCreatedBetweenTimestamps); 342 TestCookieDeleteAllCreatedBetweenTimestamps);
334 // For SetCookieWithCreationTime. 343 // For SetCookieWithCreationTime.
335 FRIEND_TEST_ALL_PREFIXES(MultiThreadedCookieMonsterTest, 344 FRIEND_TEST_ALL_PREFIXES(MultiThreadedCookieMonsterTest,
336 ThreadCheckDeleteAllCreatedBetweenForHost); 345 ThreadCheckDeleteAllCreatedBetweenForHost);
337 346
338 // For gargage collection constants. 347 // For gargage collection constants.
339 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestHostGarbageCollection); 348 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestHostGarbageCollection);
340 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestTotalGarbageCollection); 349 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestTotalGarbageCollection);
341 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, GarbageCollectionTriggers); 350 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, GarbageCollectionTriggers);
342 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestGCTimes); 351 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestGCTimes);
343 352
344 // For validation of key values. 353 // For validation of key values.
345 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestDomainTree); 354 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestDomainTree);
346 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestImport); 355 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestImport);
347 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, GetKey); 356 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, GetKey);
348 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestGetKey); 357 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, TestGetKey);
349 358
350 // For FindCookiesForKey. 359 // For FindCookiesForKey.
351 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, ShortLivedSessionCookies); 360 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, ShortLivedSessionCookies);
352 361
362 // For ComputeCookieDiff.
363 FRIEND_TEST_ALL_PREFIXES(CookieMonsterTest, ComputeCookieDiff);
364
353 // Internal reasons for deletion, used to populate informative histograms 365 // Internal reasons for deletion, used to populate informative histograms
354 // and to provide a public cause for onCookieChange notifications. 366 // and to provide a public cause for onCookieChange notifications.
355 // 367 //
356 // If you add or remove causes from this list, please be sure to also update 368 // If you add or remove causes from this list, please be sure to also update
357 // the CookieMonsterDelegate::ChangeCause mapping inside ChangeCauseMapping. 369 // the CookieMonsterDelegate::ChangeCause mapping inside ChangeCauseMapping.
358 // Moreover, these are used as array indexes, so avoid reordering to keep the 370 // Moreover, these are used as array indexes, so avoid reordering to keep the
359 // histogram buckets consistent. New items (if necessary) should be added 371 // histogram buckets consistent. New items (if necessary) should be added
360 // at the end of the list, just before DELETE_COOKIE_LAST_ENTRY. 372 // at the end of the list, just before DELETE_COOKIE_LAST_ENTRY.
361 enum DeletionCause { 373 enum DeletionCause {
362 DELETE_COOKIE_EXPLICIT = 0, 374 DELETE_COOKIE_EXPLICIT = 0,
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 const std::string& cookie_line, 549 const std::string& cookie_line,
538 const base::Time& creation_time, 550 const base::Time& creation_time,
539 const CookieOptions& options); 551 const CookieOptions& options);
540 552
541 // Helper function that sets a canonical cookie, deleting equivalents and 553 // Helper function that sets a canonical cookie, deleting equivalents and
542 // performing garbage collection. 554 // performing garbage collection.
543 bool SetCanonicalCookie(scoped_ptr<CanonicalCookie>* cc, 555 bool SetCanonicalCookie(scoped_ptr<CanonicalCookie>* cc,
544 const base::Time& creation_time, 556 const base::Time& creation_time,
545 const CookieOptions& options); 557 const CookieOptions& options);
546 558
559 // Helper function calling SetCanonicalCookie() for all cookies in |list|.
560 bool SetCanonicalCookies(const CookieList& list);
561
547 void InternalUpdateCookieAccessTime(CanonicalCookie* cc, 562 void InternalUpdateCookieAccessTime(CanonicalCookie* cc,
548 const base::Time& current_time); 563 const base::Time& current_time);
549 564
550 // |deletion_cause| argument is used for collecting statistics and choosing 565 // |deletion_cause| argument is used for collecting statistics and choosing
551 // the correct CookieMonsterDelegate::ChangeCause for OnCookieChanged 566 // the correct CookieMonsterDelegate::ChangeCause for OnCookieChanged
552 // notifications. Guarantee: All iterators to cookies_ except to the 567 // notifications. Guarantee: All iterators to cookies_ except to the
553 // deleted entry remain vaild. 568 // deleted entry remain vaild.
554 void InternalDeleteCookie(CookieMap::iterator it, 569 void InternalDeleteCookie(CookieMap::iterator it,
555 bool sync_to_store, 570 bool sync_to_store,
556 DeletionCause deletion_cause); 571 DeletionCause deletion_cause);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 616
602 // Runs the task if, or defers the task until, the full cookie database is 617 // Runs the task if, or defers the task until, the full cookie database is
603 // loaded. 618 // loaded.
604 void DoCookieTask(const scoped_refptr<CookieMonsterTask>& task_item); 619 void DoCookieTask(const scoped_refptr<CookieMonsterTask>& task_item);
605 620
606 // Runs the task if, or defers the task until, the cookies for the given URL 621 // Runs the task if, or defers the task until, the cookies for the given URL
607 // are loaded. 622 // are loaded.
608 void DoCookieTaskForURL(const scoped_refptr<CookieMonsterTask>& task_item, 623 void DoCookieTaskForURL(const scoped_refptr<CookieMonsterTask>& task_item,
609 const GURL& url); 624 const GURL& url);
610 625
626 // Computes the difference between |old_cookies| and |new_cookies|, and writes
627 // the result in |cookies_to_add| and |cookies_to_delete|.
628 // This function has the side effect of changing the order of |old_cookies|
629 // and |new_cookies|. |cookies_to_add| and |cookies_to_delete| must be empty,
630 // and none of the arguments can be null.
631 // Creation time and last access time are ignored (cookies differing only by
632 // their time are considered identical).
633 void ComputeCookieDiff(CookieList* old_cookies,
634 CookieList* new_cookies,
635 CookieList* cookies_to_add,
636 CookieList* cookies_to_delete);
637
611 // Run all cookie changed callbacks that are monitoring |cookie|. 638 // Run all cookie changed callbacks that are monitoring |cookie|.
612 // |removed| is true if the cookie was deleted. 639 // |removed| is true if the cookie was deleted.
613 void RunCallbacks(const CanonicalCookie& cookie, bool removed); 640 void RunCallbacks(const CanonicalCookie& cookie, bool removed);
614 641
615 // Histogram variables; see CookieMonster::InitializeHistograms() in 642 // Histogram variables; see CookieMonster::InitializeHistograms() in
616 // cookie_monster.cc for details. 643 // cookie_monster.cc for details.
617 base::HistogramBase* histogram_expiration_duration_minutes_; 644 base::HistogramBase* histogram_expiration_duration_minutes_;
618 base::HistogramBase* histogram_between_access_interval_minutes_; 645 base::HistogramBase* histogram_between_access_interval_minutes_;
619 base::HistogramBase* histogram_evicted_last_access_minutes_; 646 base::HistogramBase* histogram_evicted_last_access_minutes_;
620 base::HistogramBase* histogram_count_; 647 base::HistogramBase* histogram_count_;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 virtual ~PersistentCookieStore() {} 799 virtual ~PersistentCookieStore() {}
773 800
774 private: 801 private:
775 friend class base::RefCountedThreadSafe<PersistentCookieStore>; 802 friend class base::RefCountedThreadSafe<PersistentCookieStore>;
776 DISALLOW_COPY_AND_ASSIGN(PersistentCookieStore); 803 DISALLOW_COPY_AND_ASSIGN(PersistentCookieStore);
777 }; 804 };
778 805
779 } // namespace net 806 } // namespace net
780 807
781 #endif // NET_COOKIES_COOKIE_MONSTER_H_ 808 #endif // NET_COOKIES_COOKIE_MONSTER_H_
OLDNEW
« no previous file with comments | « no previous file | net/cookies/cookie_monster.cc » ('j') | net/cookies/cookie_monster.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698