Use the BrowserContext from protocol
authorCheng Zhao <zcbenz@gmail.com>
Thu, 18 Jun 2015 09:18:11 +0000 (17:18 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Thu, 18 Jun 2015 09:18:11 +0000 (17:18 +0800)
atom/browser/api/atom_api_protocol.cc
atom/browser/api/atom_api_protocol.h
atom/browser/net/adapter_request_job.cc
atom/browser/net/adapter_request_job.h
atom/browser/net/url_request_fetch_job.cc
atom/browser/net/url_request_fetch_job.h

index b4ce2e3..75dd70d 100644 (file)
@@ -132,8 +132,8 @@ class CustomProtocolRequestJob : public AdapterRequestJob {
         dict.Get("referrer", &referrer);
 
         BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
-            base::Bind(&AdapterRequestJob::CreateHttpJobAndStart,
-                       GetWeakPtr(), url, method, referrer));
+            base::Bind(&AdapterRequestJob::CreateHttpJobAndStart, GetWeakPtr(),
+                       registry_->browser_context(), url, method, referrer));
         return;
       }
     }
index 8d76008..3e2e18d 100644 (file)
@@ -33,6 +33,8 @@ class Protocol : public mate::EventEmitter {
 
   JsProtocolHandler GetProtocolHandler(const std::string& scheme);
 
+  AtomBrowserContext* browser_context() const { return browser_context_; }
+
  protected:
   explicit Protocol(AtomBrowserContext* browser_context);
 
index 0833182..20be9a7 100644 (file)
@@ -114,16 +114,18 @@ void AdapterRequestJob::CreateFileJobAndStart(const base::FilePath& path) {
   real_job_->Start();
 }
 
-void AdapterRequestJob::CreateHttpJobAndStart(const GURL& url,
-                                              const std::string& method,
-                                              const std::string& referrer) {
+void AdapterRequestJob::CreateHttpJobAndStart(
+    AtomBrowserContext* browser_context,
+    const GURL& url,
+    const std::string& method,
+    const std::string& referrer) {
   if (!url.is_valid()) {
     CreateErrorJobAndStart(net::ERR_INVALID_URL);
     return;
   }
 
-  real_job_ = new URLRequestFetchJob(request(), network_delegate(), url,
-                                     method, referrer);
+  real_job_ = new URLRequestFetchJob(browser_context, request(),
+                                     network_delegate(), url, method, referrer);
   real_job_->Start();
 }
 
index d5e814d..6aff376 100644 (file)
@@ -20,6 +20,8 @@ class FilePath;
 
 namespace atom {
 
+class AtomBrowserContext;
+
 // Ask JS which type of job it wants, and then delegate corresponding methods.
 class AdapterRequestJob : public net::URLRequestJob {
  public:
@@ -59,7 +61,8 @@ class AdapterRequestJob : public net::URLRequestJob {
                                const std::string& charset,
                                scoped_refptr<base::RefCountedBytes> data);
   void CreateFileJobAndStart(const base::FilePath& path);
-  void CreateHttpJobAndStart(const GURL& url,
+  void CreateHttpJobAndStart(AtomBrowserContext* browser_context,
+                             const GURL& url,
                              const std::string& method,
                              const std::string& referrer);
   void CreateJobFromProtocolHandlerAndStart();
index f77379a..e353ff1 100644 (file)
@@ -74,6 +74,7 @@ class ResponsePiper : public net::URLFetcherResponseWriter {
 }  // namespace
 
 URLRequestFetchJob::URLRequestFetchJob(
+    AtomBrowserContext* browser_context,
     net::URLRequest* request,
     net::NetworkDelegate* network_delegate,
     const GURL& url,
@@ -89,8 +90,7 @@ URLRequestFetchJob::URLRequestFetchJob(
     request_type = GetRequestType(method);
 
   fetcher_.reset(net::URLFetcher::Create(url, request_type, this));
-  auto context = AtomBrowserContext::Get()->url_request_context_getter();
-  fetcher_->SetRequestContext(context);
+  fetcher_->SetRequestContext(browser_context->url_request_context_getter());
   fetcher_->SaveResponseWithWriter(make_scoped_ptr(new ResponsePiper(this)));
 
   // Use |request|'s referrer if |referrer| is not specified.
index 7975aa7..d598e32 100644 (file)
 
 namespace atom {
 
+class AtomBrowserContext;
+
 class URLRequestFetchJob : public net::URLRequestJob,
                            public net::URLFetcherDelegate {
  public:
-  URLRequestFetchJob(net::URLRequest* request,
+  URLRequestFetchJob(AtomBrowserContext* browser_context,
+                     net::URLRequest* request,
                      net::NetworkDelegate* network_delegate,
                      const GURL& url,
                      const std::string& method,