forked from mirrors/gecko-dev
<!-- Please describe your changes on the following line: --> This allows removing `#![feature(as_unsafe_cell)]` in geckolib and make progress towards #11815. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix part of #11815. <!-- Either: --> - [ ] There are tests for these changes OR - [x] These changes do not require new tests because they don’t introduce no functional changes. <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: 3de14d9ca0cf54e6a2ae4eac5ff47e38e724b77b
116 lines
3 KiB
Rust
116 lines
3 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
//! This module contains traits in script used generically in the rest of Servo.
|
|
//! The traits are here instead of in script so that these modules won't have
|
|
//! to depend on script.
|
|
|
|
#![deny(unsafe_code)]
|
|
#![feature(box_syntax)]
|
|
#![feature(custom_attribute)]
|
|
#![feature(custom_derive)]
|
|
#![feature(nonzero)]
|
|
#![feature(plugin)]
|
|
#![plugin(heapsize_plugin)]
|
|
#![plugin(plugins)]
|
|
|
|
extern crate app_units;
|
|
#[allow(unused_extern_crates)]
|
|
#[macro_use]
|
|
extern crate bitflags;
|
|
extern crate canvas_traits;
|
|
extern crate core;
|
|
extern crate cssparser;
|
|
extern crate euclid;
|
|
extern crate gfx_traits;
|
|
extern crate heapsize;
|
|
extern crate ipc_channel;
|
|
extern crate libc;
|
|
#[macro_use]
|
|
extern crate log;
|
|
extern crate msg;
|
|
extern crate net_traits;
|
|
extern crate profile_traits;
|
|
extern crate range;
|
|
extern crate script_traits;
|
|
extern crate selectors;
|
|
#[macro_use(atom, ns)]
|
|
extern crate string_cache;
|
|
extern crate style;
|
|
extern crate url;
|
|
extern crate util;
|
|
|
|
pub mod message;
|
|
pub mod reporter;
|
|
pub mod restyle_damage;
|
|
pub mod rpc;
|
|
pub mod wrapper_traits;
|
|
|
|
use canvas_traits::CanvasMsg;
|
|
use core::nonzero::NonZero;
|
|
use ipc_channel::ipc::IpcSender;
|
|
use libc::c_void;
|
|
use restyle_damage::RestyleDamage;
|
|
use style::refcell::RefCell;
|
|
use style::servo::PrivateStyleData;
|
|
|
|
pub struct PartialStyleAndLayoutData {
|
|
pub style_data: PrivateStyleData,
|
|
pub restyle_damage: RestyleDamage,
|
|
}
|
|
|
|
#[derive(Copy, Clone, HeapSizeOf)]
|
|
pub struct OpaqueStyleAndLayoutData {
|
|
#[ignore_heap_size_of = "TODO(#6910) Box value that should be counted but \
|
|
the type lives in layout"]
|
|
pub ptr: NonZero<*mut RefCell<PartialStyleAndLayoutData>>
|
|
}
|
|
|
|
#[allow(unsafe_code)]
|
|
unsafe impl Send for OpaqueStyleAndLayoutData {}
|
|
|
|
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
|
pub enum LayoutNodeType {
|
|
Comment,
|
|
Document,
|
|
DocumentFragment,
|
|
DocumentType,
|
|
Element(LayoutElementType),
|
|
ProcessingInstruction,
|
|
Text,
|
|
}
|
|
|
|
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
|
|
pub enum LayoutElementType {
|
|
Element,
|
|
HTMLCanvasElement,
|
|
HTMLIFrameElement,
|
|
HTMLImageElement,
|
|
HTMLInputElement,
|
|
HTMLObjectElement,
|
|
HTMLTableCellElement,
|
|
HTMLTableColElement,
|
|
HTMLTableElement,
|
|
HTMLTableRowElement,
|
|
HTMLTableSectionElement,
|
|
HTMLTextAreaElement,
|
|
}
|
|
|
|
pub struct HTMLCanvasData {
|
|
pub ipc_renderer: Option<IpcSender<CanvasMsg>>,
|
|
pub width: u32,
|
|
pub height: u32,
|
|
}
|
|
|
|
/// The address of a node known to be valid. These are sent from script to layout.
|
|
#[derive(Clone, PartialEq, Eq, Copy)]
|
|
pub struct TrustedNodeAddress(pub *const c_void);
|
|
|
|
#[allow(unsafe_code)]
|
|
unsafe impl Send for TrustedNodeAddress {}
|
|
|
|
pub fn is_image_data(uri: &str) -> bool {
|
|
static TYPES: &'static [&'static str] = &["data:image/png", "data:image/gif", "data:image/jpeg"];
|
|
TYPES.iter().any(|&type_| uri.starts_with(type_))
|
|
}
|