Move unsafe_no_jsmanaged_fields to trace

This commit is contained in:
Fernando Jiménez Moreno 2018-08-31 18:31:29 +02:00
parent 8c40ef459b
commit 72b1df343e
3 changed files with 9 additions and 17 deletions

View file

@ -48,6 +48,7 @@ use dom::bindings::str::{DOMString, USVString};
use dom::bindings::utils::WindowProxyHandler;
use dom::document::PendingRestyle;
use dom::htmlimageelement::SourceSet;
use dom::htmlmediaelement::MediaFrameRenderer;
use encoding_rs::{Decoder, Encoding};
use euclid::{Transform2D, Transform3D, Point2D, Vector2D, Rect, TypedSize2D, TypedScale};
use euclid::Length as EuclidLength;
@ -96,6 +97,7 @@ use servo_media::audio::context::AudioContext;
use servo_media::audio::graph::NodeId;
use servo_media::audio::panner_node::{DistanceModel, PanningModel};
use servo_media::audio::param::ParamType;
use servo_media::player::Player;
use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl};
use smallvec::SmallVec;
use std::cell::{Cell, RefCell, UnsafeCell};
@ -104,7 +106,7 @@ use std::hash::{BuildHasher, Hash};
use std::ops::{Deref, DerefMut};
use std::path::PathBuf;
use std::rc::Rc;
use std::sync::Arc;
use std::sync::{Arc, Mutex};
use std::sync::atomic::{AtomicBool, AtomicUsize};
use std::time::{SystemTime, Instant};
use style::attr::{AttrIdentifier, AttrValue, LengthOrPercentageOrAuto};
@ -121,7 +123,7 @@ use style::stylesheets::keyframes_rule::Keyframe;
use style::values::specified::Length;
use time::Duration;
use uuid::Uuid;
use webrender_api::{DocumentId, ImageKey};
use webrender_api::{DocumentId, ImageKey, RenderApiSender};
use webvr_traits::WebVRGamepadHand;
/// A trait to allow tracing (only) DOM objects.
@ -454,6 +456,9 @@ unsafe_no_jsmanaged_fields!(AudioBuffer);
unsafe_no_jsmanaged_fields!(AudioContext<Backend>);
unsafe_no_jsmanaged_fields!(NodeId);
unsafe_no_jsmanaged_fields!(AnalysisEngine, DistanceModel, PanningModel, ParamType);
unsafe_no_jsmanaged_fields!(Player);
unsafe_no_jsmanaged_fields!(Mutex<MediaFrameRenderer>);
unsafe_no_jsmanaged_fields!(RenderApiSender);
unsafe impl<'a> JSTraceable for &'a str {
#[inline]

View file

@ -54,10 +54,7 @@ use time::{self, Timespec, Duration};
use webrender_api::{ImageData, ImageDescriptor, ImageFormat, ImageKey, RenderApi};
use webrender_api::{RenderApiSender, Transaction};
unsafe_no_jsmanaged_fields!(Player);
unsafe_no_jsmanaged_fields!(Mutex<MediaFrameRenderer>);
struct MediaFrameRenderer {
pub struct MediaFrameRenderer {
api: RenderApi,
current_frame: Option<(ImageKey, i32, i32)>,
old_frame: Option<ImageKey>,

View file

@ -132,9 +132,7 @@ use time;
use timers::{IsInterval, TimerCallback};
use url::Position;
use webdriver_handlers::jsval_to_webdriver;
use webrender_api::{
DeviceIntPoint, DeviceUintSize, DocumentId, ExternalScrollId, RenderApiSender,
};
use webrender_api::{DeviceIntPoint, DeviceUintSize, DocumentId, ExternalScrollId, RenderApiSender};
use webvr_traits::WebVRMsg;
/// Current state of the window object
@ -315,14 +313,6 @@ pub struct Window {
webrender_api_sender: RenderApiSender,
}
// FIXME(victor): this doesn't belong here
#[allow(unsafe_code)]
unsafe impl ::dom::bindings::trace::JSTraceable for RenderApiSender {
unsafe fn trace(&self, _trc: *mut ::js::jsapi::JSTracer) {
// Do nothing
}
}
impl Window {
pub fn get_exists_mut_observer(&self) -> bool {
self.exists_mut_observer.get()