- add sources.
[platform/framework/web/crosswalk.git] / src / chrome_frame / chrome_tab.idl
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 file will be processed by the MIDL tool to
6 // produce the type library (chrome_tab.tlb) and marshalling code.
7
8 #include "olectl.h"
9 import "oaidl.idl";
10 import "ocidl.idl";
11
12 [
13   object,
14   uuid(FB243E4B-8AC2-4840-95F2-91B9AF9CFF10),
15   dual,
16   nonextensible,
17   helpstring("IChromeFrame Interface"),
18   pointer_default(unique)
19 ]
20 interface IChromeFrame : IDispatch {
21   [propget, id(1)]
22   HRESULT src([out, retval] BSTR* src);
23   [propput, id(1)]
24   HRESULT src([in] BSTR src);
25
26   [id(3)]
27   HRESULT postMessage([in] BSTR message, [in, optional] VARIANT target);
28
29   [id(4), propget]
30   HRESULT onload([out, retval] VARIANT* onload_handler);
31   [id(4), propput]
32   HRESULT onload([in] VARIANT onload_handler);
33
34   [propget, id(5)]
35   HRESULT onloaderror([out, retval] VARIANT* onerror_handler);
36   [propput, id(5)]
37   HRESULT onloaderror([in] VARIANT onerror_handler);
38
39   [propget, id(6)]
40   HRESULT onmessage([out, retval] VARIANT* onmessage_handler);
41   [propput, id(6)]
42   HRESULT onmessage([in] VARIANT onmessage_handler);
43
44   [propget, id(DISPID_READYSTATE)]
45   HRESULT readyState([out, retval] long* ready_state);
46
47   [id(7)]
48   HRESULT addEventListener([in] BSTR event_type, [in] IDispatch* listener,
49                            [in, optional] VARIANT use_capture);
50
51   [id(8)]
52   HRESULT removeEventListener([in] BSTR event_type, [in] IDispatch* listener,
53                               [in, optional] VARIANT use_capture);
54
55   [propget, id(9)]
56   HRESULT version([out, retval] BSTR* version);
57
58   [id(10), hidden]
59   // This method is available only when the control is in privileged mode.
60   HRESULT postPrivateMessage([in] BSTR message,
61                              [in] BSTR origin,
62                              [in] BSTR target);
63
64   [propget, id(11)]
65   HRESULT useChromeNetwork([out, retval] VARIANT_BOOL* pVal);
66   [propput, id(11)]
67   HRESULT useChromeNetwork([in] VARIANT_BOOL newVal);
68
69   [id(12), hidden]
70   // Deprecated. Returns E_NOTIMPL.
71   HRESULT installExtension([in] BSTR crx_path);
72
73   [id(13), hidden]
74   // Deprecated. Returns E_NOTIMPL.
75   HRESULT loadExtension([in] BSTR extension_path);
76
77   [id(14), hidden]
78   // Deprecated. Returns E_NOTIMPL.
79   HRESULT getEnabledExtensions();
80
81   [id(15)]
82   // This method bootstraps the BHO if it is not already loaded.
83   HRESULT registerBhoIfNeeded();
84 };
85
86 [
87   object,
88   uuid(E98FDFD9-312B-444a-A640-8E88F3CC08B8),
89   oleautomation,
90   nonextensible,
91   hidden
92 ]
93 // Internal implementation interface. Not intended as an API. May change
94 // frequently, don't treat this as frozen.
95 interface IChromeFramePrivileged : IUnknown {
96   // If the host returns false for wants_privileged, the control
97   // won't enable privileged mode.
98   HRESULT GetWantsPrivileged([out] boolean *wants_privileged);
99   // The profile name we want to use.
100   HRESULT GetChromeProfileName([out] BSTR *profile_name);
101   // Called when an automation version mismatch occurs. Returns S_OK if
102   // a dialog should be showed to the user by this CF instance, S_FALSE if
103   // not.
104   HRESULT ShouldShowVersionMismatchDialog();
105   // Allows the host to return the navigation url during the creation of the
106   // ChromeFrameActiveX instance.
107   HRESULT GetNavigationUrl([out] BSTR* url);
108 };
109
110 // Expose this service to the ChromeFrame control to trigger privileged
111 // mode. If the control is in privileged mode, it will forward messages
112 // to the onmessage handler irrespective of origin.
113 cpp_quote("#define SID_ChromeFramePrivileged __uuidof(IChromeFramePrivileged)")
114
115 typedef enum {
116   CF_EVENT_DISPID_ONLOAD = 1,
117   CF_EVENT_DISPID_ONLOADERROR,
118   CF_EVENT_DISPID_ONMESSAGE,
119   CF_EVENT_DISPID_ONPRIVATEMESSAGE,
120   CF_EVENT_DISPID_ONCHANNELERROR,
121   CF_EVENT_DISPID_ONCLOSE,
122   CF_EVENT_DISPID_ONREADYSTATECHANGED = DISPID_READYSTATECHANGE,
123 } ChromeFrameEventDispId;
124
125 [
126   uuid(6F2664E1-FF6E-488A-BCD1-F4CA6001DFCC),
127   version(1.0),
128   helpstring("ChromeTab 1.0 Type Library")
129 ]
130 library ChromeTabLib {
131   importlib("stdole2.tlb");
132
133   [uuid(388B5D64-CE67-415b-9B0F-745C56E868E7)]
134   dispinterface DIChromeFrameEvents {
135    properties:
136     // None.
137
138    methods:
139     [id(CF_EVENT_DISPID_ONLOAD)]
140     void onload();
141     
142     [id(CF_EVENT_DISPID_ONLOADERROR)]
143     void onloaderror();
144     
145     [id(CF_EVENT_DISPID_ONMESSAGE)]
146     void onmessage([in] IDispatch* event);
147     
148     [id(CF_EVENT_DISPID_ONREADYSTATECHANGED)]
149     void onreadystatechanged();
150     
151     [id(CF_EVENT_DISPID_ONPRIVATEMESSAGE)]
152     // This event is only fired when the control is in privileged mode.
153     void onprivatemessage([in] IDispatch* event, [in] BSTR target);
154
155     [id(CF_EVENT_DISPID_ONCHANNELERROR)]
156     // This event is fired when there is an error in communication channel with
157     // Chrome and Automation must be reconnected to continue.
158     void onchannelerror();
159
160     [id(CF_EVENT_DISPID_ONCLOSE)]
161     // This event is fired when the script inside the page wants to close it.
162     // This is just a notification, there is no way to prevent the script from
163     // closing.
164     void onclose();
165   };
166
167   [uuid(BB1176EE-20DD-41DC-9D1E-AC1335C7BBB0)]
168   coclass HtmlFilter {
169     [default] interface IUnknown;
170   };
171
172   [uuid(9875BFAF-B04D-445E-8A69-BE36838CDE3E)]
173   coclass ChromeProtocol {
174     [default] interface IUnknown;
175   };
176
177   [uuid(3E1D0E7F-F5E3-44CC-AA6A-C0A637619AB8), control]
178   coclass ChromeActiveDocument {
179     [default] interface IChromeFrame;
180   };
181
182   [uuid(E0A900DF-9611-4446-86BD-4B1D47E7DB2A), control]
183   coclass ChromeFrame {
184     [default] interface IChromeFrame;
185     [default, source] dispinterface DIChromeFrameEvents;
186   };
187
188   [uuid(ECB3C477-1A0A-44bd-BB57-78F9EFE34FA7)]
189   coclass ChromeFrameBHO {
190     [default] interface IUnknown;
191   };
192 };