4bbdec195926d15ab8f08418bb346e2f59a28fb5
[WebKit-https.git] / Tools / WebKitTestRunner / InjectedBundle / Bindings / TestRunner.idl
1 /*
2  * Copyright (C) 2010-2017 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. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 interface TestRunner {
27     readonly attribute boolean isWebKit2;
28
29     // The basics.
30     void dumpAsText(boolean dumpPixels);
31     void dumpChildFramesAsText();
32     void waitForPolicyDelegate();
33     void waitUntilDone();
34     void notifyDone();
35     double preciseTime();
36     readonly attribute double timeout;
37
38     // Downloads.
39     void waitUntilDownloadFinished();
40     void setShouldLogDownloadCallbacks(boolean value);
41
42     // Other dumping.
43     void dumpBackForwardList();
44     void dumpChildFrameScrollPositions();
45     void dumpEditingCallbacks();
46     void dumpSelectionRect();
47     void dumpStatusCallbacks();
48     void dumpTitleChanges();
49     void dumpFullScreenCallbacks();
50     void dumpFrameLoadCallbacks();
51     void dumpProgressFinishedCallback();
52     void dumpResourceLoadCallbacks();
53     void dumpResourceResponseMIMETypes();
54     void dumpWillCacheResponse();
55     void dumpApplicationCacheDelegateCallbacks();
56     void dumpDatabaseCallbacks();
57     void dumpDOMAsWebArchive();
58     void dumpPolicyDelegateCallbacks();
59
60     void clearDOMCaches();
61     void clearDOMCache(DOMString origin);
62     boolean hasDOMCache(DOMString origin);
63     unsigned long domCacheSize(DOMString origin);
64
65     // Special options.
66     void keepWebHistory();
67     void setAcceptsEditing(boolean value);
68     void setCanOpenWindows(boolean value);
69     void setCloseRemainingWindowsWhenComplete(boolean value);
70     void setXSSAuditorEnabled(boolean value);
71     void setAllowUniversalAccessFromFileURLs(boolean value);
72     void setAllowFileAccessFromFileURLs(boolean value);
73     void setNeedsStorageAccessFromFileURLsQuirk(boolean value);
74     void setPluginsEnabled(boolean value);
75     void setJavaScriptCanAccessClipboard(boolean value);
76     void setPrivateBrowsingEnabled(boolean value);
77     void setUseDashboardCompatibilityMode(boolean value);
78     void setPopupBlockingEnabled(boolean value);
79     void setAuthorAndUserStylesEnabled(boolean value);
80     void setCustomPolicyDelegate(boolean enabled, boolean permissive);
81     void addOriginAccessWhitelistEntry(DOMString sourceOrigin, DOMString destinationProtocol, DOMString destinationHost, boolean allowDestinationSubdomains);
82     void removeOriginAccessWhitelistEntry(DOMString sourceOrigin, DOMString destinationProtocol, DOMString destinationHost, boolean allowDestinationSubdomains);
83     void setUserStyleSheetEnabled(boolean value);
84     void setUserStyleSheetLocation(DOMString location);
85     void setSpatialNavigationEnabled(boolean value);
86     void setTabKeyCyclesThroughElements(boolean enabled);
87     void setSerializeHTTPLoads();
88     void dispatchPendingLoadRequests();
89     void setCacheModel(long model);
90     void setAsynchronousSpellCheckingEnabled(boolean value);
91     void setPrinting();
92     void setShouldDecideNavigationPolicyAfterDelay(boolean value);
93     void setNavigationGesturesEnabled(boolean value);
94     void setIgnoresViewportScaleLimits(boolean value);
95     void setShouldDownloadUndisplayableMIMETypes(boolean value);
96
97     // Special DOM functions.
98     void clearBackForwardList();
99     void execCommand(DOMString name, DOMString argument);
100     boolean isCommandEnabled(DOMString name);
101     unsigned long windowCount();
102
103     // Special DOM variables.
104     attribute boolean globalFlag;
105
106     // Repaint testing.
107     void testRepaint();
108     void repaintSweepHorizontally();
109     void display();
110     void displayAndTrackRepaints();
111
112     // Failed load condition testing
113     void forceImmediateCompletion();
114
115     // Printing
116     boolean isPageBoxVisible(long pageIndex);
117
118     [PassContext] void setValueForUser(object element, DOMString value);
119
120     // UserContent testing.
121     void addUserScript(DOMString source, boolean runAtStart, boolean allFrames);
122     void addUserStyleSheet(DOMString source, boolean allFrames);
123
124     // Local storage API
125     void clearAllDatabases();
126     void setDatabaseQuota(unsigned long long quota);
127     DOMString pathToLocalResource(DOMString url);
128
129     attribute double databaseDefaultQuota;
130     attribute double databaseMaxQuota;
131
132     // Application Cache API
133     void clearAllApplicationCaches();
134     void setAppCacheMaximumSize(unsigned long long size);
135     long long applicationCacheDiskUsageForOrigin(DOMString origin);
136     void clearApplicationCacheForOrigin(DOMString name);
137     void disallowIncreaseForApplicationCacheQuota();
138     object originsWithApplicationCache();
139
140     // Text search testing.
141     boolean findString(DOMString target, object optionsArray);
142
143     // Evaluating script in a special context.
144     [PassContext] void evaluateScriptInIsolatedWorld(unsigned long worldID, DOMString script);
145
146     // For Web Inspector tests
147     void showWebInspector();
148     void closeWebInspector();
149     void evaluateInWebInspector(DOMString script);
150     readonly attribute DOMString inspectorTestStubURL;
151
152     void setPOSIXLocale(DOMString locale);
153
154     void setTextDirection(DOMString direction);
155
156     void setWillSendRequestReturnsNull(boolean flag);
157     void setWillSendRequestReturnsNullOnRedirect(boolean flag);
158     void setWillSendRequestAddsHTTPBody(DOMString body);
159     
160     void setShouldStayOnPageAfterHandlingBeforeUnload(boolean flag);
161
162     void setDefersLoading(boolean flag);
163     void setStopProvisionalFrameLoads();
164
165     // Focus testing.
166     void addChromeInputField(object callback);
167     void removeChromeInputField(object callback);
168     void focusWebView(object callback);
169
170     // Window/view state
171     void setBackingScaleFactor(double backingScaleFactor, object callback);
172
173     void setWindowIsKey(boolean isKey);
174     void setViewSize(double width, double height);
175
176     // Cookies testing
177     void setAlwaysAcceptCookies(boolean accept);
178     void setCookieStoragePartitioningEnabled(boolean enabled);
179     void setStorageAccessAPIEnabled(boolean enabled);
180
181     void overridePreference(DOMString preference, DOMString value);
182
183     // Page Visibility API
184     void setPageVisibility(DOMString state);
185     void resetPageVisibility();
186
187     // Control full screen behavior.
188     void setHasCustomFullScreenBehavior(boolean value);
189
190     // Web notifications support
191     void grantWebNotificationPermission(DOMString origin);
192     void denyWebNotificationPermission(DOMString origin);
193     void removeAllWebNotificationPermissions();
194     void simulateWebNotificationClick(object notification);
195
196     // Geolocation
197     void setGeolocationPermission(boolean value);
198     void setMockGeolocationPosition(double latitude, double longitude, double accuracy, optional object altitude, optional object altitudeAccuracy, optional object heading, optional object speed, optional object floorLevel);
199     void setMockGeolocationPositionUnavailableError(DOMString errorMessage);
200     boolean isGeolocationProviderActive();
201
202     // MediaStream
203     void setUserMediaPermission(boolean value);
204     void resetUserMediaPermission();
205     void setUserMediaPersistentPermissionForOrigin(boolean permission, DOMString origin, DOMString parentOrigin);
206     unsigned long userMediaPermissionRequestCountForOrigin(DOMString origin, DOMString parentOrigin);
207     void resetUserMediaPermissionRequestCountForOrigin(DOMString origin, DOMString parentOrigin);
208
209     // Audio testing.
210     [PassContext] void setAudioResult(object data);
211
212     boolean callShouldCloseOnWebView();
213
214     // Work queue.
215     void queueBackNavigation(unsigned long howFarBackward);
216     void queueForwardNavigation(unsigned long howFarForward);
217     void queueLoad(DOMString url, DOMString target, optional boolean shouldOpenExternalURLs);
218     void queueLoadHTMLString(DOMString content, optional DOMString baseURL, optional DOMString unreachableURL);
219     void queueReload();
220     void queueLoadingScript(DOMString script);
221     void queueNonLoadingScript(DOMString script);
222
223     // Authentication
224     void setRejectsProtectionSpaceAndContinueForAuthenticationChallenges(boolean value);
225     void setHandlesAuthenticationChallenges(boolean value);
226     void setShouldLogCanAuthenticateAgainstProtectionSpace(boolean value);
227     void setAuthenticationUsername(DOMString username);
228     void setAuthenticationPassword(DOMString password);
229
230     void setAllowsAnySSLCertificate(boolean value);
231
232     // Secure text input mode (Mac only)
233     readonly attribute boolean secureEventInputIsEnabled;
234     
235     // Override plugin load policy.
236     void setBlockAllPlugins(boolean shouldBlock);
237     
238     // Hooks to the JSC compiler.
239     object failNextNewCodeBlock();
240     object numberOfDFGCompiles(object function);
241     object neverInlineFunction(object function);
242
243     // Swipe gestures
244     void installDidBeginSwipeCallback(object callback);
245     void installWillEndSwipeCallback(object callback);
246     void installDidEndSwipeCallback(object callback);
247     void installDidRemoveSwipeSnapshotCallback(object callback);
248
249     unsigned long imageCountInGeneralPasteboard();
250
251     // UI Process Testing
252     void runUIScript(DOMString script, object callback);
253
254     void clearTestRunnerCallbacks();
255
256     void accummulateLogsForChannel(DOMString channel);
257
258     // Gamepad
259     void setMockGamepadDetails(unsigned long index, DOMString id, unsigned long axisCount, unsigned long buttonCount);
260     void setMockGamepadAxisValue(unsigned long index, unsigned long axisIndex, double value);
261     void setMockGamepadButtonValue(unsigned long index, unsigned long buttonIndex, double value);
262     void connectMockGamepad(unsigned long index);
263     void disconnectMockGamepad(unsigned long index);
264
265     // Resource Load Statistics
266     void installStatisticsDidModifyDataRecordsCallback(object callback);
267     void installStatisticsDidScanDataRecordsCallback(object callback);
268     void installStatisticsDidRunTelemetryCallback(object callback);
269     void setStatisticsLastSeen(DOMString hostName, double seconds);
270     void setStatisticsPrevalentResource(DOMString hostName, boolean value);
271     boolean isStatisticsPrevalentResource(DOMString hostName);
272     boolean isStatisticsRegisteredAsSubFrameUnder(DOMString subFrameHost, DOMString topFrameHost);
273     boolean isStatisticsRegisteredAsRedirectingTo(DOMString hostRedirectedFrom, DOMString hostRedirectedTo);
274     void setStatisticsHasHadUserInteraction(DOMString hostName, boolean value);
275     void setStatisticsHasHadNonRecentUserInteraction(DOMString hostName);
276     boolean isStatisticsHasHadUserInteraction(DOMString hostName);
277     void setStatisticsGrandfathered(DOMString hostName, boolean value);
278     boolean isStatisticsGrandfathered(DOMString hostName);
279     void setStatisticsSubframeUnderTopFrameOrigin(DOMString hostName, DOMString topFrameHostName);
280     void setStatisticsSubresourceUnderTopFrameOrigin(DOMString hostName, DOMString topFrameHostName);
281     void setStatisticsSubresourceUniqueRedirectTo(DOMString hostName, DOMString hostNameRedirectedTo);
282     void setStatisticsTimeToLiveUserInteraction(double seconds);
283     void setStatisticsTimeToLiveCookiePartitionFree(double seconds);
284     void statisticsNotifyObserver();
285     void statisticsProcessStatisticsAndDataRecords();
286     void statisticsUpdateCookiePartitioning();
287     void statisticsSetShouldPartitionCookiesForHost(DOMString hostName, boolean value);
288     void statisticsSubmitTelemetry();
289     void setStatisticsNotifyPagesWhenDataRecordsWereScanned(boolean value);
290     void setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval(boolean value);
291     void setStatisticsNotifyPagesWhenTelemetryWasCaptured(boolean value);
292     void setStatisticsMinimumTimeBetweenDataRecordsRemoval(double seconds);
293     void setStatisticsGrandfatheringTime(double seconds);
294     void setStatisticsMaxStatisticsEntries(unsigned long entries);
295     void setStatisticsPruneEntriesDownTo(unsigned long entries);
296     void statisticsClearInMemoryAndPersistentStore();
297     void statisticsClearInMemoryAndPersistentStoreModifiedSinceHours(unsigned long hours);
298     void statisticsClearThroughWebsiteDataRemoval(object callback);
299     void statisticsResetToConsistentState();
300
301     // Open panel
302     void setOpenPanelFiles(object filesArray);
303
304     void setWebRTCLegacyAPIEnabled(boolean value);
305
306     void terminateNetworkProcess();
307     void terminateServiceWorkerProcess();
308
309     void removeAllSessionCredentials(object callback);
310
311     void getApplicationManifestThen(object callback);
312 };