Index: src/plugin/PluginWbPassThrough.h
===================================================================
--- a/src/plugin/PluginWbPassThrough.h
+++ b/src/plugin/PluginWbPassThrough.h
@@ -1,5 +1,5 @@
 #pragma once
-
+#include <cstdint>
 #include "ProtocolCF.h"
 #include "ProtocolImpl.h"
 #define IE_MAX_URL_LENGTH 2048
@@ -11,14 +11,17 @@
 	typedef PassthroughAPP::CInternetProtocolSinkWithSP<WBPassthruSink, CComMultiThreadModel> BaseClass;
 
 public:
+	WBPassthruSink();
 
-	bool m_shouldBlock;
-	bool m_lastDataReported;
+	uint64_t m_currentPositionOfSentPage;
 	CComPtr<IInternetProtocol> m_pTargetProtocol;
+	int m_contentType;
+	std::wstring m_boundDomain;
+	bool m_blockedInTransaction;
 
-  int GetContentTypeFromMimeType(CString mimeType);
-  int GetContentTypeFromURL(CString src);
-  int GetContentType(CString mimeType, std::wstring domain, CString src);
+	int GetContentTypeFromMimeType(const CString& mimeType);
+	int GetContentTypeFromURL(const CString& src);
+	int GetContentType(const CString& mimeType, const std::wstring& domain, const CString& src);
 public:
 	BEGIN_COM_MAP(WBPassthruSink)
 		COM_INTERFACE_ENTRY(IHttpNegotiate)
@@ -43,13 +46,18 @@
 
 	HRESULT OnStart(LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink,
 		IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved,
-		IInternetProtocol* pTargetProtocol);
-	HRESULT Read(void *pv, ULONG cb, ULONG* pcbRead);
+		IInternetProtocol* pTargetProtocol, bool& handled);
+	HRESULT OnRead(void *pv, ULONG cb, ULONG* pcbRead);
 
 	STDMETHODIMP ReportProgress(
 		/* [in] */ ULONG ulStatusCode,
 		/* [in] */ LPCWSTR szStatusText);
 
+	STDMETHODIMP ReportResult(
+		/* [in] */ HRESULT hrResult,
+		/* [in] */ DWORD dwError,
+		/* [in] */ LPCWSTR szResult);
+
 	STDMETHODIMP Switch(
 		/* [in] */ PROTOCOLDATA *pProtocolData);
 };
@@ -59,11 +67,19 @@
 
 class WBPassthru : public PassthroughAPP::CInternetProtocol<WBStartPolicy>
 {
+  typedef PassthroughAPP::CInternetProtocol<WBStartPolicy> BaseClass;
 public:
+  WBPassthru();
   // IInternetProtocolRoot
   STDMETHODIMP Start(LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink,
-    IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved);
+    IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved) override;
 
   //IInternetProtocol
-  STDMETHODIMP Read(	/* [in, out] */ void *pv,/* [in] */ ULONG cb,/* [out] */ ULONG *pcbRead);
+  STDMETHODIMP Read(/* [in, out] */ void *pv,/* [in] */ ULONG cb,/* [out] */ ULONG *pcbRead) override;
+
+  STDMETHODIMP LockRequest(/* [in] */ DWORD dwOptions) override;
+  STDMETHODIMP UnlockRequest() override;
+
+  bool m_shouldSupplyCustomContent;
+  bool m_hasOriginalStartCalled;
 };
