use request context from session if provided

This commit is contained in:
Robo 2015-07-15 18:05:38 +05:30
parent 8eb87c5d2b
commit 57244e4718
9 changed files with 46 additions and 8 deletions

View file

@ -7,6 +7,7 @@
#include "atom/browser/atom_browser_client.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/api/atom_api_session.h"
#include "atom/browser/net/adapter_request_job.h"
#include "atom/browser/net/atom_url_request_job_factory.h"
#include "atom/common/native_mate_converters/file_path_converter.h"
@ -34,6 +35,23 @@ struct Converter<const net::URLRequest*> {
}
};
template<>
struct Converter<net::URLRequestContextGetter*> {
static bool FromV8(v8::Isolate* isolate, v8::Local<v8::Value> val,
net::URLRequestContextGetter** out) {
if (val->IsNull() || val->IsUndefined()) {
*out = nullptr;
return true;
}
atom::api::Session* session;
if (!Converter<atom::api::Session*>::FromV8(isolate, val, &session))
return false;
*out = session->GetBrowserContext()->GetRequestContext();
return true;
}
};
} // namespace mate
namespace atom {
@ -126,13 +144,15 @@ class CustomProtocolRequestJob : public AdapterRequestJob {
} else if (name == "RequestHttpJob") {
GURL url;
std::string method, referrer;
net::URLRequestContextGetter* getter;
dict.Get("url", &url);
dict.Get("method", &method);
dict.Get("referrer", &referrer);
dict.Get("session", &getter);
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&AdapterRequestJob::CreateHttpJobAndStart, GetWeakPtr(),
url, method, referrer));
base::Unretained(getter), url, method, referrer));
return;
}
}