[webkit-dev] Experimental features review
Michael Catanzaro
mcatanzaro at igalia.com
Wed Feb 13 13:32:37 PST 2019
Hi,
Last year, we cleaned up experimental features in WebPreferences.yaml
to ensure no experimental features were enabled by default. Since then
we have regressed a bit when enabling cool new web features. :)
Currently we have 12 offenders, listed below. Most likely, the
category: experimental line should be removed from these features.
Alternatively, the defaultValue should be changed to either false or
DEFAULT_EXPERIMENTAL_FEATURES_ENABLED (or something depending on that).
If you know about any of these settings, please keep reading and help
decide what to do with them:
BlankAnchorTargetImpliesNoOpenerEnabled
ThirdPartyIframeRedirectBlockingEnabled
ScreenCaptureEnabled
WebRTCUnifiedPlanEnabled
WebRTCVP8CodecEnabled
WebRTCH264SimulcastEnabled
WebRTCMDNSICECandidatesEnabled
IntersectionObserverEnabled
VisualViewportAPIEnabled
DarkModeCSSEnabled
WebSQLDisabled
ProcessSwapOnCrossSiteNavigationEnabled
Details:
BlankAnchorTargetImpliesNoOpenerEnabled:
type: bool
defaultValue: true
webcoreBinding: RuntimeEnabledFeatures
humanReadableName: "Blank anchor target implies rel=noopener"
humanReadableDescription: "target=_blank on anchor elements implies
rel=noopener"
category: experimental
ThirdPartyIframeRedirectBlockingEnabled:
type: bool
defaultValue: true
humanReadableName: "Block top-level redirects by third-party iframes"
humanReadableDescription: "Block top-level redirects by third-party
iframes"
category: experimental
ScreenCaptureEnabled:
type: bool
defaultValue: true
webcoreBinding: RuntimeEnabledFeatures
condition: ENABLE(MEDIA_STREAM) && PLATFORM(MAC)
humanReadableName: "ScreenCapture"
humanReadableDescription: "Enable ScreenCapture"
category: experimental
WebRTCUnifiedPlanEnabled:
type: bool
defaultValue: true
webcoreBinding: RuntimeEnabledFeatures
condition: ENABLE(WEB_RTC)
humanReadableName: "WebRTC Unified Plan"
humanReadableDescription: "Use WebRTC Unified Plan"
category: experimental
WebRTCVP8CodecEnabled:
type: bool
defaultValue: true
webcoreBinding: RuntimeEnabledFeatures
condition: ENABLE(WEB_RTC)
humanReadableName: "WebRTC VP8 codec"
humanReadableDescription: "Enable WebRTC VP8 codec"
category: experimental
WebRTCH264SimulcastEnabled:
type: bool
defaultValue: true
webcoreBinding: RuntimeEnabledFeatures
condition: ENABLE(WEB_RTC)
humanReadableName: "WebRTC H264 Simulcast"
humanReadableDescription: "Enable WebRTC H264 Simulcast"
category: experimental
WebRTCMDNSICECandidatesEnabled:
type: bool
defaultValue: true
humanReadableName: "WebRTC mDNS ICE candidates"
humanReadableDescription: "Enable WebRTC mDNS ICE candidates"
webcoreBinding: RuntimeEnabledFeatures
category: experimental
condition: ENABLE(WEB_RTC)
If the above features are to remain experimental, they should be sorted
lower in the file, below this comment explaining experimental feature
policy:
# For experimental features:
# The type should be boolean.
# You must provide a humanReadableName and humanReadableDescription for
all experimental features. They
# are the text exposed to the user from the WebKit client.
# The default value may be either false (for unstable features) or
# DEFAULT_EXPERIMENTAL_FEATURES_ENABLED (for features that are ready for
# wider testing).
More offenders:
IntersectionObserverEnabled:
type: bool
defaultValue: true
humanReadableName: "Intersection Observer"
humanReadableDescription: "Enable Intersection Observer support"
webcoreBinding: RuntimeEnabledFeatures
category: experimental
condition: ENABLE(INTERSECTION_OBSERVER)
VisualViewportAPIEnabled:
type: bool
defaultValue: true
humanReadableName: "Visual Viewport API"
humanReadableDescription: "Enable Visual Viewport API"
category: experimental
DarkModeCSSEnabled:
type: bool
defaultValue: true
humanReadableName: "Dark Mode CSS Support"
humanReadableDescription: "Enable Dark Mode CSS Support"
webcoreBinding: RuntimeEnabledFeatures
category: experimental
condition: ENABLE(DARK_MODE_CSS)
WebSQLDisabled:
type: bool
defaultValue: true
humanReadableName: "Disable Web SQL"
humanReadableDescription: "Disable Web SQL"
webcoreBinding: RuntimeEnabledFeatures
category: experimental
This one's weird because it's Disabled rather than Enabled... the
semantics should probably be reversed. We probably want a WebSQLEnabled
feature defaulting to false?
ProcessSwapOnCrossSiteNavigationEnabled:
type: bool
defaultValue: DEFAULT_PROCESS_SWAP_ON_CROSS_SITE_NAVIGATION_ENABLED
humanReadableName: "Swap Processes on Cross-Site Navigation"
humanReadableDescription: "Swap WebContent processes on cross-site
navigations"
category: experimental
webcoreBinding: none
DEFAULT_PROCESS_SWAP_ON_CROSS_SITE_NAVIGATION_ENABLED is TRUE on macOS
and iOS, bypassing DEFAULT_EXPERIMENTAL_FEATURES_ENABLED.
More information about the webkit-dev
mailing list