| Index: content/browser/cross_site_transfer_browsertest.cc
|
| diff --git a/content/browser/cross_site_transfer_browsertest.cc b/content/browser/cross_site_transfer_browsertest.cc
|
| index 0ce755c21b069ce60a4f8caf9fec5d69f6682ae0..1bca396fd1a177809fd87714a41aa670df9208ae 100644
|
| --- a/content/browser/cross_site_transfer_browsertest.cc
|
| +++ b/content/browser/cross_site_transfer_browsertest.cc
|
| @@ -64,11 +64,10 @@ class TrackingResourceDispatcherHostDelegate
|
| BrowserThread::IO, FROM_HERE,
|
| base::Bind(
|
| &TrackingResourceDispatcherHostDelegate::SetTrackedURLOnIOThread,
|
| - base::Unretained(this),
|
| - tracked_url));
|
| + base::Unretained(this), tracked_url, run_loop_->QuitClosure()));
|
| }
|
|
|
| - // Waits until the tracked URL has been requests, and the request for it has
|
| + // Waits until the tracked URL has been requested, and the request for it has
|
| // been destroyed.
|
| bool WaitForTrackedURLAndGetCompleted() {
|
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| @@ -107,10 +106,12 @@ class TrackingResourceDispatcherHostDelegate
|
| DISALLOW_COPY_AND_ASSIGN(TrackingThrottle);
|
| };
|
|
|
| - void SetTrackedURLOnIOThread(const GURL& tracked_url) {
|
| + void SetTrackedURLOnIOThread(const GURL& tracked_url,
|
| + const base::Closure& run_loop_quit_closure) {
|
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| throttle_created_ = false;
|
| tracked_url_ = tracked_url;
|
| + run_loop_quit_closure_ = run_loop_quit_closure;
|
| }
|
|
|
| void OnTrackedRequestDestroyed(bool completed) {
|
| @@ -118,16 +119,16 @@ class TrackingResourceDispatcherHostDelegate
|
| tracked_request_completed_ = completed;
|
| tracked_url_ = GURL();
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE, run_loop_->QuitClosure());
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| + run_loop_quit_closure_);
|
| }
|
|
|
| // These live on the IO thread.
|
| GURL tracked_url_;
|
| bool throttle_created_;
|
| + base::Closure run_loop_quit_closure_;
|
|
|
| - // This is created and destroyed on the UI thread, but stopped on the IO
|
| - // thread.
|
| + // This lives on the UI thread.
|
| scoped_ptr<base::RunLoop> run_loop_;
|
|
|
| // Set on the IO thread while |run_loop_| is non-NULL, read on the UI thread
|
| @@ -174,9 +175,8 @@ class CrossSiteTransferTest : public ContentBrowserTest {
|
| void SetUpOnMainThread() override {
|
| BrowserThread::PostTask(
|
| BrowserThread::IO, FROM_HERE,
|
| - base::Bind(
|
| - &CrossSiteTransferTest::InjectResourceDisptcherHostDelegate,
|
| - base::Unretained(this)));
|
| + base::Bind(&CrossSiteTransferTest::InjectResourceDispatcherHostDelegate,
|
| + base::Unretained(this)));
|
| host_resolver()->AddRule("*", "127.0.0.1");
|
| ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
|
| content::SetupCrossSiteRedirector(embedded_test_server());
|
| @@ -211,7 +211,7 @@ class CrossSiteTransferTest : public ContentBrowserTest {
|
| IsolateAllSitesForTesting(command_line);
|
| }
|
|
|
| - void InjectResourceDisptcherHostDelegate() {
|
| + void InjectResourceDispatcherHostDelegate() {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| old_delegate_ = ResourceDispatcherHostImpl::Get()->delegate();
|
| ResourceDispatcherHostImpl::Get()->SetDelegate(&tracking_delegate_);
|
|
|