mirror of
https://github.com/servo/servo.git
synced 2025-08-02 04:00:32 +01:00
Hoist gecko bindings into their own crate.
This will be helpful for leveraging the bindings with our nsIAtom-backed string_cache replacement.
This commit is contained in:
parent
7f76e3ba74
commit
d6a6f2c7e0
18 changed files with 215 additions and 106 deletions
8
ports/geckolib/Cargo.lock
generated
8
ports/geckolib/Cargo.lock
generated
|
@ -6,6 +6,7 @@ dependencies = [
|
||||||
"cssparser 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cssparser 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"gecko_bindings 0.0.1",
|
||||||
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -223,6 +224,13 @@ name = "gcc"
|
||||||
version = "0.3.28"
|
version = "0.3.28"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gecko_bindings"
|
||||||
|
version = "0.0.1"
|
||||||
|
dependencies = [
|
||||||
|
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getopts"
|
name = "getopts"
|
||||||
version = "0.2.14"
|
version = "0.2.14"
|
||||||
|
|
|
@ -14,6 +14,7 @@ crate-type = ["staticlib"]
|
||||||
app_units = "0.2.3"
|
app_units = "0.2.3"
|
||||||
cssparser = "0.5.4"
|
cssparser = "0.5.4"
|
||||||
euclid = "0.6.4"
|
euclid = "0.6.4"
|
||||||
|
gecko_bindings = {version = "0.0.1", path = "gecko_bindings"}
|
||||||
heapsize = "0.3.0"
|
heapsize = "0.3.0"
|
||||||
heapsize_plugin = "0.1.2"
|
heapsize_plugin = "0.1.2"
|
||||||
lazy_static = "0.2"
|
lazy_static = "0.2"
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* 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/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use bindings::RawServoStyleSet;
|
|
||||||
use euclid::Size2D;
|
use euclid::Size2D;
|
||||||
use euclid::size::TypedSize2D;
|
use euclid::size::TypedSize2D;
|
||||||
|
use gecko_bindings::bindings::RawServoStyleSet;
|
||||||
use num_cpus;
|
use num_cpus;
|
||||||
use selector_impl::{Stylist, Stylesheet, SharedStyleContext};
|
use selector_impl::{Stylist, Stylesheet, SharedStyleContext};
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
|
|
12
ports/geckolib/gecko_bindings/Cargo.toml
Normal file
12
ports/geckolib/gecko_bindings/Cargo.toml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
[package]
|
||||||
|
name = "gecko_bindings"
|
||||||
|
version = "0.0.1"
|
||||||
|
authors = ["The Servo Project Developers"]
|
||||||
|
publish = false
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
name = "gecko_bindings"
|
||||||
|
path = "lib.rs"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
heapsize = "0.3.0"
|
|
@ -1,30 +1,103 @@
|
||||||
/* automatically generated by rust-bindgen */
|
/* automatically generated by rust-bindgen */
|
||||||
|
|
||||||
use gecko_style_structs::SheetParsingMode;
|
use structs::nsStyleFont;
|
||||||
use gecko_style_structs::nsStyleFont;
|
use structs::nsStyleColor;
|
||||||
use gecko_style_structs::nsStyleColor;
|
use structs::nsStyleList;
|
||||||
use gecko_style_structs::nsStyleList;
|
use structs::nsStyleText;
|
||||||
use gecko_style_structs::nsStyleText;
|
use structs::nsStyleVisibility;
|
||||||
use gecko_style_structs::nsStyleVisibility;
|
use structs::nsStyleUserInterface;
|
||||||
use gecko_style_structs::nsStyleUserInterface;
|
use structs::nsStyleTableBorder;
|
||||||
use gecko_style_structs::nsStyleTableBorder;
|
use structs::nsStyleSVG;
|
||||||
use gecko_style_structs::nsStyleSVG;
|
use structs::nsStyleVariables;
|
||||||
use gecko_style_structs::nsStyleVariables;
|
use structs::nsStyleBackground;
|
||||||
use gecko_style_structs::nsStyleBackground;
|
use structs::nsStylePosition;
|
||||||
use gecko_style_structs::nsStylePosition;
|
use structs::nsStyleTextReset;
|
||||||
use gecko_style_structs::nsStyleTextReset;
|
use structs::nsStyleDisplay;
|
||||||
use gecko_style_structs::nsStyleDisplay;
|
use structs::nsStyleContent;
|
||||||
use gecko_style_structs::nsStyleContent;
|
use structs::nsStyleUIReset;
|
||||||
use gecko_style_structs::nsStyleUIReset;
|
use structs::nsStyleTable;
|
||||||
use gecko_style_structs::nsStyleTable;
|
use structs::nsStyleMargin;
|
||||||
use gecko_style_structs::nsStyleMargin;
|
use structs::nsStylePadding;
|
||||||
use gecko_style_structs::nsStylePadding;
|
use structs::nsStyleBorder;
|
||||||
use gecko_style_structs::nsStyleBorder;
|
use structs::nsStyleOutline;
|
||||||
use gecko_style_structs::nsStyleOutline;
|
use structs::nsStyleXUL;
|
||||||
use gecko_style_structs::nsStyleXUL;
|
use structs::nsStyleSVGReset;
|
||||||
use gecko_style_structs::nsStyleSVGReset;
|
use structs::nsStyleColumn;
|
||||||
use gecko_style_structs::nsStyleColumn;
|
use structs::nsStyleEffects;
|
||||||
use gecko_style_structs::nsStyleEffects;
|
use structs::SheetParsingMode;
|
||||||
|
use heapsize::HeapSizeOf;
|
||||||
|
unsafe impl Send for nsStyleFont {}
|
||||||
|
unsafe impl Sync for nsStyleFont {}
|
||||||
|
impl HeapSizeOf for nsStyleFont { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleColor {}
|
||||||
|
unsafe impl Sync for nsStyleColor {}
|
||||||
|
impl HeapSizeOf for nsStyleColor { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleList {}
|
||||||
|
unsafe impl Sync for nsStyleList {}
|
||||||
|
impl HeapSizeOf for nsStyleList { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleText {}
|
||||||
|
unsafe impl Sync for nsStyleText {}
|
||||||
|
impl HeapSizeOf for nsStyleText { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleVisibility {}
|
||||||
|
unsafe impl Sync for nsStyleVisibility {}
|
||||||
|
impl HeapSizeOf for nsStyleVisibility { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleUserInterface {}
|
||||||
|
unsafe impl Sync for nsStyleUserInterface {}
|
||||||
|
impl HeapSizeOf for nsStyleUserInterface { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleTableBorder {}
|
||||||
|
unsafe impl Sync for nsStyleTableBorder {}
|
||||||
|
impl HeapSizeOf for nsStyleTableBorder { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleSVG {}
|
||||||
|
unsafe impl Sync for nsStyleSVG {}
|
||||||
|
impl HeapSizeOf for nsStyleSVG { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleVariables {}
|
||||||
|
unsafe impl Sync for nsStyleVariables {}
|
||||||
|
impl HeapSizeOf for nsStyleVariables { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleBackground {}
|
||||||
|
unsafe impl Sync for nsStyleBackground {}
|
||||||
|
impl HeapSizeOf for nsStyleBackground { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStylePosition {}
|
||||||
|
unsafe impl Sync for nsStylePosition {}
|
||||||
|
impl HeapSizeOf for nsStylePosition { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleTextReset {}
|
||||||
|
unsafe impl Sync for nsStyleTextReset {}
|
||||||
|
impl HeapSizeOf for nsStyleTextReset { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleDisplay {}
|
||||||
|
unsafe impl Sync for nsStyleDisplay {}
|
||||||
|
impl HeapSizeOf for nsStyleDisplay { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleContent {}
|
||||||
|
unsafe impl Sync for nsStyleContent {}
|
||||||
|
impl HeapSizeOf for nsStyleContent { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleUIReset {}
|
||||||
|
unsafe impl Sync for nsStyleUIReset {}
|
||||||
|
impl HeapSizeOf for nsStyleUIReset { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleTable {}
|
||||||
|
unsafe impl Sync for nsStyleTable {}
|
||||||
|
impl HeapSizeOf for nsStyleTable { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleMargin {}
|
||||||
|
unsafe impl Sync for nsStyleMargin {}
|
||||||
|
impl HeapSizeOf for nsStyleMargin { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStylePadding {}
|
||||||
|
unsafe impl Sync for nsStylePadding {}
|
||||||
|
impl HeapSizeOf for nsStylePadding { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleBorder {}
|
||||||
|
unsafe impl Sync for nsStyleBorder {}
|
||||||
|
impl HeapSizeOf for nsStyleBorder { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleOutline {}
|
||||||
|
unsafe impl Sync for nsStyleOutline {}
|
||||||
|
impl HeapSizeOf for nsStyleOutline { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleXUL {}
|
||||||
|
unsafe impl Sync for nsStyleXUL {}
|
||||||
|
impl HeapSizeOf for nsStyleXUL { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleSVGReset {}
|
||||||
|
unsafe impl Sync for nsStyleSVGReset {}
|
||||||
|
impl HeapSizeOf for nsStyleSVGReset { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleColumn {}
|
||||||
|
unsafe impl Sync for nsStyleColumn {}
|
||||||
|
impl HeapSizeOf for nsStyleColumn { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
unsafe impl Send for nsStyleEffects {}
|
||||||
|
unsafe impl Sync for nsStyleEffects {}
|
||||||
|
impl HeapSizeOf for nsStyleEffects { fn heap_size_of_children(&self) -> usize { 0 } }
|
||||||
|
|
||||||
pub enum nsIAtom { }
|
pub enum nsIAtom { }
|
||||||
pub enum nsINode { }
|
pub enum nsINode { }
|
10
ports/geckolib/gecko_bindings/lib.rs
Normal file
10
ports/geckolib/gecko_bindings/lib.rs
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
extern crate heapsize;
|
||||||
|
|
||||||
|
#[allow(dead_code, non_camel_case_types)]
|
||||||
|
pub mod bindings;
|
||||||
|
#[allow(dead_code, non_camel_case_types, non_snake_case, non_upper_case_globals)]
|
||||||
|
pub mod structs;
|
|
@ -23,4 +23,4 @@ build (which are in `ports/geckolib/bindings.rs`).
|
||||||
## `regen_style_structs.sh`
|
## `regen_style_structs.sh`
|
||||||
|
|
||||||
This will generate the bindings for Gecko's style structs. Current bindings are
|
This will generate the bindings for Gecko's style structs. Current bindings are
|
||||||
actually in `ports/geckolib/gecko_style_structs.rs`.
|
actually in `ports/geckolib/structs.rs`.
|
|
@ -28,9 +28,14 @@ else
|
||||||
LIBCLANG_PATH=`brew --prefix llvm38`/lib/llvm-3.8/lib;
|
LIBCLANG_PATH=`brew --prefix llvm38`/lib/llvm-3.8/lib;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prevent bindgen from generating opaque types for common gecko types
|
# Prevent bindgen from generating opaque types for common gecko types.
|
||||||
export MAP_GECKO_TYPES=""
|
export MAP_GECKO_TYPES=""
|
||||||
for STRUCT in SheetParsingMode nsStyleFont nsStyleColor nsStyleList nsStyleText \
|
|
||||||
|
# Extra code we want to generate.
|
||||||
|
export EXTRA_CODE="-raw-line 'use heapsize::HeapSizeOf;' "
|
||||||
|
|
||||||
|
# Style structs.
|
||||||
|
for STRUCT in nsStyleFont nsStyleColor nsStyleList nsStyleText \
|
||||||
nsStyleVisibility nsStyleUserInterface nsStyleTableBorder \
|
nsStyleVisibility nsStyleUserInterface nsStyleTableBorder \
|
||||||
nsStyleSVG nsStyleVariables nsStyleBackground nsStylePosition \
|
nsStyleSVG nsStyleVariables nsStyleBackground nsStylePosition \
|
||||||
nsStyleTextReset nsStyleDisplay nsStyleContent nsStyleUIReset \
|
nsStyleTextReset nsStyleDisplay nsStyleContent nsStyleUIReset \
|
||||||
|
@ -38,9 +43,21 @@ for STRUCT in SheetParsingMode nsStyleFont nsStyleColor nsStyleList nsStyleText
|
||||||
nsStyleOutline nsStyleXUL nsStyleSVGReset nsStyleColumn nsStyleEffects
|
nsStyleOutline nsStyleXUL nsStyleSVGReset nsStyleColumn nsStyleEffects
|
||||||
do
|
do
|
||||||
MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-blacklist-type $STRUCT "
|
MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-blacklist-type $STRUCT "
|
||||||
MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-raw-line 'use gecko_style_structs::$STRUCT;' "
|
MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-raw-line 'use structs::$STRUCT;' "
|
||||||
|
EXTRA_CODE=$EXTRA_CODE"-raw-line 'unsafe impl Send for $STRUCT {}' "
|
||||||
|
EXTRA_CODE=$EXTRA_CODE"-raw-line 'unsafe impl Sync for $STRUCT {}' "
|
||||||
|
EXTRA_CODE=$EXTRA_CODE"-raw-line 'impl HeapSizeOf for $STRUCT { fn heap_size_of_children(&self) -> usize { 0 } }' "
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Other mapped types.
|
||||||
|
for TYPE in SheetParsingMode
|
||||||
|
do
|
||||||
|
MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-blacklist-type $TYPE "
|
||||||
|
MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-raw-line 'use structs::$TYPE;' "
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Check for the include directory.
|
# Check for the include directory.
|
||||||
export DIST_INCLUDE="$1/dist/include"
|
export DIST_INCLUDE="$1/dist/include"
|
||||||
if [ ! -d "$DIST_INCLUDE" ]; then
|
if [ ! -d "$DIST_INCLUDE" ]; then
|
||||||
|
@ -61,4 +78,5 @@ eval ./rust-bindgen/target/debug/bindgen \
|
||||||
"$DIST_INCLUDE/mozilla/ServoBindings.h" \
|
"$DIST_INCLUDE/mozilla/ServoBindings.h" \
|
||||||
-match "ServoBindings.h" \
|
-match "ServoBindings.h" \
|
||||||
-match "nsStyleStructList.h" \
|
-match "nsStyleStructList.h" \
|
||||||
$MAP_GECKO_TYPES
|
$MAP_GECKO_TYPES \
|
||||||
|
$EXTRA_CODE
|
|
@ -39,7 +39,7 @@ fi
|
||||||
export RUST_BACKTRACE=1
|
export RUST_BACKTRACE=1
|
||||||
|
|
||||||
./rust-bindgen/target/debug/bindgen \
|
./rust-bindgen/target/debug/bindgen \
|
||||||
-o ../gecko_style_structs.rs \
|
-o ../structs.rs \
|
||||||
-x c++ -std=gnu++0x \
|
-x c++ -std=gnu++0x \
|
||||||
-allow-unknown-types \
|
-allow-unknown-types \
|
||||||
"-I$DIST_INCLUDE" "-I$DIST_INCLUDE/nspr" \
|
"-I$DIST_INCLUDE" "-I$DIST_INCLUDE/nspr" \
|
||||||
|
@ -123,7 +123,7 @@ if [ $? -ne 0 ]; then
|
||||||
else
|
else
|
||||||
echo -e "\e[34minfo:\e[0m bindgen exited successfully, running tests"
|
echo -e "\e[34minfo:\e[0m bindgen exited successfully, running tests"
|
||||||
TESTS_FILE=$(mktemp)
|
TESTS_FILE=$(mktemp)
|
||||||
rustc ../gecko_style_structs.rs --test -o $TESTS_FILE
|
rustc ../structs.rs --test -o $TESTS_FILE
|
||||||
$TESTS_FILE
|
$TESTS_FILE
|
||||||
rm $TESTS_FILE
|
rm $TESTS_FILE
|
||||||
fi
|
fi
|
|
@ -5,13 +5,13 @@
|
||||||
#![allow(unsafe_code)]
|
#![allow(unsafe_code)]
|
||||||
|
|
||||||
use app_units::Au;
|
use app_units::Au;
|
||||||
use bindings::{RawGeckoDocument, RawGeckoElement, RawGeckoNode};
|
|
||||||
use bindings::{RawServoStyleSet, RawServoStyleSheet, ServoComputedValues, ServoNodeData};
|
|
||||||
use bindings::{nsIAtom};
|
|
||||||
use data::PerDocumentStyleData;
|
use data::PerDocumentStyleData;
|
||||||
use env_logger;
|
use env_logger;
|
||||||
use euclid::Size2D;
|
use euclid::Size2D;
|
||||||
use gecko_style_structs::SheetParsingMode;
|
use gecko_bindings::bindings::{RawGeckoDocument, RawGeckoElement, RawGeckoNode};
|
||||||
|
use gecko_bindings::bindings::{RawServoStyleSet, RawServoStyleSheet, ServoComputedValues, ServoNodeData};
|
||||||
|
use gecko_bindings::bindings::{nsIAtom};
|
||||||
|
use gecko_bindings::structs::SheetParsingMode;
|
||||||
use properties::GeckoComputedValues;
|
use properties::GeckoComputedValues;
|
||||||
use selector_impl::{GeckoSelectorImpl, PseudoElement, SharedStyleContext, Stylesheet};
|
use selector_impl::{GeckoSelectorImpl, PseudoElement, SharedStyleContext, Stylesheet};
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
@ -35,7 +35,7 @@ use wrapper::{GeckoDocument, GeckoElement, GeckoNode, NonOpaqueStyleData};
|
||||||
// TODO: This is ugly and should go away once we get an atom back-end.
|
// TODO: This is ugly and should go away once we get an atom back-end.
|
||||||
pub fn pseudo_element_from_atom(pseudo: *mut nsIAtom,
|
pub fn pseudo_element_from_atom(pseudo: *mut nsIAtom,
|
||||||
in_ua_stylesheet: bool) -> Result<PseudoElement, String> {
|
in_ua_stylesheet: bool) -> Result<PseudoElement, String> {
|
||||||
use bindings::Gecko_GetAtomAsUTF16;
|
use gecko_bindings::bindings::Gecko_GetAtomAsUTF16;
|
||||||
use selectors::parser::{ParserContext, SelectorImpl};
|
use selectors::parser::{ParserContext, SelectorImpl};
|
||||||
|
|
||||||
let pseudo_string = unsafe {
|
let pseudo_string = unsafe {
|
||||||
|
@ -258,7 +258,6 @@ pub extern "C" fn Servo_ReleaseStyleSheet(sheet: *mut RawServoStyleSheet) -> ()
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_GetComputedValues(node: *mut RawGeckoNode)
|
pub extern "C" fn Servo_GetComputedValues(node: *mut RawGeckoNode)
|
||||||
-> *mut ServoComputedValues {
|
-> *mut ServoComputedValues {
|
||||||
use selectors::Element;
|
|
||||||
let node = unsafe { GeckoNode::from_raw(node) };
|
let node = unsafe { GeckoNode::from_raw(node) };
|
||||||
let arc_cv = match node.borrow_data().map_or(None, |data| data.style.clone()) {
|
let arc_cv = match node.borrow_data().map_or(None, |data| data.style.clone()) {
|
||||||
Some(style) => style,
|
Some(style) => style,
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
#![feature(as_unsafe_cell)]
|
#![feature(as_unsafe_cell)]
|
||||||
#![feature(box_syntax)]
|
#![feature(box_syntax)]
|
||||||
#![feature(ptr_as_ref)]
|
|
||||||
#![feature(custom_attribute)]
|
#![feature(custom_attribute)]
|
||||||
#![feature(custom_derive)]
|
#![feature(custom_derive)]
|
||||||
#![feature(plugin)]
|
#![feature(plugin)]
|
||||||
|
@ -17,6 +16,7 @@ extern crate app_units;
|
||||||
extern crate cssparser;
|
extern crate cssparser;
|
||||||
extern crate env_logger;
|
extern crate env_logger;
|
||||||
extern crate euclid;
|
extern crate euclid;
|
||||||
|
extern crate gecko_bindings;
|
||||||
extern crate heapsize;
|
extern crate heapsize;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate lazy_static;
|
extern crate lazy_static;
|
||||||
|
@ -32,11 +32,7 @@ extern crate style;
|
||||||
extern crate url;
|
extern crate url;
|
||||||
extern crate util;
|
extern crate util;
|
||||||
|
|
||||||
#[allow(dead_code, non_camel_case_types)]
|
|
||||||
mod bindings;
|
|
||||||
mod data;
|
mod data;
|
||||||
#[allow(dead_code, non_camel_case_types, non_snake_case, non_upper_case_globals)]
|
|
||||||
mod gecko_style_structs;
|
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
pub mod glue;
|
pub mod glue;
|
||||||
mod selector_impl;
|
mod selector_impl;
|
||||||
|
|
|
@ -11,13 +11,13 @@
|
||||||
|
|
||||||
use app_units::Au;
|
use app_units::Au;
|
||||||
% for style_struct in data.style_structs:
|
% for style_struct in data.style_structs:
|
||||||
use gecko_style_structs::${style_struct.gecko_ffi_name};
|
use gecko_bindings::structs::${style_struct.gecko_ffi_name};
|
||||||
use bindings::Gecko_Construct_${style_struct.gecko_ffi_name};
|
use gecko_bindings::bindings::Gecko_Construct_${style_struct.gecko_ffi_name};
|
||||||
use bindings::Gecko_CopyConstruct_${style_struct.gecko_ffi_name};
|
use gecko_bindings::bindings::Gecko_CopyConstruct_${style_struct.gecko_ffi_name};
|
||||||
use bindings::Gecko_Destroy_${style_struct.gecko_ffi_name};
|
use gecko_bindings::bindings::Gecko_Destroy_${style_struct.gecko_ffi_name};
|
||||||
% endfor
|
% endfor
|
||||||
use bindings::{Gecko_CopyListStyleTypeFrom, Gecko_SetListStyleType};
|
use gecko_bindings::bindings::{Gecko_CopyListStyleTypeFrom, Gecko_SetListStyleType};
|
||||||
use gecko_style_structs;
|
use gecko_bindings::structs;
|
||||||
use glue::ArcHelpers;
|
use glue::ArcHelpers;
|
||||||
use heapsize::HeapSizeOf;
|
use heapsize::HeapSizeOf;
|
||||||
use std::fmt::{self, Debug};
|
use std::fmt::{self, Debug};
|
||||||
|
@ -29,7 +29,6 @@ use style::properties::{CascadePropertyFn, ServoComputedValues, ComputedValues};
|
||||||
use style::properties::longhands;
|
use style::properties::longhands;
|
||||||
use style::properties::make_cascade_vec;
|
use style::properties::make_cascade_vec;
|
||||||
use style::properties::style_struct_traits::*;
|
use style::properties::style_struct_traits::*;
|
||||||
use gecko_style_structs::{nsStyleUnion, nsStyleUnit};
|
|
||||||
use values::{ToGeckoStyleCoord, convert_rgba_to_nscolor, convert_nscolor_to_rgba};
|
use values::{ToGeckoStyleCoord, convert_rgba_to_nscolor, convert_nscolor_to_rgba};
|
||||||
use values::round_border_to_device_pixels;
|
use values::round_border_to_device_pixels;
|
||||||
|
|
||||||
|
@ -130,7 +129,7 @@ impl ComputedValues for GeckoComputedValues {
|
||||||
}
|
}
|
||||||
|
|
||||||
<%def name="declare_style_struct(style_struct)">
|
<%def name="declare_style_struct(style_struct)">
|
||||||
#[derive(Clone, HeapSizeOf, Debug)]
|
#[derive(HeapSizeOf)]
|
||||||
pub struct ${style_struct.gecko_struct_name} {
|
pub struct ${style_struct.gecko_struct_name} {
|
||||||
gecko: ${style_struct.gecko_ffi_name},
|
gecko: ${style_struct.gecko_ffi_name},
|
||||||
}
|
}
|
||||||
|
@ -154,12 +153,12 @@ def is_border_style_masked(ffi_name):
|
||||||
|
|
||||||
def get_gecko_property(ffi_name):
|
def get_gecko_property(ffi_name):
|
||||||
if is_border_style_masked(ffi_name):
|
if is_border_style_masked(ffi_name):
|
||||||
return "(self.gecko.%s & (gecko_style_structs::BORDER_STYLE_MASK as u8))" % ffi_name
|
return "(self.gecko.%s & (structs::BORDER_STYLE_MASK as u8))" % ffi_name
|
||||||
return "self.gecko.%s" % ffi_name
|
return "self.gecko.%s" % ffi_name
|
||||||
|
|
||||||
def set_gecko_property(ffi_name, expr):
|
def set_gecko_property(ffi_name, expr):
|
||||||
if is_border_style_masked(ffi_name):
|
if is_border_style_masked(ffi_name):
|
||||||
return "self.gecko.%s &= !(gecko_style_structs::BORDER_STYLE_MASK as u8);" % ffi_name + \
|
return "self.gecko.%s &= !(structs::BORDER_STYLE_MASK as u8);" % ffi_name + \
|
||||||
"self.gecko.%s |= %s as u8;" % (ffi_name, expr)
|
"self.gecko.%s |= %s as u8;" % (ffi_name, expr)
|
||||||
elif ffi_name == "__LIST_STYLE_TYPE__":
|
elif ffi_name == "__LIST_STYLE_TYPE__":
|
||||||
return "unsafe { Gecko_SetListStyleType(&mut self.gecko, %s as u32); }" % expr
|
return "unsafe { Gecko_SetListStyleType(&mut self.gecko, %s as u32); }" % expr
|
||||||
|
@ -168,12 +167,11 @@ def set_gecko_property(ffi_name, expr):
|
||||||
|
|
||||||
<%def name="impl_keyword_setter(ident, gecko_ffi_name, keyword)">
|
<%def name="impl_keyword_setter(ident, gecko_ffi_name, keyword)">
|
||||||
fn set_${ident}(&mut self, v: longhands::${ident}::computed_value::T) {
|
fn set_${ident}(&mut self, v: longhands::${ident}::computed_value::T) {
|
||||||
use gecko_style_structs as gss;
|
|
||||||
use style::properties::longhands::${ident}::computed_value::T as Keyword;
|
use style::properties::longhands::${ident}::computed_value::T as Keyword;
|
||||||
// FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts
|
// FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts
|
||||||
let result = match v {
|
let result = match v {
|
||||||
% for value in keyword.values_for('gecko'):
|
% for value in keyword.values_for('gecko'):
|
||||||
Keyword::${to_rust_ident(value)} => gss::${keyword.gecko_constant(value)} as u8,
|
Keyword::${to_rust_ident(value)} => structs::${keyword.gecko_constant(value)} as u8,
|
||||||
% endfor
|
% endfor
|
||||||
};
|
};
|
||||||
${set_gecko_property(gecko_ffi_name, "result")}
|
${set_gecko_property(gecko_ffi_name, "result")}
|
||||||
|
@ -182,12 +180,11 @@ def set_gecko_property(ffi_name, expr):
|
||||||
|
|
||||||
<%def name="impl_keyword_clone(ident, gecko_ffi_name, keyword)">
|
<%def name="impl_keyword_clone(ident, gecko_ffi_name, keyword)">
|
||||||
fn clone_${ident}(&self) -> longhands::${ident}::computed_value::T {
|
fn clone_${ident}(&self) -> longhands::${ident}::computed_value::T {
|
||||||
use gecko_style_structs as gss;
|
|
||||||
use style::properties::longhands::${ident}::computed_value::T as Keyword;
|
use style::properties::longhands::${ident}::computed_value::T as Keyword;
|
||||||
// FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts
|
// FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts
|
||||||
match ${get_gecko_property(gecko_ffi_name)} as u32 {
|
match ${get_gecko_property(gecko_ffi_name)} as u32 {
|
||||||
% for value in keyword.values_for('gecko'):
|
% for value in keyword.values_for('gecko'):
|
||||||
gss::${keyword.gecko_constant(value)} => Keyword::${to_rust_ident(value)},
|
structs::${keyword.gecko_constant(value)} => Keyword::${to_rust_ident(value)},
|
||||||
% endfor
|
% endfor
|
||||||
x => panic!("Found unexpected value in style struct for ${ident} property: {}", x),
|
x => panic!("Found unexpected value in style struct for ${ident} property: {}", x),
|
||||||
}
|
}
|
||||||
|
@ -196,13 +193,13 @@ def set_gecko_property(ffi_name, expr):
|
||||||
|
|
||||||
<%def name="clear_color_flags(color_flags_ffi_name)">
|
<%def name="clear_color_flags(color_flags_ffi_name)">
|
||||||
% if color_flags_ffi_name:
|
% if color_flags_ffi_name:
|
||||||
self.gecko.${color_flags_ffi_name} &= !(gecko_style_structs::BORDER_COLOR_SPECIAL as u8);
|
self.gecko.${color_flags_ffi_name} &= !(structs::BORDER_COLOR_SPECIAL as u8);
|
||||||
% endif
|
% endif
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
<%def name="set_current_color_flag(color_flags_ffi_name)">
|
<%def name="set_current_color_flag(color_flags_ffi_name)">
|
||||||
% if color_flags_ffi_name:
|
% if color_flags_ffi_name:
|
||||||
self.gecko.${color_flags_ffi_name} |= gecko_style_structs::BORDER_COLOR_FOREGROUND as u8;
|
self.gecko.${color_flags_ffi_name} |= structs::BORDER_COLOR_FOREGROUND as u8;
|
||||||
% else:
|
% else:
|
||||||
// FIXME(heycam): This is a Gecko property that doesn't store currentColor
|
// FIXME(heycam): This is a Gecko property that doesn't store currentColor
|
||||||
// as a computed value. These are currently handled by converting
|
// as a computed value. These are currently handled by converting
|
||||||
|
@ -216,7 +213,7 @@ def set_gecko_property(ffi_name, expr):
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
<%def name="get_current_color_flag_from(field)">
|
<%def name="get_current_color_flag_from(field)">
|
||||||
(${field} & (gecko_style_structs::BORDER_COLOR_FOREGROUND as u8)) != 0
|
(${field} & (structs::BORDER_COLOR_FOREGROUND as u8)) != 0
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
<%def name="impl_color_setter(ident, gecko_ffi_name, color_flags_ffi_name=None)">
|
<%def name="impl_color_setter(ident, gecko_ffi_name, color_flags_ffi_name=None)">
|
||||||
|
@ -288,7 +285,7 @@ def set_gecko_property(ffi_name, expr):
|
||||||
&mut self.gecko.${union_ffi_name});
|
&mut self.gecko.${union_ffi_name});
|
||||||
}
|
}
|
||||||
fn copy_${ident}_from(&mut self, other: &Self) {
|
fn copy_${ident}_from(&mut self, other: &Self) {
|
||||||
use gecko_style_structs::nsStyleUnit::eStyleUnit_Calc;
|
use gecko_bindings::structs::nsStyleUnit::eStyleUnit_Calc;
|
||||||
debug_assert!(self.gecko.${unit_ffi_name} != eStyleUnit_Calc,
|
debug_assert!(self.gecko.${unit_ffi_name} != eStyleUnit_Calc,
|
||||||
"stylo: Can't yet handle refcounted Calc");
|
"stylo: Can't yet handle refcounted Calc");
|
||||||
self.gecko.${unit_ffi_name} = other.gecko.${unit_ffi_name};
|
self.gecko.${unit_ffi_name} = other.gecko.${unit_ffi_name};
|
||||||
|
@ -308,7 +305,7 @@ def set_gecko_property(ffi_name, expr):
|
||||||
&mut self.gecko.${y_union_ffi_name});
|
&mut self.gecko.${y_union_ffi_name});
|
||||||
}
|
}
|
||||||
fn copy_${ident}_from(&mut self, other: &Self) {
|
fn copy_${ident}_from(&mut self, other: &Self) {
|
||||||
use gecko_style_structs::nsStyleUnit::eStyleUnit_Calc;
|
use gecko_bindings::structs::nsStyleUnit::eStyleUnit_Calc;
|
||||||
debug_assert!(self.gecko.${x_unit_ffi_name} != eStyleUnit_Calc &&
|
debug_assert!(self.gecko.${x_unit_ffi_name} != eStyleUnit_Calc &&
|
||||||
self.gecko.${y_unit_ffi_name} != eStyleUnit_Calc,
|
self.gecko.${y_unit_ffi_name} != eStyleUnit_Calc,
|
||||||
"stylo: Can't yet handle refcounted Calc");
|
"stylo: Can't yet handle refcounted Calc");
|
||||||
|
@ -340,31 +337,30 @@ impl Drop for ${style_struct.gecko_struct_name} {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl Clone for ${style_struct.gecko_ffi_name} {
|
impl Clone for ${style_struct.gecko_struct_name} {
|
||||||
fn clone(&self) -> Self {
|
fn clone(&self) -> Self {
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut result: Self = zeroed();
|
let mut result: Self = zeroed();
|
||||||
Gecko_CopyConstruct_${style_struct.gecko_ffi_name}(&mut result, self);
|
Gecko_CopyConstruct_${style_struct.gecko_ffi_name}(&mut result.gecko, &self.gecko);
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unsafe impl Send for ${style_struct.gecko_ffi_name} {}
|
|
||||||
unsafe impl Sync for ${style_struct.gecko_ffi_name} {}
|
|
||||||
impl HeapSizeOf for ${style_struct.gecko_ffi_name} {
|
|
||||||
// Not entirely accurate, but good enough for now.
|
|
||||||
fn heap_size_of_children(&self) -> usize { 0 }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME(bholley): Make bindgen generate Debug for all types.
|
// FIXME(bholley): Make bindgen generate Debug for all types.
|
||||||
%if style_struct.gecko_ffi_name in "nsStyleBorder nsStyleDisplay nsStyleList nsStyleBackground "\
|
%if style_struct.gecko_ffi_name in "nsStyleBorder nsStyleDisplay nsStyleList nsStyleBackground "\
|
||||||
"nsStyleFont nsStyleSVGReset".split():
|
"nsStyleFont nsStyleSVGReset".split():
|
||||||
impl Debug for ${style_struct.gecko_ffi_name} {
|
impl Debug for ${style_struct.gecko_struct_name} {
|
||||||
// FIXME(bholley): Generate this.
|
// FIXME(bholley): Generate this.
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
write!(f, "GECKO STYLE STRUCT")
|
write!(f, "GECKO STYLE STRUCT")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
%else:
|
||||||
|
impl Debug for ${style_struct.gecko_struct_name} {
|
||||||
|
// FIXME(bholley): Generate this.
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { self.gecko.fmt(f) }
|
||||||
|
}
|
||||||
%endif
|
%endif
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
|
@ -476,14 +472,15 @@ CORNERS = [Corner("TOP_LEFT", 0), Corner("TOP_RIGHT", 1), Corner("BOTTOM_RIGHT",
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn static_assert() {
|
fn static_assert() {
|
||||||
unsafe {
|
unsafe {
|
||||||
% for side in SIDES:
|
|
||||||
transmute::<_, [u32; ${side.index}]>([1; gecko_style_structs::Side::eSide${side.name} as usize]);
|
|
||||||
% endfor
|
|
||||||
% for corner in CORNERS:
|
% for corner in CORNERS:
|
||||||
transmute::<_, [u32; ${corner.x_index}]>([1; gecko_style_structs::${corner.x_name} as usize]);
|
transmute::<_, [u32; ${corner.x_index}]>([1; structs::${corner.x_name} as usize]);
|
||||||
transmute::<_, [u32; ${corner.y_index}]>([1; gecko_style_structs::${corner.y_name} as usize]);
|
transmute::<_, [u32; ${corner.y_index}]>([1; structs::${corner.y_name} as usize]);
|
||||||
% endfor
|
% endfor
|
||||||
}
|
}
|
||||||
|
// Note: using the above technique with an enum hits a rust bug when |structs| is in a different crate.
|
||||||
|
% for side in SIDES:
|
||||||
|
{ const DETAIL: u32 = [0][(structs::Side::eSide${side.name} as usize != ${side.index}) as usize]; let _ = DETAIL; }
|
||||||
|
% endfor
|
||||||
}
|
}
|
||||||
|
|
||||||
<% border_style_keyword = Keyword("border-style",
|
<% border_style_keyword = Keyword("border-style",
|
||||||
|
@ -629,24 +626,22 @@ fn static_assert() {
|
||||||
// We could generalize this if we run into other newtype keywords.
|
// We could generalize this if we run into other newtype keywords.
|
||||||
<% overflow_x = data.longhands_by_name["overflow-x"] %>
|
<% overflow_x = data.longhands_by_name["overflow-x"] %>
|
||||||
fn set_overflow_y(&mut self, v: longhands::overflow_y::computed_value::T) {
|
fn set_overflow_y(&mut self, v: longhands::overflow_y::computed_value::T) {
|
||||||
use gecko_style_structs as gss;
|
|
||||||
use style::properties::longhands::overflow_x::computed_value::T as BaseType;
|
use style::properties::longhands::overflow_x::computed_value::T as BaseType;
|
||||||
// FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts
|
// FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts
|
||||||
self.gecko.mOverflowY = match v.0 {
|
self.gecko.mOverflowY = match v.0 {
|
||||||
% for value in overflow_x.keyword.values_for('gecko'):
|
% for value in overflow_x.keyword.values_for('gecko'):
|
||||||
BaseType::${to_rust_ident(value)} => gss::${overflow_x.keyword.gecko_constant(value)} as u8,
|
BaseType::${to_rust_ident(value)} => structs::${overflow_x.keyword.gecko_constant(value)} as u8,
|
||||||
% endfor
|
% endfor
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
<%call expr="impl_simple_copy('overflow_y', 'mOverflowY')"></%call>
|
<%call expr="impl_simple_copy('overflow_y', 'mOverflowY')"></%call>
|
||||||
fn clone_overflow_y(&self) -> longhands::overflow_y::computed_value::T {
|
fn clone_overflow_y(&self) -> longhands::overflow_y::computed_value::T {
|
||||||
use gecko_style_structs as gss;
|
|
||||||
use style::properties::longhands::overflow_x::computed_value::T as BaseType;
|
use style::properties::longhands::overflow_x::computed_value::T as BaseType;
|
||||||
use style::properties::longhands::overflow_y::computed_value::T as NewType;
|
use style::properties::longhands::overflow_y::computed_value::T as NewType;
|
||||||
// FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts
|
// FIXME(bholley): Align binary representations and ditch |match| for cast + static_asserts
|
||||||
match self.gecko.mOverflowY as u32 {
|
match self.gecko.mOverflowY as u32 {
|
||||||
% for value in overflow_x.keyword.values_for('gecko'):
|
% for value in overflow_x.keyword.values_for('gecko'):
|
||||||
gss::${overflow_x.keyword.gecko_constant(value)} => NewType(BaseType::${to_rust_ident(value)}),
|
structs::${overflow_x.keyword.gecko_constant(value)} => NewType(BaseType::${to_rust_ident(value)}),
|
||||||
% endfor
|
% endfor
|
||||||
x => panic!("Found unexpected value in style struct for overflow_y property: {}", x),
|
x => panic!("Found unexpected value in style struct for overflow_y property: {}", x),
|
||||||
}
|
}
|
||||||
|
@ -680,16 +675,13 @@ fn static_assert() {
|
||||||
color_flags_ffi_name="mTextDecorationStyle") %>
|
color_flags_ffi_name="mTextDecorationStyle") %>
|
||||||
|
|
||||||
fn has_underline(&self) -> bool {
|
fn has_underline(&self) -> bool {
|
||||||
use gecko_style_structs as gss;
|
(self.gecko.mTextDecorationStyle & (structs::NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE as u8)) != 0
|
||||||
(self.gecko.mTextDecorationStyle & (gss::NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE as u8)) != 0
|
|
||||||
}
|
}
|
||||||
fn has_overline(&self) -> bool {
|
fn has_overline(&self) -> bool {
|
||||||
use gecko_style_structs as gss;
|
(self.gecko.mTextDecorationStyle & (structs::NS_STYLE_TEXT_DECORATION_LINE_OVERLINE as u8)) != 0
|
||||||
(self.gecko.mTextDecorationStyle & (gss::NS_STYLE_TEXT_DECORATION_LINE_OVERLINE as u8)) != 0
|
|
||||||
}
|
}
|
||||||
fn has_line_through(&self) -> bool {
|
fn has_line_through(&self) -> bool {
|
||||||
use gecko_style_structs as gss;
|
(self.gecko.mTextDecorationStyle & (structs::NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH as u8)) != 0
|
||||||
(self.gecko.mTextDecorationStyle & (gss::NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH as u8)) != 0
|
|
||||||
}
|
}
|
||||||
</%self:impl_trait>
|
</%self:impl_trait>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
use app_units::Au;
|
use app_units::Au;
|
||||||
use cssparser::RGBA;
|
use cssparser::RGBA;
|
||||||
use gecko_style_structs::{nsStyleUnion, nsStyleUnit};
|
use gecko_bindings::structs::{nsStyleUnion, nsStyleUnit};
|
||||||
use std::cmp::max;
|
use std::cmp::max;
|
||||||
use style::values::computed::{LengthOrPercentage, LengthOrPercentageOrAuto, LengthOrPercentageOrNone};
|
use style::values::computed::{LengthOrPercentage, LengthOrPercentageOrAuto, LengthOrPercentageOrNone};
|
||||||
|
|
||||||
|
|
|
@ -4,20 +4,20 @@
|
||||||
|
|
||||||
#![allow(unsafe_code)]
|
#![allow(unsafe_code)]
|
||||||
|
|
||||||
use bindings::{Gecko_ChildrenCount};
|
use gecko_bindings::bindings::{Gecko_ChildrenCount};
|
||||||
use bindings::{Gecko_ElementState, Gecko_GetAttrAsUTF8, Gecko_GetDocumentElement};
|
use gecko_bindings::bindings::{Gecko_ElementState, Gecko_GetAttrAsUTF8, Gecko_GetDocumentElement};
|
||||||
use bindings::{Gecko_GetFirstChild, Gecko_GetFirstChildElement};
|
use gecko_bindings::bindings::{Gecko_GetFirstChild, Gecko_GetFirstChildElement};
|
||||||
use bindings::{Gecko_GetLastChild, Gecko_GetLastChildElement};
|
use gecko_bindings::bindings::{Gecko_GetLastChild, Gecko_GetLastChildElement};
|
||||||
use bindings::{Gecko_GetNextSibling, Gecko_GetNextSiblingElement};
|
use gecko_bindings::bindings::{Gecko_GetNextSibling, Gecko_GetNextSiblingElement};
|
||||||
use bindings::{Gecko_GetNodeData};
|
use gecko_bindings::bindings::{Gecko_GetNodeData};
|
||||||
use bindings::{Gecko_GetParentElement, Gecko_GetParentNode};
|
use gecko_bindings::bindings::{Gecko_GetParentElement, Gecko_GetParentNode};
|
||||||
use bindings::{Gecko_GetPrevSibling, Gecko_GetPrevSiblingElement};
|
use gecko_bindings::bindings::{Gecko_GetPrevSibling, Gecko_GetPrevSiblingElement};
|
||||||
use bindings::{Gecko_IsHTMLElementInHTMLDocument, Gecko_IsLink, Gecko_IsRootElement, Gecko_IsTextNode};
|
use gecko_bindings::bindings::{Gecko_IsHTMLElementInHTMLDocument, Gecko_IsLink, Gecko_IsRootElement, Gecko_IsTextNode};
|
||||||
use bindings::{Gecko_IsUnvisitedLink, Gecko_IsVisitedLink};
|
use gecko_bindings::bindings::{Gecko_IsUnvisitedLink, Gecko_IsVisitedLink};
|
||||||
#[allow(unused_imports)] // Used in commented-out code.
|
#[allow(unused_imports)] // Used in commented-out code.
|
||||||
use bindings::{Gecko_LocalName, Gecko_Namespace, Gecko_NodeIsElement, Gecko_SetNodeData};
|
use gecko_bindings::bindings::{Gecko_LocalName, Gecko_Namespace, Gecko_NodeIsElement, Gecko_SetNodeData};
|
||||||
use bindings::{RawGeckoDocument, RawGeckoElement, RawGeckoNode};
|
use gecko_bindings::bindings::{RawGeckoDocument, RawGeckoElement, RawGeckoNode};
|
||||||
use bindings::{ServoNodeData};
|
use gecko_bindings::bindings::{ServoNodeData};
|
||||||
use libc::uintptr_t;
|
use libc::uintptr_t;
|
||||||
use properties::GeckoComputedValues;
|
use properties::GeckoComputedValues;
|
||||||
use selector_impl::{GeckoSelectorImpl, NonTSPseudoClass, PrivateStyleData};
|
use selector_impl::{GeckoSelectorImpl, NonTSPseudoClass, PrivateStyleData};
|
||||||
|
|
|
@ -34,8 +34,8 @@ file_patterns_to_ignore = [
|
||||||
ignored_files = [
|
ignored_files = [
|
||||||
# Generated and upstream code combined with our own. Could use cleanup
|
# Generated and upstream code combined with our own. Could use cleanup
|
||||||
os.path.join(".", "ports", "gonk", "src", "native_window_glue.cpp"),
|
os.path.join(".", "ports", "gonk", "src", "native_window_glue.cpp"),
|
||||||
os.path.join(".", "ports", "geckolib", "bindings.rs"),
|
os.path.join(".", "ports", "geckolib", "gecko_bindings", "bindings.rs"),
|
||||||
os.path.join(".", "ports", "geckolib", "gecko_style_structs.rs"),
|
os.path.join(".", "ports", "geckolib", "gecko_bindings", "structs.rs"),
|
||||||
os.path.join(".", "resources", "hsts_preload.json"),
|
os.path.join(".", "resources", "hsts_preload.json"),
|
||||||
os.path.join(".", "tests", "wpt", "metadata", "MANIFEST.json"),
|
os.path.join(".", "tests", "wpt", "metadata", "MANIFEST.json"),
|
||||||
os.path.join(".", "tests", "wpt", "metadata-css", "MANIFEST.json"),
|
os.path.join(".", "tests", "wpt", "metadata-css", "MANIFEST.json"),
|
||||||
|
@ -64,7 +64,7 @@ ignored_dirs = [
|
||||||
os.path.join(".", "target"),
|
os.path.join(".", "target"),
|
||||||
os.path.join(".", "ports", "cef"),
|
os.path.join(".", "ports", "cef"),
|
||||||
# Tooling, generated locally from external repos.
|
# Tooling, generated locally from external repos.
|
||||||
os.path.join(".", "ports", "geckolib", "tools"),
|
os.path.join(".", "ports", "geckolib", "gecko_bindings", "tools"),
|
||||||
# Hidden directories
|
# Hidden directories
|
||||||
os.path.join(".", "."),
|
os.path.join(".", "."),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue