| /* |
| * 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" |
| }; |
| |
| [ |
| 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(Node node); |
| |
| [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] 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] 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); |
| [RaisesException] void setContinuousSpellCheckingEnabled(boolean enabled); |
| [RaisesException] void setAutomaticQuoteSubstitutionEnabled(boolean enabled); |
| [RaisesException] void setAutomaticLinkDetectionEnabled(boolean enabled); |
| [RaisesException] void setAutomaticDashSubstitutionEnabled(boolean enabled); |
| [RaisesException] void setAutomaticTextReplacementEnabled(boolean enabled); |
| [RaisesException] void setAutomaticSpellingCorrectionEnabled(boolean enabled); |
| |
| [RaisesException] void handleAcceptedCandidate(DOMString candidate); |
| |
| [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); |
| |
| #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 |
| |
| // As per spec: http://www.w3.org/TR/WebIDL/#idl-sequence |
| // "Sequences must not be used as the type of an attribute, constant or exception field." |
| // FIXME: this will lead to BUG internals.consoleProfiles !== internals.consoleProfiles as profile will always returns new array. |
| readonly attribute ScriptProfile[] consoleProfiles; |
| |
| unsigned long numberOfLiveNodes(); |
| unsigned long numberOfLiveDocuments(); |
| DOMWindow openDummyInspectorFrontend(DOMString url); |
| void closeDummyInspectorFrontend(); |
| [RaisesException] void setLegacyJavaScriptProfilingEnabled(boolean enabled); |
| [RaisesException] void setInspectorIsUnderTest(boolean isUnderTest); |
| |
| DOMString counterValue(Element element); |
| long pageNumber(Element element, optional unrestricted float pageWidth = 800, optional unrestricted float pageHeight = 600); |
| 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(); |
| |
| 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] DOMString[] bufferedSamplesForTrackID(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); |
| [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=STREAMS_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 setViewportForceAlwaysUserScalable(boolean scalable); |
| 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); |
| }; |