// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This header file contains declarations for system APIs and interfaces // that are either undocumented or are documented but not included in any // Platform SDK header files. #ifndef CHROME_FRAME_EXTRA_SYSTEM_APIS_H_ #define CHROME_FRAME_EXTRA_SYSTEM_APIS_H_ #include <mshtml.h> #include <shdeprecated.h> // This is an interface provided by the WebBrowser object. It allows us to // notify the browser of navigation events. MSDN documents this interface // (see http://msdn2.microsoft.com/en-us/library/aa752109(VS.85).aspx) // but this is not included in any Platform SDK header file. class __declspec(uuid("54A8F188-9EBD-4795-AD16-9B4945119636")) IWebBrowserEventsService : public IUnknown { public: STDMETHOD(FireBeforeNavigate2Event)(VARIANT_BOOL* cancel) = 0; STDMETHOD(FireNavigateComplete2Event)(VOID) = 0; STDMETHOD(FireDownloadBeginEvent)(VOID) = 0; STDMETHOD(FireDownloadCompleteEvent)(VOID) = 0; STDMETHOD(FireDocumentCompleteEvent)(VOID) = 0; }; // This interface is used in conjunction with the IWebBrowserEventsService // interface. The web browser queries us for this interface when we invoke // one of the IWebBrowserEventsService methods. This interface supplies the // WebBrowser with a URL to use for the events. MSDN documents this interface // (see http://msdn2.microsoft.com/en-us/library/aa752103(VS.85).aspx) // but this is not included in any Platform SDK header file. class __declspec(uuid("{87CC5D04-EAFA-4833-9820-8F986530CC00}")) IWebBrowserEventsUrlService : public IUnknown { public: STDMETHOD(GetUrlForEvents)(BSTR* url) = 0; }; // Web browser methods that are used by MSHTML when navigating or // initiating downloads. IE6. class __declspec(uuid("{3050F804-98B5-11CF-BB82-00AA00BDCE0B}")) IWebBrowserPriv : public IUnknown { public: STDMETHOD(NavigateWithBindCtx)(VARIANT* uri, VARIANT* flags, VARIANT* target_frame, VARIANT* post_data, VARIANT* headers, IBindCtx* bind_ctx, LPOLESTR url_fragment); STDMETHOD(OnClose)(); }; // The common denominator for IE7 and IE8 versions. There's no specific IID // here since all apply. We use this interface for simplicities sake as all we // want to do is invoke the NavigateWithBindCtx2 method. class IWebBrowserPriv2Common : public IUnknown { public: STDMETHOD(NavigateWithBindCtx2)(IUri* uri, VARIANT* flags, VARIANT* target_frame, VARIANT* post_data, VARIANT* headers, IBindCtx* bind_ctx, LPOLESTR url_fragment); }; // The IWebBrowserPriv2Common interface flavor for IE9 preview 2 // (9.0.8073.6003) class IWebBrowserPriv2CommonIE9 : public IUnknown { public: STDMETHOD(NavigateWithBindCtx2)(IUri* uri, VARIANT* flags, VARIANT* target_frame, VARIANT* post_data, VARIANT* headers, IBindCtx* bind_ctx, LPOLESTR url_fragment, DWORD unused1); }; // This interface is used to call FireBeforeNavigate with additional // information like url. Available on IE7 onwards. // // MSDN documents this interface see: // http://msdn.microsoft.com/en-us/library/aa770053(VS.85).aspx) // but this is not included in any Platform SDK header file. interface __declspec(uuid("3050f801-98b5-11cf-bb82-00aa00bdce0b")) IDocObjectService : public IUnknown { STDMETHOD(FireBeforeNavigate2)(IDispatch* dispatch, LPCTSTR url, DWORD flags, LPCTSTR frame_name, BYTE* post_data, DWORD post_data_len, LPCTSTR headers, BOOL play_nav_sound, BOOL* cancel) = 0; STDMETHOD(FireNavigateComplete2)(IHTMLWindow2* html_window2, DWORD flags) = 0; STDMETHOD(FireDownloadBegin)() = 0; STDMETHOD(FireDownloadComplete)() = 0; STDMETHOD(FireDocumentComplete)(IHTMLWindow2* html_window2, DWORD flags) = 0; STDMETHOD(UpdateDesktopComponent)(IHTMLWindow2* html_window2) = 0; STDMETHOD(GetPendingUrl)(BSTR* pending_url) = 0; STDMETHOD(ActiveElementChanged)(IHTMLElement* html_element) = 0; STDMETHOD(GetUrlSearchComponent)(BSTR* search) = 0; STDMETHOD(IsErrorUrl)(LPCTSTR url, BOOL* is_error) = 0; }; // This interface is used to notify the shellbrowser about events. interface __declspec(uuid("f62d9369-75ef-4578-8856-232802c76468")) ITridentService2 : public IUnknown { STDMETHOD(FireBeforeNavigate2)(IDispatch* dispatch, LPCTSTR url, DWORD flags, LPCTSTR frame_name, BYTE* post_data, DWORD post_data_len, LPCTSTR headers, BOOL play_nav_sound, BOOL* cancel) = 0; STDMETHOD(FireNavigateComplete2)(IHTMLWindow2*, uint32); STDMETHOD(FireDownloadBegin)(VOID); STDMETHOD(FireDownloadComplete)(VOID); STDMETHOD(FireDocumentComplete)(IHTMLWindow2*, uint32); STDMETHOD(UpdateDesktopComponent)(IHTMLWindow2*); STDMETHOD(GetPendingUrl)(uint16**); STDMETHOD(ActiveElementChanged)(IHTMLElement*); STDMETHOD(GetUrlSearchComponent)(uint16**); STDMETHOD(IsErrorUrl)(uint16 const*, int32*); STDMETHOD(AttachMyPics)(VOID *, VOID**); STDMETHOD(ReleaseMyPics)(VOID*); STDMETHOD(IsGalleryMeta)(int32, VOID*); STDMETHOD(EmailPicture)(uint16*); STDMETHOD(FireNavigateError)(IHTMLWindow2*, uint16*, uint16*, uint32, int*); STDMETHOD(FirePrintTemplateEvent)(IHTMLWindow2*, int32); STDMETHOD(FireUpdatePageStatus)(IHTMLWindow2*, uint32, int32); STDMETHOD(FirePrivacyImpactedStateChange)(int32 privacy_violated); STDMETHOD(InitAutoImageResize)(VOID); STDMETHOD(UnInitAutoImageResize)(VOID); }; // Flags for ITravelLogEx::CountEntryNodes, CreateEnumEntry. #define TLEF_RELATIVE_INCLUDE_CURRENT (0x01) // count the current entry #define TLEF_RELATIVE_BACK (0x10) // count backward entries #define TLEF_RELATIVE_FORE (0x20) // count forward entries #endif // CHROME_FRAME_EXTRA_SYSTEM_APIS_H_