Home | History | Annotate | Download | only in chrome_frame
      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