summaryrefslogtreecommitdiffstats
path: root/chrome_frame/chrome_tab.idl
diff options
context:
space:
mode:
authorslightlyoff@chromium.org <slightlyoff@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-24 05:11:58 +0000
committerslightlyoff@chromium.org <slightlyoff@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-24 05:11:58 +0000
commitf781782dd67077478e117c61dca4ea5eefce3544 (patch)
tree4801f724123cfdcbb69c4e7fe40a565b331723ae /chrome_frame/chrome_tab.idl
parent63cf4759efa2373e33436fb5df6849f930081226 (diff)
downloadchromium_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.idl153
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;
+ };
+};