Index: src/plugin/PluginClass.h |
diff --git a/src/plugin/PluginClass.h b/src/plugin/PluginClass.h |
index 95c2e23d499e668d34163a3504e0833af6a0ff13..b46ddc93d618c6d5f7d0d65117b49c7fdaf830e2 100644 |
--- a/src/plugin/PluginClass.h |
+++ b/src/plugin/PluginClass.h |
@@ -40,7 +40,7 @@ |
#define WM_LAUNCH_INFO (WM_APP + 10) |
class CPluginMimeFilterClient; |
- |
+class WebBrowserEventsListener; |
class ATL_NO_VTABLE CPluginClass : |
public ATL::CComObjectRootEx<ATL::CComMultiThreadModel>, |
@@ -52,10 +52,6 @@ class ATL_NO_VTABLE CPluginClass : |
friend class CPluginTab; |
-private: |
- |
- CPluginTab* m_tab; |
- |
public: |
DECLARE_REGISTRY_RESOURCEID(IDR_PLUGIN_CLASS) |
@@ -70,7 +66,6 @@ public: |
BEGIN_SINK_MAP(CPluginClass) |
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2) |
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOWNLOADCOMPLETE, OnDownloadComplete) |
- SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete) |
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_WINDOWSTATECHANGED, OnWindowStateChanged) |
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_COMMANDSTATECHANGE, OnCommandStateChange) |
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_ONQUIT, OnOnQuit) |
@@ -129,21 +124,15 @@ private: |
VARIANT* Headers /**< [in] */, |
VARIANT_BOOL* Cancel /* [in, out] */); |
void STDMETHODCALLTYPE OnDownloadComplete(); |
- void STDMETHODCALLTYPE OnDocumentComplete(IDispatch* frameBrowserDisp, VARIANT* /*urlOrPidl*/); |
void STDMETHODCALLTYPE OnWindowStateChanged(unsigned long flags, unsigned long validFlagsMask); |
void STDMETHODCALLTYPE OnCommandStateChange(long command, VARIANT_BOOL enable); |
void STDMETHODCALLTYPE OnOnQuit(); |
void Unadvise(); |
+ void EnsureWebBrowserConnected(const ATL::CComPtr<IWebBrowser2>& webBrowser); |
void ShowStatusBar(); |
bool IsStatusBarEnabled(); |
- /** |
- * A browser interface pointer to our site object |
- * |
- * It's values are set and reset solely in SetSite(). |
- */ |
- CComPtr<IWebBrowser2> m_webBrowser2; |
HWND m_hBrowserWnd; |
HWND m_hTabWnd; |
HWND m_hStatusBarWnd; |
@@ -152,6 +141,15 @@ private: |
WNDPROC m_pWndProcStatus; |
int m_nPaneWidth; |
HANDLE m_hTheme; |
+ struct Data |
+ { |
+ std::map<IWebBrowser2*, WebBrowserEventsListener*> connectedWebBrowsersCache; |
+ std::unique_ptr<CPluginTab> tab; |
+ ATL::CComPtr<IWebBrowser2> webBrowser2; |
+ }; |
+ // we need to have it as a shared pointer to get weak pointer to it to avoid |
+ // wrong usage after destroying of this class. |
+ std::shared_ptr<Data> m_data; |
CriticalSection m_csStatusBar; |