Index: src/plugin/PluginDomTraverserBase.h |
=================================================================== |
--- a/src/plugin/PluginDomTraverserBase.h |
+++ b/src/plugin/PluginDomTraverserBase.h |
@@ -27,14 +27,14 @@ |
void TraverseHeader(bool isHeaderTraversed); |
- void TraverseDocument(IWebBrowser2* pBrowser, const std::wstring& domain, const CString& documentName); |
+ void TraverseDocument(IWebBrowser2* pBrowser, const std::wstring& domain, const std::wstring& documentName); |
void TraverseSubdocument(IWebBrowser2* pBrowser, const std::wstring& domain, const CString& documentName); |
virtual void ClearCache(); |
protected: |
- virtual bool OnIFrame(IHTMLElement* pEl, const CString& url, CString& indent) { return true; } |
+ virtual bool OnIFrame(IHTMLElement* pEl, const std::wstring& url, CString& indent) { return true; } |
virtual bool OnElement(IHTMLElement* pEl, const CString& tag, T* cache, bool isDebug, CString& indent) { return true; } |
virtual bool IsEnabled(); |
@@ -86,7 +86,7 @@ |
} |
template <class T> |
-void CPluginDomTraverserBase<T>::TraverseDocument(IWebBrowser2* pBrowser, const std::wstring& domain, const CString& documentName) |
+void CPluginDomTraverserBase<T>::TraverseDocument(IWebBrowser2* pBrowser, const std::wstring& domain, const std::wstring& documentName) |
{ |
m_domain = domain; |
@@ -220,16 +220,14 @@ |
CComQIPtr<IWebBrowser2> pFrameBrowser = pFrameDispatch; |
if (pFrameBrowser) |
{ |
+ std::wstring src; |
CComBSTR bstrSrc; |
- CString src; |
- |
- if (SUCCEEDED(pFrameBrowser->get_LocationURL(&bstrSrc))) |
+ if (SUCCEEDED(pFrameBrowser->get_LocationURL(&bstrSrc)) && bstrSrc) |
{ |
- src = bstrSrc; |
- CPluginClient::UnescapeUrl(src); |
+ src = std::wstring(bstrSrc,SysStringLen(bstrSrc)); |
+ UnescapeUrl(src); |
} |
- |
- if (!src.IsEmpty()) |
+ if (!src.empty()) |
{ |
TraverseDocument(pFrameBrowser, false, indent); |
} |
@@ -264,22 +262,22 @@ |
if (SUCCEEDED(pFrameEl->getAttribute(L"src", 0, &vAttr)) && vAttr.vt == VT_BSTR && ::SysStringLen(vAttr.bstrVal) > 0) |
{ |
- CString src = vAttr.bstrVal; |
+ CString srcLegacy = vAttr.bstrVal; |
// Some times, domain is missing. Should this be added on image src's as well?'' |
// eg. gadgetzone.com.au |
- if (src.Left(2) == L"//") |
+ if (srcLegacy.Left(2) == L"//") |
{ |
- src = L"http:" + src; |
+ srcLegacy = L"http:" + srcLegacy; |
} |
// eg. http://w3schools.com/html/html_examples.asp |
- else if (src.Left(4) != L"http" && src.Left(6) != L"res://") |
+ else if (srcLegacy.Left(4) != L"http" && srcLegacy.Left(6) != L"res://") |
{ |
- src = L"http://" + to_CString(m_domain) + src; |
+ srcLegacy = L"http://" + to_CString(m_domain) + srcLegacy; |
sergei
2015/01/06 13:18:18
should ToCString be instead of to_CString here?
Eric
2015/01/06 19:38:59
It's time to do a wholesale replacement, which was
Oleksandr
2015/01/13 10:08:06
Would be great to not commit to_CString anyway tho
|
} |
- |
- CPluginClient::UnescapeUrl(src); |
+ std::wstring src(ToWstring(srcLegacy)); |
+ UnescapeUrl(src); |
// Check if Iframe should be traversed |
if (OnIFrame(pFrameEl, src, indent)) |