| OLD | NEW |
| 1 #include "PluginStdAfx.h" | 1 #include "PluginStdAfx.h" |
| 2 | 2 |
| 3 #include "PluginWbPassThrough.h" | 3 #include "PluginWbPassThrough.h" |
| 4 #include "PluginClient.h" | 4 #include "PluginClient.h" |
| 5 #include "PluginClientFactory.h" | 5 #include "PluginClientFactory.h" |
| 6 #ifdef SUPPORT_FILTER | 6 #ifdef SUPPORT_FILTER |
| 7 #include "PluginFilter.h" | 7 #include "PluginFilter.h" |
| 8 #endif | 8 #endif |
| 9 #include "PluginSettings.h" | 9 #include "PluginSettings.h" |
| 10 #include "PluginClass.h" | 10 #include "PluginClass.h" |
| 11 #include "PluginSystem.h" | 11 #include "PluginSystem.h" |
| 12 #include "Wrapper.h" | 12 #include "Wrapper.h" |
| 13 #include "PluginUtil.h" | 13 #include "PluginUtil.h" |
| 14 #include "../shared/Utils.h" |
| 14 | 15 |
| 15 #include "wtypes.h" | 16 #include "wtypes.h" |
| 16 | 17 |
| 17 EXTERN_C IMAGE_DOS_HEADER __ImageBase; | 18 EXTERN_C IMAGE_DOS_HEADER __ImageBase; |
| 18 | 19 |
| 19 | 20 |
| 20 WBPassthruSink::WBPassthruSink() | 21 WBPassthruSink::WBPassthruSink() |
| 21 { | 22 { |
| 22 m_pTargetProtocol = NULL; | 23 m_pTargetProtocol = NULL; |
| 23 } | 24 } |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 { | 100 { |
| 100 return CFilter::contentTypeAny & ~CFilter::contentTypeSubdocument; | 101 return CFilter::contentTypeAny & ~CFilter::contentTypeSubdocument; |
| 101 } | 102 } |
| 102 | 103 |
| 103 } | 104 } |
| 104 | 105 |
| 105 int WBPassthruSink::GetContentType(std::wstring mimeType, std::wstring domain, s
td::wstring src) | 106 int WBPassthruSink::GetContentType(std::wstring mimeType, std::wstring domain, s
td::wstring src) |
| 106 { | 107 { |
| 107 // No referer or mime type | 108 // No referer or mime type |
| 108 // BINDSTRING_XDR_ORIGIN works only for IE v8+ | 109 // BINDSTRING_XDR_ORIGIN works only for IE v8+ |
| 109 if (mimeType.empty() && domain.empty() && CPluginClient::GetInstance()->GetIEV
ersion() >= 8) | 110 if ( mimeType.empty() && domain.empty() ) |
| 110 { | 111 { |
| 111 return CFilter::contentTypeXmlHttpRequest; | 112 return CFilter::contentTypeXmlHttpRequest; |
| 112 } | 113 } |
| 113 int contentType = GetContentTypeFromMimeType(mimeType); | 114 int contentType = GetContentTypeFromMimeType(mimeType); |
| 114 if (contentType == CFilter::contentTypeAny) | 115 if (contentType == CFilter::contentTypeAny) |
| 115 { | 116 { |
| 116 contentType = GetContentTypeFromURL(src); | 117 contentType = GetContentTypeFromURL(src); |
| 117 } | 118 } |
| 118 return contentType; | 119 return contentType; |
| 119 } | 120 } |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 { | 220 { |
| 220 CPluginDebug::DebugResultBlocking(type, src, boundDomain); | 221 CPluginDebug::DebugResultBlocking(type, src, boundDomain); |
| 221 } | 222 } |
| 222 else | 223 else |
| 223 { | 224 { |
| 224 CPluginDebug::DebugResultIgnoring(type, src, boundDomain); | 225 CPluginDebug::DebugResultIgnoring(type, src, boundDomain); |
| 225 } | 226 } |
| 226 #endif | 227 #endif |
| 227 | 228 |
| 228 //Fixes the iframe back button issue | 229 //Fixes the iframe back button issue |
| 229 if (client->GetIEVersion() > 6) | 230 if ((contentType == CFilter::contentTypeImage) && (isBlocked)) |
| 230 { | 231 { |
| 231 if ((contentType == CFilter::contentTypeImage) && (isBlocked)) | 232 m_shouldBlock = true; |
| 233 BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved, pTarg
etProtocol); |
| 234 |
| 235 return INET_E_REDIRECT_FAILED; |
| 236 |
| 237 } |
| 238 if (((contentType == CFilter::contentTypeSubdocument))&& (isBlocked)) |
| 239 { |
| 240 m_shouldBlock = true; |
| 241 BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved, pTarg
etProtocol); |
| 242 |
| 243 m_spInternetProtocolSink->ReportProgress(BINDSTATUS_MIMETYPEAVAILABLE, L"tex
t/html"); |
| 244 |
| 245 //Here we check if we are running on Windows 8 Consumer Preview. |
| 246 //For some reason on that environment the next line causes IE to crash |
| 247 if (CPluginSettings::GetInstance()->GetWindowsBuildNumber() != 8250) |
| 232 { | 248 { |
| 233 m_shouldBlock = true; | 249 m_spInternetProtocolSink->ReportResult(INET_E_REDIRECTING, 301, L"res://ms
html.dll/blank.htm"); |
| 234 BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved, pTa
rgetProtocol); | 250 } |
| 235 | 251 |
| 236 return INET_E_REDIRECT_FAILED; | 252 return INET_E_REDIRECT_FAILED; |
| 253 } |
| 254 if (((contentType == CFilter::contentTypeScript))&& (isBlocked)) |
| 255 { |
| 256 m_shouldBlock = true; |
| 257 BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved, pTarg
etProtocol); |
| 258 m_spInternetProtocolSink->ReportProgress(BINDSTATUS_MIMETYPEAVAILABLE, L"tex
t/javascript"); |
| 259 m_spInternetProtocolSink->ReportResult(INET_E_REDIRECTING, 301, L"data:"); |
| 260 return INET_E_REDIRECT_FAILED; |
| 261 } |
| 262 if ((isBlocked)) |
| 263 { |
| 264 m_shouldBlock = true; |
| 265 BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved, pTarg
etProtocol); |
| 266 m_spInternetProtocolSink->ReportResult(S_FALSE, 0, L""); |
| 237 | 267 |
| 238 } | 268 return INET_E_REDIRECT_FAILED; |
| 239 if (((contentType == CFilter::contentTypeSubdocument))&& (isBlocked)) | |
| 240 { | |
| 241 m_shouldBlock = true; | |
| 242 BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved, pTa
rgetProtocol); | |
| 243 | |
| 244 m_spInternetProtocolSink->ReportProgress(BINDSTATUS_MIMETYPEAVAILABLE, L"t
ext/html"); | |
| 245 | |
| 246 //Here we check if we are running on Windows 8 Consumer Preview. | |
| 247 //For some reason on that environment the next line causes IE to crash | |
| 248 if (CPluginSettings::GetInstance()->GetWindowsBuildNumber() != 8250) | |
| 249 { | |
| 250 m_spInternetProtocolSink->ReportResult(INET_E_REDIRECTING, 301, L"res://
mshtml.dll/blank.htm"); | |
| 251 } | |
| 252 | |
| 253 return INET_E_REDIRECT_FAILED; | |
| 254 } | |
| 255 if (((contentType == CFilter::contentTypeScript))&& (isBlocked)) | |
| 256 { | |
| 257 m_shouldBlock = true; | |
| 258 BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved, pTa
rgetProtocol); | |
| 259 m_spInternetProtocolSink->ReportProgress(BINDSTATUS_MIMETYPEAVAILABLE, L"t
ext/javascript"); | |
| 260 m_spInternetProtocolSink->ReportResult(INET_E_REDIRECTING, 301, L"data:"); | |
| 261 return INET_E_REDIRECT_FAILED; | |
| 262 } | |
| 263 if ((isBlocked)) | |
| 264 { | |
| 265 /* WCHAR tmp[256]; | |
| 266 wsprintf(tmp, L"URL: %s, domain: %s, mime: %s, type: %d", szUrl, boundDoma
in, mimeType, contentType); | |
| 267 MessageBox(NULL, tmp, L"", MB_OK); | |
| 268 contentType = GetContentType(mimeType, boundDomain, src); | |
| 269 */ | |
| 270 m_shouldBlock = true; | |
| 271 BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, dwReserved, pTa
rgetProtocol); | |
| 272 m_spInternetProtocolSink->ReportResult(S_FALSE, 0, L""); | |
| 273 | |
| 274 return INET_E_REDIRECT_FAILED; | |
| 275 } | |
| 276 } | 269 } |
| 277 #endif // SUPPORT_FILTER | 270 #endif // SUPPORT_FILTER |
| 278 | 271 |
| 279 return isBlocked ? S_FALSE : BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInf
o, grfPI, dwReserved, pTargetProtocol); | 272 return isBlocked ? S_FALSE : BaseClass::OnStart(szUrl, pOIProtSink, pOIBindInf
o, grfPI, dwReserved, pTargetProtocol); |
| 280 } | 273 } |
| 281 | 274 |
| 282 | 275 |
| 283 HRESULT WBPassthruSink::Read(void *pv, ULONG cb, ULONG* pcbRead) | 276 HRESULT WBPassthruSink::Read(void *pv, ULONG cb, ULONG* pcbRead) |
| 284 { | 277 { |
| 285 if (m_shouldBlock) | 278 if (m_shouldBlock) |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 CComPtr<IHttpNegotiate> spHttpNegotiate; | 356 CComPtr<IHttpNegotiate> spHttpNegotiate; |
| 364 QueryServiceFromClient(&spHttpNegotiate); | 357 QueryServiceFromClient(&spHttpNegotiate); |
| 365 | 358 |
| 366 return spHttpNegotiate ? spHttpNegotiate->OnResponse(dwResponseCode, szRespons
eHeaders, szRequestHeaders, pszAdditionalRequestHeaders) : S_OK; | 359 return spHttpNegotiate ? spHttpNegotiate->OnResponse(dwResponseCode, szRespons
eHeaders, szRequestHeaders, pszAdditionalRequestHeaders) : S_OK; |
| 367 } | 360 } |
| 368 | 361 |
| 369 STDMETHODIMP WBPassthruSink::ReportProgress(ULONG ulStatusCode, LPCWSTR szStatus
Text) | 362 STDMETHODIMP WBPassthruSink::ReportProgress(ULONG ulStatusCode, LPCWSTR szStatus
Text) |
| 370 { | 363 { |
| 371 return m_spInternetProtocolSink ? m_spInternetProtocolSink->ReportProgress(ulS
tatusCode, szStatusText) : S_OK; | 364 return m_spInternetProtocolSink ? m_spInternetProtocolSink->ReportProgress(ulS
tatusCode, szStatusText) : S_OK; |
| 372 } | 365 } |
| OLD | NEW |