mirror of
https://github.com/servo/servo.git
synced 2025-08-08 06:55:31 +01:00
Update to SpiderMonkey 137. (#37077)
Incorporates the updates from https://github.com/servo/mozjs/pull/584. Testing: Existing WPT coverage is enough. Fixes: Part of #36258 --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
fd20a5df42
commit
842dd99698
25 changed files with 129 additions and 1417 deletions
2
.github/workflows/android.yml
vendored
2
.github/workflows/android.yml
vendored
|
@ -81,7 +81,7 @@ jobs:
|
||||||
uses: nttld/setup-ndk@v1
|
uses: nttld/setup-ndk@v1
|
||||||
id: setup-ndk
|
id: setup-ndk
|
||||||
with:
|
with:
|
||||||
ndk-version: r26c
|
ndk-version: r28
|
||||||
- name: Setup Gradle caches
|
- name: Setup Gradle caches
|
||||||
uses: gradle/actions/setup-gradle@v4
|
uses: gradle/actions/setup-gradle@v4
|
||||||
- name: Trigger initial download of Gradle with retries
|
- name: Trigger initial download of Gradle with retries
|
||||||
|
|
12
Cargo.lock
generated
12
Cargo.lock
generated
|
@ -1359,7 +1359,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
|
checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"windows-sys 0.48.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -4849,7 +4849,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
|
checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"windows-targets 0.48.5",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -5243,7 +5243,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mozjs"
|
name = "mozjs"
|
||||||
version = "0.14.1"
|
version = "0.14.1"
|
||||||
source = "git+https://github.com/servo/mozjs#eb4268a973f2334a18f97be0c6def8b1a7143431"
|
source = "git+https://github.com/servo/mozjs#75ba574b452573d8d4275331294556180bd6cea9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bindgen 0.71.1",
|
"bindgen 0.71.1",
|
||||||
"cc",
|
"cc",
|
||||||
|
@ -5254,8 +5254,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mozjs_sys"
|
name = "mozjs_sys"
|
||||||
version = "0.128.13-3"
|
version = "0.137.0-0"
|
||||||
source = "git+https://github.com/servo/mozjs#eb4268a973f2334a18f97be0c6def8b1a7143431"
|
source = "git+https://github.com/servo/mozjs#75ba574b452573d8d4275331294556180bd6cea9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bindgen 0.71.1",
|
"bindgen 0.71.1",
|
||||||
"cc",
|
"cc",
|
||||||
|
@ -9924,7 +9924,7 @@ version = "0.1.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.48.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -182,7 +182,6 @@ pub struct Preferences {
|
||||||
pub js_mem_gc_decommit_threshold_mb: i64,
|
pub js_mem_gc_decommit_threshold_mb: i64,
|
||||||
pub js_mem_gc_dynamic_heap_growth_enabled: bool,
|
pub js_mem_gc_dynamic_heap_growth_enabled: bool,
|
||||||
pub js_mem_gc_dynamic_mark_slice_enabled: bool,
|
pub js_mem_gc_dynamic_mark_slice_enabled: bool,
|
||||||
pub js_mem_gc_empty_chunk_count_max: i64,
|
|
||||||
pub js_mem_gc_empty_chunk_count_min: i64,
|
pub js_mem_gc_empty_chunk_count_min: i64,
|
||||||
pub js_mem_gc_high_frequency_heap_growth_max: i64,
|
pub js_mem_gc_high_frequency_heap_growth_max: i64,
|
||||||
pub js_mem_gc_high_frequency_heap_growth_min: i64,
|
pub js_mem_gc_high_frequency_heap_growth_min: i64,
|
||||||
|
@ -361,7 +360,6 @@ impl Preferences {
|
||||||
js_mem_gc_decommit_threshold_mb: 32,
|
js_mem_gc_decommit_threshold_mb: 32,
|
||||||
js_mem_gc_dynamic_heap_growth_enabled: true,
|
js_mem_gc_dynamic_heap_growth_enabled: true,
|
||||||
js_mem_gc_dynamic_mark_slice_enabled: true,
|
js_mem_gc_dynamic_mark_slice_enabled: true,
|
||||||
js_mem_gc_empty_chunk_count_max: 30,
|
|
||||||
js_mem_gc_empty_chunk_count_min: 1,
|
js_mem_gc_empty_chunk_count_min: 1,
|
||||||
js_mem_gc_high_frequency_heap_growth_max: 300,
|
js_mem_gc_high_frequency_heap_growth_max: 300,
|
||||||
js_mem_gc_high_frequency_heap_growth_min: 150,
|
js_mem_gc_high_frequency_heap_growth_min: 150,
|
||||||
|
|
|
@ -114,9 +114,22 @@ unsafe extern "C" fn instance_class_has_proto_at_depth(
|
||||||
domclass.dom_class.interface_chain[depth as usize] as u32 == proto_id
|
domclass.dom_class.interface_chain[depth as usize] as u32 == proto_id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <https://searchfox.org/mozilla-central/rev/c18faaae88b30182e487fa3341bc7d923e22f23a/xpcom/base/CycleCollectedJSRuntime.cpp#792>
|
||||||
|
unsafe extern "C" fn instance_class_is_error(clasp: *const js::jsapi::JSClass) -> bool {
|
||||||
|
if !is_dom_class(&*clasp) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
let domclass: *const DOMJSClass = clasp as *const _;
|
||||||
|
let domclass = &*domclass;
|
||||||
|
let root_interface = domclass.dom_class.interface_chain[0] as u32;
|
||||||
|
// TODO: support checking bare Exception prototype as well.
|
||||||
|
root_interface == PrototypeList::ID::DOMException as u32
|
||||||
|
}
|
||||||
|
|
||||||
#[allow(missing_docs)] // FIXME
|
#[allow(missing_docs)] // FIXME
|
||||||
pub(crate) const DOM_CALLBACKS: DOMCallbacks = DOMCallbacks {
|
pub(crate) const DOM_CALLBACKS: DOMCallbacks = DOMCallbacks {
|
||||||
instanceClassMatchesProto: Some(instance_class_has_proto_at_depth),
|
instanceClassMatchesProto: Some(instance_class_has_proto_at_depth),
|
||||||
|
instanceClassIsError: Some(instance_class_is_error),
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Eagerly define all relevant WebIDL interface constructors on the
|
/// Eagerly define all relevant WebIDL interface constructors on the
|
||||||
|
|
|
@ -14,12 +14,10 @@ use std::rc::Rc;
|
||||||
use deny_public_fields::DenyPublicFields;
|
use deny_public_fields::DenyPublicFields;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use fnv::FnvHasher;
|
use fnv::FnvHasher;
|
||||||
use js::jsapi::JS_GetFunctionObject;
|
use js::jsapi::JS::CompileFunction;
|
||||||
|
use js::jsapi::{JS_GetFunctionObject, SupportUnscopables};
|
||||||
use js::jsval::JSVal;
|
use js::jsval::JSVal;
|
||||||
use js::rust::wrappers::CompileFunction;
|
use js::rust::{CompileOptionsWrapper, HandleObject, transform_u16_to_source_text};
|
||||||
use js::rust::{
|
|
||||||
CompileOptionsWrapper, HandleObject, RootedObjectVectorWrapper, transform_u16_to_source_text,
|
|
||||||
};
|
|
||||||
use libc::c_char;
|
use libc::c_char;
|
||||||
use servo_url::ServoUrl;
|
use servo_url::ServoUrl;
|
||||||
use style::str::HTML_SPACE_CHARACTERS;
|
use style::str::HTML_SPACE_CHARACTERS;
|
||||||
|
@ -646,7 +644,7 @@ impl EventTarget {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Step 3.9, subsection Scope steps 1-6
|
// Step 3.9, subsection Scope steps 1-6
|
||||||
let scopechain = RootedObjectVectorWrapper::new(*cx);
|
let scopechain = js::rust::EnvironmentChain::new(*cx, SupportUnscopables::Yes);
|
||||||
|
|
||||||
if let Some(element) = element {
|
if let Some(element) = element {
|
||||||
scopechain.append(document.reflector().get_jsobject().get());
|
scopechain.append(document.reflector().get_jsobject().get());
|
||||||
|
@ -659,7 +657,7 @@ impl EventTarget {
|
||||||
rooted!(in(*cx) let mut handler = unsafe {
|
rooted!(in(*cx) let mut handler = unsafe {
|
||||||
CompileFunction(
|
CompileFunction(
|
||||||
*cx,
|
*cx,
|
||||||
scopechain.handle(),
|
scopechain.get(),
|
||||||
options.ptr,
|
options.ptr,
|
||||||
name.as_ptr(),
|
name.as_ptr(),
|
||||||
args.len() as u32,
|
args.len() as u32,
|
||||||
|
|
|
@ -31,7 +31,7 @@ use ipc_channel::ipc::{self, IpcSender};
|
||||||
use ipc_channel::router::ROUTER;
|
use ipc_channel::router::ROUTER;
|
||||||
use js::glue::{IsWrapper, UnwrapObjectDynamic};
|
use js::glue::{IsWrapper, UnwrapObjectDynamic};
|
||||||
use js::jsapi::{
|
use js::jsapi::{
|
||||||
Compile1, CurrentGlobalOrNull, GetNonCCWObjectGlobal, HandleObject, Heap,
|
Compile1, CurrentGlobalOrNull, DelazificationOption, GetNonCCWObjectGlobal, HandleObject, Heap,
|
||||||
InstantiateGlobalStencil, InstantiateOptions, JSContext, JSObject, JSScript, SetScriptPrivate,
|
InstantiateGlobalStencil, InstantiateOptions, JSContext, JSObject, JSScript, SetScriptPrivate,
|
||||||
};
|
};
|
||||||
use js::jsval::{PrivateValue, UndefinedValue};
|
use js::jsval::{PrivateValue, UndefinedValue};
|
||||||
|
@ -2820,6 +2820,7 @@ impl GlobalScope {
|
||||||
skipFilenameValidation: false,
|
skipFilenameValidation: false,
|
||||||
hideScriptFromDebugger: false,
|
hideScriptFromDebugger: false,
|
||||||
deferDebugMetadata: false,
|
deferDebugMetadata: false,
|
||||||
|
eagerDelazificationStrategy_: DelazificationOption::OnDemandOnly,
|
||||||
};
|
};
|
||||||
let script = InstantiateGlobalStencil(
|
let script = InstantiateGlobalStencil(
|
||||||
*cx,
|
*cx,
|
||||||
|
|
|
@ -21,24 +21,26 @@ use std::{os, ptr, thread};
|
||||||
use background_hang_monitor_api::ScriptHangAnnotation;
|
use background_hang_monitor_api::ScriptHangAnnotation;
|
||||||
use js::conversions::jsstr_to_string;
|
use js::conversions::jsstr_to_string;
|
||||||
use js::glue::{
|
use js::glue::{
|
||||||
CollectServoSizes, CreateJobQueue, DeleteJobQueue, DispatchableRun, JobQueueTraps,
|
CollectServoSizes, CreateJobQueue, DeleteJobQueue, DispatchableRun, JS_GetReservedSlot,
|
||||||
RUST_js_GetErrorMessage, SetBuildId, StreamConsumerConsumeChunk,
|
JobQueueTraps, RUST_js_GetErrorMessage, SetBuildId, StreamConsumerConsumeChunk,
|
||||||
StreamConsumerNoteResponseURLs, StreamConsumerStreamEnd, StreamConsumerStreamError,
|
StreamConsumerNoteResponseURLs, StreamConsumerStreamEnd, StreamConsumerStreamError,
|
||||||
};
|
};
|
||||||
use js::jsapi::{
|
use js::jsapi::{
|
||||||
AsmJSOption, BuildIdCharVector, ContextOptionsRef, DisableIncrementalGC,
|
AsmJSOption, BuildIdCharVector, CompilationType, ContextOptionsRef, Dispatchable as JSRunnable,
|
||||||
Dispatchable as JSRunnable, Dispatchable_MaybeShuttingDown, GCDescription, GCOptions,
|
Dispatchable_MaybeShuttingDown, GCDescription, GCOptions, GCProgress, GCReason,
|
||||||
GCProgress, GCReason, GetPromiseUserInputEventHandlingState, HandleObject, HandleString, Heap,
|
GetPromiseUserInputEventHandlingState, HandleObject, HandleString, HandleValue, Heap,
|
||||||
InitConsumeStreamCallback, InitDispatchToEventLoop, JS_AddExtraGCRootsTracer,
|
InitConsumeStreamCallback, InitDispatchToEventLoop, JS_AddExtraGCRootsTracer,
|
||||||
JS_InitDestroyPrincipalsCallback, JS_InitReadPrincipalsCallback, JS_SetGCCallback,
|
JS_InitDestroyPrincipalsCallback, JS_InitReadPrincipalsCallback, JS_NewObject,
|
||||||
JS_SetGCParameter, JS_SetGlobalJitCompilerOption, JS_SetOffthreadIonCompilationEnabled,
|
JS_SetGCCallback, JS_SetGCParameter, JS_SetGlobalJitCompilerOption,
|
||||||
JS_SetParallelParsingEnabled, JS_SetSecurityCallbacks, JSContext as RawJSContext, JSGCParamKey,
|
JS_SetOffthreadIonCompilationEnabled, JS_SetParallelParsingEnabled, JS_SetReservedSlot,
|
||||||
JSGCStatus, JSJitCompilerOption, JSObject, JSSecurityCallbacks, JSTracer, JobQueue, MimeType,
|
JS_SetSecurityCallbacks, JSCLASS_RESERVED_SLOTS_MASK, JSCLASS_RESERVED_SLOTS_SHIFT, JSClass,
|
||||||
|
JSClassOps, JSContext as RawJSContext, JSGCParamKey, JSGCStatus, JSJitCompilerOption, JSObject,
|
||||||
|
JSSecurityCallbacks, JSTracer, JobQueue, MimeType, MutableHandleObject,
|
||||||
PromiseRejectionHandlingState, PromiseUserInputEventHandlingState, RuntimeCode,
|
PromiseRejectionHandlingState, PromiseUserInputEventHandlingState, RuntimeCode,
|
||||||
SetDOMCallbacks, SetGCSliceCallback, SetJobQueue, SetPreserveWrapperCallbacks,
|
SetDOMCallbacks, SetGCSliceCallback, SetJobQueue, SetPreserveWrapperCallbacks,
|
||||||
SetProcessBuildIdOp, SetPromiseRejectionTrackerCallback, StreamConsumer as JSStreamConsumer,
|
SetProcessBuildIdOp, SetPromiseRejectionTrackerCallback, StreamConsumer as JSStreamConsumer,
|
||||||
};
|
};
|
||||||
use js::jsval::UndefinedValue;
|
use js::jsval::{ObjectValue, UndefinedValue};
|
||||||
use js::panic::wrap_panic;
|
use js::panic::wrap_panic;
|
||||||
pub(crate) use js::rust::ThreadSafeJSContext;
|
pub(crate) use js::rust::ThreadSafeJSContext;
|
||||||
use js::rust::wrappers::{GetPromiseIsHandled, JS_GetPromiseResult};
|
use js::rust::wrappers::{GetPromiseIsHandled, JS_GetPromiseResult};
|
||||||
|
@ -79,13 +81,13 @@ use crate::dom::promise::Promise;
|
||||||
use crate::dom::promiserejectionevent::PromiseRejectionEvent;
|
use crate::dom::promiserejectionevent::PromiseRejectionEvent;
|
||||||
use crate::dom::response::Response;
|
use crate::dom::response::Response;
|
||||||
use crate::microtask::{EnqueuedPromiseCallback, Microtask, MicrotaskQueue};
|
use crate::microtask::{EnqueuedPromiseCallback, Microtask, MicrotaskQueue};
|
||||||
use crate::realms::{AlreadyInRealm, InRealm};
|
use crate::realms::{AlreadyInRealm, InRealm, enter_realm};
|
||||||
use crate::script_module::EnsureModuleHooksInitialized;
|
use crate::script_module::EnsureModuleHooksInitialized;
|
||||||
use crate::script_thread::trace_thread;
|
use crate::script_thread::trace_thread;
|
||||||
use crate::task_source::SendableTaskSource;
|
use crate::task_source::SendableTaskSource;
|
||||||
|
|
||||||
static JOB_QUEUE_TRAPS: JobQueueTraps = JobQueueTraps {
|
static JOB_QUEUE_TRAPS: JobQueueTraps = JobQueueTraps {
|
||||||
getIncumbentGlobal: Some(get_incumbent_global),
|
getHostDefinedData: Some(get_host_defined_data),
|
||||||
enqueuePromiseJob: Some(enqueue_promise_job),
|
enqueuePromiseJob: Some(enqueue_promise_job),
|
||||||
runJobs: Some(run_jobs),
|
runJobs: Some(run_jobs),
|
||||||
empty: Some(empty),
|
empty: Some(empty),
|
||||||
|
@ -96,6 +98,7 @@ static JOB_QUEUE_TRAPS: JobQueueTraps = JobQueueTraps {
|
||||||
|
|
||||||
static SECURITY_CALLBACKS: JSSecurityCallbacks = JSSecurityCallbacks {
|
static SECURITY_CALLBACKS: JSSecurityCallbacks = JSSecurityCallbacks {
|
||||||
contentSecurityPolicyAllows: Some(content_security_policy_allows),
|
contentSecurityPolicyAllows: Some(content_security_policy_allows),
|
||||||
|
codeForEvalGets: None, //TODO
|
||||||
subsumes: Some(principals::subsumes),
|
subsumes: Some(principals::subsumes),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -227,19 +230,58 @@ impl From<ScriptThreadEventCategory> for ScriptHangAnnotation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HOST_DEFINED_DATA: JSClassOps = JSClassOps {
|
||||||
|
addProperty: None,
|
||||||
|
delProperty: None,
|
||||||
|
enumerate: None,
|
||||||
|
newEnumerate: None,
|
||||||
|
resolve: None,
|
||||||
|
mayResolve: None,
|
||||||
|
finalize: None,
|
||||||
|
call: None,
|
||||||
|
construct: None,
|
||||||
|
trace: None,
|
||||||
|
};
|
||||||
|
|
||||||
|
static HOST_DEFINED_DATA_CLASS: JSClass = JSClass {
|
||||||
|
name: c"HostDefinedData".as_ptr(),
|
||||||
|
flags: (HOST_DEFINED_DATA_SLOTS & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT,
|
||||||
|
cOps: &HOST_DEFINED_DATA,
|
||||||
|
spec: ptr::null(),
|
||||||
|
ext: ptr::null(),
|
||||||
|
oOps: ptr::null(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const INCUMBENT_SETTING_SLOT: u32 = 0;
|
||||||
|
const HOST_DEFINED_DATA_SLOTS: u32 = 1;
|
||||||
|
|
||||||
|
/// <https://searchfox.org/mozilla-central/rev/2a8a30f4c9b918b726891ab9d2d62b76152606f1/xpcom/base/CycleCollectedJSContext.cpp#316>
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
unsafe extern "C" fn get_incumbent_global(_: *const c_void, _: *mut RawJSContext) -> *mut JSObject {
|
unsafe extern "C" fn get_host_defined_data(
|
||||||
let mut result = ptr::null_mut();
|
_: *const c_void,
|
||||||
|
cx: *mut RawJSContext,
|
||||||
|
data: MutableHandleObject,
|
||||||
|
) -> bool {
|
||||||
wrap_panic(&mut || {
|
wrap_panic(&mut || {
|
||||||
let incumbent_global = GlobalScope::incumbent();
|
let Some(incumbent_global) = GlobalScope::incumbent() else {
|
||||||
|
data.set(ptr::null_mut());
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
assert!(incumbent_global.is_some());
|
let _realm = enter_realm(&*incumbent_global);
|
||||||
|
|
||||||
result = incumbent_global
|
rooted!(in(cx) let result = JS_NewObject(cx, &HOST_DEFINED_DATA_CLASS));
|
||||||
.map(|g| g.reflector().get_jsobject().get())
|
assert!(!result.is_null());
|
||||||
.unwrap_or(ptr::null_mut())
|
|
||||||
|
JS_SetReservedSlot(
|
||||||
|
*result,
|
||||||
|
INCUMBENT_SETTING_SLOT,
|
||||||
|
&ObjectValue(*incumbent_global.reflector().get_jsobject()),
|
||||||
|
);
|
||||||
|
|
||||||
|
data.set(result.get());
|
||||||
});
|
});
|
||||||
result
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
|
@ -298,6 +340,7 @@ unsafe extern "C" fn drop_interrupt_queues(interrupt_queues: *mut c_void) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <https://searchfox.org/mozilla-central/rev/2a8a30f4c9b918b726891ab9d2d62b76152606f1/xpcom/base/CycleCollectedJSContext.cpp#355>
|
||||||
/// SM callback for promise job resolution. Adds a promise callback to the current
|
/// SM callback for promise job resolution. Adds a promise callback to the current
|
||||||
/// global's microtask queue.
|
/// global's microtask queue.
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
|
@ -307,14 +350,20 @@ unsafe extern "C" fn enqueue_promise_job(
|
||||||
promise: HandleObject,
|
promise: HandleObject,
|
||||||
job: HandleObject,
|
job: HandleObject,
|
||||||
_allocation_site: HandleObject,
|
_allocation_site: HandleObject,
|
||||||
incumbent_global: HandleObject,
|
host_defined_data: HandleObject,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let cx = JSContext::from_ptr(cx);
|
let cx = JSContext::from_ptr(cx);
|
||||||
let mut result = false;
|
let mut result = false;
|
||||||
wrap_panic(&mut || {
|
wrap_panic(&mut || {
|
||||||
let microtask_queue = &*(extra as *const MicrotaskQueue);
|
let microtask_queue = &*(extra as *const MicrotaskQueue);
|
||||||
let global = if !incumbent_global.is_null() {
|
let global = if !host_defined_data.is_null() {
|
||||||
GlobalScope::from_object(incumbent_global.get())
|
let mut incumbent_global = UndefinedValue();
|
||||||
|
JS_GetReservedSlot(
|
||||||
|
host_defined_data.get(),
|
||||||
|
INCUMBENT_SETTING_SLOT,
|
||||||
|
&mut incumbent_global,
|
||||||
|
);
|
||||||
|
GlobalScope::from_object(incumbent_global.to_object())
|
||||||
} else {
|
} else {
|
||||||
let realm = AlreadyInRealm::assert_for_cx(cx);
|
let realm = AlreadyInRealm::assert_for_cx(cx);
|
||||||
GlobalScope::from_context(*cx, InRealm::already(&realm))
|
GlobalScope::from_context(*cx, InRealm::already(&realm))
|
||||||
|
@ -424,6 +473,12 @@ unsafe extern "C" fn content_security_policy_allows(
|
||||||
cx: *mut RawJSContext,
|
cx: *mut RawJSContext,
|
||||||
runtime_code: RuntimeCode,
|
runtime_code: RuntimeCode,
|
||||||
sample: HandleString,
|
sample: HandleString,
|
||||||
|
_compilation_type: CompilationType,
|
||||||
|
_parameter_strings: u8, //FIXME in bindings generation
|
||||||
|
_body_string: HandleString,
|
||||||
|
_parameter_args: u8, //FIXME in bindings generation
|
||||||
|
_body_arg: HandleValue,
|
||||||
|
can_compile_strings: *mut bool,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let mut allowed = false;
|
let mut allowed = false;
|
||||||
let cx = JSContext::from_ptr(cx);
|
let cx = JSContext::from_ptr(cx);
|
||||||
|
@ -445,7 +500,8 @@ unsafe extern "C" fn content_security_policy_allows(
|
||||||
RuntimeCode::WASM => global.get_csp_list().is_wasm_evaluation_allowed(global),
|
RuntimeCode::WASM => global.get_csp_list().is_wasm_evaluation_allowed(global),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
allowed
|
*can_compile_strings = allowed;
|
||||||
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
|
@ -601,7 +657,7 @@ impl Runtime {
|
||||||
Some(empty_has_released_callback),
|
Some(empty_has_released_callback),
|
||||||
);
|
);
|
||||||
// Pre barriers aren't working correctly at the moment
|
// Pre barriers aren't working correctly at the moment
|
||||||
DisableIncrementalGC(cx);
|
JS_SetGCParameter(cx, JSGCParamKey::JSGC_INCREMENTAL_GC_ENABLED, 0);
|
||||||
|
|
||||||
unsafe extern "C" fn dispatch_to_event_loop(
|
unsafe extern "C" fn dispatch_to_event_loop(
|
||||||
closure: *mut c_void,
|
closure: *mut c_void,
|
||||||
|
@ -779,9 +835,6 @@ impl Runtime {
|
||||||
if let Some(val) = in_range(pref!(js_mem_gc_empty_chunk_count_min), 0, 10_000) {
|
if let Some(val) = in_range(pref!(js_mem_gc_empty_chunk_count_min), 0, 10_000) {
|
||||||
JS_SetGCParameter(cx, JSGCParamKey::JSGC_MIN_EMPTY_CHUNK_COUNT, val as u32);
|
JS_SetGCParameter(cx, JSGCParamKey::JSGC_MIN_EMPTY_CHUNK_COUNT, val as u32);
|
||||||
}
|
}
|
||||||
if let Some(val) = in_range(pref!(js_mem_gc_empty_chunk_count_max), 0, 10_000) {
|
|
||||||
JS_SetGCParameter(cx, JSGCParamKey::JSGC_MAX_EMPTY_CHUNK_COUNT, val as u32);
|
|
||||||
}
|
|
||||||
|
|
||||||
Runtime {
|
Runtime {
|
||||||
rt: runtime,
|
rt: runtime,
|
||||||
|
|
|
@ -155,15 +155,15 @@ class AndroidTarget(CrossBuildTarget):
|
||||||
|
|
||||||
android_api = android_platform.replace("android-", "")
|
android_api = android_platform.replace("android-", "")
|
||||||
|
|
||||||
# Check if the NDK version is 26
|
# Check if the NDK version is 28
|
||||||
if not os.path.isfile(path.join(env["ANDROID_NDK_ROOT"], "source.properties")):
|
if not os.path.isfile(path.join(env["ANDROID_NDK_ROOT"], "source.properties")):
|
||||||
print("ANDROID_NDK should have file `source.properties`.")
|
print("ANDROID_NDK should have file `source.properties`.")
|
||||||
print("The environment variable ANDROID_NDK_ROOT may be set at a wrong path.")
|
print("The environment variable ANDROID_NDK_ROOT may be set at a wrong path.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
with open(path.join(env["ANDROID_NDK_ROOT"], "source.properties"), encoding="utf8") as ndk_properties:
|
with open(path.join(env["ANDROID_NDK_ROOT"], "source.properties"), encoding="utf8") as ndk_properties:
|
||||||
lines = ndk_properties.readlines()
|
lines = ndk_properties.readlines()
|
||||||
if lines[1].split(" = ")[1].split(".")[0] != "26":
|
if lines[1].split(" = ")[1].split(".")[0] != "28":
|
||||||
print("Servo currently only supports NDK r26c.")
|
print("Servo currently only supports NDK r28.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Android builds also require having the gcc bits on the PATH and various INCLUDE
|
# Android builds also require having the gcc bits on the PATH and various INCLUDE
|
||||||
|
@ -239,6 +239,9 @@ class AndroidTarget(CrossBuildTarget):
|
||||||
|
|
||||||
env["LIBCLANG_PATH"] = path.join(llvm_toolchain, "lib")
|
env["LIBCLANG_PATH"] = path.join(llvm_toolchain, "lib")
|
||||||
env["CLANG_PATH"] = to_ndk_bin("clang")
|
env["CLANG_PATH"] = to_ndk_bin("clang")
|
||||||
|
env["BINDGEN_EXTRA_CLANG_ARGS"] = (
|
||||||
|
f"--target={android_toolchain_name} --sysroot={path.join(llvm_toolchain, 'sysroot')}"
|
||||||
|
)
|
||||||
|
|
||||||
# A cheat-sheet for some of the build errors caused by getting the search path wrong...
|
# A cheat-sheet for some of the build errors caused by getting the search path wrong...
|
||||||
#
|
#
|
||||||
|
|
|
@ -2,13 +2,7 @@
|
||||||
[options properties should be accessed in lexicographic order.]
|
[options properties should be accessed in lexicographic order.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Passing a Float16Array as element of the blobParts array should work.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[Blob-constructor.any.worker.html]
|
[Blob-constructor.any.worker.html]
|
||||||
[options properties should be accessed in lexicographic order.]
|
[options properties should be accessed in lexicographic order.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Passing a Float16Array as element of the blobParts array should work.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
[getRandomValues.any.worker.html]
|
[getRandomValues.any.worker.html]
|
||||||
[Float16 arrays]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Large length: Int8Array]
|
[Large length: Int8Array]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -31,9 +28,6 @@
|
||||||
|
|
||||||
|
|
||||||
[getRandomValues.any.html]
|
[getRandomValues.any.html]
|
||||||
[Float16 arrays]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Large length: Int8Array]
|
[Large length: Int8Array]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -158,9 +158,6 @@
|
||||||
[Invalid encodeInto() destination: Float64Array, backed by: SharedArrayBuffer]
|
[Invalid encodeInto() destination: Float64Array, backed by: SharedArrayBuffer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Invalid encodeInto() destination: Float16Array, backed by: ArrayBuffer]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Invalid encodeInto() destination: Float16Array, backed by: SharedArrayBuffer]
|
[Invalid encodeInto() destination: Float16Array, backed by: SharedArrayBuffer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -328,9 +325,6 @@
|
||||||
[Invalid encodeInto() destination: Float64Array, backed by: SharedArrayBuffer]
|
[Invalid encodeInto() destination: Float64Array, backed by: SharedArrayBuffer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Invalid encodeInto() destination: Float16Array, backed by: ArrayBuffer]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Invalid encodeInto() destination: Float16Array, backed by: SharedArrayBuffer]
|
[Invalid encodeInto() destination: Float16Array, backed by: SharedArrayBuffer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -5,10 +5,5 @@
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
[request-headers.any.html]
|
[request-headers.any.html]
|
||||||
[Fetch with POST with Float16Array body]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[request-headers.any.worker.html]
|
[request-headers.any.worker.html]
|
||||||
[Fetch with POST with Float16Array body]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -17,9 +17,6 @@
|
||||||
[Streaming upload shouldn't work on Http/1.1.]
|
[Streaming upload shouldn't work on Http/1.1.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Fetch with POST with Float16Array body]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[request-upload.any.serviceworker.html]
|
[request-upload.any.serviceworker.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
@ -45,6 +42,3 @@
|
||||||
|
|
||||||
[Streaming upload shouldn't work on Http/1.1.]
|
[Streaming upload shouldn't work on Http/1.1.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Fetch with POST with Float16Array body]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -8,10 +8,20 @@
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
||||||
[then-interception.any.worker.html]
|
[then-interception.any.worker.html]
|
||||||
expected: CRASH
|
[piping should not be observable]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[tee should not be observable]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
[then-interception.any.html]
|
[then-interception.any.html]
|
||||||
expected: CRASH
|
[piping should not be observable]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[tee should not be observable]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
||||||
[then-interception.https.any.shadowrealm-in-serviceworker.html]
|
[then-interception.https.any.shadowrealm-in-serviceworker.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
[script-enforcement-008.https.html]
|
|
||||||
[script-src CSP directive is properly set.]
|
|
||||||
expected: FAIL
|
|
|
@ -1,7 +1,4 @@
|
||||||
[script-enforcement-009.https.html]
|
[script-enforcement-009.https.html]
|
||||||
[script-src CSP directive is properly set.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Untrusted SVGScriptElement with classic type uses the source text returned by the default policy for inline CSP check.]
|
[Untrusted SVGScriptElement with classic type uses the source text returned by the default policy for inline CSP check.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +0,0 @@
|
||||||
[basic.any.worker.html]
|
|
||||||
expected: ERROR
|
|
||||||
|
|
||||||
[basic.any.html]
|
|
||||||
expected: ERROR
|
|
|
@ -1,242 +0,0 @@
|
||||||
[constants.any.worker.html]
|
|
||||||
[constants]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 1]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 2]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 3]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 4]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 5]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 6]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 7]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 8]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 9]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 10]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 11]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 12]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 13]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 14]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 15]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 16]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 17]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 18]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 19]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 20]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 21]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 22]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 23]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 24]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 25]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 26]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 27]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 28]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 29]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 30]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 31]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 32]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 33]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 34]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 35]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 36]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 37]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 38]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 39]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[constants.any.html]
|
|
||||||
[constants]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 1]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 2]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 3]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 4]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 5]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 6]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 7]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 8]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 9]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 10]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 11]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 12]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 13]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 14]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 15]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 16]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 17]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 18]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 19]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 20]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 21]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 22]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 23]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 24]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 25]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 26]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 27]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 28]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 29]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 30]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 31]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 32]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 33]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 34]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 35]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 36]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 37]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 38]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[constants 39]
|
|
||||||
expected: FAIL
|
|
|
@ -1,8 +0,0 @@
|
||||||
[imports.any.html]
|
|
||||||
[imports]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[imports.any.worker.html]
|
|
||||||
[imports]
|
|
||||||
expected: FAIL
|
|
|
@ -1,12 +1,6 @@
|
||||||
[DOMException-is-error.any.worker.html]
|
[DOMException-is-error.any.worker.html]
|
||||||
[DOMException-is-error]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[DOMException-is-error.any.html]
|
[DOMException-is-error.any.html]
|
||||||
[DOMException-is-error]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[DOMException-is-error.https.any.shadowrealm-in-serviceworker.html]
|
[DOMException-is-error.https.any.shadowrealm-in-serviceworker.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
[Send-binary-arraybufferview-float16.any.html?default]
|
[Send-binary-arraybufferview-float16.any.html?default]
|
||||||
[Send binary data on a WebSocket - ArrayBufferView - Float16Array - Connection should be closed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[Send-binary-arraybufferview-float16.any.worker.html?wss]
|
[Send-binary-arraybufferview-float16.any.worker.html?wss]
|
||||||
[Send binary data on a WebSocket - ArrayBufferView - Float16Array - Connection should be closed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[Send-binary-arraybufferview-float16.any.html?wpt_flags=h2]
|
[Send-binary-arraybufferview-float16.any.html?wpt_flags=h2]
|
||||||
[Send binary data on a WebSocket - ArrayBufferView - Float16Array - Connection should be closed]
|
[Send binary data on a WebSocket - ArrayBufferView - Float16Array - Connection should be closed]
|
||||||
|
@ -14,9 +8,6 @@
|
||||||
|
|
||||||
|
|
||||||
[Send-binary-arraybufferview-float16.any.worker.html?default]
|
[Send-binary-arraybufferview-float16.any.worker.html?default]
|
||||||
[Send binary data on a WebSocket - ArrayBufferView - Float16Array - Connection should be closed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
||||||
[Send-binary-arraybufferview-float16.any.worker.html?wpt_flags=h2]
|
[Send-binary-arraybufferview-float16.any.worker.html?wpt_flags=h2]
|
||||||
[Send binary data on a WebSocket - ArrayBufferView - Float16Array - Connection should be closed]
|
[Send binary data on a WebSocket - ArrayBufferView - Float16Array - Connection should be closed]
|
||||||
|
@ -24,5 +15,3 @@
|
||||||
|
|
||||||
|
|
||||||
[Send-binary-arraybufferview-float16.any.html?wss]
|
[Send-binary-arraybufferview-float16.any.html?wss]
|
||||||
[Send binary data on a WebSocket - ArrayBufferView - Float16Array - Connection should be closed]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -13,6 +13,3 @@
|
||||||
|
|
||||||
[The IDBCursorWithValue interface object should be exposed.]
|
[The IDBCursorWithValue interface object should be exposed.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[The Float16Array interface object should be exposed.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
2
tests/wpt/mozilla/meta/MANIFEST.json
vendored
2
tests/wpt/mozilla/meta/MANIFEST.json
vendored
|
@ -10651,7 +10651,7 @@
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"interfaces.js": [
|
"interfaces.js": [
|
||||||
"fbfc396b62c55415c0493b7528bd5e2b959452e6",
|
"24c7fa68dbca91a9d26b2534c81ea7338cb2102a",
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
"max-session-history-frame.html": [
|
"max-session-history-frame.html": [
|
||||||
|
|
|
@ -19,6 +19,7 @@ function test_interfaces(interfaceNamesInGlobalScope) {
|
||||||
"Error",
|
"Error",
|
||||||
"EvalError",
|
"EvalError",
|
||||||
"FinalizationRegistry",
|
"FinalizationRegistry",
|
||||||
|
"Float16Array",
|
||||||
"Float32Array",
|
"Float32Array",
|
||||||
"Float64Array",
|
"Float64Array",
|
||||||
"Function",
|
"Function",
|
||||||
|
@ -28,6 +29,7 @@ function test_interfaces(interfaceNamesInGlobalScope) {
|
||||||
"Int8Array",
|
"Int8Array",
|
||||||
"InternalError",
|
"InternalError",
|
||||||
"Intl",
|
"Intl",
|
||||||
|
"Iterator",
|
||||||
"JSON",
|
"JSON",
|
||||||
"Map",
|
"Map",
|
||||||
"Math",
|
"Math",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue