Add InterceptProtocol AtomURLRequestJobFactory.

This commit is contained in:
Cheng Zhao 2013-08-30 21:15:46 +08:00
parent d8cd3d78ff
commit 335db788a5
2 changed files with 20 additions and 0 deletions

View file

@ -12,6 +12,8 @@
namespace atom {
typedef net::URLRequestJobFactory::ProtocolHandler ProtocolHandler;
AtomURLRequestJobFactory::AtomURLRequestJobFactory() {}
AtomURLRequestJobFactory::~AtomURLRequestJobFactory() {
@ -39,6 +41,19 @@ bool AtomURLRequestJobFactory::SetProtocolHandler(
return true;
}
ProtocolHandler* AtomURLRequestJobFactory::InterceptProtocol(
const std::string& scheme,
ProtocolHandler* protocol_handler) {
DCHECK(CalledOnValidThread());
DCHECK(protocol_handler);
if (!ContainsKey(protocol_handler_map_, scheme))
return NULL;
ProtocolHandler* original_protocol_handler = protocol_handler_map_[scheme];
protocol_handler_map_[scheme] = protocol_handler;
return original_protocol_handler;
}
net::URLRequestJob* AtomURLRequestJobFactory::MaybeCreateJobWithProtocolHandler(
const std::string& scheme,
net::URLRequest* request,

View file

@ -26,6 +26,11 @@ class AtomURLRequestJobFactory : public net::URLRequestJobFactory {
bool SetProtocolHandler(const std::string& scheme,
ProtocolHandler* protocol_handler);
// Intercepts the ProtocolHandler for a scheme. Returns the original protocol
// handler on success, otherwise returns NULL.
ProtocolHandler* InterceptProtocol(const std::string& scheme,
ProtocolHandler* protocol_handler);
// URLRequestJobFactory implementation
virtual net::URLRequestJob* MaybeCreateJobWithProtocolHandler(
const std::string& scheme,