1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // This header file contains declarations for system APIs and interfaces 6 // that are either undocumented or are documented but not included in any 7 // Platform SDK header files. 8 #ifndef CHROME_FRAME_EXTRA_SYSTEM_APIS_H_ 9 #define CHROME_FRAME_EXTRA_SYSTEM_APIS_H_ 10 11 #include <mshtml.h> 12 #include <shdeprecated.h> 13 14 // This is an interface provided by the WebBrowser object. It allows us to 15 // notify the browser of navigation events. MSDN documents this interface 16 // (see http://msdn2.microsoft.com/en-us/library/aa752109(VS.85).aspx) 17 // but this is not included in any Platform SDK header file. 18 class __declspec(uuid("54A8F188-9EBD-4795-AD16-9B4945119636")) 19 IWebBrowserEventsService : public IUnknown { 20 public: 21 STDMETHOD(FireBeforeNavigate2Event)(VARIANT_BOOL* cancel) = 0; 22 STDMETHOD(FireNavigateComplete2Event)(VOID) = 0; 23 STDMETHOD(FireDownloadBeginEvent)(VOID) = 0; 24 STDMETHOD(FireDownloadCompleteEvent)(VOID) = 0; 25 STDMETHOD(FireDocumentCompleteEvent)(VOID) = 0; 26 }; 27 28 // This interface is used in conjunction with the IWebBrowserEventsService 29 // interface. The web browser queries us for this interface when we invoke 30 // one of the IWebBrowserEventsService methods. This interface supplies the 31 // WebBrowser with a URL to use for the events. MSDN documents this interface 32 // (see http://msdn2.microsoft.com/en-us/library/aa752103(VS.85).aspx) 33 // but this is not included in any Platform SDK header file. 34 class __declspec(uuid("{87CC5D04-EAFA-4833-9820-8F986530CC00}")) 35 IWebBrowserEventsUrlService : public IUnknown { 36 public: 37 STDMETHOD(GetUrlForEvents)(BSTR* url) = 0; 38 }; 39 40 // Web browser methods that are used by MSHTML when navigating or 41 // initiating downloads. IE6. 42 class __declspec(uuid("{3050F804-98B5-11CF-BB82-00AA00BDCE0B}")) 43 IWebBrowserPriv : public IUnknown { 44 public: 45 STDMETHOD(NavigateWithBindCtx)(VARIANT* uri, VARIANT* flags, 46 VARIANT* target_frame, VARIANT* post_data, 47 VARIANT* headers, IBindCtx* bind_ctx, 48 LPOLESTR url_fragment); 49 STDMETHOD(OnClose)(); 50 }; 51 52 // The common denominator for IE7 and IE8 versions. There's no specific IID 53 // here since all apply. We use this interface for simplicities sake as all we 54 // want to do is invoke the NavigateWithBindCtx2 method. 55 class IWebBrowserPriv2Common : public IUnknown { 56 public: 57 STDMETHOD(NavigateWithBindCtx2)(IUri* uri, VARIANT* flags, 58 VARIANT* target_frame, VARIANT* post_data, 59 VARIANT* headers, IBindCtx* bind_ctx, 60 LPOLESTR url_fragment); 61 }; 62 63 // The IWebBrowserPriv2Common interface flavor for IE9 preview 2 64 // (9.0.8073.6003) 65 class IWebBrowserPriv2CommonIE9 : public IUnknown { 66 public: 67 STDMETHOD(NavigateWithBindCtx2)(IUri* uri, VARIANT* flags, 68 VARIANT* target_frame, VARIANT* post_data, 69 VARIANT* headers, IBindCtx* bind_ctx, 70 LPOLESTR url_fragment, DWORD unused1); 71 }; 72 73 // This interface is used to call FireBeforeNavigate with additional 74 // information like url. Available on IE7 onwards. 75 // 76 // MSDN documents this interface see: 77 // http://msdn.microsoft.com/en-us/library/aa770053(VS.85).aspx) 78 // but this is not included in any Platform SDK header file. 79 interface __declspec(uuid("3050f801-98b5-11cf-bb82-00aa00bdce0b")) 80 IDocObjectService : public IUnknown { 81 STDMETHOD(FireBeforeNavigate2)(IDispatch* dispatch, 82 LPCTSTR url, DWORD flags, LPCTSTR frame_name, BYTE* post_data, 83 DWORD post_data_len, LPCTSTR headers, BOOL play_nav_sound, 84 BOOL* cancel) = 0; 85 STDMETHOD(FireNavigateComplete2)(IHTMLWindow2* html_window2, 86 DWORD flags) = 0; 87 STDMETHOD(FireDownloadBegin)() = 0; 88 STDMETHOD(FireDownloadComplete)() = 0; 89 STDMETHOD(FireDocumentComplete)(IHTMLWindow2* html_window2, DWORD flags) = 0; 90 STDMETHOD(UpdateDesktopComponent)(IHTMLWindow2* html_window2) = 0; 91 STDMETHOD(GetPendingUrl)(BSTR* pending_url) = 0; 92 STDMETHOD(ActiveElementChanged)(IHTMLElement* html_element) = 0; 93 STDMETHOD(GetUrlSearchComponent)(BSTR* search) = 0; 94 STDMETHOD(IsErrorUrl)(LPCTSTR url, BOOL* is_error) = 0; 95 }; 96 97 // This interface is used to notify the shellbrowser about events. 98 interface __declspec(uuid("f62d9369-75ef-4578-8856-232802c76468")) 99 ITridentService2 : public IUnknown { 100 STDMETHOD(FireBeforeNavigate2)(IDispatch* dispatch, 101 LPCTSTR url, DWORD flags, LPCTSTR frame_name, BYTE* post_data, 102 DWORD post_data_len, LPCTSTR headers, BOOL play_nav_sound, 103 BOOL* cancel) = 0; 104 STDMETHOD(FireNavigateComplete2)(IHTMLWindow2*, uint32); 105 STDMETHOD(FireDownloadBegin)(VOID); 106 STDMETHOD(FireDownloadComplete)(VOID); 107 STDMETHOD(FireDocumentComplete)(IHTMLWindow2*, uint32); 108 STDMETHOD(UpdateDesktopComponent)(IHTMLWindow2*); 109 STDMETHOD(GetPendingUrl)(uint16**); 110 STDMETHOD(ActiveElementChanged)(IHTMLElement*); 111 STDMETHOD(GetUrlSearchComponent)(uint16**); 112 STDMETHOD(IsErrorUrl)(uint16 const*, int32*); 113 STDMETHOD(AttachMyPics)(VOID *, VOID**); 114 STDMETHOD(ReleaseMyPics)(VOID*); 115 STDMETHOD(IsGalleryMeta)(int32, VOID*); 116 STDMETHOD(EmailPicture)(uint16*); 117 STDMETHOD(FireNavigateError)(IHTMLWindow2*, 118 uint16*, 119 uint16*, 120 uint32, int*); 121 STDMETHOD(FirePrintTemplateEvent)(IHTMLWindow2*, int32); 122 STDMETHOD(FireUpdatePageStatus)(IHTMLWindow2*, uint32, int32); 123 STDMETHOD(FirePrivacyImpactedStateChange)(int32 privacy_violated); 124 STDMETHOD(InitAutoImageResize)(VOID); 125 STDMETHOD(UnInitAutoImageResize)(VOID); 126 }; 127 128 // Flags for ITravelLogEx::CountEntryNodes, CreateEnumEntry. 129 #define TLEF_RELATIVE_INCLUDE_CURRENT (0x01) // count the current entry 130 #define TLEF_RELATIVE_BACK (0x10) // count backward entries 131 #define TLEF_RELATIVE_FORE (0x20) // count forward entries 132 133 #endif // CHROME_FRAME_EXTRA_SYSTEM_APIS_H_ 134