| // 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 file will be processed by the MIDL tool to |
| // produce the type library (chrome_tab.tlb) and marshalling code. |
| |
| #include "olectl.h" |
| import "oaidl.idl"; |
| import "ocidl.idl"; |
| |
| [ |
| object, |
| uuid(FB243E4B-8AC2-4840-95F2-91B9AF9CFF10), |
| dual, |
| nonextensible, |
| helpstring("IChromeFrame Interface"), |
| pointer_default(unique) |
| ] |
| interface IChromeFrame : IDispatch { |
| [propget, id(1)] |
| HRESULT src([out, retval] BSTR* src); |
| [propput, id(1)] |
| HRESULT src([in] BSTR src); |
| |
| [id(3)] |
| HRESULT postMessage([in] BSTR message, [in, optional] VARIANT target); |
| |
| [id(4), propget] |
| HRESULT onload([out, retval] VARIANT* onload_handler); |
| [id(4), propput] |
| HRESULT onload([in] VARIANT onload_handler); |
| |
| [propget, id(5)] |
| HRESULT onloaderror([out, retval] VARIANT* onerror_handler); |
| [propput, id(5)] |
| HRESULT onloaderror([in] VARIANT onerror_handler); |
| |
| [propget, id(6)] |
| HRESULT onmessage([out, retval] VARIANT* onmessage_handler); |
| [propput, id(6)] |
| HRESULT onmessage([in] VARIANT onmessage_handler); |
| |
| [propget, id(DISPID_READYSTATE)] |
| HRESULT readyState([out, retval] long* ready_state); |
| |
| [id(7)] |
| HRESULT addEventListener([in] BSTR event_type, [in] IDispatch* listener, |
| [in, optional] VARIANT use_capture); |
| |
| [id(8)] |
| HRESULT removeEventListener([in] BSTR event_type, [in] IDispatch* listener, |
| [in, optional] VARIANT use_capture); |
| |
| [propget, id(9)] |
| HRESULT version([out, retval] BSTR* version); |
| |
| [id(10), hidden] |
| // This method is available only when the control is in privileged mode. |
| HRESULT postPrivateMessage([in] BSTR message, |
| [in] BSTR origin, |
| [in] BSTR target); |
| |
| [propget, id(11)] |
| HRESULT useChromeNetwork([out, retval] VARIANT_BOOL* pVal); |
| [propput, id(11)] |
| HRESULT useChromeNetwork([in] VARIANT_BOOL newVal); |
| |
| [id(12), hidden] |
| // Deprecated. Returns E_NOTIMPL. |
| HRESULT installExtension([in] BSTR crx_path); |
| |
| [id(13), hidden] |
| // Deprecated. Returns E_NOTIMPL. |
| HRESULT loadExtension([in] BSTR extension_path); |
| |
| [id(14), hidden] |
| // Deprecated. Returns E_NOTIMPL. |
| HRESULT getEnabledExtensions(); |
| |
| [id(15)] |
| // This method bootstraps the BHO if it is not already loaded. |
| HRESULT registerBhoIfNeeded(); |
| }; |
| |
| [ |
| object, |
| uuid(E98FDFD9-312B-444a-A640-8E88F3CC08B8), |
| oleautomation, |
| nonextensible, |
| hidden |
| ] |
| // Internal implementation interface. Not intended as an API. May change |
| // frequently, don't treat this as frozen. |
| interface IChromeFramePrivileged : IUnknown { |
| // If the host returns false for wants_privileged, the control |
| // won't enable privileged mode. |
| HRESULT GetWantsPrivileged([out] boolean *wants_privileged); |
| // The profile name we want to use. |
| HRESULT GetChromeProfileName([out] BSTR *profile_name); |
| // Called when an automation version mismatch occurs. Returns S_OK if |
| // a dialog should be showed to the user by this CF instance, S_FALSE if |
| // not. |
| HRESULT ShouldShowVersionMismatchDialog(); |
| // Allows the host to return the navigation url during the creation of the |
| // ChromeFrameActiveX instance. |
| HRESULT GetNavigationUrl([out] BSTR* url); |
| }; |
| |
| // Expose this service to the ChromeFrame control to trigger privileged |
| // mode. If the control is in privileged mode, it will forward messages |
| // to the onmessage handler irrespective of origin. |
| cpp_quote("#define SID_ChromeFramePrivileged __uuidof(IChromeFramePrivileged)") |
| |
| typedef enum { |
| CF_EVENT_DISPID_ONLOAD = 1, |
| CF_EVENT_DISPID_ONLOADERROR, |
| CF_EVENT_DISPID_ONMESSAGE, |
| CF_EVENT_DISPID_ONPRIVATEMESSAGE, |
| CF_EVENT_DISPID_ONCHANNELERROR, |
| CF_EVENT_DISPID_ONCLOSE, |
| CF_EVENT_DISPID_ONREADYSTATECHANGED = DISPID_READYSTATECHANGE, |
| } ChromeFrameEventDispId; |
| |
| [ |
| uuid(6F2664E1-FF6E-488A-BCD1-F4CA6001DFCC), |
| version(1.0), |
| helpstring("ChromeTab 1.0 Type Library") |
| ] |
| library ChromeTabLib { |
| importlib("stdole2.tlb"); |
| |
| [uuid(388B5D64-CE67-415b-9B0F-745C56E868E7)] |
| dispinterface DIChromeFrameEvents { |
| properties: |
| // None. |
| |
| methods: |
| [id(CF_EVENT_DISPID_ONLOAD)] |
| void onload(); |
| |
| [id(CF_EVENT_DISPID_ONLOADERROR)] |
| void onloaderror(); |
| |
| [id(CF_EVENT_DISPID_ONMESSAGE)] |
| void onmessage([in] IDispatch* event); |
| |
| [id(CF_EVENT_DISPID_ONREADYSTATECHANGED)] |
| void onreadystatechanged(); |
| |
| [id(CF_EVENT_DISPID_ONPRIVATEMESSAGE)] |
| // This event is only fired when the control is in privileged mode. |
| void onprivatemessage([in] IDispatch* event, [in] BSTR target); |
| |
| [id(CF_EVENT_DISPID_ONCHANNELERROR)] |
| // This event is fired when there is an error in communication channel with |
| // Chrome and Automation must be reconnected to continue. |
| void onchannelerror(); |
| |
| [id(CF_EVENT_DISPID_ONCLOSE)] |
| // This event is fired when the script inside the page wants to close it. |
| // This is just a notification, there is no way to prevent the script from |
| // closing. |
| void onclose(); |
| }; |
| |
| [uuid(BB1176EE-20DD-41DC-9D1E-AC1335C7BBB0)] |
| coclass HtmlFilter { |
| [default] interface IUnknown; |
| }; |
| |
| [uuid(9875BFAF-B04D-445E-8A69-BE36838CDE3E)] |
| coclass ChromeProtocol { |
| [default] interface IUnknown; |
| }; |
| |
| [uuid(3E1D0E7F-F5E3-44CC-AA6A-C0A637619AB8), control] |
| coclass ChromeActiveDocument { |
| [default] interface IChromeFrame; |
| }; |
| |
| [uuid(E0A900DF-9611-4446-86BD-4B1D47E7DB2A), control] |
| coclass ChromeFrame { |
| [default] interface IChromeFrame; |
| [default, source] dispinterface DIChromeFrameEvents; |
| }; |
| |
| [uuid(ECB3C477-1A0A-44bd-BB57-78F9EFE34FA7)] |
| coclass ChromeFrameBHO { |
| [default] interface IUnknown; |
| }; |
| }; |