Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/plugin/SinkPolicy.inl

Issue 6299667012780032: Issues #696,1231,1264,1265 - Improve handling in PassthroughApp (Closed)
Patch Set: rebase Created Oct. 17, 2014, 12:51 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/plugin/SinkPolicy.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/plugin/SinkPolicy.inl
===================================================================
--- a/src/plugin/SinkPolicy.inl
+++ b/src/plugin/SinkPolicy.inl
@@ -358,32 +358,38 @@
inline HRESULT CustomSinkStartPolicy<Protocol, Sink>::OnStart(LPCWSTR szUrl,
IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo,
DWORD grfPI, HANDLE_PTR dwReserved,
- IInternetProtocol* pTargetProtocol) const
+ IInternetProtocol* pTargetProtocol)
{
ATLASSERT(pTargetProtocol != 0);
+ bool handled = false;
Sink* pSink = GetSink(static_cast<const Protocol*>(this));
HRESULT hr = pSink->OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI,
- dwReserved, pTargetProtocol);
+ dwReserved, pTargetProtocol, handled);
CComPtr<IInternetProtocolSink> spSink;
CComPtr<IInternetBindInfo> spBindInfo;
if (SUCCEEDED(hr))
{
- hr = pSink->QueryInterface(IID_IInternetProtocolSink,
- reinterpret_cast<void**>(&spSink));
+ hr = pSink->QueryInterface(IID_IInternetProtocolSink, reinterpret_cast<void**>(&spSink));
ATLASSERT(SUCCEEDED(hr) && spSink != 0);
}
if (SUCCEEDED(hr))
{
- hr = pSink->QueryInterface(IID_IInternetBindInfo,
- reinterpret_cast<void**>(&spBindInfo));
+ hr = pSink->QueryInterface(IID_IInternetBindInfo, reinterpret_cast<void**>(&spBindInfo));
ATLASSERT(SUCCEEDED(hr) && spBindInfo != 0);
}
- if (SUCCEEDED(hr))
+ if (SUCCEEDED(hr) && !handled)
{
- hr = pTargetProtocol->Start(szUrl, spSink, spBindInfo, grfPI,
- dwReserved);
+ hr = pTargetProtocol->Start(szUrl, spSink, spBindInfo, grfPI, dwReserved);
+ static_cast<Protocol*>(this)->m_hasOriginalStartCalled = true;
+ }
+ if (E_ABORT == hr && pSink->m_blockedInTransaction)
+ {
+ static_cast<Protocol*>(this)->m_shouldSupplyCustomContent = true;
+ pSink->m_spInternetProtocolSink->ReportProgress(BINDSTATUS_MIMETYPEAVAILABLE, L"text/html");
+ pSink->m_spInternetProtocolSink->ReportData(BSCF_FIRSTDATANOTIFICATION, 0, static_cast<ULONG>(g_blockedByABPPage.size()));
+ return S_OK;
}
return hr;
}
« no previous file with comments | « src/plugin/SinkPolicy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld