зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1607984 - P9. Implement nsIThreadRetargetableStreamListener in ParentChannelListerner. r=valentin
The DocumentLoadListener is setting up a ParentChannelListener to go in between the normal listener->channel chain. ParentChannelListener not implementing nsIThreadRetargetableStreamListener would prevent a nsHtml5StreamParser settings things up so that OnDataAvailable could be sent to a html parser thread off the main thread; improving performance. Differential Revision: https://phabricator.services.mozilla.com/D70006
This commit is contained in:
Родитель
6f52ea6084
Коммит
b9eb27d09b
|
@ -70,6 +70,7 @@ NS_INTERFACE_MAP_BEGIN(ParentChannelListener)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
|
NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIMultiPartChannelListener)
|
NS_INTERFACE_MAP_ENTRY(nsIMultiPartChannelListener)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsINetworkInterceptController)
|
NS_INTERFACE_MAP_ENTRY(nsINetworkInterceptController)
|
||||||
|
NS_INTERFACE_MAP_ENTRY(nsIThreadRetargetableStreamListener)
|
||||||
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIAuthPromptProvider, mBrowsingContext)
|
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIAuthPromptProvider, mBrowsingContext)
|
||||||
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIRemoteWindowContext, mBrowsingContext)
|
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIRemoteWindowContext, mBrowsingContext)
|
||||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIInterfaceRequestor)
|
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIInterfaceRequestor)
|
||||||
|
@ -446,5 +447,22 @@ ParentChannelListener::GetUsePrivateBrowsing(bool* aUsePrivateBrowsing) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// ParentChannelListener::nsIThreadRetargetableStreamListener
|
||||||
|
//
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
ParentChannelListener::CheckListenerChain() {
|
||||||
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
|
|
||||||
|
nsCOMPtr<nsIThreadRetargetableStreamListener> listener =
|
||||||
|
do_QueryInterface(mNextListener);
|
||||||
|
if (!listener) {
|
||||||
|
return NS_ERROR_NO_INTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return listener->CheckListenerChain();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace net
|
} // namespace net
|
||||||
} // namespace mozilla
|
} // namespace mozilla
|
||||||
|
|
|
@ -8,14 +8,14 @@
|
||||||
#ifndef mozilla_net_ParentChannelListener_h
|
#ifndef mozilla_net_ParentChannelListener_h
|
||||||
#define mozilla_net_ParentChannelListener_h
|
#define mozilla_net_ParentChannelListener_h
|
||||||
|
|
||||||
|
#include "mozilla/dom/CanonicalBrowsingContext.h"
|
||||||
#include "nsIAuthPromptProvider.h"
|
#include "nsIAuthPromptProvider.h"
|
||||||
#include "nsIInterfaceRequestor.h"
|
#include "nsIInterfaceRequestor.h"
|
||||||
#include "nsINetworkInterceptController.h"
|
|
||||||
#include "nsIStreamListener.h"
|
|
||||||
#include "nsIMultiPartChannel.h"
|
#include "nsIMultiPartChannel.h"
|
||||||
|
#include "nsINetworkInterceptController.h"
|
||||||
#include "nsIRemoteWindowContext.h"
|
#include "nsIRemoteWindowContext.h"
|
||||||
#include "mozilla/dom/CanonicalBrowsingContext.h"
|
#include "nsIStreamListener.h"
|
||||||
#include "mozilla/dom/CanonicalBrowsingContext.h"
|
#include "nsIThreadRetargetableStreamListener.h"
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace net {
|
namespace net {
|
||||||
|
@ -35,6 +35,7 @@ class ParentChannelListener final : public nsIInterfaceRequestor,
|
||||||
public nsIStreamListener,
|
public nsIStreamListener,
|
||||||
public nsIMultiPartChannelListener,
|
public nsIMultiPartChannelListener,
|
||||||
public nsINetworkInterceptController,
|
public nsINetworkInterceptController,
|
||||||
|
public nsIThreadRetargetableStreamListener,
|
||||||
private nsIAuthPromptProvider,
|
private nsIAuthPromptProvider,
|
||||||
private nsIRemoteWindowContext {
|
private nsIRemoteWindowContext {
|
||||||
public:
|
public:
|
||||||
|
@ -46,6 +47,7 @@ class ParentChannelListener final : public nsIInterfaceRequestor,
|
||||||
NS_DECL_NSINETWORKINTERCEPTCONTROLLER
|
NS_DECL_NSINETWORKINTERCEPTCONTROLLER
|
||||||
NS_DECL_NSIAUTHPROMPTPROVIDER
|
NS_DECL_NSIAUTHPROMPTPROVIDER
|
||||||
NS_DECL_NSIREMOTEWINDOWCONTEXT
|
NS_DECL_NSIREMOTEWINDOWCONTEXT
|
||||||
|
NS_DECL_NSITHREADRETARGETABLESTREAMLISTENER
|
||||||
|
|
||||||
NS_DECLARE_STATIC_IID_ACCESSOR(PARENT_CHANNEL_LISTENER)
|
NS_DECLARE_STATIC_IID_ACCESSOR(PARENT_CHANNEL_LISTENER)
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче