Left: | ||
Right: |
OLD | NEW |
---|---|
1 /* | 1 /* |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
3 * Copyright (C) 2006-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 Eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
104 filterLoaderThread.detach(); // TODO: but actually we should wait for the th read in the dtr. | 104 filterLoaderThread.detach(); // TODO: but actually we should wait for the th read in the dtr. |
105 } | 105 } |
106 catch (const std::system_error& ex) | 106 catch (const std::system_error& ex) |
107 { | 107 { |
108 DEBUG_SYSTEM_EXCEPTION(ex, PLUGIN_ERROR_THREAD, PLUGIN_ERROR_MAIN_THREAD_CRE ATE_PROCESS, | 108 DEBUG_SYSTEM_EXCEPTION(ex, PLUGIN_ERROR_THREAD, PLUGIN_ERROR_MAIN_THREAD_CRE ATE_PROCESS, |
109 "Class::Thread - Failed to start filter loader thread"); | 109 "Class::Thread - Failed to start filter loader thread"); |
110 } | 110 } |
111 m_traverser->ClearCache(); | 111 m_traverser->ClearCache(); |
112 } | 112 } |
113 | 113 |
114 namespace | |
115 { | |
116 /** | |
117 * Determine if the HTML file is one of ours. | |
118 * The criterion is that it appear in the "html/templates" folder within our i nstallation. | |
119 * | |
120 * Warning: This function may fail if the argument is not a "file://" URL. | |
121 * This is occasionally the case in circumstances yet to be characterized. | |
Eric
2015/05/20 15:56:32
I see this happen under the debugger regularly, bu
sergei
2015/06/01 09:41:30
I see that it's sometimes in MS-DOS/Windows-style
Eric
2015/06/10 18:30:36
If you'd like to add text to the comment, please p
| |
122 */ | |
123 bool IsOurHtmlFile(std::wstring url) | |
sergei
2015/06/01 09:41:30
const ref
Eric
2015/06/10 18:30:36
Done.
| |
124 { | |
125 // Declared static because the value is derived from an installation directo ry, which won't change during run-time. | |
126 static auto dir = FileUrl(HtmlFolderPath()); | |
127 static auto dirLength = dir.length(); | |
sergei
2015/06/01 09:41:30
I would say we don't need `dirLength` variable.
Eric
2015/06/10 18:30:36
Done.
| |
128 | |
129 std::wstring log = L"InjectABP. Current URL: "; | |
130 log += url; | |
131 log += L", template directory URL: "; | |
132 log += dir; | |
133 DEBUG_GENERAL(log); | |
134 | |
135 auto urlCstr = url.c_str(); | |
sergei
2015/06/01 09:41:30
Actually, this variable is also not necessary.
Eric
2015/06/10 18:30:36
Not strictly, no; it's a small optimization. But e
| |
136 // Check the prefix to match our directory | |
137 // Check the suffix to be an HTML file | |
138 return (_wcsnicmp(urlCstr, dir.c_str(), dirLength) == 0) && | |
139 (_wcsnicmp(urlCstr + url.length() - 5, L".html", 5) == 0); | |
sergei
2015/06/01 09:41:30
It would be great to have a comment here explainin
Eric
2015/06/10 18:30:36
We actually need an explicit check, which I've add
| |
140 } | |
141 } | |
142 | |
114 void CPluginTabBase::InjectABP(IWebBrowser2* browser) | 143 void CPluginTabBase::InjectABP(IWebBrowser2* browser) |
115 { | 144 { |
116 CriticalSection::Lock lock(m_csInject); | 145 CriticalSection::Lock lock(m_csInject); |
117 auto url = GetDocumentUrl(); | 146 auto url = GetDocumentUrl(); |
118 | 147 if (!IsOurHtmlFile(url)) |
119 std::wstring log = L"InjectABP. Current URL: "; | |
120 log += url; | |
121 log += L", settings URL: "; | |
122 log += UserSettingsFileUrl(); | |
123 DEBUG_GENERAL(log); | |
124 | |
125 CString urlLegacy = ToCString(url); | |
126 if (!(0 == urlLegacy.CompareNoCase(CString(UserSettingsFileUrl().c_str())) || | |
127 0 == urlLegacy.CompareNoCase(CString(FirstRunPageFileUrl().c_str())))) | |
128 { | 148 { |
129 DEBUG_GENERAL(L"Not injecting"); | 149 DEBUG_GENERAL(L"InjectABP. Not injecting"); |
130 return; | 150 return; |
131 } | 151 } |
132 DEBUG_GENERAL(L"Going to inject"); | 152 DEBUG_GENERAL(L"InjectABP. Injecting"); |
133 CComPtr<IDispatch> pDocDispatch; | 153 CComPtr<IDispatch> pDocDispatch; |
134 browser->get_Document(&pDocDispatch); | 154 browser->get_Document(&pDocDispatch); |
135 CComQIPtr<IHTMLDocument2> pDoc2 = pDocDispatch; | 155 CComQIPtr<IHTMLDocument2> pDoc2 = pDocDispatch; |
136 if (!pDoc2) | 156 if (!pDoc2) |
137 { | 157 { |
138 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_CREATE_SETTINGS_JAVASCRIPT, PLUGIN_ERROR_CRE ATE_SETTINGS_JAVASCRIPT_INVOKE, "CPluginTabBase::InjectABP - Failed to QI docume nt"); | 158 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_CREATE_SETTINGS_JAVASCRIPT, PLUGIN_ERROR_CRE ATE_SETTINGS_JAVASCRIPT_INVOKE, "CPluginTabBase::InjectABP - Failed to QI docume nt"); |
139 return; | 159 return; |
140 } | 160 } |
141 CComPtr<IHTMLWindow2> pWnd2; | 161 CComPtr<IHTMLWindow2> pWnd2; |
142 pDoc2->get_parentWindow(&pWnd2); | 162 pDoc2->get_parentWindow(&pWnd2); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
359 LogQueue::LogPluginError(pluginError.GetErrorCode(), pluginError.GetEr rorId(), pluginError.GetErrorSubid(), pluginError.GetErrorDescription(), true, p luginError.GetProcessId(), pluginError.GetThreadId()); | 379 LogQueue::LogPluginError(pluginError.GetErrorCode(), pluginError.GetEr rorId(), pluginError.GetErrorSubid(), pluginError.GetErrorDescription(), true, p luginError.GetProcessId(), pluginError.GetThreadId()); |
360 } | 380 } |
361 | 381 |
362 // Non-hanging sleep | 382 // Non-hanging sleep |
363 Sleep(50); | 383 Sleep(50); |
364 } | 384 } |
365 | 385 |
366 tabLoopIteration++; | 386 tabLoopIteration++; |
367 } | 387 } |
368 } | 388 } |
OLD | NEW |