diff options
author | slightlyoff@chromium.org <slightlyoff@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-24 05:11:58 +0000 |
---|---|---|
committer | slightlyoff@chromium.org <slightlyoff@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-24 05:11:58 +0000 |
commit | f781782dd67077478e117c61dca4ea5eefce3544 (patch) | |
tree | 4801f724123cfdcbb69c4e7fe40a565b331723ae /chrome_frame/chrome_tab.idl | |
parent | 63cf4759efa2373e33436fb5df6849f930081226 (diff) | |
download | chromium_src-f781782dd67077478e117c61dca4ea5eefce3544.zip chromium_src-f781782dd67077478e117c61dca4ea5eefce3544.tar.gz chromium_src-f781782dd67077478e117c61dca4ea5eefce3544.tar.bz2 |
Initial import of the Chrome Frame codebase. Integration in chrome.gyp coming in a separate CL.
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/218019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27042 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/chrome_tab.idl')
-rw-r--r-- | chrome_frame/chrome_tab.idl | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/chrome_frame/chrome_tab.idl b/chrome_frame/chrome_tab.idl new file mode 100644 index 0000000..6f8a2ac --- /dev/null +++ b/chrome_frame/chrome_tab.idl @@ -0,0 +1,153 @@ +// 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(B9F5EA20-C450-4f46-B70F-BFD3CA9A20C5), + 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); +}; + +[ + object, + uuid(679E292F-DBAB-46b8-8693-03084CEF61BE), + oleautomation, + nonextensible, + hidden, +] +interface IChromeFramePrivileged: IUnknown { + // If the host returns false for wants_privileged, the control + // won't enable privileged mode. + HRESULT GetWantsPrivileged([out] boolean *wants_privileged); + // Extra arguments to supply to the Chrome instance. Returns S_FALSE when + // no extra arguments are needed. Always sets the output string to non-NULL. + HRESULT GetChromeExtraArguments([out] BSTR *args); + // The profile name we want to use. + HRESULT GetChromeProfileName([out] BSTR *profile_name); +}; + +// 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_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(A96B8A02-DD11-4936-8C0F-B2520289FABB)] + 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); + }; + + [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; + }; +}; |