Chromium Code Reviews| Index: chrome/browser/extensions/extension_service_unittest.cc |
| =================================================================== |
| --- chrome/browser/extensions/extension_service_unittest.cc (revision 94724) |
| +++ chrome/browser/extensions/extension_service_unittest.cc (working copy) |
| @@ -9,6 +9,7 @@ |
| #include <vector> |
| #include "base/basictypes.h" |
| +#include "base/bind.h" |
| #include "base/command_line.h" |
| #include "base/file_util.h" |
| #include "base/json/json_reader.h" |
| @@ -2663,9 +2664,36 @@ |
| UninstallExtension(good_crx, true); |
| } |
| +class Callback { |
| + public: |
| + Callback() |
| + : result_(false), |
| + message_loop_factory_(MessageLoop::current()) {} |
| + |
| + void SetCookieCallback(bool result) { |
| + MessageLoop::current()->PostDelayedTask( |
| + FROM_HERE, |
| + message_loop_factory_.NewRunnableMethod(&MessageLoop::Quit), |
| + 10); |
|
Paweł Hajdan Jr.
2011/08/02 21:43:23
Why PostDelayedTask instead of doing it immediatel
ycxiao
2011/08/02 23:00:24
The callback of CookieMonster may be invoked immed
Paweł Hajdan Jr.
2011/08/02 23:29:59
Okay just get rid of PostDelayedTask.
|
| + result_ = result; |
| + } |
| + |
| + void GetAllCookiesCallback(const net::CookieList& list) { |
| + MessageLoop::current()->PostDelayedTask( |
| + FROM_HERE, |
| + message_loop_factory_.NewRunnableMethod(&MessageLoop::Quit), |
| + 10); |
| + list_ = list; |
| + } |
| + net::CookieList list_; |
| + bool result_; |
| + ScopedRunnableMethodFactory<MessageLoop> message_loop_factory_; |
| +}; |
| + |
| // Verifies extension state is removed upon uninstall |
| TEST_F(ExtensionServiceTest, ClearExtensionData) { |
| InitializeEmptyExtensionService(); |
| + Callback callback; |
| // Load a test extension. |
| FilePath path = data_dir_; |
| @@ -2683,9 +2711,20 @@ |
| cookie_store()->GetCookieMonster(); |
| ASSERT_TRUE(cookie_monster); |
| net::CookieOptions options; |
| - cookie_monster->SetCookieWithOptions(ext_url, "dummy=value", options); |
| - net::CookieList list = cookie_monster->GetAllCookiesForURL(ext_url); |
| - EXPECT_EQ(1U, list.size()); |
| + cookie_monster->SetCookieWithOptionsAsync( |
| + ext_url, "dummy=value", options, |
| + base::Bind(&Callback::SetCookieCallback, |
| + base::Unretained(&callback))); |
| + loop_.RunAllPending(); |
| + EXPECT_TRUE(callback.result_); |
| + callback.message_loop_factory_.RevokeAll(); |
| + cookie_monster->GetAllCookiesForURLAsync( |
| + ext_url, |
| + base::Bind(&Callback::GetAllCookiesCallback, |
| + base::Unretained(&callback))); |
| + loop_.RunAllPending(); |
| + EXPECT_EQ(1U, callback.list_.size()); |
| + callback.message_loop_factory_.RevokeAll(); |
| // Open a database. |
| webkit_database::DatabaseTracker* db_tracker = profile_->GetDatabaseTracker(); |
| @@ -2722,8 +2761,13 @@ |
| loop_.RunAllPending(); |
| // Check that the cookie is gone. |
| - list = cookie_monster->GetAllCookiesForURL(ext_url); |
| - EXPECT_EQ(0U, list.size()); |
| + cookie_monster->GetAllCookiesForURLAsync( |
| + ext_url, |
| + base::Bind(&Callback::GetAllCookiesCallback, |
| + base::Unretained(&callback))); |
| + loop_.RunAllPending(); |
| + EXPECT_EQ(0U, callback.list_.size()); |
| + callback.message_loop_factory_.RevokeAll(); |
| // The database should have vanished as well. |
| origins.clear(); |