Change WTR::AccessibilityUIElement::descriptionOfValue(id) to return a RetainPtr.
[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     readonly attribute boolean isIOSFamily;
29
30     // The basics.
31     undefined dumpAsText(boolean dumpPixels);
32     undefined dumpChildFramesAsText();
33     undefined waitForPolicyDelegate();
34     undefined waitUntilDone();
35     undefined notifyDone();
36     double preciseTime(); // seconds since the epoch
37     readonly attribute double timeout; // milliseconds
38
39     // Downloads.
40     undefined waitUntilDownloadFinished();
41     undefined setShouldLogDownloadCallbacks(boolean value);
42
43     const unsigned short RENDER_TREE_SHOW_ALL_LAYERS            = 1;
44     const unsigned short RENDER_TREE_SHOW_LAYER_NESTING         = 2;
45     const unsigned short RENDER_TREE_SHOW_COMPOSITED_LAYERS     = 4;
46     const unsigned short RENDER_TREE_SHOW_OVERFLOW              = 8;
47     const unsigned short RENDER_TREE_SHOW_SVG_GEOMETRY          = 16;
48     const unsigned short RENDER_TREE_SHOW_LAYER_FRAGMENTS       = 32;
49     undefined setRenderTreeDumpOptions(unsigned short options);
50
51     // Other dumping.
52     undefined dumpBackForwardList();
53     undefined dumpChildFrameScrollPositions();
54     undefined dumpEditingCallbacks();
55     undefined dumpSelectionRect();
56     undefined dumpStatusCallbacks();
57     undefined dumpTitleChanges();
58     undefined dumpFullScreenCallbacks();
59     undefined dumpFrameLoadCallbacks();
60     undefined dumpProgressFinishedCallback();
61     undefined dumpResourceLoadCallbacks();
62     undefined dumpResourceResponseMIMETypes();
63     undefined dumpWillCacheResponse();
64     undefined dumpApplicationCacheDelegateCallbacks();
65     undefined dumpDatabaseCallbacks();
66     undefined dumpDOMAsWebArchive();
67     undefined dumpPolicyDelegateCallbacks();
68     undefined dumpResourceLoadStatistics();
69     undefined dumpPrivateClickMeasurement();
70
71     undefined clearDOMCaches();
72     undefined clearDOMCache(DOMString origin);
73     boolean hasDOMCache(DOMString origin);
74     unsigned long domCacheSize(DOMString origin);
75     undefined setAllowStorageQuotaIncrease(boolean value);
76
77     // Special options.
78     undefined keepWebHistory();
79     undefined setAcceptsEditing(boolean value);
80     undefined preventPopupWindows();
81     undefined setCustomPolicyDelegate(boolean enabled, boolean permissive);
82     undefined addOriginAccessAllowListEntry(DOMString sourceOrigin, DOMString destinationProtocol, DOMString destinationHost, boolean allowDestinationSubdomains);
83     undefined removeOriginAccessAllowListEntry(DOMString sourceOrigin, DOMString destinationProtocol, DOMString destinationHost, boolean allowDestinationSubdomains);
84     undefined setUserStyleSheetEnabled(boolean value);
85     undefined setUserStyleSheetLocation(DOMString location);
86     undefined setTabKeyCyclesThroughElements(boolean enabled);
87     undefined setSerializeHTTPLoads();
88     undefined dispatchPendingLoadRequests();
89     undefined setCacheModel(long model);
90     undefined setAsynchronousSpellCheckingEnabled(boolean value);
91     undefined setPrinting();
92     undefined setShouldDecideNavigationPolicyAfterDelay(boolean value);
93     undefined setShouldDecideResponsePolicyAfterDelay(boolean value);
94     undefined setNavigationGesturesEnabled(boolean value);
95     undefined setIgnoresViewportScaleLimits(boolean value);
96     undefined setShouldDownloadUndisplayableMIMETypes(boolean value);
97
98     // Special DOM functions.
99     undefined clearBackForwardList();
100     undefined execCommand(DOMString name, DOMString showUI, DOMString value);
101     boolean isCommandEnabled(DOMString name);
102     unsigned long windowCount();
103
104     // Device Orientation Motion.
105     undefined setShouldAllowDeviceOrientationAndMotionAccess(boolean value);
106
107     // Special DOM variables.
108     attribute boolean globalFlag;
109
110     // Repaint testing.
111     undefined testRepaint();
112     undefined repaintSweepHorizontally();
113     undefined display();
114     undefined displayAndTrackRepaints();
115     undefined displayOnLoadFinish();
116
117     // Failed load condition testing
118     undefined forceImmediateCompletion();
119
120     // Printing
121     boolean isPageBoxVisible(long pageIndex);
122
123     undefined dumpAllHTTPRedirectedResponseHeaders();
124
125     [PassContext] undefined setValueForUser(object element, DOMString value);
126
127     // UserContent testing.
128     undefined addUserScript(DOMString source, boolean runAtStart, boolean allFrames);
129     undefined addUserStyleSheet(DOMString source, boolean allFrames);
130
131     // Local storage API
132     undefined clearAllDatabases();
133     undefined setDatabaseQuota(unsigned long long quota);
134     DOMString pathToLocalResource(DOMString url);
135     undefined syncLocalStorage();
136
137     attribute double databaseDefaultQuota;
138     attribute double databaseMaxQuota;
139
140     // Application Cache API
141     undefined clearAllApplicationCaches();
142     undefined setAppCacheMaximumSize(unsigned long long size);
143     long long applicationCacheDiskUsageForOrigin(DOMString origin);
144     undefined clearApplicationCacheForOrigin(DOMString name);
145     undefined disallowIncreaseForApplicationCacheQuota();
146     object originsWithApplicationCache();
147
148     // Text search testing.
149     boolean findString(DOMString target, object optionsArray);
150     undefined findStringMatchesInPage(DOMString target, object optionsArray);
151     undefined replaceFindMatchesAtIndices(object matchIndicesArray, DOMString replacementText, boolean selectionOnly);
152
153     // Evaluating script in a special context.
154     [PassContext] undefined evaluateScriptInIsolatedWorld(unsigned long worldID, DOMString script);
155
156     // For Web Inspector tests
157     undefined showWebInspector();
158     undefined closeWebInspector();
159     undefined evaluateInWebInspector(DOMString script);
160     readonly attribute DOMString inspectorTestStubURL;
161
162     undefined setPOSIXLocale(DOMString locale);
163
164     undefined setTextDirection(DOMString direction);
165
166     undefined setWillSendRequestReturnsNull(boolean flag);
167     undefined setWillSendRequestReturnsNullOnRedirect(boolean flag);
168     undefined setWillSendRequestAddsHTTPBody(DOMString body);
169     
170     undefined setShouldStayOnPageAfterHandlingBeforeUnload(boolean flag);
171
172     undefined setStopProvisionalFrameLoads();
173
174     readonly attribute boolean didReceiveServerRedirectForProvisionalNavigation;
175     undefined clearDidReceiveServerRedirectForProvisionalNavigation();
176
177     // Focus testing.
178     undefined addChromeInputField(object callback);
179     undefined removeChromeInputField(object callback);
180     undefined focusWebView(object callback);
181     undefined setTextInChromeInputField(DOMString text, object callback);
182     undefined getSelectedTextInChromeInputField(object callback);
183     undefined selectChromeInputField(object callback);
184
185     // Window/view state
186     undefined setBackingScaleFactor(double backingScaleFactor, object callback);
187
188     undefined setWindowIsKey(boolean isKey);
189     undefined setViewSize(double width, double height);
190
191     // Cookies testing
192     undefined setAlwaysAcceptCookies(boolean accept);
193     undefined setOnlyAcceptFirstPartyCookies(boolean accept);
194
195     // Page Visibility API
196     undefined setPageVisibility(DOMString state);
197     undefined resetPageVisibility();
198
199     // Control full screen behavior.
200     undefined setHasCustomFullScreenBehavior(boolean value);
201     undefined setEnterFullscreenForElementCallback(object callback);
202     undefined setExitFullscreenForElementCallback(object callback);
203
204     // Web notifications support
205     undefined grantWebNotificationPermission(DOMString origin);
206     undefined denyWebNotificationPermission(DOMString origin);
207     undefined removeAllWebNotificationPermissions();
208     undefined simulateWebNotificationClick(object notification);
209
210     // Geolocation
211     undefined setGeolocationPermission(boolean value);
212     undefined setMockGeolocationPosition(double latitude, double longitude, double accuracy, optional double? altitude, optional double? altitudeAccuracy, optional double? heading, optional double? speed, optional double? floorLevel);
213     undefined setMockGeolocationPositionUnavailableError(DOMString errorMessage);
214     boolean isGeolocationProviderActive();
215
216     // MediaStream
217     undefined setUserMediaPermission(boolean value);
218     undefined resetUserMediaPermission();
219     undefined setUserMediaPersistentPermissionForOrigin(boolean permission, DOMString origin, DOMString parentOrigin);
220     unsigned long userMediaPermissionRequestCountForOrigin(DOMString origin, DOMString parentOrigin);
221     undefined resetUserMediaPermissionRequestCountForOrigin(DOMString origin, DOMString parentOrigin);
222     readonly attribute boolean isDoingMediaCapture;
223
224     // Audio testing.
225     [PassContext] undefined setAudioResult(object data);
226
227     boolean callShouldCloseOnWebView();
228
229     // Work queue.
230     undefined queueBackNavigation(unsigned long howFarBackward);
231     undefined queueForwardNavigation(unsigned long howFarForward);
232     undefined queueLoad(DOMString url, DOMString target, optional boolean shouldOpenExternalURLs);
233     undefined queueLoadHTMLString(DOMString content, optional DOMString baseURL, optional DOMString unreachableURL);
234     undefined queueReload();
235     undefined queueLoadingScript(DOMString script);
236     undefined queueNonLoadingScript(DOMString script);
237
238     // Authentication
239     undefined setRejectsProtectionSpaceAndContinueForAuthenticationChallenges(boolean value);
240     undefined setHandlesAuthenticationChallenges(boolean value);
241     undefined setShouldLogCanAuthenticateAgainstProtectionSpace(boolean value);
242     undefined setAuthenticationUsername(DOMString username);
243     undefined setAuthenticationPassword(DOMString password);
244
245     undefined setAllowsAnySSLCertificate(boolean value);
246
247     undefined setShouldSwapToEphemeralSessionOnNextNavigation(boolean value);
248     undefined setShouldSwapToDefaultSessionOnNextNavigation(boolean value);
249
250     // Secure text input mode (Mac only)
251     readonly attribute boolean secureEventInputIsEnabled;
252     
253     // Override plugin load policy.
254     undefined setBlockAllPlugins(boolean shouldBlock);
255     undefined setPluginSupportedMode(DOMString mode);
256
257     // Hooks to the JSC compiler.
258     object failNextNewCodeBlock();
259     object numberOfDFGCompiles(object function);
260     object neverInlineFunction(object function);
261
262     // Swipe gestures
263     undefined installDidBeginSwipeCallback(object callback);
264     undefined installWillEndSwipeCallback(object callback);
265     undefined installDidEndSwipeCallback(object callback);
266     undefined installDidRemoveSwipeSnapshotCallback(object callback);
267
268     unsigned long imageCountInGeneralPasteboard();
269
270     // UI Process Testing
271     undefined runUIScript(DOMString script, object callback);
272     undefined runUIScriptImmediately(DOMString script, object callback);
273
274     undefined clearTestRunnerCallbacks();
275
276     undefined accummulateLogsForChannel(DOMString channel);
277
278     // Contextual menu actions
279     undefined setAllowedMenuActions(object actions);
280     undefined installCustomMenuAction(DOMString name, boolean dismissesAutomatically, object callback);
281
282     // Gamepad
283     undefined setMockGamepadDetails(unsigned long index, DOMString id, DOMString mapping, unsigned long axisCount, unsigned long buttonCount);
284     undefined setMockGamepadAxisValue(unsigned long index, unsigned long axisIndex, double value);
285     undefined setMockGamepadButtonValue(unsigned long index, unsigned long buttonIndex, double value);
286     undefined connectMockGamepad(unsigned long index);
287     undefined disconnectMockGamepad(unsigned long index);
288
289     // Resource Load Statistics
290     undefined clearStatisticsDataForDomain(DOMString domain);
291     boolean doesStatisticsDomainIDExistInDatabase(unsigned long domainID);
292     undefined setStatisticsEnabled(boolean value);
293     boolean isStatisticsEphemeral();
294     undefined installStatisticsDidModifyDataRecordsCallback(object callback);
295     undefined installStatisticsDidScanDataRecordsCallback(object callback);
296     undefined setStatisticsDebugMode(boolean value, object completionHandler);
297     undefined setStatisticsPrevalentResourceForDebugMode(DOMString hostName, object completionHandler);
298     undefined setStatisticsLastSeen(DOMString hostName, double seconds, object completionHandler);
299     undefined setStatisticsMergeStatistic(DOMString hostName, DOMString topFrameDomain1, DOMString topFrameDomain2, double lastSeen, boolean hadUserInteraction, double mostRecentUserInteraction, boolean isGrandfathered, boolean isPrevalent, boolean isVeryPrevalent, unsigned long dataRecordsRemoved, object completionHandler);
300     undefined setStatisticsExpiredStatistic(DOMString hostName, unsigned long numberOfOperatingDaysPassed, boolean hadUserInteraction, boolean isScheduledForAllButCookieDataRemoval, boolean isPrevalent, object completionHandler);
301     undefined setStatisticsPrevalentResource(DOMString hostName, boolean value, object completionHandler);
302     undefined setStatisticsVeryPrevalentResource(DOMString hostName, boolean value, object completionHandler);
303     boolean isStatisticsPrevalentResource(DOMString hostName);
304     boolean isStatisticsVeryPrevalentResource(DOMString hostName);
305     boolean isStatisticsRegisteredAsSubresourceUnder(DOMString subresourceHost, DOMString topFrameHost);
306     boolean isStatisticsRegisteredAsSubFrameUnder(DOMString subFrameHost, DOMString topFrameHost);
307     boolean isStatisticsRegisteredAsRedirectingTo(DOMString hostRedirectedFrom, DOMString hostRedirectedTo);
308     undefined setStatisticsHasHadUserInteraction(DOMString hostName, boolean value, object completionHandler);
309     boolean isStatisticsHasHadUserInteraction(DOMString hostName);
310     boolean isStatisticsOnlyInDatabaseOnce(DOMString subHost, DOMString topHost);
311     undefined setStatisticsGrandfathered(DOMString hostName, boolean value);
312     boolean isStatisticsGrandfathered(DOMString hostName);
313     undefined setStatisticsSubframeUnderTopFrameOrigin(DOMString hostName, DOMString topFrameHostName);
314     undefined setStatisticsSubresourceUnderTopFrameOrigin(DOMString hostName, DOMString topFrameHostName);
315     undefined setStatisticsSubresourceUniqueRedirectTo(DOMString hostName, DOMString hostNameRedirectedTo);
316     undefined setStatisticsSubresourceUniqueRedirectFrom(DOMString hostName, DOMString hostNameRedirectedTo);
317     undefined setStatisticsTopFrameUniqueRedirectTo(DOMString hostName, DOMString hostNameRedirectedTo);
318     undefined setStatisticsTopFrameUniqueRedirectFrom(DOMString hostName, DOMString hostNameRedirectedTo);
319     undefined setStatisticsCrossSiteLoadWithLinkDecoration(DOMString fromHost, DOMString toHost);
320     undefined setStatisticsTimeToLiveUserInteraction(double seconds);
321     boolean statisticsNotifyObserver();
322     undefined statisticsProcessStatisticsAndDataRecords();
323     undefined statisticsUpdateCookieBlocking(object completionHandler);
324     undefined setStatisticsIsRunningTest(boolean value);
325     undefined setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval(boolean value);
326     undefined setStatisticsMinimumTimeBetweenDataRecordsRemoval(double seconds);
327     undefined setStatisticsGrandfatheringTime(double seconds);
328     undefined setStatisticsMaxStatisticsEntries(unsigned long entries);
329     undefined setStatisticsPruneEntriesDownTo(unsigned long entries);
330     undefined statisticsClearInMemoryAndPersistentStore(object callback);
331     undefined statisticsClearInMemoryAndPersistentStoreModifiedSinceHours(unsigned long hours, object callback);
332     undefined statisticsClearThroughWebsiteDataRemoval(object callback);
333     undefined statisticsDeleteCookiesForHost(DOMString hostName, boolean includeHttpOnlyCookies);
334     boolean isStatisticsHasLocalStorage(DOMString hostName);
335     undefined setStatisticsCacheMaxAgeCap(double seconds);
336     undefined statisticsResetToConsistentState(object completionHandler);
337     boolean hasStatisticsIsolatedSession(DOMString hostName);
338     undefined setStatisticsShouldDowngradeReferrer(boolean value, object callback);
339     undefined setStatisticsShouldBlockThirdPartyCookies(boolean value, object callback, optional boolean onlyOnSitesWithoutUserInteraction);
340     undefined setStatisticsFirstPartyWebsiteDataRemovalMode(boolean value, object callback);
341     undefined statisticsSetToSameSiteStrictCookies(DOMString hostName, object callback);
342     undefined statisticsSetFirstPartyHostCNAMEDomain(DOMString firstPartyURLString, DOMString cnameURLString, object callback);
343     undefined statisticsSetThirdPartyCNAMEDomain(DOMString cnameURLString, object callback);
344     undefined loadedSubresourceDomains(object callback);
345
346     // Injected bundle form client.
347     undefined installTextDidChangeInTextFieldCallback(object callback);
348     undefined installTextFieldDidBeginEditingCallback(object callback);
349     undefined installTextFieldDidEndEditingCallback(object callback);
350
351     // Storage Access API
352     undefined getAllStorageAccessEntries(object callback);
353
354     // Open panel
355     undefined setOpenPanelFiles(object filesArray);
356     undefined setOpenPanelFilesMediaIcon(object mediaIcon);
357
358     // Modal alerts
359     undefined setShouldDismissJavaScriptAlertsAsynchronously(boolean value);
360     undefined abortModal();
361
362     undefined setCustomUserAgent(DOMString userAgent);
363
364     undefined terminateGPUProcess();
365     undefined terminateNetworkProcess();
366     undefined terminateServiceWorkers();
367     undefined setUseSeparateServiceWorkerProcess(boolean value);
368
369     readonly attribute unsigned long serverTrustEvaluationCallbackCallsCount;
370
371     readonly attribute boolean didCancelClientRedirect;
372
373     undefined removeAllSessionCredentials(object callback);
374
375     undefined getApplicationManifestThen(object callback);
376
377     undefined installFakeHelvetica(DOMString configuration);
378
379     undefined addMockCameraDevice(DOMString persistentId, DOMString label);
380     undefined addMockMicrophoneDevice(DOMString persistentId, DOMString label);
381     undefined addMockScreenDevice(DOMString persistentId, DOMString label);
382     undefined clearMockMediaDevices();
383     undefined removeMockMediaDevice(DOMString persistentId);
384     undefined resetMockMediaDevices();
385     undefined setMockCameraOrientation(unsigned long orientation);
386     boolean isMockRealtimeMediaSourceCenterEnabled();
387     undefined setMockCameraIsInterrupted(boolean isInterrupted);
388
389     boolean hasAppBoundSession();
390     undefined clearAppBoundSession();
391     undefined setAppBoundDomains(object originsArray, object callback);
392     boolean didLoadAppInitiatedRequest();
393     boolean didLoadNonAppInitiatedRequest();
394
395     undefined injectUserScript(DOMString string);
396     readonly attribute unsigned long userScriptInjectedCount;
397
398     undefined sendDisplayConfigurationChangedMessageForTesting();
399
400     undefined setServiceWorkerFetchTimeout(double seconds);
401
402     // WebAuthn
403     undefined addTestKeyToKeychain(DOMString privateKeyBase64, DOMString attrLabel, DOMString applicationTagBase64);
404     undefined cleanUpKeychain(DOMString attrLabel, optional DOMString applicationLabelBase64);
405     boolean keyExistsInKeychain(DOMString attrLabel, DOMString applicationLabelBase64);
406
407     // Private Click Measurement
408     undefined clearPrivateClickMeasurement();
409     undefined clearPrivateClickMeasurementsThroughWebsiteDataRemoval();
410     undefined setPrivateClickMeasurementOverrideTimerForTesting(boolean value);
411     undefined markAttributedPrivateClickMeasurementsAsExpiredForTesting();
412     undefined setPrivateClickMeasurementEphemeralMeasurementForTesting(boolean value);
413     undefined simulateResourceLoadStatisticsSessionRestart();
414     undefined setPrivateClickMeasurementTokenPublicKeyURLForTesting(DOMString url);
415     undefined setPrivateClickMeasurementTokenSignatureURLForTesting(DOMString url);
416     undefined setPrivateClickMeasurementAttributionReportURLsForTesting(DOMString sourceURLString, DOMString destinationURLString);
417     undefined markPrivateClickMeasurementsAsExpiredForTesting();
418     undefined setPrivateClickMeasurementFraudPreventionValuesForTesting(DOMString unlinkableToken, DOMString secretToken, DOMString signature, DOMString keyID);
419     undefined setPrivateClickMeasurementAppBundleIDForTesting(DOMString appBundleID);
420
421     // SpeechRecognition
422     undefined setIsSpeechRecognitionPermissionGranted(boolean value);
423
424     // MediaKeySystem
425     undefined setIsMediaKeySystemPermissionGranted(boolean value);
426
427     undefined takeViewPortSnapshot(object callback);
428 };