| Index: content/child/resource_dispatcher.cc
 | 
| diff --git a/content/child/resource_dispatcher.cc b/content/child/resource_dispatcher.cc
 | 
| index 5ca85c2d3a58d2a71c43fe1bdef118b7725c9643..a9d45898d0e062f012df1161bcc5a6a79fa1722b 100644
 | 
| --- a/content/child/resource_dispatcher.cc
 | 
| +++ b/content/child/resource_dispatcher.cc
 | 
| @@ -8,6 +8,7 @@
 | 
|  
 | 
|  #include <utility>
 | 
|  
 | 
| +#include "base/atomic_sequence_num.h"
 | 
|  #include "base/bind.h"
 | 
|  #include "base/compiler_specific.h"
 | 
|  #include "base/debug/alias.h"
 | 
| @@ -67,8 +68,8 @@ int MakeRequestID() {
 | 
|    // NOTE: The resource_dispatcher_host also needs probably unique
 | 
|    // request_ids, so they count down from -2 (-1 is a special we're
 | 
|    // screwed value), while the renderer process counts up.
 | 
| -  static int next_request_id = 0;
 | 
| -  return next_request_id++;
 | 
| +  static base::StaticAtomicSequenceNumber sequence;
 | 
| +  return sequence.GetNext();  // We start at zero.
 | 
|  }
 | 
|  
 | 
|  void CheckSchemeForReferrerPolicy(const ResourceRequest& request) {
 | 
| @@ -88,13 +89,12 @@ void CheckSchemeForReferrerPolicy(const ResourceRequest& request) {
 | 
|  
 | 
|  ResourceDispatcher::ResourceDispatcher(
 | 
|      IPC::Sender* sender,
 | 
| -    scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner)
 | 
| +    scoped_refptr<base::SingleThreadTaskRunner> thread_task_runner)
 | 
|      : message_sender_(sender),
 | 
|        delegate_(NULL),
 | 
|        io_timestamp_(base::TimeTicks()),
 | 
| -      main_thread_task_runner_(main_thread_task_runner),
 | 
| -      weak_factory_(this) {
 | 
| -}
 | 
| +      thread_task_runner_(thread_task_runner),
 | 
| +      weak_factory_(this) {}
 | 
|  
 | 
|  ResourceDispatcher::~ResourceDispatcher() {
 | 
|  }
 | 
| @@ -401,7 +401,7 @@ bool ResourceDispatcher::RemovePendingRequest(int request_id) {
 | 
|    // Always delete the pending_request asyncly so that cancelling the request
 | 
|    // doesn't delete the request context info while its response is still being
 | 
|    // handled.
 | 
| -  main_thread_task_runner_->DeleteSoon(FROM_HERE, it->second.release());
 | 
| +  thread_task_runner_->DeleteSoon(FROM_HERE, it->second.release());
 | 
|    pending_requests_.erase(it);
 | 
|  
 | 
|    if (release_downloaded_file) {
 | 
| @@ -470,7 +470,7 @@ void ResourceDispatcher::SetDefersLoading(int request_id, bool value) {
 | 
|  
 | 
|      FollowPendingRedirect(request_id, request_info);
 | 
|  
 | 
| -    main_thread_task_runner_->PostTask(
 | 
| +    thread_task_runner_->PostTask(
 | 
|          FROM_HERE, base::Bind(&ResourceDispatcher::FlushDeferredMessages,
 | 
|                                weak_factory_.GetWeakPtr(), request_id));
 | 
|    }
 | 
| @@ -639,7 +639,7 @@ int ResourceDispatcher::StartAsync(
 | 
|    }
 | 
|  
 | 
|    scoped_refptr<base::SingleThreadTaskRunner> task_runner =
 | 
| -      loading_task_runner ? loading_task_runner : main_thread_task_runner_;
 | 
| +      loading_task_runner ? loading_task_runner : thread_task_runner_;
 | 
|  
 | 
|    if (consumer_handle.is_valid()) {
 | 
|      pending_requests_[request_id]->url_loader_client =
 | 
| @@ -655,7 +655,7 @@ int ResourceDispatcher::StartAsync(
 | 
|  
 | 
|    if (ipc_type == blink::WebURLRequest::LoadingIPCType::kMojo) {
 | 
|      scoped_refptr<base::SingleThreadTaskRunner> task_runner =
 | 
| -        loading_task_runner ? loading_task_runner : main_thread_task_runner_;
 | 
| +        loading_task_runner ? loading_task_runner : thread_task_runner_;
 | 
|      std::unique_ptr<URLLoaderClientImpl> client(
 | 
|          new URLLoaderClientImpl(request_id, this, std::move(task_runner)));
 | 
|      mojom::URLLoaderAssociatedPtr url_loader;
 | 
| 
 |