зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1411439: Pass reference to owning interceptor into HandlerProvider for payload creation; r=Jamie
MozReview-Commit-ID: GUW4DrsJEn --HG-- extra : amend_source : 755ff37c8bc40de408f8668e9e44ebfd41bd9136
This commit is contained in:
Родитель
be5782c8e7
Коммит
5a394f86cf
|
@ -128,7 +128,8 @@ HandlerProvider::GetAndSerializePayload(const MutexAutoLock&)
|
|||
}
|
||||
|
||||
HRESULT
|
||||
HandlerProvider::GetHandlerPayloadSize(NotNull<DWORD*> aOutPayloadSize)
|
||||
HandlerProvider::GetHandlerPayloadSize(NotNull<mscom::IInterceptor*> aInterceptor,
|
||||
NotNull<DWORD*> aOutPayloadSize)
|
||||
{
|
||||
MOZ_ASSERT(mscom::IsCurrentThreadMTA());
|
||||
|
||||
|
@ -297,7 +298,8 @@ HandlerProvider::IsTargetInterfaceCacheable()
|
|||
}
|
||||
|
||||
HRESULT
|
||||
HandlerProvider::WriteHandlerPayload(NotNull<IStream*> aStream)
|
||||
HandlerProvider::WriteHandlerPayload(NotNull<mscom::IInterceptor*> aInterceptor,
|
||||
NotNull<IStream*> aStream)
|
||||
{
|
||||
MutexAutoLock lock(mMutex);
|
||||
|
||||
|
|
|
@ -41,8 +41,10 @@ public:
|
|||
|
||||
// IHandlerProvider
|
||||
STDMETHODIMP GetHandler(NotNull<CLSID*> aHandlerClsid) override;
|
||||
STDMETHODIMP GetHandlerPayloadSize(NotNull<DWORD*> aOutPayloadSize) override;
|
||||
STDMETHODIMP WriteHandlerPayload(NotNull<IStream*> aStream) override;
|
||||
STDMETHODIMP GetHandlerPayloadSize(NotNull<mscom::IInterceptor*> aInterceptor,
|
||||
NotNull<DWORD*> aOutPayloadSize) override;
|
||||
STDMETHODIMP WriteHandlerPayload(NotNull<mscom::IInterceptor*> aInterceptor,
|
||||
NotNull<IStream*> aStream) override;
|
||||
STDMETHODIMP_(REFIID) MarshalAs(REFIID aIid) override;
|
||||
STDMETHODIMP_(REFIID) GetEffectiveOutParamIid(REFIID aCallIid,
|
||||
ULONG aCallMethod) override;
|
||||
|
|
|
@ -15,11 +15,13 @@
|
|||
namespace mozilla {
|
||||
namespace mscom {
|
||||
|
||||
struct IInterceptor;
|
||||
|
||||
struct HandlerProvider
|
||||
{
|
||||
virtual STDMETHODIMP GetHandler(NotNull<CLSID*> aHandlerClsid) = 0;
|
||||
virtual STDMETHODIMP GetHandlerPayloadSize(NotNull<DWORD*> aOutPayloadSize) = 0;
|
||||
virtual STDMETHODIMP WriteHandlerPayload(NotNull<IStream*> aStream) = 0;
|
||||
virtual STDMETHODIMP GetHandlerPayloadSize(NotNull<IInterceptor*> aInterceptor, NotNull<DWORD*> aOutPayloadSize) = 0;
|
||||
virtual STDMETHODIMP WriteHandlerPayload(NotNull<IInterceptor*> aInterceptor, NotNull<IStream*> aStream) = 0;
|
||||
virtual STDMETHODIMP_(REFIID) MarshalAs(REFIID aIid) = 0;
|
||||
};
|
||||
|
||||
|
|
|
@ -247,7 +247,8 @@ Interceptor::GetMarshalSizeMax(REFIID riid, void* pv, DWORD dwDestContext,
|
|||
}
|
||||
|
||||
DWORD payloadSize = 0;
|
||||
hr = mEventSink->GetHandlerPayloadSize(WrapNotNull(&payloadSize));
|
||||
hr = mEventSink->GetHandlerPayloadSize(WrapNotNull(this),
|
||||
WrapNotNull(&payloadSize));
|
||||
if (hr == E_NOTIMPL) {
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -307,7 +308,7 @@ Interceptor::MarshalInterface(IStream* pStm, REFIID riid, void* pv,
|
|||
}
|
||||
#endif // defined(MOZ_MSCOM_REMARSHAL_NO_HANDLER)
|
||||
|
||||
hr = mEventSink->WriteHandlerPayload(WrapNotNull(pStm));
|
||||
hr = mEventSink->WriteHandlerPayload(WrapNotNull(this), WrapNotNull(pStm));
|
||||
if (hr == E_NOTIMPL) {
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -517,21 +517,23 @@ MainThreadHandoff::GetHandler(NotNull<CLSID*> aHandlerClsid)
|
|||
}
|
||||
|
||||
HRESULT
|
||||
MainThreadHandoff::GetHandlerPayloadSize(NotNull<DWORD*> aOutPayloadSize)
|
||||
MainThreadHandoff::GetHandlerPayloadSize(NotNull<IInterceptor*> aInterceptor,
|
||||
NotNull<DWORD*> aOutPayloadSize)
|
||||
{
|
||||
if (!mHandlerProvider) {
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
return mHandlerProvider->GetHandlerPayloadSize(aOutPayloadSize);
|
||||
return mHandlerProvider->GetHandlerPayloadSize(aInterceptor, aOutPayloadSize);
|
||||
}
|
||||
|
||||
HRESULT
|
||||
MainThreadHandoff::WriteHandlerPayload(NotNull<IStream*> aStream)
|
||||
MainThreadHandoff::WriteHandlerPayload(NotNull<IInterceptor*> aInterceptor,
|
||||
NotNull<IStream*> aStream)
|
||||
{
|
||||
if (!mHandlerProvider) {
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
return mHandlerProvider->WriteHandlerPayload(aStream);
|
||||
return mHandlerProvider->WriteHandlerPayload(aInterceptor, aStream);
|
||||
}
|
||||
|
||||
REFIID
|
||||
|
|
|
@ -61,8 +61,10 @@ public:
|
|||
// IInterceptorSink
|
||||
STDMETHODIMP SetInterceptor(IWeakReference* aInterceptor) override;
|
||||
STDMETHODIMP GetHandler(NotNull<CLSID*> aHandlerClsid) override;
|
||||
STDMETHODIMP GetHandlerPayloadSize(NotNull<DWORD*> aOutPayloadSize) override;
|
||||
STDMETHODIMP WriteHandlerPayload(NotNull<IStream*> aStream) override;
|
||||
STDMETHODIMP GetHandlerPayloadSize(NotNull<IInterceptor*> aInterceptor,
|
||||
NotNull<DWORD*> aOutPayloadSize) override;
|
||||
STDMETHODIMP WriteHandlerPayload(NotNull<IInterceptor*> aInterceptor,
|
||||
NotNull<IStream*> aStream) override;
|
||||
STDMETHODIMP_(REFIID) MarshalAs(REFIID aIid) override;
|
||||
|
||||
// ICallFrameWalker
|
||||
|
|
Загрузка…
Ссылка в новой задаче