Bug 1588241 - P7. Use NeckoTargetChannelFunctionEvent in DCC. r=mattwoodrow

Differential Revision: https://phabricator.services.mozilla.com/D52503

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Jean-Yves Avenard 2019-11-15 02:42:18 +00:00
parent 20d5d4d0d3
commit 006c446630
2 changed files with 5 additions and 24 deletions

View File

@ -190,31 +190,15 @@ DocumentChannelChild::AsyncOpen(nsIStreamListener* aListener) {
return NS_OK;
}
class DocumentFailedAsyncOpenEvent
: public NeckoTargetChannelEvent<DocumentChannelChild> {
public:
DocumentFailedAsyncOpenEvent(DocumentChannelChild* aChild,
nsresult aStatusCode)
: NeckoTargetChannelEvent<DocumentChannelChild>(aChild),
mStatus(aStatusCode) {}
void Run() override { mChild->DoFailedAsyncOpen(mStatus); }
private:
nsresult mStatus;
};
IPCResult DocumentChannelChild::RecvFailedAsyncOpen(
const nsresult& aStatusCode) {
mEventQueue->RunOrEnqueue(
new DocumentFailedAsyncOpenEvent(this, aStatusCode));
mEventQueue->RunOrEnqueue(new NeckoTargetChannelFunctionEvent(
this, [self = UnsafePtr<DocumentChannelChild>(this), aStatusCode]() {
self->ShutdownListeners(aStatusCode);
}));
return IPC_OK();
}
void DocumentChannelChild::DoFailedAsyncOpen(const nsresult& aStatusCode) {
ShutdownListeners(aStatusCode);
}
void DocumentChannelChild::ShutdownListeners(nsresult aStatusCode) {
mStatus = aStatusCode;

View File

@ -76,15 +76,12 @@ class DocumentChannelChild final : public PDocumentChannelChild,
const LoadInfoArgs& aLoadInfo, nsIURI* aNewUri,
ConfirmRedirectResolver&& aResolve);
void DoFailedAsyncOpen(const nsresult& aStatusCode);
const nsTArray<DocumentChannelRedirect>& GetRedirectChain() const {
return mRedirects;
}
friend class NeckoTargetChannelEvent<DocumentChannelChild>;
private:
friend class NeckoTargetChannelFunctionEvent;
void ShutdownListeners(nsresult aStatusCode);
~DocumentChannelChild() = default;