Home | History | Annotate | Download | only in cookies
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_
      6 #define NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_
      7 
      8 #include "net/cookies/cookie_monster.h"
      9 
     10 #include <string>
     11 #include <vector>
     12 
     13 #include "base/callback_forward.h"
     14 #include "testing/gtest/include/gtest/gtest.h"
     15 
     16 namespace net {
     17 
     18 class DelayedCookieMonster : public CookieStore {
     19  public:
     20   DelayedCookieMonster();
     21 
     22   // Call the asynchronous CookieMonster function, expect it to immediately
     23   // invoke the internal callback.
     24   // Post a delayed task to invoke the original callback with the results.
     25 
     26   virtual void SetCookieWithOptionsAsync(
     27       const GURL& url,
     28       const std::string& cookie_line,
     29       const CookieOptions& options,
     30       const CookieMonster::SetCookiesCallback& callback) OVERRIDE;
     31 
     32   virtual void GetCookiesWithOptionsAsync(
     33       const GURL& url,
     34       const CookieOptions& options,
     35       const CookieMonster::GetCookiesCallback& callback) OVERRIDE;
     36 
     37   virtual void GetAllCookiesForURLAsync(
     38       const GURL& url,
     39       const GetCookieListCallback& callback) OVERRIDE;
     40 
     41   virtual bool SetCookieWithOptions(const GURL& url,
     42                                     const std::string& cookie_line,
     43                                     const CookieOptions& options);
     44 
     45   virtual std::string GetCookiesWithOptions(const GURL& url,
     46                                             const CookieOptions& options);
     47 
     48   virtual void DeleteCookie(const GURL& url,
     49                             const std::string& cookie_name);
     50 
     51   virtual void DeleteCookieAsync(const GURL& url,
     52                                  const std::string& cookie_name,
     53                                  const base::Closure& callback) OVERRIDE;
     54 
     55   virtual void DeleteAllCreatedBetweenAsync(
     56       const base::Time& delete_begin,
     57       const base::Time& delete_end,
     58       const DeleteCallback& callback) OVERRIDE;
     59 
     60   virtual void DeleteAllCreatedBetweenForHostAsync(
     61       const base::Time delete_begin,
     62       const base::Time delete_end,
     63       const GURL& url,
     64       const DeleteCallback& callback) OVERRIDE;
     65 
     66   virtual void DeleteSessionCookiesAsync(const DeleteCallback&) OVERRIDE;
     67 
     68   virtual CookieMonster* GetCookieMonster() OVERRIDE;
     69 
     70  private:
     71 
     72   // Be called immediately from CookieMonster.
     73 
     74   void SetCookiesInternalCallback(bool result);
     75 
     76   void GetCookiesWithOptionsInternalCallback(const std::string& cookie);
     77 
     78   // Invoke the original callbacks.
     79 
     80   void InvokeSetCookiesCallback(
     81       const CookieMonster::SetCookiesCallback& callback);
     82 
     83   void InvokeGetCookieStringCallback(
     84       const CookieMonster::GetCookiesCallback& callback);
     85 
     86   friend class base::RefCountedThreadSafe<DelayedCookieMonster>;
     87   virtual ~DelayedCookieMonster();
     88 
     89   scoped_refptr<CookieMonster> cookie_monster_;
     90 
     91   bool did_run_;
     92   bool result_;
     93   std::string cookie_;
     94   std::string cookie_line_;
     95 };
     96 
     97 }  // namespace net
     98 
     99 #endif  // NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_
    100