Add a storage limit for IndexedDB
[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(); // seconds since the epoch
36     readonly attribute double timeout; // milliseconds
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     void dumpResourceLoadStatistics();
60
61     void clearDOMCaches();
62     void clearDOMCache(DOMString origin);
63     boolean hasDOMCache(DOMString origin);
64     unsigned long domCacheSize(DOMString origin);
65
66     // Special options.
67     void keepWebHistory();
68     void setAcceptsEditing(boolean value);
69     void setCanOpenWindows();
70     void setCloseRemainingWindowsWhenComplete(boolean value);
71     void setXSSAuditorEnabled(boolean value);
72     void setAllowUniversalAccessFromFileURLs(boolean value);
73     void setAllowFileAccessFromFileURLs(boolean value);
74     void setNeedsStorageAccessFromFileURLsQuirk(boolean value);
75     void setPluginsEnabled(boolean value);
76     void setJavaScriptCanAccessClipboard(boolean value);
77     void setPrivateBrowsingEnabled(boolean value);
78     void setUseDashboardCompatibilityMode(boolean value);
79     void setPopupBlockingEnabled(boolean value);
80     void setAuthorAndUserStylesEnabled(boolean value);
81     void setCustomPolicyDelegate(boolean enabled, boolean permissive);
82     void addOriginAccessWhitelistEntry(DOMString sourceOrigin, DOMString destinationProtocol, DOMString destinationHost, boolean allowDestinationSubdomains);
83     void removeOriginAccessWhitelistEntry(DOMString sourceOrigin, DOMString destinationProtocol, DOMString destinationHost, boolean allowDestinationSubdomains);
84     void setUserStyleSheetEnabled(boolean value);
85     void setUserStyleSheetLocation(DOMString location);
86     void setSpatialNavigationEnabled(boolean value);
87     void setTabKeyCyclesThroughElements(boolean enabled);
88     void setSerializeHTTPLoads();
89     void dispatchPendingLoadRequests();
90     void setCacheModel(long model);
91     void setAsynchronousSpellCheckingEnabled(boolean value);
92     void setPrinting();
93     void setShouldDecideNavigationPolicyAfterDelay(boolean value);
94     void setShouldDecideResponsePolicyAfterDelay(boolean value);
95     void setNavigationGesturesEnabled(boolean value);
96     void setIgnoresViewportScaleLimits(boolean value);
97     void setShouldDownloadUndisplayableMIMETypes(boolean value);
98
99     // Special DOM functions.
100     void clearBackForwardList();
101     void execCommand(DOMString name, DOMString showUI, DOMString value);
102     boolean isCommandEnabled(DOMString name);
103     unsigned long windowCount();
104
105     // Special DOM variables.
106     attribute boolean globalFlag;
107
108     // Repaint testing.
109     void testRepaint();
110     void repaintSweepHorizontally();
111     void display();
112     void displayAndTrackRepaints();
113
114     // Failed load condition testing
115     void forceImmediateCompletion();
116
117     // Printing
118     boolean isPageBoxVisible(long pageIndex);
119
120     void dumpAllHTTPRedirectedResponseHeaders();
121
122     [PassContext] void setValueForUser(object element, DOMString value);
123
124     // UserContent testing.
125     void addUserScript(DOMString source, boolean runAtStart, boolean allFrames);
126     void addUserStyleSheet(DOMString source, boolean allFrames);
127
128     // Local storage API
129     void clearAllDatabases();
130     void setDatabaseQuota(unsigned long long quota);
131     DOMString pathToLocalResource(DOMString url);
132
133     attribute double databaseDefaultQuota;
134     attribute double databaseMaxQuota;
135
136     // IndexedDB API
137     void setIDBPerOriginQuota(unsigned long long quota);
138
139     // Application Cache API
140     void clearAllApplicationCaches();
141     void setAppCacheMaximumSize(unsigned long long size);
142     long long applicationCacheDiskUsageForOrigin(DOMString origin);
143     void clearApplicationCacheForOrigin(DOMString name);
144     void disallowIncreaseForApplicationCacheQuota();
145     object originsWithApplicationCache();
146
147     // Text search testing.
148     boolean findString(DOMString target, object optionsArray);
149
150     // Evaluating script in a special context.
151     [PassContext] void evaluateScriptInIsolatedWorld(unsigned long worldID, DOMString script);
152
153     // For Web Inspector tests
154     void showWebInspector();
155     void closeWebInspector();
156     void evaluateInWebInspector(DOMString script);
157     readonly attribute DOMString inspectorTestStubURL;
158
159     void setPOSIXLocale(DOMString locale);
160
161     void setTextDirection(DOMString direction);
162
163     void setWillSendRequestReturnsNull(boolean flag);
164     void setWillSendRequestReturnsNullOnRedirect(boolean flag);
165     void setWillSendRequestAddsHTTPBody(DOMString body);
166     
167     void setShouldStayOnPageAfterHandlingBeforeUnload(boolean flag);
168
169     void setDefersLoading(boolean flag);
170     void setStopProvisionalFrameLoads();
171
172     readonly attribute boolean didReceiveServerRedirectForProvisionalNavigation;
173     void clearDidReceiveServerRedirectForProvisionalNavigation();
174
175     // Focus testing.
176     void addChromeInputField(object callback);
177     void removeChromeInputField(object callback);
178     void focusWebView(object callback);
179
180     // Window/view state
181     void setBackingScaleFactor(double backingScaleFactor, object callback);
182
183     void setWindowIsKey(boolean isKey);
184     void setViewSize(double width, double height);
185
186     // Cookies testing
187     void setAlwaysAcceptCookies(boolean accept);
188
189     void overridePreference(DOMString preference, DOMString value);
190
191     // Page Visibility API
192     void setPageVisibility(DOMString state);
193     void resetPageVisibility();
194
195     // Control full screen behavior.
196     void setHasCustomFullScreenBehavior(boolean value);
197
198     // Web notifications support
199     void grantWebNotificationPermission(DOMString origin);
200     void denyWebNotificationPermission(DOMString origin);
201     void removeAllWebNotificationPermissions();
202     void simulateWebNotificationClick(object notification);
203
204     // Geolocation
205     void setGeolocationPermission(boolean value);
206     void setMockGeolocationPosition(double latitude, double longitude, double accuracy, optional object altitude, optional object altitudeAccuracy, optional object heading, optional object speed, optional object floorLevel);
207     void setMockGeolocationPositionUnavailableError(DOMString errorMessage);
208     boolean isGeolocationProviderActive();
209
210     // MediaStream
211     void setUserMediaPermission(boolean value);
212     void resetUserMediaPermission();
213     void setUserMediaPersistentPermissionForOrigin(boolean permission, DOMString origin, DOMString parentOrigin);
214     unsigned long userMediaPermissionRequestCountForOrigin(DOMString origin, DOMString parentOrigin);
215     void resetUserMediaPermissionRequestCountForOrigin(DOMString origin, DOMString parentOrigin);
216
217     // Audio testing.
218     [PassContext] void setAudioResult(object data);
219
220     boolean callShouldCloseOnWebView();
221
222     // Work queue.
223     void queueBackNavigation(unsigned long howFarBackward);
224     void queueForwardNavigation(unsigned long howFarForward);
225     void queueLoad(DOMString url, DOMString target, optional boolean shouldOpenExternalURLs);
226     void queueLoadHTMLString(DOMString content, optional DOMString baseURL, optional DOMString unreachableURL);
227     void queueReload();
228     void queueLoadingScript(DOMString script);
229     void queueNonLoadingScript(DOMString script);
230
231     // Authentication
232     void setRejectsProtectionSpaceAndContinueForAuthenticationChallenges(boolean value);
233     void setHandlesAuthenticationChallenges(boolean value);
234     void setShouldLogCanAuthenticateAgainstProtectionSpace(boolean value);
235     void setAuthenticationUsername(DOMString username);
236     void setAuthenticationPassword(DOMString password);
237
238     void setAllowsAnySSLCertificate(boolean value);
239
240     // Secure text input mode (Mac only)
241     readonly attribute boolean secureEventInputIsEnabled;
242     
243     // Override plugin load policy.
244     void setBlockAllPlugins(boolean shouldBlock);
245     void setPluginSupportedMode(DOMString mode);
246
247     // Hooks to the JSC compiler.
248     object failNextNewCodeBlock();
249     object numberOfDFGCompiles(object function);
250     object neverInlineFunction(object function);
251
252     // Swipe gestures
253     void installDidBeginSwipeCallback(object callback);
254     void installWillEndSwipeCallback(object callback);
255     void installDidEndSwipeCallback(object callback);
256     void installDidRemoveSwipeSnapshotCallback(object callback);
257
258     unsigned long imageCountInGeneralPasteboard();
259
260     // UI Process Testing
261     void runUIScript(DOMString script, object callback);
262
263     void clearTestRunnerCallbacks();
264
265     void accummulateLogsForChannel(DOMString channel);
266
267     // Gamepad
268     void setMockGamepadDetails(unsigned long index, DOMString id, unsigned long axisCount, unsigned long buttonCount);
269     void setMockGamepadAxisValue(unsigned long index, unsigned long axisIndex, double value);
270     void setMockGamepadButtonValue(unsigned long index, unsigned long buttonIndex, double value);
271     void connectMockGamepad(unsigned long index);
272     void disconnectMockGamepad(unsigned long index);
273
274     // Resource Load Statistics
275     void installStatisticsDidModifyDataRecordsCallback(object callback);
276     void installStatisticsDidScanDataRecordsCallback(object callback);
277     void installStatisticsDidRunTelemetryCallback(object callback);
278     void setStatisticsDebugMode(boolean value, object completionHandler);
279     void setStatisticsPrevalentResourceForDebugMode(DOMString hostName, object completionHandler);
280     void setStatisticsLastSeen(DOMString hostName, double seconds, object completionHandler);
281     void setStatisticsPrevalentResource(DOMString hostName, boolean value, object completionHandler);
282     void setStatisticsVeryPrevalentResource(DOMString hostName, boolean value, object completionHandler);
283     boolean isStatisticsPrevalentResource(DOMString hostName);
284     boolean isStatisticsVeryPrevalentResource(DOMString hostName);
285     boolean isStatisticsRegisteredAsSubresourceUnder(DOMString subresourceHost, DOMString topFrameHost);
286     boolean isStatisticsRegisteredAsSubFrameUnder(DOMString subFrameHost, DOMString topFrameHost);
287     boolean isStatisticsRegisteredAsRedirectingTo(DOMString hostRedirectedFrom, DOMString hostRedirectedTo);
288     void setStatisticsHasHadUserInteraction(DOMString hostName, boolean value, object completionHandler);
289     boolean isStatisticsHasHadUserInteraction(DOMString hostName);
290     void setStatisticsGrandfathered(DOMString hostName, boolean value);
291     boolean isStatisticsGrandfathered(DOMString hostName);
292     void setStatisticsSubframeUnderTopFrameOrigin(DOMString hostName, DOMString topFrameHostName);
293     void setStatisticsSubresourceUnderTopFrameOrigin(DOMString hostName, DOMString topFrameHostName);
294     void setStatisticsSubresourceUniqueRedirectTo(DOMString hostName, DOMString hostNameRedirectedTo);
295     void setStatisticsSubresourceUniqueRedirectFrom(DOMString hostName, DOMString hostNameRedirectedTo);
296     void setStatisticsTopFrameUniqueRedirectTo(DOMString hostName, DOMString hostNameRedirectedTo);
297     void setStatisticsTopFrameUniqueRedirectFrom(DOMString hostName, DOMString hostNameRedirectedTo);
298     void setStatisticsTimeToLiveUserInteraction(double seconds);
299     void statisticsNotifyObserver();
300     void statisticsProcessStatisticsAndDataRecords();
301     void statisticsUpdateCookieBlocking(object completionHandler);
302     void statisticsSubmitTelemetry();
303     void setStatisticsNotifyPagesWhenDataRecordsWereScanned(boolean value);
304     void setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval(boolean value);
305     void setStatisticsNotifyPagesWhenTelemetryWasCaptured(boolean value);
306     void setStatisticsMinimumTimeBetweenDataRecordsRemoval(double seconds);
307     void setStatisticsGrandfatheringTime(double seconds);
308     void setStatisticsMaxStatisticsEntries(unsigned long entries);
309     void setStatisticsPruneEntriesDownTo(unsigned long entries);
310     void statisticsClearInMemoryAndPersistentStore(object callback);
311     void statisticsClearInMemoryAndPersistentStoreModifiedSinceHours(unsigned long hours, object callback);
312     void statisticsClearThroughWebsiteDataRemoval(object callback);
313     void setStatisticsCacheMaxAgeCap(double seconds);
314     void statisticsResetToConsistentState(object completionHandler);
315
316     // Injected bundle form client.
317     void installTextDidChangeInTextFieldCallback(object callback);
318     void installTextFieldDidBeginEditingCallback(object callback);
319     void installTextFieldDidEndEditingCallback(object callback);
320
321     // Storage Access API
322     void setStorageAccessAPIEnabled(boolean enabled);
323     void getAllStorageAccessEntries(object callback);
324
325     // Open panel
326     void setOpenPanelFiles(object filesArray);
327
328     void setMDNSICECandidatesEnabled(boolean value);
329     void setWebRTCUnifiedPlanEnabled(boolean value);
330     void setCustomUserAgent(DOMString userAgent);
331
332     void setWebAPIStatisticsEnabled(boolean value);
333
334     void terminateNetworkProcess();
335     void terminateServiceWorkerProcess();
336
337     readonly attribute boolean didCancelClientRedirect;
338
339     void removeAllSessionCredentials(object callback);
340
341     void getApplicationManifestThen(object callback);
342
343     void installFakeHelvetica(DOMString configuration);
344
345     void addMockCameraDevice(DOMString persistentId, DOMString label);
346     void addMockMicrophoneDevice(DOMString persistentId, DOMString label);
347     void addMockScreenDevice(DOMString persistentId, DOMString label);
348     void clearMockMediaDevices();
349     void removeMockMediaDevice(DOMString persistentId);
350     void resetMockMediaDevices();
351
352     void injectUserScript(DOMString string);
353     readonly attribute unsigned long userScriptInjectedCount;
354
355     void sendDisplayConfigurationChangedMessageForTesting();
356
357     // WebAuthN
358     void setWebAuthenticationMockConfiguration(object configuration);
359     void addTestKeyToKeychain(DOMString privateKeyBase64, DOMString attrLabel, DOMString applicationTagBase64);
360     void cleanUpKeychain(DOMString attrLabel);
361     boolean keyExistsInKeychain(DOMString attrLabel, DOMString applicationTagBase64);
362 };