summaryrefslogtreecommitdiffstats
path: root/net/cookies
diff options
context:
space:
mode:
authorajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-03 19:55:42 +0000
committerajwong@chromium.org <ajwong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-03 19:55:42 +0000
commit07aaae69b6a8ea45f8e38973ea51697f2aa1c1ed (patch)
tree81f10d61210a6dac7f684d9aeced876dcdc0beac /net/cookies
parent6dbbaa2bd49d9796faccb96f0d19424705f37048 (diff)
downloadchromium_src-07aaae69b6a8ea45f8e38973ea51697f2aa1c1ed.zip
chromium_src-07aaae69b6a8ea45f8e38973ea51697f2aa1c1ed.tar.gz
chromium_src-07aaae69b6a8ea45f8e38973ea51697f2aa1c1ed.tar.bz2
Make CookieMonster::Delegate top-level and remove global CookieMonster::EnableFileScheme().
Relanding parts of https://chromiumcodereview.appspot.com/12546016 R=rsleevi@chromium.org TBR=jam BUG=159193,331424 Review URL: https://codereview.chromium.org/93593005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@242913 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/cookies')
-rw-r--r--net/cookies/cookie_monster.cc55
-rw-r--r--net/cookies/cookie_monster.h37
-rw-r--r--net/cookies/cookie_monster_store_test.h6
-rw-r--r--net/cookies/cookie_monster_unittest.cc2
-rw-r--r--net/cookies/cookie_store.h1
5 files changed, 46 insertions, 55 deletions
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc
index 15c7143..d6eccf4 100644
--- a/net/cookies/cookie_monster.cc
+++ b/net/cookies/cookie_monster.cc
@@ -254,40 +254,40 @@ CookieMonster::CookieItVector::iterator LowerBoundAccessDate(
LowerBoundAccessDateComparator);
}
-// Mapping between DeletionCause and Delegate::ChangeCause; the mapping also
-// provides a boolean that specifies whether or not an OnCookieChanged
-// notification ought to be generated.
+// Mapping between DeletionCause and CookieMonsterDelegate::ChangeCause; the
+// mapping also provides a boolean that specifies whether or not an
+// OnCookieChanged notification ought to be generated.
typedef struct ChangeCausePair_struct {
- CookieMonster::Delegate::ChangeCause cause;
+ CookieMonsterDelegate::ChangeCause cause;
bool notify;
} ChangeCausePair;
ChangeCausePair ChangeCauseMapping[] = {
// DELETE_COOKIE_EXPLICIT
- { CookieMonster::Delegate::CHANGE_COOKIE_EXPLICIT, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT, true },
// DELETE_COOKIE_OVERWRITE
- { CookieMonster::Delegate::CHANGE_COOKIE_OVERWRITE, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_OVERWRITE, true },
// DELETE_COOKIE_EXPIRED
- { CookieMonster::Delegate::CHANGE_COOKIE_EXPIRED, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EXPIRED, true },
// DELETE_COOKIE_EVICTED
- { CookieMonster::Delegate::CHANGE_COOKIE_EVICTED, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EVICTED, true },
// DELETE_COOKIE_DUPLICATE_IN_BACKING_STORE
- { CookieMonster::Delegate::CHANGE_COOKIE_EXPLICIT, false },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT, false },
// DELETE_COOKIE_DONT_RECORD
- { CookieMonster::Delegate::CHANGE_COOKIE_EXPLICIT, false },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT, false },
// DELETE_COOKIE_EVICTED_DOMAIN
- { CookieMonster::Delegate::CHANGE_COOKIE_EVICTED, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EVICTED, true },
// DELETE_COOKIE_EVICTED_GLOBAL
- { CookieMonster::Delegate::CHANGE_COOKIE_EVICTED, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EVICTED, true },
// DELETE_COOKIE_EVICTED_DOMAIN_PRE_SAFE
- { CookieMonster::Delegate::CHANGE_COOKIE_EVICTED, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EVICTED, true },
// DELETE_COOKIE_EVICTED_DOMAIN_POST_SAFE
- { CookieMonster::Delegate::CHANGE_COOKIE_EVICTED, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EVICTED, true },
// DELETE_COOKIE_EXPIRED_OVERWRITE
- { CookieMonster::Delegate::CHANGE_COOKIE_EXPIRED_OVERWRITE, true },
+ { CookieMonsterDelegate::CHANGE_COOKIE_EXPIRED_OVERWRITE, true },
// DELETE_COOKIE_CONTROL_CHAR
- { CookieMonster::Delegate::CHANGE_COOKIE_EVICTED, true},
+ { CookieMonsterDelegate::CHANGE_COOKIE_EVICTED, true},
// DELETE_COOKIE_LAST_ENTRY
- { CookieMonster::Delegate::CHANGE_COOKIE_EXPLICIT, false }
+ { CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT, false }
};
std::string BuildCookieLine(const CanonicalCookieVector& cookies) {
@@ -308,10 +308,8 @@ std::string BuildCookieLine(const CanonicalCookieVector& cookies) {
} // namespace
-// static
-bool CookieMonster::default_enable_file_scheme_ = false;
-
-CookieMonster::CookieMonster(PersistentCookieStore* store, Delegate* delegate)
+CookieMonster::CookieMonster(PersistentCookieStore* store,
+ CookieMonsterDelegate* delegate)
: initialized_(false),
loaded_(false),
store_(store),
@@ -326,7 +324,7 @@ CookieMonster::CookieMonster(PersistentCookieStore* store, Delegate* delegate)
}
CookieMonster::CookieMonster(PersistentCookieStore* store,
- Delegate* delegate,
+ CookieMonsterDelegate* delegate,
int last_access_threshold_milliseconds)
: initialized_(false),
loaded_(false),
@@ -1289,11 +1287,6 @@ void CookieMonster::SetKeepExpiredCookies() {
keep_expired_cookies_ = true;
}
-// static
-void CookieMonster::EnableFileScheme() {
- default_enable_file_scheme_ = true;
-}
-
void CookieMonster::FlushStore(const base::Closure& callback) {
base::AutoLock autolock(lock_);
if (initialized_ && store_.get())
@@ -1673,9 +1666,9 @@ const int CookieMonster::kDefaultCookieableSchemesCount =
arraysize(kDefaultCookieableSchemes);
void CookieMonster::SetDefaultCookieableSchemes() {
- int num_schemes = default_enable_file_scheme_ ?
- kDefaultCookieableSchemesCount : kDefaultCookieableSchemesCount - 1;
- SetCookieableSchemes(kDefaultCookieableSchemes, num_schemes);
+ // Always disable file scheme unless SetEnableFileScheme(true) is called.
+ SetCookieableSchemes(kDefaultCookieableSchemes,
+ kDefaultCookieableSchemesCount - 1);
}
void CookieMonster::FindCookiesForHostAndDomain(
@@ -1777,7 +1770,7 @@ CookieMonster::CookieMap::iterator CookieMonster::InternalInsertCookie(
cookies_.insert(CookieMap::value_type(key, cc));
if (delegate_.get()) {
delegate_->OnCookieChanged(
- *cc, false, Delegate::CHANGE_COOKIE_EXPLICIT);
+ *cc, false, CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT);
}
return inserted;
diff --git a/net/cookies/cookie_monster.h b/net/cookies/cookie_monster.h
index 3e2ed6d..455484e 100644
--- a/net/cookies/cookie_monster.h
+++ b/net/cookies/cookie_monster.h
@@ -37,6 +37,7 @@ class TimeTicks;
namespace net {
+class CookieMonsterDelegate;
class ParsedCookie;
// The cookie monster is the system for storing and retrieving cookies. It has
@@ -65,8 +66,8 @@ class ParsedCookie;
// - Verify that our domain enforcement and non-dotted handling is correct
class NET_EXPORT CookieMonster : public CookieStore {
public:
- class Delegate;
class PersistentCookieStore;
+ typedef CookieMonsterDelegate Delegate;
// Terminology:
// * The 'top level domain' (TLD) of an internet domain name is
@@ -138,11 +139,11 @@ class NET_EXPORT CookieMonster : public CookieStore {
// monster's existence. If |store| is NULL, then no backing store will be
// updated. If |delegate| is non-NULL, it will be notified on
// creation/deletion of cookies.
- CookieMonster(PersistentCookieStore* store, Delegate* delegate);
+ CookieMonster(PersistentCookieStore* store, CookieMonsterDelegate* delegate);
// Only used during unit testing.
CookieMonster(PersistentCookieStore* store,
- Delegate* delegate,
+ CookieMonsterDelegate* delegate,
int last_access_threshold_milliseconds);
// Helper function that adds all cookies from |list| into this instance.
@@ -216,6 +217,10 @@ class NET_EXPORT CookieMonster : public CookieStore {
// Resets the list of cookieable schemes to kDefaultCookieableSchemes with or
// without 'file' being included.
+ //
+ // There are some unknowns about how to correctly handle file:// cookies,
+ // and our implementation for this is not robust enough. This allows you
+ // to enable support, but it should only be used for testing. Bug 1157243.
void SetEnableFileScheme(bool accept);
// Instructs the cookie monster to not delete expired cookies. This is used
@@ -226,12 +231,6 @@ class NET_EXPORT CookieMonster : public CookieStore {
// Protects session cookies from deletion on shutdown.
void SetForceKeepSessionState();
- // There are some unknowns about how to correctly handle file:// cookies,
- // and our implementation for this is not robust enough. This allows you
- // to enable support, but it should only be used for testing. Bug 1157243.
- // Must be called before creating a CookieMonster instance.
- static void EnableFileScheme();
-
// Flush the backing store (if any) to disk and post the given callback when
// done.
// WARNING: THE CALLBACK WILL RUN ON A RANDOM THREAD. IT MUST BE THREAD SAFE.
@@ -352,8 +351,8 @@ class NET_EXPORT CookieMonster : public CookieStore {
// and to provide a public cause for onCookieChange notifications.
//
// If you add or remove causes from this list, please be sure to also update
- // the Delegate::ChangeCause mapping inside ChangeCauseMapping. Moreover,
- // these are used as array indexes, so avoid reordering to keep the
+ // the CookieMonsterDelegate::ChangeCause mapping inside ChangeCauseMapping.
+ // Moreover, these are used as array indexes, so avoid reordering to keep the
// histogram buckets consistent. New items (if necessary) should be added
// at the end of the list, just before DELETE_COOKIE_LAST_ENTRY.
enum DeletionCause {
@@ -546,9 +545,9 @@ class NET_EXPORT CookieMonster : public CookieStore {
const base::Time& current_time);
// |deletion_cause| argument is used for collecting statistics and choosing
- // the correct Delegate::ChangeCause for OnCookieChanged notifications.
- // Guarantee: All iterators to cookies_ except to the deleted entry remain
- // vaild.
+ // the correct CookieMonsterDelegate::ChangeCause for OnCookieChanged
+ // notifications. Guarantee: All iterators to cookies_ except to the
+ // deleted entry remain vaild.
void InternalDeleteCookie(CookieMap::iterator it, bool sync_to_store,
DeletionCause deletion_cause);
@@ -670,7 +669,7 @@ class NET_EXPORT CookieMonster : public CookieStore {
std::vector<std::string> cookieable_schemes_;
- scoped_refptr<Delegate> delegate_;
+ scoped_refptr<CookieMonsterDelegate> delegate_;
// Lock for thread-safety
base::Lock lock_;
@@ -688,8 +687,8 @@ class NET_EXPORT CookieMonster : public CookieStore {
DISALLOW_COPY_AND_ASSIGN(CookieMonster);
};
-class NET_EXPORT CookieMonster::Delegate
- : public base::RefCountedThreadSafe<CookieMonster::Delegate> {
+class NET_EXPORT CookieMonsterDelegate
+ : public base::RefCountedThreadSafe<CookieMonsterDelegate> {
public:
// The publicly relevant reasons a cookie might be changed.
enum ChangeCause {
@@ -721,8 +720,8 @@ class NET_EXPORT CookieMonster::Delegate
bool removed,
ChangeCause cause) = 0;
protected:
- friend class base::RefCountedThreadSafe<CookieMonster::Delegate>;
- virtual ~Delegate() {}
+ friend class base::RefCountedThreadSafe<CookieMonsterDelegate>;
+ virtual ~CookieMonsterDelegate() {}
};
typedef base::RefCountedThreadSafe<CookieMonster::PersistentCookieStore>
diff --git a/net/cookies/cookie_monster_store_test.h b/net/cookies/cookie_monster_store_test.h
index d7da521..ec40de6 100644
--- a/net/cookies/cookie_monster_store_test.h
+++ b/net/cookies/cookie_monster_store_test.h
@@ -115,8 +115,8 @@ class MockPersistentCookieStore
DISALLOW_COPY_AND_ASSIGN(MockPersistentCookieStore);
};
-// Mock for CookieMonster::Delegate
-class MockCookieMonsterDelegate : public CookieMonster::Delegate {
+// Mock for CookieMonsterDelegate
+class MockCookieMonsterDelegate : public CookieMonsterDelegate {
public:
typedef std::pair<CanonicalCookie, bool>
CookieNotification;
@@ -130,7 +130,7 @@ class MockCookieMonsterDelegate : public CookieMonster::Delegate {
virtual void OnCookieChanged(
const CanonicalCookie& cookie,
bool removed,
- CookieMonster::Delegate::ChangeCause cause) OVERRIDE;
+ CookieMonsterDelegate::ChangeCause cause) OVERRIDE;
private:
virtual ~MockCookieMonsterDelegate();
diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc
index 69d98a1..0e01f28 100644
--- a/net/cookies/cookie_monster_unittest.cc
+++ b/net/cookies/cookie_monster_unittest.cc
@@ -1546,7 +1546,7 @@ TEST_F(CookieMonsterTest, DontImportDuplicateCreationTimes) {
EXPECT_NE(name1, name2);
}
-TEST_F(CookieMonsterTest, Delegate) {
+TEST_F(CookieMonsterTest, CookieMonsterDelegate) {
scoped_refptr<MockPersistentCookieStore> store(
new MockPersistentCookieStore);
scoped_refptr<MockCookieMonsterDelegate> delegate(
diff --git a/net/cookies/cookie_store.h b/net/cookies/cookie_store.h
index 7dee857..730f710 100644
--- a/net/cookies/cookie_store.h
+++ b/net/cookies/cookie_store.h
@@ -33,7 +33,6 @@ class NET_EXPORT CookieStore : public base::RefCountedThreadSafe<CookieStore> {
typedef base::Callback<void(bool success)> SetCookiesCallback;
typedef base::Callback<void(int num_deleted)> DeleteCallback;
-
// Sets a single cookie. Expects a cookie line, like "a=1; domain=b.com".
//
// Fails either if the cookie is invalid or if this is a non-HTTPONLY cookie