LEFT | RIGHT |
1 /* | 1 /* |
2 * http://msdn.microsoft.com/en-us/library/bb250436.aspx | 2 * http://msdn.microsoft.com/en-us/library/bb250436.aspx |
3 */ | 3 */ |
4 | 4 |
5 #ifndef _PLUGIN_CLASS_H_ | 5 #ifndef _PLUGIN_CLASS_H_ |
6 #define _PLUGIN_CLASS_H_ | 6 #define _PLUGIN_CLASS_H_ |
7 | 7 |
8 | 8 |
9 #include "PluginTypedef.h" | 9 #include "PluginTypedef.h" |
10 #include "Plugin.h" | 10 #include "Plugin.h" |
11 #include "PluginTab.h" | 11 #include "PluginTab.h" |
12 #define _CRTDBG_MAP_ALLOC | 12 #define _CRTDBG_MAP_ALLOC |
13 #include <stdlib.h> | 13 #include <stdlib.h> |
14 #include <crtdbg.h> | 14 #include <crtdbg.h> |
15 #include <set> | 15 #include <set> |
16 | 16 |
17 #include "NotificationMessage.h" | 17 #include "NotificationMessage.h" |
18 | 18 |
19 #define ICON_PLUGIN_DISABLED 0 | 19 #define ICON_PLUGIN_DISABLED 0 |
20 #define ICON_PLUGIN_ENABLED 1 | 20 #define ICON_PLUGIN_ENABLED 1 |
21 #define ICON_PLUGIN_DEACTIVATED 2 | 21 #define ICON_PLUGIN_DEACTIVATED 2 |
22 #define ICON_MAX 3 | 22 #define ICON_MAX 3 |
23 | 23 |
24 #define WM_LAUNCH_INFO (WM_APP + 10) | 24 #define WM_LAUNCH_INFO (WM_APP + 10) |
25 #define WM_WHITELIST_DOMAIN (WM_LAUNCH_INFO + 1) | |
26 | 25 |
27 class CPluginMimeFilterClient; | 26 class CPluginMimeFilterClient; |
28 | 27 |
29 | 28 |
30 class ATL_NO_VTABLE CPluginClass : | 29 class ATL_NO_VTABLE CPluginClass : |
31 public CComObjectRootEx<CComMultiThreadModel>, | 30 public CComObjectRootEx<CComMultiThreadModel>, |
32 public CComCoClass<CPluginClass, &CLSID_PluginClass>, | 31 public CComCoClass<CPluginClass, &CLSID_PluginClass>, |
33 public IObjectWithSiteImpl<CPluginClass>, | 32 public IObjectWithSiteImpl<CPluginClass>, |
34 public IDispatchImpl<IIEPlugin, &IID_IIEPlugin, &LIBID_PluginLib>, | 33 public IDispatchImpl<IIEPlugin, &IID_IIEPlugin, &LIBID_PluginLib>, |
35 public IOleCommandTarget | 34 public IOleCommandTarget |
36 { | 35 { |
37 | 36 |
38 friend class CPluginTab; | 37 friend class CPluginTab; |
39 | 38 |
40 private: | 39 private: |
41 | 40 |
42 CPluginTab* m_tab; | 41 CPluginTab* m_tab; |
43 | 42 |
44 public: | 43 public: |
45 | 44 |
46 DECLARE_REGISTRY_RESOURCEID(IDR_PLUGIN_CLASS) | 45 DECLARE_REGISTRY_RESOURCEID(IDR_PLUGIN_CLASS) |
47 | 46 |
48 DECLARE_PROTECT_FINAL_CONSTRUCT() | 47 DECLARE_PROTECT_FINAL_CONSTRUCT() |
49 | 48 |
50 BEGIN_COM_MAP(CPluginClass) | 49 BEGIN_COM_MAP(CPluginClass) |
51 COM_INTERFACE_ENTRY(IIEPlugin) | 50 COM_INTERFACE_ENTRY(IIEPlugin) |
52 COM_INTERFACE_ENTRY(IDispatch) | 51 COM_INTERFACE_ENTRY(IDispatch) |
53 COM_INTERFACE_ENTRY_IMPL(IObjectWithSite) | 52 COM_INTERFACE_ENTRY(IObjectWithSite) |
54 COM_INTERFACE_ENTRY(IOleCommandTarget) | 53 COM_INTERFACE_ENTRY(IOleCommandTarget) |
55 END_COM_MAP() | 54 END_COM_MAP() |
56 | 55 |
57 CPluginClass(); | 56 CPluginClass(); |
58 ~CPluginClass(); | 57 ~CPluginClass(); |
59 | 58 |
60 HRESULT FinalConstruct(); | 59 HRESULT FinalConstruct(); |
61 void FinalRelease(); | 60 void FinalRelease(); |
62 | 61 |
63 // IObjectWithSite | 62 // IObjectWithSite |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 // Main thread | 154 // Main thread |
156 static HANDLE s_hMainThread; | 155 static HANDLE s_hMainThread; |
157 static bool s_isMainThreadDone; | 156 static bool s_isMainThreadDone; |
158 | 157 |
159 static HANDLE GetMainThreadHandle(); | 158 static HANDLE GetMainThreadHandle(); |
160 static bool IsMainThreadDone(HANDLE mainThread); | 159 static bool IsMainThreadDone(HANDLE mainThread); |
161 | 160 |
162 static HINSTANCE s_hUxtheme; | 161 static HINSTANCE s_hUxtheme; |
163 static std::set<CPluginClass*> s_instances; | 162 static std::set<CPluginClass*> s_instances; |
164 static std::map<DWORD,CPluginClass*> s_threadInstances; | 163 static std::map<DWORD,CPluginClass*> s_threadInstances; |
165 static std::map<UINT, CString> s_menuDomains; | |
166 static CComAutoCriticalSection s_criticalSectionLocal; | 164 static CComAutoCriticalSection s_criticalSectionLocal; |
167 static CComAutoCriticalSection s_criticalSectionBrowser; | 165 static CComAutoCriticalSection s_criticalSectionBrowser; |
168 static CComAutoCriticalSection s_criticalSectionWindow; | 166 static CComAutoCriticalSection s_criticalSectionWindow; |
169 static CComAutoCriticalSection s_criticalSectionWhiteList; | |
170 | 167 |
171 // Async browser | 168 // Async browser |
172 static CComQIPtr<IWebBrowser2> s_asyncWebBrowser2; | 169 static CComQIPtr<IWebBrowser2> s_asyncWebBrowser2; |
173 static CComQIPtr<IWebBrowser2> GetAsyncBrowser(); | 170 static CComQIPtr<IWebBrowser2> GetAsyncBrowser(); |
174 }; | 171 }; |
175 | 172 |
176 OBJECT_ENTRY_AUTO(__uuidof(PluginClass), CPluginClass) | 173 OBJECT_ENTRY_AUTO(__uuidof(PluginClass), CPluginClass) |
177 | 174 |
178 | 175 |
179 #endif // _PLUGIN_CLASS_H_ | 176 #endif // _PLUGIN_CLASS_H_ |
LEFT | RIGHT |