Apply the new asynchronous CookieMonster API to extension_service_unittest.cc.
BUG=68657
TEST=ExtensionServiceTest.ClearExtensionData

Review URL: http://codereview.chromium.org/7550020

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96092 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index b002501..edb7772 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -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"
@@ -2675,9 +2676,34 @@
   UninstallExtension(good_crx, true);
 }
 
+class ExtensionCookieCallback {
+ public:
+  ExtensionCookieCallback()
+    : result_(false),
+      message_loop_factory_(MessageLoop::current()) {}
+
+  void SetCookieCallback(bool result) {
+    MessageLoop::current()->PostTask(
+        FROM_HERE,
+        message_loop_factory_.NewRunnableMethod(&MessageLoop::Quit));
+    result_ = result;
+  }
+
+  void GetAllCookiesCallback(const net::CookieList& list) {
+    MessageLoop::current()->PostTask(
+        FROM_HERE,
+        message_loop_factory_.NewRunnableMethod(&MessageLoop::Quit));
+    list_ = list;
+  }
+  net::CookieList list_;
+  bool result_;
+  ScopedRunnableMethodFactory<MessageLoop> message_loop_factory_;
+};
+
 // Verifies extension state is removed upon uninstall
 TEST_F(ExtensionServiceTest, ClearExtensionData) {
   InitializeEmptyExtensionService();
+  ExtensionCookieCallback callback;
 
   // Load a test extension.
   FilePath path = data_dir_;
@@ -2695,9 +2721,19 @@
       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(&ExtensionCookieCallback::SetCookieCallback,
+                  base::Unretained(&callback)));
+  loop_.RunAllPending();
+  EXPECT_TRUE(callback.result_);
+
+  cookie_monster->GetAllCookiesForURLAsync(
+      ext_url,
+      base::Bind(&ExtensionCookieCallback::GetAllCookiesCallback,
+                 base::Unretained(&callback)));
+  loop_.RunAllPending();
+  EXPECT_EQ(1U, callback.list_.size());
 
   // Open a database.
   webkit_database::DatabaseTracker* db_tracker = profile_->GetDatabaseTracker();
@@ -2734,8 +2770,12 @@
   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(&ExtensionCookieCallback::GetAllCookiesCallback,
+                  base::Unretained(&callback)));
+  loop_.RunAllPending();
+  EXPECT_EQ(0U, callback.list_.size());
 
   // The database should have vanished as well.
   origins.clear();