Index: src/plugin/PluginWbPassThrough.cpp |
diff --git a/src/plugin/PluginWbPassThrough.cpp b/src/plugin/PluginWbPassThrough.cpp |
index c5be6fab4511acd8c574cfc36f2a08ddbf8b6229..01d8a665798c860a022f055dd6d97d2475d090d9 100644 |
--- a/src/plugin/PluginWbPassThrough.cpp |
+++ b/src/plugin/PluginWbPassThrough.cpp |
@@ -21,6 +21,8 @@ namespace |
"</body>" |
"</html>"; |
+ typedef AdblockPlus::FilterEngine::ContentType ContentType; |
+ |
template <class T> |
T ExtractHttpHeader(const T& allHeaders, const T& targetHeaderNameWithColon, const T& delimiter) |
{ |
@@ -74,93 +76,93 @@ namespace |
WBPassthruSink::WBPassthruSink() |
: m_currentPositionOfSentPage(0) |
- , m_contentType(CFilter::EContentType::contentTypeAny) |
+ , m_contentType(ContentType::CONTENT_TYPE_OTHER) |
, m_isCustomResponse(false) |
{ |
} |
- |
-int WBPassthruSink::GetContentTypeFromMimeType(const CString& mimeType) |
-{ |
- if (mimeType.Find(L"image/") >= 0) |
- { |
- return CFilter::contentTypeImage; |
- } |
- if (mimeType.Find(L"text/css") >= 0) |
- { |
- return CFilter::contentTypeStyleSheet; |
- } |
- if ((mimeType.Find(L"application/javascript") >= 0) || (mimeType.Find(L"application/json") >= 0)) |
- { |
- return CFilter::contentTypeScript; |
- } |
- if (mimeType.Find(L"application/x-shockwave-flash") >= 0) |
- { |
- return CFilter::contentTypeObject; |
- } |
- if (mimeType.Find(L"text/html") >= 0) |
- { |
- return CFilter::contentTypeSubdocument; |
- } |
- // It is important to have this check last, since it is rather generic, and might overlay text/html, for example |
- if (mimeType.Find(L"xml") >= 0) |
- { |
- return CFilter::contentTypeXmlHttpRequest; |
- } |
- |
- return CFilter::contentTypeAny; |
+ |
+ContentType WBPassthruSink::GetContentTypeFromMimeType(const CString& mimeType) |
+{ |
+ if (mimeType.Find(L"image/") >= 0) |
+ { |
+ return ContentType::CONTENT_TYPE_IMAGE; |
+ } |
+ if (mimeType.Find(L"text/css") >= 0) |
+ { |
+ return ContentType::CONTENT_TYPE_STYLESHEET; |
+ } |
+ if ((mimeType.Find(L"application/javascript") >= 0) || (mimeType.Find(L"application/json") >= 0)) |
+ { |
+ return ContentType::CONTENT_TYPE_SCRIPT; |
+ } |
+ if (mimeType.Find(L"application/x-shockwave-flash") >= 0) |
+ { |
+ return ContentType::CONTENT_TYPE_OBJECT; |
+ } |
+ if (mimeType.Find(L"text/html") >= 0) |
+ { |
+ return ContentType::CONTENT_TYPE_SUBDOCUMENT; |
+ } |
+ // It is important to have this check last, since it is rather generic, and might overlay text/html, for example |
+ if (mimeType.Find(L"xml") >= 0) |
+ { |
+ return ContentType::CONTENT_TYPE_XMLHTTPREQUEST; |
+ } |
+ |
+ return ContentType::CONTENT_TYPE_OTHER; |
} |
-int WBPassthruSink::GetContentTypeFromURL(const CString& src) |
-{ |
- CString srcExt = src; |
- |
- int pos = 0; |
- if ((pos = src.Find('?')) > 0) |
- { |
- srcExt = src.Left(pos); |
- } |
- |
- int lastDotIndex = srcExt.ReverseFind('.'); |
- if (lastDotIndex < 0) |
- return CFilter::contentTypeAny; |
- CString ext = srcExt.Mid(lastDotIndex); |
- if (ext == L".jpg" || ext == L".gif" || ext == L".png" || ext == L".jpeg") |
- { |
- return CFilter::contentTypeImage; |
- } |
- else if (ext == L".css") |
- { |
- return CFilter::contentTypeStyleSheet; |
- } |
- else if (ext.Right(3) == L".js") |
- { |
- return CFilter::contentTypeScript; |
- } |
- else if (ext == L".xml") |
- { |
- return CFilter::contentTypeXmlHttpRequest; |
- } |
- else if (ext == L".swf") |
- { |
- return CFilter::contentTypeObject; |
- } |
- else if (ext == L".jsp" || ext == L".php" || ext == L".html") |
- { |
- return CFilter::contentTypeSubdocument; |
- } |
- return CFilter::contentTypeAny; |
+ContentType WBPassthruSink::GetContentTypeFromURL(const CString& src) |
+{ |
+ CString srcExt = src; |
+ |
+ int pos = 0; |
+ if ((pos = src.Find('?')) > 0) |
+ { |
+ srcExt = src.Left(pos); |
+ } |
+ |
+ int lastDotIndex = srcExt.ReverseFind('.'); |
+ if (lastDotIndex < 0) |
+ return ContentType::CONTENT_TYPE_OTHER; |
+ CString ext = srcExt.Mid(lastDotIndex); |
+ if (ext == L".jpg" || ext == L".gif" || ext == L".png" || ext == L".jpeg") |
+ { |
+ return ContentType::CONTENT_TYPE_IMAGE; |
+ } |
+ else if (ext == L".css") |
+ { |
+ return ContentType::CONTENT_TYPE_STYLESHEET; |
+ } |
+ else if (ext.Right(3) == L".js") |
+ { |
+ return ContentType::CONTENT_TYPE_SCRIPT; |
+ } |
+ else if (ext == L".xml") |
+ { |
+ return ContentType::CONTENT_TYPE_XMLHTTPREQUEST; |
+ } |
+ else if (ext == L".swf") |
+ { |
+ return ContentType::CONTENT_TYPE_OBJECT; |
+ } |
+ else if (ext == L".jsp" || ext == L".php" || ext == L".html") |
+ { |
+ return ContentType::CONTENT_TYPE_SUBDOCUMENT; |
+ } |
+ return ContentType::CONTENT_TYPE_OTHER; |
} |
-int WBPassthruSink::GetContentType(const CString& mimeType, const std::wstring& domain, const CString& src) |
+ContentType WBPassthruSink::GetContentType(const CString& mimeType, const std::wstring& domain, const CString& src) |
{ |
// No referer or mime type |
// BINDSTRING_XDR_ORIGIN works only for IE v8+ |
if (mimeType.IsEmpty() && domain.empty() && AdblockPlus::IE::InstalledMajorVersion() >= 8) |
{ |
- return CFilter::contentTypeXmlHttpRequest; |
+ return ContentType::CONTENT_TYPE_XMLHTTPREQUEST; |
} |
- int contentType = GetContentTypeFromMimeType(mimeType); |
- if (contentType == CFilter::contentTypeAny) |
+ ContentType contentType = GetContentTypeFromMimeType(mimeType); |
+ if (contentType == ContentType::CONTENT_TYPE_OTHER) |
{ |
contentType = GetContentTypeFromURL(src); |
} |
@@ -301,6 +303,7 @@ STDMETHODIMP WBPassthruSink::BeginningTransaction(LPCWSTR szURL, LPCWSTR szHeade |
} |
m_boundDomain = TrimString(m_boundDomain); |
m_contentType = GetContentType(ATL::CString(acceptHeader.c_str()), m_boundDomain, ToCString(src)); |
+ |
CPluginTab* tab = CPluginClass::GetTab(::GetCurrentThreadId()); |
CPluginClient* client = CPluginClient::GetInstance(); |
@@ -316,28 +319,28 @@ STDMETHODIMP WBPassthruSink::BeginningTransaction(LPCWSTR szURL, LPCWSTR szHeade |
{ |
if (tab->IsFrameCached(ToCString(src))) |
{ |
- m_contentType = CFilter::contentTypeSubdocument; |
+ m_contentType = ContentType::CONTENT_TYPE_SUBDOCUMENT; |
} |
} |
} |
if (IsFlashRequest(pszAdditionalHeaders)) |
{ |
- m_contentType = CFilter::EContentType::contentTypeObjectSubrequest; |
+ m_contentType = ContentType::CONTENT_TYPE_OBJECT_SUBREQUEST; |
} |
if (pszAdditionalHeaders && *pszAdditionalHeaders && IsXmlHttpRequest(*pszAdditionalHeaders)) |
{ |
- m_contentType = CFilter::EContentType::contentTypeXmlHttpRequest; |
+ m_contentType = ContentType::CONTENT_TYPE_XMLHTTPREQUEST; |
} |
if (client->ShouldBlock(szURL, m_contentType, m_boundDomain, /*debug flag but must be set*/true)) |
{ |
// NOTE: Feeding custom HTML to Flash, instead of original object subrequest |
- // doesn't have much sense. It also can manifest in unwanted result |
- // like video being blocked (See https://issues.adblockplus.org/ticket/1669) |
+ // doesn't have much sense. It also can manifest in unwanted result |
+ // like video being blocked (See https://issues.adblockplus.org/ticket/1669) |
// So we report blocked object subrequests as failed, not just empty HTML. |
- m_isCustomResponse = m_contentType != CFilter::contentTypeObjectSubrequest; |
+ m_isCustomResponse = m_contentType != ContentType::CONTENT_TYPE_OBJECT_SUBREQUEST; |
return E_ABORT; |
} |
return nativeHr; |