Index: net/base/cookie_monster_store_test.h |
=================================================================== |
--- net/base/cookie_monster_store_test.h (revision 105637) |
+++ net/base/cookie_monster_store_test.h (working copy) |
@@ -23,6 +23,29 @@ |
namespace net { |
+// Wrapper class for posting a loaded callback. Since the Callback class is not |
+// reference counted, we cannot post a callback to the message loop directly, |
+// instead we post a LoadedCallbackTask. |
+class LoadedCallbackTask |
+ : public base::RefCountedThreadSafe<LoadedCallbackTask> { |
+ public: |
+ typedef CookieMonster::PersistentCookieStore::LoadedCallback LoadedCallback; |
+ |
+ LoadedCallbackTask(LoadedCallback loaded_callback, |
+ std::vector<CookieMonster::CanonicalCookie*> cookies); |
+ ~LoadedCallbackTask(); |
+ |
+ void Run() { |
+ loaded_callback_.Run(cookies_); |
+ } |
+ |
+ private: |
+ LoadedCallback loaded_callback_; |
+ std::vector<CookieMonster::CanonicalCookie*> cookies_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(LoadedCallbackTask); |
+}; // Wrapper class LoadedCallbackTask |
+ |
// Describes a call to one of the 3 functions of PersistentCookieStore. |
struct CookieStoreCommand { |
enum Type { |
@@ -59,8 +82,11 @@ |
return commands_; |
} |
- virtual bool Load(const LoadedCallback& loaded_callback) OVERRIDE; |
+ virtual void Load(const LoadedCallback& loaded_callback) OVERRIDE; |
+ virtual void LoadCookiesForKey(const std::string& key, |
+ const LoadedCallback& loaded_callback) OVERRIDE; |
+ |
virtual void AddCookie(const CookieMonster::CanonicalCookie& cookie) OVERRIDE; |
virtual void UpdateCookieAccessTime( |
@@ -80,6 +106,9 @@ |
// Deferred result to use when Load() is called. |
bool load_return_value_; |
std::vector<CookieMonster::CanonicalCookie*> load_result_; |
+ // Indicates if the store has been fully loaded to avoid returning duplicate |
+ // cookies. |
+ bool loaded_; |
DISALLOW_COPY_AND_ASSIGN(MockPersistentCookieStore); |
}; |
@@ -130,26 +159,33 @@ |
MockSimplePersistentCookieStore(); |
virtual ~MockSimplePersistentCookieStore(); |
- virtual bool Load(const LoadedCallback& loaded_callback); |
+ virtual void Load(const LoadedCallback& loaded_callback) OVERRIDE; |
+ virtual void LoadCookiesForKey(const std::string& key, |
+ const LoadedCallback& loaded_callback) OVERRIDE; |
+ |
virtual void AddCookie( |
- const CookieMonster::CanonicalCookie& cookie); |
+ const CookieMonster::CanonicalCookie& cookie) OVERRIDE; |
virtual void UpdateCookieAccessTime( |
- const CookieMonster::CanonicalCookie& cookie); |
+ const CookieMonster::CanonicalCookie& cookie) OVERRIDE; |
virtual void DeleteCookie( |
- const CookieMonster::CanonicalCookie& cookie); |
+ const CookieMonster::CanonicalCookie& cookie) OVERRIDE; |
- virtual void Flush(Task* completion_task); |
+ virtual void Flush(Task* completion_task) OVERRIDE; |
- virtual void SetClearLocalStateOnExit(bool clear_local_state); |
+ virtual void SetClearLocalStateOnExit(bool clear_local_state) OVERRIDE; |
private: |
typedef std::map<int64, CookieMonster::CanonicalCookie> |
CanonicalCookieMap; |
CanonicalCookieMap cookies_; |
+ |
+ // Indicates if the store has been fully loaded to avoid return duplicate |
+ // cookies in subsequent load requests |
+ bool loaded_; |
}; |
// Helper function for creating a CookieMonster backed by a |