Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/plugin/PluginTabBase.cpp

Issue 4912420225024000: Issue #1234 - Convert strings associated with URL's (Closed)
Patch Set: Created Oct. 21, 2014, 5:18 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/plugin/PluginTabBase.h ('k') | src/plugin/PluginWbPassThrough.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include "PluginStdAfx.h" 1 #include "PluginStdAfx.h"
2 2
3 #include "PluginClient.h" 3 #include "PluginClient.h"
4 #include "PluginSettings.h" 4 #include "PluginSettings.h"
5 #include "PluginTab.h" 5 #include "PluginTab.h"
6 #include "PluginDomTraverser.h" 6 #include "PluginDomTraverser.h"
7 #include "PluginClass.h" 7 #include "PluginClass.h"
8 #include "PluginTabBase.h" 8 #include "PluginTabBase.h"
9 #include "PluginUtil.h" 9 #include "PluginUtil.h"
10 #include <dispex.h> 10 #include <dispex.h>
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 namespace 67 namespace
68 { 68 {
69 void FilterLoader(CPluginTabBase* tabBase) 69 void FilterLoader(CPluginTabBase* tabBase)
70 { 70 {
71 tabBase->m_filter->LoadHideFilters(CPluginClient::GetInstance()->GetElementH idingSelectors(tabBase->GetDocumentDomain())); 71 tabBase->m_filter->LoadHideFilters(CPluginClient::GetInstance()->GetElementH idingSelectors(tabBase->GetDocumentDomain()));
72 SetEvent(tabBase->m_filter->hideFiltersLoadedEvent); 72 SetEvent(tabBase->m_filter->hideFiltersLoadedEvent);
73 } 73 }
74 } 74 }
75 75
76 void CPluginTabBase::OnNavigate(const CString& url) 76 void CPluginTabBase::OnNavigate(const std::wstring& url)
77 { 77 {
78 SetDocumentUrl(url); 78 SetDocumentUrl(url);
79 ClearFrameCache(GetDocumentDomain()); 79 ClearFrameCache(GetDocumentDomain());
80 std::wstring domainString = GetDocumentDomain(); 80 std::wstring domainString = GetDocumentDomain();
81 ResetEvent(m_filter->hideFiltersLoadedEvent); 81 ResetEvent(m_filter->hideFiltersLoadedEvent);
82 try 82 try
83 { 83 {
84 std::thread filterLoaderThread(&FilterLoader, this); 84 std::thread filterLoaderThread(&FilterLoader, this);
85 filterLoaderThread.detach(); // TODO: but actually we should wait for the th read in the dtr. 85 filterLoaderThread.detach(); // TODO: but actually we should wait for the th read in the dtr.
86 } 86 }
87 catch (const std::system_error& ex) 87 catch (const std::system_error& ex)
88 { 88 {
89 auto errDescription = std::string("Class::Thread - Failed to start filter lo ader thread, ") + 89 auto errDescription = std::string("Class::Thread - Failed to start filter lo ader thread, ") +
90 ex.code().message() + ex.what(); 90 ex.code().message() + ex.what();
91 DEBUG_ERROR_LOG(ex.code().value(), PLUGIN_ERROR_THREAD, PLUGIN_ERROR_MAIN_TH READ_CREATE_PROCESS, errDescription.c_str()); 91 DEBUG_ERROR_LOG(ex.code().value(), PLUGIN_ERROR_THREAD, PLUGIN_ERROR_MAIN_TH READ_CREATE_PROCESS, errDescription.c_str());
92 } 92 }
93 m_traverser->ClearCache(); 93 m_traverser->ClearCache();
94 } 94 }
95 95
96 void CPluginTabBase::InjectABP(IWebBrowser2* browser) 96 void CPluginTabBase::InjectABP(IWebBrowser2* browser)
97 { 97 {
98 CriticalSection::Lock lock(m_csInject); 98 CriticalSection::Lock lock(m_csInject);
99 CString url = GetDocumentUrl(); 99 CString url = ToCString(GetDocumentUrl());
100 CString log; 100 CString log;
101 log.Format(L"InjectABP. Current URL: %s, settings URL: %s", url, UserSettingsF ileUrl().c_str()); 101 log.Format(L"InjectABP. Current URL: %s, settings URL: %s", url, UserSettingsF ileUrl().c_str());
102 DEBUG_GENERAL(log); 102 DEBUG_GENERAL(log);
103 if (!(0 == url.CompareNoCase(CString(UserSettingsFileUrl().c_str())) || 103 if (!(0 == url.CompareNoCase(CString(UserSettingsFileUrl().c_str())) ||
104 0 == url.CompareNoCase(CString(FirstRunPageFileUrl().c_str())))) 104 0 == url.CompareNoCase(CString(FirstRunPageFileUrl().c_str()))))
105 { 105 {
106 DEBUG_GENERAL(L"Not injecting"); 106 DEBUG_GENERAL(L"Not injecting");
107 return; 107 return;
108 } 108 }
109 DEBUG_GENERAL(L"Going to inject"); 109 DEBUG_GENERAL(L"Going to inject");
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 DEBUG_GENERAL("Invoke"); 150 DEBUG_GENERAL("Invoke");
151 if (FAILED(hr)) 151 if (FAILED(hr))
152 { 152 {
153 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_CREATE_SETTINGS_JAVASCRIPT, PLUGIN_ERROR_CR EATE_SETTINGS_JAVASCRIPT_INVOKE, "CPluginTabBase::InjectABP - Failed to create S ettings in JavaScript"); 153 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_CREATE_SETTINGS_JAVASCRIPT, PLUGIN_ERROR_CR EATE_SETTINGS_JAVASCRIPT_INVOKE, "CPluginTabBase::InjectABP - Failed to create S ettings in JavaScript");
154 } 154 }
155 } 155 }
156 156
157 void CPluginTabBase::OnDownloadComplete(IWebBrowser2* browser) 157 void CPluginTabBase::OnDownloadComplete(IWebBrowser2* browser)
158 { 158 {
159 CPluginClient* client = CPluginClient::GetInstance(); 159 CPluginClient* client = CPluginClient::GetInstance();
160 std::wstring url = to_wstring(GetDocumentUrl()); 160 std::wstring url = GetDocumentUrl();
161 if (!client->IsWhitelistedUrl(url) && !client->IsElemhideWhitelistedOnDomain(u rl)) 161 if (!client->IsWhitelistedUrl(url) && !client->IsElemhideWhitelistedOnDomain(u rl))
162 { 162 {
163 m_traverser->TraverseDocument(browser, GetDocumentDomain(), GetDocumentUrl() ); 163 m_traverser->TraverseDocument(browser, GetDocumentDomain(), GetDocumentUrl() );
164 } 164 }
165 InjectABP(browser); 165 InjectABP(browser);
166 } 166 }
167 167
168 void CPluginTabBase::OnDocumentComplete(IWebBrowser2* browser, const CString& ur l, bool isDocumentBrowser) 168 void CPluginTabBase::OnDocumentComplete(IWebBrowser2* browser, const std::wstrin g& url, bool isDocumentBrowser)
169 { 169 {
170 CString documentUrl = GetDocumentUrl(); 170 std::wstring documentUrl = GetDocumentUrl();
171 171
172 if (isDocumentBrowser) 172 if (isDocumentBrowser)
173 { 173 {
174 if (url != documentUrl) 174 if (url != documentUrl)
175 { 175 {
176 SetDocumentUrl(url); 176 SetDocumentUrl(url);
177 } 177 }
178 InjectABP(browser); 178 InjectABP(browser);
179 } 179 }
180 if (url.Left(6) != "res://") 180 CString urlLegacy = ToCString(url);
181 if (urlLegacy.Left(6) != "res://")
181 { 182 {
182 // Get document 183 // Get document
183 CComPtr<IDispatch> pDocDispatch; 184 CComPtr<IDispatch> pDocDispatch;
184 HRESULT hr = browser->get_Document(&pDocDispatch); 185 HRESULT hr = browser->get_Document(&pDocDispatch);
185 if (FAILED(hr) || !pDocDispatch) 186 if (FAILED(hr) || !pDocDispatch)
186 { 187 {
187 return; 188 return;
188 } 189 }
189 190
190 CComQIPtr<IHTMLDocument2> pDoc = pDocDispatch; 191 CComQIPtr<IHTMLDocument2> pDoc = pDocDispatch;
(...skipping 29 matching lines...) Expand all
220 221
221 m_criticalSection.Lock(); 222 m_criticalSection.Lock();
222 { 223 {
223 domain = m_documentDomain; 224 domain = m_documentDomain;
224 } 225 }
225 m_criticalSection.Unlock(); 226 m_criticalSection.Unlock();
226 227
227 return domain; 228 return domain;
228 } 229 }
229 230
230 void CPluginTabBase::SetDocumentUrl(const CString& url) 231 void CPluginTabBase::SetDocumentUrl(const std::wstring& url)
231 { 232 {
232 m_criticalSection.Lock(); 233 m_criticalSection.Lock();
233 { 234 {
234 m_documentUrl = url; 235 m_documentUrl = url;
235 m_documentDomain = CAdblockPlusClient::GetInstance()->GetHostFromUrl(to_wstr ing(url)); 236 m_documentDomain = CAdblockPlusClient::GetInstance()->GetHostFromUrl(url);
236 } 237 }
237 m_criticalSection.Unlock(); 238 m_criticalSection.Unlock();
238 } 239 }
239 240
240 CString CPluginTabBase::GetDocumentUrl() 241 std::wstring CPluginTabBase::GetDocumentUrl()
241 { 242 {
242 CString url; 243 std::wstring url;
243 244
244 m_criticalSection.Lock(); 245 m_criticalSection.Lock();
245 { 246 {
246 url = m_documentUrl; 247 url = m_documentUrl;
247 } 248 }
248 m_criticalSection.Unlock(); 249 m_criticalSection.Unlock();
249 250
250 return url; 251 return url;
251 } 252 }
252 253
253 254
254 // ============================================================================ 255 // ============================================================================
255 // Frame caching 256 // Frame caching
256 // ============================================================================ 257 // ============================================================================
257 bool CPluginTabBase::IsFrameCached(const CString& url) 258 bool CPluginTabBase::IsFrameCached(const std::wstring& url)
258 { 259 {
259 bool isFrame; 260 bool isFrame;
260 261
261 m_criticalSectionCache.Lock(); 262 m_criticalSectionCache.Lock();
262 { 263 {
263 isFrame = m_cacheFrames.find(url) != m_cacheFrames.end(); 264 isFrame = m_cacheFrames.find(url) != m_cacheFrames.end();
264 } 265 }
265 m_criticalSectionCache.Unlock(); 266 m_criticalSectionCache.Unlock();
266 267
267 return isFrame; 268 return isFrame;
268 } 269 }
269 270
270 void CPluginTabBase::CacheFrame(const CString& url) 271 void CPluginTabBase::CacheFrame(const std::wstring& url)
271 { 272 {
272 m_criticalSectionCache.Lock(); 273 m_criticalSectionCache.Lock();
273 { 274 {
274 m_cacheFrames.insert(url); 275 m_cacheFrames.insert(url);
275 } 276 }
276 m_criticalSectionCache.Unlock(); 277 m_criticalSectionCache.Unlock();
277 } 278 }
278 279
279 void CPluginTabBase::ClearFrameCache(const std::wstring& domain) 280 void CPluginTabBase::ClearFrameCache(const std::wstring& domain)
280 { 281 {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 CPluginClient::LogPluginError(pluginError.GetErrorCode(), pluginError. GetErrorId(), pluginError.GetErrorSubid(), pluginError.GetErrorDescription(), tr ue, pluginError.GetProcessId(), pluginError.GetThreadId()); 351 CPluginClient::LogPluginError(pluginError.GetErrorCode(), pluginError. GetErrorId(), pluginError.GetErrorSubid(), pluginError.GetErrorDescription(), tr ue, pluginError.GetProcessId(), pluginError.GetThreadId());
351 } 352 }
352 353
353 // Non-hanging sleep 354 // Non-hanging sleep
354 Sleep(50); 355 Sleep(50);
355 } 356 }
356 357
357 tabLoopIteration++; 358 tabLoopIteration++;
358 } 359 }
359 } 360 }
OLDNEW
« no previous file with comments | « src/plugin/PluginTabBase.h ('k') | src/plugin/PluginWbPassThrough.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld