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