Source/WebCore:
[WebKit.git] / Source / WebKit / win / Interfaces / IWebViewPrivate.idl
1 /*
2  * Copyright (C) 2006, 2007, 2008, 2015 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef DO_NO_IMPORTS
27 import "oaidl.idl";
28 import "ocidl.idl";
29 import "IWebFormDelegate.idl";
30 import "IWebFrameLoadDelegatePrivate.idl";
31 import "IWebHistoryDelegate.idl";
32 import "IWebInspector.idl";
33 import "IWebInspectorPrivate.idl";
34 #endif
35
36 // Sent when IWebView::close is called. No userInfo is associated with this notification.
37 cpp_quote("#define WebViewWillCloseNotification L\"WebViewWillCloseNotification\"")
38
39 interface IEnumTextMatches;
40 interface IWebFormDelegate;
41 interface IWebFrameLoadDelegatePrivate;
42 interface IWebHistoryDelegate;
43 interface IWebInspector;
44 interface IWebInspectorPrivate;
45 interface IWebURLRequest;
46 interface IWebView;
47
48 typedef enum {
49     WebInjectAtDocumentStart = 0,
50     WebInjectAtDocumentEnd,
51 } WebUserScriptInjectionTime;
52
53 typedef enum {
54     WebInjectInAllFrames = 0,
55     WebInjectInTopFrameOnly,
56 } WebUserContentInjectedFrames;
57
58 [
59     object,
60     oleautomation,
61     uuid(44914369-DEB5-4fcf-A6A3-30C02E73154F),
62     pointer_default(unique)
63 ]
64 interface IWebViewPrivate : IUnknown
65 {
66     /*!
67         @method _setInViewSourceMode:
68         @abstract Used to place a WebView into a special source-viewing mode.
69         - (void)_setInViewSourceMode:(BOOL)flag;
70       */
71     HRESULT setInViewSourceMode([in] BOOL flag);
72
73     /*!
74         @method _inViewSourceMode;
75         @abstract Whether or not the WebView is in source-view mode for HTML.
76         - (BOOL)_inViewSourceMode;
77       */
78     HRESULT inViewSourceMode([out, retval] BOOL* flag);
79
80     HRESULT viewWindow([out, retval] HWND* window);
81
82     // May well become public
83     //- (void)_setFormDelegate:(id<WebFormDelegate>)delegate;
84     HRESULT setFormDelegate([in] IWebFormDelegate* formDelegate);
85
86     //- (id<WebFormDelegate>)_formDelegate;
87     HRESULT formDelegate([out, retval] IWebFormDelegate** formDelegate);
88
89     HRESULT setFrameLoadDelegatePrivate([in] IWebFrameLoadDelegatePrivate* frameLoadDelegatePrivate);
90     HRESULT frameLoadDelegatePrivate([out, retval] IWebFrameLoadDelegatePrivate** frameLoadDelegatePrivate);
91
92     HRESULT scrollOffset([out, retval] LPPOINT offset);
93     HRESULT scrollBy([in] LPPOINT offset);
94     HRESULT visibleContentRect([out, retval] LPRECT rect);
95     
96     // SPI for DumpRenderTree
97     HRESULT updateFocusedAndActiveState();
98
99     // Support for displaying multiple text matches.
100     HRESULT markAllMatchesForText([in] BSTR search, [in] BOOL caseSensitive, [in] BOOL highlight, [in] UINT limit, [out] UINT* matches);
101     HRESULT unmarkAllTextMatches();
102     HRESULT rectsForTextMatches([out]IEnumTextMatches** pmatches);
103     HRESULT selectionRect([in, out] RECT* rc);
104     HRESULT generateSelectionImage(BOOL forceWhiteText, [out, retval] HBITMAP* hBitmap);
105
106     HRESULT canHandleRequest([in] IWebURLRequest* request, [out, retval] BOOL* result);
107
108     HRESULT clearFocusNode();
109
110     HRESULT setTabKeyCyclesThroughElements([in] BOOL cycles);
111     HRESULT tabKeyCyclesThroughElements([out, retval] BOOL* result);
112
113     HRESULT setAllowSiteSpecificHacks([in] BOOL allows);
114     HRESULT addAdditionalPluginDirectory([in] BSTR directory);
115
116     HRESULT loadBackForwardListFromOtherView([in] IWebView* otherView);
117
118     HRESULT setCustomDropTarget([in] IDropTarget* dt);
119     HRESULT removeCustomDropTarget();
120
121     HRESULT setInitialFocus([in] BOOL forward);
122
123     HRESULT inspector([out, retval] IWebInspector**);
124
125     HRESULT clearUndoRedoOperations();
126
127     HRESULT setProhibitsMainFrameScrolling([in] BOOL prohibits);
128
129     // SPI for DumpRenderTree. This is global to all WebViews.
130     HRESULT setShouldApplyMacFontAscentHack([in] BOOL shouldApply);
131
132     /*!
133         @method shouldClose:
134         @abstract This function will fire the before unload handler for a page.  
135         If the user cancels the closing of a webview from the alert popped up by the 
136         before unload handler, then this function will return false.
137     */
138     HRESULT shouldClose([out, retval] BOOL* result);
139
140     // SPI for DumpRenderTree
141     HRESULT executeCoreCommandByName([in] BSTR name, [in] BSTR value);
142
143     HRESULT windowAncestryDidChange();
144
145     HRESULT paintDocumentRectToContext([in] RECT rect, [in] HDC dc);
146
147     HRESULT setDefersCallbacks([in] BOOL defersCallbacks);
148     HRESULT defersCallbacks([out, retval] BOOL* defersCallbacks);
149
150     HRESULT standardUserAgentWithApplicationName([in] BSTR applicationName, [retval][out] BSTR* groupName);
151
152     HRESULT setCustomHTMLTokenizerTimeDelay([in] double timeDelay);
153     HRESULT setCustomHTMLTokenizerChunkSize([in] int chunkSize);
154
155     HRESULT backingStore([out, retval] HBITMAP* hBitmap);
156
157     HRESULT setTransparent([in] BOOL transparent);
158     HRESULT transparent([out, retval] BOOL* transparent);
159
160     HRESULT setAlwaysUsesComplexTextCodePath([in] BOOL complex);
161     HRESULT alwaysUsesComplexTextCodePath([out, retval] BOOL* complex);
162
163     HRESULT setCookieEnabled([in] BOOL enable);
164     HRESULT cookieEnabled([out, retval] BOOL* enabled);
165
166     HRESULT setMediaVolume([in] float volume);
167     HRESULT mediaVolume([out, retval] float* volume);
168
169     // SPI for DumpRenderTree
170     HRESULT clearMainFrameName();
171
172     HRESULT globalHistoryItem([out, retval] IWebHistoryItem**);
173
174     HRESULT registerEmbeddedViewMIMEType([in] BSTR mimeType);
175
176     HRESULT setMemoryCacheDelegateCallsEnabled([in] BOOL enabled);
177
178     HRESULT setJavaScriptURLsAreAllowed([in] BOOL areAllowed);
179
180     HRESULT setCanStartPlugins([in] BOOL canStartPlugins);
181
182     /*!
183         @method MIMETypeForExtension:
184         @abstract Returns the mime type for a certian file extension.
185         @param path The extension of the file to check.
186         @result The mime type of the specified extension.
187         + (BSTR)MIMETypeForPath:(NSString *)path;
188     */
189     HRESULT MIMETypeForExtension([in] BSTR extension, [out, retval] BSTR* mimeType);
190
191     HRESULT addUserScriptToGroup([in] BSTR groupName, [in] IWebScriptWorld*, [in] BSTR source, [in] BSTR url,
192                                  [in] unsigned whitelistCount, [in, size_is(whitelistCount)] BSTR* whitelist,
193                                  [in] unsigned blacklistCount, [in, size_is(blacklistCount)] BSTR* blacklist,
194                                  [in] WebUserScriptInjectionTime injectionTime);
195     HRESULT addUserStyleSheetToGroup([in] BSTR groupName, [in] IWebScriptWorld*, [in] BSTR source, [in] BSTR url,
196                                      [in] unsigned whitelistCount, [in, size_is(whitelistCount)] BSTR* whitelist,
197                                      [in] unsigned blacklistCount, [in, size_is(blacklistCount)] BSTR* blacklist);
198     HRESULT removeUserScriptFromGroup([in] BSTR groupName, [in] IWebScriptWorld*, [in] BSTR url);
199     HRESULT removeUserStyleSheetFromGroup([in] BSTR groupName, [in] IWebScriptWorld*, [in] BSTR url);
200     HRESULT removeUserScriptsFromGroup([in] BSTR groupName, [in] IWebScriptWorld*);
201     HRESULT removeUserStyleSheetsFromGroup([in] BSTR groupName, [in] IWebScriptWorld*);
202     HRESULT removeAllUserContentFromGroup([in] BSTR groupName);
203
204     HRESULT unused1();
205     HRESULT unused2();
206
207     // If rect is 0, the entire backing store will be invalidated.
208     HRESULT invalidateBackingStore([in] const RECT* rect);
209
210     // Whitelists access from an origin (sourceOrigin) to a set of one or more origins described by the parameters:
211     // - destinationProtocol: The protocol to grant access to.
212     // - destinationHost: The host to grant access to.
213     // - allowDestinationSubdomains: If host is a domain, setting this to YES will whitelist host and all its subdomains, recursively.
214     HRESULT addOriginAccessWhitelistEntry([in] BSTR sourceOrigin, [in] BSTR destinationProtocol, [in] BSTR destinationHost, [in] BOOL allowDestinationSubdomains);
215
216     // Removes a white list entry created with addOriginAccessWhitelistEntry. See above.
217     HRESULT removeOriginAccessWhitelistEntry([in] BSTR sourceOrigin, [in] BSTR destinationProtocol, [in] BSTR destinationHost, [in] BOOL allowDestinationSubdomains);
218
219     // Removes all white list entries created with addOriginAccessWhitelistEntry.
220     HRESULT resetOriginAccessWhitelists();
221
222     HRESULT setHistoryDelegate([in] IWebHistoryDelegate* historyDelegate);
223     HRESULT historyDelegate([out,retval] IWebHistoryDelegate** historyDelegate);
224     HRESULT addVisitedLinks([in] BSTR* visitedURLs, [in] unsigned visitedURLCount);
225
226     HRESULT unused3();
227     HRESULT unused4();
228     HRESULT unused5();
229
230     HRESULT setGeolocationProvider([in] IWebGeolocationProvider* locationProvider);
231     HRESULT geolocationProvider([out, retval] IWebGeolocationProvider** locationProvider);
232     HRESULT geolocationDidChangePosition([in] IWebGeolocationPosition* position);
233     HRESULT geolocationDidFailWithError([in] IWebError* error);
234
235     HRESULT setDomainRelaxationForbiddenForURLScheme([in] BOOL forbidden, [in] BSTR scheme);
236
237     HRESULT registerURLSchemeAsSecure([in] BSTR scheme);
238
239     HRESULT nextDisplayIsSynchronous();
240
241     HRESULT paintScrollViewRectToContextAtPoint([in] RECT rect, [in] POINT pt, [in] HDC dc);
242
243     [local] HRESULT reportException([in] JSContextRef context, [in] JSValueRef exception);
244
245     [local] HRESULT elementFromJS([in] JSContextRef context, [in] JSValueRef nodeObject, [out, retval] IDOMElement** element);
246
247
248     /*!
249         @method defaultMinimumTimerInterval
250         @discussion Returns the default minimum interval for DOMTimers on all pages, not
251         just the one associated with this receiver.
252         - (double)interval;
253     */
254     HRESULT defaultMinimumTimerInterval([out, retval] double* interval);
255
256     /*!
257         @method setMinimumTimerInterval
258         @discussion Sets the minimum interval for DOMTimers on the web page associated
259         with the receiver.
260         - (double)interval;
261     */
262     HRESULT setMinimumTimerInterval([in] double interval);
263
264     /*!
265         @method _HTTPPipeliningEnabled
266         @abstract Checks the HTTP pipelining status.
267         @discussion Defaults to NO.
268         @result YES if HTTP pipelining is enabled, NO if not enabled.
269      */
270     HRESULT httpPipeliningEnabled([out, retval] BOOL* enabled);
271
272     /*!
273         @method _setHTTPPipeliningEnabled:
274         @abstract Set the HTTP pipelining status.
275         @discussion Defaults to NO.
276         @param enabled The new HTTP pipelining status.
277      */
278     HRESULT setHTTPPipeliningEnabled([in] BOOL enabled);
279
280     HRESULT setUsesLayeredWindow([in] BOOL usesLayeredWindow);
281     HRESULT usesLayeredWindow([out, retval] BOOL* usesLayeredWindow);
282
283     HRESULT registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing([in] BSTR scheme);
284     HRESULT registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing([in] BSTR scheme);
285     // Used by TextInputController in DumpRenderTree
286
287     HRESULT setCompositionForTesting([in] BSTR composition,[in] UINT from,[in] UINT length);
288
289     HRESULT hasCompositionForTesting([out, retval] BOOL* result);
290
291     HRESULT confirmCompositionForTesting([in] BSTR composition);
292
293     HRESULT compositionRangeForTesting([out] UINT* startPosition, [out] UINT* length);
294
295     HRESULT firstRectForCharacterRangeForTesting([in] UINT location, [in] UINT length, [out, retval] RECT* resultRect);
296
297     HRESULT selectedRangeForTesting([out] UINT* location, [out] UINT* length);
298 }
299
300 [ uuid(671FB259-ABEF-48FC-88FB-EC4CF304E866) ]
301 interface IWebViewPrivate2 : IWebViewPrivate
302 {
303     // SPI for DumpRenderTree
304     HRESULT setLoadResourcesSerially([in] BOOL serialize);
305
306     HRESULT scaleWebView([in] double scale, [in] POINT origin);
307
308     HRESULT dispatchPendingLoadRequests();
309
310     HRESULT setCustomBackingScaleFactor([in] double);
311     HRESULT backingScaleFactor([out] double*);
312
313     HRESULT addUserScriptToGroup([in] BSTR groupName, [in] IWebScriptWorld*, [in] BSTR source, [in] BSTR url,
314         [in] unsigned whitelistCount, [in, size_is(whitelistCount)] BSTR* whitelist,
315         [in] unsigned blacklistCount, [in, size_is(blacklistCount)] BSTR* blacklist,
316         [in] WebUserScriptInjectionTime injectionTime, [in] WebUserContentInjectedFrames injectedFrames);
317
318     HRESULT addUserStyleSheetToGroup([in] BSTR groupName, [in] IWebScriptWorld*, [in] BSTR source, [in] BSTR url,
319         [in] unsigned whitelistCount, [in, size_is(whitelistCount)] BSTR* whitelist,
320         [in] unsigned blacklistCount, [in, size_is(blacklistCount)] BSTR* blacklist,
321         [in] WebUserContentInjectedFrames injectedFrames);
322 }