blob: 7a11e700946d00bdf5809dabde939bfebfe070e7 [file] [log] [blame]
/*
* Copyright (C) 2012 Google Inc. All rights reserved.
* Copyright (C) 2013-2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
enum PageOverlayType {
"view",
"document"
};
// These map to ResourceRequestCachePolicy.
enum CachePolicy {
"UseProtocolCachePolicy",
"ReloadIgnoringCacheData",
"ReturnCacheDataElseLoad",
"ReturnCacheDataDontLoad"
};
// FIXME: Strings in an enum should not have the name of the enum as a prefix.
enum ResourceLoadPriority {
"ResourceLoadPriorityVeryLow",
"ResourceLoadPriorityLow",
"ResourceLoadPriorityMedium",
"ResourceLoadPriorityHigh",
"ResourceLoadPriorityVeryHigh"
};
[Conditional=MEDIA_SESSION] enum MediaSessionInterruptingCategory {
"content",
"transient",
"transient-solo"
};
[Conditional=MEDIA_SESSION] enum MediaControlEvent {
"play-pause",
"next-track",
"previous-track"
};
// FIXME: Strings in an enum should not have the name of the enum as a prefix.
enum AutoFillButtonType {
"AutoFillButtonTypeNone",
"AutoFillButtonTypeContacts",
"AutoFillButtonTypeCredentials"
};
enum UserInterfaceLayoutDirection {
"LTR",
"RTL"
};
[
ExportMacro=WEBCORE_TESTSUPPORT_EXPORT,
NoInterfaceObject,
] interface Internals {
DOMString address(Node node);
boolean nodeNeedsStyleRecalc(Node node);
DOMString styleChangeType(Node node);
DOMString description(any value);
// Animated image pausing testing.
boolean hasPausedImageAnimations(Element element);
[RaisesException] DOMString elementRenderTreeAsText(Element element);
boolean isPreloaded(DOMString url);
boolean isLoadingFromMemoryCache(DOMString url);
DOMString xhrResponseSource(XMLHttpRequest xhr);
boolean isSharingStyleSheetContents(HTMLLinkElement a, HTMLLinkElement b);
boolean isStyleSheetLoadingSubresources(HTMLLinkElement link);
void clearMemoryCache();
void pruneMemoryCacheToSize(long size);
long memoryCacheSize();
void setOverrideCachePolicy(CachePolicy policy);
void setOverrideResourceLoadPriority(ResourceLoadPriority priority);
void setStrictRawResourceValidationPolicyDisabled(boolean disabled);
void clearPageCache();
unsigned long pageCacheSize();
CSSStyleDeclaration computedStyleIncludingVisitedInfo(Element element);
[RaisesException] Node ensureShadowRoot(Element host);
Node ensureUserAgentShadowRoot(Element host);
[RaisesException] Node createShadowRoot(Element host);
Node shadowRoot(Element host);
[RaisesException] DOMString shadowRootType(Node root);
DOMString shadowPseudoId(Element element);
void setShadowPseudoId(Element element, DOMString id);
Node treeScopeRootNode(Node node);
Node parentTreeScope(Node node);
// Spatial Navigation testing
[RaisesException] unsigned long lastSpatialNavigationCandidateCount();
// CSS Animation testing.
unsigned long numberOfActiveAnimations();
[RaisesException] void suspendAnimations();
[RaisesException] void resumeAnimations();
[RaisesException] boolean animationsAreSuspended();
[RaisesException] boolean pauseAnimationAtTimeOnElement(DOMString animationName, unrestricted double pauseTime, Element element);
[RaisesException] boolean pauseAnimationAtTimeOnPseudoElement(DOMString animationName, unrestricted double pauseTime, Element element, DOMString pseudoId);
// CSS Transition testing.
[RaisesException] boolean pauseTransitionAtTimeOnElement(DOMString propertyName, unrestricted double pauseTime, Element element);
[RaisesException] boolean pauseTransitionAtTimeOnPseudoElement(DOMString property, unrestricted double pauseTime, Element element, DOMString pseudoId);
DOMString visiblePlaceholder(Element element);
void selectColorInColorChooser(HTMLInputElement element, DOMString colorValue);
[RaisesException] sequence<DOMString> formControlStateOfPreviousHistoryItem();
[RaisesException] void setFormControlStateOfPreviousHistoryItem(sequence<DOMString> values);
[RaisesException] ClientRect absoluteCaretBounds();
ClientRect boundingBox(Element element);
[RaisesException] ClientRectList inspectorHighlightRects();
[RaisesException] DOMString inspectorHighlightObject();
[RaisesException] unsigned long markerCountForNode(Node node, DOMString markerType);
[RaisesException] Range markerRangeForNode(Node node, DOMString markerType, unsigned long index);
[RaisesException] DOMString markerDescriptionForNode(Node node, DOMString markerType, unsigned long index);
[RaisesException] DOMString dumpMarkerRects(DOMString markerType);
void addTextMatchMarker(Range range, boolean isActive);
[RaisesException] void setMarkedTextMatchesAreHighlighted(boolean flag);
void invalidateFontCache();
[RaisesException] void setScrollViewPosition(long x, long y);
[RaisesException] void setViewBaseBackgroundColor(DOMString colorValue);
[RaisesException] void setPagination(DOMString mode, long gap, optional long pageLength = 0);
[RaisesException] void setPaginationLineGridEnabled(boolean enabled);
[RaisesException] DOMString configurationForViewport(unrestricted float devicePixelRatio,
long deviceWidth,
long deviceHeight,
long availableWidth,
long availableHeight);
[RaisesException] boolean wasLastChangeUserEdit(Element textField);
boolean elementShouldAutoComplete(HTMLInputElement inputElement);
void setEditingValue(HTMLInputElement inputElement, DOMString value);
void setAutofilled(HTMLInputElement inputElement, boolean enabled);
void setShowAutoFillButton(HTMLInputElement inputElement, AutoFillButtonType autoFillButtonType);
[RaisesException] unsigned long countMatchesForText(DOMString text, unsigned long findOptions, DOMString markMatches);
[RaisesException] unsigned long countFindMatches(DOMString text, unsigned long findOptions);
[RaisesException] DOMString autofillFieldName(Element formControlElement);
[RaisesException] void paintControlTints();
[RaisesException] void scrollElementToRect(Element element, long x, long y, long w, long h);
Range rangeFromLocationAndLength(Element scope, long rangeLocation, long rangeLength);
unsigned long locationFromRange(Element scope, Range range);
unsigned long lengthFromRange(Element scope, Range range);
DOMString rangeAsText(Range range);
Range subrange(Range range, long rangeLocation, long rangeLength);
[RaisesException] Range rangeForDictionaryLookupAtLocation(long x, long y);
[RaisesException] void setDelegatesScrolling(boolean enabled);
[RaisesException] long lastSpellCheckRequestSequence();
[RaisesException] long lastSpellCheckProcessedSequence();
sequence<DOMString> userPreferredLanguages();
void setUserPreferredLanguages(sequence<DOMString> languages);
sequence<DOMString> userPreferredAudioCharacteristics();
void setUserPreferredAudioCharacteristic(DOMString characteristic);
[RaisesException] unsigned long wheelEventHandlerCount();
[RaisesException] unsigned long touchEventHandlerCount();
[RaisesException] NodeList nodesFromRect(Document document, long x, long y,
unsigned long topPadding, unsigned long rightPadding, unsigned long bottomPadding, unsigned long leftPadding,
boolean ignoreClipping, boolean allowShadowContent, boolean allowChildFrameContent);
// Calling parserMetaData() with no arguments gets the metadata for the script of the current scope.
DOMString parserMetaData(optional any func);
void updateEditorUINowIfScheduled();
[RaisesException] boolean hasSpellingMarker(long from, long length);
[RaisesException] boolean hasGrammarMarker(long from, long length);
[RaisesException] boolean hasAutocorrectedMarker(long from, long length);
void setContinuousSpellCheckingEnabled(boolean enabled);
void setAutomaticQuoteSubstitutionEnabled(boolean enabled);
void setAutomaticLinkDetectionEnabled(boolean enabled);
void setAutomaticDashSubstitutionEnabled(boolean enabled);
void setAutomaticTextReplacementEnabled(boolean enabled);
void setAutomaticSpellingCorrectionEnabled(boolean enabled);
[RaisesException] void handleAcceptedCandidate(DOMString candidate, unsigned long location, unsigned long length);
[RaisesException] boolean isOverwriteModeEnabled();
[RaisesException] void toggleOverwriteModeEnabled();
[RaisesException] unsigned long numberOfScrollableAreas();
[RaisesException] boolean isPageBoxVisible(long pageNumber);
unsigned long imageFrameIndex(HTMLImageElement element);
readonly attribute InternalSettings settings;
readonly attribute unsigned long workerThreadCount;
// Flags for layerTreeAsText.
const unsigned short LAYER_TREE_INCLUDES_VISIBLE_RECTS = 1;
const unsigned short LAYER_TREE_INCLUDES_TILE_CACHES = 2;
const unsigned short LAYER_TREE_INCLUDES_REPAINT_RECTS = 4;
const unsigned short LAYER_TREE_INCLUDES_PAINTING_PHASES = 8;
const unsigned short LAYER_TREE_INCLUDES_CONTENT_LAYERS = 16;
[RaisesException] DOMString layerTreeAsText(Document document, optional unsigned short flags = 0);
[RaisesException] DOMString scrollingStateTreeAsText();
[RaisesException] DOMString mainThreadScrollingReasons(); // FIXME: rename to synchronousScrollingReasons().
[RaisesException] ClientRectList nonFastScrollableRects();
[RaisesException] DOMString repaintRectsAsText();
// These throw if the element does not have a compositing layer.
[RaisesException] void setElementUsesDisplayListDrawing(Element element, boolean usesDisplayListDrawing);
[RaisesException] void setElementTracksDisplayListReplay(Element element, boolean trackReplay);
// Flags for displayListForElement.
const unsigned short DISPLAY_LIST_INCLUDES_PLATFORM_OPERATIONS = 1;
// Returns the recorded display list.
[RaisesException] DOMString displayListForElement(Element element, optional unsigned short flags = 0);
// Returns the display list that was actually painted.
[RaisesException] DOMString replayDisplayListForElement(Element element, optional unsigned short flags = 0);
[RaisesException] void garbageCollectDocumentResources();
[RaisesException] void insertAuthorCSS(DOMString css);
[RaisesException] void insertUserCSS(DOMString css);
readonly attribute boolean isUnderMemoryPressure;
void beginSimulatedMemoryPressure();
void endSimulatedMemoryPressure();
#if defined(ENABLE_BATTERY_STATUS) && ENABLE_BATTERY_STATUS
[RaisesException] void setBatteryStatus(DOMString eventType, boolean charging, unrestricted double chargingTime, unrestricted double dischargingTime, unrestricted double level);
#endif
#if defined(ENABLE_PROXIMITY_EVENTS) && ENABLE_PROXIMITY_EVENTS
[RaisesException] void setDeviceProximity(DOMString eventType, unrestricted double value, unrestricted double min, unrestricted double max);
#endif
unsigned long numberOfLiveNodes();
unsigned long numberOfLiveDocuments();
DOMWindow openDummyInspectorFrontend(DOMString url);
void closeDummyInspectorFrontend();
[RaisesException] void setInspectorIsUnderTest(boolean isUnderTest);
DOMString counterValue(Element element);
long pageNumber(Element element, optional unrestricted float pageWidth = 800, optional unrestricted float pageHeight = 600);
sequence<DOMString> shortcutIconURLs();
long numberOfPages(optional unrestricted double pageWidthInPixels = 800, optional unrestricted double pageHeightInPixels = 600);
[RaisesException] DOMString pageProperty(DOMString propertyName, long pageNumber);
[RaisesException] DOMString pageSizeAndMarginsInPixels(long pageIndex, long width, long height, long marginTop, long marginRight, long marginBottom, long marginLeft);
[RaisesException] void setPageScaleFactor(unrestricted float scaleFactor, long x, long y);
[RaisesException] void setPageZoomFactor(unrestricted float zoomFactor);
[RaisesException] void setTextZoomFactor(unrestricted float zoomFactor);
[RaisesException] void setUseFixedLayout(boolean useFixedLayout);
[RaisesException] void setFixedLayoutSize(long width, long height);
[RaisesException] void setViewExposedRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
void setHeaderHeight(unrestricted float height);
void setFooterHeight(unrestricted float height);
void setTopContentInset(unrestricted float contentInset);
#if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
void webkitWillEnterFullScreenForElement(Element element);
void webkitDidEnterFullScreenForElement(Element element);
void webkitWillExitFullScreenForElement(Element element);
void webkitDidExitFullScreenForElement(Element element);
#endif
void setApplicationCacheOriginQuota(unsigned long long quota);
void registerURLSchemeAsBypassingContentSecurityPolicy(DOMString scheme);
void removeURLSchemeRegisteredAsBypassingContentSecurityPolicy(DOMString scheme);
MallocStatistics mallocStatistics();
TypeConversions typeConversions();
MemoryInfo memoryInfo();
sequence<DOMString> getReferencedFilePaths();
// These functions both reset the tracked repaint rects. They are intended to be used in the following order:
// startTrackingRepaints, repaintRectsAsText, stopTrackingRepaints.
[RaisesException] void startTrackingRepaints();
[RaisesException] void stopTrackingRepaints();
[RaisesException] void startTrackingLayerFlushes();
[RaisesException] unsigned long layerFlushCount();
// Query if a timer is currently throttled, to debug timer throttling.
[RaisesException] boolean isTimerThrottled(long timerHandle);
boolean isRequestAnimationFrameThrottled();
boolean areTimersThrottled();
[RaisesException] void startTrackingStyleRecalcs();
[RaisesException] unsigned long styleRecalcCount();
[RaisesException] void startTrackingCompositingUpdates();
[RaisesException] unsigned long compositingUpdateCount();
// |node| should be Document, HTMLIFrameElement, or unspecified.
// If |node| is an HTMLIFrameElement, it assumes node.contentDocument is
// specified without security checks. Unspecified or null means this document.
[RaisesException] void updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(optional Node? node = null);
readonly attribute unsigned long layoutCount;
// Returns a string with information about the mouse cursor used at the specified client location.
[RaisesException] DOMString getCurrentCursorInfo();
DOMString markerTextForListItem(Element element);
DOMString toolTipFromElement(Element element);
SerializedScriptValue deserializeBuffer(ArrayBuffer buffer);
ArrayBuffer serializeObject(SerializedScriptValue obj);
boolean isFromCurrentWorld(any obj);
void setUsesOverlayScrollbars(boolean enabled);
void setUsesMockScrollAnimator(boolean enabled);
void forceReload(boolean endToEnd);
void enableAutoSizeMode(boolean enabled, long minimumWidth, long minimumHeight, long maximumWidth, long maximumHeight);
[Conditional=VIDEO] void simulateAudioInterruption(HTMLMediaElement element);
[Conditional=VIDEO, RaisesException] boolean mediaElementHasCharacteristic(HTMLMediaElement element, DOMString characteristic);
[Conditional=ENCRYPTED_MEDIA_V2] void initializeMockCDM();
[Conditional=SPEECH_SYNTHESIS] void enableMockSpeechSynthesizer();
DOMString getImageSourceURL(Element element);
[Conditional=VIDEO_TRACK, RaisesException] DOMString captionsStyleSheetOverride();
[Conditional=VIDEO_TRACK, RaisesException] void setCaptionsStyleSheetOverride(DOMString override);
[Conditional=VIDEO_TRACK, RaisesException] void setPrimaryAudioTrackLanguageOverride(DOMString language);
[Conditional=VIDEO_TRACK, RaisesException] void setCaptionDisplayMode(DOMString mode);
[Conditional=VIDEO] TimeRanges createTimeRanges(Float32Array startTimes, Float32Array
endTimes);
[Conditional=VIDEO] unrestricted double closestTimeToTimeRanges(unrestricted double time, TimeRanges ranges);
boolean isSelectPopupVisible(HTMLSelectElement element);
#if defined(ENABLE_VIBRATION) && ENABLE_VIBRATION
boolean isVibrating();
#endif
[RaisesException] boolean isPluginUnavailabilityIndicatorObscured(Element element);
boolean isPluginSnapshotted(Element element);
[RaisesException] ClientRect selectionBounds();
[Conditional=MEDIA_SOURCE] void initializeMockMediaSource();
[Conditional=MEDIA_SOURCE] sequence<DOMString> bufferedSamplesForTrackID(SourceBuffer buffer, DOMString trackID);
[Conditional=MEDIA_SOURCE] sequence<DOMString> enqueuedSamplesForTrackID(SourceBuffer buffer, DOMString trackID);
[Conditional=MEDIA_SOURCE] void setShouldGenerateTimestamps(SourceBuffer buffer, boolean flag);
[Conditional=VIDEO, RaisesException] void beginMediaSessionInterruption(DOMString interruptionType);
[Conditional=VIDEO] void endMediaSessionInterruption(DOMString flags);
[Conditional=MEDIA_SESSION] void sendMediaSessionStartOfInterruptionNotification(MediaSessionInterruptingCategory category);
[Conditional=MEDIA_SESSION] void sendMediaSessionEndOfInterruptionNotification(MediaSessionInterruptingCategory category);
[Conditional=MEDIA_SESSION] DOMString mediaSessionCurrentState(MediaSession session);
[Conditional=MEDIA_SESSION] double mediaElementPlayerVolume(HTMLMediaElement element);
[Conditional=MEDIA_SESSION] void sendMediaControlEvent(MediaControlEvent event);
[Conditional=VIDEO] void applicationDidEnterForeground();
[Conditional=VIDEO] void applicationWillEnterBackground();
[Conditional=VIDEO, RaisesException] void setMediaSessionRestrictions(DOMString mediaType, DOMString restrictions);
[Conditional=VIDEO] void setMediaElementRestrictions(HTMLMediaElement element, DOMString restrictions);
[Conditional=WEB_AUDIO] void setAudioContextRestrictions(AudioContext context, DOMString restrictions);
[Conditional=VIDEO, RaisesException] void postRemoteControlCommand(DOMString command, optional unrestricted float argument = 0);
[Conditional=WIRELESS_PLAYBACK_TARGET] void setMockMediaPlaybackTargetPickerEnabled(boolean enabled);
[Conditional=WIRELESS_PLAYBACK_TARGET, RaisesException] void setMockMediaPlaybackTargetPickerState(DOMString deviceName, DOMString deviceState);
[Conditional=MEDIA_STREAM] void setMockMediaCaptureDevicesEnabled(boolean enabled);
[Conditional=VIDEO] void simulateSystemSleep();
[Conditional=VIDEO] void simulateSystemWake();
[Conditional=VIDEO] boolean elementIsBlockingDisplaySleep(HTMLMediaElement element);
[RaisesException] MockPageOverlay installMockPageOverlay(PageOverlayType type);
[RaisesException] DOMString pageOverlayLayerTreeAsText();
void setPageMuted(boolean muted);
boolean isPagePlayingAudio();
void setPageDefersLoading(boolean defersLoading);
File createFile(DOMString url);
void queueMicroTask(long testNumber);
boolean testPreloaderSettingViewport();
[Conditional=CONTENT_FILTERING] readonly attribute MockContentFilterSettings mockContentFilterSettings;
#if defined(ENABLE_CSS_SCROLL_SNAP) && ENABLE_CSS_SCROLL_SNAP
[RaisesException] DOMString scrollSnapOffsets(Element element);
#endif
[RaisesException] DOMString pathStringWithShrinkWrappedRects(sequence<double> rectComponents, double radius);
[Conditional=VIDEO] DOMString getCurrentMediaControlsStatusForElement(HTMLMediaElement element);
DOMString userVisibleString(DOMURL url);
void setShowAllPlugins(boolean showAll);
[Conditional=READABLE_STREAM_API, CallWith=ScriptState] boolean isReadableStreamDisturbed(any stream);
DOMString resourceLoadStatisticsForOrigin(DOMString domain);
void setResourceLoadStatisticsEnabled(boolean enable);
[RaisesException] void setCanShowModalDialogOverride(boolean allow);
DOMString composedTreeAsText(Node parent);
void setLinkPreloadSupport(boolean scalable);
#if defined(ENABLE_CSS_GRID_LAYOUT) && ENABLE_CSS_GRID_LAYOUT
void setCSSGridLayoutEnabled(boolean enable);
#endif
#if defined(ENABLE_WEBGL2) && ENABLE_WEBGL2
boolean webGL2Enabled();
void setWebGL2Enabled(boolean enable);
#endif
void setResourceTimingSupport(boolean scalable);
boolean isProcessingUserGesture();
GCObservation observeGC(any observed);
void setUserInterfaceLayoutDirection(UserInterfaceLayoutDirection userInterfaceLayoutDirection);
};