| Index: src/plugin/PluginClass.h |
| diff --git a/src/plugin/PluginClass.h b/src/plugin/PluginClass.h |
| index e6ea661304f08c74b27bc7a49911417e3772844f..6a196273d8ef35c9baf92ebf77f475a74bad34c8 100644 |
| --- a/src/plugin/PluginClass.h |
| +++ b/src/plugin/PluginClass.h |
| @@ -27,11 +27,11 @@ class CPluginMimeFilterClient; |
| class ATL_NO_VTABLE CPluginClass : |
| - public CComObjectRootEx<CComMultiThreadModel>, |
| - public CComCoClass<CPluginClass, &CLSID_PluginClass>, |
| - public IObjectWithSiteImpl<CPluginClass>, |
| - public IDispatchImpl<IIEPlugin, &IID_IIEPlugin, &LIBID_PluginLib>, |
| - public IOleCommandTarget |
| + public ATL::CComObjectRootEx<ATL::CComMultiThreadModel>, |
| + public ATL::CComCoClass<CPluginClass, &CLSID_PluginClass>, |
| + public ATL::IObjectWithSiteImpl<CPluginClass>, |
| + public IOleCommandTarget, |
| + public ATL::IDispEventImpl<1, CPluginClass, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 1> |
| { |
| friend class CPluginTab; |
| @@ -47,12 +47,20 @@ public: |
| DECLARE_PROTECT_FINAL_CONSTRUCT() |
| BEGIN_COM_MAP(CPluginClass) |
| - COM_INTERFACE_ENTRY(IIEPlugin) |
| - COM_INTERFACE_ENTRY(IDispatch) |
| COM_INTERFACE_ENTRY(IObjectWithSite) |
| COM_INTERFACE_ENTRY(IOleCommandTarget) |
| END_COM_MAP() |
| + BEGIN_SINK_MAP(CPluginClass) |
| + SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2) |
| + SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOWNLOADBEGIN, OnDownloadBegin) |
| + 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, Unadvise) |
|
Eric
2015/01/12 14:18:07
I'd prefer to see an OnQuit function explicitly, e
|
| + END_SINK_MAP() |
| + |
| CPluginClass(); |
| ~CPluginClass(); |
| @@ -68,10 +76,6 @@ public: |
| STDMETHOD(QueryStatus)(const GUID* pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT* pCmdText); |
| STDMETHOD(Exec)(const GUID*, DWORD nCmdID, DWORD, VARIANTARG*, VARIANTARG* pvaOut); |
| - // IDispatch |
| - |
| - STDMETHOD(Invoke)(DISPID dispidMember,REFIID riid, LCID lcid, WORD wFlags, |
| - DISPPARAMS * pdispparams, VARIANT * pvarResult,EXCEPINFO * pexcepinfo, UINT * puArgErr); |
| static CPluginTab* GetTab(DWORD dwThreadId); |
| CPluginTab* GetTab(); |
| @@ -87,14 +91,11 @@ private: |
| void DisplayPluginMenu(HMENU hMenu, int nToolbarCmdID, POINT pt, UINT nMenuFlags); |
| bool CreateStatusBarPane(); |
| - CComPtr<IConnectionPoint> GetConnectionPoint(); |
| - |
| public: |
| HWND GetBrowserHWND() const; |
| HWND GetTabHWND() const; |
| CComQIPtr<IWebBrowser2> GetBrowser() const; |
| - STDMETHODIMP OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags); |
| static CPluginMimeFilterClient* s_mimeFilter; |
| @@ -113,9 +114,21 @@ private: |
| static LRESULT CALLBACK NewStatusProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); |
| static LRESULT CALLBACK PaneWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); |
| static void FirstRunThread(); |
| - void BeforeNavigate2(DISPPARAMS* pDispParams); |
| - void Unadvice(); |
| + void STDMETHODCALLTYPE OnBeforeNavigate2(/* [in] */ IDispatch* pDisp, |
| + /* [in] */ VARIANT* URL, |
| + /* [in] */ VARIANT* Flags, |
| + /* [in] */ VARIANT* TargetFrameName, |
| + /* [in] */ VARIANT* PostData, |
| + /* [in] */ VARIANT* Headers, |
| + /* [in, out] */ VARIANT_BOOL* Cancel); |
| + void STDMETHODCALLTYPE OnDownloadBegin(); |
| + 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); |
| + // OnOnQuit |
| + void STDMETHODCALLTYPE Unadvise(); |
| void ShowStatusBar(); |
| bool IsStatusBarEnabled(); |
| @@ -123,7 +136,6 @@ private: |
| public: |
| CComQIPtr<IWebBrowser2> m_webBrowser2; |
| private: |
| - DWORD m_nConnectionID; |
| HWND m_hBrowserWnd; |
| HWND m_hTabWnd; |
| HWND m_hStatusBarWnd; |
| @@ -137,7 +149,7 @@ private: |
| NotificationMessage notificationMessage; |
| - bool m_isAdviced; |
| + bool m_isAdvised; |
| bool m_isInitializedOk; |
| // Atom pane class |