зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #14557 - Improve safety or our tracing architecture (from nox:trace); r=jdm
Source-Repo: https://github.com/servo/servo Source-Revision: 87f7b29d65d8a0ad137e38412aef50734b24ea6c
This commit is contained in:
Родитель
0124e8b7ab
Коммит
3b06404d3b
|
@ -29,19 +29,19 @@ impl EarlyLintPass for BanPass {
|
|||
.and_then(|t| t.get(0))
|
||||
.and_then(|t| match_ty_unwrap(&**t, &["dom", "bindings", "js", "JS"]))
|
||||
.is_some() {
|
||||
cx.span_lint(BANNED_TYPE, ty.span, "Banned type Cell<JS<T>> detected. Use MutHeap<JS<T>> instead")
|
||||
cx.span_lint(BANNED_TYPE, ty.span, "Banned type Cell<JS<T>> detected. Use MutJS<JS<T>> instead")
|
||||
}
|
||||
if match_ty_unwrap(ty, &["std", "cell", "Cell"])
|
||||
.and_then(|t| t.get(0))
|
||||
.and_then(|t| match_ty_unwrap(&**t, &["js", "jsval", "JSVal"]))
|
||||
.is_some() {
|
||||
cx.span_lint(BANNED_TYPE, ty.span, "Banned type Cell<JSVal> detected. Use MutHeap<JSVal> instead")
|
||||
cx.span_lint(BANNED_TYPE, ty.span, "Banned type Cell<JSVal> detected. Use MutJS<JSVal> instead")
|
||||
}
|
||||
if match_ty_unwrap(ty, &["dom", "bindings", "cell", "DOMRefCell"])
|
||||
.and_then(|t| t.get(0))
|
||||
.and_then(|t| match_ty_unwrap(&**t, &["dom", "bindings", "js", "JS"]))
|
||||
.is_some() {
|
||||
cx.span_lint(BANNED_TYPE, ty.span, "Banned type DOMRefCell<JS<T>> detected. Use MutHeap<JS<T>> instead")
|
||||
cx.span_lint(BANNED_TYPE, ty.span, "Banned type DOMRefCell<JS<T>> detected. Use MutJS<JS<T>> instead")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,8 +6,7 @@ use devtools_traits::AttrInfo;
|
|||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::AttrBinding::{self, AttrMethods};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap};
|
||||
use dom::bindings::js::{LayoutJS, Root, RootedReference};
|
||||
use dom::bindings::js::{LayoutJS, MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::element::{AttributeMutation, Element};
|
||||
|
@ -28,7 +27,7 @@ pub struct Attr {
|
|||
value: DOMRefCell<AttrValue>,
|
||||
|
||||
/// the element that owns this attribute.
|
||||
owner: MutNullableHeap<JS<Element>>,
|
||||
owner: MutNullableJS<Element>,
|
||||
}
|
||||
|
||||
impl Attr {
|
||||
|
@ -48,7 +47,7 @@ impl Attr {
|
|||
prefix: prefix,
|
||||
},
|
||||
value: DOMRefCell::new(value),
|
||||
owner: MutNullableHeap::new(owner),
|
||||
owner: MutNullableJS::new(owner),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -229,20 +229,6 @@ impl LayoutJS<Node> {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/// A trait to be implemented for JS-managed types that can be stored in
|
||||
/// mutable member fields.
|
||||
///
|
||||
/// Do not implement this trait yourself.
|
||||
pub trait HeapGCValue: JSTraceable {
|
||||
}
|
||||
|
||||
impl HeapGCValue for Heap<JSVal> {
|
||||
}
|
||||
|
||||
impl<T: DomObject> HeapGCValue for JS<T> {
|
||||
}
|
||||
|
||||
/// A holder that provides interior mutability for GC-managed JSVals.
|
||||
///
|
||||
/// Must be used in place of traditional interior mutability to ensure proper
|
||||
|
@ -293,20 +279,20 @@ impl MutHeapJSVal {
|
|||
/// on `JS<T>`.
|
||||
#[must_root]
|
||||
#[derive(JSTraceable)]
|
||||
pub struct MutHeap<T: HeapGCValue> {
|
||||
val: UnsafeCell<T>,
|
||||
pub struct MutJS<T: DomObject> {
|
||||
val: UnsafeCell<JS<T>>,
|
||||
}
|
||||
|
||||
impl<T: DomObject> MutHeap<JS<T>> {
|
||||
/// Create a new `MutHeap`.
|
||||
pub fn new(initial: &T) -> MutHeap<JS<T>> {
|
||||
impl<T: DomObject> MutJS<T> {
|
||||
/// Create a new `MutJS`.
|
||||
pub fn new(initial: &T) -> MutJS<T> {
|
||||
debug_assert!(thread_state::get().is_script());
|
||||
MutHeap {
|
||||
MutJS {
|
||||
val: UnsafeCell::new(JS::from_ref(initial)),
|
||||
}
|
||||
}
|
||||
|
||||
/// Set this `MutHeap` to the given value.
|
||||
/// Set this `MutJS` to the given value.
|
||||
pub fn set(&self, val: &T) {
|
||||
debug_assert!(thread_state::get().is_script());
|
||||
unsafe {
|
||||
|
@ -314,7 +300,7 @@ impl<T: DomObject> MutHeap<JS<T>> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Get the value in this `MutHeap`.
|
||||
/// Get the value in this `MutJS`.
|
||||
pub fn get(&self) -> Root<T> {
|
||||
debug_assert!(thread_state::get().is_script());
|
||||
unsafe {
|
||||
|
@ -323,14 +309,14 @@ impl<T: DomObject> MutHeap<JS<T>> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<T: HeapGCValue> HeapSizeOf for MutHeap<T> {
|
||||
impl<T: DomObject> HeapSizeOf for MutJS<T> {
|
||||
fn heap_size_of_children(&self) -> usize {
|
||||
// See comment on HeapSizeOf for JS<T>.
|
||||
0
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: DomObject> PartialEq for MutHeap<JS<T>> {
|
||||
impl<T: DomObject> PartialEq for MutJS<T> {
|
||||
fn eq(&self, other: &Self) -> bool {
|
||||
unsafe {
|
||||
*self.val.get() == *other.val.get()
|
||||
|
@ -338,7 +324,7 @@ impl<T: DomObject> PartialEq for MutHeap<JS<T>> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<T: DomObject + PartialEq> PartialEq<T> for MutHeap<JS<T>> {
|
||||
impl<T: DomObject + PartialEq> PartialEq<T> for MutJS<T> {
|
||||
fn eq(&self, other: &T) -> bool {
|
||||
unsafe {
|
||||
**self.val.get() == *other
|
||||
|
@ -354,15 +340,15 @@ impl<T: DomObject + PartialEq> PartialEq<T> for MutHeap<JS<T>> {
|
|||
/// on `JS<T>`.
|
||||
#[must_root]
|
||||
#[derive(JSTraceable)]
|
||||
pub struct MutNullableHeap<T: HeapGCValue> {
|
||||
ptr: UnsafeCell<Option<T>>,
|
||||
pub struct MutNullableJS<T: DomObject> {
|
||||
ptr: UnsafeCell<Option<JS<T>>>,
|
||||
}
|
||||
|
||||
impl<T: DomObject> MutNullableHeap<JS<T>> {
|
||||
/// Create a new `MutNullableHeap`.
|
||||
pub fn new(initial: Option<&T>) -> MutNullableHeap<JS<T>> {
|
||||
impl<T: DomObject> MutNullableJS<T> {
|
||||
/// Create a new `MutNullableJS`.
|
||||
pub fn new(initial: Option<&T>) -> MutNullableJS<T> {
|
||||
debug_assert!(thread_state::get().is_script());
|
||||
MutNullableHeap {
|
||||
MutNullableJS {
|
||||
ptr: UnsafeCell::new(initial.map(JS::from_ref)),
|
||||
}
|
||||
}
|
||||
|
@ -400,7 +386,7 @@ impl<T: DomObject> MutNullableHeap<JS<T>> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Set this `MutNullableHeap` to the given value.
|
||||
/// Set this `MutNullableJS` to the given value.
|
||||
pub fn set(&self, val: Option<&T>) {
|
||||
debug_assert!(thread_state::get().is_script());
|
||||
unsafe {
|
||||
|
@ -416,7 +402,7 @@ impl<T: DomObject> MutNullableHeap<JS<T>> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<T: DomObject> PartialEq for MutNullableHeap<JS<T>> {
|
||||
impl<T: DomObject> PartialEq for MutNullableJS<T> {
|
||||
fn eq(&self, other: &Self) -> bool {
|
||||
unsafe {
|
||||
*self.ptr.get() == *other.ptr.get()
|
||||
|
@ -424,7 +410,7 @@ impl<T: DomObject> PartialEq for MutNullableHeap<JS<T>> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, T: DomObject> PartialEq<Option<&'a T>> for MutNullableHeap<JS<T>> {
|
||||
impl<'a, T: DomObject> PartialEq<Option<&'a T>> for MutNullableJS<T> {
|
||||
fn eq(&self, other: &Option<&T>) -> bool {
|
||||
unsafe {
|
||||
*self.ptr.get() == other.map(JS::from_ref)
|
||||
|
@ -432,17 +418,17 @@ impl<'a, T: DomObject> PartialEq<Option<&'a T>> for MutNullableHeap<JS<T>> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<T: HeapGCValue> Default for MutNullableHeap<T> {
|
||||
impl<T: DomObject> Default for MutNullableJS<T> {
|
||||
#[allow(unrooted_must_root)]
|
||||
fn default() -> MutNullableHeap<T> {
|
||||
fn default() -> MutNullableJS<T> {
|
||||
debug_assert!(thread_state::get().is_script());
|
||||
MutNullableHeap {
|
||||
MutNullableJS {
|
||||
ptr: UnsafeCell::new(None),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: HeapGCValue> HeapSizeOf for MutNullableHeap<T> {
|
||||
impl<T: DomObject> HeapSizeOf for MutNullableJS<T> {
|
||||
fn heap_size_of_children(&self) -> usize {
|
||||
// See comment on HeapSizeOf for JS<T>.
|
||||
0
|
||||
|
|
|
@ -59,7 +59,6 @@ use js::glue::{CallObjectTracer, CallUnbarrieredObjectTracer, CallValueTracer};
|
|||
use js::jsapi::{GCTraceKindToAscii, Heap, JSObject, JSTracer, TraceKind};
|
||||
use js::jsval::JSVal;
|
||||
use js::rust::Runtime;
|
||||
use libc;
|
||||
use msg::constellation_msg::{FrameId, FrameType, PipelineId};
|
||||
use net_traits::{Metadata, NetworkError, ReferrerPolicy, ResourceThreads};
|
||||
use net_traits::filemanager_thread::RelativePos;
|
||||
|
@ -82,7 +81,7 @@ use serde::{Deserialize, Serialize};
|
|||
use servo_atoms::Atom;
|
||||
use servo_url::ServoUrl;
|
||||
use smallvec::SmallVec;
|
||||
use std::cell::{Cell, UnsafeCell};
|
||||
use std::cell::{Cell, RefCell, UnsafeCell};
|
||||
use std::collections::{BTreeMap, HashMap, HashSet, VecDeque};
|
||||
use std::hash::{BuildHasher, Hash};
|
||||
use std::ops::{Deref, DerefMut};
|
||||
|
@ -568,27 +567,16 @@ unsafe impl JSTraceable for RwLock<MediaList> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Homemade trait object for JSTraceable things
|
||||
struct TraceableInfo {
|
||||
pub ptr: *const libc::c_void,
|
||||
pub trace: unsafe fn(obj: *const libc::c_void, tracer: *mut JSTracer),
|
||||
}
|
||||
|
||||
/// Holds a set of JSTraceables that need to be rooted
|
||||
pub struct RootedTraceableSet {
|
||||
set: Vec<TraceableInfo>,
|
||||
set: Vec<*const JSTraceable>,
|
||||
}
|
||||
|
||||
#[allow(missing_docs)] // FIXME
|
||||
mod dummy { // Attributes don’t apply through the macro.
|
||||
use std::cell::RefCell;
|
||||
use std::rc::Rc;
|
||||
use super::RootedTraceableSet;
|
||||
thread_local!(
|
||||
/// TLV Holds a set of JSTraceables that need to be rooted
|
||||
thread_local!(pub static ROOTED_TRACEABLES: Rc<RefCell<RootedTraceableSet>> =
|
||||
Rc::new(RefCell::new(RootedTraceableSet::new())));
|
||||
}
|
||||
pub use self::dummy::ROOTED_TRACEABLES;
|
||||
static ROOTED_TRACEABLES: Rc<RefCell<RootedTraceableSet>> =
|
||||
Rc::new(RefCell::new(RootedTraceableSet::new()));
|
||||
);
|
||||
|
||||
impl RootedTraceableSet {
|
||||
fn new() -> RootedTraceableSet {
|
||||
|
@ -597,12 +585,12 @@ impl RootedTraceableSet {
|
|||
}
|
||||
}
|
||||
|
||||
unsafe fn remove<T: JSTraceable>(traceable: &T) {
|
||||
unsafe fn remove(traceable: *const JSTraceable) {
|
||||
ROOTED_TRACEABLES.with(|ref traceables| {
|
||||
let mut traceables = traceables.borrow_mut();
|
||||
let idx =
|
||||
match traceables.set.iter()
|
||||
.rposition(|x| x.ptr == traceable as *const T as *const _) {
|
||||
.rposition(|x| *x == traceable) {
|
||||
Some(idx) => idx,
|
||||
None => unreachable!(),
|
||||
};
|
||||
|
@ -610,25 +598,15 @@ impl RootedTraceableSet {
|
|||
});
|
||||
}
|
||||
|
||||
unsafe fn add<T: JSTraceable>(traceable: &T) {
|
||||
unsafe fn add(traceable: *const JSTraceable) {
|
||||
ROOTED_TRACEABLES.with(|ref traceables| {
|
||||
unsafe fn trace<T: JSTraceable>(obj: *const libc::c_void, tracer: *mut JSTracer) {
|
||||
let obj: &T = &*(obj as *const T);
|
||||
obj.trace(tracer);
|
||||
}
|
||||
|
||||
let mut traceables = traceables.borrow_mut();
|
||||
let info = TraceableInfo {
|
||||
ptr: traceable as *const T as *const libc::c_void,
|
||||
trace: trace::<T>,
|
||||
};
|
||||
traceables.set.push(info);
|
||||
traceables.borrow_mut().set.push(traceable);
|
||||
})
|
||||
}
|
||||
|
||||
unsafe fn trace(&self, tracer: *mut JSTracer) {
|
||||
for info in &self.set {
|
||||
(info.trace)(info.ptr, tracer);
|
||||
for traceable in &self.set {
|
||||
(**traceable).trace(tracer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -640,11 +618,11 @@ impl RootedTraceableSet {
|
|||
/// If you have an arbitrary number of DomObjects to root, use rooted_vec!.
|
||||
/// If you know what you're doing, use this.
|
||||
#[derive(JSTraceable)]
|
||||
pub struct RootedTraceable<'a, T: 'a + JSTraceable> {
|
||||
pub struct RootedTraceable<'a, T: 'static + JSTraceable> {
|
||||
ptr: &'a T,
|
||||
}
|
||||
|
||||
impl<'a, T: JSTraceable> RootedTraceable<'a, T> {
|
||||
impl<'a, T: JSTraceable + 'static> RootedTraceable<'a, T> {
|
||||
/// Root a JSTraceable thing for the life of this RootedTraceable
|
||||
pub fn new(traceable: &'a T) -> RootedTraceable<'a, T> {
|
||||
unsafe {
|
||||
|
@ -656,7 +634,7 @@ impl<'a, T: JSTraceable> RootedTraceable<'a, T> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, T: JSTraceable> Drop for RootedTraceable<'a, T> {
|
||||
impl<'a, T: JSTraceable + 'static> Drop for RootedTraceable<'a, T> {
|
||||
fn drop(&mut self) {
|
||||
unsafe {
|
||||
RootedTraceableSet::remove(self.ptr);
|
||||
|
@ -686,15 +664,29 @@ impl<T: JSTraceable> RootableVec<T> {
|
|||
|
||||
/// A vector of items that are rooted for the lifetime 'a.
|
||||
#[allow_unrooted_interior]
|
||||
pub struct RootedVec<'a, T: 'a + JSTraceable> {
|
||||
pub struct RootedVec<'a, T: 'static + JSTraceable> {
|
||||
root: &'a mut RootableVec<T>,
|
||||
}
|
||||
|
||||
impl<'a, T: JSTraceable + DomObject> RootedVec<'a, JS<T>> {
|
||||
impl<'a, T: 'static + JSTraceable> RootedVec<'a, T> {
|
||||
/// Create a vector of items of type T that is rooted for
|
||||
/// the lifetime of this struct
|
||||
pub fn new<I: Iterator<Item = Root<T>>>(root: &'a mut RootableVec<JS<T>>, iter: I)
|
||||
-> RootedVec<'a, JS<T>> {
|
||||
pub fn new(root: &'a mut RootableVec<T>) -> Self {
|
||||
unsafe {
|
||||
RootedTraceableSet::add(root);
|
||||
}
|
||||
RootedVec {
|
||||
root: root,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, T: 'static + JSTraceable + DomObject> RootedVec<'a, JS<T>> {
|
||||
/// Create a vector of items of type JS<T> that is rooted for
|
||||
/// the lifetime of this struct
|
||||
pub fn from_iter<I>(root: &'a mut RootableVec<JS<T>>, iter: I) -> Self
|
||||
where I: Iterator<Item = Root<T>>
|
||||
{
|
||||
unsafe {
|
||||
RootedTraceableSet::add(root);
|
||||
}
|
||||
|
@ -705,7 +697,7 @@ impl<'a, T: JSTraceable + DomObject> RootedVec<'a, JS<T>> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a, T: JSTraceable> Drop for RootedVec<'a, T> {
|
||||
impl<'a, T: JSTraceable + 'static> Drop for RootedVec<'a, T> {
|
||||
fn drop(&mut self) {
|
||||
self.clear();
|
||||
unsafe {
|
||||
|
|
|
@ -15,7 +15,7 @@ use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
|
|||
use dom::bindings::codegen::UnionTypes::StringOrUnsignedLong;
|
||||
use dom::bindings::error::Error::{self, NotFound, Security, Type};
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::js::{JS, MutHeap, Root};
|
||||
use dom::bindings::js::{MutJS, Root};
|
||||
use dom::bindings::refcounted::{Trusted, TrustedPromise};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
|
@ -86,7 +86,7 @@ impl<Listener: AsyncBluetoothListener + DomObject> BluetoothResponseListener for
|
|||
#[dom_struct]
|
||||
pub struct Bluetooth {
|
||||
eventtarget: EventTarget,
|
||||
device_instance_map: DOMRefCell<HashMap<String, MutHeap<JS<BluetoothDevice>>>>,
|
||||
device_instance_map: DOMRefCell<HashMap<String, MutJS<BluetoothDevice>>>,
|
||||
}
|
||||
|
||||
impl Bluetooth {
|
||||
|
@ -409,7 +409,7 @@ impl AsyncBluetoothListener for Bluetooth {
|
|||
device.name.map(DOMString::from),
|
||||
&ad_data,
|
||||
&self);
|
||||
device_instance_map.insert(device.id, MutHeap::new(&bt_device));
|
||||
device_instance_map.insert(device.id, MutJS::new(&bt_device));
|
||||
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetooth-requestdevice
|
||||
// Step 5.
|
||||
promise.resolve_native(promise_cx, &bt_device);
|
||||
|
|
|
@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::BluetoothDeviceBinding;
|
|||
use dom::bindings::codegen::Bindings::BluetoothDeviceBinding::BluetoothDeviceMethods;
|
||||
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerMethods;
|
||||
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
|
||||
use dom::bindings::js::{JS, Root, MutHeap, MutNullableHeap};
|
||||
use dom::bindings::js::{MutJS, MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::bluetooth::Bluetooth;
|
||||
|
@ -29,12 +29,12 @@ pub struct BluetoothDevice {
|
|||
eventtarget: EventTarget,
|
||||
id: DOMString,
|
||||
name: Option<DOMString>,
|
||||
ad_data: MutHeap<JS<BluetoothAdvertisingData>>,
|
||||
gatt: MutNullableHeap<JS<BluetoothRemoteGATTServer>>,
|
||||
context: MutHeap<JS<Bluetooth>>,
|
||||
attribute_instance_map: (DOMRefCell<HashMap<String, MutHeap<JS<BluetoothRemoteGATTService>>>>,
|
||||
DOMRefCell<HashMap<String, MutHeap<JS<BluetoothRemoteGATTCharacteristic>>>>,
|
||||
DOMRefCell<HashMap<String, MutHeap<JS<BluetoothRemoteGATTDescriptor>>>>),
|
||||
ad_data: MutJS<BluetoothAdvertisingData>,
|
||||
gatt: MutNullableJS<BluetoothRemoteGATTServer>,
|
||||
context: MutJS<Bluetooth>,
|
||||
attribute_instance_map: (DOMRefCell<HashMap<String, MutJS<BluetoothRemoteGATTService>>>,
|
||||
DOMRefCell<HashMap<String, MutJS<BluetoothRemoteGATTCharacteristic>>>,
|
||||
DOMRefCell<HashMap<String, MutJS<BluetoothRemoteGATTDescriptor>>>),
|
||||
}
|
||||
|
||||
impl BluetoothDevice {
|
||||
|
@ -47,9 +47,9 @@ impl BluetoothDevice {
|
|||
eventtarget: EventTarget::new_inherited(),
|
||||
id: id,
|
||||
name: name,
|
||||
ad_data: MutHeap::new(ad_data),
|
||||
ad_data: MutJS::new(ad_data),
|
||||
gatt: Default::default(),
|
||||
context: MutHeap::new(context),
|
||||
context: MutJS::new(context),
|
||||
attribute_instance_map: (DOMRefCell::new(HashMap::new()),
|
||||
DOMRefCell::new(HashMap::new()),
|
||||
DOMRefCell::new(HashMap::new())),
|
||||
|
@ -84,7 +84,7 @@ impl BluetoothDevice {
|
|||
DOMString::from(service.uuid.clone()),
|
||||
service.is_primary,
|
||||
service.instance_id.clone());
|
||||
service_map.insert(service.instance_id.clone(), MutHeap::new(&bt_service));
|
||||
service_map.insert(service.instance_id.clone(), MutJS::new(&bt_service));
|
||||
return bt_service;
|
||||
}
|
||||
|
||||
|
@ -113,7 +113,7 @@ impl BluetoothDevice {
|
|||
DOMString::from(characteristic.uuid.clone()),
|
||||
&properties,
|
||||
characteristic.instance_id.clone());
|
||||
characteristic_map.insert(characteristic.instance_id.clone(), MutHeap::new(&bt_characteristic));
|
||||
characteristic_map.insert(characteristic.instance_id.clone(), MutJS::new(&bt_characteristic));
|
||||
return bt_characteristic;
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,7 @@ impl BluetoothDevice {
|
|||
characteristic,
|
||||
DOMString::from(descriptor.uuid.clone()),
|
||||
descriptor.instance_id.clone());
|
||||
descriptor_map.insert(descriptor.instance_id.clone(), MutHeap::new(&bt_descriptor));
|
||||
descriptor_map.insert(descriptor.instance_id.clone(), MutJS::new(&bt_descriptor));
|
||||
return bt_descriptor;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServiceBinding::Bluetoo
|
|||
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
|
||||
use dom::bindings::error::Error::{self, InvalidModification, Network, NotSupported, Security};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutHeap, Root};
|
||||
use dom::bindings::js::{MutJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::{ByteString, DOMString};
|
||||
use dom::bluetooth::{AsyncBluetoothListener, response_async};
|
||||
|
@ -38,9 +38,9 @@ pub const MAXIMUM_ATTRIBUTE_LENGTH: usize = 512;
|
|||
#[dom_struct]
|
||||
pub struct BluetoothRemoteGATTCharacteristic {
|
||||
eventtarget: EventTarget,
|
||||
service: MutHeap<JS<BluetoothRemoteGATTService>>,
|
||||
service: MutJS<BluetoothRemoteGATTService>,
|
||||
uuid: DOMString,
|
||||
properties: MutHeap<JS<BluetoothCharacteristicProperties>>,
|
||||
properties: MutJS<BluetoothCharacteristicProperties>,
|
||||
value: DOMRefCell<Option<ByteString>>,
|
||||
instance_id: String,
|
||||
}
|
||||
|
@ -53,9 +53,9 @@ impl BluetoothRemoteGATTCharacteristic {
|
|||
-> BluetoothRemoteGATTCharacteristic {
|
||||
BluetoothRemoteGATTCharacteristic {
|
||||
eventtarget: EventTarget::new_inherited(),
|
||||
service: MutHeap::new(service),
|
||||
service: MutJS::new(service),
|
||||
uuid: uuid,
|
||||
properties: MutHeap::new(properties),
|
||||
properties: MutJS::new(properties),
|
||||
value: DOMRefCell::new(None),
|
||||
instance_id: instance_id,
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ use dom::bindings::codegen::Bindings::BluetoothRemoteGATTDescriptorBinding::Blue
|
|||
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerMethods;
|
||||
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServiceBinding::BluetoothRemoteGATTServiceMethods;
|
||||
use dom::bindings::error::Error::{self, InvalidModification, Network, Security};
|
||||
use dom::bindings::js::{JS, MutHeap, Root};
|
||||
use dom::bindings::js::{MutJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::{ByteString, DOMString};
|
||||
use dom::bluetooth::{AsyncBluetoothListener, response_async};
|
||||
|
@ -28,7 +28,7 @@ use std::rc::Rc;
|
|||
#[dom_struct]
|
||||
pub struct BluetoothRemoteGATTDescriptor {
|
||||
reflector_: Reflector,
|
||||
characteristic: MutHeap<JS<BluetoothRemoteGATTCharacteristic>>,
|
||||
characteristic: MutJS<BluetoothRemoteGATTCharacteristic>,
|
||||
uuid: DOMString,
|
||||
value: DOMRefCell<Option<ByteString>>,
|
||||
instance_id: String,
|
||||
|
@ -41,7 +41,7 @@ impl BluetoothRemoteGATTDescriptor {
|
|||
-> BluetoothRemoteGATTDescriptor {
|
||||
BluetoothRemoteGATTDescriptor {
|
||||
reflector_: Reflector::new(),
|
||||
characteristic: MutHeap::new(characteristic),
|
||||
characteristic: MutJS::new(characteristic),
|
||||
uuid: uuid,
|
||||
value: DOMRefCell::new(None),
|
||||
instance_id: instance_id,
|
||||
|
|
|
@ -9,7 +9,7 @@ use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding;
|
|||
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServerBinding::BluetoothRemoteGATTServerMethods;
|
||||
use dom::bindings::error::Error::{self, Network, Security};
|
||||
use dom::bindings::error::ErrorResult;
|
||||
use dom::bindings::js::{JS, MutHeap, Root};
|
||||
use dom::bindings::js::{MutJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
|
||||
use dom::bluetooth::{AsyncBluetoothListener, response_async};
|
||||
use dom::bluetoothdevice::BluetoothDevice;
|
||||
|
@ -25,7 +25,7 @@ use std::rc::Rc;
|
|||
#[dom_struct]
|
||||
pub struct BluetoothRemoteGATTServer {
|
||||
reflector_: Reflector,
|
||||
device: MutHeap<JS<BluetoothDevice>>,
|
||||
device: MutJS<BluetoothDevice>,
|
||||
connected: Cell<bool>,
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ impl BluetoothRemoteGATTServer {
|
|||
pub fn new_inherited(device: &BluetoothDevice) -> BluetoothRemoteGATTServer {
|
||||
BluetoothRemoteGATTServer {
|
||||
reflector_: Reflector::new(),
|
||||
device: MutHeap::new(device),
|
||||
device: MutJS::new(device),
|
||||
connected: Cell::new(false),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServiceBinding;
|
|||
use dom::bindings::codegen::Bindings::BluetoothRemoteGATTServiceBinding::BluetoothRemoteGATTServiceMethods;
|
||||
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
|
||||
use dom::bindings::error::Error::{self, Network, Security};
|
||||
use dom::bindings::js::{JS, MutHeap, Root};
|
||||
use dom::bindings::js::{MutJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::bluetooth::{AsyncBluetoothListener, response_async};
|
||||
|
@ -27,7 +27,7 @@ use std::rc::Rc;
|
|||
#[dom_struct]
|
||||
pub struct BluetoothRemoteGATTService {
|
||||
eventtarget: EventTarget,
|
||||
device: MutHeap<JS<BluetoothDevice>>,
|
||||
device: MutJS<BluetoothDevice>,
|
||||
uuid: DOMString,
|
||||
is_primary: bool,
|
||||
instance_id: String,
|
||||
|
@ -41,7 +41,7 @@ impl BluetoothRemoteGATTService {
|
|||
-> BluetoothRemoteGATTService {
|
||||
BluetoothRemoteGATTService {
|
||||
eventtarget: EventTarget::new_inherited(),
|
||||
device: MutHeap::new(device),
|
||||
device: MutJS::new(device),
|
||||
uuid: uuid,
|
||||
is_primary: is_primary,
|
||||
instance_id: instance_id,
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use dom::bindings::conversions::{ToJSValConvertible, root_from_handleobject};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{JS, MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::proxyhandler::{fill_property_descriptor, get_property_descriptor};
|
||||
use dom::bindings::reflector::{DomObject, MutDomObject, Reflector};
|
||||
use dom::bindings::trace::JSTraceable;
|
||||
|
@ -43,7 +43,7 @@ pub struct BrowsingContext {
|
|||
/// The current active document.
|
||||
/// Note that the session history is stored in the constellation,
|
||||
/// in the script thread we just track the current active document.
|
||||
active_document: MutNullableHeap<JS<Document>>,
|
||||
active_document: MutNullableJS<Document>,
|
||||
|
||||
/// The containing iframe element, if this is a same-origin iframe
|
||||
frame_element: Option<JS<Element>>,
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use dom::bindings::codegen::Bindings::ClientBinding::{ClientMethods, Wrap};
|
||||
use dom::bindings::codegen::Bindings::ClientBinding::FrameType;
|
||||
use dom::bindings::js::{JS, Root, MutNullableHeap};
|
||||
use dom::bindings::js::{Root, MutNullableJS};
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::{DOMString, USVString};
|
||||
use dom::serviceworker::ServiceWorker;
|
||||
|
@ -16,7 +16,7 @@ use uuid::Uuid;
|
|||
#[dom_struct]
|
||||
pub struct Client {
|
||||
reflector_: Reflector,
|
||||
active_worker: MutNullableHeap<JS<ServiceWorker>>,
|
||||
active_worker: MutNullableJS<ServiceWorker>,
|
||||
url: ServoUrl,
|
||||
frame_type: FrameType,
|
||||
#[ignore_heap_size_of = "Defined in uuid"]
|
||||
|
|
|
@ -6,7 +6,7 @@ use dom::bindings::codegen::Bindings::CSSGroupingRuleBinding;
|
|||
use dom::bindings::codegen::Bindings::CSSGroupingRuleBinding::CSSGroupingRuleMethods;
|
||||
use dom::bindings::error::{ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::cssrule::CSSRule;
|
||||
|
@ -22,7 +22,7 @@ pub struct CSSGroupingRule {
|
|||
cssrule: CSSRule,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
rules: Arc<RwLock<StyleCssRules>>,
|
||||
rulelist: MutNullableHeap<JS<CSSRuleList>>,
|
||||
rulelist: MutNullableJS<CSSRuleList>,
|
||||
}
|
||||
|
||||
impl CSSGroupingRule {
|
||||
|
@ -31,7 +31,7 @@ impl CSSGroupingRule {
|
|||
CSSGroupingRule {
|
||||
cssrule: CSSRule::new_inherited(parent_stylesheet),
|
||||
rules: rules,
|
||||
rulelist: MutNullableHeap::new(None),
|
||||
rulelist: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ use cssparser::Parser;
|
|||
use dom::bindings::codegen::Bindings::CSSKeyframesRuleBinding;
|
||||
use dom::bindings::codegen::Bindings::CSSKeyframesRuleBinding::CSSKeyframesRuleMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::csskeyframerule::CSSKeyframeRule;
|
||||
|
@ -26,7 +26,7 @@ pub struct CSSKeyframesRule {
|
|||
cssrule: CSSRule,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
keyframesrule: Arc<RwLock<KeyframesRule>>,
|
||||
rulelist: MutNullableHeap<JS<CSSRuleList>>,
|
||||
rulelist: MutNullableJS<CSSRuleList>,
|
||||
}
|
||||
|
||||
impl CSSKeyframesRule {
|
||||
|
@ -35,7 +35,7 @@ impl CSSKeyframesRule {
|
|||
CSSKeyframesRule {
|
||||
cssrule: CSSRule::new_inherited(parent_stylesheet),
|
||||
keyframesrule: keyframesrule,
|
||||
rulelist: MutNullableHeap::new(None),
|
||||
rulelist: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use dom::bindings::codegen::Bindings::CSSMediaRuleBinding;
|
||||
use dom::bindings::codegen::Bindings::CSSMediaRuleBinding::CSSMediaRuleMethods;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::cssgroupingrule::CSSGroupingRule;
|
||||
|
@ -22,7 +22,7 @@ pub struct CSSMediaRule {
|
|||
cssrule: CSSGroupingRule,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
mediarule: Arc<RwLock<MediaRule>>,
|
||||
medialist: MutNullableHeap<JS<MediaList>>,
|
||||
medialist: MutNullableJS<MediaList>,
|
||||
}
|
||||
|
||||
impl CSSMediaRule {
|
||||
|
@ -32,7 +32,7 @@ impl CSSMediaRule {
|
|||
CSSMediaRule {
|
||||
cssrule: CSSGroupingRule::new_inherited(parent_stylesheet, list),
|
||||
mediarule: mediarule,
|
||||
medialist: MutNullableHeap::new(None),
|
||||
medialist: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ use dom::bindings::cell::DOMRefCell;
|
|||
use dom::bindings::codegen::Bindings::CSSRuleListBinding;
|
||||
use dom::bindings::codegen::Bindings::CSSRuleListBinding::CSSRuleListMethods;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{JS, MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
|
||||
use dom::csskeyframerule::CSSKeyframeRule;
|
||||
use dom::cssrule::CSSRule;
|
||||
|
@ -38,7 +38,7 @@ pub struct CSSRuleList {
|
|||
parent_stylesheet: JS<CSSStyleSheet>,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
rules: RulesSource,
|
||||
dom_rules: DOMRefCell<Vec<MutNullableHeap<JS<CSSRule>>>>
|
||||
dom_rules: DOMRefCell<Vec<MutNullableJS<CSSRule>>>
|
||||
}
|
||||
|
||||
pub enum RulesSource {
|
||||
|
@ -51,10 +51,10 @@ impl CSSRuleList {
|
|||
pub fn new_inherited(parent_stylesheet: &CSSStyleSheet, rules: RulesSource) -> CSSRuleList {
|
||||
let dom_rules = match rules {
|
||||
RulesSource::Rules(ref rules) => {
|
||||
rules.read().0.iter().map(|_| MutNullableHeap::new(None)).collect()
|
||||
rules.read().0.iter().map(|_| MutNullableJS::new(None)).collect()
|
||||
}
|
||||
RulesSource::Keyframes(ref rules) => {
|
||||
rules.read().keyframes.iter().map(|_| MutNullableHeap::new(None)).collect()
|
||||
rules.read().keyframes.iter().map(|_| MutNullableJS::new(None)).collect()
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -92,7 +92,7 @@ impl CSSRuleList {
|
|||
|
||||
let parent_stylesheet = &*self.parent_stylesheet;
|
||||
let dom_rule = CSSRule::new_specific(&window, parent_stylesheet, new_rule);
|
||||
self.dom_rules.borrow_mut().insert(index, MutNullableHeap::new(Some(&*dom_rule)));
|
||||
self.dom_rules.borrow_mut().insert(index, MutNullableJS::new(Some(&*dom_rule)));
|
||||
Ok((idx))
|
||||
}
|
||||
|
||||
|
@ -158,7 +158,7 @@ impl CSSRuleList {
|
|||
if let RulesSource::Rules(..) = self.rules {
|
||||
panic!("Can only call append_lazy_rule with keyframes-backed CSSRules");
|
||||
}
|
||||
self.dom_rules.borrow_mut().push(MutNullableHeap::new(None));
|
||||
self.dom_rules.borrow_mut().push(MutNullableJS::new(None));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ use dom::bindings::codegen::Bindings::CSSStyleSheetBinding;
|
|||
use dom::bindings::codegen::Bindings::CSSStyleSheetBinding::CSSStyleSheetMethods;
|
||||
use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods;
|
||||
use dom::bindings::error::{ErrorResult, Fallible};
|
||||
use dom::bindings::js::{JS, Root, MutNullableHeap};
|
||||
use dom::bindings::js::{JS, MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{reflect_dom_object, DomObject};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::cssrulelist::{CSSRuleList, RulesSource};
|
||||
|
@ -20,7 +20,7 @@ use style::stylesheets::Stylesheet as StyleStyleSheet;
|
|||
pub struct CSSStyleSheet {
|
||||
stylesheet: StyleSheet,
|
||||
owner: JS<Element>,
|
||||
rulelist: MutNullableHeap<JS<CSSRuleList>>,
|
||||
rulelist: MutNullableJS<CSSRuleList>,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
style_stylesheet: Arc<StyleStyleSheet>,
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ impl CSSStyleSheet {
|
|||
CSSStyleSheet {
|
||||
stylesheet: StyleSheet::new_inherited(type_, href, title),
|
||||
owner: JS::from_ref(owner),
|
||||
rulelist: MutNullableHeap::new(None),
|
||||
rulelist: MutNullableJS::new(None),
|
||||
style_stylesheet: stylesheet,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::{FrameRequestCallback, Scro
|
|||
use dom::bindings::codegen::UnionTypes::NodeOrString;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableJS, Root};
|
||||
use dom::bindings::js::RootedReference;
|
||||
use dom::bindings::num::Finite;
|
||||
use dom::bindings::refcounted::{Trusted, TrustedPromise};
|
||||
|
@ -184,8 +184,8 @@ pub struct Document {
|
|||
window: JS<Window>,
|
||||
/// https://html.spec.whatwg.org/multipage/#concept-document-bc
|
||||
browsing_context: Option<JS<BrowsingContext>>,
|
||||
implementation: MutNullableHeap<JS<DOMImplementation>>,
|
||||
location: MutNullableHeap<JS<Location>>,
|
||||
implementation: MutNullableJS<DOMImplementation>,
|
||||
location: MutNullableJS<Location>,
|
||||
content_type: DOMString,
|
||||
last_modified: Option<String>,
|
||||
encoding: Cell<EncodingRef>,
|
||||
|
@ -197,29 +197,29 @@ pub struct Document {
|
|||
tag_map: DOMRefCell<HashMap<LocalName, JS<HTMLCollection>>>,
|
||||
tagns_map: DOMRefCell<HashMap<QualName, JS<HTMLCollection>>>,
|
||||
classes_map: DOMRefCell<HashMap<Vec<Atom>, JS<HTMLCollection>>>,
|
||||
images: MutNullableHeap<JS<HTMLCollection>>,
|
||||
embeds: MutNullableHeap<JS<HTMLCollection>>,
|
||||
links: MutNullableHeap<JS<HTMLCollection>>,
|
||||
forms: MutNullableHeap<JS<HTMLCollection>>,
|
||||
scripts: MutNullableHeap<JS<HTMLCollection>>,
|
||||
anchors: MutNullableHeap<JS<HTMLCollection>>,
|
||||
applets: MutNullableHeap<JS<HTMLCollection>>,
|
||||
images: MutNullableJS<HTMLCollection>,
|
||||
embeds: MutNullableJS<HTMLCollection>,
|
||||
links: MutNullableJS<HTMLCollection>,
|
||||
forms: MutNullableJS<HTMLCollection>,
|
||||
scripts: MutNullableJS<HTMLCollection>,
|
||||
anchors: MutNullableJS<HTMLCollection>,
|
||||
applets: MutNullableJS<HTMLCollection>,
|
||||
/// List of stylesheets associated with nodes in this document. |None| if the list needs to be refreshed.
|
||||
stylesheets: DOMRefCell<Option<Vec<StylesheetInDocument>>>,
|
||||
/// Whether the list of stylesheets has changed since the last reflow was triggered.
|
||||
stylesheets_changed_since_reflow: Cell<bool>,
|
||||
stylesheet_list: MutNullableHeap<JS<StyleSheetList>>,
|
||||
stylesheet_list: MutNullableJS<StyleSheetList>,
|
||||
ready_state: Cell<DocumentReadyState>,
|
||||
/// Whether the DOMContentLoaded event has already been dispatched.
|
||||
domcontentloaded_dispatched: Cell<bool>,
|
||||
/// The element that has most recently requested focus for itself.
|
||||
possibly_focused: MutNullableHeap<JS<Element>>,
|
||||
possibly_focused: MutNullableJS<Element>,
|
||||
/// The element that currently has the document focus context.
|
||||
focused: MutNullableHeap<JS<Element>>,
|
||||
focused: MutNullableJS<Element>,
|
||||
/// The script element that is currently executing.
|
||||
current_script: MutNullableHeap<JS<HTMLScriptElement>>,
|
||||
current_script: MutNullableJS<HTMLScriptElement>,
|
||||
/// https://html.spec.whatwg.org/multipage/#pending-parsing-blocking-script
|
||||
pending_parsing_blocking_script: MutNullableHeap<JS<HTMLScriptElement>>,
|
||||
pending_parsing_blocking_script: MutNullableJS<HTMLScriptElement>,
|
||||
/// Number of stylesheets that block executing the next parser-inserted script
|
||||
script_blocking_stylesheets_count: Cell<u32>,
|
||||
/// https://html.spec.whatwg.org/multipage/#list-of-scripts-that-will-execute-when-the-document-has-finished-parsing
|
||||
|
@ -245,14 +245,14 @@ pub struct Document {
|
|||
/// Tracks all outstanding loads related to this document.
|
||||
loader: DOMRefCell<DocumentLoader>,
|
||||
/// The current active HTML parser, to allow resuming after interruptions.
|
||||
current_parser: MutNullableHeap<JS<ServoParser>>,
|
||||
current_parser: MutNullableJS<ServoParser>,
|
||||
/// When we should kick off a reflow. This happens during parsing.
|
||||
reflow_timeout: Cell<Option<u64>>,
|
||||
/// The cached first `base` element with an `href` attribute.
|
||||
base_element: MutNullableHeap<JS<HTMLBaseElement>>,
|
||||
base_element: MutNullableJS<HTMLBaseElement>,
|
||||
/// This field is set to the document itself for inert documents.
|
||||
/// https://html.spec.whatwg.org/multipage/#appropriate-template-contents-owner-document
|
||||
appropriate_template_contents_owner_document: MutNullableHeap<JS<Document>>,
|
||||
appropriate_template_contents_owner_document: MutNullableJS<Document>,
|
||||
/// Information on elements needing restyle to ship over to the layout thread when the
|
||||
/// time comes.
|
||||
pending_restyles: DOMRefCell<HashMap<JS<Element>, PendingRestyle>>,
|
||||
|
@ -280,7 +280,7 @@ pub struct Document {
|
|||
/// https://html.spec.whatwg.org/multipage/#dom-document-referrer
|
||||
referrer: Option<String>,
|
||||
/// https://html.spec.whatwg.org/multipage/#target-element
|
||||
target_element: MutNullableHeap<JS<Element>>,
|
||||
target_element: MutNullableJS<Element>,
|
||||
/// https://w3c.github.io/uievents/#event-type-dblclick
|
||||
#[ignore_heap_size_of = "Defined in std"]
|
||||
last_click_info: DOMRefCell<Option<(Instant, Point2D<f32>)>>,
|
||||
|
@ -293,7 +293,7 @@ pub struct Document {
|
|||
/// See also: https://github.com/servo/servo/issues/10110
|
||||
dom_count: Cell<u32>,
|
||||
/// Entry node for fullscreen.
|
||||
fullscreen_element: MutNullableHeap<JS<Element>>,
|
||||
fullscreen_element: MutNullableJS<Element>,
|
||||
}
|
||||
|
||||
#[derive(JSTraceable, HeapSizeOf)]
|
||||
|
@ -1036,7 +1036,7 @@ impl Document {
|
|||
pub fn handle_mouse_move_event(&self,
|
||||
js_runtime: *mut JSRuntime,
|
||||
client_point: Option<Point2D<f32>>,
|
||||
prev_mouse_over_target: &MutNullableHeap<JS<Element>>) {
|
||||
prev_mouse_over_target: &MutNullableJS<Element>) {
|
||||
let client_point = match client_point {
|
||||
None => {
|
||||
// If there's no point, there's no target under the mouse
|
||||
|
@ -1521,8 +1521,11 @@ impl Document {
|
|||
|
||||
/// https://html.spec.whatwg.org/multipage/#run-the-animation-frame-callbacks
|
||||
pub fn run_the_animation_frame_callbacks(&self) {
|
||||
let mut animation_frame_list =
|
||||
mem::replace(&mut *self.animation_frame_list.borrow_mut(), vec![]);
|
||||
rooted_vec!(let mut animation_frame_list);
|
||||
mem::swap(
|
||||
&mut *animation_frame_list,
|
||||
&mut *self.animation_frame_list.borrow_mut());
|
||||
|
||||
self.running_animation_callbacks.set(true);
|
||||
let timing = self.window.Performance().Now();
|
||||
|
||||
|
@ -1538,7 +1541,7 @@ impl Document {
|
|||
// message quickly followed by an AnimationCallbacksPresent message.
|
||||
if self.animation_frame_list.borrow().is_empty() {
|
||||
mem::swap(&mut *self.animation_frame_list.borrow_mut(),
|
||||
&mut animation_frame_list);
|
||||
&mut *animation_frame_list);
|
||||
let global_scope = self.window.upcast::<GlobalScope>();
|
||||
let event = ConstellationMsg::ChangeRunningAnimationsState(global_scope.pipeline_id(),
|
||||
AnimationState::NoAnimationCallbacksPresent);
|
||||
|
@ -1872,7 +1875,7 @@ impl Document {
|
|||
applets: Default::default(),
|
||||
stylesheets: DOMRefCell::new(None),
|
||||
stylesheets_changed_since_reflow: Cell::new(false),
|
||||
stylesheet_list: MutNullableHeap::new(None),
|
||||
stylesheet_list: MutNullableJS::new(None),
|
||||
ready_state: Cell::new(ready_state),
|
||||
domcontentloaded_dispatched: Cell::new(domcontentloaded_dispatched),
|
||||
possibly_focused: Default::default(),
|
||||
|
@ -1907,11 +1910,11 @@ impl Document {
|
|||
origin: origin,
|
||||
referrer: referrer,
|
||||
referrer_policy: Cell::new(referrer_policy),
|
||||
target_element: MutNullableHeap::new(None),
|
||||
target_element: MutNullableJS::new(None),
|
||||
last_click_info: DOMRefCell::new(None),
|
||||
ignore_destructive_writes_counter: Default::default(),
|
||||
dom_count: Cell::new(1),
|
||||
fullscreen_element: MutNullableHeap::new(None),
|
||||
fullscreen_element: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
|||
use dom::bindings::codegen::UnionTypes::NodeOrString;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableJS};
|
||||
use dom::bindings::js::{Root, RootedReference};
|
||||
use dom::bindings::refcounted::{Trusted, TrustedPromise};
|
||||
use dom::bindings::reflector::DomObject;
|
||||
|
@ -125,8 +125,8 @@ pub struct Element {
|
|||
id_attribute: DOMRefCell<Option<Atom>>,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
style_attribute: DOMRefCell<Option<Arc<RwLock<PropertyDeclarationBlock>>>>,
|
||||
attr_list: MutNullableHeap<JS<NamedNodeMap>>,
|
||||
class_list: MutNullableHeap<JS<DOMTokenList>>,
|
||||
attr_list: MutNullableJS<NamedNodeMap>,
|
||||
class_list: MutNullableJS<DOMTokenList>,
|
||||
state: Cell<ElementState>,
|
||||
atomic_flags: AtomicElementFlags,
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ use dom::bindings::cell::DOMRefCell;
|
|||
use dom::bindings::codegen::Bindings::EventBinding;
|
||||
use dom::bindings::codegen::Bindings::EventBinding::{EventConstants, EventMethods};
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
|
@ -80,8 +80,8 @@ impl From<bool> for EventCancelable {
|
|||
#[dom_struct]
|
||||
pub struct Event {
|
||||
reflector_: Reflector,
|
||||
current_target: MutNullableHeap<JS<EventTarget>>,
|
||||
target: MutNullableHeap<JS<EventTarget>>,
|
||||
current_target: MutNullableJS<EventTarget>,
|
||||
target: MutNullableJS<EventTarget>,
|
||||
type_: DOMRefCell<Atom>,
|
||||
phase: Cell<EventPhase>,
|
||||
canceled: Cell<bool>,
|
||||
|
|
|
@ -9,7 +9,7 @@ use dom::bindings::codegen::Bindings::FileReaderBinding::{self, FileReaderConsta
|
|||
use dom::bindings::codegen::UnionTypes::StringOrObject;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
|
@ -86,7 +86,7 @@ pub enum FileReaderResult {
|
|||
pub struct FileReader {
|
||||
eventtarget: EventTarget,
|
||||
ready_state: Cell<FileReaderReadyState>,
|
||||
error: MutNullableHeap<JS<DOMException>>,
|
||||
error: MutNullableJS<DOMException>,
|
||||
result: DOMRefCell<Option<FileReaderResult>>,
|
||||
generation_id: Cell<GenerationId>,
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ impl FileReader {
|
|||
FileReader {
|
||||
eventtarget: EventTarget::new_inherited(),
|
||||
ready_state: Cell::new(FileReaderReadyState::Empty),
|
||||
error: MutNullableHeap::new(None),
|
||||
error: MutNullableJS::new(None),
|
||||
result: DOMRefCell::new(None),
|
||||
generation_id: Cell::new(GenerationId(0)),
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::FocusEventBinding::FocusEventMethods;
|
|||
use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods;
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::reflector::reflect_dom_object;
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::event::{EventBubbles, EventCancelable};
|
||||
|
@ -20,7 +20,7 @@ use std::default::Default;
|
|||
#[dom_struct]
|
||||
pub struct FocusEvent {
|
||||
uievent: UIEvent,
|
||||
related_target: MutNullableHeap<JS<EventTarget>>,
|
||||
related_target: MutNullableJS<EventTarget>,
|
||||
}
|
||||
|
||||
impl FocusEvent {
|
||||
|
|
|
@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
|||
use dom::bindings::conversions::root_from_object;
|
||||
use dom::bindings::error::{ErrorInfo, report_pending_exception};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::DomObject;
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::crypto::Crypto;
|
||||
|
@ -50,7 +50,7 @@ use timers::{OneshotTimers, TimerCallback};
|
|||
#[dom_struct]
|
||||
pub struct GlobalScope {
|
||||
eventtarget: EventTarget,
|
||||
crypto: MutNullableHeap<JS<Crypto>>,
|
||||
crypto: MutNullableJS<Crypto>,
|
||||
next_worker_id: Cell<WorkerId>,
|
||||
|
||||
/// Pipeline id associated with this global.
|
||||
|
|
|
@ -11,7 +11,7 @@ use dom::bindings::codegen::Bindings::HTMLAnchorElementBinding::HTMLAnchorElemen
|
|||
use dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::str::{DOMString, USVString};
|
||||
use dom::document::Document;
|
||||
use dom::domtokenlist::DOMTokenList;
|
||||
|
@ -36,7 +36,7 @@ use util::prefs::PREFS;
|
|||
#[dom_struct]
|
||||
pub struct HTMLAnchorElement {
|
||||
htmlelement: HTMLElement,
|
||||
rel_list: MutNullableHeap<JS<DOMTokenList>>,
|
||||
rel_list: MutNullableJS<DOMTokenList>,
|
||||
url: DOMRefCell<Option<ServoUrl>>,
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
use dom::bindings::codegen::Bindings::HTMLAreaElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLAreaElementBinding::HTMLAreaElementMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::document::Document;
|
||||
use dom::domtokenlist::DOMTokenList;
|
||||
|
@ -19,7 +19,7 @@ use style::attr::AttrValue;
|
|||
#[dom_struct]
|
||||
pub struct HTMLAreaElement {
|
||||
htmlelement: HTMLElement,
|
||||
rel_list: MutNullableHeap<JS<DOMTokenList>>,
|
||||
rel_list: MutNullableJS<DOMTokenList>,
|
||||
}
|
||||
|
||||
impl HTMLAreaElement {
|
||||
|
|
|
@ -13,7 +13,7 @@ use dom::bindings::codegen::UnionTypes::CanvasRenderingContext2DOrWebGLRendering
|
|||
use dom::bindings::conversions::ConversionResult;
|
||||
use dom::bindings::error::{Error, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{HeapGCValue, JS, LayoutJS, Root};
|
||||
use dom::bindings::js::{JS, LayoutJS, Root};
|
||||
use dom::bindings::num::Finite;
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::canvasrenderingcontext2d::{CanvasRenderingContext2D, LayoutCanvasRenderingContext2DHelpers};
|
||||
|
@ -47,8 +47,6 @@ pub enum CanvasContext {
|
|||
WebGL(JS<WebGLRenderingContext>),
|
||||
}
|
||||
|
||||
impl HeapGCValue for CanvasContext {}
|
||||
|
||||
#[dom_struct]
|
||||
pub struct HTMLCanvasElement {
|
||||
htmlelement: HTMLElement,
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
use dom::bindings::codegen::Bindings::HTMLCollectionBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLCollectionBinding::HTMLCollectionMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, Root, MutNullableHeap};
|
||||
use dom::bindings::js::{JS, Root, MutNullableJS};
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::bindings::trace::JSTraceable;
|
||||
|
@ -59,7 +59,7 @@ pub struct HTMLCollection {
|
|||
// the length of the collection, and a cursor into the collection.
|
||||
// FIXME: make the cached cursor element a weak pointer
|
||||
cached_version: Cell<u64>,
|
||||
cached_cursor_element: MutNullableHeap<JS<Element>>,
|
||||
cached_cursor_element: MutNullableJS<Element>,
|
||||
cached_cursor_index: Cell<OptionU32>,
|
||||
cached_length: Cell<OptionU32>,
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ impl HTMLCollection {
|
|||
filter: filter,
|
||||
// Default values for the cache
|
||||
cached_version: Cell::new(root.inclusive_descendants_version()),
|
||||
cached_cursor_element: MutNullableHeap::new(None),
|
||||
cached_cursor_element: MutNullableJS::new(None),
|
||||
cached_cursor_index: Cell::new(OptionU32::none()),
|
||||
cached_length: Cell::new(OptionU32::none()),
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
|||
use dom::bindings::error::{Error, ErrorResult};
|
||||
use dom::bindings::inheritance::{ElementTypeId, HTMLElementTypeId, NodeTypeId};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::cssstyledeclaration::{CSSModificationAccess, CSSStyleDeclaration};
|
||||
use dom::document::{Document, FocusType};
|
||||
|
@ -40,8 +40,8 @@ use style::element_state::*;
|
|||
#[dom_struct]
|
||||
pub struct HTMLElement {
|
||||
element: Element,
|
||||
style_decl: MutNullableHeap<JS<CSSStyleDeclaration>>,
|
||||
dataset: MutNullableHeap<JS<DOMStringMap>>,
|
||||
style_decl: MutNullableJS<CSSStyleDeclaration>,
|
||||
dataset: MutNullableJS<DOMStringMap>,
|
||||
}
|
||||
|
||||
impl HTMLElement {
|
||||
|
|
|
@ -13,7 +13,7 @@ use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementM
|
|||
use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding::HTMLTextAreaElementMethods;
|
||||
use dom::bindings::conversions::DerivedFrom;
|
||||
use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId};
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::DomObject;
|
||||
use dom::bindings::str::DOMString;
|
||||
|
@ -61,7 +61,7 @@ pub struct GenerationId(u32);
|
|||
pub struct HTMLFormElement {
|
||||
htmlelement: HTMLElement,
|
||||
marked_for_reset: Cell<bool>,
|
||||
elements: MutNullableHeap<JS<HTMLFormControlsCollection>>,
|
||||
elements: MutNullableJS<HTMLFormControlsCollection>,
|
||||
generation_id: Cell<GenerationId>
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethod
|
|||
use dom::bindings::conversions::ToJSValConvertible;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{LayoutJS, MutNullableJS, Root};
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::DomObject;
|
||||
use dom::bindings::str::DOMString;
|
||||
|
@ -80,7 +80,7 @@ pub struct HTMLIFrameElement {
|
|||
htmlelement: HTMLElement,
|
||||
frame_id: FrameId,
|
||||
pipeline_id: Cell<Option<PipelineId>>,
|
||||
sandbox: MutNullableHeap<JS<DOMTokenList>>,
|
||||
sandbox: MutNullableJS<DOMTokenList>,
|
||||
sandbox_allowance: Cell<Option<SandboxAllowance>>,
|
||||
load_blocker: DOMRefCell<Option<LoadBlocker>>,
|
||||
visibility: Cell<bool>,
|
||||
|
|
|
@ -13,7 +13,7 @@ use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementM
|
|||
use dom::bindings::codegen::Bindings::KeyboardEventBinding::KeyboardEventMethods;
|
||||
use dom::bindings::error::{Error, ErrorResult};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::document::Document;
|
||||
use dom::element::{AttributeMutation, Element, LayoutElementHelpers, RawLayoutElementHelpers};
|
||||
|
@ -94,7 +94,7 @@ pub struct HTMLInputElement {
|
|||
// https://html.spec.whatwg.org/multipage/#concept-input-value-dirty-flag
|
||||
value_dirty: Cell<bool>,
|
||||
|
||||
filelist: MutNullableHeap<JS<FileList>>,
|
||||
filelist: MutNullableJS<FileList>,
|
||||
}
|
||||
|
||||
#[derive(JSTraceable)]
|
||||
|
@ -150,7 +150,7 @@ impl HTMLInputElement {
|
|||
SelectionDirection::None)),
|
||||
activation_state: DOMRefCell::new(InputActivationState::new()),
|
||||
value_dirty: Cell::new(false),
|
||||
filelist: MutNullableHeap::new(None),
|
||||
filelist: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ use dom::bindings::codegen::Bindings::DOMTokenListBinding::DOMTokenListMethods;
|
|||
use dom::bindings::codegen::Bindings::HTMLLinkElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLLinkElementBinding::HTMLLinkElementMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::DomObject;
|
||||
use dom::bindings::str::DOMString;
|
||||
|
@ -55,10 +55,10 @@ unsafe_no_jsmanaged_fields!(Stylesheet);
|
|||
#[dom_struct]
|
||||
pub struct HTMLLinkElement {
|
||||
htmlelement: HTMLElement,
|
||||
rel_list: MutNullableHeap<JS<DOMTokenList>>,
|
||||
rel_list: MutNullableJS<DOMTokenList>,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
stylesheet: DOMRefCell<Option<Arc<Stylesheet>>>,
|
||||
cssom_stylesheet: MutNullableHeap<JS<CSSStyleSheet>>,
|
||||
cssom_stylesheet: MutNullableJS<CSSStyleSheet>,
|
||||
|
||||
/// https://html.spec.whatwg.org/multipage/#a-style-sheet-that-is-blocking-scripts
|
||||
parser_inserted: Cell<bool>,
|
||||
|
@ -72,7 +72,7 @@ impl HTMLLinkElement {
|
|||
rel_list: Default::default(),
|
||||
parser_inserted: Cell::new(creator == ElementCreator::ParserCreated),
|
||||
stylesheet: DOMRefCell::new(None),
|
||||
cssom_stylesheet: MutNullableHeap::new(None),
|
||||
cssom_stylesheet: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ use dom::bindings::codegen::Bindings::HTMLMediaElementBinding::HTMLMediaElementM
|
|||
use dom::bindings::codegen::Bindings::MediaErrorBinding::MediaErrorConstants::*;
|
||||
use dom::bindings::codegen::Bindings::MediaErrorBinding::MediaErrorMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{Root, MutNullableHeap, JS};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::DomObject;
|
||||
use dom::bindings::str::DOMString;
|
||||
|
@ -218,7 +218,7 @@ pub struct HTMLMediaElement {
|
|||
current_src: DOMRefCell<String>,
|
||||
generation_id: Cell<u32>,
|
||||
first_data_load: Cell<bool>,
|
||||
error: MutNullableHeap<JS<MediaError>>,
|
||||
error: MutNullableJS<MediaError>,
|
||||
paused: Cell<bool>,
|
||||
autoplaying: Cell<bool>,
|
||||
video: DOMRefCell<Option<VideoMedia>>,
|
||||
|
|
|
@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLMetaElementBinding;
|
|||
use dom::bindings::codegen::Bindings::HTMLMetaElementBinding::HTMLMetaElementMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::cssstylesheet::CSSStyleSheet;
|
||||
use dom::document::Document;
|
||||
|
@ -32,7 +32,7 @@ pub struct HTMLMetaElement {
|
|||
htmlelement: HTMLElement,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
stylesheet: DOMRefCell<Option<Arc<Stylesheet>>>,
|
||||
cssom_stylesheet: MutNullableHeap<JS<CSSStyleSheet>>,
|
||||
cssom_stylesheet: MutNullableJS<CSSStyleSheet>,
|
||||
}
|
||||
|
||||
impl HTMLMetaElement {
|
||||
|
@ -42,7 +42,7 @@ impl HTMLMetaElement {
|
|||
HTMLMetaElement {
|
||||
htmlelement: HTMLElement::new_inherited(local_name, prefix, document),
|
||||
stylesheet: DOMRefCell::new(None),
|
||||
cssom_stylesheet: MutNullableHeap::new(None),
|
||||
cssom_stylesheet: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ use dom::bindings::codegen::UnionTypes::HTMLElementOrLong;
|
|||
use dom::bindings::codegen::UnionTypes::HTMLOptionElementOrHTMLOptGroupElement;
|
||||
//use dom::bindings::error::ErrorResult;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::document::Document;
|
||||
use dom::element::{AttributeMutation, Element};
|
||||
|
@ -58,7 +58,7 @@ impl CollectionFilter for OptionsFilter {
|
|||
#[dom_struct]
|
||||
pub struct HTMLSelectElement {
|
||||
htmlelement: HTMLElement,
|
||||
options: MutNullableHeap<JS<HTMLOptionsCollection>>,
|
||||
options: MutNullableJS<HTMLOptionsCollection>,
|
||||
}
|
||||
|
||||
static DEFAULT_SELECT_SIZE: u32 = 0;
|
||||
|
|
|
@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLStyleElementBinding;
|
|||
use dom::bindings::codegen::Bindings::HTMLStyleElementBinding::HTMLStyleElementMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::cssstylesheet::CSSStyleSheet;
|
||||
use dom::document::Document;
|
||||
|
@ -29,7 +29,7 @@ pub struct HTMLStyleElement {
|
|||
htmlelement: HTMLElement,
|
||||
#[ignore_heap_size_of = "Arc"]
|
||||
stylesheet: DOMRefCell<Option<Arc<Stylesheet>>>,
|
||||
cssom_stylesheet: MutNullableHeap<JS<CSSStyleSheet>>,
|
||||
cssom_stylesheet: MutNullableJS<CSSStyleSheet>,
|
||||
}
|
||||
|
||||
impl HTMLStyleElement {
|
||||
|
@ -39,7 +39,7 @@ impl HTMLStyleElement {
|
|||
HTMLStyleElement {
|
||||
htmlelement: HTMLElement::new_inherited(local_name, prefix, document),
|
||||
stylesheet: DOMRefCell::new(None),
|
||||
cssom_stylesheet: MutNullableHeap::new(None),
|
||||
cssom_stylesheet: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ use dom::bindings::codegen::Bindings::HTMLTableElementBinding::HTMLTableElementM
|
|||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::document::Document;
|
||||
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
|
||||
|
@ -31,7 +31,7 @@ pub struct HTMLTableElement {
|
|||
htmlelement: HTMLElement,
|
||||
border: Cell<Option<u32>>,
|
||||
cellspacing: Cell<Option<u32>>,
|
||||
tbodies: MutNullableHeap<JS<HTMLCollection>>,
|
||||
tbodies: MutNullableJS<HTMLCollection>,
|
||||
}
|
||||
|
||||
#[allow(unrooted_must_root)]
|
||||
|
|
|
@ -9,7 +9,7 @@ use dom::bindings::codegen::Bindings::HTMLTableSectionElementBinding::HTMLTableS
|
|||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::error::{ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{LayoutJS, MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::document::Document;
|
||||
use dom::element::{Element, RawLayoutElementHelpers};
|
||||
|
@ -36,7 +36,7 @@ impl CollectionFilter for CellsFilter {
|
|||
#[dom_struct]
|
||||
pub struct HTMLTableRowElement {
|
||||
htmlelement: HTMLElement,
|
||||
cells: MutNullableHeap<JS<HTMLCollection>>,
|
||||
cells: MutNullableJS<HTMLCollection>,
|
||||
}
|
||||
|
||||
impl HTMLTableRowElement {
|
||||
|
|
|
@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::HTMLTemplateElementBinding;
|
|||
use dom::bindings::codegen::Bindings::HTMLTemplateElementBinding::HTMLTemplateElementMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::document::Document;
|
||||
use dom::documentfragment::DocumentFragment;
|
||||
|
@ -21,7 +21,7 @@ pub struct HTMLTemplateElement {
|
|||
htmlelement: HTMLElement,
|
||||
|
||||
/// https://html.spec.whatwg.org/multipage/#template-contents
|
||||
contents: MutNullableHeap<JS<DocumentFragment>>,
|
||||
contents: MutNullableJS<DocumentFragment>,
|
||||
}
|
||||
|
||||
impl HTMLTemplateElement {
|
||||
|
@ -31,7 +31,7 @@ impl HTMLTemplateElement {
|
|||
HTMLTemplateElement {
|
||||
htmlelement:
|
||||
HTMLElement::new_inherited(local_name, prefix, document),
|
||||
contents: MutNullableHeap::new(None),
|
||||
contents: MutNullableJS::new(None),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -537,14 +537,15 @@ macro_rules! document_and_element_event_handlers(
|
|||
#[macro_export]
|
||||
macro_rules! rooted_vec {
|
||||
(let mut $name:ident) => {
|
||||
rooted_vec!(let mut $name <- ::std::iter::empty())
|
||||
let mut root = $crate::dom::bindings::trace::RootableVec::new_unrooted();
|
||||
let mut $name = $crate::dom::bindings::trace::RootedVec::new(&mut root);
|
||||
};
|
||||
(let $name:ident <- $iter:expr) => {
|
||||
let mut __root = $crate::dom::bindings::trace::RootableVec::new_unrooted();
|
||||
let $name = $crate::dom::bindings::trace::RootedVec::new(&mut __root, $iter);
|
||||
let mut root = $crate::dom::bindings::trace::RootableVec::new_unrooted();
|
||||
let $name = $crate::dom::bindings::trace::RootedVec::from_iter(&mut root, $iter);
|
||||
};
|
||||
(let mut $name:ident <- $iter:expr) => {
|
||||
let mut __root = $crate::dom::bindings::trace::RootableVec::new_unrooted();
|
||||
let mut $name = $crate::dom::bindings::trace::RootedVec::new(&mut __root, $iter);
|
||||
let mut root = $crate::dom::bindings::trace::RootableVec::new_unrooted();
|
||||
let mut $name = $crate::dom::bindings::trace::RootedVec::from_iter(&mut root, $iter);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,8 +32,8 @@
|
|||
//! * rooting pointers on the stack:
|
||||
//! the [`Root`](bindings/js/struct.Root.html) smart pointer;
|
||||
//! * tracing pointers in member fields: the [`JS`](bindings/js/struct.JS.html),
|
||||
//! [`MutNullableHeap`](bindings/js/struct.MutNullableHeap.html) and
|
||||
//! [`MutHeap`](bindings/js/struct.MutHeap.html) smart pointers and
|
||||
//! [`MutNullableJS`](bindings/js/struct.MutNullableJS.html) and
|
||||
//! [`MutJS`](bindings/js/struct.MutJS.html) smart pointers and
|
||||
//! [the tracing implementation](bindings/trace/index.html);
|
||||
//! * rooting pointers from across thread boundaries or in channels: the
|
||||
//! [`Trusted`](bindings/refcounted/struct.Trusted.html) smart pointer;
|
||||
|
|
|
@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethods;
|
|||
use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods;
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::reflector::reflect_dom_object;
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::event::{Event, EventBubbles, EventCancelable};
|
||||
|
@ -30,7 +30,7 @@ pub struct MouseEvent {
|
|||
alt_key: Cell<bool>,
|
||||
meta_key: Cell<bool>,
|
||||
button: Cell<i16>,
|
||||
related_target: MutNullableHeap<JS<EventTarget>>,
|
||||
related_target: MutNullableJS<EventTarget>,
|
||||
}
|
||||
|
||||
impl MouseEvent {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use dom::bindings::codegen::Bindings::NavigatorBinding;
|
||||
use dom::bindings::codegen::Bindings::NavigatorBinding::NavigatorMethods;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{Reflector, DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::bluetooth::Bluetooth;
|
||||
|
@ -17,10 +17,10 @@ use dom::window::Window;
|
|||
#[dom_struct]
|
||||
pub struct Navigator {
|
||||
reflector_: Reflector,
|
||||
bluetooth: MutNullableHeap<JS<Bluetooth>>,
|
||||
plugins: MutNullableHeap<JS<PluginArray>>,
|
||||
mime_types: MutNullableHeap<JS<MimeTypeArray>>,
|
||||
service_worker: MutNullableHeap<JS<ServiceWorkerContainer>>,
|
||||
bluetooth: MutNullableJS<Bluetooth>,
|
||||
plugins: MutNullableJS<PluginArray>,
|
||||
mime_types: MutNullableJS<MimeTypeArray>,
|
||||
service_worker: MutNullableJS<ServiceWorkerContainer>,
|
||||
}
|
||||
|
||||
impl Navigator {
|
||||
|
|
|
@ -21,7 +21,7 @@ use dom::bindings::error::{Error, ErrorResult, Fallible};
|
|||
use dom::bindings::inheritance::{Castable, CharacterDataTypeId, ElementTypeId};
|
||||
use dom::bindings::inheritance::{EventTargetTypeId, HTMLElementTypeId, NodeTypeId};
|
||||
use dom::bindings::inheritance::{SVGElementTypeId, SVGGraphicsElementTypeId};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableJS};
|
||||
use dom::bindings::js::Root;
|
||||
use dom::bindings::js::RootedReference;
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
|
@ -95,25 +95,25 @@ pub struct Node {
|
|||
eventtarget: EventTarget,
|
||||
|
||||
/// The parent of this node.
|
||||
parent_node: MutNullableHeap<JS<Node>>,
|
||||
parent_node: MutNullableJS<Node>,
|
||||
|
||||
/// The first child of this node.
|
||||
first_child: MutNullableHeap<JS<Node>>,
|
||||
first_child: MutNullableJS<Node>,
|
||||
|
||||
/// The last child of this node.
|
||||
last_child: MutNullableHeap<JS<Node>>,
|
||||
last_child: MutNullableJS<Node>,
|
||||
|
||||
/// The next sibling of this node.
|
||||
next_sibling: MutNullableHeap<JS<Node>>,
|
||||
next_sibling: MutNullableJS<Node>,
|
||||
|
||||
/// The previous sibling of this node.
|
||||
prev_sibling: MutNullableHeap<JS<Node>>,
|
||||
prev_sibling: MutNullableJS<Node>,
|
||||
|
||||
/// The document that this node belongs to.
|
||||
owner_doc: MutNullableHeap<JS<Document>>,
|
||||
owner_doc: MutNullableJS<Document>,
|
||||
|
||||
/// The live list of children return by .childNodes.
|
||||
child_list: MutNullableHeap<JS<NodeList>>,
|
||||
child_list: MutNullableJS<NodeList>,
|
||||
|
||||
/// The live count of children of this node.
|
||||
children_count: Cell<u32>,
|
||||
|
@ -1370,7 +1370,7 @@ impl Node {
|
|||
last_child: Default::default(),
|
||||
next_sibling: Default::default(),
|
||||
prev_sibling: Default::default(),
|
||||
owner_doc: MutNullableHeap::new(doc),
|
||||
owner_doc: MutNullableJS::new(doc),
|
||||
child_list: Default::default(),
|
||||
children_count: Cell::new(0u32),
|
||||
flags: Cell::new(flags),
|
||||
|
|
|
@ -9,7 +9,7 @@ use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilterConstants;
|
|||
use dom::bindings::codegen::Bindings::NodeIteratorBinding;
|
||||
use dom::bindings::codegen::Bindings::NodeIteratorBinding::NodeIteratorMethods;
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::js::{JS, MutHeap, Root};
|
||||
use dom::bindings::js::{JS, MutJS, Root};
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::document::Document;
|
||||
use dom::node::Node;
|
||||
|
@ -21,7 +21,7 @@ pub struct NodeIterator {
|
|||
reflector_: Reflector,
|
||||
root_node: JS<Node>,
|
||||
#[ignore_heap_size_of = "Defined in rust-mozjs"]
|
||||
reference_node: MutHeap<JS<Node>>,
|
||||
reference_node: MutJS<Node>,
|
||||
pointer_before_reference_node: Cell<bool>,
|
||||
what_to_show: u32,
|
||||
#[ignore_heap_size_of = "Can't measure due to #6870"]
|
||||
|
@ -35,7 +35,7 @@ impl NodeIterator {
|
|||
NodeIterator {
|
||||
reflector_: Reflector::new(),
|
||||
root_node: JS::from_ref(root_node),
|
||||
reference_node: MutHeap::new(root_node),
|
||||
reference_node: MutJS::new(root_node),
|
||||
pointer_before_reference_node: Cell::new(true),
|
||||
what_to_show: what_to_show,
|
||||
filter: filter
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeListBinding;
|
||||
use dom::bindings::codegen::Bindings::NodeListBinding::NodeListMethods;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{JS, MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::node::{ChildrenMutation, Node};
|
||||
use dom::window::Window;
|
||||
|
@ -111,7 +111,7 @@ impl NodeList {
|
|||
pub struct ChildrenList {
|
||||
node: JS<Node>,
|
||||
#[ignore_heap_size_of = "Defined in rust-mozjs"]
|
||||
last_visited: MutNullableHeap<JS<Node>>,
|
||||
last_visited: MutNullableJS<Node>,
|
||||
last_index: Cell<u32>,
|
||||
}
|
||||
|
||||
|
@ -120,7 +120,7 @@ impl ChildrenList {
|
|||
let last_visited = node.GetFirstChild();
|
||||
ChildrenList {
|
||||
node: JS::from_ref(node),
|
||||
last_visited: MutNullableHeap::new(last_visited.r()),
|
||||
last_visited: MutNullableJS::new(last_visited.r()),
|
||||
last_index: Cell::new(0u32),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
|||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::{CharacterDataTypeId, NodeTypeId};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{JS, MutJS, Root, RootedReference};
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::bindings::trace::JSTraceable;
|
||||
|
@ -934,7 +934,7 @@ impl RangeMethods for Range {
|
|||
#[privatize]
|
||||
#[derive(HeapSizeOf)]
|
||||
pub struct BoundaryPoint {
|
||||
node: MutHeap<JS<Node>>,
|
||||
node: MutJS<Node>,
|
||||
offset: Cell<u32>,
|
||||
}
|
||||
|
||||
|
@ -943,7 +943,7 @@ impl BoundaryPoint {
|
|||
debug_assert!(!node.is_doctype());
|
||||
debug_assert!(offset <= node.len());
|
||||
BoundaryPoint {
|
||||
node: MutHeap::new(node),
|
||||
node: MutJS::new(node),
|
||||
offset: Cell::new(offset),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ use dom::bindings::codegen::Bindings::RequestBinding::RequestMode;
|
|||
use dom::bindings::codegen::Bindings::RequestBinding::RequestRedirect;
|
||||
use dom::bindings::codegen::Bindings::RequestBinding::RequestType;
|
||||
use dom::bindings::error::{Error, Fallible};
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::{ByteString, DOMString, USVString};
|
||||
use dom::globalscope::GlobalScope;
|
||||
|
@ -45,7 +45,7 @@ pub struct Request {
|
|||
reflector_: Reflector,
|
||||
request: DOMRefCell<NetTraitsRequest>,
|
||||
body_used: Cell<bool>,
|
||||
headers: MutNullableHeap<JS<Headers>>,
|
||||
headers: MutNullableJS<Headers>,
|
||||
mime_type: DOMRefCell<Vec<u8>>,
|
||||
#[ignore_heap_size_of = "Rc"]
|
||||
body_promise: DOMRefCell<Option<(Rc<Promise>, BodyType)>>,
|
||||
|
|
|
@ -10,7 +10,7 @@ use dom::bindings::codegen::Bindings::ResponseBinding;
|
|||
use dom::bindings::codegen::Bindings::ResponseBinding::{ResponseMethods, ResponseType as DOMResponseType};
|
||||
use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::BodyInit;
|
||||
use dom::bindings::error::{Error, Fallible};
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::{ByteString, USVString};
|
||||
use dom::globalscope::GlobalScope;
|
||||
|
@ -32,7 +32,7 @@ use url::Position;
|
|||
#[dom_struct]
|
||||
pub struct Response {
|
||||
reflector_: Reflector,
|
||||
headers_reflector: MutNullableHeap<JS<Headers>>,
|
||||
headers_reflector: MutNullableJS<Headers>,
|
||||
mime_type: DOMRefCell<Vec<u8>>,
|
||||
body_used: Cell<bool>,
|
||||
/// `None` can be considered a StatusCode of `0`.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
use dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::{ServiceWorkerContainerMethods, Wrap};
|
||||
use dom::bindings::codegen::Bindings::ServiceWorkerContainerBinding::RegistrationOptions;
|
||||
use dom::bindings::error::Error;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{JS, MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::USVString;
|
||||
use dom::client::Client;
|
||||
|
@ -22,7 +22,7 @@ use std::rc::Rc;
|
|||
#[dom_struct]
|
||||
pub struct ServiceWorkerContainer {
|
||||
eventtarget: EventTarget,
|
||||
controller: MutNullableHeap<JS<ServiceWorker>>,
|
||||
controller: MutNullableJS<ServiceWorker>,
|
||||
client: JS<Client>
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{JS, MutNullableJS, Root};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::bindings::trace::JSTraceable;
|
||||
use dom::comment::Comment;
|
||||
|
@ -97,7 +97,7 @@ unsafe impl JSTraceable for XmlTokenizer<XmlTreeBuilder<JS<Node>, Sink>> {
|
|||
struct Sink {
|
||||
base_url: ServoUrl,
|
||||
document: JS<Document>,
|
||||
script: MutNullableHeap<JS<HTMLScriptElement>>,
|
||||
script: MutNullableJS<HTMLScriptElement>,
|
||||
}
|
||||
|
||||
impl<'a> TreeSink for Sink {
|
||||
|
|
|
@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::StorageEventBinding;
|
|||
use dom::bindings::codegen::Bindings::StorageEventBinding::StorageEventMethods;
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
|
||||
use dom::bindings::js::{MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::reflector::reflect_dom_object;
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::event::{Event, EventBubbles, EventCancelable};
|
||||
|
@ -23,7 +23,7 @@ pub struct StorageEvent {
|
|||
old_value: Option<DOMString>,
|
||||
new_value: Option<DOMString>,
|
||||
url: DOMString,
|
||||
storage_area: MutNullableHeap<JS<Storage>>
|
||||
storage_area: MutNullableJS<Storage>
|
||||
}
|
||||
|
||||
|
||||
|
@ -39,7 +39,7 @@ impl StorageEvent {
|
|||
old_value: old_value,
|
||||
new_value: new_value,
|
||||
url: url,
|
||||
storage_area: MutNullableHeap::new(storage_area)
|
||||
storage_area: MutNullableJS::new(storage_area)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use dom::bindings::codegen::Bindings::TouchBinding;
|
||||
use dom::bindings::codegen::Bindings::TouchBinding::TouchMethods;
|
||||
use dom::bindings::js::{JS, MutHeap, Root};
|
||||
use dom::bindings::js::{MutJS, Root};
|
||||
use dom::bindings::num::Finite;
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::eventtarget::EventTarget;
|
||||
|
@ -14,7 +14,7 @@ use dom::window::Window;
|
|||
pub struct Touch {
|
||||
reflector_: Reflector,
|
||||
identifier: i32,
|
||||
target: MutHeap<JS<EventTarget>>,
|
||||
target: MutJS<EventTarget>,
|
||||
screen_x: f64,
|
||||
screen_y: f64,
|
||||
client_x: f64,
|
||||
|
@ -31,7 +31,7 @@ impl Touch {
|
|||
Touch {
|
||||
reflector_: Reflector::new(),
|
||||
identifier: identifier,
|
||||
target: MutHeap::new(target),
|
||||
target: MutJS::new(target),
|
||||
screen_x: *screen_x,
|
||||
screen_y: *screen_y,
|
||||
client_x: *client_x,
|
||||
|
|
|
@ -6,7 +6,7 @@ use dom::bindings::codegen::Bindings::TouchEventBinding;
|
|||
use dom::bindings::codegen::Bindings::TouchEventBinding::TouchEventMethods;
|
||||
use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutHeap, Root};
|
||||
use dom::bindings::js::{MutJS, Root};
|
||||
use dom::bindings::reflector::reflect_dom_object;
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::event::{EventBubbles, EventCancelable};
|
||||
|
@ -18,9 +18,9 @@ use std::cell::Cell;
|
|||
#[dom_struct]
|
||||
pub struct TouchEvent {
|
||||
uievent: UIEvent,
|
||||
touches: MutHeap<JS<TouchList>>,
|
||||
target_touches: MutHeap<JS<TouchList>>,
|
||||
changed_touches: MutHeap<JS<TouchList>>,
|
||||
touches: MutJS<TouchList>,
|
||||
target_touches: MutJS<TouchList>,
|
||||
changed_touches: MutJS<TouchList>,
|
||||
alt_key: Cell<bool>,
|
||||
meta_key: Cell<bool>,
|
||||
ctrl_key: Cell<bool>,
|
||||
|
@ -33,9 +33,9 @@ impl TouchEvent {
|
|||
target_touches: &TouchList) -> TouchEvent {
|
||||
TouchEvent {
|
||||
uievent: UIEvent::new_inherited(),
|
||||
touches: MutHeap::new(touches),
|
||||
target_touches: MutHeap::new(target_touches),
|
||||
changed_touches: MutHeap::new(changed_touches),
|
||||
touches: MutJS::new(touches),
|
||||
target_touches: MutJS::new(target_touches),
|
||||
changed_touches: MutJS::new(changed_touches),
|
||||
ctrl_key: Cell::new(false),
|
||||
shift_key: Cell::new(false),
|
||||
alt_key: Cell::new(false),
|
||||
|
|
|
@ -9,7 +9,7 @@ use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilterConstants;
|
|||
use dom::bindings::codegen::Bindings::TreeWalkerBinding;
|
||||
use dom::bindings::codegen::Bindings::TreeWalkerBinding::TreeWalkerMethods;
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::js::{JS, MutHeap};
|
||||
use dom::bindings::js::{JS, MutJS};
|
||||
use dom::bindings::js::Root;
|
||||
use dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use dom::document::Document;
|
||||
|
@ -21,7 +21,7 @@ use std::rc::Rc;
|
|||
pub struct TreeWalker {
|
||||
reflector_: Reflector,
|
||||
root_node: JS<Node>,
|
||||
current_node: MutHeap<JS<Node>>,
|
||||
current_node: MutJS<Node>,
|
||||
what_to_show: u32,
|
||||
#[ignore_heap_size_of = "function pointers and Rc<T> are hard"]
|
||||
filter: Filter
|
||||
|
@ -34,7 +34,7 @@ impl TreeWalker {
|
|||
TreeWalker {
|
||||
reflector_: Reflector::new(),
|
||||
root_node: JS::from_ref(root_node),
|
||||
current_node: MutHeap::new(root_node),
|
||||
current_node: MutJS::new(root_node),
|
||||
what_to_show: what_to_show,
|
||||
filter: filter
|
||||
}
|
||||
|
|
|
@ -7,8 +7,7 @@ use dom::bindings::codegen::Bindings::UIEventBinding;
|
|||
use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods;
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, RootedReference};
|
||||
use dom::bindings::js::Root;
|
||||
use dom::bindings::js::{MutNullableJS, Root, RootedReference};
|
||||
use dom::bindings::reflector::reflect_dom_object;
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::event::{Event, EventBubbles, EventCancelable};
|
||||
|
@ -21,7 +20,7 @@ use std::default::Default;
|
|||
#[dom_struct]
|
||||
pub struct UIEvent {
|
||||
event: Event,
|
||||
view: MutNullableHeap<JS<Window>>,
|
||||
view: MutNullableJS<Window>,
|
||||
detail: Cell<i32>
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ use dom::bindings::cell::DOMRefCell;
|
|||
use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods;
|
||||
use dom::bindings::codegen::Bindings::URLBinding::{self, URLMethods};
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::{DOMString, USVString};
|
||||
use dom::blob::Blob;
|
||||
|
@ -30,7 +30,7 @@ pub struct URL {
|
|||
url: DOMRefCell<ServoUrl>,
|
||||
|
||||
// https://url.spec.whatwg.org/#dom-url-searchparams
|
||||
search_params: MutNullableHeap<JS<URLSearchParams>>,
|
||||
search_params: MutNullableJS<URLSearchParams>,
|
||||
}
|
||||
|
||||
impl URL {
|
||||
|
|
|
@ -7,7 +7,7 @@ use canvas_traits::CanvasMsg;
|
|||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::WebGLFramebufferBinding;
|
||||
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
||||
use dom::bindings::js::{HeapGCValue, JS, Root};
|
||||
use dom::bindings::js::{JS, Root};
|
||||
use dom::bindings::reflector::reflect_dom_object;
|
||||
use dom::webglobject::WebGLObject;
|
||||
use dom::webglrenderbuffer::WebGLRenderbuffer;
|
||||
|
@ -25,8 +25,6 @@ enum WebGLFramebufferAttachment {
|
|||
Texture { texture: JS<WebGLTexture>, level: i32 },
|
||||
}
|
||||
|
||||
impl HeapGCValue for WebGLFramebufferAttachment {}
|
||||
|
||||
#[dom_struct]
|
||||
pub struct WebGLFramebuffer {
|
||||
webgl_object: WebGLObject,
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
use canvas_traits::CanvasMsg;
|
||||
use dom::bindings::codegen::Bindings::WebGLProgramBinding;
|
||||
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::webglactiveinfo::WebGLActiveInfo;
|
||||
|
@ -27,8 +27,8 @@ pub struct WebGLProgram {
|
|||
is_deleted: Cell<bool>,
|
||||
link_called: Cell<bool>,
|
||||
linked: Cell<bool>,
|
||||
fragment_shader: MutNullableHeap<JS<WebGLShader>>,
|
||||
vertex_shader: MutNullableHeap<JS<WebGLShader>>,
|
||||
fragment_shader: MutNullableJS<WebGLShader>,
|
||||
vertex_shader: MutNullableJS<WebGLShader>,
|
||||
#[ignore_heap_size_of = "Defined in ipc-channel"]
|
||||
renderer: IpcSender<CanvasMsg>,
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ use dom::bindings::conversions::{array_buffer_to_vec, array_buffer_view_data, ar
|
|||
use dom::bindings::conversions::{array_buffer_view_to_vec, array_buffer_view_to_vec_checked};
|
||||
use dom::bindings::error::{Error, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{JS, LayoutJS, MutNullableJS, Root};
|
||||
use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
|
||||
use dom::bindings::str::DOMString;
|
||||
use dom::event::{Event, EventBubbles, EventCancelable};
|
||||
|
@ -124,13 +124,13 @@ pub struct WebGLRenderingContext {
|
|||
#[ignore_heap_size_of = "Defined in webrender_traits"]
|
||||
last_error: Cell<Option<WebGLError>>,
|
||||
texture_unpacking_settings: Cell<TextureUnpacking>,
|
||||
bound_framebuffer: MutNullableHeap<JS<WebGLFramebuffer>>,
|
||||
bound_renderbuffer: MutNullableHeap<JS<WebGLRenderbuffer>>,
|
||||
bound_texture_2d: MutNullableHeap<JS<WebGLTexture>>,
|
||||
bound_texture_cube_map: MutNullableHeap<JS<WebGLTexture>>,
|
||||
bound_buffer_array: MutNullableHeap<JS<WebGLBuffer>>,
|
||||
bound_buffer_element_array: MutNullableHeap<JS<WebGLBuffer>>,
|
||||
current_program: MutNullableHeap<JS<WebGLProgram>>,
|
||||
bound_framebuffer: MutNullableJS<WebGLFramebuffer>,
|
||||
bound_renderbuffer: MutNullableJS<WebGLRenderbuffer>,
|
||||
bound_texture_2d: MutNullableJS<WebGLTexture>,
|
||||
bound_texture_cube_map: MutNullableJS<WebGLTexture>,
|
||||
bound_buffer_array: MutNullableJS<WebGLBuffer>,
|
||||
bound_buffer_element_array: MutNullableJS<WebGLBuffer>,
|
||||
current_program: MutNullableJS<WebGLProgram>,
|
||||
#[ignore_heap_size_of = "Because it's small"]
|
||||
current_vertex_attrib_0: Cell<(f32, f32, f32, f32)>,
|
||||
#[ignore_heap_size_of = "Because it's small"]
|
||||
|
@ -159,13 +159,13 @@ impl WebGLRenderingContext {
|
|||
canvas: JS::from_ref(canvas),
|
||||
last_error: Cell::new(None),
|
||||
texture_unpacking_settings: Cell::new(CONVERT_COLORSPACE),
|
||||
bound_framebuffer: MutNullableHeap::new(None),
|
||||
bound_texture_2d: MutNullableHeap::new(None),
|
||||
bound_texture_cube_map: MutNullableHeap::new(None),
|
||||
bound_buffer_array: MutNullableHeap::new(None),
|
||||
bound_buffer_element_array: MutNullableHeap::new(None),
|
||||
bound_renderbuffer: MutNullableHeap::new(None),
|
||||
current_program: MutNullableHeap::new(None),
|
||||
bound_framebuffer: MutNullableJS::new(None),
|
||||
bound_texture_2d: MutNullableJS::new(None),
|
||||
bound_texture_cube_map: MutNullableJS::new(None),
|
||||
bound_buffer_array: MutNullableJS::new(None),
|
||||
bound_buffer_element_array: MutNullableJS::new(None),
|
||||
bound_renderbuffer: MutNullableJS::new(None),
|
||||
current_program: MutNullableJS::new(None),
|
||||
current_vertex_attrib_0: Cell::new((0f32, 0f32, 0f32, 1f32)),
|
||||
current_scissor: Cell::new((0, 0, size.width, size.height)),
|
||||
current_clear_color: Cell::new((0.0, 0.0, 0.0, 0.0))
|
||||
|
|
|
@ -19,7 +19,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::{ScrollBehavior, ScrollToOp
|
|||
use dom::bindings::codegen::UnionTypes::RequestOrUSVString;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::num::Finite;
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::DomObject;
|
||||
|
@ -159,19 +159,19 @@ pub struct Window {
|
|||
history_traversal_task_source: HistoryTraversalTaskSource,
|
||||
#[ignore_heap_size_of = "task sources are hard"]
|
||||
file_reading_task_source: FileReadingTaskSource,
|
||||
navigator: MutNullableHeap<JS<Navigator>>,
|
||||
navigator: MutNullableJS<Navigator>,
|
||||
#[ignore_heap_size_of = "channels are hard"]
|
||||
image_cache_thread: ImageCacheThread,
|
||||
#[ignore_heap_size_of = "channels are hard"]
|
||||
image_cache_chan: ImageCacheChan,
|
||||
browsing_context: MutNullableHeap<JS<BrowsingContext>>,
|
||||
history: MutNullableHeap<JS<History>>,
|
||||
performance: MutNullableHeap<JS<Performance>>,
|
||||
browsing_context: MutNullableJS<BrowsingContext>,
|
||||
history: MutNullableJS<History>,
|
||||
performance: MutNullableJS<Performance>,
|
||||
navigation_start: u64,
|
||||
navigation_start_precise: f64,
|
||||
screen: MutNullableHeap<JS<Screen>>,
|
||||
session_storage: MutNullableHeap<JS<Storage>>,
|
||||
local_storage: MutNullableHeap<JS<Storage>>,
|
||||
screen: MutNullableJS<Screen>,
|
||||
session_storage: MutNullableJS<Storage>,
|
||||
local_storage: MutNullableJS<Storage>,
|
||||
status: DOMRefCell<DOMString>,
|
||||
|
||||
/// For sending timeline markers. Will be ignored if
|
||||
|
@ -241,7 +241,7 @@ pub struct Window {
|
|||
/// All the MediaQueryLists we need to update
|
||||
media_query_lists: WeakMediaQueryListVec,
|
||||
|
||||
test_runner: MutNullableHeap<JS<TestRunner>>,
|
||||
test_runner: MutNullableJS<TestRunner>,
|
||||
}
|
||||
|
||||
impl Window {
|
||||
|
|
|
@ -10,7 +10,7 @@ use dom::bindings::codegen::Bindings::WorkerGlobalScopeBinding::WorkerGlobalScop
|
|||
use dom::bindings::codegen::UnionTypes::RequestOrUSVString;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible, report_pending_exception};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{MutNullableJS, Root};
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::DomObject;
|
||||
use dom::bindings::str::DOMString;
|
||||
|
@ -73,8 +73,8 @@ pub struct WorkerGlobalScope {
|
|||
closing: Option<Arc<AtomicBool>>,
|
||||
#[ignore_heap_size_of = "Defined in js"]
|
||||
runtime: Runtime,
|
||||
location: MutNullableHeap<JS<WorkerLocation>>,
|
||||
navigator: MutNullableHeap<JS<WorkerNavigator>>,
|
||||
location: MutNullableJS<WorkerLocation>,
|
||||
navigator: MutNullableJS<WorkerNavigator>,
|
||||
|
||||
#[ignore_heap_size_of = "Defined in ipc-channel"]
|
||||
/// Optional `IpcSender` for sending the `DevtoolScriptControlMsg`
|
||||
|
|
|
@ -14,7 +14,7 @@ use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestRespo
|
|||
use dom::bindings::conversions::ToJSValConvertible;
|
||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutHeapJSVal, MutNullableHeap, Root};
|
||||
use dom::bindings::js::{JS, MutHeapJSVal, MutNullableJS, Root};
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::{DomObject, reflect_dom_object};
|
||||
use dom::bindings::str::{ByteString, DOMString, USVString, is_token};
|
||||
|
@ -122,8 +122,8 @@ pub struct XMLHttpRequest {
|
|||
status_text: DOMRefCell<ByteString>,
|
||||
response: DOMRefCell<ByteString>,
|
||||
response_type: Cell<XMLHttpRequestResponseType>,
|
||||
response_xml: MutNullableHeap<JS<Document>>,
|
||||
response_blob: MutNullableHeap<JS<Blob>>,
|
||||
response_xml: MutNullableJS<Document>,
|
||||
response_blob: MutNullableJS<Blob>,
|
||||
#[ignore_heap_size_of = "Defined in rust-mozjs"]
|
||||
response_json: MutHeapJSVal,
|
||||
#[ignore_heap_size_of = "Defined in hyper"]
|
||||
|
|
|
@ -32,7 +32,7 @@ use dom::bindings::codegen::Bindings::TransitionEventBinding::TransitionEventIni
|
|||
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
||||
use dom::bindings::conversions::{ConversionResult, FromJSValConvertible, StringificationBehavior};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{JS, MutNullableHeap, Root, RootCollection};
|
||||
use dom::bindings::js::{JS, MutNullableJS, Root, RootCollection};
|
||||
use dom::bindings::js::{RootCollectionPtr, RootedReference};
|
||||
use dom::bindings::num::Finite;
|
||||
use dom::bindings::refcounted::Trusted;
|
||||
|
@ -461,7 +461,7 @@ pub struct ScriptThread {
|
|||
js_runtime: Rc<Runtime>,
|
||||
|
||||
/// The topmost element over the mouse.
|
||||
topmost_mouse_over_target: MutNullableHeap<JS<Element>>,
|
||||
topmost_mouse_over_target: MutNullableJS<Element>,
|
||||
|
||||
/// List of pipelines that have been owned and closed by this script thread.
|
||||
closed_pipelines: DOMRefCell<HashSet<PipelineId>>,
|
||||
|
@ -686,7 +686,7 @@ impl ScriptThread {
|
|||
devtools_sender: ipc_devtools_sender,
|
||||
|
||||
js_runtime: Rc::new(runtime),
|
||||
topmost_mouse_over_target: MutNullableHeap::new(Default::default()),
|
||||
topmost_mouse_over_target: MutNullableJS::new(Default::default()),
|
||||
closed_pipelines: DOMRefCell::new(HashSet::new()),
|
||||
|
||||
scheduler_chan: state.scheduler_chan,
|
||||
|
|
|
@ -13,7 +13,7 @@ use script::dom::node::Node;
|
|||
|
||||
struct Foo {
|
||||
bar: DOMRefCell<JS<Node>>
|
||||
//~^ ERROR Banned type DOMRefCell<JS<T>> detected. Use MutHeap<JS<T>> instead,
|
||||
//~^ ERROR Banned type DOMRefCell<JS<T>> detected. Use MutJS<JS<T>> instead,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
@ -12,7 +12,7 @@ use std::cell::Cell;
|
|||
|
||||
struct Foo {
|
||||
bar: Cell<JSVal>
|
||||
//~^ ERROR Banned type Cell<JSVal> detected. Use MutHeap<JSVal> instead,
|
||||
//~^ ERROR Banned type Cell<JSVal> detected. Use MutJS<JSVal> instead,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
Загрузка…
Ссылка в новой задаче