|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_ | 
|  | #define NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_ | 
|  |  | 
|  | #include "net/cookies/cookie_monster.h" | 
|  |  | 
|  | #include <string> | 
|  | #include <vector> | 
|  |  | 
|  | #include "base/callback_forward.h" | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  |  | 
|  | namespace net { | 
|  |  | 
|  | class DelayedCookieMonster : public CookieStore { | 
|  | public: | 
|  | DelayedCookieMonster(); | 
|  |  | 
|  | // Call the asynchronous CookieMonster function, expect it to immediately | 
|  | // invoke the internal callback. | 
|  | // Post a delayed task to invoke the original callback with the results. | 
|  |  | 
|  | virtual void SetCookieWithOptionsAsync( | 
|  | const GURL& url, | 
|  | const std::string& cookie_line, | 
|  | const CookieOptions& options, | 
|  | const CookieMonster::SetCookiesCallback& callback) OVERRIDE; | 
|  |  | 
|  | virtual void GetCookiesWithOptionsAsync( | 
|  | const GURL& url, const CookieOptions& options, | 
|  | const CookieMonster::GetCookiesCallback& callback) OVERRIDE; | 
|  |  | 
|  | virtual void GetCookiesWithInfoAsync( | 
|  | const GURL& url, | 
|  | const CookieOptions& options, | 
|  | const CookieMonster::GetCookieInfoCallback& callback) OVERRIDE; | 
|  |  | 
|  | virtual bool SetCookieWithOptions(const GURL& url, | 
|  | const std::string& cookie_line, | 
|  | const CookieOptions& options); | 
|  |  | 
|  | virtual std::string GetCookiesWithOptions(const GURL& url, | 
|  | const CookieOptions& options); | 
|  |  | 
|  | virtual void GetCookiesWithInfo(const GURL& url, | 
|  | const CookieOptions& options, | 
|  | std::string* cookie_line, | 
|  | std::vector<CookieInfo>* cookie_infos); | 
|  |  | 
|  | virtual void DeleteCookie(const GURL& url, | 
|  | const std::string& cookie_name); | 
|  |  | 
|  | virtual void DeleteCookieAsync(const GURL& url, | 
|  | const std::string& cookie_name, | 
|  | const base::Closure& callback) OVERRIDE; | 
|  |  | 
|  | virtual void DeleteAllCreatedBetweenAsync( | 
|  | const base::Time& delete_begin, | 
|  | const base::Time& delete_end, | 
|  | const DeleteCallback& callback) OVERRIDE; | 
|  |  | 
|  | virtual void DeleteSessionCookiesAsync(const DeleteCallback&) OVERRIDE; | 
|  |  | 
|  | virtual CookieMonster* GetCookieMonster() OVERRIDE; | 
|  |  | 
|  | private: | 
|  |  | 
|  | // Be called immediately from CookieMonster. | 
|  |  | 
|  | void GetCookiesInternalCallback( | 
|  | const std::string& cookie_line, | 
|  | const std::vector<CookieStore::CookieInfo>& cookie_info); | 
|  |  | 
|  | void SetCookiesInternalCallback(bool result); | 
|  |  | 
|  | void GetCookiesWithOptionsInternalCallback(const std::string& cookie); | 
|  |  | 
|  | // Invoke the original callbacks. | 
|  |  | 
|  | void InvokeGetCookiesCallback( | 
|  | const CookieMonster::GetCookieInfoCallback& callback); | 
|  |  | 
|  | void InvokeSetCookiesCallback( | 
|  | const CookieMonster::SetCookiesCallback& callback); | 
|  |  | 
|  | void InvokeGetCookieStringCallback( | 
|  | const CookieMonster::GetCookiesCallback& callback); | 
|  |  | 
|  | friend class base::RefCountedThreadSafe<DelayedCookieMonster>; | 
|  | virtual ~DelayedCookieMonster(); | 
|  |  | 
|  | scoped_refptr<CookieMonster> cookie_monster_; | 
|  |  | 
|  | bool did_run_; | 
|  | bool result_; | 
|  | std::string cookie_; | 
|  | std::string cookie_line_; | 
|  | std::vector<CookieStore::CookieInfo> cookie_info_; | 
|  | }; | 
|  |  | 
|  | }  // namespace net | 
|  |  | 
|  | #endif  // NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_ |