Implement protocol.uninterceptProtocol
This commit is contained in:
parent
773e932e98
commit
741c8f3d98
2 changed files with 27 additions and 1 deletions
|
@ -65,7 +65,8 @@ mate::ObjectTemplateBuilder Protocol::GetObjectTemplateBuilder(
|
||||||
.SetMethod("interceptFileProtocol",
|
.SetMethod("interceptFileProtocol",
|
||||||
&Protocol::InterceptProtocol<UrlRequestAsyncAsarJob>)
|
&Protocol::InterceptProtocol<UrlRequestAsyncAsarJob>)
|
||||||
.SetMethod("interceptHttpProtocol",
|
.SetMethod("interceptHttpProtocol",
|
||||||
&Protocol::InterceptProtocol<URLRequestFetchJob>);
|
&Protocol::InterceptProtocol<URLRequestFetchJob>)
|
||||||
|
.SetMethod("uninterceptProtocol", &Protocol::UninterceptProtocol);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Protocol::RegisterStandardSchemes(
|
void Protocol::RegisterStandardSchemes(
|
||||||
|
@ -106,6 +107,27 @@ bool Protocol::IsHandledProtocolInIO(const std::string& scheme) {
|
||||||
return job_factory_->IsHandledProtocol(scheme);
|
return job_factory_->IsHandledProtocol(scheme);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Protocol::UninterceptProtocol(
|
||||||
|
const std::string& scheme, mate::Arguments* args) {
|
||||||
|
CompletionCallback callback;
|
||||||
|
args->GetNext(&callback);
|
||||||
|
content::BrowserThread::PostTaskAndReplyWithResult(
|
||||||
|
content::BrowserThread::IO, FROM_HERE,
|
||||||
|
base::Bind(&Protocol::UninterceptProtocolInIO,
|
||||||
|
base::Unretained(this), scheme),
|
||||||
|
base::Bind(&Protocol::OnIOCompleted,
|
||||||
|
base::Unretained(this), callback));
|
||||||
|
}
|
||||||
|
|
||||||
|
Protocol::ProtocolError Protocol::UninterceptProtocolInIO(
|
||||||
|
const std::string& scheme) {
|
||||||
|
if (!original_protocols_.contains(scheme))
|
||||||
|
return PROTOCOL_NOT_INTERCEPTED;
|
||||||
|
job_factory_->ReplaceProtocol(scheme,
|
||||||
|
original_protocols_.take_and_erase(scheme));
|
||||||
|
return PROTOCOL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
void Protocol::OnIOCompleted(
|
void Protocol::OnIOCompleted(
|
||||||
const CompletionCallback& callback, ProtocolError error) {
|
const CompletionCallback& callback, ProtocolError error) {
|
||||||
// The completion callback is optional.
|
// The completion callback is optional.
|
||||||
|
|
|
@ -162,6 +162,10 @@ class Protocol : public mate::Wrappable {
|
||||||
return PROTOCOL_OK;
|
return PROTOCOL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Restore the |scheme| to its original protocol handler.
|
||||||
|
void UninterceptProtocol(const std::string& scheme, mate::Arguments* args);
|
||||||
|
ProtocolError UninterceptProtocolInIO(const std::string& scheme);
|
||||||
|
|
||||||
// Convert error code to JS exception and call the callback.
|
// Convert error code to JS exception and call the callback.
|
||||||
void OnIOCompleted(const CompletionCallback& callback, ProtocolError error);
|
void OnIOCompleted(const CompletionCallback& callback, ProtocolError error);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue