api: Flatten and simplify Servo preferences (#34966)

Flatten and simplify Servo's preferences code. In addition, have both
preferences and options passed in as arguments to `Servo::new()` and
make sure not to use the globally set preferences in `servoshell` (as
much as possible now).

Instead of a complex procedural macro to generate preferences, just
expose a very simple derive macro that adds string based getters and
setters.

- All command-line parsing is moved to servoshell.
- There is no longer the concept of a missing preference.
- Preferences no longer have to be part of the resources bundle because
  they now have reasonable default values.
- servoshell specific preferences are no longer part of the preferences
  exposed by the Servo API.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson 2025-01-14 14:54:06 +01:00 committed by GitHub
parent c4c85affb5
commit 0e616e0c5d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
316 changed files with 2088 additions and 3235 deletions

View file

@ -89,10 +89,31 @@ def generate(config, name, filename):
def add_css_properties_attributes(css_properties_json, parser):
def map_preference_name(preference_name: str):
"""Map between Stylo preference names and Servo preference names as the
`css-properties.json` file is generated by Stylo. This should be kept in sync with the
preference mapping done in `components/servo_config/prefs.rs`, which handles the runtime version of
these preferences."""
MAPPING = [
["layout.unimplemented", "layout_unimplemented"],
["layout.threads", "layout_threads"],
["layout.legacy_layout", "layout_legacy_layout"],
["layout.flexbox.enabled", "layout_flexbox_enabled"],
["layout.columns.enabled", "layout_columns_enabled"],
["layout.grid.enabled", "layout_grid_enabled"],
["layout.css.transition-behavior.enabled", "layout_css_transition_behavior_enabled"],
["layout.writing-mode.enabled", "layout_writing_mode_enabled"],
["layout.container-queries.enabled", "layout_container_queries_enabled"],
]
for mapping in MAPPING:
if mapping[0] == preference_name:
return mapping[1]
return preference_name
css_properties = json.load(open(css_properties_json, "rb"))
idl = "partial interface CSSStyleDeclaration {\n%s\n};\n" % "\n".join(
" [%sCEReactions, SetterThrows] attribute [LegacyNullToEmptyString] DOMString %s;" % (
('Pref="%s", ' % data["pref"] if data["pref"] else ""),
(f'Pref="{map_preference_name(data["pref"])}", ' if data["pref"] else ""),
attribute_name
)
for (kind, properties_list) in sorted(css_properties.items())

View file

@ -5,7 +5,7 @@
//! Machinery to conditionally expose things.
use js::rust::HandleObject;
use servo_config::prefs;
use servo_config::prefs::get;
use crate::dom::bindings::codegen::InterfaceObjectMap;
use crate::dom::bindings::interface::is_exposed_in;
@ -85,7 +85,7 @@ impl Condition {
global: HandleObject,
) -> bool {
match *self {
Condition::Pref(name) => prefs::pref_map().get(name).as_bool().unwrap_or(false),
Condition::Pref(name) => get().get_value(name).try_into().unwrap_or(false),
Condition::Func(f) => f(cx, obj),
Condition::Exposed(globals) => is_exposed_in(global, globals),
Condition::SecureContext() => is_secure_context(cx),

View file

@ -108,7 +108,7 @@ fn create_svg_element(
})
);
if !pref!(dom.svg.enabled) {
if !pref!(dom_svg_enabled) {
return Element::new(name.local, name.ns, prefix, document, proto, CanGc::note());
}

View file

@ -1356,8 +1356,8 @@ impl Document {
if let Some((last_time, last_pos)) = opt {
let DBL_CLICK_TIMEOUT =
Duration::from_millis(pref!(dom.document.dblclick_timeout) as u64);
let DBL_CLICK_DIST_THRESHOLD = pref!(dom.document.dblclick_dist) as u64;
Duration::from_millis(pref!(dom_document_dblclick_timeout) as u64);
let DBL_CLICK_DIST_THRESHOLD = pref!(dom_document_dblclick_dist) as u64;
// Calculate distance between this click and the previous click.
let line = click_pos - last_pos;
@ -2469,7 +2469,7 @@ impl Document {
// https://immersive-web.github.io/webxr/#user-intention
// https://github.com/immersive-web/navigation/issues/10
#[cfg(feature = "webxr")]
if pref!(dom.webxr.sessionavailable) && self.window.is_top_level() {
if pref!(dom_webxr_sessionavailable) && self.window.is_top_level() {
self.window.Navigator().Xr().dispatch_sessionavailable();
}
@ -2850,7 +2850,7 @@ impl Document {
local_name: &LocalName,
is: Option<&LocalName>,
) -> Option<Rc<CustomElementDefinition>> {
if !pref!(dom.custom_elements.enabled) {
if !pref!(dom_customelements_enabled) {
return None;
}
@ -3344,7 +3344,7 @@ impl Document {
#[cfg(feature = "webgpu")]
webgpu_contexts: Rc::new(RefCell::new(HashMapTracedValues::new())),
selection: MutNullableDom::new(None),
animation_timeline: if pref!(layout.animations.test.enabled) {
animation_timeline: if pref!(layout_animations_test_enabled) {
DomRefCell::new(AnimationTimeline::new_for_testing())
} else {
DomRefCell::new(AnimationTimeline::new())
@ -3826,7 +3826,7 @@ impl Document {
error = true;
}
if pref!(dom.fullscreen.test) {
if pref!(dom_fullscreen_test) {
// For reftests we just take over the current window,
// and don't try to really enter fullscreen.
info!("Tests don't really enter fullscreen.");
@ -4109,7 +4109,7 @@ impl Document {
/// An implementation of <https://drafts.csswg.org/web-animations-1/#update-animations-and-send-events>.
pub(crate) fn update_animations_and_send_events(&self, can_gc: CanGc) {
// Only update the time if it isn't being managed by a test.
if !pref!(layout.animations.test.enabled) {
if !pref!(layout_animations_test_enabled) {
self.animation_timeline.borrow_mut().update();
}

View file

@ -1325,7 +1325,7 @@ impl HTMLMediaElement {
.render_poster_frame(image);
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
if pref!(media.testing.enabled) {
if pref!(media_testing_enabled) {
self.owner_global()
.task_manager()
.media_element_task_source()

View file

@ -463,7 +463,7 @@ impl FetchResponseListener for ClassicContext {
/*
let options = unsafe { CompileOptionsWrapper::new(*cx, final_url.as_str(), 1) };
let can_compile_off_thread = pref!(dom.script.asynch) &&
let can_compile_off_thread = pref!(dom_script_asynch) &&
unsafe { CanCompileOffThread(*cx, options.ptr as *const _, source_text.len()) };
if can_compile_off_thread {

View file

@ -408,7 +408,7 @@ impl MouseEventMethods<crate::DomTypeHolder> for MouseEvent {
// This returns the same result as current gecko.
// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which
fn Which(&self) -> i32 {
if pref!(dom.mouse_event.which.enabled) {
if pref!(dom_mouse_event_which_enabled) {
(self.button.get() + 1) as i32
} else {
0

View file

@ -421,7 +421,7 @@ impl PaintWorkletGlobalScope {
.expect("Locking a painter.")
.schedule_a_worklet_task(WorkletTask::Paint(task));
let timeout = pref!(dom.worklet.timeout_ms) as u64;
let timeout = pref!(dom_worklet_timeout_ms) as u64;
receiver
.recv_timeout(Duration::from_millis(timeout))

View file

@ -301,7 +301,7 @@ pub(crate) fn get_descriptor_permission_state(
// and let the user decide to grant the permission or not.
let state = if allowed_in_nonsecure_contexts(&permission_name) {
PermissionState::Prompt
} else if pref!(dom.permissions.testing.allowed_in_nonsecure_contexts) {
} else if pref!(dom_permissions_testing_allowed_in_nonsecure_contexts) {
PermissionState::Granted
} else {
globalscope

View file

@ -306,7 +306,7 @@ impl ServiceWorkerGlobalScope {
// Service workers are time limited
// https://w3c.github.io/ServiceWorker/#service-worker-lifetime
let sw_lifetime_timeout = pref!(dom.serviceworker.timeout_seconds) as u64;
let sw_lifetime_timeout = pref!(dom_serviceworker_timeout_seconds) as u64;
let time_out_port = after(Duration::new(sw_lifetime_timeout, 0));
let (devtools_mpsc_chan, devtools_mpsc_port) = unbounded();

View file

@ -158,7 +158,7 @@ impl ServoParser {
url: ServoUrl,
can_gc: CanGc,
) {
let parser = if pref!(dom.servoparser.async_html_tokenizer.enabled) {
let parser = if pref!(dom_servoparser_async_html_tokenizer_enabled) {
ServoParser::new(
document,
Tokenizer::AsyncHtml(self::async_html::Tokenizer::new(document, url, None)),

View file

@ -880,17 +880,18 @@ impl TestBindingMethods<crate::DomTypeHolder> for TestBinding {
fn PassVariadicAny(&self, _: SafeJSContext, _: Vec<HandleValue>) {}
fn PassVariadicObject(&self, _: SafeJSContext, _: Vec<*mut JSObject>) {}
fn BooleanMozPreference(&self, pref_name: DOMString) -> bool {
prefs::pref_map()
.get(pref_name.as_ref())
.as_bool()
prefs::get()
.get_value(pref_name.as_ref())
.try_into()
.unwrap_or(false)
}
fn StringMozPreference(&self, pref_name: DOMString) -> DOMString {
prefs::pref_map()
.get(pref_name.as_ref())
.as_str()
.map(DOMString::from)
.unwrap_or_default()
DOMString::from_string(
prefs::get()
.get_value(pref_name.as_ref())
.try_into()
.unwrap_or_default(),
)
}
fn PrefControlledAttributeDisabled(&self) -> bool {
false

View file

@ -198,7 +198,7 @@ impl WebGL2RenderingContext {
#[allow(unsafe_code)]
pub(crate) fn is_webgl2_enabled(_cx: JSContext, global: HandleObject) -> bool {
if pref!(dom.webgl2.enabled) {
if pref!(dom_webgl2_enabled) {
return true;
}

View file

@ -222,7 +222,7 @@ impl WebGLRenderingContext {
size: Size2D<u32>,
attrs: GLContextAttributes,
) -> Result<WebGLRenderingContext, String> {
if pref!(webgl.testing.context_creation_error) {
if pref!(webgl_testing_context_creation_error) {
return Err("WebGL context creation error forced by pref `webgl.testing.context_creation_error`".into());
}

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://dom.spec.whatwg.org/#interface-abortcontroller
[Exposed=*, Pref="dom.abort_controller.enabled"]
[Exposed=*, Pref="dom_abort_controller_enabled"]
interface AbortController {
constructor();

View file

@ -7,9 +7,9 @@
// web pages.
[Exposed=(Window,Worker)]
interface mixin ActivatableElement {
[Throws, Pref="dom.testing.element.activation.enabled"]
[Throws, Pref="dom_testing_element_activation_enabled"]
undefined enterFormalActivationState();
[Throws, Pref="dom.testing.element.activation.enabled"]
[Throws, Pref="dom_testing_element_activation_enabled"]
undefined exitFormalActivationState();
};

View file

@ -25,7 +25,7 @@ dictionary RequestDeviceOptions {
boolean acceptAllDevices = false;
};
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface Bluetooth : EventTarget {
[SecureContext]
Promise<boolean> getAvailability();

View file

@ -10,7 +10,7 @@
interface BluetoothServiceDataMap {
readonly maplike<UUID, DataView>;
};*/
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothAdvertisingEvent : Event {
[Throws] constructor(DOMString type, BluetoothAdvertisingEventInit init);
[SameObject]

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#characteristicproperties
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothCharacteristicProperties {
readonly attribute boolean broadcast;
readonly attribute boolean read;

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothdevice
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothDevice : EventTarget {
readonly attribute DOMString id;
readonly attribute DOMString? name;

View file

@ -12,7 +12,7 @@ dictionary BluetoothPermissionDescriptor : PermissionDescriptor {
boolean acceptAllDevices = false;
};
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothPermissionResult : PermissionStatus {
// attribute FrozenArray<BluetoothDevice> devices;
// Workaround until FrozenArray get implemented.

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattcharacteristic
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothRemoteGATTCharacteristic : EventTarget {
[SameObject]
readonly attribute BluetoothRemoteGATTService service;

View file

@ -4,7 +4,7 @@
// http://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattdescriptor
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothRemoteGATTDescriptor {
[SameObject]
readonly attribute BluetoothRemoteGATTCharacteristic characteristic;

View file

@ -4,7 +4,7 @@
//https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattserver
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothRemoteGATTServer {
[SameObject]
readonly attribute BluetoothDevice device;

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattservice
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothRemoteGATTService : EventTarget {
[SameObject]
readonly attribute BluetoothDevice device;

View file

@ -4,7 +4,7 @@
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothuuid
[Exposed=Window, Pref="dom.bluetooth.enabled"]
[Exposed=Window, Pref="dom_bluetooth_enabled"]
interface BluetoothUUID {
[Throws]
static UUID getService(BluetoothServiceUUID name);

View file

@ -20,5 +20,5 @@ partial interface CSS {
// https://drafts.css-houdini.org/css-paint-api-1/#paint-worklet
partial interface CSS {
[SameObject, Pref="dom.worklet.enabled"] static readonly attribute Worklet paintWorklet;
[SameObject, Pref="dom_worklet_enabled"] static readonly attribute Worklet paintWorklet;
};

View file

@ -4,7 +4,7 @@
// https://drafts.css-houdini.org/css-typed-om-1/#cssstylevalue
// NOTE: should this be exposed to Window?
[Pref="dom.worklet.enabled", Exposed=(Worklet)]
[Pref="dom_worklet_enabled", Exposed=(Worklet)]
interface CSSStyleValue {
stringifier;
};

View file

@ -139,12 +139,12 @@ interface mixin CanvasUserInterface {
interface mixin CanvasText {
// text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces)
[Pref="dom.canvas_text.enabled"]
[Pref="dom_canvas_text_enabled"]
undefined fillText(DOMString text, unrestricted double x, unrestricted double y,
optional unrestricted double maxWidth);
//void strokeText(DOMString text, unrestricted double x, unrestricted double y,
// optional unrestricted double maxWidth);
[Pref="dom.canvas_text.enabled"]
[Pref="dom_canvas_text_enabled"]
TextMetrics measureText(DOMString text);
};

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/ServiceWorker/#client
[Pref="dom.serviceworker.enabled", Exposed=ServiceWorker]
[Pref="dom_serviceworker_enabled", Exposed=ServiceWorker]
interface Client {
readonly attribute USVString url;
readonly attribute FrameType frameType;

View file

@ -8,7 +8,7 @@
*/
// https://w3c.github.io/uievents/#idl-compositionevent
[Exposed=Window, Pref="dom.composition_event.enabled"]
[Exposed=Window, Pref="dom_composition_event_enabled"]
interface CompositionEvent : UIEvent {
[Throws] constructor(DOMString type, optional CompositionEventInit eventInitDict = {});
readonly attribute DOMString data;

View file

@ -13,7 +13,7 @@ partial interface mixin WindowOrWorkerGlobalScope {
[Exposed=(Window,Worker)]
interface Crypto {
[SecureContext, Pref="dom.crypto.subtle.enabled"] readonly attribute SubtleCrypto subtle;
[SecureContext, Pref="dom_crypto_subtle_enabled"] readonly attribute SubtleCrypto subtle;
[Throws] ArrayBufferView getRandomValues(ArrayBufferView array);
[SecureContext] DOMString randomUUID();
};

View file

@ -8,7 +8,7 @@ enum KeyType { "public", "private", "secret" };
enum KeyUsage { "encrypt", "decrypt", "sign", "verify", "deriveKey", "deriveBits", "wrapKey", "unwrapKey" };
[SecureContext, Exposed=(Window,Worker), Serializable, Pref="dom.crypto.subtle.enabled"]
[SecureContext, Exposed=(Window,Worker), Serializable, Pref="dom_crypto_subtle_enabled"]
interface CryptoKey {
readonly attribute KeyType type;
readonly attribute boolean extractable;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#customelementregistry
[Exposed=Window, Pref="dom.custom_elements.enabled"]
[Exposed=Window, Pref="dom_customelements_enabled"]
interface CustomElementRegistry {
[Throws, CEReactions]
undefined define(

View file

@ -83,7 +83,7 @@ interface Element : Node {
[CEReactions, Throws]
undefined insertAdjacentHTML(DOMString position, DOMString html);
[Throws, Pref="dom.shadowdom.enabled"] ShadowRoot attachShadow(ShadowRootInit init);
[Throws, Pref="dom_shadowdom_enabled"] ShadowRoot attachShadow(ShadowRootInit init);
readonly attribute ShadowRoot? shadowRoot;
};

View file

@ -5,7 +5,7 @@
// https://w3c.github.io/ServiceWorker/#extendable-event
[Exposed=ServiceWorker,
Pref="dom.serviceworker.enabled"]
Pref="dom_serviceworker_enabled"]
interface ExtendableEvent : Event {
[Throws] constructor(DOMString type,
optional ExtendableEventInit eventInitDict = {});

View file

@ -5,7 +5,7 @@
// https://w3c.github.io/ServiceWorker/#extendablemessage-event-section
[Exposed=ServiceWorker,
Pref="dom.serviceworker.enabled"]
Pref="dom_serviceworker_enabled"]
interface ExtendableMessageEvent : ExtendableEvent {
[Throws] constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict = {});
readonly attribute any data;

View file

@ -6,7 +6,7 @@
// https://github.com/immersive-web/webxr-test-api/
[Exposed=Window, Pref="dom.webxr.test"]
[Exposed=Window, Pref="dom_webxr_test"]
interface FakeXRDevice {
// Sets the values to be used for subsequent requestAnimationFrame() callbacks.
[Throws] undefined setViews(sequence<FakeXRViewInit> views, optional sequence<FakeXRViewInit> secondaryViews);

View file

@ -6,7 +6,7 @@
// https://immersive-web.github.io/webxr-test-api/#fakexrinputcontroller
[Exposed=Window, Pref="dom.webxr.test"]
[Exposed=Window, Pref="dom_webxr_test"]
interface FakeXRInputController {
undefined setHandedness(XRHandedness handedness);
undefined setTargetRayMode(XRTargetRayMode targetRayMode);

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#htmlcanvaselement
[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
[Exposed=(Window, DedicatedWorker), Pref="dom_webgpu_enabled"]
interface GPUCanvasContext {
readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas;
};

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/gamepad/#gamepad-interface
[Exposed=Window, Pref="dom.gamepad.enabled"]
[Exposed=Window, Pref="dom_gamepad_enabled"]
interface Gamepad {
readonly attribute DOMString id;
readonly attribute long index;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/gamepad/#gamepadbutton-interface
[Exposed=Window, Pref="dom.gamepad.enabled"]
[Exposed=Window, Pref="dom_gamepad_enabled"]
interface GamepadButton {
readonly attribute boolean pressed;
readonly attribute boolean touched;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/gamepad/#dom-gamepad-buttons
[Exposed=Window, Pref="dom.gamepad.enabled"]
[Exposed=Window, Pref="dom_gamepad_enabled"]
interface GamepadButtonList {
getter GamepadButton? item(unsigned long index);
readonly attribute unsigned long length;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/gamepad/#gamepadevent-interface
[Exposed=Window, Pref="dom.gamepad.enabled"]
[Exposed=Window, Pref="dom_gamepad_enabled"]
interface GamepadEvent : Event {
[Throws] constructor(DOMString type, GamepadEventInit eventInitDict);
readonly attribute Gamepad gamepad;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/gamepad/#gamepadhapticactuator-interface
[Exposed=Window, Pref="dom.gamepad.enabled"]
[Exposed=Window, Pref="dom_gamepad_enabled"]
interface GamepadHapticActuator {
/* [SameObject] */ readonly attribute /* FrozenArray<GamepadHapticEffectType> */ any effects;
[NewObject]

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/gamepad/extensions.html#gamepadpose-interface
[Exposed=Window, Pref="dom.gamepad.enabled"]
[Exposed=Window, Pref="dom_gamepad_enabled"]
interface GamepadPose {
readonly attribute boolean hasOrientation;
readonly attribute boolean hasPosition;

View file

@ -29,7 +29,7 @@ interface HTMLCanvasElement : HTMLElement {
};
partial interface HTMLCanvasElement {
[Pref="dom.canvas_capture.enabled"]
[Pref="dom_canvas_capture_enabled"]
MediaStream captureStream (optional double frameRequestRate);
};

View file

@ -24,9 +24,9 @@ interface HTMLElement : Element {
// attribute DOMString itemId;
//readonly attribute HTMLPropertiesCollection properties;
// attribute any itemValue; // acts as DOMString on setting
[Pref="dom.microdata.testing.enabled"]
[Pref="dom_microdata_testing_enabled"]
sequence<DOMString>? propertyNames();
[Pref="dom.microdata.testing.enabled"]
[Pref="dom_microdata_testing_enabled"]
sequence<DOMString>? itemtypes();
// user interaction

View file

@ -109,7 +109,7 @@ interface HTMLInputElement : HTMLElement {
// also has obsolete members
// Select with file-system paths for testing purpose
[Pref="dom.testing.htmlinputelement.select_files.enabled"]
[Pref="dom_testing_html_input_element_select_files_enabled"]
undefined selectFiles(sequence<DOMString> path);
};

View file

@ -17,6 +17,6 @@ interface HTMLVideoElement : HTMLMediaElement {
};
partial interface HTMLVideoElement {
[Pref="media.testing.enabled"]
[Pref="media_testing_enabled"]
attribute EventHandler onpostershown;
};

View file

@ -10,7 +10,7 @@
*/
//[Exposed=(Window,Worker), Serializable, Transferable]
[Exposed=(Window,Worker), Pref="dom.imagebitmap.enabled"]
[Exposed=(Window,Worker), Pref="dom_imagebitmap_enabled"]
interface ImageBitmap {
readonly attribute unsigned long width;
readonly attribute unsigned long height;

View file

@ -16,7 +16,7 @@ dictionary IntersectionObserverInit {
boolean trackVisibility = false;
};
[Pref="dom.intersection_observer.enabled", Exposed=(Window)]
[Pref="dom_intersection_observer_enabled", Exposed=(Window)]
interface IntersectionObserver {
constructor(IntersectionObserverCallback callback, optional IntersectionObserverInit options = {});
readonly attribute (Element or Document)? root;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/IntersectionObserver/#intersection-observer-entry
[Pref="dom.intersection_observer.enabled", Exposed=(Window)]
[Pref="dom_intersection_observer_enabled", Exposed=(Window)]
interface IntersectionObserverEntry {
constructor(IntersectionObserverEntryInit intersectionObserverEntryInit);
readonly attribute DOMHighResTimeStamp time;

View file

@ -5,7 +5,7 @@
// https://w3c.github.io/mediacapture-main/#device-info
[Exposed=Window,
SecureContext, Pref="dom.webrtc.enabled"]
SecureContext, Pref="dom_webrtc_enabled"]
interface MediaDeviceInfo {
readonly attribute DOMString deviceId;
readonly attribute MediaDeviceKind kind;

View file

@ -5,7 +5,7 @@
// https://w3c.github.io/mediacapture-main/#dom-mediadevices
[Exposed=Window,
SecureContext, Pref="dom.webrtc.enabled"]
SecureContext, Pref="dom_webrtc_enabled"]
interface MediaDevices : EventTarget {
// attribute EventHandler ondevicechange;
Promise<sequence<MediaDeviceInfo>> enumerateDevices();
@ -13,7 +13,7 @@ interface MediaDevices : EventTarget {
partial interface Navigator {
// [SameObject, SecureContext]
[Pref="dom.webrtc.enabled"] readonly attribute MediaDevices mediaDevices;
[Pref="dom_webrtc_enabled"] readonly attribute MediaDevices mediaDevices;
};
partial interface MediaDevices {

View file

@ -26,7 +26,7 @@ interface MouseEvent : UIEvent {
readonly attribute unsigned short buttons;
//boolean getModifierState (DOMString keyArg);
[Pref="dom.mouseevent.which.enabled"]
[Pref="dom_mouse_event_which_enabled"]
readonly attribute long which;
};

View file

@ -7,7 +7,7 @@
*/
// https://dom.spec.whatwg.org/#mutationobserver
[Exposed=Window, Pref="dom.mutation_observer.enabled"]
[Exposed=Window, Pref="dom_mutation_observer_enabled"]
interface MutationObserver {
[Throws] constructor(MutationCallback callback);
[Throws]

View file

@ -7,7 +7,7 @@
*/
// https://dom.spec.whatwg.org/#mutationrecord
[Pref="dom.mutation_observer.enabled", Exposed=Window]
[Pref="dom_mutation_observer_enabled", Exposed=Window]
interface MutationRecord {
readonly attribute DOMString type;
[SameObject]

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/ServiceWorker/#navigation-preload-manager
[Pref="dom.serviceworker.enabled", SecureContext, Exposed=(Window,Worker)]
[Pref="dom_serviceworker_enabled", SecureContext, Exposed=(Window,Worker)]
interface NavigationPreloadManager {
Promise<undefined> enable();
Promise<undefined> disable();

View file

@ -33,12 +33,12 @@ interface mixin NavigatorID {
// https://webbluetoothcg.github.io/web-bluetooth/#navigator-extensions
partial interface Navigator {
[SameObject, Pref="dom.bluetooth.enabled"] readonly attribute Bluetooth bluetooth;
[SameObject, Pref="dom_bluetooth_enabled"] readonly attribute Bluetooth bluetooth;
};
// https://w3c.github.io/ServiceWorker/#navigator-service-worker
partial interface Navigator {
[SameObject, Pref="dom.serviceworker.enabled"] readonly attribute ServiceWorkerContainer serviceWorker;
[SameObject, Pref="dom_serviceworker_enabled"] readonly attribute ServiceWorkerContainer serviceWorker;
};
// https://html.spec.whatwg.org/multipage/#navigatorlanguage
@ -63,12 +63,12 @@ interface mixin NavigatorCookies {
// https://w3c.github.io/permissions/#navigator-and-workernavigator-extension
[Exposed=(Window)]
partial interface Navigator {
[Pref="dom.permissions.enabled"] readonly attribute Permissions permissions;
[Pref="dom_permissions_enabled"] readonly attribute Permissions permissions;
};
// https://w3c.github.io/gamepad/#navigator-interface-extension
partial interface Navigator {
[Pref="dom.gamepad.enabled"] sequence<Gamepad?> getGamepads();
[Pref="dom_gamepad_enabled"] sequence<Gamepad?> getGamepads();
};
// https://html.spec.whatwg.org/multipage/#navigatorconcurrenthardware

View file

@ -13,7 +13,7 @@ dictionary ImageEncodeOptions {
//enum OffscreenRenderingContextId { "2d", "webgl", "webgl2" };
[Exposed=(Window,Worker)/*, Transferable*/, Pref="dom.offscreen_canvas.enabled"]
[Exposed=(Window,Worker)/*, Transferable*/, Pref="dom_offscreen_canvas_enabled"]
interface OffscreenCanvas : EventTarget {
[Throws] constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height);
attribute [EnforceRange] unsigned long long width;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#the-offscreen-2d-rendering-context
[Exposed=(Window,Worker), Pref="dom.offscreen_canvas.enabled"]
[Exposed=(Window,Worker), Pref="dom_offscreen_canvas_enabled"]
interface OffscreenCanvasRenderingContext2D {
//void commit();
readonly attribute OffscreenCanvas canvas;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://drafts.css-houdini.org/css-paint-api/#paintrenderingcontext2d
[Pref="dom.worklet.enabled", Exposed=PaintWorklet]
[Pref="dom_worklet_enabled", Exposed=PaintWorklet]
interface PaintRenderingContext2D {
};
PaintRenderingContext2D includes CanvasState;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://drafts.css-houdini.org/css-paint-api/#paintsize
[Pref="dom.worklet.enabled", Exposed=PaintWorklet]
[Pref="dom_worklet_enabled", Exposed=PaintWorklet]
interface PaintSize {
readonly attribute double width;
readonly attribute double height;

View file

@ -3,11 +3,11 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://drafts.css-houdini.org/css-paint-api/#paintworkletglobalscope
[Global=(Worklet,PaintWorklet), Pref="dom.worklet.enabled", Exposed=PaintWorklet]
[Global=(Worklet,PaintWorklet), Pref="dom_worklet_enabled", Exposed=PaintWorklet]
interface PaintWorkletGlobalScope : WorkletGlobalScope {
[Throws] undefined registerPaint(DOMString name, VoidFunction paintCtor);
// This function is to be used only for testing, and should not be
// accessible outside of that use.
[Pref="dom.worklet.blockingsleep.enabled"]
[Pref="dom_worklet_blockingsleep_enabled"]
undefined sleep(unsigned long long ms);
};

View file

@ -27,6 +27,6 @@ interface PerformanceNavigationTiming : PerformanceResourceTiming {
readonly attribute unsigned short redirectCount;
[Default] object toJSON();
/* Servo-only attribute for measuring when the top-level document (not iframes) is complete. */
[Pref="dom.testperf.enabled"]
[Pref="dom_testperf_enabled"]
readonly attribute DOMHighResTimeStamp topLevelDomComplete;
};

View file

@ -28,7 +28,7 @@ enum PermissionName {
"persistent-storage",
};
[Pref="dom.permissions.enabled", Exposed=(Window,Worker)]
[Pref="dom_permissions_enabled", Exposed=(Window,Worker)]
interface PermissionStatus : EventTarget {
readonly attribute PermissionState state;
attribute EventHandler onchange;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/permissions/#permissions-interface
[Pref="dom.permissions.enabled", Exposed=(Window,Worker)]
[Pref="dom_permissions_enabled", Exposed=(Window,Worker)]
interface Permissions {
Promise<PermissionStatus> query(object permissionDesc);

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCDataChannel : EventTarget {
readonly attribute USVString label;
readonly attribute boolean ordered;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelevent
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCDataChannelEvent : Event {
constructor(DOMString type, RTCDataChannelEventInit eventInitDict);
readonly attribute RTCDataChannel channel;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#dom-rtcerror
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCError : DOMException {
constructor(RTCErrorInit init, optional DOMString message = "");
readonly attribute RTCErrorDetailType errorDetail;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#dom-rtcerrorevent
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCErrorEvent : Event {
constructor(DOMString type, RTCErrorEventInit eventInitDict);
[SameObject] readonly attribute RTCError error;

View file

@ -5,7 +5,7 @@
// https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCIceCandidate {
[Throws] constructor(optional RTCIceCandidateInit candidateInitDict = {});
readonly attribute DOMString candidate;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#interface-definition
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCPeerConnection : EventTarget {
[Throws] constructor(optional RTCConfiguration configuration = {});
Promise<RTCSessionDescriptionInit> createOffer(optional RTCOfferOptions options = {});
@ -138,7 +138,7 @@ partial interface RTCPeerConnection {
// RTCRtpSender addTrack(MediaStreamTrack track,
// MediaStream... streams);
// void removeTrack(RTCRtpSender sender);
[Pref="dom.webrtc.transceiver.enabled"]
[Pref="dom_webrtc_transceiver_enabled"]
RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind,
optional RTCRtpTransceiverInit init = {});
attribute EventHandler ontrack;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#rtcpeerconnectioniceevent
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCPeerConnectionIceEvent : Event {
[Throws] constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict = {});
readonly attribute RTCIceCandidate? candidate;

View file

@ -34,7 +34,7 @@ dictionary RTCRtpSendParameters : RTCRtpParameters {
required sequence<RTCRtpEncodingParameters> encodings;
};
[Exposed=Window, Pref="dom.webrtc.transceiver.enabled"]
[Exposed=Window, Pref="dom_webrtc_transceiver_enabled"]
interface RTCRtpSender {
//readonly attribute MediaStreamTrack? track;
//readonly attribute RTCDtlsTransport? transport;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#rtcrtptransceiver-interface
[Exposed=Window, Pref="dom.webrtc.transceiver.enabled"]
[Exposed=Window, Pref="dom_webrtc_transceiver_enabled"]
interface RTCRtpTransceiver {
//readonly attribute DOMString? mid;
[SameObject] readonly attribute RTCRtpSender sender;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#rtcsessiondescription-class
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCSessionDescription {
[Throws] constructor(RTCSessionDescriptionInit descriptionInitDict);
readonly attribute RTCSdpType type;

View file

@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#dom-rtctrackevent
[Exposed=Window, Pref="dom.webrtc.enabled"]
[Exposed=Window, Pref="dom_webrtc_enabled"]
interface RTCTrackEvent : Event {
[Throws] constructor(DOMString type, RTCTrackEventInit eventInitDict);
// readonly attribute RTCRtpReceiver receiver;

View file

@ -4,7 +4,7 @@
// https://drafts.csswg.org/resize-observer/#resize-observer-interface
[Pref="dom.resize_observer.enabled", Exposed=(Window)]
[Pref="dom_resize_observer_enabled", Exposed=(Window)]
interface ResizeObserver {
constructor(ResizeObserverCallback callback);
undefined observe(Element target, optional ResizeObserverOptions options = {});

View file

@ -4,7 +4,7 @@
// https://drafts.csswg.org/resize-observer/#resize-observer-entry-interface
[Pref="dom.resize_observer.enabled", Exposed=Window]
[Pref="dom_resize_observer_enabled", Exposed=Window]
interface ResizeObserverEntry {
readonly attribute Element target;
readonly attribute DOMRectReadOnly contentRect;

View file

@ -4,7 +4,7 @@
// https://drafts.csswg.org/resize-observer/#resizeobserversize
[Pref="dom.resize_observer.enabled", Exposed=Window]
[Pref="dom_resize_observer_enabled", Exposed=Window]
interface ResizeObserverSize {
readonly attribute unrestricted double inlineSize;
readonly attribute unrestricted double blockSize;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://svgwg.org/svg2-draft/types.html#InterfaceSVGElement
[Exposed=Window, Pref="dom.svg.enabled"]
[Exposed=Window, Pref="dom_svg_enabled"]
interface SVGElement : Element {
//[SameObject] readonly attribute SVGAnimatedString className;

View file

@ -10,7 +10,7 @@
// boolean clipped = false;
//};
[Exposed=Window, Abstract, Pref="dom.svg.enabled"]
[Exposed=Window, Abstract, Pref="dom_svg_enabled"]
interface SVGGraphicsElement : SVGElement {
//[SameObject] readonly attribute SVGAnimatedTransformList transform;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://svgwg.org/svg2-draft/struct.html#InterfaceSVGSVGElement
[Exposed=Window, Pref="dom.svg.enabled"]
[Exposed=Window, Pref="dom_svg_enabled"]
interface SVGSVGElement : SVGGraphicsElement {
//[SameObject] readonly attribute SVGAnimatedLength x;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/ServiceWorker/#serviceworker-interface
[Pref="dom.serviceworker.enabled", SecureContext, Exposed=(Window,Worker)]
[Pref="dom_serviceworker_enabled", SecureContext, Exposed=(Window,Worker)]
interface ServiceWorker : EventTarget {
readonly attribute USVString scriptURL;
readonly attribute ServiceWorkerState state;

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/ServiceWorker/#serviceworkercontainer-interface
[Pref="dom.serviceworker.enabled", Exposed=(Window,Worker)]
[Pref="dom_serviceworker_enabled", Exposed=(Window,Worker)]
interface ServiceWorkerContainer : EventTarget {
readonly attribute ServiceWorker? controller;
//readonly attribute Promise<ServiceWorkerRegistration> ready;

View file

@ -5,7 +5,7 @@
// https://w3c.github.io/ServiceWorker/#serviceworkerglobalscope
[Global=(Worker,ServiceWorker), Exposed=ServiceWorker,
Pref="dom.serviceworker.enabled"]
Pref="dom_serviceworker_enabled"]
interface ServiceWorkerGlobalScope : WorkerGlobalScope {
// A container for a list of Client objects that correspond to
// browsing contexts (or shared workers) that are on the origin of this SW

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://w3c.github.io/ServiceWorker/#serviceworkerregistration-interface
[Pref="dom.serviceworker.enabled", SecureContext, Exposed=(Window,Worker)]
[Pref="dom_serviceworker_enabled", SecureContext, Exposed=(Window,Worker)]
interface ServiceWorkerRegistration : EventTarget {
readonly attribute ServiceWorker? installing;
readonly attribute ServiceWorker? waiting;

View file

@ -4,7 +4,7 @@
// https://drafts.css-houdini.org/css-typed-om-1/#stylepropertymapreadonly
// NOTE: should this be exposed to Window?
[Pref="dom.worklet.enabled", Exposed=(Worklet)]
[Pref="dom_worklet_enabled", Exposed=(Worklet)]
interface StylePropertyMapReadOnly {
CSSStyleValue? get(DOMString property);
// sequence<CSSStyleValue> getAll(DOMString property);

View file

@ -18,7 +18,7 @@ dictionary KeyAlgorithm {
enum KeyFormat { "raw", "spki", "pkcs8", "jwk" };
[SecureContext,Exposed=(Window,Worker),Pref="dom.crypto.subtle.enabled"]
[SecureContext,Exposed=(Window,Worker),Pref="dom_crypto_subtle_enabled"]
interface SubtleCrypto {
Promise<any> encrypt(AlgorithmIdentifier algorithm,
CryptoKey key,

View file

@ -100,7 +100,7 @@ dictionary TestURLLike {
required DOMString href;
};
[Pref="dom.testbinding.enabled",
[Pref="dom_testbinding_enabled",
Exposed=(Window,Worker)
]
interface TestBinding {
@ -516,28 +516,28 @@ interface TestBinding {
boolean BooleanMozPreference(DOMString pref_name);
DOMString StringMozPreference(DOMString pref_name);
[Pref="dom.testbinding.prefcontrolled.enabled"]
[Pref="dom_testbinding_prefcontrolled_enabled"]
readonly attribute boolean prefControlledAttributeDisabled;
[Pref="dom.testbinding.prefcontrolled.enabled"]
[Pref="dom_testbinding_prefcontrolled_enabled"]
static readonly attribute boolean prefControlledStaticAttributeDisabled;
[Pref="dom.testbinding.prefcontrolled.enabled"]
[Pref="dom_testbinding_prefcontrolled_enabled"]
undefined prefControlledMethodDisabled();
[Pref="dom.testbinding.prefcontrolled.enabled"]
[Pref="dom_testbinding_prefcontrolled_enabled"]
static undefined prefControlledStaticMethodDisabled();
[Pref="dom.testbinding.prefcontrolled.enabled"]
[Pref="dom_testbinding_prefcontrolled_enabled"]
const unsigned short prefControlledConstDisabled = 0;
[Pref="layout.animations.test.enabled"]
[Pref="layout_animations_test_enabled"]
undefined advanceClock(long millis);
[Pref="dom.testbinding.prefcontrolled2.enabled"]
[Pref="dom_testbinding_prefcontrolled2_enabled"]
readonly attribute boolean prefControlledAttributeEnabled;
[Pref="dom.testbinding.prefcontrolled2.enabled"]
[Pref="dom_testbinding_prefcontrolled2_enabled"]
static readonly attribute boolean prefControlledStaticAttributeEnabled;
[Pref="dom.testbinding.prefcontrolled2.enabled"]
[Pref="dom_testbinding_prefcontrolled2_enabled"]
undefined prefControlledMethodEnabled();
[Pref="dom.testbinding.prefcontrolled2.enabled"]
[Pref="dom_testbinding_prefcontrolled2_enabled"]
static undefined prefControlledStaticMethodEnabled();
[Pref="dom.testbinding.prefcontrolled2.enabled"]
[Pref="dom_testbinding_prefcontrolled2_enabled"]
const unsigned short prefControlledConstEnabled = 0;
[Func="TestBinding::condition_unsatisfied"]
@ -609,11 +609,11 @@ callback SimpleCallback = undefined(any value);
callback callbackWithOnlyOneOptionalArg = Promise<undefined> (optional any reason);
partial interface TestBinding {
[Pref="dom.testable_crash.enabled"]
[Pref="dom_testable_crash_enabled"]
undefined crashHard();
};
[Exposed=(Window,Worker), Pref="dom.testbinding.enabled"]
[Exposed=(Window,Worker), Pref="dom_testbinding_enabled"]
namespace TestNS {
const unsigned long ONE = 1;
const unsigned long TWO = 0x2;

View file

@ -5,7 +5,7 @@
// This interface is entirely internal to Servo, and should not be accessible to
// web pages.
[Pref="dom.testbinding.enabled", Exposed=(Window,Worker)]
[Pref="dom_testbinding_enabled", Exposed=(Window,Worker)]
interface TestBindingIterable {
[Throws] constructor();
undefined add(DOMString arg);

View file

@ -5,7 +5,7 @@
// This interface is entirely internal to Servo, and should not be accessible to
// web pages.
[Pref="dom.testbinding.enabled", Exposed=(Window,Worker)]
[Pref="dom_testbinding_enabled", Exposed=(Window,Worker)]
interface TestBindingMaplike {
[Throws]
constructor();

View file

@ -5,7 +5,7 @@
// This interface is entirely internal to Servo, and should not be accessible to
// web pages.
[Pref="dom.testbinding.enabled", Exposed=(Window,Worker)]
[Pref="dom_testbinding_enabled", Exposed=(Window,Worker)]
interface TestBindingPairIterable {
[Throws] constructor();
undefined add(DOMString key, unsigned long value);

View file

@ -11,7 +11,7 @@
// This interface is entirely internal to Servo, and should not be accessible to
// web pages.
[Pref="dom.testbinding.enabled", Exposed=(Window,Worker)]
[Pref="dom_testbinding_enabled", Exposed=(Window,Worker)]
interface TestBindingProxy : TestBinding {
readonly attribute unsigned long length;

View file

@ -5,7 +5,7 @@
// This interface is entirely internal to Servo, and should not be accessible to
// web pages.
[Pref="dom.testbinding.enabled", Exposed=(Window,Worker)]
[Pref="dom_testbinding_enabled", Exposed=(Window,Worker)]
interface TestBindingSetlike {
[Throws]
constructor();

View file

@ -6,7 +6,7 @@
// callback BluetoothManualChooserEventsCallback = void(sequence<DOMString> events);
[Pref="dom.bluetooth.testing.enabled", Exposed=Window]
[Pref="dom_bluetooth_testing_enabled", Exposed=Window]
interface TestRunner {
[Throws]
undefined setBluetoothMockDataSet(DOMString dataSetName);

View file

@ -5,7 +5,7 @@
// This interface is entirely internal to Servo, and should not be accessible to
// web pages.
[Pref="dom.worklet.testing.enabled", Exposed=(Window)]
[Pref="dom_worklet_testing_enabled", Exposed=(Window)]
interface TestWorklet {
[Throws] constructor();
[NewObject] Promise<undefined> addModule(USVString moduleURL, optional WorkletOptions options = {});

View file

@ -5,7 +5,7 @@
// This interface is entirely internal to Servo, and should not be accessible to
// web pages.
[Global=(Worklet,TestWorklet), Pref="dom.worklet.enabled", Exposed=TestWorklet]
[Global=(Worklet,TestWorklet), Pref="dom_worklet_enabled", Exposed=TestWorklet]
interface TestWorkletGlobalScope : WorkletGlobalScope {
undefined registerKeyValue(DOMString key, DOMString value);
};

Some files were not shown because too many files have changed in this diff Show more