Use the BrowserContext from protocol
This commit is contained in:
parent
e209312459
commit
923296b4ee
6 changed files with 21 additions and 11 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -12,10 +12,13 @@
|
|||
|
||||
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,
|
||||
|
|
Loading…
Reference in a new issue