Index: chrome/browser/net/cookie_policy_browsertest.cc |
diff --git a/chrome/browser/net/cookie_policy_browsertest.cc b/chrome/browser/net/cookie_policy_browsertest.cc |
index 7a33ce9259e122b1ef58a88ae0cf62634ac2d2ca..e43cd14aefcb1f0ad1161348c2e72b704fce5865 100644 |
--- a/chrome/browser/net/cookie_policy_browsertest.cc |
+++ b/chrome/browser/net/cookie_policy_browsertest.cc |
@@ -2,6 +2,8 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/task.h" |
+#include "base/waitable_event.h" |
#include "chrome/browser/browser.h" |
#include "chrome/browser/host_content_settings_map.h" |
#include "chrome/browser/profile.h" |
@@ -10,10 +12,51 @@ |
#include "chrome/test/ui_test_utils.h" |
#include "net/base/mock_host_resolver.h" |
-class CookiePolicyBrowserTest : public InProcessBrowserTest { |
+namespace { |
+ |
+class GetCookiesTask : public Task { |
public: |
+ GetCookiesTask(const GURL& url, |
+ URLRequestContextGetter* context_getter, |
+ base::WaitableEvent* event, |
+ std::string* cookies) |
+ : url_(url), |
+ context_getter_(context_getter), |
+ event_(event), |
+ cookies_(cookies) {} |
+ |
+ virtual void Run() { |
+ *cookies_ = context_getter_->GetCookieStore()->GetCookies(url_); |
+ event_->Signal(); |
+ } |
+ |
+ private: |
+ const GURL& url_; |
+ URLRequestContextGetter* const context_getter_; |
+ base::WaitableEvent* const event_; |
+ std::string* const cookies_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(GetCookiesTask); |
+}; |
+ |
+class CookiePolicyBrowserTest : public InProcessBrowserTest { |
+ protected: |
CookiePolicyBrowserTest() {} |
+ std::string GetCookies(const GURL& url) { |
+ std::string cookies; |
+ base::WaitableEvent event(true /* manual reset */, |
+ false /* not initially signaled */); |
+ URLRequestContextGetter* context_getter = |
+ browser()->profile()->GetRequestContext(); |
+ EXPECT_TRUE( |
+ ChromeThread::PostTask( |
+ ChromeThread::IO, FROM_HERE, |
+ new GetCookiesTask(url, context_getter, &event, &cookies))); |
+ EXPECT_TRUE(event.Wait()); |
+ return cookies; |
+ } |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(CookiePolicyBrowserTest); |
}; |
@@ -26,21 +69,17 @@ IN_PROC_BROWSER_TEST_F(CookiePolicyBrowserTest, AllowFirstPartyCookies) { |
browser()->profile()->GetHostContentSettingsMap()-> |
SetBlockThirdPartyCookies(true); |
- net::CookieStore* cookie_store = |
- browser()->profile()->GetRequestContext()->GetCookieStore(); |
- |
GURL url = server->TestServerPage("set-cookie?cookie1"); |
- std::string cookie = cookie_store->GetCookies(url); |
+ std::string cookie = GetCookies(url); |
ASSERT_EQ("", cookie); |
ui_test_utils::NavigateToURL(browser(), url); |
- cookie = cookie_store->GetCookies(url); |
+ cookie = GetCookies(url); |
EXPECT_EQ("cookie1", cookie); |
} |
- |
// Visits a page that is a redirect across domain boundary to a page that sets |
// a first-party cookie. |
IN_PROC_BROWSER_TEST_F(CookiePolicyBrowserTest, |
@@ -51,9 +90,6 @@ IN_PROC_BROWSER_TEST_F(CookiePolicyBrowserTest, |
browser()->profile()->GetHostContentSettingsMap()-> |
SetBlockThirdPartyCookies(true); |
- net::CookieStore* cookie_store = |
- browser()->profile()->GetRequestContext()->GetCookieStore(); |
- |
GURL url = server->TestServerPage("server-redirect?"); |
GURL redirected_url = server->TestServerPage("set-cookie?cookie2"); |
@@ -66,7 +102,7 @@ IN_PROC_BROWSER_TEST_F(CookiePolicyBrowserTest, |
replacements.SetHostStr(new_host); |
redirected_url = redirected_url.ReplaceComponents(replacements); |
- std::string cookie = cookie_store->GetCookies(redirected_url); |
+ std::string cookie = GetCookies(redirected_url); |
ASSERT_EQ("", cookie); |
host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
@@ -74,6 +110,8 @@ IN_PROC_BROWSER_TEST_F(CookiePolicyBrowserTest, |
ui_test_utils::NavigateToURL(browser(), |
GURL(url.spec() + redirected_url.spec())); |
- cookie = cookie_store->GetCookies(redirected_url); |
+ cookie = GetCookies(redirected_url); |
EXPECT_EQ("cookie2", cookie); |
} |
+ |
+} // namespace |