OLD | NEW |
1 #include "PluginStdAfx.h" | 1 #include "PluginStdAfx.h" |
2 | 2 |
3 #include "PluginClass.h" | 3 #include "PluginClass.h" |
4 #include "PluginSettings.h" | 4 #include "PluginSettings.h" |
5 #include "PluginSystem.h" | 5 #include "PluginSystem.h" |
6 #ifdef SUPPORT_FILTER | 6 #ifdef SUPPORT_FILTER |
7 #include "PluginFilter.h" | 7 #include "PluginFilter.h" |
8 #endif | 8 #endif |
9 #include "PluginMimeFilterClient.h" | 9 #include "PluginMimeFilterClient.h" |
10 #include "PluginClient.h" | 10 #include "PluginClient.h" |
11 #include "PluginClientFactory.h" | 11 #include "PluginClientFactory.h" |
12 #include "PluginMutex.h" | 12 #include "PluginMutex.h" |
13 #include "sddl.h" | 13 #include "sddl.h" |
14 #include "PluginUtil.h" | 14 #include "PluginUtil.h" |
15 #include "PluginUserSettings.h" | 15 #include "PluginUserSettings.h" |
16 #include "../shared/Utils.h" | 16 #include "../shared/Utils.h" |
17 #include "../shared/Dictionary.h" | 17 #include "../shared/Dictionary.h" |
18 #include <thread> | 18 #include <thread> |
19 | 19 |
| 20 #include "COM_Client.h" |
| 21 #include "Wrapper.h" |
| 22 |
20 #ifdef DEBUG_HIDE_EL | 23 #ifdef DEBUG_HIDE_EL |
21 DWORD profileTime = 0; | 24 DWORD profileTime = 0; |
22 #endif | 25 #endif |
23 | 26 |
24 typedef HANDLE (WINAPI *OPENTHEMEDATA)(HWND, LPCWSTR); | 27 typedef HANDLE (WINAPI *OPENTHEMEDATA)(HWND, LPCWSTR); |
25 typedef HRESULT (WINAPI *DRAWTHEMEBACKGROUND)(HANDLE, HDC, INT, INT, LPRECT, LPR
ECT); | 28 typedef HRESULT (WINAPI *DRAWTHEMEBACKGROUND)(HANDLE, HDC, INT, INT, LPRECT, LPR
ECT); |
26 typedef HRESULT (WINAPI *CLOSETHEMEDATA)(HANDLE); | 29 typedef HRESULT (WINAPI *CLOSETHEMEDATA)(HANDLE); |
27 | 30 |
28 HICON CPluginClass::s_hIcons[ICON_MAX] = { NULL, NULL, NULL }; | 31 HICON CPluginClass::s_hIcons[ICON_MAX] = { NULL, NULL, NULL }; |
29 DWORD CPluginClass::s_hIconTypes[ICON_MAX] = { IDI_ICON_DISABLED, IDI_ICON_ENABL
ED, IDI_ICON_DEACTIVATED }; | 32 DWORD CPluginClass::s_hIconTypes[ICON_MAX] = { IDI_ICON_DISABLED, IDI_ICON_ENABL
ED, IDI_ICON_DEACTIVATED }; |
30 | 33 |
31 CPluginMimeFilterClient* CPluginClass::s_mimeFilter = NULL; | 34 CPluginMimeFilterClient* CPluginClass::s_mimeFilter = NULL; |
32 | 35 |
33 CLOSETHEMEDATA pfnClose = NULL; | 36 CLOSETHEMEDATA pfnClose = NULL; |
34 DRAWTHEMEBACKGROUND pfnDrawThemeBackground = NULL; | 37 DRAWTHEMEBACKGROUND pfnDrawThemeBackground = NULL; |
35 OPENTHEMEDATA pfnOpenThemeData = NULL; | 38 OPENTHEMEDATA pfnOpenThemeData = NULL; |
36 | 39 |
37 ATOM CPluginClass::s_atomPaneClass = NULL; | 40 ATOM CPluginClass::s_atomPaneClass = NULL; |
38 HINSTANCE CPluginClass::s_hUxtheme = NULL; | 41 HINSTANCE CPluginClass::s_hUxtheme = NULL; |
39 CSimpleArray<CPluginClass*> CPluginClass::s_instances; | 42 CSimpleArray<CPluginClass*> CPluginClass::s_instances; |
40 std::map<DWORD, CPluginClass*> CPluginClass::s_threadInstances; | 43 std::map<DWORD, CPluginClass*> CPluginClass::s_threadInstances; |
41 | 44 |
42 CComAutoCriticalSection CPluginClass::s_criticalSectionLocal; | 45 CComAutoCriticalSection CPluginClass::s_criticalSectionLocal; |
43 CComAutoCriticalSection CPluginClass::s_criticalSectionBrowser; | 46 CComAutoCriticalSection CPluginClass::s_criticalSectionBrowser; |
44 CComAutoCriticalSection CPluginClass::s_criticalSectionWindow; | 47 CComAutoCriticalSection CPluginClass::s_criticalSectionWindow; |
45 | 48 |
46 CComQIPtr<IWebBrowser2> CPluginClass::s_asyncWebBrowser2; | 49 CComQIPtr<IWebBrowser2> CPluginClass::s_asyncWebBrowser2; |
47 | 50 |
48 #ifdef SUPPORT_WHITELIST | 51 #ifdef SUPPORT_WHITELIST |
49 std::map<UINT,CString> CPluginClass::s_menuDomains; | 52 std::map<UINT,std::wstring> CPluginClass::s_menuDomains; |
50 #endif | 53 #endif |
51 | 54 |
52 | 55 |
53 CPluginClass::CPluginClass() | 56 CPluginClass::CPluginClass() |
54 { | 57 { |
55 //Use this line to debug memory leaks | 58 //Use this line to debug memory leaks |
56 // _CrtDumpMemoryLeaks(); | 59 // _CrtDumpMemoryLeaks(); |
57 | 60 |
58 m_isAdviced = false; | 61 m_isAdviced = false; |
59 m_nConnectionID = 0; | 62 m_nConnectionID = 0; |
60 m_hTabWnd = NULL; | 63 m_hTabWnd = NULL; |
61 m_hStatusBarWnd = NULL; | 64 m_hStatusBarWnd = NULL; |
62 m_hPaneWnd = NULL; | 65 m_hPaneWnd = NULL; |
63 m_nPaneWidth = 0; | 66 m_nPaneWidth = 0; |
64 m_pWndProcStatus = NULL; | 67 m_pWndProcStatus = NULL; |
65 m_hTheme = NULL; | 68 m_hTheme = NULL; |
66 m_isInitializedOk = false; | 69 m_isInitializedOk = false; |
67 | 70 |
68 | 71 |
69 m_tab = new CPluginTab(this); | 72 m_tab = new CPluginTab(this); |
70 | 73 |
71 CPluginSystem* system = CPluginSystem::GetInstance(); | 74 CPluginSystem* system = CPluginSystem::GetInstance(); |
72 | 75 |
73 std::wstring locale((LPCWSTR)system->GetBrowserLanguage()); | 76 Dictionary::Create( system->GetBrowserLanguage() ); |
74 Dictionary::Create(locale); | |
75 } | 77 } |
76 | 78 |
77 CPluginClass::~CPluginClass() | 79 CPluginClass::~CPluginClass() |
78 { | 80 { |
79 delete m_tab; | 81 delete m_tab; |
80 } | 82 } |
81 | 83 |
82 | 84 |
83 ///////////////////////////////////////////////////////////////////////////// | 85 ///////////////////////////////////////////////////////////////////////////// |
84 // Initialization | 86 // Initialization |
(...skipping 20 matching lines...) Expand all Loading... |
105 CComQIPtr<IConnectionPointContainer, &IID_IConnectionPointContainer> pContaine
r(GetBrowser()); | 107 CComQIPtr<IConnectionPointContainer, &IID_IConnectionPointContainer> pContaine
r(GetBrowser()); |
106 if (!pContainer) | 108 if (!pContainer) |
107 { | 109 { |
108 return NULL; | 110 return NULL; |
109 } | 111 } |
110 | 112 |
111 CComPtr<IConnectionPoint> pPoint; | 113 CComPtr<IConnectionPoint> pPoint; |
112 HRESULT hr = pContainer->FindConnectionPoint(DIID_DWebBrowserEvents2, &pPoint)
; | 114 HRESULT hr = pContainer->FindConnectionPoint(DIID_DWebBrowserEvents2, &pPoint)
; |
113 if (FAILED(hr)) | 115 if (FAILED(hr)) |
114 { | 116 { |
115 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_FIND_CONNEC
TION_POINT, "Class::GetConnectionPoint - FindConnectionPoint") | 117 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_FIND_CONNEC
TION_POINT, L"Class::GetConnectionPoint - FindConnectionPoint") |
116 return NULL; | 118 return NULL; |
117 } | 119 } |
118 | 120 |
119 return pPoint; | 121 return pPoint; |
120 } | 122 } |
121 | 123 |
122 // This method tries to get a 'connection point' from the stored browser, which
can be | 124 // This method tries to get a 'connection point' from the stored browser, which
can be |
123 // used to attach or detach from the stream of browser events | 125 // used to attach or detach from the stream of browser events |
124 CComPtr<IConnectionPoint> CPluginClass::GetConnectionPointPropSink() | 126 CComPtr<IConnectionPoint> CPluginClass::GetConnectionPointPropSink() |
125 { | 127 { |
126 CComQIPtr<IConnectionPointContainer, &IID_IConnectionPointContainer> pContaine
r(GetBrowser()); | 128 CComQIPtr<IConnectionPointContainer, &IID_IConnectionPointContainer> pContaine
r(GetBrowser()); |
127 if (!pContainer) | 129 if (!pContainer) |
128 { | 130 { |
129 return NULL; | 131 return NULL; |
130 } | 132 } |
131 | 133 |
132 CComPtr<IConnectionPoint> pPoint; | 134 CComPtr<IConnectionPoint> pPoint; |
133 HRESULT hr = pContainer->FindConnectionPoint(IID_IPropertyNotifySink, &pPoint)
; | 135 HRESULT hr = pContainer->FindConnectionPoint(IID_IPropertyNotifySink, &pPoint)
; |
134 if (FAILED(hr)) | 136 if (FAILED(hr)) |
135 { | 137 { |
136 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_FIND_CONNEC
TION_POINT, "Class::GetConnectionPoint - FindConnectionPoint") | 138 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_FIND_CONNEC
TION_POINT, L"Class::GetConnectionPoint - FindConnectionPoint") |
137 return NULL; | 139 return NULL; |
138 } | 140 } |
139 | 141 |
140 return pPoint; | 142 return pPoint; |
141 } | 143 } |
142 | 144 |
143 | 145 |
144 HWND CPluginClass::GetBrowserHWND() const | 146 HWND CPluginClass::GetBrowserHWND() const |
145 { | 147 { |
146 SHANDLE_PTR hBrowserWndHandle = NULL; | 148 SHANDLE_PTR hBrowserWndHandle = NULL; |
147 | 149 |
148 CComQIPtr<IWebBrowser2> browser = GetBrowser(); | 150 CComQIPtr<IWebBrowser2> browser = GetBrowser(); |
149 if (browser) | 151 if (browser) |
150 { | 152 { |
151 HRESULT hr = browser->get_HWND(&hBrowserWndHandle); | 153 HRESULT hr = browser->get_HWND(&hBrowserWndHandle); |
152 if (FAILED(hr)) | 154 if (FAILED(hr)) |
153 { | 155 { |
154 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_BROWSER_WINDOW, "
Class::GetBrowserHWND - failed") | 156 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_BROWSER_WINDOW, L
"Class::GetBrowserHWND - failed") |
155 } | 157 } |
156 } | 158 } |
157 | 159 |
158 return (HWND)hBrowserWndHandle; | 160 return (HWND)hBrowserWndHandle; |
159 } | 161 } |
160 | 162 |
161 | 163 |
162 CComQIPtr<IWebBrowser2> CPluginClass::GetBrowser() const | 164 CComQIPtr<IWebBrowser2> CPluginClass::GetBrowser() const |
163 { | 165 { |
164 CComQIPtr<IWebBrowser2> browser; | 166 CComQIPtr<IWebBrowser2> browser; |
(...skipping 14 matching lines...) Expand all Loading... |
179 | 181 |
180 s_criticalSectionLocal.Lock(); | 182 s_criticalSectionLocal.Lock(); |
181 { | 183 { |
182 browser = s_asyncWebBrowser2; | 184 browser = s_asyncWebBrowser2; |
183 } | 185 } |
184 s_criticalSectionLocal.Unlock(); | 186 s_criticalSectionLocal.Unlock(); |
185 | 187 |
186 return browser; | 188 return browser; |
187 } | 189 } |
188 | 190 |
189 CString CPluginClass::GetBrowserUrl() const | 191 std::wstring CPluginClass::GetBrowserUrl() const |
190 { | 192 { |
191 CString url; | 193 std::wstring url; |
192 | 194 |
193 CComQIPtr<IWebBrowser2> browser = GetBrowser(); | 195 CComQIPtr<IWebBrowser2> ccom_browser = GetBrowser(); |
194 if (browser) | 196 if (ccom_browser) |
195 { | 197 { |
196 CComBSTR bstrURL; | 198 Wrapper::Browser browser( ccom_browser ); |
197 | 199 if ( browser.Location_URL( url ) ) |
198 if (SUCCEEDED(browser->get_LocationURL(&bstrURL))) | |
199 { | 200 { |
200 url = bstrURL; | 201 Wrapper::Unescape_URL( url ); |
201 CPluginClient::UnescapeUrl(url); | |
202 } | 202 } |
203 } | 203 } |
204 else | 204 else |
205 { | 205 { |
206 url = m_tab->GetDocumentUrl(); | 206 url = m_tab->GetDocumentUrl(); |
207 } | 207 } |
208 | |
209 return url; | 208 return url; |
210 } | 209 } |
211 | 210 |
212 DWORD WINAPI CPluginClass::StartInitObject(LPVOID thisPtr) | 211 DWORD WINAPI CPluginClass::StartInitObject(LPVOID thisPtr) |
213 { | 212 { |
214 if (thisPtr == NULL) | 213 if (thisPtr == NULL) |
215 return 0; | 214 return 0; |
216 if (!((CPluginClass*)thisPtr)->InitObject(true)) | 215 if (!((CPluginClass*)thisPtr)->InitObject(true)) |
217 { | 216 { |
218 ((CPluginClass*)thisPtr)->Unadvice(); | 217 ((CPluginClass*)thisPtr)->Unadvice(); |
(...skipping 11 matching lines...) Expand all Loading... |
230 // so we should handle that it is called this way several times during a session | 229 // so we should handle that it is called this way several times during a session |
231 STDMETHODIMP CPluginClass::SetSite(IUnknown* unknownSite) | 230 STDMETHODIMP CPluginClass::SetSite(IUnknown* unknownSite) |
232 { | 231 { |
233 CPluginSettings* settings = CPluginSettings::GetInstance(); | 232 CPluginSettings* settings = CPluginSettings::GetInstance(); |
234 CPluginSystem* system = CPluginSystem::GetInstance(); | 233 CPluginSystem* system = CPluginSystem::GetInstance(); |
235 | 234 |
236 MULTIPLE_VERSIONS_CHECK(); | 235 MULTIPLE_VERSIONS_CHECK(); |
237 | 236 |
238 if (unknownSite) | 237 if (unknownSite) |
239 { | 238 { |
240 | 239 std::wstring t[] = { |
241 DEBUG_GENERAL(L"============================================================
====================\nNEW TAB UI\n==============================================
==================================") | 240 L"========================================================================
========", |
| 241 L"NEW TAB UI", |
| 242 L"========================================================================
========" |
| 243 }; |
| 244 DEBUG_GENERAL(t); |
242 | 245 |
243 HRESULT hr = ::CoInitialize(NULL); | 246 HRESULT hr = ::CoInitialize(NULL); |
244 if (FAILED(hr)) | 247 if (FAILED(hr)) |
245 { | 248 { |
246 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_COINIT, "
Class::SetSite - CoInitialize"); | 249 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_COINIT, L
"Class::SetSite - CoInitialize"); |
247 } | 250 } |
248 | 251 |
249 s_criticalSectionBrowser.Lock(); | 252 s_criticalSectionBrowser.Lock(); |
250 { | 253 { |
251 m_webBrowser2 = unknownSite; | 254 m_webBrowser2 = unknownSite; |
252 } | 255 } |
253 s_criticalSectionBrowser.Unlock(); | 256 s_criticalSectionBrowser.Unlock(); |
254 | 257 |
255 //register the mimefilter | 258 //register the mimefilter |
256 //and only mimefilter | 259 //and only mimefilter |
257 //on some few computers the mimefilter does not get properly registered when
it is done on another thread | 260 //on some few computers the mimefilter does not get properly registered when
it is done on another thread |
258 | 261 |
259 s_criticalSectionLocal.Lock(); | 262 s_criticalSectionLocal.Lock(); |
260 { | 263 { |
261 // Always register on startup, then check if we need to unregister in a se
parate thread | 264 // Always register on startup, then check if we need to unregister in a se
parate thread |
262 s_mimeFilter = CPluginClientFactory::GetMimeFilterClientInstance(); | 265 s_mimeFilter = CPluginClientFactory::GetMimeFilterClientInstance(); |
263 s_asyncWebBrowser2 = unknownSite; | 266 s_asyncWebBrowser2 = unknownSite; |
264 s_instances.Add(this); | 267 s_instances.Add(this); |
265 } | 268 } |
266 s_criticalSectionLocal.Unlock(); | 269 s_criticalSectionLocal.Unlock(); |
267 | 270 |
268 try | 271 try |
269 { | 272 { |
270 // Check if loaded as BHO | 273 // Check if loaded as BHO |
271 if (GetBrowser()) | 274 if (GetBrowser()) |
272 { | 275 { |
273 DEBUG_GENERAL("Loaded as BHO"); | 276 DEBUG_GENERAL(L"Loaded as BHO"); |
274 CComPtr<IConnectionPoint> pPoint = GetConnectionPoint(); | 277 CComPtr<IConnectionPoint> pPoint = GetConnectionPoint(); |
275 if (pPoint) | 278 if (pPoint) |
276 { | 279 { |
277 HRESULT hr = pPoint->Advise((IDispatch*)this, &m_nConnectionID); | 280 HRESULT hr = pPoint->Advise((IDispatch*)this, &m_nConnectionID); |
278 if (SUCCEEDED(hr)) | 281 if (SUCCEEDED(hr)) |
279 { | 282 { |
280 m_isAdviced = true; | 283 m_isAdviced = true; |
281 | 284 |
282 try | 285 try |
283 { | 286 { |
284 std::thread startInitObjectThread(StartInitObject, this); | 287 std::thread startInitObjectThread(StartInitObject, this); |
285 startInitObjectThread.detach(); // TODO: but actually we should wa
it for the thread in the dtr. | 288 startInitObjectThread.detach(); // TODO: but actually we should wa
it for the thread in the dtr. |
286 } | 289 } |
287 catch (const std::system_error& ex) | 290 catch (const std::system_error& ex) |
288 { | 291 { |
289 auto errDescription = std::string("Class::Thread - Failed to creat
e StartInitObject thread, ") + | 292 std::wstring errDescription( L"Class::Thread - Failed to create St
artInitObject thread, " ); |
290 ex.code().message() + ex.what(); | 293 errDescription += ABP::debug::widen( ex.code().message() + ex.what
() ); |
291 DEBUG_ERROR_LOG(ex.code().value(), PLUGIN_ERROR_THREAD, PLUGIN_ERR
OR_MAIN_THREAD_CREATE_PROCESS, errDescription.c_str()); | 294 DEBUG_ERROR_LOG( ex.code().value(), PLUGIN_ERROR_THREAD, PLUGIN_ER
ROR_MAIN_THREAD_CREATE_PROCESS, errDescription ); |
292 } | 295 } |
293 } | 296 } |
294 else | 297 else |
295 { | 298 { |
296 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_ADV
ICE, "Class::SetSite - Advice"); | 299 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_ADV
ICE, L"Class::SetSite - Advice"); |
297 } | 300 } |
298 } | 301 } |
299 } | 302 } |
300 else // Check if loaded as toolbar handler | 303 else // Check if loaded as toolbar handler |
301 { | 304 { |
302 DEBUG_GENERAL("Loaded as toolbar handler"); | 305 DEBUG_GENERAL(L"Loaded as toolbar handler"); |
303 CComPtr<IServiceProvider> pServiceProvider; | 306 CComPtr<IServiceProvider> pServiceProvider; |
304 | 307 |
305 HRESULT hr = unknownSite->QueryInterface(&pServiceProvider); | 308 HRESULT hr = unknownSite->QueryInterface(&pServiceProvider); |
306 if (SUCCEEDED(hr)) | 309 if (SUCCEEDED(hr)) |
307 { | 310 { |
308 if (pServiceProvider) | 311 if (pServiceProvider) |
309 { | 312 { |
310 s_criticalSectionBrowser.Lock(); | 313 s_criticalSectionBrowser.Lock(); |
311 { | 314 { |
312 HRESULT hr = pServiceProvider->QueryService(IID_IWebBrowserApp, &m
_webBrowser2); | 315 HRESULT hr = pServiceProvider->QueryService(IID_IWebBrowserApp, &m
_webBrowser2); |
313 if (SUCCEEDED(hr)) | 316 if (SUCCEEDED(hr)) |
314 { | 317 { |
315 if (m_webBrowser2) | 318 if (m_webBrowser2) |
316 { | 319 { |
317 InitObject(false); | 320 InitObject(false); |
318 } | 321 } |
319 } | 322 } |
320 else | 323 else |
321 { | 324 { |
322 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE
_QUERY_BROWSER, "Class::SetSite - QueryService (IID_IWebBrowserApp)"); | 325 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE
_QUERY_BROWSER, L"Class::SetSite - QueryService (IID_IWebBrowserApp)"); |
323 } | 326 } |
324 } | 327 } |
325 s_criticalSectionBrowser.Unlock(); | 328 s_criticalSectionBrowser.Unlock(); |
326 } | 329 } |
327 } | 330 } |
328 else | 331 else |
329 { | 332 { |
330 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_QUERY
_SERVICE_PROVIDER, "Class::SetSite - QueryInterface (service provider)"); | 333 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_QUERY
_SERVICE_PROVIDER, L"Class::SetSite - QueryInterface (service provider)"); |
331 } | 334 } |
332 } | 335 } |
333 } | 336 } |
334 catch (std::runtime_error e) | 337 catch (std::runtime_error e) |
335 { | 338 { |
336 DEBUG_ERROR(e.what()); | 339 DEBUG_ERROR(e.what()); |
337 Unadvice(); | 340 Unadvice(); |
338 } | 341 } |
339 } | 342 } |
340 else | 343 else |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 } | 382 } |
380 s_criticalSectionLocal.Unlock(); | 383 s_criticalSectionLocal.Unlock(); |
381 | 384 |
382 // Release browser interface | 385 // Release browser interface |
383 s_criticalSectionBrowser.Lock(); | 386 s_criticalSectionBrowser.Lock(); |
384 { | 387 { |
385 m_webBrowser2.Release(); | 388 m_webBrowser2.Release(); |
386 } | 389 } |
387 s_criticalSectionBrowser.Unlock(); | 390 s_criticalSectionBrowser.Unlock(); |
388 | 391 |
389 DEBUG_GENERAL("=============================================================
===================\nNEW TAB UI - END\n=========================================
=======================================") | 392 std::wstring t[] = { |
| 393 L"========================================================================
========", |
| 394 L"NEW TAB UI - END", |
| 395 L"========================================================================
========" |
| 396 }; |
| 397 DEBUG_GENERAL( t ); |
390 | 398 |
391 ::CoUninitialize(); | 399 ::CoUninitialize(); |
392 } | 400 } |
393 | 401 |
394 return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite); | 402 return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite); |
395 } | 403 } |
396 | 404 |
397 bool CPluginClass::IsStatusBarEnabled() | 405 bool CPluginClass::IsStatusBarEnabled() |
398 { | 406 { |
399 DEBUG_GENERAL("IsStatusBarEnabled start"); | 407 DEBUG_GENERAL(L"IsStatusBarEnabled start"); |
400 HKEY pHkey; | 408 HKEY pHkey; |
401 HKEY pHkeySub; | 409 HKEY pHkeySub; |
402 RegOpenCurrentUser(KEY_QUERY_VALUE, &pHkey); | 410 RegOpenCurrentUser(KEY_QUERY_VALUE, &pHkey); |
403 DWORD trueth = 1; | 411 DWORD trueth = 1; |
404 DWORD truethSize = sizeof(DWORD); | 412 DWORD truethSize = sizeof(DWORD); |
405 RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\Main", &pHkeySub); | 413 RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\Main", &pHkeySub); |
406 LONG res = RegQueryValueEx(pHkeySub, L"StatusBarWeb", NULL, NULL, (BYTE*)&true
th, &truethSize); | 414 LONG res = RegQueryValueEx(pHkeySub, L"StatusBarWeb", NULL, NULL, (BYTE*)&true
th, &truethSize); |
407 RegCloseKey(pHkey); | 415 RegCloseKey(pHkey); |
408 if (res != ERROR_SUCCESS) | 416 if (res != ERROR_SUCCESS) |
409 { | 417 { |
410 res = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\MINIE", &p
HkeySub); | 418 res = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\MINIE", &p
HkeySub); |
411 if (res == ERROR_SUCCESS) | 419 if (res == ERROR_SUCCESS) |
412 { | 420 { |
413 LONG res = RegQueryValueEx(pHkeySub, L"ShowStatusBar", NULL, NULL, (BYTE*)
&trueth, &truethSize); | 421 LONG res = RegQueryValueEx(pHkeySub, L"ShowStatusBar", NULL, NULL, (BYTE*)
&trueth, &truethSize); |
414 if (res == ERROR_SUCCESS) | 422 if (res == ERROR_SUCCESS) |
415 { | 423 { |
416 RegCloseKey(pHkey); | 424 RegCloseKey(pHkey); |
417 } | 425 } |
418 } | 426 } |
419 } | 427 } |
420 DEBUG_GENERAL("IsStatusBarEnabled end"); | 428 DEBUG_GENERAL(L"IsStatusBarEnabled end"); |
421 return trueth == 1; | 429 return trueth == 1; |
422 } | 430 } |
423 | 431 |
424 void CPluginClass::ShowStatusBar() | 432 void CPluginClass::ShowStatusBar() |
425 { | 433 { |
426 DEBUG_GENERAL("ShowStatusBar start"); | 434 DEBUG_GENERAL(L"ShowStatusBar start"); |
427 | 435 |
428 VARIANT_BOOL isVisible; | 436 VARIANT_BOOL isVisible; |
429 | 437 |
430 | 438 |
431 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | 439 CComQIPtr<IWebBrowser2> ccom_browser = GetAsyncBrowser(); |
432 if (browser) | 440 if (ccom_browser) |
433 { | 441 { |
| 442 Wrapper::Browser browser( ccom_browser ); |
434 HRESULT hr = S_OK; | 443 HRESULT hr = S_OK; |
435 hr = browser->get_StatusBar(&isVisible); | 444 hr = ccom_browser->get_StatusBar(&isVisible); |
436 if (SUCCEEDED(hr)) | 445 if (SUCCEEDED(hr)) |
437 { | 446 { |
438 if (!isVisible) | 447 if (!isVisible) |
439 { | 448 { |
440 SHANDLE_PTR pBrowserHWnd; | 449 SHANDLE_PTR pBrowserHWnd; |
441 browser->get_HWND((SHANDLE_PTR*)&pBrowserHWnd); | 450 ccom_browser->get_HWND((SHANDLE_PTR*)&pBrowserHWnd); |
442 Dictionary* dictionary = Dictionary::GetInstance(); | 451 Dictionary* dictionary = Dictionary::GetInstance(); |
443 | 452 |
444 HKEY pHkey; | 453 HKEY pHkey; |
445 HKEY pHkeySub; | 454 HKEY pHkeySub; |
446 LSTATUS regRes = 0; | 455 LSTATUS regRes = 0; |
447 regRes = RegOpenCurrentUser(KEY_WRITE, &pHkey); | 456 regRes = RegOpenCurrentUser(KEY_WRITE, &pHkey); |
448 | 457 |
449 // Do we have enough rights to enable a status bar? | 458 // Do we have enough rights to enable a status bar? |
450 if (regRes != 0) | 459 if (regRes != 0) |
451 { | 460 { |
(...skipping 11 matching lines...) Expand all Loading... |
463 MB_YESNO); | 472 MB_YESNO); |
464 if (res == IDYES) | 473 if (res == IDYES) |
465 { | 474 { |
466 DWORD trueth = 1; | 475 DWORD trueth = 1; |
467 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\M
INIE", &pHkeySub); | 476 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\M
INIE", &pHkeySub); |
468 regRes = RegSetValueEx(pHkeySub, L"ShowStatusBar", 0, REG_DWORD, (BYTE
*)&trueth, sizeof(DWORD)); | 477 regRes = RegSetValueEx(pHkeySub, L"ShowStatusBar", 0, REG_DWORD, (BYTE
*)&trueth, sizeof(DWORD)); |
469 regRes = RegCloseKey(pHkeySub); | 478 regRes = RegCloseKey(pHkeySub); |
470 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\M
ain", &pHkeySub); | 479 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\M
ain", &pHkeySub); |
471 regRes = RegSetValueEx(pHkeySub, L"StatusBarWeb", 0, REG_DWORD, (BYTE*
)&trueth, sizeof(DWORD)); | 480 regRes = RegSetValueEx(pHkeySub, L"StatusBarWeb", 0, REG_DWORD, (BYTE*
)&trueth, sizeof(DWORD)); |
472 regRes = RegCloseKey(pHkeySub); | 481 regRes = RegCloseKey(pHkeySub); |
473 hr = browser->put_StatusBar(TRUE); | 482 hr = ccom_browser->put_StatusBar(TRUE); |
474 if (FAILED(hr)) | 483 if (FAILED(hr)) |
475 { | 484 { |
476 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_PUT_STATUSBAR,
"Class::Enable statusbar"); | 485 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_PUT_STATUSBAR,
L"Class::Enable statusbar"); |
477 } | 486 } |
478 CreateStatusBarPane(); | 487 CreateStatusBarPane(); |
479 | 488 |
480 // We need to restart the tab now, to enable the status bar properly | 489 /* |
481 VARIANT vFlags; | 490 * We need to restart the tab now, to enable the status bar properly |
482 vFlags.vt = VT_I4; | 491 */ |
483 vFlags.intVal = navOpenInNewTab; | 492 std::wstring location; |
484 | 493 browser.Location_URL( location ); |
485 CComBSTR curLoc; | 494 HRESULT hr = browser.navigate( location ); |
486 browser->get_LocationURL(&curLoc); | 495 if ( FAILED(hr) ) |
487 HRESULT hr = browser->Navigate(curLoc, &vFlags, NULL, NULL, NULL); | |
488 if (FAILED(hr)) | |
489 { | 496 { |
490 vFlags.intVal = navOpenInNewWindow; | 497 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION
, L"Navigation::Failed") |
491 | |
492 hr = browser->Navigate(CComBSTR(curLoc), &vFlags, NULL, NULL, NULL); | |
493 if (FAILED(hr)) | |
494 { | |
495 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATI
ON, "Navigation::Failed") | |
496 } | |
497 } | 498 } |
498 browser->Quit(); | 499 ccom_browser->Quit(); |
499 } | 500 } |
500 } | 501 } |
501 } | 502 } |
502 else | 503 else |
503 { | 504 { |
504 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, "Class
::Get statusbar state"); | 505 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, L"Clas
s::Get statusbar state"); |
505 } | 506 } |
506 } | 507 } |
507 DEBUG_GENERAL("ShowStatusBar end"); | 508 DEBUG_GENERAL(L"ShowStatusBar end"); |
508 } | 509 } |
509 | 510 |
510 void CPluginClass::BeforeNavigate2(DISPPARAMS* pDispParams) | 511 void CPluginClass::BeforeNavigate2(DISPPARAMS* pDispParams) |
511 { | 512 { |
512 | 513 |
513 if (pDispParams->cArgs < 7) | 514 if (pDispParams->cArgs < 7) |
514 { | 515 { |
515 return; | 516 return; |
516 } | 517 } |
517 //Register a mime filter if it's not registered yet | 518 //Register a mime filter if it's not registered yet |
518 if (s_mimeFilter == NULL) | 519 if (s_mimeFilter == NULL) |
519 { | 520 { |
520 s_mimeFilter = CPluginClientFactory::GetMimeFilterClientInstance(); | 521 s_mimeFilter = CPluginClientFactory::GetMimeFilterClientInstance(); |
521 } | 522 } |
522 | 523 |
523 // Get the IWebBrowser2 interface | 524 // Get the IWebBrowser2 interface |
524 CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> WebBrowser2Ptr; | 525 CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> WebBrowser2Ptr; |
525 VARTYPE vt = pDispParams->rgvarg[6].vt; | 526 VARTYPE vt = pDispParams->rgvarg[6].vt; |
526 if (vt == VT_DISPATCH) | 527 if (vt == VT_DISPATCH) |
527 { | 528 { |
| 529 // The implementation of this assignment operator contains the QueryInterfac
e call. |
528 WebBrowser2Ptr = pDispParams->rgvarg[6].pdispVal; | 530 WebBrowser2Ptr = pDispParams->rgvarg[6].pdispVal; |
529 } | 531 } |
530 else | 532 else |
531 { | 533 { |
532 // Wrong type, return. | 534 // Wrong type, return. |
533 return; | 535 return; |
534 } | 536 } |
535 | 537 |
536 // Get the URL | 538 // Get the URL |
537 CString url; | 539 std::wstring url; |
538 vt = pDispParams->rgvarg[5].vt; | 540 vt = pDispParams->rgvarg[5].vt; |
539 if (vt == VT_BYREF + VT_VARIANT) | 541 if (vt == VT_BYREF + VT_VARIANT) |
540 { | 542 { |
541 url = pDispParams->rgvarg[5].pvarVal->bstrVal; | 543 url = pDispParams->rgvarg[5].pvarVal->bstrVal; |
542 | 544 Wrapper::Unescape_URL( url ); |
543 CPluginClient::UnescapeUrl(url); | |
544 } | 545 } |
545 else | 546 else |
546 { | 547 { |
547 // Wrong type, return. | 548 // Wrong type, return. |
548 return; | 549 return; |
549 } | 550 } |
550 | 551 |
551 // If webbrowser2 is equal to top level browser (as set in SetSite), we are na
vigating new page | 552 // If webbrowser2 is equal to top level browser (as set in SetSite), we are na
vigating new page |
552 CPluginClient* client = CPluginClient::GetInstance(); | 553 CPluginClient* client = CPluginClient::GetInstance(); |
553 | 554 |
554 if (url.Find(L"javascript") == 0) | 555 // This comparison means "begins with" |
| 556 if ( url.compare( 0, 10, L"javascript" ) == 0 ) |
555 { | 557 { |
556 } | 558 } |
557 else if (GetBrowser().IsEqualObject(WebBrowser2Ptr)) | 559 else if (GetBrowser().IsEqualObject(WebBrowser2Ptr)) |
558 { | 560 { |
559 m_tab->OnNavigate(url); | 561 m_tab->OnNavigate( url ); |
560 | 562 |
561 DEBUG_GENERAL(L"============================================================
====================\nBegin main navigation url:" + url + "\n===================
=============================================================") | 563 std::wstring t[] = { |
| 564 L"========================================================================
========", |
| 565 L"Begin main navigation url:" + url, |
| 566 L"========================================================================
========" |
| 567 }; |
| 568 DEBUG_GENERAL( t ); |
562 | 569 |
563 #ifdef ENABLE_DEBUG_RESULT | 570 #ifdef ENABLE_DEBUG_RESULT |
564 CPluginDebug::DebugResultDomain(url); | 571 CPluginDebug::DebugResultDomain( url ); |
565 #endif | 572 #endif |
566 | 573 |
567 UpdateStatusBar(); | 574 UpdateStatusBar(); |
568 } | 575 } |
569 else | 576 else |
570 { | 577 { |
571 DEBUG_NAVI(L"Navi::Begin navigation url:" + url) | 578 DEBUG_NAVI(L"Navi::Begin navigation url:" + url) |
572 | 579 |
573 #ifdef SUPPORT_FRAME_CACHING | 580 #ifdef SUPPORT_FRAME_CACHING |
574 m_tab->CacheFrame(url); | 581 m_tab->CacheFrame( url ); |
575 #endif | 582 #endif |
576 } | 583 } |
577 } | 584 } |
578 STDMETHODIMP CPluginClass::OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags) | 585 STDMETHODIMP CPluginClass::OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags) |
579 { | 586 { |
580 DEBUG_GENERAL("Tab changed"); | 587 DEBUG_GENERAL(L"Tab changed"); |
581 bool newtabshown = pDispParams->rgvarg[1].intVal==3; | 588 bool newtabshown = pDispParams->rgvarg[1].intVal==3; |
582 if (newtabshown) | 589 if (newtabshown) |
583 { | 590 { |
584 std::map<DWORD,CPluginClass*>::const_iterator it = s_threadInstances.find(Ge
tCurrentThreadId()); | 591 std::map<DWORD,CPluginClass*>::const_iterator it = s_threadInstances.find(Ge
tCurrentThreadId()); |
585 if (it == s_threadInstances.end()) | 592 if (it == s_threadInstances.end()) |
586 { | 593 { |
587 s_threadInstances[::GetCurrentThreadId()] = this; | 594 s_threadInstances[::GetCurrentThreadId()] = this; |
588 | 595 |
589 | 596 |
590 if (!m_isInitializedOk) | 597 if (!m_isInitializedOk) |
591 { | 598 { |
592 m_isInitializedOk = true; | 599 m_isInitializedOk = true; |
593 if (!InitObject(true)) | 600 if (!InitObject(true)) |
594 { | 601 { |
595 // Unadvice(); | 602 // Unadvice(); |
596 } | 603 } |
597 UpdateStatusBar(); | 604 UpdateStatusBar(); |
598 } | 605 } |
599 } | 606 } |
600 } | 607 } |
601 notificationMessage.Hide(); | 608 notificationMessage.Hide(); |
602 DEBUG_GENERAL("Tab change end"); | 609 DEBUG_GENERAL(L"Tab change end"); |
603 return VARIANT_TRUE; | 610 return VARIANT_TRUE; |
604 } | 611 } |
605 | 612 |
606 // This gets called whenever there's a browser event | 613 // This gets called whenever there's a browser event |
607 STDMETHODIMP CPluginClass::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, W
ORD wFlags, DISPPARAMS* pDispParams, VARIANT* pvarResult, EXCEPINFO* pExcepInfo,
UINT* puArgErr) | 614 STDMETHODIMP CPluginClass::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, W
ORD wFlags, DISPPARAMS* pDispParams, VARIANT* pvarResult, EXCEPINFO* pExcepInfo,
UINT* puArgErr) |
608 { | 615 { |
609 WCHAR tmp[256]; | 616 WCHAR tmp[256]; |
610 wsprintf(tmp, L"Invoke: %d\n", dispidMember); | 617 wsprintf(tmp, L"Invoke: %d\n", dispidMember); |
611 DEBUG_GENERAL(tmp); | 618 DEBUG_GENERAL(tmp); |
612 switch (dispidMember) | 619 switch (dispidMember) |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 { | 700 { |
694 m_tab->OnDownloadComplete(browser); | 701 m_tab->OnDownloadComplete(browser); |
695 } | 702 } |
696 } | 703 } |
697 break; | 704 break; |
698 | 705 |
699 case DISPID_DOCUMENTCOMPLETE: | 706 case DISPID_DOCUMENTCOMPLETE: |
700 { | 707 { |
701 DEBUG_NAVI("Navi::Document Complete") | 708 DEBUG_NAVI("Navi::Document Complete") |
702 | 709 |
703 CComQIPtr<IWebBrowser2> browser = GetBrowser(); | 710 CComQIPtr<IWebBrowser2> ccom_browser = GetBrowser(); |
704 | 711 |
705 if (browser && pDispParams->cArgs >= 2 && pDispParams->rgvarg[1].vt == VT_
DISPATCH) | 712 if (ccom_browser && pDispParams->cArgs >= 2 && pDispParams->rgvarg[1].vt =
= VT_DISPATCH) |
706 { | 713 { |
707 CComQIPtr<IWebBrowser2> pBrowser = pDispParams->rgvarg[1].pdispVal; | 714 CComQIPtr<IWebBrowser2> pBrowser = pDispParams->rgvarg[1].pdispVal; |
708 if (pBrowser) | 715 if (pBrowser) |
709 { | 716 { |
710 CString url; | 717 Wrapper::Browser browser( pBrowser ); |
711 CComBSTR bstrUrl; | 718 std::wstring url; |
712 if (SUCCEEDED(pBrowser->get_LocationURL(&bstrUrl)) && ::SysStringLen(b
strUrl) > 0) | 719 if ( browser.Location_URL( url ) && !url.empty() ) |
713 { | 720 { |
714 url = bstrUrl; | 721 Wrapper::Unescape_URL(url); |
715 | 722 m_tab->OnDocumentComplete(ccom_browser, url, ccom_browser.IsEqualObj
ect(pBrowser)); |
716 CPluginClient::UnescapeUrl(url); | |
717 | |
718 m_tab->OnDocumentComplete(browser, url, browser.IsEqualObject(pBrows
er)); | |
719 } | 723 } |
720 } | 724 } |
721 } | 725 } |
722 } | 726 } |
723 break; | 727 break; |
724 | 728 |
725 case DISPID_ONQUIT: | 729 case DISPID_ONQUIT: |
726 case DISPID_QUIT: | 730 case DISPID_QUIT: |
727 { | 731 { |
728 Unadvice(); | 732 Unadvice(); |
729 } | 733 } |
730 break; | 734 break; |
731 | 735 |
732 default: | 736 default: |
733 { | 737 { |
734 CString did; | 738 std::wostringstream msg; |
735 did.Format(L"DispId:%u", dispidMember); | 739 msg << L"Navi::Default DispId:"; |
736 | 740 msg << static_cast< unsigned long >( dispidMember ); |
737 DEBUG_NAVI(L"Navi::Default " + did) | 741 DEBUG_NAVI( msg.str() ) |
738 } | 742 } |
739 | 743 |
740 // do nothing | 744 // do nothing |
741 break; | 745 break; |
742 } | 746 } |
743 | 747 |
744 return VARIANT_TRUE; | 748 return VARIANT_TRUE; |
745 } | 749 } |
746 | 750 |
747 bool CPluginClass::InitObject(bool bBHO) | 751 bool CPluginClass::InitObject(bool bBHO) |
748 { | 752 { |
749 DEBUG_GENERAL("InitObject"); | 753 DEBUG_GENERAL(L"InitObject"); |
750 CPluginSettings* settings = CPluginSettings::GetInstance(); | 754 CPluginSettings* settings = CPluginSettings::GetInstance(); |
751 | 755 |
752 if (!settings->GetPluginEnabled()) | 756 if (!settings->GetPluginEnabled()) |
753 { | 757 { |
754 s_mimeFilter->Unregister(); | 758 s_mimeFilter->Unregister(); |
755 } | 759 } |
756 | 760 |
757 // Load theme module | 761 // Load theme module |
758 s_criticalSectionLocal.Lock(); | 762 s_criticalSectionLocal.Lock(); |
759 { | 763 { |
760 if (!s_hUxtheme) | 764 if (!s_hUxtheme) |
761 { | 765 { |
762 s_hUxtheme = ::GetModuleHandle(_T("uxtheme.dll")); | 766 s_hUxtheme = ::GetModuleHandleW(L"uxtheme.dll"); |
763 if (s_hUxtheme) | 767 if (s_hUxtheme) |
764 { | 768 { |
765 pfnClose = (CLOSETHEMEDATA)::GetProcAddress(s_hUxtheme, "CloseThemeData"
); | 769 pfnClose = (CLOSETHEMEDATA)::GetProcAddress(s_hUxtheme, "CloseThemeData"
); |
766 if (!pfnClose) | 770 if (!pfnClose) |
767 { | 771 { |
768 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET
_UXTHEME_CLOSE, "Class::InitObject - GetProcAddress(CloseThemeData)"); | 772 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET
_UXTHEME_CLOSE, L"Class::InitObject - GetProcAddress(CloseThemeData)"); |
769 } | 773 } |
770 | 774 |
771 pfnDrawThemeBackground = (DRAWTHEMEBACKGROUND)::GetProcAddress(s_hUxthem
e, "DrawThemeBackground"); | 775 pfnDrawThemeBackground = (DRAWTHEMEBACKGROUND)::GetProcAddress(s_hUxthem
e, "DrawThemeBackground"); |
772 if (!pfnDrawThemeBackground) | 776 if (!pfnDrawThemeBackground) |
773 { | 777 { |
774 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET
_UXTHEME_DRAW_BACKGROUND, "Class::InitObject - GetProcAddress(DrawThemeBackgroun
d)"); | 778 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET
_UXTHEME_DRAW_BACKGROUND, L"Class::InitObject - GetProcAddress(DrawThemeBackgrou
nd)"); |
775 } | 779 } |
776 | 780 |
777 pfnOpenThemeData = (OPENTHEMEDATA)::GetProcAddress(s_hUxtheme, "OpenThem
eData"); | 781 pfnOpenThemeData = (OPENTHEMEDATA)::GetProcAddress(s_hUxtheme, "OpenThem
eData"); |
778 if (!pfnOpenThemeData) | 782 if (!pfnOpenThemeData) |
779 { | 783 { |
780 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET
_UXTHEME_OPEN, "Class::InitObject - GetProcAddress(pfnOpenThemeData)"); | 784 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET
_UXTHEME_OPEN, L"Class::InitObject - GetProcAddress(pfnOpenThemeData)"); |
781 } | 785 } |
782 } | 786 } |
783 else | 787 else |
784 { | 788 { |
785 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_U
XTHEME, "Class::InitObject - GetModuleHandle(uxtheme.dll)"); | 789 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_U
XTHEME, L"Class::InitObject - GetModuleHandle(uxtheme.dll)"); |
786 } | 790 } |
787 } | 791 } |
788 } | 792 } |
789 s_criticalSectionLocal.Unlock(); | 793 s_criticalSectionLocal.Unlock(); |
790 | 794 |
791 // Register pane class | 795 // Register pane class |
792 if (!GetAtomPaneClass()) | 796 if (!GetAtomPaneClass()) |
793 { | 797 { |
794 WNDCLASSEX wcex; | 798 WNDCLASSEX wcex; |
795 | 799 |
(...skipping 11 matching lines...) Expand all Loading... |
807 wcex.hIconSm = NULL; | 811 wcex.hIconSm = NULL; |
808 | 812 |
809 s_criticalSectionLocal.Lock(); | 813 s_criticalSectionLocal.Lock(); |
810 { | 814 { |
811 s_atomPaneClass = ::RegisterClassEx(&wcex); | 815 s_atomPaneClass = ::RegisterClassEx(&wcex); |
812 } | 816 } |
813 s_criticalSectionLocal.Unlock(); | 817 s_criticalSectionLocal.Unlock(); |
814 | 818 |
815 if (!GetAtomPaneClass()) | 819 if (!GetAtomPaneClass()) |
816 { | 820 { |
817 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_REGISTE
R_PANE_CLASS, "Class::InitObject - RegisterClassEx"); | 821 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_REGISTE
R_PANE_CLASS, L"Class::InitObject - RegisterClassEx"); |
818 return false; | 822 return false; |
819 } | 823 } |
820 } | 824 } |
821 | 825 |
822 | 826 |
823 int ieVersion = CPluginClient::GetInstance()->GetIEVersion(); | 827 int ieVersion = CPluginClient::GetInstance()->GetIEVersion(); |
824 // Create status pane | 828 // Create status pane |
825 if (bBHO && ieVersion > 6 && !CreateStatusBarPane()) | 829 if (bBHO && ieVersion > 6 && !CreateStatusBarPane()) |
826 { | 830 { |
827 return false; | 831 return false; |
(...skipping 23 matching lines...) Expand all Loading... |
851 { | 855 { |
852 CriticalSection::Lock lock(m_csStatusBar); | 856 CriticalSection::Lock lock(m_csStatusBar); |
853 | 857 |
854 CPluginClient* client = CPluginClient::GetInstance(); | 858 CPluginClient* client = CPluginClient::GetInstance(); |
855 | 859 |
856 TCHAR szClassName[MAX_PATH]; | 860 TCHAR szClassName[MAX_PATH]; |
857 // Get browser window and url | 861 // Get browser window and url |
858 HWND hBrowserWnd = GetBrowserHWND(); | 862 HWND hBrowserWnd = GetBrowserHWND(); |
859 if (!hBrowserWnd) | 863 if (!hBrowserWnd) |
860 { | 864 { |
861 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "C
lass::CreateStatusBarPane - No status bar") | 865 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, L"
Class::CreateStatusBarPane - No status bar") |
862 return false; | 866 return false; |
863 } | 867 } |
864 | 868 |
865 // Looking for a TabWindowClass window in IE7 | 869 // Looking for a TabWindowClass window in IE7 |
866 // the last one should be parent for statusbar | 870 // the last one should be parent for statusbar |
867 HWND hWndStatusBar = NULL; | 871 HWND hWndStatusBar = NULL; |
868 | 872 |
869 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD); | 873 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD); |
870 UINT amoundOfNewTabs = 0; | 874 UINT amoundOfNewTabs = 0; |
871 HWND uniqueNewTab = NULL; | 875 HWND uniqueNewTab = NULL; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
933 { | 937 { |
934 hWndStatusBar = hWnd; | 938 hWndStatusBar = hWnd; |
935 break; | 939 break; |
936 } | 940 } |
937 | 941 |
938 hWnd = ::GetWindow(hWnd, GW_HWNDNEXT); | 942 hWnd = ::GetWindow(hWnd, GW_HWNDNEXT); |
939 } | 943 } |
940 | 944 |
941 if (!hWndStatusBar) | 945 if (!hWndStatusBar) |
942 { | 946 { |
943 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_WIN, "Class
::CreateStatusBarPane - No status bar") | 947 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_WIN, L"Clas
s::CreateStatusBarPane - No status bar") |
944 return true; | 948 return true; |
945 } | 949 } |
946 | 950 |
947 // Calculate pane height | 951 // Calculate pane height |
948 CRect rcStatusBar; | 952 CRect rcStatusBar; |
949 ::GetClientRect(hWndStatusBar, &rcStatusBar); | 953 ::GetClientRect(hWndStatusBar, &rcStatusBar); |
950 | 954 |
951 if (rcStatusBar.Height() > 0) | 955 if (rcStatusBar.Height() > 0) |
952 { | 956 { |
953 #ifdef _DEBUG | 957 #ifdef _DEBUG |
(...skipping 17 matching lines...) Expand all Loading... |
971 _T(""), | 975 _T(""), |
972 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, | 976 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, |
973 rcStatusBar.Width() - 500,0,m_nPaneWidth,rcStatusBar.Height(), | 977 rcStatusBar.Width() - 500,0,m_nPaneWidth,rcStatusBar.Height(), |
974 hWndStatusBar, | 978 hWndStatusBar, |
975 (HMENU)3671, | 979 (HMENU)3671, |
976 _Module.m_hInst, | 980 _Module.m_hInst, |
977 NULL); | 981 NULL); |
978 | 982 |
979 if (!hWndNewPane) | 983 if (!hWndNewPane) |
980 { | 984 { |
981 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_CREATE_ST
ATUSBAR_PANE, "Class::CreateStatusBarPane - CreateWindowEx") | 985 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_CREATE_ST
ATUSBAR_PANE, L"Class::CreateStatusBarPane - CreateWindowEx") |
982 return false; | 986 return false; |
983 } | 987 } |
984 | 988 |
985 DEBUG_GENERAL("ABP window created"); | 989 DEBUG_GENERAL(L"ABP window created"); |
986 m_hTabWnd = hTabWnd; | 990 m_hTabWnd = hTabWnd; |
987 m_hStatusBarWnd = hWndStatusBar; | 991 m_hStatusBarWnd = hWndStatusBar; |
988 m_hPaneWnd = hWndNewPane; | 992 m_hPaneWnd = hWndNewPane; |
989 | 993 |
990 UpdateTheme(); | 994 UpdateTheme(); |
991 | 995 |
992 // Subclass status bar | 996 // Subclass status bar |
993 m_pWndProcStatus = (WNDPROC)SetWindowLongPtr(hWndStatusBar, GWLP_WNDPROC, (LPA
RAM)(WNDPROC)NewStatusProc); | 997 m_pWndProcStatus = (WNDPROC)SetWindowLongPtr(hWndStatusBar, GWLP_WNDPROC, (LPA
RAM)(WNDPROC)NewStatusProc); |
994 | 998 |
995 // Adjust pane | 999 // Adjust pane |
(...skipping 12 matching lines...) Expand all Loading... |
1008 HDC hdc = GetWindowDC(m_hStatusBarWnd); | 1012 HDC hdc = GetWindowDC(m_hStatusBarWnd); |
1009 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); | 1013 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); |
1010 ReleaseDC(m_hStatusBarWnd, hdc); | 1014 ReleaseDC(m_hStatusBarWnd, hdc); |
1011 | 1015 |
1012 return true; | 1016 return true; |
1013 } | 1017 } |
1014 | 1018 |
1015 void CPluginClass::FirstRunThread() | 1019 void CPluginClass::FirstRunThread() |
1016 { | 1020 { |
1017 CoInitialize(NULL); | 1021 CoInitialize(NULL); |
1018 VARIANT vFlags; | |
1019 vFlags.vt = VT_I4; | |
1020 vFlags.intVal = navOpenInNewTab; | |
1021 | 1022 |
1022 CComBSTR navigatePath = CComBSTR(FirstRunPageFileUrl().c_str()); | 1023 Wrapper::Browser browser( GetAsyncBrowser() ); |
1023 | 1024 HRESULT hr = browser.navigate( FirstRunPageFileUrl() ); |
1024 HRESULT hr = GetAsyncBrowser()->Navigate(navigatePath, &vFlags, NULL, NULL, NU
LL); | 1025 if ( FAILED( hr ) ) |
1025 if (FAILED(hr)) | |
1026 { | 1026 { |
1027 vFlags.intVal = navOpenInNewWindow; | 1027 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_WELCOME
, L"Navigation::Welcome page failed") |
1028 hr = GetAsyncBrowser()->Navigate(navigatePath, &vFlags, NULL, NULL, NULL); | |
1029 } | |
1030 | |
1031 if (FAILED(hr)) | |
1032 { | |
1033 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_WELCOME
, "Navigation::Welcome page failed") | |
1034 } | 1028 } |
1035 } | 1029 } |
| 1030 |
1036 void CPluginClass::CloseTheme() | 1031 void CPluginClass::CloseTheme() |
1037 { | 1032 { |
1038 if (m_hTheme) | 1033 if (m_hTheme) |
1039 { | 1034 { |
1040 if (pfnClose) | 1035 if (pfnClose) |
1041 { | 1036 { |
1042 pfnClose(m_hTheme); | 1037 pfnClose(m_hTheme); |
1043 } | 1038 } |
1044 | 1039 |
1045 m_hTheme = NULL; | 1040 m_hTheme = NULL; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 STDMETHODIMP CPluginClass::QueryStatus(const GUID* pguidCmdGroup, ULONG cCmds, O
LECMD prgCmds[], OLECMDTEXT* pCmdText) | 1101 STDMETHODIMP CPluginClass::QueryStatus(const GUID* pguidCmdGroup, ULONG cCmds, O
LECMD prgCmds[], OLECMDTEXT* pCmdText) |
1107 { | 1102 { |
1108 if (cCmds == 0) return E_INVALIDARG; | 1103 if (cCmds == 0) return E_INVALIDARG; |
1109 if (prgCmds == 0) return E_POINTER; | 1104 if (prgCmds == 0) return E_POINTER; |
1110 | 1105 |
1111 prgCmds[0].cmdf = OLECMDF_ENABLED; | 1106 prgCmds[0].cmdf = OLECMDF_ENABLED; |
1112 | 1107 |
1113 return S_OK; | 1108 return S_OK; |
1114 } | 1109 } |
1115 | 1110 |
1116 HMENU CPluginClass::CreatePluginMenu(const CString& url) | 1111 HMENU CPluginClass::CreatePluginMenu(const std::wstring & url) |
1117 { | 1112 { |
1118 DEBUG_GENERAL("CreatePluginMenu"); | 1113 DEBUG_GENERAL(L"CreatePluginMenu"); |
1119 HINSTANCE hInstance = _AtlBaseModule.GetModuleInstance(); | 1114 HINSTANCE hInstance = _AtlBaseModule.GetModuleInstance(); |
1120 | 1115 |
1121 HMENU hMenu = ::LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)); | 1116 HMENU hMenu = ::LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)); |
1122 | 1117 |
1123 HMENU hMenuTrackPopup = GetSubMenu(hMenu, 0); | 1118 HMENU hMenuTrackPopup = GetSubMenu(hMenu, 0); |
1124 | 1119 |
1125 SetMenuBar(hMenuTrackPopup, url); | 1120 SetMenuBar(hMenuTrackPopup, url); |
1126 | 1121 |
1127 return hMenuTrackPopup; | 1122 return hMenuTrackPopup; |
1128 } | 1123 } |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1303 } | 1298 } |
1304 } | 1299 } |
1305 s_criticalSectionLocal.Unlock(); | 1300 s_criticalSectionLocal.Unlock(); |
1306 } | 1301 } |
1307 break; | 1302 break; |
1308 case ID_MENU_SETTINGS: | 1303 case ID_MENU_SETTINGS: |
1309 { | 1304 { |
1310 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | 1305 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); |
1311 if (browser) | 1306 if (browser) |
1312 { | 1307 { |
1313 VARIANT vFlags; | 1308 Wrapper::Browser b( browser ); |
1314 vFlags.vt = VT_I4; | 1309 HRESULT hr = b.navigate( UserSettingsFileUrl() ); |
1315 vFlags.intVal = navOpenInNewTab; | 1310 if ( FAILED(hr) ) |
1316 | |
1317 BSTR urlToNavigate = BString(UserSettingsFileUrl()); | |
1318 HRESULT hr = browser->Navigate(urlToNavigate, &vFlags, NULL, NULL, NULL)
; | |
1319 if (FAILED(hr)) | |
1320 { | 1311 { |
1321 vFlags.intVal = navOpenInNewWindow; | 1312 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_S
ETTINGS, L"Navigation::Failed") |
1322 | |
1323 hr = browser->Navigate(urlToNavigate, &vFlags, NULL, NULL, NULL); | |
1324 if (FAILED(hr)) | |
1325 { | |
1326 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION
_SETTINGS, "Navigation::Failed") | |
1327 } | |
1328 } | 1313 } |
1329 } | 1314 } |
1330 break; | 1315 break; |
1331 } | 1316 } |
1332 case ID_MENU_DISABLE_ON_SITE: | 1317 case ID_MENU_DISABLE_ON_SITE: |
1333 { | 1318 { |
1334 CPluginSettings* settings = CPluginSettings::GetInstance(); | 1319 CPluginSettings* settings = CPluginSettings::GetInstance(); |
1335 CString urlString = GetTab()->GetDocumentUrl(); | 1320 std::wstring urlString = GetTab()->GetDocumentUrl(); |
1336 if (client->IsWhitelistedUrl(std::wstring(urlString))) | 1321 if (client->IsWhitelistedUrl(urlString)) |
1337 { | 1322 { |
1338 settings->RemoveWhiteListedDomain(client->GetHostFromUrl(urlString.GetSt
ring()).c_str()); | 1323 settings->RemoveWhiteListedDomain( client->GetHostFromUrl( urlString ).c
_str() ); |
1339 } | 1324 } |
1340 else | 1325 else |
1341 { | 1326 { |
1342 settings->AddWhiteListedDomain(client->GetHostFromUrl(urlString.GetStrin
g()).c_str()); | 1327 settings->AddWhiteListedDomain( client->GetHostFromUrl( urlString).c_str
()); |
1343 } | 1328 } |
1344 GetBrowser()->Refresh(); | 1329 GetBrowser()->Refresh(); |
1345 } | 1330 } |
1346 default: | 1331 default: |
1347 break; | 1332 break; |
1348 } | 1333 } |
1349 | 1334 |
1350 // Invalidate and redraw the control | 1335 // Invalidate and redraw the control |
1351 UpdateStatusBar(); | 1336 UpdateStatusBar(); |
1352 } | 1337 } |
1353 | 1338 |
1354 | 1339 |
1355 bool CPluginClass::SetMenuBar(HMENU hMenu, const CString& url) | 1340 bool CPluginClass::SetMenuBar(HMENU hMenu, const std::wstring & url) |
1356 { | 1341 { |
1357 DEBUG_GENERAL("SetMenuBar"); | 1342 DEBUG_GENERAL(L"SetMenuBar"); |
1358 | 1343 |
1359 std::wstring ctext; | 1344 std::wstring ctext; |
1360 | 1345 |
1361 s_criticalSectionLocal.Lock(); | 1346 s_criticalSectionLocal.Lock(); |
1362 { | 1347 { |
1363 #ifdef SUPPORT_WHITELIST | 1348 #ifdef SUPPORT_WHITELIST |
1364 s_menuDomains.clear(); | 1349 s_menuDomains.clear(); |
1365 #endif | 1350 #endif |
1366 } | 1351 } |
1367 s_criticalSectionLocal.Unlock(); | 1352 s_criticalSectionLocal.Unlock(); |
(...skipping 12 matching lines...) Expand all Loading... |
1380 miiSep.fType = MFT_SEPARATOR; | 1365 miiSep.fType = MFT_SEPARATOR; |
1381 | 1366 |
1382 CPluginClient* client = CPluginClient::GetInstance(); | 1367 CPluginClient* client = CPluginClient::GetInstance(); |
1383 | 1368 |
1384 CPluginSettings* settings = CPluginSettings::GetInstance(); | 1369 CPluginSettings* settings = CPluginSettings::GetInstance(); |
1385 | 1370 |
1386 #ifdef SUPPORT_WHITELIST | 1371 #ifdef SUPPORT_WHITELIST |
1387 { | 1372 { |
1388 ctext = dictionary->Lookup("menu", "menu-disable-on-site"); | 1373 ctext = dictionary->Lookup("menu", "menu-disable-on-site"); |
1389 // Is domain in white list? | 1374 // Is domain in white list? |
1390 ReplaceString(ctext, L"?1?", client->GetHostFromUrl(url.GetString())); | 1375 ReplaceString(ctext, L"?1?", client->GetHostFromUrl(url)); |
1391 if (client->IsWhitelistedUrl(std::wstring(GetTab()->GetDocumentUrl()))) | 1376 if (client->IsWhitelistedUrl(std::wstring(GetTab()->GetDocumentUrl()))) |
1392 { | 1377 { |
1393 fmii.fState = MFS_CHECKED | MFS_ENABLED; | 1378 fmii.fState = MFS_CHECKED | MFS_ENABLED; |
1394 } | 1379 } |
1395 else | 1380 else |
1396 { | 1381 { |
1397 fmii.fState = MFS_UNCHECKED | MFS_ENABLED; | 1382 fmii.fState = MFS_UNCHECKED | MFS_ENABLED; |
1398 } | 1383 } |
1399 fmii.fMask = MIIM_STRING | MIIM_STATE; | 1384 fmii.fMask = MIIM_STRING | MIIM_STATE; |
1400 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); | 1385 fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1601 } | 1586 } |
1602 | 1587 |
1603 LRESULT result = CallWindowProc(pClass->m_pWndProcStatus, hWnd, message, wPara
m, lParam); | 1588 LRESULT result = CallWindowProc(pClass->m_pWndProcStatus, hWnd, message, wPara
m, lParam); |
1604 | 1589 |
1605 | 1590 |
1606 return result; | 1591 return result; |
1607 | 1592 |
1608 } | 1593 } |
1609 | 1594 |
1610 | 1595 |
1611 HICON CPluginClass::GetStatusBarIcon(const CString& url) | 1596 HICON CPluginClass::GetStatusBarIcon(const std::wstring & url) |
1612 { | 1597 { |
1613 // use the disable icon as defualt, if the client doesn't exists | 1598 // use the disable icon as defualt, if the client doesn't exists |
1614 HICON hIcon = GetIcon(ICON_PLUGIN_DEACTIVATED); | 1599 HICON hIcon = GetIcon(ICON_PLUGIN_DEACTIVATED); |
1615 | 1600 |
1616 CPluginTab* tab = GetTab(::GetCurrentThreadId()); | 1601 CPluginTab* tab = GetTab(::GetCurrentThreadId()); |
1617 if (tab) | 1602 if (tab) |
1618 { | 1603 { |
1619 CPluginClient* client = CPluginClient::GetInstance(); | 1604 CPluginClient* client = CPluginClient::GetInstance(); |
1620 | 1605 |
1621 #ifdef PRODUCT_ADBLOCKPLUS | 1606 #ifdef PRODUCT_ADBLOCKPLUS |
1622 if (!CPluginSettings::GetInstance()->IsPluginEnabled()) | 1607 if (!CPluginSettings::GetInstance()->IsPluginEnabled()) |
1623 { | 1608 { |
1624 } | 1609 } |
1625 #ifdef SUPPORT_WHITELIST | 1610 #ifdef SUPPORT_WHITELIST |
1626 else if (client->IsWhitelistedUrl(std::wstring(url))) | 1611 else if (client->IsWhitelistedUrl( url )) |
1627 { | 1612 { |
1628 hIcon = GetIcon(ICON_PLUGIN_DISABLED); | 1613 hIcon = GetIcon(ICON_PLUGIN_DISABLED); |
1629 } | 1614 } |
1630 #endif // SUPPORT_WHITELIST | 1615 #endif // SUPPORT_WHITELIST |
1631 else | 1616 else |
1632 { | 1617 { |
1633 CPluginSettings* settings = CPluginSettings::GetInstance(); | 1618 CPluginSettings* settings = CPluginSettings::GetInstance(); |
1634 hIcon = GetIcon(ICON_PLUGIN_ENABLED); | 1619 hIcon = GetIcon(ICON_PLUGIN_ENABLED); |
1635 } | 1620 } |
1636 | 1621 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1708 { | 1693 { |
1709 ::SetPixel(hDC, i, j, clr); | 1694 ::SetPixel(hDC, i, j, clr); |
1710 } | 1695 } |
1711 } | 1696 } |
1712 } | 1697 } |
1713 } | 1698 } |
1714 | 1699 |
1715 // Draw icon | 1700 // Draw icon |
1716 if (CPluginClient::GetInstance()) | 1701 if (CPluginClient::GetInstance()) |
1717 { | 1702 { |
1718 HICON hIcon = GetStatusBarIcon(pClass->GetTab()->GetDocumentUrl()); | 1703 HICON hIcon = GetStatusBarIcon(pClass->GetTab()->GetDocumentUrl().c_str(
)); |
1719 | 1704 |
1720 int offx = (rcClient.Height() - 16)/2 + nDrawEdge; | 1705 int offx = (rcClient.Height() - 16)/2 + nDrawEdge; |
1721 if (hIcon) | 1706 if (hIcon) |
1722 { | 1707 { |
1723 ::DrawIconEx(hDC, offx, (rcClient.Height() - 16)/2 + 2, hIcon, 16, 16,
NULL, NULL, DI_NORMAL); | 1708 ::DrawIconEx(hDC, offx, (rcClient.Height() - 16)/2 + 2, hIcon, 16, 16,
NULL, NULL, DI_NORMAL); |
1724 offx += 22; | 1709 offx += 22; |
1725 } | 1710 } |
1726 #ifdef _DEBUG | 1711 #ifdef _DEBUG |
1727 // Display version | 1712 // Display version |
1728 HFONT hFont = (HFONT)::SendMessage(pClass->m_hStatusBarWnd, WM_GETFONT,
0, 0); | 1713 HFONT hFont = (HFONT)::SendMessage(pClass->m_hStatusBarWnd, WM_GETFONT,
0, 0); |
(...skipping 10 matching lines...) Expand all Loading... |
1739 | 1724 |
1740 // Done! | 1725 // Done! |
1741 EndPaint(hWnd, &ps); | 1726 EndPaint(hWnd, &ps); |
1742 | 1727 |
1743 return 0; | 1728 return 0; |
1744 } | 1729 } |
1745 | 1730 |
1746 case WM_LBUTTONUP: | 1731 case WM_LBUTTONUP: |
1747 case WM_RBUTTONUP: | 1732 case WM_RBUTTONUP: |
1748 { | 1733 { |
1749 CString strURL = pClass->GetBrowserUrl(); | 1734 std::wstring url = pClass->GetBrowserUrl(); |
1750 if (strURL != pClass->GetTab()->GetDocumentUrl()) | 1735 if (url != pClass->GetTab()->GetDocumentUrl()) |
1751 { | 1736 { |
1752 pClass->GetTab()->SetDocumentUrl(strURL); | 1737 pClass->GetTab()->SetDocumentUrl( url ); |
1753 } | 1738 } |
1754 | 1739 |
1755 // Create menu | 1740 // Create menu |
1756 HMENU hMenu = pClass->CreatePluginMenu(strURL); | 1741 HMENU hMenu = pClass->CreatePluginMenu( url ); |
1757 if (!hMenu) | 1742 if (!hMenu) |
1758 { | 1743 { |
1759 return 0; | 1744 return 0; |
1760 } | 1745 } |
1761 | 1746 |
1762 // Display menu | 1747 // Display menu |
1763 POINT pt; | 1748 POINT pt; |
1764 ::GetCursorPos(&pt); | 1749 ::GetCursorPos(&pt); |
1765 | 1750 |
1766 RECT rc; | 1751 RECT rc; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 } | 1825 } |
1841 break; | 1826 break; |
1842 } | 1827 } |
1843 | 1828 |
1844 return DefWindowProc(hWnd, message, wParam, lParam); | 1829 return DefWindowProc(hWnd, message, wParam, lParam); |
1845 } | 1830 } |
1846 | 1831 |
1847 | 1832 |
1848 void CPluginClass::UpdateStatusBar() | 1833 void CPluginClass::UpdateStatusBar() |
1849 { | 1834 { |
1850 DEBUG_GENERAL("*** Updating statusbar") | 1835 DEBUG_GENERAL(L"*** Updating statusbar") |
1851 if (m_hPaneWnd == NULL) | 1836 if (m_hPaneWnd == NULL) |
1852 { | 1837 { |
1853 CreateStatusBarPane(); | 1838 CreateStatusBarPane(); |
1854 } | 1839 } |
1855 if ((m_hPaneWnd != NULL) && !::InvalidateRect(m_hPaneWnd, NULL, FALSE)) | 1840 if ((m_hPaneWnd != NULL) && !::InvalidateRect(m_hPaneWnd, NULL, FALSE)) |
1856 { | 1841 { |
1857 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_INVALID
ATE_STATUSBAR, "Class::Invalidate statusbar"); | 1842 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_INVALID
ATE_STATUSBAR, L"Class::Invalidate statusbar"); |
1858 } | 1843 } |
1859 } | 1844 } |
1860 | 1845 |
1861 | 1846 |
1862 void CPluginClass::Unadvice() | 1847 void CPluginClass::Unadvice() |
1863 { | 1848 { |
1864 s_criticalSectionLocal.Lock(); | 1849 s_criticalSectionLocal.Lock(); |
1865 { | 1850 { |
1866 if (m_isAdviced) | 1851 if (m_isAdviced) |
1867 { | 1852 { |
1868 CComPtr<IConnectionPoint> pPoint = GetConnectionPoint(); | 1853 CComPtr<IConnectionPoint> pPoint = GetConnectionPoint(); |
1869 if (pPoint) | 1854 if (pPoint) |
1870 { | 1855 { |
1871 HRESULT hr = pPoint->Unadvise(m_nConnectionID); | 1856 HRESULT hr = pPoint->Unadvise(m_nConnectionID); |
1872 if (FAILED(hr)) | 1857 if (FAILED(hr)) |
1873 { | 1858 { |
1874 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_UNADV
ICE, "Class::Unadvice - Unadvise"); | 1859 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_UNADV
ICE, L"Class::Unadvice - Unadvise"); |
1875 } | 1860 } |
1876 } | 1861 } |
1877 | 1862 |
1878 m_isAdviced = false; | 1863 m_isAdviced = false; |
1879 } | 1864 } |
1880 } | 1865 } |
1881 s_criticalSectionLocal.Unlock(); | 1866 s_criticalSectionLocal.Unlock(); |
1882 } | 1867 } |
1883 | 1868 |
1884 HICON CPluginClass::GetIcon(int type) | 1869 HICON CPluginClass::GetIcon(int type) |
1885 { | 1870 { |
1886 HICON icon = NULL; | 1871 HICON icon = NULL; |
1887 | 1872 |
1888 s_criticalSectionLocal.Lock(); | 1873 s_criticalSectionLocal.Lock(); |
1889 { | 1874 { |
1890 if (!s_hIcons[type]) | 1875 if (!s_hIcons[type]) |
1891 { | 1876 { |
1892 s_hIcons[type] = ::LoadIcon(_Module.m_hInst, MAKEINTRESOURCE(s_hIconTypes[
type])); | 1877 s_hIcons[type] = ::LoadIcon(_Module.m_hInst, MAKEINTRESOURCE(s_hIconTypes[
type])); |
1893 if (!s_hIcons[type]) | 1878 if (!s_hIcons[type]) |
1894 { | 1879 { |
1895 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_LOAD_
ICON, "Class::GetIcon - LoadIcon") | 1880 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_LOAD_
ICON, L"Class::GetIcon - LoadIcon") |
1896 } | 1881 } |
1897 } | 1882 } |
1898 | 1883 |
1899 icon = s_hIcons[type]; | 1884 icon = s_hIcons[type]; |
1900 } | 1885 } |
1901 s_criticalSectionLocal.Unlock(); | 1886 s_criticalSectionLocal.Unlock(); |
1902 | 1887 |
1903 return icon; | 1888 return icon; |
1904 } | 1889 } |
1905 | 1890 |
1906 ATOM CPluginClass::GetAtomPaneClass() | 1891 ATOM CPluginClass::GetAtomPaneClass() |
1907 { | 1892 { |
1908 return s_atomPaneClass; | 1893 return s_atomPaneClass; |
1909 } | 1894 } |
1910 | 1895 |
1911 HWND CPluginClass::GetTabHWND() const | 1896 HWND CPluginClass::GetTabHWND() const |
1912 { | 1897 { |
1913 | 1898 |
1914 TCHAR szClassName[MAX_PATH]; | 1899 TCHAR szClassName[MAX_PATH]; |
1915 // Get browser window and url | 1900 // Get browser window and url |
1916 HWND hBrowserWnd = GetBrowserHWND(); | 1901 HWND hBrowserWnd = GetBrowserHWND(); |
1917 if (!hBrowserWnd) | 1902 if (!hBrowserWnd) |
1918 { | 1903 { |
1919 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "C
lass::GetTabWindow - No tab window") | 1904 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, L"
Class::GetTabWindow - No tab window") |
1920 s_criticalSectionWindow.Unlock(); | 1905 s_criticalSectionWindow.Unlock(); |
1921 | 1906 |
1922 return false; | 1907 return false; |
1923 } | 1908 } |
1924 | 1909 |
1925 // Looking for a TabWindowClass window in IE7 | 1910 // Looking for a TabWindowClass window in IE7 |
1926 | 1911 |
1927 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD); | 1912 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD); |
1928 while (hTabWnd) | 1913 while (hTabWnd) |
1929 { | 1914 { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1971 } | 1956 } |
1972 } | 1957 } |
1973 } | 1958 } |
1974 | 1959 |
1975 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); | 1960 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); |
1976 } | 1961 } |
1977 | 1962 |
1978 return hTabWnd; | 1963 return hTabWnd; |
1979 | 1964 |
1980 } | 1965 } |
OLD | NEW |