diff options
1192 files changed, 66738 insertions, 8023 deletions
diff --git a/.travis.yml b/.travis.yml index 8b128eeedac..6e1f5e78d32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,6 @@ matrix: - sudo apt-get update -q - sudo apt-get install clang-3.9 llvm-3.9 llvm-3.9-runtime -y - export LLVM_CONFIG=/usr/lib/llvm-3.9/bin/llvm-config - - export CC=gcc-5 CXX=g++-5 - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none -y - source ~/.profile script: @@ -43,24 +42,12 @@ matrix: CARGO_INCREMENTAL=0 addons: apt: - sources: - - ubuntu-toolchain-r-test - - sourceline: 'ppa:jonathonf/ffmpeg-3' packages: - cmake - - dbus-x11 - freeglut3-dev - - gcc-5 - - g++-5 - gperf - - libavcodec-dev - - libavformat-dev - libosmesa6-dev - - libpulse-dev - libgles2-mesa-dev - - libswscale-dev - - libswresample-dev - - pulseaudio - python-virtualenv - xorg-dev - ccache diff --git a/Cargo.lock b/Cargo.lock index 109bda5891c..1598b0b3a7a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -148,7 +148,7 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.31.3" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cexpr 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -156,7 +156,7 @@ dependencies = [ "clang-sys 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.28.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -318,20 +318,6 @@ dependencies = [ ] [[package]] -name = "cbindgen" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "clap 2.28.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "cc" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -486,7 +472,6 @@ dependencies = [ "devtools_traits 0.0.1", "euclid 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", "gaol 0.0.1 (git+https://github.com/servo/gaol)", - "gecko-media 0.1.0 (git+https://github.com/servo/gecko-media.git)", "gfx 0.0.1", "gfx_traits 0.0.1", "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -586,25 +571,6 @@ dependencies = [ ] [[package]] -name = "cubeb-ffi" -version = "0.0.2" -source = "git+https://github.com/djg/cubeb-pulse-rs?branch=dev#71e1ecfad94354b92263b33c232dd45ed0a45ffe" -dependencies = [ - "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "cubeb-pulse" -version = "0.0.2" -source = "git+https://github.com/djg/cubeb-pulse-rs?branch=dev#71e1ecfad94354b92263b33c232dd45ed0a45ffe" -dependencies = [ - "cubeb-ffi 0.0.2 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)", - "pulse 0.2.0 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)", - "pulse-ffi 0.1.0 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)", - "semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "darling" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -813,14 +779,6 @@ dependencies = [ ] [[package]] -name = "encoding_c" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "encoding_rs" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1015,22 +973,6 @@ dependencies = [ ] [[package]] -name = "gecko-media" -version = "0.1.0" -source = "git+https://github.com/servo/gecko-media.git#fe437442729cfa703b7f40407b449d5373774778" -dependencies = [ - "bindgen 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", - "cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "cubeb-pulse 0.0.2 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)", - "encoding_c 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "mp4parse_capi 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "geckoservo" version = "0.0.1" dependencies = [ @@ -1102,16 +1044,6 @@ dependencies = [ ] [[package]] -name = "gfx_tests" -version = "0.0.1" -dependencies = [ - "cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)", - "gfx 0.0.1", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "style 0.0.1", -] - -[[package]] name = "gfx_traits" version = "0.0.1" dependencies = [ @@ -1493,6 +1425,7 @@ dependencies = [ "servo_config 0.0.1", "servo_geometry 0.0.1", "servo_url 0.0.1", + "size_of_test 0.0.1", "smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "style 0.0.1", "style_traits 0.0.1", @@ -1502,14 +1435,6 @@ dependencies = [ ] [[package]] -name = "layout_tests" -version = "0.0.1" -dependencies = [ - "layout 0.0.1", - "size_of_test 0.0.1", -] - -[[package]] name = "layout_thread" version = "0.0.1" dependencies = [ @@ -1530,7 +1455,6 @@ dependencies = [ "metrics 0.0.1", "msg 0.0.1", "net_traits 0.0.1", - "nonzero 0.0.1", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "profile_traits 0.0.1", "range 0.0.1", @@ -1692,7 +1616,7 @@ dependencies = [ "cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashglobe 0.1.0", - "mozjs 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "mozjs 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "selectors 0.19.0", "servo_arc 0.1.0", "smallbitvec 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1800,14 +1724,6 @@ dependencies = [ ] [[package]] -name = "mime" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicase 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "mime_guess" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1861,7 +1777,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "mozjs" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1897,17 +1813,6 @@ dependencies = [ ] [[package]] -name = "mp4parse_capi" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cbindgen 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mp4parse 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "msg" version = "0.0.1" dependencies = [ @@ -1916,15 +1821,8 @@ dependencies = [ "malloc_size_of_derive 0.0.1", "nonzero 0.0.1", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", - "webrender_api 0.56.1 (git+https://github.com/servo/webrender)", -] - -[[package]] -name = "msg_tests" -version = "0.0.1" -dependencies = [ - "msg 0.0.1", "size_of_test 0.0.1", + "webrender_api 0.56.1 (git+https://github.com/servo/webrender)", ] [[package]] @@ -1977,28 +1875,6 @@ dependencies = [ ] [[package]] -name = "net_tests" -version = "0.0.1" -dependencies = [ - "cookie 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "devtools_traits 0.0.1", - "flate2 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-openssl 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper_serde 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ipc-channel 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "msg 0.0.1", - "net 0.0.1", - "net_traits 0.0.1", - "profile_traits 0.0.1", - "servo_config 0.0.1", - "servo_url 0.0.1", - "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "net_traits" version = "0.0.1" dependencies = [ @@ -2022,13 +1898,6 @@ dependencies = [ ] [[package]] -name = "net_traits_tests" -version = "0.0.1" -dependencies = [ - "net_traits 0.0.1", -] - -[[package]] name = "nodrop" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2374,23 +2243,6 @@ dependencies = [ ] [[package]] -name = "pulse" -version = "0.2.0" -source = "git+https://github.com/djg/cubeb-pulse-rs?branch=dev#71e1ecfad94354b92263b33c232dd45ed0a45ffe" -dependencies = [ - "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pulse-ffi 0.1.0 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)", -] - -[[package]] -name = "pulse-ffi" -version = "0.1.0" -source = "git+https://github.com/djg/cubeb-pulse-rs?branch=dev#71e1ecfad94354b92263b33c232dd45ed0a45ffe" -dependencies = [ - "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "quote" version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2564,7 +2416,6 @@ dependencies = [ "encoding_rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "gecko-media 0.1.0 (git+https://github.com/servo/gecko-media.git)", "gleam 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", "half 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.22.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2582,10 +2433,9 @@ dependencies = [ "mime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mozjs 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "mozjs 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "net_traits 0.0.1", - "nonzero 0.0.1", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "offscreen_gl_context 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)", "open 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2644,7 +2494,6 @@ dependencies = [ "metrics 0.0.1", "msg 0.0.1", "net_traits 0.0.1", - "nonzero 0.0.1", "profile_traits 0.0.1", "range 0.0.1", "script_traits 0.0.1", @@ -2730,19 +2579,6 @@ version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "semver" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] name = "serde" version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2945,13 +2781,6 @@ dependencies = [ ] [[package]] -name = "servo_config_tests" -version = "0.0.1" -dependencies = [ - "servo_config 0.0.1", -] - -[[package]] name = "servo_geometry" version = "0.0.1" dependencies = [ @@ -2981,13 +2810,6 @@ dependencies = [ ] [[package]] -name = "servo_remutex_tests" -version = "0.0.1" -dependencies = [ - "servo_remutex 0.0.1", -] - -[[package]] name = "servo_url" version = "0.0.1" dependencies = [ @@ -3109,7 +2931,7 @@ dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "arrayvec 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bindgen 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bindgen 0.32.2 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3265,14 +3087,6 @@ dependencies = [ ] [[package]] -name = "tempdir" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "tendril" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3354,14 +3168,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "toml" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "traitobject" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3393,14 +3199,6 @@ dependencies = [ ] [[package]] -name = "unicase" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] name = "unicode-bidi" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3561,7 +3359,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.56.1" -source = "git+https://github.com/servo/webrender#2547f6fe91da018cd3374acd661effb5f8fbe022" +source = "git+https://github.com/servo/webrender#e9269c7e06e20363be0b2a2a1be98d292ff7acca" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3589,7 +3387,7 @@ dependencies = [ [[package]] name = "webrender_api" version = "0.56.1" -source = "git+https://github.com/servo/webrender#2547f6fe91da018cd3374acd661effb5f8fbe022" +source = "git+https://github.com/servo/webrender#e9269c7e06e20363be0b2a2a1be98d292ff7acca" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3777,7 +3575,7 @@ dependencies = [ "checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" "checksum binary-space-partition 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88ceb0d16c4fd0e42876e298d7d3ce3780dd9ebdcbe4199816a32c77e08597ff" "checksum bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9a6301db0b49fb63551bc15b5ae348147101cdf323242b93ec7546d5002ff1af" -"checksum bindgen 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "57253399c086f4f29e57ffd3b5cdbc23a806a00292619351aa4cfa39cb49d4ea" +"checksum bindgen 0.32.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6ed9557522980fcdb4986097c2ea9d2504eafa7e5818f393110205b5325a52ce" "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" "checksum bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5cde24d1b2e2216a726368b2363a273739c91f4e3eb4e0dd12d672d396ad989" "checksum bitreader 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "80b13e2ab064ff3aa0bdbf1eff533f9822dc37899821f5f98c67f263eab51707" @@ -3792,7 +3590,6 @@ dependencies = [ "checksum byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "652805b7e73fada9d85e9a6682a4abd490cb52d96aeecc12e33a0de34dfd0d23" "checksum bytes 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c129aff112dcc562970abb69e2508b40850dd24c274761bb50fb8a0067ba6c27" "checksum caseless 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8950b075cff75cdabadee97148a8b5816c7cf62e5948a6005b5255d564b42fe7" -"checksum cbindgen 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "89e4b1f207d22a68f2d3d8778a4b83ed7399f81e96b8d0f6c316c945f1c7126f" "checksum cc 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c674f0870e3dbd4105184ea035acb1c32c8ae69939c9e228d2b11bbfe29efad" "checksum cexpr 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "393a5f0088efbe41f9d1fcd062f24e83c278608420e62109feb2c8abee07de7d" "checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" @@ -3813,8 +3610,6 @@ dependencies = [ "checksum core-text 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bcad23756dd1dc4b47bf6a914ace27aadb8fa68889db5837af2308d018d0467c" "checksum cssparser 0.23.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a807ac3ab7a217829c2a3b65732b926b2befe6a35f33b4bf8b503692430f223" "checksum cssparser-macros 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "079adec4af52bb5275eadd004292028c79eb3c5f5b4ee8086a36d4197032f6df" -"checksum cubeb-ffi 0.0.2 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)" = "<none>" -"checksum cubeb-pulse 0.0.2 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)" = "<none>" "checksum darling 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9861a8495606435477df581bc858ccf15a3469747edf175b94a4704fd9aaedac" "checksum darling_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1486a8b00b45062c997f767738178b43219133dd0c8c826cb811e60563810821" "checksum darling_macro 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a86ec160aa0c3dd492dd4a14ec8104ad8f1a9400a820624db857998cc1f80f9" @@ -3828,7 +3623,6 @@ dependencies = [ "checksum dwmapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07c4c7cc7b396419bc0a4d90371d0cee16cb5053b53647d287c0b728000c41fe" "checksum dwrote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b26e30aaa6bf31ec830db15fec14ed04f0f2ecfcc486ecfce88c55d3389b237f" "checksum either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18785c1ba806c258137c937e44ada9ee7e69a37e3c72077542cd2f069d78562a" -"checksum encoding_c 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "93ec52324ca72f423237a413ca0e1c60654c8b3d0934fcd5fd888508dfcc4ba7" "checksum encoding_rs 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f5215aabf22b83153be3ee44dfe3f940214541b2ce13d419c55e7a115c8c51a9" "checksum energy-monitor 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fe872d0664f1cc60db36349af245d892ee67d3c8f78055df0ebc43271fd4e05c" "checksum energymon 0.3.0 (git+https://github.com/energymon/energymon-rust.git)" = "<none>" @@ -3852,7 +3646,6 @@ dependencies = [ "checksum gaol 0.0.1 (git+https://github.com/servo/gaol)" = "<none>" "checksum gcc 0.3.47 (registry+https://github.com/rust-lang/crates.io-index)" = "5773372df827453bc38d4fd8efe425c7f28b1f54468816183fc8716cfb90bd30" "checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518" -"checksum gecko-media 0.1.0 (git+https://github.com/servo/gecko-media.git)" = "<none>" "checksum getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9047cfbd08a437050b363d35ef160452c5fe8ea5187ae0a624708c91581d685" "checksum gif 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8a80d6fe9e52f637df9afd4779449a7be17c39cc9c35b01589bb833f956ba596" "checksum gl_generator 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f5c19cde55637681450c92f7a05ea16c78e2b6d0587e601ec1ebdab6960854b" @@ -3903,17 +3696,15 @@ dependencies = [ "checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" "checksum metadeps 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "73b122901b3a675fac8cecf68dcb2f0d3036193bc861d1ac0e1c337f7d5254c2" "checksum mime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9d69889cdc6336ed56b174514ce876c4c3dc564cc23dd872e7bca589bb2a36c8" -"checksum mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e2e00e17be181010a91dbfefb01660b17311059dc8c7f48b9017677721e732bd" "checksum mime_guess 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76da6df85047af8c0edfa53f48eb1073012ce1cc95c8fedc0a374f659a89dd65" "checksum miniz-sys 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "28eaee17666671fa872e567547e8428e83308ebe5808cdf6a0e28397dbe2c726" "checksum mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9e965267d4d58496fc4f740e9861118367f13570cadf66316ed2c3f2f14d87c7" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9de3eca27871df31c33b807f834b94ef7d000956f57aa25c5aed9c5f0aae8f6f" -"checksum mozjs 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2cd8370617e9a151ed9e7b49f38092075d0ae80bdf9f1dcd807a60cc9c3b7151" +"checksum mozjs 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "199f707066bf05b559ef6e46741c20e4f7bca8ae3a9c9d953d728dbb840f4eaa" "checksum mozjs_sys 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1e24df9f76502cd4459919098ec1ac3af75ce694ec5b8837aa91f69f2ad0eb" "checksum mp3-metadata 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ab5f1d2693586420208d1200ce5a51cd44726f055b635176188137aff42c7de" "checksum mp4parse 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f821e3799bc0fd16d9b861fb02fa7ee1b5fba29f45ad591dade105c48ca9a1a0" -"checksum mp4parse_capi 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "395247952fbdb68f933dc008927c635d3c87386af3bccd6fb7ae555137028449" "checksum net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)" = "bc01404e7568680f1259aa5729539f221cb1e6d047a0d9053cab4be8a73b5d67" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" "checksum nom 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b8c256fd9471521bcb84c3cdba98921497f1a331cbc15b8030fc63b82050ce" @@ -3950,8 +3741,6 @@ dependencies = [ "checksum png 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925" "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" "checksum procedural-masquerade 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c93cdc1fb30af9ddf3debc4afbdb0f35126cbd99daa229dd76cdd5349b41d989" -"checksum pulse 0.2.0 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)" = "<none>" -"checksum pulse-ffi 0.1.0 (git+https://github.com/djg/cubeb-pulse-rs?branch=dev)" = "<none>" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" "checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" @@ -3972,8 +3761,6 @@ dependencies = [ "checksum scoped_threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3ef399c8893e8cb7aa9696e895427fab3a6bf265977bb96e126f24ddd2cda85a" "checksum scopeguard 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c79eb2c3ac4bc2507cda80e7f3ac5b88bd8eae4c0914d5663e6a8933994be918" "checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac" -"checksum semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" -"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)" = "db99f3919e20faa51bb2996057f5031d8685019b5a06139b1ce761da671b8526" "checksum serde_bytes 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a73f5ad9bb83e1e407254c7a355f4efdaffe3c1442fc0657ddb8b9b6b225655" "checksum serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)" = "f4ba7591cfe93755e89eeecdbcc668885624829b020050e6aec99c2a03bd3fd0" @@ -4005,7 +3792,6 @@ dependencies = [ "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum synstructure 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cf318c34a2f8381a4f3d4db2c91b45bca2b1cd8cbe56caced900647be164800c" -"checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6" "checksum tendril 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9de21546595a0873061940d994bbbc5c35f024ae4fd61ec5c5b159115684f508" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693" @@ -4016,13 +3802,11 @@ dependencies = [ "checksum time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "ffd7ccbf969a892bf83f1e441126968a07a3941c24ff522a26af9f9f4585d1a3" "checksum tinyfiledialogs 2.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d401358cd71aca93d5f4fccd3db5b87d970ae70fe457911929d99f4a87f7531" "checksum toml 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "736b60249cb25337bc196faa43ee12c705e426f3d55c214d73a4e7be06f92cb4" -"checksum toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e" "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" "checksum truetype 0.26.0 (registry+https://github.com/rust-lang/crates.io-index)" = "acec30350633d6dac9dc1a625786b6cbe9150664be941aac2c35ad7199eab877" "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" "checksum uluru 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "519130f0ea964ba540a9d8af1373738c2226f1d465eda07e61db29feb5479db9" "checksum unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "13a5906ca2b98c799f4b1ab4557b76367ebd6ae5ef14930ec841c74aed5f3764" -"checksum unicase 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e01da42520092d0cd2d6ac3ae69eb21a22ad43ff195676b86f8c37f487d6b80" "checksum unicode-bidi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a6a2c4e3710edd365cd7e78383153ed739fa31af19f9172f72d3575060f5a43a" "checksum unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f" "checksum unicode-script 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e5430ae21ef212551680d0021fc7dbd936e8b268c5ea8fdae8814e0b2496d80f" diff --git a/README.md b/README.md index 4a1f43fbd30..95d6ddcdee8 100644 --- a/README.md +++ b/README.md @@ -82,10 +82,7 @@ sudo apt install git curl freeglut3-dev autoconf libx11-dev \ libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \ gperf g++ build-essential cmake virtualenv python-pip \ libssl1.0-dev libbz2-dev libosmesa6-dev libxmu6 libxmu-dev \ - libglu1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev \ - pulseaudio dbus-x11 libavcodec-dev libavformat-dev \ - libavutil-dev libswresample-dev libswscale-dev libdbus-1-dev \ - libpulse-dev clang + libglu1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev ``` If you using a version prior to **Ubuntu 17.04** or **Debian Sid**, replace `libssl1.0-dev` with `libssl-dev`. @@ -101,7 +98,7 @@ sudo dnf install curl freeglut-devel libtool gcc-c++ libXi-devel \ freetype-devel mesa-libGL-devel mesa-libEGL-devel glib2-devel libX11-devel libXrandr-devel gperf \ fontconfig-devel cabextract ttmkfdir python python-virtualenv python-pip expat-devel \ rpm-build openssl-devel cmake bzip2-devel libXcursor-devel libXmu-devel mesa-libOSMesa-devel \ - dbus-devel ncurses-devel pulseaudio-libs-devel clang clang-libs + dbus-devel ncurses-devel ``` #### On CentOS @@ -110,30 +107,19 @@ sudo yum install curl freeglut-devel libtool gcc-c++ libXi-devel \ freetype-devel mesa-libGL-devel mesa-libEGL-devel glib2-devel libX11-devel libXrandr-devel gperf \ fontconfig-devel cabextract ttmkfdir python python-virtualenv python-pip expat-devel \ rpm-build openssl-devel cmake3 bzip2-devel libXcursor-devel libXmu-devel mesa-libOSMesa-devel \ - dbus-devel ncurses-devel python34 pulseaudio-libs-devel clang clang-libs llvm-toolset-7 + dbus-devel ncurses-devel python34 ``` - -Build inside `llvm-toolset` and `devtoolset`: -``` -scl enable devtoolset-7 llvm-toolset-7 bash -``` -with the following environmental variables set: -``` -export CMAKE=cmake3 -export LIBCLANG_PATH=/opt/rh/llvm-toolset-7/root/usr/lib64 -``` - #### On openSUSE Linux ``` sh sudo zypper install libX11-devel libexpat-devel libbz2-devel Mesa-libEGL-devel Mesa-libGL-devel cabextract cmake \ dbus-1-devel fontconfig-devel freetype-devel gcc-c++ git glib2-devel gperf \ harfbuzz-devel libOSMesa-devel libXcursor-devel libXi-devel libXmu-devel libXrandr-devel libopenssl-devel \ - python-pip python-virtualenv rpm-build glu-devel llvm-clang libclang + python-pip python-virtualenv rpm-build glu-devel ``` #### On Arch Linux ``` sh -sudo pacman -S --needed base-devel git python2 python2-virtualenv python2-pip mesa cmake bzip2 libxmu glu pkg-config clang +sudo pacman -S --needed base-devel git python2 python2-virtualenv python2-pip mesa cmake bzip2 libxmu glu pkg-config ``` #### On Gentoo Linux @@ -141,11 +127,7 @@ sudo pacman -S --needed base-devel git python2 python2-virtualenv python2-pip me sudo emerge net-misc/curl media-libs/freeglut \ media-libs/freetype media-libs/mesa dev-util/gperf \ dev-python/virtualenv dev-python/pip dev-libs/openssl \ - x11-libs/libXmu media-libs/glu x11-base/xorg-server sys-devel/clang -``` -with the following environment variable set: -```sh -export LIBCLANG_PATH="/usr/lib64/llvm/*/lib64" + x11-libs/libXmu media-libs/glu x11-base/xorg-server ``` #### On Windows (MSVC) diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index e03021761be..730071421d9 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -353,7 +353,9 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR, self.dom_outputs.insert(pipeline_id, DOMToTextureData { context_id, texture_id, document_id, size }); - self.webrender_api.enable_frame_output(document_id, pipeline_id, true); + let mut txn = webrender_api::Transaction::new(); + txn.enable_frame_output(pipeline_id, true); + self.webrender_api.send_transaction(document_id, txn); }, DOMToTextureCommand::Lock(pipeline_id, gl_sync, sender) => { let contexts = &self.contexts; @@ -376,7 +378,9 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR, if let Some((pipeline_id, document_id)) = self.dom_outputs.iter() .find(|&(_, v)| v.texture_id == texture_id) .map(|(k, v)| (*k, v.document_id)) { - self.webrender_api.enable_frame_output(document_id, pipeline_id, false); + let mut txn = webrender_api::Transaction::new(); + txn.enable_frame_output(pipeline_id, false); + self.webrender_api.send_transaction(document_id, txn); self.dom_outputs.remove(&pipeline_id); } }, diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 496a75b0cc3..d964c0bdbee 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -29,7 +29,7 @@ use std::rc::Rc; use std::sync::mpsc::Sender; use std::time::{Duration, Instant}; use style_traits::{CSSPixel, DevicePixel, PinchZoomFactor}; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use style_traits::viewport::ViewportConstraints; use time::{precise_time_ns, precise_time_s}; use touch::{TouchHandler, TouchAction}; @@ -609,8 +609,10 @@ impl<Window: WindowMethods> IOCompositor<Window> { self.root_pipeline = Some(frame_tree.pipeline.clone()); let pipeline_id = frame_tree.pipeline.id.to_webrender(); - self.webrender_api.set_root_pipeline(self.webrender_document, pipeline_id); - self.webrender_api.generate_frame(self.webrender_document, None); + let mut txn = webrender_api::Transaction::new(); + txn.set_root_pipeline(pipeline_id); + txn.generate_frame(); + self.webrender_api.send_transaction(self.webrender_document, txn); self.create_pipeline_details_for_frame_tree(&frame_tree); @@ -769,7 +771,7 @@ impl<Window: WindowMethods> IOCompositor<Window> { warn!("Sending event to constellation failed ({}).", e); } - if let Some(cursor) = Cursor::from_u8(item.tag.1 as _).ok() { + if let Some(cursor) = CursorKind::from_u8(item.tag.1 as _).ok() { let msg = ConstellationMsg::SetCursor(cursor); if let Err(e) = self.constellation_chan.send(msg) { warn!("Sending event to constellation failed ({}).", e); @@ -992,7 +994,9 @@ impl<Window: WindowMethods> IOCompositor<Window> { (combined_event.cursor.to_f32() / self.scale).to_untyped(); let location = webrender_api::ScrollLocation::Delta(delta); let cursor = webrender_api::WorldPoint::from_untyped(&cursor); - self.webrender_api.scroll(self.webrender_document, location, cursor, combined_event.phase); + let mut txn = webrender_api::Transaction::new(); + txn.scroll(location, cursor, combined_event.phase); + self.webrender_api.send_transaction(self.webrender_document, txn); last_combined_event = None } } @@ -1047,7 +1051,9 @@ impl<Window: WindowMethods> IOCompositor<Window> { }; let cursor = (combined_event.cursor.to_f32() / self.scale).to_untyped(); let cursor = webrender_api::WorldPoint::from_untyped(&cursor); - self.webrender_api.scroll(self.webrender_document, scroll_location, cursor, combined_event.phase); + let mut txn = webrender_api::Transaction::new(); + txn.scroll(scroll_location, cursor, combined_event.phase); + self.webrender_api.send_transaction(self.webrender_document, txn); self.waiting_for_results_of_scroll = true } @@ -1145,7 +1151,10 @@ impl<Window: WindowMethods> IOCompositor<Window> { fn update_page_zoom_for_webrender(&mut self) { let page_zoom = webrender_api::ZoomFactor::new(self.page_zoom.get()); - self.webrender_api.set_page_zoom(self.webrender_document, page_zoom); + + let mut txn = webrender_api::Transaction::new(); + txn.set_page_zoom(page_zoom); + self.webrender_api.send_transaction(self.webrender_document, txn); } /// Simulate a pinch zoom @@ -1443,7 +1452,9 @@ impl<Window: WindowMethods> IOCompositor<Window> { } if self.webrender.layers_are_bouncing_back() { - self.webrender_api.tick_scrolling_bounce_animations(self.webrender_document); + let mut txn = webrender_api::Transaction::new(); + txn.tick_scrolling_bounce_animations(); + self.webrender_api.send_transaction(self.webrender_document, txn); self.send_viewport_rects() } } @@ -1537,7 +1548,10 @@ impl<Window: WindowMethods> IOCompositor<Window> { }; flags.toggle(flag); self.webrender.set_debug_flags(flags); - self.webrender_api.generate_frame(self.webrender_document, None); + + let mut txn = webrender_api::Transaction::new(); + txn.generate_frame(); + self.webrender_api.send_transaction(self.webrender_document, txn); } } diff --git a/components/compositing/compositor_thread.rs b/components/compositing/compositor_thread.rs index 31ac2f32783..2e3d69f8057 100644 --- a/components/compositing/compositor_thread.rs +++ b/components/compositing/compositor_thread.rs @@ -17,7 +17,7 @@ use script_traits::{AnimationState, ConstellationMsg, EventResult, LoadData}; use servo_url::ServoUrl; use std::fmt::{Debug, Error, Formatter}; use std::sync::mpsc::{Receiver, Sender}; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use style_traits::viewport::ViewportConstraints; use webrender; use webrender_api; @@ -133,7 +133,7 @@ pub enum EmbedderMsg { /// Sends an unconsumed key event back to the embedder. KeyEvent(Option<TopLevelBrowsingContextId>, Option<char>, Key, KeyState, KeyModifiers), /// Changes the cursor. - SetCursor(Cursor), + SetCursor(CursorKind), /// A favicon was detected NewFavicon(TopLevelBrowsingContextId, ServoUrl), /// <head> tag finished parsing diff --git a/components/compositing/windowing.rs b/components/compositing/windowing.rs index 5a2f0bc8237..94e9bd19865 100644 --- a/components/compositing/windowing.rs +++ b/components/compositing/windowing.rs @@ -17,7 +17,7 @@ use servo_url::ServoUrl; use std::fmt::{Debug, Error, Formatter}; use std::rc::Rc; use style_traits::DevicePixel; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use webrender_api::{DeviceUintSize, DeviceUintRect, ScrollLocation}; #[derive(Clone)] @@ -173,7 +173,7 @@ pub trait WindowMethods { fn prepare_for_composite(&self, width: usize, height: usize) -> bool; /// Sets the cursor to be used in the window. - fn set_cursor(&self, cursor: Cursor); + fn set_cursor(&self, cursor: CursorKind); /// Process a key event. fn handle_key(&self, ctx: Option<TopLevelBrowsingContextId>, ch: Option<char>, key: Key, mods: KeyModifiers); diff --git a/components/config/Cargo.toml b/components/config/Cargo.toml index e09c78ecbb8..1d5c48d605f 100644 --- a/components/config/Cargo.toml +++ b/components/config/Cargo.toml @@ -8,6 +8,8 @@ publish = false [lib] name = "servo_config" path = "lib.rs" +test = false +doctest = false [dependencies] euclid = "0.16" diff --git a/tests/unit/servo_config/opts.rs b/components/config/tests/opts.rs index b533429df5b..53a049e103c 100644 --- a/tests/unit/servo_config/opts.rs +++ b/components/config/tests/opts.rs @@ -2,6 +2,8 @@ * 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 servo_config; + use servo_config::opts::{parse_url_or_filename, parse_pref_from_command_line}; use servo_config::prefs::{PrefValue, PREFS}; use std::path::Path; diff --git a/tests/unit/servo_config/prefs.rs b/components/config/tests/prefs.rs index 8b6b7295815..c9857345bb2 100644 --- a/tests/unit/servo_config/prefs.rs +++ b/components/config/tests/prefs.rs @@ -2,6 +2,8 @@ * 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 servo_config; + use servo_config::basedir; use servo_config::prefs::{PREFS, PrefValue, read_prefs_from_file}; use std::fs::{self, File}; diff --git a/components/constellation/Cargo.toml b/components/constellation/Cargo.toml index 7cadee11723..fda299e3840 100644 --- a/components/constellation/Cargo.toml +++ b/components/constellation/Cargo.toml @@ -43,6 +43,3 @@ webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} [target.'cfg(all(not(target_os = "windows"), not(target_os = "ios")))'.dependencies] gaol = {git = "https://github.com/servo/gaol"} - -[target.'cfg(all(any(target_os = "macos", target_os = "linux"), not(any(target_arch = "arm", target_arch = "aarch64"))))'.dependencies] -gecko-media = {git = "https://github.com/servo/gecko-media.git"} diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index ec023e3971b..09bce57bb90 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -108,8 +108,6 @@ use debugger; use devtools_traits::{ChromeToDevtoolsControlMsg, DevtoolsControlMsg}; use euclid::{Size2D, TypedSize2D, TypedScale}; use event_loop::EventLoop; -#[cfg(all(any(target_os = "macos", target_os = "linux"), not(any(target_arch = "arm", target_arch = "aarch64"))))] -use gecko_media::GeckoMedia; use gfx::font_cache_thread::FontCacheThread; use gfx_traits::Epoch; use ipc_channel::{Error as IpcError}; @@ -154,7 +152,7 @@ use std::sync::Arc; use std::sync::mpsc::{Receiver, Sender, channel}; use std::thread; use style_traits::CSSPixel; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use style_traits::viewport::ViewportConstraints; use timer_scheduler::TimerScheduler; use webrender_api; @@ -1483,16 +1481,6 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF> debug!("Asking compositor to complete shutdown."); self.compositor_proxy.send(ToCompositorMsg::ShutdownComplete); - - #[cfg(all( - any(target_os = "macos", target_os = "linux"), - not(any(target_arch = "arm", target_arch = "aarch64")), - ))] - { - if let Err(()) = GeckoMedia::shutdown() { - warn!("Media stack shutdown failed."); - } - } } fn handle_pipeline_exited(&mut self, pipeline_id: PipelineId) { @@ -1818,7 +1806,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF> self.compositor_proxy.send(ToCompositorMsg::PendingPaintMetric(pipeline_id, epoch)) } - fn handle_set_cursor_msg(&mut self, cursor: Cursor) { + fn handle_set_cursor_msg(&mut self, cursor: CursorKind) { self.embedder_proxy.send(EmbedderMsg::SetCursor(cursor)) } diff --git a/components/constellation/lib.rs b/components/constellation/lib.rs index 59ef714ef88..a0fd36325a8 100644 --- a/components/constellation/lib.rs +++ b/components/constellation/lib.rs @@ -17,8 +17,6 @@ extern crate devtools_traits; extern crate euclid; #[cfg(all(not(target_os = "windows"), not(target_os = "ios")))] extern crate gaol; -#[cfg(all(any(target_os = "macos", target_os = "linux"), not(any(target_arch = "arm", target_arch = "aarch64"))))] -extern crate gecko_media; extern crate gfx; extern crate gfx_traits; extern crate hyper; diff --git a/components/gfx/Cargo.toml b/components/gfx/Cargo.toml index c9220a2c080..5eea73f321f 100644 --- a/components/gfx/Cargo.toml +++ b/components/gfx/Cargo.toml @@ -9,6 +9,8 @@ publish = false [lib] name = "gfx" path = "lib.rs" +test = false +doctest = false [features] unstable = ["simd"] diff --git a/components/gfx/display_list/mod.rs b/components/gfx/display_list/mod.rs index edde7e118f7..d481ef17017 100644 --- a/components/gfx/display_list/mod.rs +++ b/components/gfx/display_list/mod.rs @@ -30,7 +30,7 @@ use std::f32; use std::fmt; use std::sync::Arc; use style::values::computed::Filter; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use text::TextRun; use text::glyph::ByteIndex; use webrender_api::{BoxShadowClipMode, ClipId, ColorF, ExtendMode, GradientStop, ImageKey}; @@ -646,7 +646,7 @@ pub struct DisplayItemMetadata { pub node: OpaqueNode, /// The value of the `cursor` property when the mouse hovers over this display item. If `None`, /// this display item is ineligible for pointer events (`pointer-events: none`). - pub pointing: Option<Cursor>, + pub pointing: Option<CursorKind>, } /// Paints a solid color. diff --git a/tests/unit/gfx/text_util.rs b/components/gfx/tests/text_util.rs index f0253179145..7729a6f78a7 100644 --- a/tests/unit/gfx/text_util.rs +++ b/components/gfx/tests/text_util.rs @@ -2,6 +2,8 @@ * 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 gfx; + use gfx::text::util::{CompressionMode, transform_text}; #[test] diff --git a/components/gfx/text/glyph.rs b/components/gfx/text/glyph.rs index e765f48ee20..0c3386aca7d 100644 --- a/components/gfx/text/glyph.rs +++ b/components/gfx/text/glyph.rs @@ -392,7 +392,7 @@ impl<'a> GlyphInfo<'a> { /// Simple glyphs are stored inline in the `entry_buffer`, detailed glyphs are /// stored as pointers into the `detail_store`. /// -/// ~~~ignore +/// ~~~ascii /// +- GlyphStore --------------------------------+ /// | +---+---+---+---+---+---+---+ | /// | entry_buffer: | | s | | s | | s | s | | d = detailed diff --git a/components/hashglobe/src/shim.rs b/components/hashglobe/src/shim.rs index 08fbf32b72f..146ff851a0e 100644 --- a/components/hashglobe/src/shim.rs +++ b/components/hashglobe/src/shim.rs @@ -1,5 +1,6 @@ use std::marker::PhantomData; +// FIXME: remove this and use std::ptr::NonNull when Firefox requires Rust 1.25+ pub struct NonZeroPtr<T: 'static>(&'static T); impl<T: 'static> NonZeroPtr<T> { @@ -57,4 +58,4 @@ impl<'a, T> From<&'a mut T> for Shared<T> { fn from(reference: &'a mut T) -> Self { unsafe { Shared::new_unchecked(reference) } } -}
\ No newline at end of file +} diff --git a/components/layout/Cargo.toml b/components/layout/Cargo.toml index 60cf29ca3c2..14532a1da52 100644 --- a/components/layout/Cargo.toml +++ b/components/layout/Cargo.toml @@ -8,6 +8,8 @@ publish = false [lib] name = "layout" path = "lib.rs" +test = false +doctest = false [dependencies] app_units = "0.6.1" @@ -46,3 +48,6 @@ style_traits = {path = "../style_traits"} unicode-bidi = {version = "0.3", features = ["with_serde"]} unicode-script = {version = "0.1", features = ["harfbuzz"]} webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} + +[dev-dependencies] +size_of_test = {path = "../size_of_test"} diff --git a/components/layout/animation.rs b/components/layout/animation.rs index a3c364a7851..27497811489 100644 --- a/components/layout/animation.rs +++ b/components/layout/animation.rs @@ -15,6 +15,7 @@ use script_traits::{AnimationState, ConstellationControlMsg, LayoutMsg as Conste use script_traits::UntrustedNodeAddress; use std::sync::mpsc::Receiver; use style::animation::{Animation, update_style_for_animation}; +use style::dom::TElement; use style::font_metrics::ServoMetricsProvider; use style::selector_parser::RestyleDamage; use style::timer::Timer; @@ -22,14 +23,19 @@ use style::timer::Timer; /// Processes any new animations that were discovered after style recalculation. /// Also expire any old animations that have completed, inserting them into /// `expired_animations`. -pub fn update_animation_state(constellation_chan: &IpcSender<ConstellationMsg>, - script_chan: &IpcSender<ConstellationControlMsg>, - running_animations: &mut FnvHashMap<OpaqueNode, Vec<Animation>>, - expired_animations: &mut FnvHashMap<OpaqueNode, Vec<Animation>>, - mut newly_transitioning_nodes: Option<&mut Vec<UntrustedNodeAddress>>, - new_animations_receiver: &Receiver<Animation>, - pipeline_id: PipelineId, - timer: &Timer) { +pub fn update_animation_state<E>( + constellation_chan: &IpcSender<ConstellationMsg>, + script_chan: &IpcSender<ConstellationControlMsg>, + running_animations: &mut FnvHashMap<OpaqueNode, Vec<Animation>>, + expired_animations: &mut FnvHashMap<OpaqueNode, Vec<Animation>>, + mut newly_transitioning_nodes: Option<&mut Vec<UntrustedNodeAddress>>, + new_animations_receiver: &Receiver<Animation>, + pipeline_id: PipelineId, + timer: &Timer, +) +where + E: TElement, +{ let mut new_running_animations = vec![]; while let Ok(animation) = new_animations_receiver.try_recv() { let mut should_push = true; @@ -144,22 +150,25 @@ pub fn update_animation_state(constellation_chan: &IpcSender<ConstellationMsg>, /// Recalculates style for a set of animations. This does *not* run with the DOM /// lock held. -// NB: This is specific for SelectorImpl, since the layout context and the -// flows are SelectorImpl specific too. If that goes away at some point, -// this should be made generic. -pub fn recalc_style_for_animations(context: &LayoutContext, - flow: &mut Flow, - animations: &FnvHashMap<OpaqueNode, - Vec<Animation>>) { +pub fn recalc_style_for_animations<E>( + context: &LayoutContext, + flow: &mut Flow, + animations: &FnvHashMap<OpaqueNode, Vec<Animation>>, +) +where + E: TElement, +{ let mut damage = RestyleDamage::empty(); flow.mutate_fragments(&mut |fragment| { if let Some(ref animations) = animations.get(&fragment.node) { for animation in animations.iter() { let old_style = fragment.style.clone(); - update_style_for_animation(&context.style_context, - animation, - &mut fragment.style, - &ServoMetricsProvider); + update_style_for_animation::<E>( + &context.style_context, + animation, + &mut fragment.style, + &ServoMetricsProvider, + ); let difference = RestyleDamage::compute_style_difference( &old_style, @@ -173,6 +182,6 @@ pub fn recalc_style_for_animations(context: &LayoutContext, let base = flow.mut_base(); base.restyle_damage.insert(damage); for kid in base.children.iter_mut() { - recalc_style_for_animations(context, kid, animations) + recalc_style_for_animations::<E>(context, kid, animations) } } diff --git a/components/layout/construct.rs b/components/layout/construct.rs index 79d72c8471c..bbbd9287e13 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -51,6 +51,7 @@ use style::computed_values::float::T as Float; use style::computed_values::list_style_position::T as ListStylePosition; use style::computed_values::position::T as Position; use style::context::SharedStyleContext; +use style::dom::TElement; use style::logical_geometry::Direction; use style::properties::ComputedValues; use style::properties::longhands::list_style_image; @@ -140,22 +141,22 @@ pub struct InlineFragmentsConstructionResult { /// /// The resulting `ConstructionItem` for the outer `span` will be: /// -/// ```ignore +/// ```rust,ignore /// ConstructionItem::InlineFragments( -/// InlineFragmentsConstructionResult{ +/// InlineFragmentsConstructionResult { /// splits: linked_list![ -/// InlineBlockSplit{ -/// predecessors: IntermediateInlineFragments{ +/// InlineBlockSplit { +/// predecessors: IntermediateInlineFragments { /// fragments: linked_list![A], -/// absolute_descendents: AbsoluteDescendents{ +/// absolute_descendents: AbsoluteDescendents { /// descendant_links: vec![] -/// } +/// }, /// }, -/// flow: B +/// flow: B, /// } /// ], /// fragments: linked_list![C], -/// } +/// }, /// ) /// ``` #[derive(Clone)] @@ -170,11 +171,12 @@ pub struct InlineBlockSplit { impl InlineBlockSplit { /// Flushes the given accumulator to the new split and makes a new accumulator to hold any /// subsequent fragments. - fn new<ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>(fragment_accumulator: &mut InlineFragmentsAccumulator, - node: &ConcreteThreadSafeLayoutNode, - style_context: &SharedStyleContext, - flow: FlowRef) - -> InlineBlockSplit { + fn new<ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>( + fragment_accumulator: &mut InlineFragmentsAccumulator, + node: &ConcreteThreadSafeLayoutNode, + style_context: &SharedStyleContext, + flow: FlowRef, + ) -> InlineBlockSplit { fragment_accumulator.enclosing_node.as_mut().expect( "enclosing_node is None; Are {ib} splits being generated outside of an inline node?" ).flags.remove(InlineFragmentNodeFlags::LAST_FRAGMENT_OF_ELEMENT); @@ -183,7 +185,9 @@ impl InlineBlockSplit { predecessors: mem::replace( fragment_accumulator, InlineFragmentsAccumulator::from_inline_node( - node, style_context)).to_intermediate_inline_fragments(style_context), + node, + style_context, + )).to_intermediate_inline_fragments::<ConcreteThreadSafeLayoutNode>(style_context), flow: flow, }; @@ -280,8 +284,13 @@ impl InlineFragmentsAccumulator { self.fragments.absolute_descendants.push_descendants(fragments.absolute_descendants); } - fn to_intermediate_inline_fragments(self, context: &SharedStyleContext) - -> IntermediateInlineFragments { + fn to_intermediate_inline_fragments<N>( + self, + context: &SharedStyleContext, + ) -> IntermediateInlineFragments + where + N: ThreadSafeLayoutNode, + { let InlineFragmentsAccumulator { mut fragments, enclosing_node, @@ -308,9 +317,21 @@ impl InlineFragmentsAccumulator { if let Some((start, end)) = bidi_control_chars { fragments.fragments.push_front( - control_chars_to_fragment(&enclosing_node, context, start, restyle_damage)); + control_chars_to_fragment::<N::ConcreteElement>( + &enclosing_node, + context, + start, + restyle_damage, + ) + ); fragments.fragments.push_back( - control_chars_to_fragment(&enclosing_node, context, end, restyle_damage)); + control_chars_to_fragment::<N::ConcreteElement>( + &enclosing_node, + context, + end, + restyle_damage, + ) + ); } } fragments @@ -402,13 +423,18 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> /// `#[inline(always)]` because this is performance critical and LLVM will not inline it /// otherwise. #[inline(always)] - fn flush_inline_fragments_to_flow(&mut self, - fragment_accumulator: InlineFragmentsAccumulator, - flow: &mut FlowRef, - absolute_descendants: &mut AbsoluteDescendants, - legalizer: &mut Legalizer, - node: &ConcreteThreadSafeLayoutNode) { - let mut fragments = fragment_accumulator.to_intermediate_inline_fragments(self.style_context()); + fn flush_inline_fragments_to_flow( + &mut self, + fragment_accumulator: InlineFragmentsAccumulator, + flow: &mut FlowRef, + absolute_descendants: &mut AbsoluteDescendants, + legalizer: &mut Legalizer, + node: &ConcreteThreadSafeLayoutNode, + ) { + let mut fragments = + fragment_accumulator.to_intermediate_inline_fragments::<ConcreteThreadSafeLayoutNode>( + self.style_context(), + ); if fragments.is_empty() { return }; @@ -479,7 +505,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> } inline_flow_ref.finish(); - legalizer.add_child(self.style_context(), flow, inline_flow_ref) + legalizer.add_child::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + self.style_context(), + flow, + inline_flow_ref, + ) } fn build_block_flow_using_construction_result_of_child( @@ -512,7 +542,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> legalizer, node); } - legalizer.add_child(self.style_context(), flow, kid_flow) + legalizer.add_child::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + self.style_context(), + flow, + kid_flow, + ) } abs_descendants.push_descendants(kid_abs_descendants); } @@ -546,7 +580,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> node); // Push the flow generated by the {ib} split onto our list of flows. - legalizer.add_child(self.style_context(), flow, kid_flow) + legalizer.add_child::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + self.style_context(), + flow, + kid_flow, + ) } // Add the fragments to the list we're maintaining. @@ -666,11 +704,17 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> let context = self.style_context(); let mut style = node.style(context); - style = context.stylist.style_for_anonymous( - &context.guards, &PseudoElement::ServoText, &style); + style = context.stylist.style_for_anonymous::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + &context.guards, + &PseudoElement::ServoText, + &style, + ); if node_is_input_or_text_area { - style = context.stylist.style_for_anonymous( - &context.guards, &PseudoElement::ServoInputText, &style) + style = context.stylist.style_for_anonymous::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + &context.guards, + &PseudoElement::ServoInputText, + &style, + ) } self.create_fragments_for_node_text_content(&mut fragments, node, &style) @@ -878,7 +922,9 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> let construction_item = ConstructionItem::InlineFragments( InlineFragmentsConstructionResult { splits: opt_inline_block_splits, - fragments: fragment_accumulator.to_intermediate_inline_fragments(self.style_context()), + fragments: fragment_accumulator.to_intermediate_inline_fragments::<ConcreteThreadSafeLayoutNode>( + self.style_context(), + ), }); ConstructionResult::ConstructionItem(construction_item) } else { @@ -902,9 +948,13 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> return ConstructionResult::ConstructionItem(ConstructionItem::Whitespace( node.opaque(), node.get_pseudo_element_type(), - context.stylist.style_for_anonymous( - &context.guards, &PseudoElement::ServoText, &style), - node.restyle_damage())) + context.stylist.style_for_anonymous::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + &context.guards, + &PseudoElement::ServoText, + &style, + ), + node.restyle_damage(), + )) } // If this is generated content, then we need to initialize the accumulator with the @@ -913,8 +963,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> let mut fragments = IntermediateInlineFragments::new(); match (node.get_pseudo_element_type(), node.type_id()) { (_, Some(LayoutNodeType::Text)) => { - let text_style = context.stylist.style_for_anonymous( - &context.guards, &PseudoElement::ServoText, &style); + let text_style = context.stylist.style_for_anonymous::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + &context.guards, + &PseudoElement::ServoText, + &style, + ); self.create_fragments_for_node_text_content(&mut fragments, node, &text_style) } (PseudoElementType::Normal, _) => { @@ -949,8 +1002,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> let context = self.style_context(); let style = node.style(context); - let style = context.stylist.style_for_anonymous( - &context.guards, &PseudoElement::ServoInlineBlockWrapper, &style); + let style = context.stylist.style_for_anonymous::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + &context.guards, + &PseudoElement::ServoInlineBlockWrapper, + &style, + ); let fragment_info = SpecificFragmentInfo::InlineBlock(InlineBlockFragmentInfo::new( block_flow)); let fragment = Fragment::from_opaque_node_and_style(node.opaque(), @@ -967,7 +1023,8 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> let construction_item = ConstructionItem::InlineFragments(InlineFragmentsConstructionResult { splits: LinkedList::new(), - fragments: fragment_accumulator.to_intermediate_inline_fragments(context), + fragments: fragment_accumulator + .to_intermediate_inline_fragments::<ConcreteThreadSafeLayoutNode>(context), }); ConstructionResult::ConstructionItem(construction_item) } @@ -987,8 +1044,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> InlineAbsoluteHypotheticalFragmentInfo::new(block_flow)); let style_context = self.style_context(); let style = node.style(style_context); - let style = style_context.stylist.style_for_anonymous( - &style_context.guards, &PseudoElement::ServoInlineAbsolute, &style); + let style = style_context.stylist.style_for_anonymous::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + &style_context.guards, + &PseudoElement::ServoInlineAbsolute, + &style, + ); let fragment = Fragment::from_opaque_node_and_style(node.opaque(), PseudoElementType::Normal, style, @@ -1003,7 +1063,8 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> let construction_item = ConstructionItem::InlineFragments(InlineFragmentsConstructionResult { splits: LinkedList::new(), - fragments: fragment_accumulator.to_intermediate_inline_fragments(style_context), + fragments: fragment_accumulator + .to_intermediate_inline_fragments::<ConcreteThreadSafeLayoutNode>(style_context), }); ConstructionResult::ConstructionItem(construction_item) } @@ -1097,8 +1158,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> { let context = self.style_context(); table_style = node.style(context); - wrapper_style = context.stylist.style_for_anonymous( - &context.guards, &PseudoElement::ServoTableWrapper, &table_style); + wrapper_style = context.stylist.style_for_anonymous::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + &context.guards, + &PseudoElement::ServoTableWrapper, + &table_style, + ); } let wrapper_fragment = Fragment::from_opaque_node_and_style(node.opaque(), @@ -1128,7 +1192,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> CaptionSide::Top); if let ConstructionResult::Flow(table_flow, table_abs_descendants) = construction_result { - legalizer.add_child(self.style_context(), &mut wrapper_flow, table_flow); + legalizer.add_child::<ConcreteThreadSafeLayoutNode::ConcreteElement>( + self.style_context(), + &mut wrapper_flow, + table_flow, + ); abs_descendants.push_descendants(table_abs_descendants); } @@ -1821,16 +1889,24 @@ fn bidi_control_chars(style: &ServoArc<ComputedValues>) -> Option<(&'static str, } } -fn control_chars_to_fragment(node: &InlineFragmentNodeInfo, - context: &SharedStyleContext, - text: &str, - restyle_damage: RestyleDamage) - -> Fragment { +fn control_chars_to_fragment<E>( + node: &InlineFragmentNodeInfo, + context: &SharedStyleContext, + text: &str, + restyle_damage: RestyleDamage, +) -> Fragment +where + E: TElement, +{ let info = SpecificFragmentInfo::UnscannedText( Box::new(UnscannedTextFragmentInfo::new(String::from(text), None)) ); - let text_style = context.stylist.style_for_anonymous( - &context.guards, &PseudoElement::ServoText, &node.style); + let text_style = context.stylist.style_for_anonymous::<E>( + &context.guards, + &PseudoElement::ServoText, + &node.style, + ); + Fragment::from_opaque_node_and_style(node.address, node.pseudo, text_style, @@ -1887,16 +1963,24 @@ impl Legalizer { /// Makes the `child` flow a new child of `parent`. Anonymous flows are automatically inserted /// to keep the tree legal. - fn add_child(&mut self, context: &SharedStyleContext, parent: &mut FlowRef, mut child: FlowRef) { + fn add_child<E>( + &mut self, + context: &SharedStyleContext, + parent: &mut FlowRef, + mut child: FlowRef, + ) + where + E: TElement, + { while !self.stack.is_empty() { - if self.try_to_add_child(context, parent, &mut child) { + if self.try_to_add_child::<E>(context, parent, &mut child) { return } self.flush_top_of_stack(parent) } - while !self.try_to_add_child(context, parent, &mut child) { - self.push_next_anonymous_flow(context, parent) + while !self.try_to_add_child::<E>(context, parent, &mut child) { + self.push_next_anonymous_flow::<E>(context, parent) } } @@ -1913,8 +1997,15 @@ impl Legalizer { /// This method attempts to create anonymous blocks in between `parent` and `child` if and only /// if those blocks will only ever have `child` as their sole child. At present, this is only /// true for anonymous block children of flex flows. - fn try_to_add_child(&mut self, context: &SharedStyleContext, parent: &mut FlowRef, child: &mut FlowRef) - -> bool { + fn try_to_add_child<E>( + &mut self, + context: &SharedStyleContext, + parent: &mut FlowRef, + child: &mut FlowRef, + ) -> bool + where + E: TElement, + { let parent = self.stack.last_mut().unwrap_or(parent); let (parent_class, child_class) = (parent.class(), child.class()); match (parent_class, child_class) { @@ -1944,12 +2035,14 @@ impl Legalizer { (FlowClass::Flex, FlowClass::Inline) => { FlowRef::deref_mut(child).mut_base().flags.insert(FlowFlags::MARGINS_CANNOT_COLLAPSE); - let mut block_wrapper = - Legalizer::create_anonymous_flow(context, - parent, - &[PseudoElement::ServoAnonymousBlock], - SpecificFragmentInfo::Generic, - BlockFlow::from_fragment); + let mut block_wrapper = Legalizer::create_anonymous_flow::<E, _>( + context, + parent, + &[PseudoElement::ServoAnonymousBlock], + SpecificFragmentInfo::Generic, + BlockFlow::from_fragment, + ); + { let flag = if parent.as_flex().main_mode() == Direction::Inline { FragmentFlags::IS_INLINE_FLEX_ITEM @@ -1997,54 +2090,76 @@ impl Legalizer { /// Adds the anonymous flow that would be necessary to make an illegal child of `parent` legal /// to the stack. - fn push_next_anonymous_flow(&mut self, context: &SharedStyleContext, parent: &FlowRef) { + fn push_next_anonymous_flow<E>( + &mut self, + context: &SharedStyleContext, + parent: &FlowRef, + ) + where + E: TElement, + { let parent_class = self.stack.last().unwrap_or(parent).class(); match parent_class { FlowClass::TableRow => { - self.push_new_anonymous_flow(context, - parent, - &[PseudoElement::ServoAnonymousTableCell], - SpecificFragmentInfo::TableCell, - TableCellFlow::from_fragment) + self.push_new_anonymous_flow::<E, _>( + context, + parent, + &[PseudoElement::ServoAnonymousTableCell], + SpecificFragmentInfo::TableCell, + TableCellFlow::from_fragment, + ) } FlowClass::Table | FlowClass::TableRowGroup => { - self.push_new_anonymous_flow(context, - parent, - &[PseudoElement::ServoAnonymousTableRow], - SpecificFragmentInfo::TableRow, - TableRowFlow::from_fragment) + self.push_new_anonymous_flow::<E, _>( + context, + parent, + &[PseudoElement::ServoAnonymousTableRow], + SpecificFragmentInfo::TableRow, + TableRowFlow::from_fragment, + ) } FlowClass::TableWrapper => { - self.push_new_anonymous_flow(context, - parent, - &[PseudoElement::ServoAnonymousTable], - SpecificFragmentInfo::Table, - TableFlow::from_fragment) + self.push_new_anonymous_flow::<E, _>( + context, + parent, + &[PseudoElement::ServoAnonymousTable], + SpecificFragmentInfo::Table, + TableFlow::from_fragment, + ) } _ => { - self.push_new_anonymous_flow(context, - parent, - &[PseudoElement::ServoTableWrapper, - PseudoElement::ServoAnonymousTableWrapper], - SpecificFragmentInfo::TableWrapper, - TableWrapperFlow::from_fragment) + self.push_new_anonymous_flow::<E, _>( + context, + parent, + &[PseudoElement::ServoTableWrapper, + PseudoElement::ServoAnonymousTableWrapper], + SpecificFragmentInfo::TableWrapper, + TableWrapperFlow::from_fragment, + ) } } } /// Creates an anonymous flow and pushes it onto the stack. - fn push_new_anonymous_flow<F>(&mut self, - context: &SharedStyleContext, - reference: &FlowRef, - pseudos: &[PseudoElement], - specific_fragment_info: SpecificFragmentInfo, - constructor: extern "Rust" fn(Fragment) -> F) - where F: Flow { - let new_flow = Legalizer::create_anonymous_flow(context, - reference, - pseudos, - specific_fragment_info, - constructor); + fn push_new_anonymous_flow<E, F>( + &mut self, + context: &SharedStyleContext, + reference: &FlowRef, + pseudos: &[PseudoElement], + specific_fragment_info: SpecificFragmentInfo, + constructor: extern "Rust" fn(Fragment) -> F, + ) + where + E: TElement, + F: Flow, + { + let new_flow = Self::create_anonymous_flow::<E, _>( + context, + reference, + pseudos, + specific_fragment_info, + constructor, + ); self.stack.push(new_flow) } @@ -2053,21 +2168,31 @@ impl Legalizer { /// /// This method invokes the supplied constructor function on the given specific fragment info /// in order to actually generate the flow. - fn create_anonymous_flow<F>(context: &SharedStyleContext, - reference: &FlowRef, - pseudos: &[PseudoElement], - specific_fragment_info: SpecificFragmentInfo, - constructor: extern "Rust" fn(Fragment) -> F) - -> FlowRef - where F: Flow { + fn create_anonymous_flow<E, F>( + context: &SharedStyleContext, + reference: &FlowRef, + pseudos: &[PseudoElement], + specific_fragment_info: SpecificFragmentInfo, + constructor: extern "Rust" fn(Fragment) -> F, + ) -> FlowRef + where + E: TElement, + F: Flow, + { let reference_block = reference.as_block(); let mut new_style = reference_block.fragment.style.clone(); for pseudo in pseudos { - new_style = context.stylist.style_for_anonymous(&context.guards, pseudo, &new_style) + new_style = context.stylist.style_for_anonymous::<E>( + &context.guards, + pseudo, + &new_style, + ); } - let fragment = reference_block.fragment - .create_similar_anonymous_fragment(new_style, - specific_fragment_info); + let fragment = + reference_block.fragment.create_similar_anonymous_fragment( + new_style, + specific_fragment_info, + ); FlowRef::new(Arc::new(constructor(fragment))) } } diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index 33daf270ccc..d66fe380734 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -55,7 +55,6 @@ use style::computed_values::background_attachment::single_value::T as Background use style::computed_values::background_clip::single_value::T as BackgroundClip; use style::computed_values::background_origin::single_value::T as BackgroundOrigin; use style::computed_values::border_style::T as BorderStyle; -use style::computed_values::cursor; use style::computed_values::overflow_x::T as StyleOverflow; use style::computed_values::pointer_events::T as PointerEvents; use style::computed_values::position::T as StylePosition; @@ -67,12 +66,13 @@ use style::servo::restyle_damage::ServoRestyleDamage; use style::values::{Either, RGBA}; use style::values::computed::{Gradient, NumberOrPercentage}; use style::values::computed::effects::SimpleShadow; +use style::values::computed::pointing::Cursor; use style::values::generics::background::BackgroundSize; use style::values::generics::effects::Filter; use style::values::generics::image::{GradientKind, Image, PaintWorklet}; use style_traits::CSSPixel; use style_traits::ToCss; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use table_cell::CollapsedBordersForCell; use webrender_api::{self, BoxShadowClipMode, ClipId, ClipMode, ColorF, ComplexClipRegion}; use webrender_api::{ImageRendering, LayoutSize, LayoutVector2D, LineStyle}; @@ -375,7 +375,7 @@ impl<'a> DisplayListBuildState<'a> { bounds: &Rect<Au>, clip: LocalClip, node: OpaqueNode, - cursor: Option<Cursor>, + cursor: Option<CursorKind>, section: DisplayListSection, ) -> BaseDisplayItem { let clipping_and_scrolling = if self.is_background_or_border_of_clip_scroll_node(section) { @@ -930,7 +930,7 @@ impl FragmentDisplayListBuilding for Fragment { &bounds, clip, self.node, - style.get_cursor(Cursor::Default), + style.get_cursor(CursorKind::Default), display_list_section, ); state.add_display_item(DisplayItem::SolidColor(Box::new(SolidColorDisplayItem { @@ -1121,7 +1121,7 @@ impl FragmentDisplayListBuilding for Fragment { &placement.bounds, LocalClip::Rect(placement.css_clip.to_layout()), self.node, - style.get_cursor(Cursor::Default), + style.get_cursor(CursorKind::Default), display_list_section, ); @@ -1213,7 +1213,7 @@ impl FragmentDisplayListBuilding for Fragment { &placement.bounds, LocalClip::Rect(placement.css_clip.to_layout()), self.node, - style.get_cursor(Cursor::Default), + style.get_cursor(CursorKind::Default), display_list_section, ); @@ -1274,7 +1274,7 @@ impl FragmentDisplayListBuilding for Fragment { &bounds, LocalClip::from(clip.to_layout()), self.node, - style.get_cursor(Cursor::Default), + style.get_cursor(CursorKind::Default), display_list_section, ); let border_radius = build_border_radius(absolute_bounds, style.get_border()); @@ -1370,7 +1370,7 @@ impl FragmentDisplayListBuilding for Fragment { &bounds, LocalClip::from(clip.to_layout()), self.node, - style.get_cursor(Cursor::Default), + style.get_cursor(CursorKind::Default), display_list_section, ); @@ -1544,7 +1544,7 @@ impl FragmentDisplayListBuilding for Fragment { &bounds, LocalClip::from(clip.to_layout()), self.node, - style.get_cursor(Cursor::Default), + style.get_cursor(CursorKind::Default), DisplayListSection::Outlines, ); state.add_display_item(DisplayItem::Border(Box::new(BorderDisplayItem { @@ -1571,7 +1571,7 @@ impl FragmentDisplayListBuilding for Fragment { stacking_relative_border_box, LocalClip::from(clip.to_layout()), self.node, - style.get_cursor(Cursor::Default), + style.get_cursor(CursorKind::Default), DisplayListSection::Content, ); state.add_display_item(DisplayItem::Border(Box::new(BorderDisplayItem { @@ -1597,7 +1597,7 @@ impl FragmentDisplayListBuilding for Fragment { &baseline, LocalClip::from(clip.to_layout()), self.node, - style.get_cursor(Cursor::Default), + style.get_cursor(CursorKind::Default), DisplayListSection::Content, ); state.add_display_item(DisplayItem::Line(Box::new(LineDisplayItem { @@ -1618,7 +1618,7 @@ impl FragmentDisplayListBuilding for Fragment { stacking_relative_border_box, LocalClip::from(clip.to_layout()), self.node, - self.style.get_cursor(Cursor::Default), + self.style.get_cursor(CursorKind::Default), DisplayListSection::Content, ); state.add_display_item(DisplayItem::Border(Box::new(BorderDisplayItem { @@ -1655,7 +1655,7 @@ impl FragmentDisplayListBuilding for Fragment { stacking_relative_border_box, LocalClip::from(clip.to_layout()), self.node, - self.style.get_cursor(Cursor::Default), + self.style.get_cursor(CursorKind::Default), display_list_section, ); state.add_display_item(DisplayItem::SolidColor(Box::new(SolidColorDisplayItem { @@ -1688,7 +1688,7 @@ impl FragmentDisplayListBuilding for Fragment { stacking_relative_border_box.size.height, ), ); - cursor = Cursor::Text; + cursor = CursorKind::Text; } else { insertion_point_bounds = Rect::new( Point2D::new( @@ -1700,7 +1700,7 @@ impl FragmentDisplayListBuilding for Fragment { INSERTION_POINT_LOGICAL_WIDTH, ), ); - cursor = Cursor::VerticalText; + cursor = CursorKind::VerticalText; }; let base = state.create_base_display_item( @@ -1963,7 +1963,7 @@ impl FragmentDisplayListBuilding for Fragment { &stacking_relative_content_box, build_local_clip(&self.style), self.node, - self.style.get_cursor(Cursor::Default), + self.style.get_cursor(CursorKind::Default), DisplayListSection::Content, ); let item = DisplayItem::Iframe(Box::new(IframeDisplayItem { @@ -1989,7 +1989,7 @@ impl FragmentDisplayListBuilding for Fragment { &stacking_relative_content_box, build_local_clip(&self.style), self.node, - self.style.get_cursor(Cursor::Default), + self.style.get_cursor(CursorKind::Default), DisplayListSection::Content, ); state.add_display_item(DisplayItem::Image(Box::new(ImageDisplayItem { @@ -2025,7 +2025,7 @@ impl FragmentDisplayListBuilding for Fragment { &stacking_relative_content_box, build_local_clip(&self.style), self.node, - self.style.get_cursor(Cursor::Default), + self.style.get_cursor(CursorKind::Default), DisplayListSection::Content, ); let display_item = DisplayItem::Image(Box::new(ImageDisplayItem { @@ -2128,9 +2128,9 @@ impl FragmentDisplayListBuilding for Fragment { let (orientation, cursor) = if self.style.writing_mode.is_vertical() { // TODO: Distinguish between 'sideways-lr' and 'sideways-rl' writing modes in CSS // Writing Modes Level 4. - (TextOrientation::SidewaysRight, Cursor::VerticalText) + (TextOrientation::SidewaysRight, CursorKind::VerticalText) } else { - (TextOrientation::Upright, Cursor::Text) + (TextOrientation::Upright, CursorKind::Text) }; // Compute location of the baseline. @@ -2256,7 +2256,7 @@ impl FragmentDisplayListBuilding for Fragment { &stacking_relative_box, LocalClip::from(clip.to_layout()), self.node, - self.style.get_cursor(Cursor::Default), + self.style.get_cursor(CursorKind::Default), DisplayListSection::Content, ); @@ -3158,7 +3158,7 @@ impl BaseFlowDisplayListBuilding for BaseFlow { } trait ComputedValuesCursorUtility { - fn get_cursor(&self, default_cursor: Cursor) -> Option<Cursor>; + fn get_cursor(&self, default_cursor: CursorKind) -> Option<CursorKind>; } impl ComputedValuesCursorUtility for ComputedValues { @@ -3166,14 +3166,14 @@ impl ComputedValuesCursorUtility for ComputedValues { /// the cursor to use if `cursor` is `auto`. Typically, this will be `PointerCursor`, but for /// text display items it may be `TextCursor` or `VerticalTextCursor`. #[inline] - fn get_cursor(&self, default_cursor: Cursor) -> Option<Cursor> { + fn get_cursor(&self, default_cursor: CursorKind) -> Option<CursorKind> { match ( self.get_pointing().pointer_events, self.get_pointing().cursor, ) { (PointerEvents::None, _) => None, - (PointerEvents::Auto, cursor::Keyword::Auto) => Some(default_cursor), - (PointerEvents::Auto, cursor::Keyword::Cursor(cursor)) => Some(cursor), + (PointerEvents::Auto, Cursor(CursorKind::Auto)) => Some(default_cursor), + (PointerEvents::Auto, Cursor(cursor)) => Some(cursor), } } } diff --git a/components/layout/flow.rs b/components/layout/flow.rs index b145aef0ad6..e42871dfa24 100644 --- a/components/layout/flow.rs +++ b/components/layout/flow.rs @@ -552,11 +552,13 @@ pub trait MutableOwnedFlowUtils { /// Sets the flow as the containing block for all absolute descendants that have been marked /// as having reached their containing block. This is needed in order to handle cases like: /// - /// <div> - /// <span style="position: relative"> - /// <span style="position: absolute; ..."></span> - /// </span> - /// </div> + /// ```html + /// <div> + /// <span style="position: relative"> + /// <span style="position: absolute; ..."></span> + /// </span> + /// </div> + /// ``` fn take_applicable_absolute_descendants(&mut self, absolute_descendants: &mut AbsoluteDescendants); } @@ -742,12 +744,14 @@ pub struct AbsoluteDescendantInfo { /// Whether the absolute descendant has reached its containing block. This exists so that we /// can handle cases like the following: /// - /// <div> - /// <span id=a style="position: absolute; ...">foo</span> - /// <span style="position: relative"> - /// <span id=b style="position: absolute; ...">bar</span> - /// </span> - /// </div> + /// ```html + /// <div> + /// <span id=a style="position: absolute; ...">foo</span> + /// <span style="position: relative"> + /// <span id=b style="position: absolute; ...">bar</span> + /// </span> + /// </div> + /// ``` /// /// When we go to create the `InlineFlow` for the outer `div`, our absolute descendants will /// be `a` and `b`. At this point, we need a way to distinguish between the two, because the @@ -1343,11 +1347,13 @@ impl MutableOwnedFlowUtils for FlowRef { /// Sets the flow as the containing block for all absolute descendants that have been marked /// as having reached their containing block. This is needed in order to handle cases like: /// - /// <div> - /// <span style="position: relative"> - /// <span style="position: absolute; ..."></span> - /// </span> - /// </div> + /// ```html + /// <div> + /// <span style="position: relative"> + /// <span style="position: absolute; ..."></span> + /// </span> + /// </div> + /// ``` fn take_applicable_absolute_descendants(&mut self, absolute_descendants: &mut AbsoluteDescendants) { let mut applicable_absolute_descendants = AbsoluteDescendants::new(); diff --git a/components/layout/inline.rs b/components/layout/inline.rs index 934e4aa1fc8..a934b95bafe 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -1143,7 +1143,11 @@ impl InlineFlow { let font_style = style.clone_font(); let font_metrics = text::font_metrics_for_style(font_context, font_style); let line_height = text::line_height_from_style(style, &font_metrics); - let inline_metrics = InlineMetrics::from_font_metrics(&font_metrics, line_height); + let inline_metrics = if fragments.iter().any(Fragment::is_text_or_replaced) { + InlineMetrics::from_font_metrics(&font_metrics, line_height) + } else { + InlineMetrics::new(Au(0), Au(0), Au(0)) + }; let mut line_metrics = LineMetrics::new(Au(0), MIN_AU); let mut largest_block_size_for_top_fragments = Au(0); diff --git a/components/layout/model.rs b/components/layout/model.rs index d5b85a7424e..5d5238ece77 100644 --- a/components/layout/model.rs +++ b/components/layout/model.rs @@ -548,7 +548,7 @@ impl SizeConstraint { max_size = max_size.map(|x| max(x, min_size)); if let Some(border) = border { - min_size = max((min_size - border), Au(0)); + min_size = max(min_size - border, Au(0)); max_size = max_size.map(|x| max(x - border, Au(0))); } diff --git a/components/layout/query.rs b/components/layout/query.rs index 36e4a9b04d3..eac23f563ac 100644 --- a/components/layout/query.rs +++ b/components/layout/query.rs @@ -868,7 +868,7 @@ pub fn process_node_overflow_request<N: LayoutNode>(requested_node: N) -> NodeOv let style = &*layout_node.as_element().unwrap().resolved_style(); let style_box = style.get_box(); - NodeOverflowResponse(Some((Point2D::new(style_box.overflow_x, style_box.overflow_y)))) + NodeOverflowResponse(Some(Point2D::new(style_box.overflow_x, style_box.overflow_y))) } pub fn process_margin_style_query<N: LayoutNode>(requested_node: N) diff --git a/tests/unit/layout/size_of.rs b/components/layout/tests/size_of.rs index 6b40be0fd86..54b5ef39830 100644 --- a/tests/unit/layout/size_of.rs +++ b/components/layout/tests/size_of.rs @@ -2,6 +2,11 @@ * 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/. */ +#![cfg(target_pointer_width = "64")] + +extern crate layout; +#[macro_use] extern crate size_of_test; + use layout::Fragment; use layout::SpecificFragmentInfo; diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 4eba8b88a4d..df93edb776d 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -67,7 +67,7 @@ pub trait GetRawData { impl<T: GetLayoutData> GetRawData for T { fn get_raw_data(&self) -> Option<&StyleAndLayoutData> { self.get_style_and_layout_data().map(|opaque| { - let container = opaque.ptr.get() as *mut StyleAndLayoutData; + let container = opaque.ptr.as_ptr() as *mut StyleAndLayoutData; unsafe { &*container } }) } diff --git a/components/layout_thread/Cargo.toml b/components/layout_thread/Cargo.toml index f4a2e5d9acb..661a7f849de 100644 --- a/components/layout_thread/Cargo.toml +++ b/components/layout_thread/Cargo.toml @@ -10,7 +10,7 @@ name = "layout_thread" path = "lib.rs" [features] -unstable = ["parking_lot/nightly", "nonzero/unstable"] +unstable = ["parking_lot/nightly"] [dependencies] app_units = "0.6" @@ -30,7 +30,6 @@ malloc_size_of = { path = "../malloc_size_of" } metrics = {path = "../metrics"} msg = {path = "../msg"} net_traits = {path = "../net_traits"} -nonzero = {path = "../nonzero"} parking_lot = "0.4" profile_traits = {path = "../profile_traits"} range = {path = "../range"} diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs index 14a2e5f3867..0110704edad 100644 --- a/components/layout_thread/dom_wrapper.rs +++ b/components/layout_thread/dom_wrapper.rs @@ -36,7 +36,6 @@ use html5ever::{LocalName, Namespace}; use layout::data::StyleAndLayoutData; use layout::wrapper::GetRawData; use msg::constellation_msg::{BrowsingContextId, PipelineId}; -use nonzero::NonZero; use range::Range; use script::layout_exports::{CharacterDataTypeId, ElementTypeId, HTMLElementTypeId, NodeTypeId}; use script::layout_exports::{Document, Element, Node, Text}; @@ -59,6 +58,7 @@ use std::fmt; use std::fmt::Debug; use std::hash::{Hash, Hasher}; use std::marker::PhantomData; +use std::ptr::NonNull; use std::sync::atomic::Ordering; use style::CaseSensitivityExt; use style::applicable_declarations::ApplicableDeclarationBlock; @@ -76,7 +76,7 @@ use style::shared_lock::{SharedRwLock as StyleSharedRwLock, Locked as StyleLocke use style::str::is_whitespace; pub unsafe fn drop_style_and_layout_data(data: OpaqueStyleAndLayoutData) { - let ptr = data.ptr.get() as *mut StyleData; + let ptr = data.ptr.as_ptr() as *mut StyleData; let non_opaque: *mut StyleAndLayoutData = ptr as *mut _; let _ = Box::from_raw(non_opaque); } @@ -229,7 +229,7 @@ impl<'ln> LayoutNode for ServoLayoutNode<'ln> { let ptr: *mut StyleAndLayoutData = Box::into_raw(Box::new(StyleAndLayoutData::new())); let opaque = OpaqueStyleAndLayoutData { - ptr: NonZero::new_unchecked(ptr as *mut StyleData), + ptr: NonNull::new_unchecked(ptr as *mut StyleData), }; self.init_style_and_layout_data(opaque); }; @@ -450,12 +450,12 @@ impl<'le> TElement for ServoLayoutElement<'le> { fn get_data(&self) -> Option<&AtomicRefCell<ElementData>> { unsafe { self.get_style_and_layout_data().map(|d| { - &(*(d.ptr.get() as *mut StyleData)).element_data + &(*(d.ptr.as_ptr() as *mut StyleData)).element_data }) } } - fn skip_root_and_item_based_display_fixup(&self) -> bool { + fn skip_item_display_fixup(&self) -> bool { false } @@ -575,7 +575,7 @@ impl<'le> ServoLayoutElement<'le> { fn get_style_data(&self) -> Option<&StyleData> { unsafe { - self.get_style_and_layout_data().map(|d| &*(d.ptr.get() as *mut StyleData)) + self.get_style_and_layout_data().map(|d| &*(d.ptr.as_ptr() as *mut StyleData)) } } @@ -713,7 +713,6 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> { &self, pseudo_class: &NonTSPseudoClass, _: &mut MatchingContext<Self::Impl>, - _: VisitedHandlingMode, _: &mut F, ) -> bool where @@ -861,6 +860,7 @@ impl<'ln> NodeInfo for ServoThreadSafeLayoutNode<'ln> { impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> { type ConcreteNode = ServoLayoutNode<'ln>; type ConcreteThreadSafeLayoutElement = ServoThreadSafeLayoutElement<'ln>; + type ConcreteElement = ServoLayoutElement<'ln>; type ChildrenIterator = ThreadSafeLayoutNodeChildrenIterator<Self>; fn opaque(&self) -> OpaqueNode { @@ -1085,6 +1085,7 @@ pub struct ServoThreadSafeLayoutElement<'le> { impl<'le> ThreadSafeLayoutElement for ServoThreadSafeLayoutElement<'le> { type ConcreteThreadSafeLayoutNode = ServoThreadSafeLayoutNode<'le>; + type ConcreteElement = ServoLayoutElement<'le>; fn as_node(&self) -> ServoThreadSafeLayoutNode<'le> { ServoThreadSafeLayoutNode { @@ -1221,7 +1222,6 @@ impl<'le> ::selectors::Element for ServoThreadSafeLayoutElement<'le> { &self, _: &NonTSPseudoClass, _: &mut MatchingContext<Self::Impl>, - _: VisitedHandlingMode, _: &mut F, ) -> bool where diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs index ca231ffc698..fcd790fe6ec 100644 --- a/components/layout_thread/lib.rs +++ b/components/layout_thread/lib.rs @@ -28,7 +28,6 @@ extern crate malloc_size_of; extern crate metrics; extern crate msg; extern crate net_traits; -extern crate nonzero; extern crate parking_lot; #[macro_use] extern crate profile_traits; @@ -705,12 +704,13 @@ impl LayoutThread { rw_data.scroll_offsets.insert(state.scroll_root_id, state.scroll_offset); let point = Point2D::new(-state.scroll_offset.x, -state.scroll_offset.y); - self.webrender_api.scroll_node_with_id( - self.webrender_document, + let mut txn = webrender_api::Transaction::new(); + txn.scroll_node_with_id( webrender_api::LayoutPoint::from_untyped(&point), state.scroll_root_id, webrender_api::ScrollClamping::ToContentBounds ); + self.webrender_api.send_transaction(self.webrender_document, txn); } Msg::ReapStyleAndLayoutData(dead_data) => { unsafe { @@ -1044,15 +1044,15 @@ impl LayoutThread { // Progressive Web Metrics. self.paint_time_metrics.maybe_observe_paint_time(self, epoch, &*display_list); - self.webrender_api.set_display_list( - self.webrender_document, + let mut txn = webrender_api::Transaction::new(); + txn.set_display_list( webrender_api::Epoch(epoch.0), Some(get_root_flow_background_color(layout_root)), viewport_size, builder.finalize(), - true, - webrender_api::ResourceUpdates::new()); - self.webrender_api.generate_frame(self.webrender_document, None); + true); + txn.generate_frame(); + self.webrender_api.send_transaction(self.webrender_document, txn); }); } @@ -1491,8 +1491,11 @@ impl LayoutThread { self.profiler_metadata(), self.time_profiler_chan.clone(), || { - animation::recalc_style_for_animations( - &layout_context, FlowRef::deref_mut(&mut root_flow), &animations) + animation::recalc_style_for_animations::<ServoLayoutElement>( + &layout_context, + FlowRef::deref_mut(&mut root_flow), + &animations, + ) }); } self.perform_post_style_recalc_layout_passes(&mut root_flow, @@ -1522,14 +1525,16 @@ impl LayoutThread { .as_mut() .map(|nodes| &mut **nodes); // Kick off animations if any were triggered, expire completed ones. - animation::update_animation_state(&self.constellation_chan, - &self.script_chan, - &mut *self.running_animations.write(), - &mut *self.expired_animations.write(), - newly_transitioning_nodes, - &self.new_animations_receiver, - self.id, - &self.timer); + animation::update_animation_state::<ServoLayoutElement>( + &self.constellation_chan, + &self.script_chan, + &mut *self.running_animations.write(), + &mut *self.expired_animations.write(), + newly_transitioning_nodes, + &self.new_animations_receiver, + self.id, + &self.timer, + ); } profile(time::ProfilerCategory::LayoutRestyleDamagePropagation, diff --git a/components/msg/Cargo.toml b/components/msg/Cargo.toml index a13fa591db6..2d275b7f027 100644 --- a/components/msg/Cargo.toml +++ b/components/msg/Cargo.toml @@ -8,6 +8,8 @@ publish = false [lib] name = "msg" path = "lib.rs" +test = false +doctest = false [features] unstable = ["nonzero/unstable"] @@ -19,3 +21,6 @@ malloc_size_of_derive = { path = "../malloc_size_of_derive" } nonzero = {path = "../nonzero"} serde = "1.0.14" webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} + +[dev-dependencies] +size_of_test = {path = "../size_of_test"} diff --git a/tests/unit/msg/size_of.rs b/components/msg/tests/size_of.rs index 124238f9457..54e5294c7d5 100644 --- a/tests/unit/msg/size_of.rs +++ b/components/msg/tests/size_of.rs @@ -2,6 +2,11 @@ * 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/. */ +#![cfg(target_pointer_width = "64")] + +extern crate msg; +#[macro_use] extern crate size_of_test; + use msg::constellation_msg::BrowsingContextId; use msg::constellation_msg::PipelineId; use msg::constellation_msg::TopLevelBrowsingContextId; diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml index 23998be349d..da9a2c7393a 100644 --- a/components/net/Cargo.toml +++ b/components/net/Cargo.toml @@ -8,6 +8,8 @@ publish = false [lib] name = "net" path = "lib.rs" +test = false +doctest = false [dependencies] base64 = "0.6" @@ -43,3 +45,7 @@ webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} [target.'cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))'.dependencies] tinyfiledialogs = "2.5.9" + +[[test]] +name = "main" +path = "tests/main.rs" diff --git a/components/net/fetch/methods.rs b/components/net/fetch/methods.rs index 729435020a3..69999d381cc 100644 --- a/components/net/fetch/methods.rs +++ b/components/net/fetch/methods.rs @@ -29,6 +29,7 @@ use std::io::Read; use std::mem; use std::str; use std::sync::{Arc, Mutex}; +use std::sync::atomic::Ordering; use std::sync::mpsc::{Sender, Receiver}; use subresource_integrity::is_response_integrity_valid; @@ -407,6 +408,12 @@ pub fn main_fetch(request: &mut Request, // Step 24. target.process_response_eof(&response); + if !response.is_network_error() { + if let Ok(mut http_cache) = context.state.http_cache.write() { + http_cache.update_awaiting_consumers(&request, &response); + } + } + // Steps 25-27. // TODO: remove this line when only asynchronous fetches are used response @@ -422,7 +429,7 @@ fn wait_for_response(response: &mut Response, target: Target, done_chan: &mut Do }, Data::Done => break, Data::Cancelled => { - response.aborted = true; + response.aborted.store(true, Ordering::Relaxed); break; } } diff --git a/components/net/http_cache.rs b/components/net/http_cache.rs index 6f0a71bd40e..219a627314c 100644 --- a/components/net/http_cache.rs +++ b/components/net/http_cache.rs @@ -7,7 +7,7 @@ //! A memory cache implementing the logic specified in http://tools.ietf.org/html/rfc7234 //! and <http://tools.ietf.org/html/rfc7232>. -use fetch::methods::DoneChannel; +use fetch::methods::{Data, DoneChannel}; use hyper::header; use hyper::header::ContentType; use hyper::header::Headers; @@ -22,6 +22,8 @@ use servo_url::ServoUrl; use std::collections::HashMap; use std::str; use std::sync::{Arc, Mutex}; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::mpsc::{channel, Sender}; use time; use time::{Duration, Tm}; @@ -63,7 +65,9 @@ struct CachedResource { raw_status: Option<(u16, Vec<u8>)>, url_list: Vec<ServoUrl>, expires: Duration, - last_validated: Tm + last_validated: Tm, + aborted: Arc<AtomicBool>, + awaiting_body: Arc<Mutex<Vec<Sender<Data>>>> } /// Metadata about a loaded resource, such as is obtained from HTTP headers. @@ -269,11 +273,19 @@ fn get_expiry_adjustment_from_request_headers(request: &Request, expires: Durati } /// Create a CachedResponse from a request and a CachedResource. -fn create_cached_response(request: &Request, cached_resource: &CachedResource, cached_headers: &Headers) +fn create_cached_response(request: &Request, + cached_resource: &CachedResource, + cached_headers: &Headers, + done_chan: &mut DoneChannel) -> CachedResponse { let mut response = Response::new(cached_resource.metadata.final_url.clone()); response.headers = cached_headers.clone(); response.body = cached_resource.body.clone(); + if let ResponseBody::Receiving(_) = *cached_resource.body.lock().unwrap() { + let (done_sender, done_receiver) = channel(); + *done_chan = Some((done_sender.clone(), done_receiver)); + cached_resource.awaiting_body.lock().unwrap().push(done_sender); + } response.location_url = cached_resource.location_url.clone(); response.status = cached_resource.status.clone(); response.raw_status = cached_resource.raw_status.clone(); @@ -281,6 +293,7 @@ fn create_cached_response(request: &Request, cached_resource: &CachedResource, c response.https_state = cached_resource.https_state.clone(); response.referrer = request.referrer.to_url().cloned(); response.referrer_policy = request.referrer_policy.clone(); + response.aborted = cached_resource.aborted.clone(); let expires = cached_resource.expires; let adjusted_expires = get_expiry_adjustment_from_request_headers(request, expires); let now = Duration::seconds(time::now().to_timespec().sec); @@ -308,12 +321,17 @@ fn create_resource_with_bytes_from_resource(bytes: &[u8], resource: &CachedResou raw_status: Some((206, b"Partial Content".to_vec())), url_list: resource.url_list.clone(), expires: resource.expires.clone(), - last_validated: resource.last_validated.clone() + last_validated: resource.last_validated.clone(), + aborted: Arc::new(AtomicBool::new(false)), + awaiting_body: Arc::new(Mutex::new(vec![])) } } /// Support for range requests <https://tools.ietf.org/html/rfc7233>. -fn handle_range_request(request: &Request, candidates: Vec<&CachedResource>, range_spec: &[header::ByteRangeSpec]) +fn handle_range_request(request: &Request, + candidates: Vec<&CachedResource>, + range_spec: &[header::ByteRangeSpec], + done_chan: &mut DoneChannel) -> Option<CachedResponse> { let mut complete_cached_resources = candidates.iter().filter(|resource| { match resource.raw_status { @@ -344,7 +362,7 @@ fn handle_range_request(request: &Request, candidates: Vec<&CachedResource>, ran if let Some(bytes) = requested { let new_resource = create_resource_with_bytes_from_resource(bytes, complete_resource); let cached_headers = new_resource.metadata.headers.lock().unwrap(); - let cached_response = create_cached_response(request, &new_resource, &*cached_headers); + let cached_response = create_cached_response(request, &new_resource, &*cached_headers, done_chan); return Some(cached_response); } } @@ -371,7 +389,7 @@ fn handle_range_request(request: &Request, candidates: Vec<&CachedResource>, ran }; if let Some(bytes) = requested { let new_resource = create_resource_with_bytes_from_resource(&bytes, partial_resource); - let cached_response = create_cached_response(request, &new_resource, &*headers); + let cached_response = create_cached_response(request, &new_resource, &*headers, done_chan); return Some(cached_response); } } @@ -384,7 +402,7 @@ fn handle_range_request(request: &Request, candidates: Vec<&CachedResource>, ran if let Some(bytes) = requested { let new_resource = create_resource_with_bytes_from_resource(bytes, complete_resource); let cached_headers = new_resource.metadata.headers.lock().unwrap(); - let cached_response = create_cached_response(request, &new_resource, &*cached_headers); + let cached_response = create_cached_response(request, &new_resource, &*cached_headers, done_chan); return Some(cached_response); } } @@ -411,7 +429,7 @@ fn handle_range_request(request: &Request, candidates: Vec<&CachedResource>, ran }; if let Some(bytes) = requested { let new_resource = create_resource_with_bytes_from_resource(&bytes, partial_resource); - let cached_response = create_cached_response(request, &new_resource, &*headers); + let cached_response = create_cached_response(request, &new_resource, &*headers, done_chan); return Some(cached_response); } } @@ -424,7 +442,7 @@ fn handle_range_request(request: &Request, candidates: Vec<&CachedResource>, ran if let Some(bytes) = requested { let new_resource = create_resource_with_bytes_from_resource(bytes, complete_resource); let cached_headers = new_resource.metadata.headers.lock().unwrap(); - let cached_response = create_cached_response(request, &new_resource, &*cached_headers); + let cached_response = create_cached_response(request, &new_resource, &*cached_headers, done_chan); return Some(cached_response); } } @@ -451,7 +469,7 @@ fn handle_range_request(request: &Request, candidates: Vec<&CachedResource>, ran }; if let Some(bytes) = requested { let new_resource = create_resource_with_bytes_from_resource(&bytes, partial_resource); - let cached_response = create_cached_response(request, &new_resource, &*headers); + let cached_response = create_cached_response(request, &new_resource, &*headers, done_chan); return Some(cached_response); } } @@ -472,16 +490,16 @@ impl HttpCache { /// Constructing Responses from Caches. /// <https://tools.ietf.org/html/rfc7234#section-4> - pub fn construct_response(&self, request: &Request) -> Option<CachedResponse> { + pub fn construct_response(&self, request: &Request, done_chan: &mut DoneChannel) -> Option<CachedResponse> { // TODO: generate warning headers as appropriate <https://tools.ietf.org/html/rfc7234#section-5.5> if request.method != Method::Get { // Only Get requests are cached, avoid a url based match for others. return None; } let entry_key = CacheKey::new(request.clone()); - let resources = self.entries.get(&entry_key)?.clone(); + let resources = self.entries.get(&entry_key)?.into_iter().filter(|r| { !r.aborted.load(Ordering::Relaxed) }); let mut candidates = vec![]; - for cached_resource in resources.iter() { + for cached_resource in resources { let mut can_be_constructed = true; let cached_headers = cached_resource.metadata.headers.lock().unwrap(); let original_request_headers = cached_resource.request_headers.lock().unwrap(); @@ -529,7 +547,7 @@ impl HttpCache { } // Support for range requests if let Some(&header::Range::Bytes(ref range_spec)) = request.headers.get::<header::Range>() { - return handle_range_request(request, candidates, &range_spec); + return handle_range_request(request, candidates, &range_spec, done_chan); } else { // Not a Range request. if let Some(ref cached_resource) = candidates.first() { @@ -537,13 +555,33 @@ impl HttpCache { // TODO: select the most appropriate one, using a known mechanism from a selecting header field, // or using the Date header to return the most recent one. let cached_headers = cached_resource.metadata.headers.lock().unwrap(); - let cached_response = create_cached_response(request, cached_resource, &*cached_headers); + let cached_response = create_cached_response(request, cached_resource, &*cached_headers, done_chan); return Some(cached_response); } } None } + /// Updating consumers who received a response constructed with a ResponseBody::Receiving. + pub fn update_awaiting_consumers(&mut self, request: &Request, response: &Response) { + if let ResponseBody::Done(ref completed_body) = *response.body.lock().unwrap() { + let entry_key = CacheKey::new(request.clone()); + if let Some(cached_resources) = self.entries.get(&entry_key) { + for cached_resource in cached_resources.iter() { + let mut awaiting_consumers = cached_resource.awaiting_body.lock().unwrap(); + for done_sender in awaiting_consumers.drain(..) { + if cached_resource.aborted.load(Ordering::Relaxed) { + let _ = done_sender.send(Data::Cancelled); + } else { + let _ = done_sender.send(Data::Payload(completed_body.clone())); + let _ = done_sender.send(Data::Done); + } + }; + } + } + } + } + /// Freshening Stored Responses upon Validation. /// <https://tools.ietf.org/html/rfc7234#section-4.3.4> pub fn refresh(&mut self, request: &Request, response: Response, done_chan: &mut DoneChannel) -> Option<Response> { @@ -642,7 +680,9 @@ impl HttpCache { raw_status: response.raw_status.clone(), url_list: response.url_list.clone(), expires: expiry, - last_validated: time::now() + last_validated: time::now(), + aborted: response.aborted.clone(), + awaiting_body: Arc::new(Mutex::new(vec![])) }; let entry = self.entries.entry(entry_key).or_insert(vec![]); entry.push(entry_resource); diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index e4bd2a7f37f..74cf5e4a30f 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -872,7 +872,7 @@ fn http_network_or_cache_fetch(request: &mut Request, // Step 21 if let Ok(http_cache) = context.state.http_cache.read() { - if let Some(response_from_cache) = http_cache.construct_response(&http_request) { + if let Some(response_from_cache) = http_cache.construct_response(&http_request, done_chan) { let response_headers = response_from_cache.response.headers.clone(); // Substep 1, 2, 3, 4 let (cached_response, needs_revalidation) = match (http_request.cache_mode, &http_request.mode) { @@ -903,6 +903,27 @@ fn http_network_or_cache_fetch(request: &mut Request, } } + if let Some(ref ch) = *done_chan { + // The cache constructed a response with a body of ResponseBody::Receiving. + // We wait for the response in the cache to "finish", + // with a body of either Done or Cancelled. + loop { + match ch.1.recv() + .expect("HTTP cache should always send Done or Cancelled") { + Data::Payload(_) => {}, + Data::Done => break, // Return the full response as if it was initially cached as such. + Data::Cancelled => { + // The response was cancelled while the fetch was ongoing. + // Set response to None, which will trigger a network fetch below. + response = None; + break; + } + } + } + } + // Set done_chan back to None, it's cache-related usefulness ends here. + *done_chan = None; + // Step 22 if response.is_none() { // Substep 1 diff --git a/tests/unit/net/chrome_loader.rs b/components/net/tests/chrome_loader.rs index c7669d9a0ac..c7669d9a0ac 100644 --- a/tests/unit/net/chrome_loader.rs +++ b/components/net/tests/chrome_loader.rs diff --git a/tests/unit/net/cookie.rs b/components/net/tests/cookie.rs index 0508f5ae4ec..0508f5ae4ec 100644 --- a/tests/unit/net/cookie.rs +++ b/components/net/tests/cookie.rs diff --git a/tests/unit/net/cookie_http_state.rs b/components/net/tests/cookie_http_state.rs index 30cec8b26b2..30cec8b26b2 100644 --- a/tests/unit/net/cookie_http_state.rs +++ b/components/net/tests/cookie_http_state.rs diff --git a/tests/unit/net/cookie_http_state_utils.py b/components/net/tests/cookie_http_state_utils.py index b8820c312da..b8820c312da 100644 --- a/tests/unit/net/cookie_http_state_utils.py +++ b/components/net/tests/cookie_http_state_utils.py diff --git a/tests/unit/net/data_loader.rs b/components/net/tests/data_loader.rs index 4ad73dee080..4ad73dee080 100644 --- a/tests/unit/net/data_loader.rs +++ b/components/net/tests/data_loader.rs diff --git a/tests/unit/net/fetch.rs b/components/net/tests/fetch.rs index 02ae6d0e6e5..02ae6d0e6e5 100644 --- a/tests/unit/net/fetch.rs +++ b/components/net/tests/fetch.rs diff --git a/tests/unit/net/file_loader.rs b/components/net/tests/file_loader.rs index 31d20812222..f7a45691e57 100644 --- a/tests/unit/net/file_loader.rs +++ b/components/net/tests/file_loader.rs @@ -8,7 +8,7 @@ use url::Url; #[test] fn load_htm() { let mut path = env::current_dir().expect("didn't get working dir"); - path.push("test.jpeg"); + path.push("tests/test.jpeg"); let canon_path = path.canonicalize().expect("file path doesn't exist"); let url = Url::from_file_path(canon_path); diff --git a/tests/unit/net/filemanager_thread.rs b/components/net/tests/filemanager_thread.rs index 1ca283f7145..089e56c43fb 100644 --- a/tests/unit/net/filemanager_thread.rs +++ b/components/net/tests/filemanager_thread.rs @@ -16,11 +16,11 @@ pub struct TestProvider; impl UIProvider for TestProvider { fn open_file_dialog(&self, _path: &str, _patterns: Vec<FilterPattern>) -> Option<String> { - Some("test.jpeg".to_string()) + Some("tests/test.jpeg".to_string()) } fn open_file_dialog_multi(&self, _path: &str, _patterns: Vec<FilterPattern>) -> Option<Vec<String>> { - Some(vec!["test.jpeg".to_string()]) + Some(vec!["tests/test.jpeg".to_string()]) } } @@ -28,18 +28,18 @@ impl UIProvider for TestProvider { fn test_filemanager() { let filemanager = FileManager::new(); - // Try to open a dummy file "tests/unit/net/test.jpeg" in tree - let mut handler = File::open("test.jpeg").expect("test.jpeg is stolen"); + // Try to open a dummy file "components/net/tests/test.jpeg" in tree + let mut handler = File::open("tests/test.jpeg").expect("test.jpeg is stolen"); let mut test_file_content = vec![]; handler.read_to_end(&mut test_file_content) - .expect("Read tests/unit/net/test.jpeg error"); + .expect("Read components/net/tests/test.jpeg error"); let patterns = vec![FilterPattern(".txt".to_string())]; let origin = "test.com".to_string(); { - // Try to select a dummy file "tests/unit/net/test.jpeg" + // Try to select a dummy file "components/net/tests/test.jpeg" let (tx, rx) = ipc::channel().unwrap(); filemanager.handle(FileManagerThreadMsg::SelectFile(patterns.clone(), tx, origin.clone(), None), TEST_PROVIDER); diff --git a/tests/unit/net/hsts.rs b/components/net/tests/hsts.rs index eca9d2a8d27..eca9d2a8d27 100644 --- a/tests/unit/net/hsts.rs +++ b/components/net/tests/hsts.rs diff --git a/tests/unit/net/http_loader.rs b/components/net/tests/http_loader.rs index bff34263a52..bff34263a52 100644 --- a/tests/unit/net/http_loader.rs +++ b/components/net/tests/http_loader.rs diff --git a/tests/unit/net/lib.rs b/components/net/tests/main.rs index 773b7f387f8..773b7f387f8 100644 --- a/tests/unit/net/lib.rs +++ b/components/net/tests/main.rs diff --git a/tests/unit/net/mime_classifier.rs b/components/net/tests/mime_classifier.rs index e8622b94b84..1a4757ded5f 100644 --- a/tests/unit/net/mime_classifier.rs +++ b/components/net/tests/mime_classifier.rs @@ -23,7 +23,7 @@ fn read_file(path: &path::Path) -> io::Result<Vec<u8>> { fn test_sniff_mp4_matcher() { let matcher = Mp4Matcher; - let p = PathBuf::from("parsable_mime/video/mp4/test.mp4"); + let p = PathBuf::from("tests/parsable_mime/video/mp4/test.mp4"); let read_result = read_file(&p); match read_result { @@ -66,7 +66,7 @@ fn test_sniff_with_flags(filename_orig: &path::Path, let current_working_directory = env::current_dir().unwrap(); println!("The current directory is {}", current_working_directory.display()); - let mut filename = PathBuf::from("parsable_mime/"); + let mut filename = PathBuf::from("tests/parsable_mime/"); filename.push(filename_orig); let classifier = MimeClassifier::new(); diff --git a/tests/unit/net/parsable_mime/application/font-woff/test.wof b/components/net/tests/parsable_mime/application/font-woff/test.wof index a1393ebee1d..a1393ebee1d 100755 --- a/tests/unit/net/parsable_mime/application/font-woff/test.wof +++ b/components/net/tests/parsable_mime/application/font-woff/test.wof diff --git a/tests/unit/net/parsable_mime/application/ogg/small.ogg b/components/net/tests/parsable_mime/application/ogg/small.ogg Binary files differindex 0d7f43eb795..0d7f43eb795 100644 --- a/tests/unit/net/parsable_mime/application/ogg/small.ogg +++ b/components/net/tests/parsable_mime/application/ogg/small.ogg diff --git a/tests/unit/net/parsable_mime/application/pdf/test.pdf b/components/net/tests/parsable_mime/application/pdf/test.pdf index e7c6e62775f..e7c6e62775f 100644 --- a/tests/unit/net/parsable_mime/application/pdf/test.pdf +++ b/components/net/tests/parsable_mime/application/pdf/test.pdf diff --git a/tests/unit/net/parsable_mime/application/postscript/test.ps b/components/net/tests/parsable_mime/application/postscript/test.ps index c273ffa3f0f..c273ffa3f0f 100755 --- a/tests/unit/net/parsable_mime/application/postscript/test.ps +++ b/components/net/tests/parsable_mime/application/postscript/test.ps diff --git a/tests/unit/net/parsable_mime/application/vnd.ms-fontobject/vnd.ms-fontobject b/components/net/tests/parsable_mime/application/vnd.ms-fontobject/vnd.ms-fontobject Binary files differindex 1b84f4c37c1..1b84f4c37c1 100755 --- a/tests/unit/net/parsable_mime/application/vnd.ms-fontobject/vnd.ms-fontobject +++ b/components/net/tests/parsable_mime/application/vnd.ms-fontobject/vnd.ms-fontobject diff --git a/tests/unit/net/parsable_mime/application/x-gzip/test.gz b/components/net/tests/parsable_mime/application/x-gzip/test.gz Binary files differindex 3b99b73e6f0..3b99b73e6f0 100644 --- a/tests/unit/net/parsable_mime/application/x-gzip/test.gz +++ b/components/net/tests/parsable_mime/application/x-gzip/test.gz diff --git a/tests/unit/net/parsable_mime/application/x-rar-compressed/test.rar b/components/net/tests/parsable_mime/application/x-rar-compressed/test.rar Binary files differindex 920bd4d8a8c..920bd4d8a8c 100755 --- a/tests/unit/net/parsable_mime/application/x-rar-compressed/test.rar +++ b/components/net/tests/parsable_mime/application/x-rar-compressed/test.rar diff --git a/tests/unit/net/parsable_mime/application/zip/test.zip b/components/net/tests/parsable_mime/application/zip/test.zip index 5c74c9658c6..5c74c9658c6 100755 --- a/tests/unit/net/parsable_mime/application/zip/test.zip +++ b/components/net/tests/parsable_mime/application/zip/test.zip diff --git a/tests/unit/net/parsable_mime/audio/aiff/test.aif b/components/net/tests/parsable_mime/audio/aiff/test.aif Binary files differindex ad2e35df40b..ad2e35df40b 100644 --- a/tests/unit/net/parsable_mime/audio/aiff/test.aif +++ b/components/net/tests/parsable_mime/audio/aiff/test.aif diff --git a/tests/unit/net/parsable_mime/audio/basic/test.au b/components/net/tests/parsable_mime/audio/basic/test.au Binary files differindex d4e53deb74a..d4e53deb74a 100644 --- a/tests/unit/net/parsable_mime/audio/basic/test.au +++ b/components/net/tests/parsable_mime/audio/basic/test.au diff --git a/tests/unit/net/parsable_mime/audio/midi/test.mid b/components/net/tests/parsable_mime/audio/midi/test.mid Binary files differindex a52838c62bc..a52838c62bc 100644 --- a/tests/unit/net/parsable_mime/audio/midi/test.mid +++ b/components/net/tests/parsable_mime/audio/midi/test.mid diff --git a/tests/unit/net/parsable_mime/audio/mpeg/test.mp3 b/components/net/tests/parsable_mime/audio/mpeg/test.mp3 Binary files differindex 50786790311..50786790311 100644 --- a/tests/unit/net/parsable_mime/audio/mpeg/test.mp3 +++ b/components/net/tests/parsable_mime/audio/mpeg/test.mp3 diff --git a/tests/unit/net/parsable_mime/audio/wave/test.wav b/components/net/tests/parsable_mime/audio/wave/test.wav Binary files differindex f96276c063c..f96276c063c 100644 --- a/tests/unit/net/parsable_mime/audio/wave/test.wav +++ b/components/net/tests/parsable_mime/audio/wave/test.wav diff --git a/tests/unit/net/parsable_mime/image/bmp/test.bmp b/components/net/tests/parsable_mime/image/bmp/test.bmp Binary files differindex 8a1b10bae5e..8a1b10bae5e 100644 --- a/tests/unit/net/parsable_mime/image/bmp/test.bmp +++ b/components/net/tests/parsable_mime/image/bmp/test.bmp diff --git a/tests/unit/net/parsable_mime/image/gif/test87a b/components/net/tests/parsable_mime/image/gif/test87a Binary files differindex 8d49c776420..8d49c776420 100644 --- a/tests/unit/net/parsable_mime/image/gif/test87a +++ b/components/net/tests/parsable_mime/image/gif/test87a diff --git a/tests/unit/net/parsable_mime/image/gif/test89a.gif b/components/net/tests/parsable_mime/image/gif/test89a.gif Binary files differindex 0e2995e0821..0e2995e0821 100644 --- a/tests/unit/net/parsable_mime/image/gif/test89a.gif +++ b/components/net/tests/parsable_mime/image/gif/test89a.gif diff --git a/tests/unit/net/parsable_mime/image/jpeg/test.jpg b/components/net/tests/parsable_mime/image/jpeg/test.jpg Binary files differindex 7f758f65d13..7f758f65d13 100644 --- a/tests/unit/net/parsable_mime/image/jpeg/test.jpg +++ b/components/net/tests/parsable_mime/image/jpeg/test.jpg diff --git a/tests/unit/net/parsable_mime/image/png/test.png b/components/net/tests/parsable_mime/image/png/test.png Binary files differindex cc81374d4f5..cc81374d4f5 100644 --- a/tests/unit/net/parsable_mime/image/png/test.png +++ b/components/net/tests/parsable_mime/image/png/test.png diff --git a/tests/unit/net/parsable_mime/image/webp/test.webp b/components/net/tests/parsable_mime/image/webp/test.webp Binary files differindex ad88e62f94c..ad88e62f94c 100755 --- a/tests/unit/net/parsable_mime/image/webp/test.webp +++ b/components/net/tests/parsable_mime/image/webp/test.webp diff --git a/tests/unit/net/parsable_mime/image/x-icon/test.ico b/components/net/tests/parsable_mime/image/x-icon/test.ico Binary files differindex a2d0ee49098..a2d0ee49098 100644 --- a/tests/unit/net/parsable_mime/image/x-icon/test.ico +++ b/components/net/tests/parsable_mime/image/x-icon/test.ico diff --git a/tests/unit/net/parsable_mime/image/x-icon/test_cursor.ico b/components/net/tests/parsable_mime/image/x-icon/test_cursor.ico Binary files differindex 6029d6684d5..6029d6684d5 100644 --- a/tests/unit/net/parsable_mime/image/x-icon/test_cursor.ico +++ b/components/net/tests/parsable_mime/image/x-icon/test_cursor.ico diff --git a/tests/unit/net/parsable_mime/text/html/text_html_a_20.html b/components/net/tests/parsable_mime/text/html/text_html_a_20.html index 1b9619279a7..1b9619279a7 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_a_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_a_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_a_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_a_20_u.html index 887a1280650..887a1280650 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_a_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_a_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_a_3e.html b/components/net/tests/parsable_mime/text/html/text_html_a_3e.html index 610cd08fea4..610cd08fea4 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_a_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_a_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_a_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_a_3e_u.html index 48528fdf341..48528fdf341 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_a_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_a_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_b_20.html b/components/net/tests/parsable_mime/text/html/text_html_b_20.html index 5977d2eeaab..5977d2eeaab 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_b_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_b_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_b_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_b_20_u.html index a8a963b95f0..a8a963b95f0 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_b_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_b_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_b_3e.html b/components/net/tests/parsable_mime/text/html/text_html_b_3e.html index dc79cd5d568..dc79cd5d568 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_b_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_b_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_b_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_b_3e_u.html index 0d72d281aec..0d72d281aec 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_b_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_b_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_body_20.html b/components/net/tests/parsable_mime/text/html/text_html_body_20.html index c72b1ad3bec..c72b1ad3bec 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_body_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_body_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_body_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_body_20_u.html index 1d76ebb0f47..1d76ebb0f47 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_body_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_body_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_body_3e.html b/components/net/tests/parsable_mime/text/html/text_html_body_3e.html index 4a66f59ef95..4a66f59ef95 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_body_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_body_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_body_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_body_3e_u.html index b431695f3ab..b431695f3ab 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_body_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_body_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_br_20.html b/components/net/tests/parsable_mime/text/html/text_html_br_20.html index d04df680012..d04df680012 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_br_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_br_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_br_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_br_20_u.html index 1c0f0ce13ba..1c0f0ce13ba 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_br_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_br_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_br_3e.html b/components/net/tests/parsable_mime/text/html/text_html_br_3e.html index 1d40ef06566..1d40ef06566 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_br_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_br_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_br_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_br_3e_u.html index c4eae116f03..c4eae116f03 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_br_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_br_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_comment_20.html b/components/net/tests/parsable_mime/text/html/text_html_comment_20.html index e9612efc73c..e9612efc73c 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_comment_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_comment_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_comment_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_comment_20_u.html index e9612efc73c..e9612efc73c 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_comment_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_comment_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_comment_3e.html b/components/net/tests/parsable_mime/text/html/text_html_comment_3e.html index 44a94ca5a7a..44a94ca5a7a 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_comment_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_comment_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_comment_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_comment_3e_u.html index 44a94ca5a7a..44a94ca5a7a 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_comment_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_comment_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_div_20.html b/components/net/tests/parsable_mime/text/html/text_html_div_20.html index 2ed34363b2f..2ed34363b2f 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_div_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_div_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_div_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_div_20_u.html index b98886efd83..b98886efd83 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_div_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_div_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_div_3e.html b/components/net/tests/parsable_mime/text/html/text_html_div_3e.html index ccf4ca8d70a..ccf4ca8d70a 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_div_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_div_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_div_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_div_3e_u.html index c117f0f4cdd..c117f0f4cdd 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_div_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_div_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_doctype_20.html b/components/net/tests/parsable_mime/text/html/text_html_doctype_20.html index dbeb5a41c2a..dbeb5a41c2a 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_doctype_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_doctype_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_doctype_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_doctype_20_u.html index acede44dffb..acede44dffb 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_doctype_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_doctype_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_doctype_3e.html b/components/net/tests/parsable_mime/text/html/text_html_doctype_3e.html index 6a22ea8b978..6a22ea8b978 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_doctype_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_doctype_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_doctype_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_doctype_3e_u.html index 8b16e40458e..8b16e40458e 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_doctype_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_doctype_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_font_20.html b/components/net/tests/parsable_mime/text/html/text_html_font_20.html index a18fa850617..a18fa850617 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_font_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_font_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_font_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_font_20_u.html index 6a31d2a8aba..6a31d2a8aba 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_font_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_font_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_font_3e.html b/components/net/tests/parsable_mime/text/html/text_html_font_3e.html index 3605840fc5a..3605840fc5a 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_font_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_font_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_font_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_font_3e_u.html index 1181517947b..1181517947b 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_font_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_font_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_h1_20.html b/components/net/tests/parsable_mime/text/html/text_html_h1_20.html index 3ed0eb125ff..3ed0eb125ff 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_h1_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_h1_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_h1_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_h1_20_u.html index f517b61487e..f517b61487e 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_h1_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_h1_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_h1_3e.html b/components/net/tests/parsable_mime/text/html/text_html_h1_3e.html index af0bf8c56b9..af0bf8c56b9 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_h1_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_h1_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_h1_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_h1_3e_u.html index bae85229fcf..bae85229fcf 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_h1_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_h1_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_head_20.html b/components/net/tests/parsable_mime/text/html/text_html_head_20.html index eb322c946e0..eb322c946e0 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_head_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_head_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_head_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_head_20_u.html index 899655a5a2c..899655a5a2c 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_head_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_head_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_head_3e.html b/components/net/tests/parsable_mime/text/html/text_html_head_3e.html index 058c7dce4a9..058c7dce4a9 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_head_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_head_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_head_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_head_3e_u.html index 8a33d623daa..8a33d623daa 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_head_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_head_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_iframe_20.html b/components/net/tests/parsable_mime/text/html/text_html_iframe_20.html index e632915590a..e632915590a 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_iframe_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_iframe_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_iframe_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_iframe_20_u.html index 527a06e415c..527a06e415c 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_iframe_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_iframe_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_iframe_3e.html b/components/net/tests/parsable_mime/text/html/text_html_iframe_3e.html index 9db0efd47d4..9db0efd47d4 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_iframe_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_iframe_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_iframe_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_iframe_3e_u.html index e3512c8a5c2..e3512c8a5c2 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_iframe_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_iframe_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_p_20.html b/components/net/tests/parsable_mime/text/html/text_html_p_20.html index a099441be2b..a099441be2b 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_p_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_p_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_p_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_p_20_u.html index ff4befbde7b..ff4befbde7b 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_p_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_p_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_p_3e.html b/components/net/tests/parsable_mime/text/html/text_html_p_3e.html index 98db18913d0..98db18913d0 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_p_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_p_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_p_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_p_3e_u.html index 9d99a59ed08..9d99a59ed08 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_p_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_p_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_page_20.html b/components/net/tests/parsable_mime/text/html/text_html_page_20.html index bb1c4572b25..bb1c4572b25 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_page_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_page_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_page_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_page_20_u.html index b3300d9f4e4..b3300d9f4e4 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_page_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_page_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_page_3e.html b/components/net/tests/parsable_mime/text/html/text_html_page_3e.html index e6a49c51924..e6a49c51924 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_page_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_page_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_page_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_page_3e_u.html index 2b8ee203d25..2b8ee203d25 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_page_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_page_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_script_20.html b/components/net/tests/parsable_mime/text/html/text_html_script_20.html index 620c629266c..620c629266c 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_script_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_script_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_script_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_script_20_u.html index bd2c58e676c..bd2c58e676c 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_script_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_script_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_script_3e.html b/components/net/tests/parsable_mime/text/html/text_html_script_3e.html index d59535f70cd..d59535f70cd 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_script_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_script_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_script_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_script_3e_u.html index 625c13820f4..625c13820f4 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_script_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_script_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_style_20.html b/components/net/tests/parsable_mime/text/html/text_html_style_20.html index 57bc2a1ecd7..57bc2a1ecd7 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_style_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_style_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_style_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_style_20_u.html index 8163eca3c60..8163eca3c60 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_style_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_style_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_style_3e.html b/components/net/tests/parsable_mime/text/html/text_html_style_3e.html index 229d5f951bd..229d5f951bd 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_style_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_style_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_style_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_style_3e_u.html index 12d686e4953..12d686e4953 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_style_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_style_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_table_20.html b/components/net/tests/parsable_mime/text/html/text_html_table_20.html index 27cccc6acd6..27cccc6acd6 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_table_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_table_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_table_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_table_20_u.html index 556b46e7fc4..556b46e7fc4 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_table_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_table_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_table_3e.html b/components/net/tests/parsable_mime/text/html/text_html_table_3e.html index 351ee543af8..351ee543af8 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_table_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_table_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_table_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_table_3e_u.html index 6259870bfcf..6259870bfcf 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_table_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_table_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_title_20.html b/components/net/tests/parsable_mime/text/html/text_html_title_20.html index f7d151658d9..f7d151658d9 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_title_20.html +++ b/components/net/tests/parsable_mime/text/html/text_html_title_20.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_title_20_u.html b/components/net/tests/parsable_mime/text/html/text_html_title_20_u.html index 03a072d8ac0..03a072d8ac0 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_title_20_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_title_20_u.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_title_3e.html b/components/net/tests/parsable_mime/text/html/text_html_title_3e.html index fedf57b9e4f..fedf57b9e4f 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_title_3e.html +++ b/components/net/tests/parsable_mime/text/html/text_html_title_3e.html diff --git a/tests/unit/net/parsable_mime/text/html/text_html_title_3e_u.html b/components/net/tests/parsable_mime/text/html/text_html_title_3e_u.html index 5fbf8a75c47..5fbf8a75c47 100644 --- a/tests/unit/net/parsable_mime/text/html/text_html_title_3e_u.html +++ b/components/net/tests/parsable_mime/text/html/text_html_title_3e_u.html diff --git a/tests/unit/net/parsable_mime/text/plain/utf16bebom.txt b/components/net/tests/parsable_mime/text/plain/utf16bebom.txt Binary files differindex 9fb50d49fb8..9fb50d49fb8 100644 --- a/tests/unit/net/parsable_mime/text/plain/utf16bebom.txt +++ b/components/net/tests/parsable_mime/text/plain/utf16bebom.txt diff --git a/tests/unit/net/parsable_mime/text/plain/utf16lebom.txt b/components/net/tests/parsable_mime/text/plain/utf16lebom.txt Binary files differindex d79d81725ec..d79d81725ec 100644 --- a/tests/unit/net/parsable_mime/text/plain/utf16lebom.txt +++ b/components/net/tests/parsable_mime/text/plain/utf16lebom.txt diff --git a/tests/unit/net/parsable_mime/text/plain/utf8bom.txt b/components/net/tests/parsable_mime/text/plain/utf8bom.txt index 56ad8a265ef..56ad8a265ef 100644 --- a/tests/unit/net/parsable_mime/text/plain/utf8bom.txt +++ b/components/net/tests/parsable_mime/text/plain/utf8bom.txt diff --git a/tests/unit/net/parsable_mime/text/xml/feed.atom b/components/net/tests/parsable_mime/text/xml/feed.atom index 893c3f27a8e..893c3f27a8e 100755 --- a/tests/unit/net/parsable_mime/text/xml/feed.atom +++ b/components/net/tests/parsable_mime/text/xml/feed.atom diff --git a/tests/unit/net/parsable_mime/text/xml/feed.rss b/components/net/tests/parsable_mime/text/xml/feed.rss index 9dc94d32b51..9dc94d32b51 100644 --- a/tests/unit/net/parsable_mime/text/xml/feed.rss +++ b/components/net/tests/parsable_mime/text/xml/feed.rss diff --git a/tests/unit/net/parsable_mime/text/xml/rdf_rss.xml b/components/net/tests/parsable_mime/text/xml/rdf_rss.xml index 4c58f82974e..4c58f82974e 100644 --- a/tests/unit/net/parsable_mime/text/xml/rdf_rss.xml +++ b/components/net/tests/parsable_mime/text/xml/rdf_rss.xml diff --git a/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_1.xml b/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_1.xml index f6e486c5960..f6e486c5960 100644 --- a/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_1.xml +++ b/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_1.xml diff --git a/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_2.xml b/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_2.xml index be8414382e5..be8414382e5 100644 --- a/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_2.xml +++ b/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_2.xml diff --git a/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_3.xml b/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_3.xml index 5f0f03f1e2d..5f0f03f1e2d 100644 --- a/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_3.xml +++ b/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_3.xml diff --git a/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_4.xml b/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_4.xml index c06a80cf1f8..c06a80cf1f8 100644 --- a/tests/unit/net/parsable_mime/text/xml/rdf_rss_ko_4.xml +++ b/components/net/tests/parsable_mime/text/xml/rdf_rss_ko_4.xml diff --git a/tests/unit/net/parsable_mime/text/xml/test.xml b/components/net/tests/parsable_mime/text/xml/test.xml index 8fe8c0e91cf..8fe8c0e91cf 100644 --- a/tests/unit/net/parsable_mime/text/xml/test.xml +++ b/components/net/tests/parsable_mime/text/xml/test.xml diff --git a/tests/unit/net/parsable_mime/unknown/binary_file b/components/net/tests/parsable_mime/unknown/binary_file Binary files differindex ecf3bbcdf3e..ecf3bbcdf3e 100644 --- a/tests/unit/net/parsable_mime/unknown/binary_file +++ b/components/net/tests/parsable_mime/unknown/binary_file diff --git a/tests/unit/net/parsable_mime/unknown/open_type b/components/net/tests/parsable_mime/unknown/open_type index 9117b12600f..9117b12600f 100644 --- a/tests/unit/net/parsable_mime/unknown/open_type +++ b/components/net/tests/parsable_mime/unknown/open_type diff --git a/tests/unit/net/parsable_mime/unknown/true_type.ttf b/components/net/tests/parsable_mime/unknown/true_type.ttf Binary files differindex c0142fea093..c0142fea093 100644 --- a/tests/unit/net/parsable_mime/unknown/true_type.ttf +++ b/components/net/tests/parsable_mime/unknown/true_type.ttf diff --git a/tests/unit/net/parsable_mime/unknown/true_type_collection.ttc b/components/net/tests/parsable_mime/unknown/true_type_collection.ttc index 42d3cef1e6d..42d3cef1e6d 100644 --- a/tests/unit/net/parsable_mime/unknown/true_type_collection.ttc +++ b/components/net/tests/parsable_mime/unknown/true_type_collection.ttc diff --git a/tests/unit/net/parsable_mime/video/avi/test.avi b/components/net/tests/parsable_mime/video/avi/test.avi Binary files differindex f6cd837a924..f6cd837a924 100644 --- a/tests/unit/net/parsable_mime/video/avi/test.avi +++ b/components/net/tests/parsable_mime/video/avi/test.avi diff --git a/tests/unit/net/parsable_mime/video/mp4/test.mp4 b/components/net/tests/parsable_mime/video/mp4/test.mp4 Binary files differindex 1fc478842f5..1fc478842f5 100644 --- a/tests/unit/net/parsable_mime/video/mp4/test.mp4 +++ b/components/net/tests/parsable_mime/video/mp4/test.mp4 diff --git a/tests/unit/net/parsable_mime/video/webm/test.webm b/components/net/tests/parsable_mime/video/webm/test.webm Binary files differindex da946da5290..da946da5290 100644 --- a/tests/unit/net/parsable_mime/video/webm/test.webm +++ b/components/net/tests/parsable_mime/video/webm/test.webm diff --git a/tests/unit/net/resource_thread.rs b/components/net/tests/resource_thread.rs index 8ad3081c224..8ad3081c224 100644 --- a/tests/unit/net/resource_thread.rs +++ b/components/net/tests/resource_thread.rs diff --git a/tests/unit/net/subresource_integrity.rs b/components/net/tests/subresource_integrity.rs index d67da9c1775..d67da9c1775 100644 --- a/tests/unit/net/subresource_integrity.rs +++ b/components/net/tests/subresource_integrity.rs diff --git a/tests/unit/net/test.jpeg b/components/net/tests/test.jpeg Binary files differindex 08f084cf549..08f084cf549 100644 --- a/tests/unit/net/test.jpeg +++ b/components/net/tests/test.jpeg diff --git a/components/net_traits/Cargo.toml b/components/net_traits/Cargo.toml index 82ca26c6b9c..eb1774c6106 100644 --- a/components/net_traits/Cargo.toml +++ b/components/net_traits/Cargo.toml @@ -8,6 +8,8 @@ publish = false [lib] name = "net_traits" path = "lib.rs" +test = false +doctest = false [dependencies] cookie = "0.10" diff --git a/components/net_traits/response.rs b/components/net_traits/response.rs index 0425b039517..39cbc3f0dea 100644 --- a/components/net_traits/response.rs +++ b/components/net_traits/response.rs @@ -10,6 +10,7 @@ use hyper::status::StatusCode; use hyper_serde::Serde; use servo_url::ServoUrl; use std::sync::{Arc, Mutex}; +use std::sync::atomic::AtomicBool; /// [Response type](https://fetch.spec.whatwg.org/#concept-response-type) #[derive(Clone, Debug, Deserialize, MallocSizeOf, PartialEq, Serialize)] @@ -113,7 +114,8 @@ pub struct Response { /// whether or not to try to return the internal_response when asked for actual_response pub return_internal: bool, /// https://fetch.spec.whatwg.org/#concept-response-aborted - pub aborted: bool, + #[ignore_malloc_size_of = "AtomicBool heap size undefined"] + pub aborted: Arc<AtomicBool>, } impl Response { @@ -135,7 +137,7 @@ impl Response { location_url: None, internal_response: None, return_internal: true, - aborted: false, + aborted: Arc::new(AtomicBool::new(false)), } } @@ -165,7 +167,7 @@ impl Response { location_url: None, internal_response: None, return_internal: true, - aborted: false, + aborted: Arc::new(AtomicBool::new(false)), } } diff --git a/tests/unit/net_traits/image.rs b/components/net_traits/tests/image.rs index e7d2d460d7e..238fae97050 100644 --- a/tests/unit/net_traits/image.rs +++ b/components/net_traits/tests/image.rs @@ -2,6 +2,8 @@ * 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 net_traits; + use net_traits::image::base::detect_image_format; #[test] diff --git a/tests/unit/net_traits/pub_domains.rs b/components/net_traits/tests/pub_domains.rs index d18ecb06e0c..36e70cd39a8 100644 --- a/tests/unit/net_traits/pub_domains.rs +++ b/components/net_traits/tests/pub_domains.rs @@ -2,6 +2,8 @@ * 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 net_traits; + use net_traits::pub_domains::{is_pub_domain, is_reg_domain, pub_suffix, reg_suffix}; // These tests may need to be updated if the PSL changes. diff --git a/tests/unit/net_traits/lib.rs b/components/net_traits/tests/whitespace.rs index 64135a6a2d4..4954e0f67f4 100644 --- a/tests/unit/net_traits/lib.rs +++ b/components/net_traits/tests/whitespace.rs @@ -2,13 +2,8 @@ * 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/. */ -#![cfg(test)] - extern crate net_traits; -mod image; -mod pub_domains; - #[test] fn test_trim_http_whitespace() { fn test_trim(in_: &[u8], out: &[u8]) { diff --git a/components/remutex/Cargo.toml b/components/remutex/Cargo.toml index 86c28838493..844a5f1aede 100644 --- a/components/remutex/Cargo.toml +++ b/components/remutex/Cargo.toml @@ -8,6 +8,8 @@ publish = false [lib] name = "servo_remutex" path = "lib.rs" +test = false +doctest = false [dependencies] lazy_static = "1" diff --git a/tests/unit/servo_remutex/lib.rs b/components/remutex/tests/smoke.rs index 411c943923c..edd5ceb71f6 100644 --- a/tests/unit/servo_remutex/lib.rs +++ b/components/remutex/tests/smoke.rs @@ -10,8 +10,6 @@ // These tests came from https://github.com/rust-lang/rust/blob/master/src/libstd/sys/common/remutex.rs -#![cfg(test)] - extern crate servo_remutex; use servo_remutex::{ReentrantMutex, ReentrantMutexGuard}; diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index a1beb33e8f8..4aae00f551b 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -23,9 +23,6 @@ phf_codegen = "0.7.18" phf_shared = "0.7.18" serde_json = "1.0" -[target.'cfg(all(any(target_os = "macos", target_os = "linux"), not(any(target_arch = "arm", target_arch = "aarch64"))))'.dependencies] -gecko-media = {git = "https://github.com/servo/gecko-media.git"} - [target.'cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))'.dependencies] tinyfiledialogs = "2.5.9" @@ -68,7 +65,6 @@ mime_guess = "1.8.0" mozjs = { version = "0.1.10", features = ["promises"]} msg = {path = "../msg"} net_traits = {path = "../net_traits"} -nonzero = {path = "../nonzero"} num-traits = "0.1.32" offscreen_gl_context = { version = "0.14", features = ["serde"] } open = "1.1.1" diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 4a377aa351f..92f6b3a71b6 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -1422,7 +1422,7 @@ def getRetvalDeclarationForType(returnType, descriptorProvider): if returnType.isAny(): return CGGeneric("JSVal") if returnType.isObject() or returnType.isSpiderMonkeyInterface(): - result = CGGeneric("NonNullJSObjectPtr") + result = CGGeneric("NonNull<JSObject>") if returnType.nullable(): result = CGWrapper(result, pre="Option<", post=">") return result @@ -2268,7 +2268,7 @@ def UnionTypes(descriptors, dictionaries, callbacks, typedefs, config): 'dom::bindings::conversions::StringificationBehavior', 'dom::bindings::conversions::root_from_handlevalue', 'dom::bindings::error::throw_not_in_union', - 'dom::bindings::nonnull::NonNullJSObjectPtr', + 'std::ptr::NonNull', 'dom::bindings::mozmap::MozMap', 'dom::bindings::root::DomRoot', 'dom::bindings::str::ByteString', @@ -5811,7 +5811,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries 'dom::bindings::proxyhandler::get_expando_object', 'dom::bindings::proxyhandler::get_property_descriptor', 'dom::bindings::mozmap::MozMap', - 'dom::bindings::nonnull::NonNullJSObjectPtr', + 'std::ptr::NonNull', 'dom::bindings::num::Finite', 'dom::bindings::str::ByteString', 'dom::bindings::str::DOMString', diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs index 68318c53d70..e40a1d7092b 100644 --- a/components/script/dom/bindings/conversions.rs +++ b/components/script/dom/bindings/conversions.rs @@ -34,7 +34,6 @@ use dom::bindings::error::{Error, Fallible}; use dom::bindings::inheritance::Castable; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::num::Finite; use dom::bindings::reflector::{DomObject, Reflector}; use dom::bindings::root::DomRoot; @@ -54,7 +53,7 @@ use js::jsapi::{JS_GetLatin1StringCharsAndLength, JS_GetProperty, JS_GetReserved use js::jsapi::{JS_GetTwoByteStringCharsAndLength, JS_IsArrayObject, JS_IsExceptionPending}; use js::jsapi::{JS_NewStringCopyN, JS_StringHasLatin1Chars, MutableHandleValue}; use js::jsval::{ObjectValue, StringValue, UndefinedValue}; -use js::rust::{ToString, get_object_class, is_dom_class, is_dom_object, maybe_wrap_value, maybe_wrap_object_value}; +use js::rust::{ToString, get_object_class, is_dom_class, is_dom_object, maybe_wrap_value}; use libc; use num_traits::Float; use servo_config::opts; @@ -71,15 +70,6 @@ pub trait IDLInterface { rustc_on_unimplemented = "The IDL interface `{Self}` is not derived from `{T}`.")] pub trait DerivedFrom<T: Castable>: Castable {} -// https://heycam.github.io/webidl/#es-object -impl ToJSValConvertible for NonNullJSObjectPtr { - #[inline] - unsafe fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue) { - rval.set(ObjectValue(self.get())); - maybe_wrap_object_value(cx, rval); - } -} - impl<T: Float + ToJSValConvertible> ToJSValConvertible for Finite<T> { #[inline] unsafe fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue) { diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index 36cef24d4bd..15fbe7175cb 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -9,7 +9,6 @@ use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyAndValueResult; use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyOrValueResult; use dom::bindings::error::Fallible; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::{Dom, DomRoot}; use dom::bindings::trace::JSTraceable; @@ -20,6 +19,7 @@ use js::jsapi::{HandleValue, Heap, JSContext, MutableHandleObject, JSObject}; use js::jsval::UndefinedValue; use std::cell::Cell; use std::ptr; +use std::ptr::NonNull; /// The values that an iterator will iterate over. #[derive(JSTraceable, MallocSizeOf)] @@ -73,7 +73,7 @@ impl<T: DomObject + JSTraceable + Iterable> IterableIterator<T> { /// Return the next value from the iterable object. #[allow(non_snake_case)] - pub fn Next(&self, cx: *mut JSContext) -> Fallible<NonNullJSObjectPtr> { + pub fn Next(&self, cx: *mut JSContext) -> Fallible<NonNull<JSObject>> { let index = self.index.get(); rooted!(in(cx) let mut value = UndefinedValue()); rooted!(in(cx) let mut rval = ptr::null_mut::<JSObject>()); @@ -105,8 +105,7 @@ impl<T: DomObject + JSTraceable + Iterable> IterableIterator<T> { }; self.index.set(index + 1); result.map(|_| { - assert!(!rval.is_null()); - unsafe { NonNullJSObjectPtr::new_unchecked(rval.get()) } + NonNull::new(rval.get()).expect("got a null pointer") }) } } diff --git a/components/script/dom/bindings/mod.rs b/components/script/dom/bindings/mod.rs index 6fdf690588f..8ba3ea72332 100644 --- a/components/script/dom/bindings/mod.rs +++ b/components/script/dom/bindings/mod.rs @@ -145,7 +145,6 @@ pub mod interface; pub mod iterable; pub mod mozmap; pub mod namespace; -pub mod nonnull; pub mod num; pub mod proxyhandler; pub mod refcounted; diff --git a/components/script/dom/bindings/nonnull.rs b/components/script/dom/bindings/nonnull.rs deleted file mode 100644 index 36dade7136b..00000000000 --- a/components/script/dom/bindings/nonnull.rs +++ /dev/null @@ -1,24 +0,0 @@ -/* 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/. */ - -//! A wrapper type for `NonZero<*mut JSObject>`, to enable local trait impls - -use js::jsapi::JSObject; -use nonzero::NonZero; - -/// A wrapper type for `NonZero<*mut JSObject>`, to enable local trait impls -#[derive(Clone, Copy)] -pub struct NonNullJSObjectPtr(NonZero<*mut JSObject>); - -impl NonNullJSObjectPtr { - #[inline] - pub unsafe fn new_unchecked(ptr: *mut JSObject) -> Self { - NonNullJSObjectPtr(NonZero::new_unchecked(ptr)) - } - - #[inline] - pub fn get(self) -> *mut JSObject { - self.0.get() - } -} diff --git a/components/script/dom/bindings/root.rs b/components/script/dom/bindings/root.rs index 636c14b4d5c..18cb0062023 100644 --- a/components/script/dom/bindings/root.rs +++ b/components/script/dom/bindings/root.rs @@ -34,7 +34,6 @@ use js::jsapi::{JSObject, JSTracer, Heap}; use js::rust::GCMethods; use malloc_size_of::{MallocSizeOf, MallocSizeOfOps}; use mitochondria::OnceCell; -use nonzero::NonZero; use script_layout_interface::TrustedNodeAddress; use std::cell::{Cell, UnsafeCell}; use std::default::Default; @@ -312,7 +311,7 @@ impl<'root, T: RootedReference<'root> + 'root> RootedReference<'root> for Option /// This should only be used as a field in other DOM objects. #[must_root] pub struct Dom<T> { - ptr: NonZero<*const T>, + ptr: ptr::NonNull<T>, } // Dom<T> is similar to Rc<T>, in that it's not always clear how to avoid double-counting. @@ -339,7 +338,7 @@ impl<T: DomObject> Dom<T> { pub fn from_ref(obj: &T) -> Dom<T> { debug_assert!(thread_state::get().is_script()); Dom { - ptr: unsafe { NonZero::new_unchecked(&*obj) }, + ptr: ptr::NonNull::from(obj), } } } @@ -351,7 +350,7 @@ impl<T: DomObject> Deref for Dom<T> { debug_assert!(thread_state::get().is_script()); // We can only have &Dom<T> from a rooted thing, so it's safe to deref // it to &T. - unsafe { &*self.ptr.get() } + unsafe { &*self.ptr.as_ptr() } } } @@ -366,7 +365,7 @@ unsafe impl<T: DomObject> JSTraceable for Dom<T> { trace_reflector(trc, trace_info, - (*self.ptr.get()).reflector()); + (*self.ptr.as_ptr()).reflector()); } } @@ -374,7 +373,7 @@ unsafe impl<T: DomObject> JSTraceable for Dom<T> { /// traits must be implemented on this. #[allow_unrooted_interior] pub struct LayoutDom<T> { - ptr: NonZero<*const T>, + ptr: ptr::NonNull<T>, } impl<T: Castable> LayoutDom<T> { @@ -384,9 +383,9 @@ impl<T: Castable> LayoutDom<T> { T: DerivedFrom<U> { debug_assert!(thread_state::get().is_layout()); - let ptr: *const T = self.ptr.get(); + let ptr: *mut T = self.ptr.as_ptr(); LayoutDom { - ptr: unsafe { NonZero::new_unchecked(ptr as *const U) }, + ptr: unsafe { ptr::NonNull::new_unchecked(ptr as *mut U) }, } } @@ -397,9 +396,9 @@ impl<T: Castable> LayoutDom<T> { debug_assert!(thread_state::get().is_layout()); unsafe { if (*self.unsafe_get()).is::<U>() { - let ptr: *const T = self.ptr.get(); + let ptr: *mut T = self.ptr.as_ptr(); Some(LayoutDom { - ptr: NonZero::new_unchecked(ptr as *const U), + ptr: ptr::NonNull::new_unchecked(ptr as *mut U), }) } else { None @@ -412,7 +411,7 @@ impl<T: DomObject> LayoutDom<T> { /// Get the reflector. pub unsafe fn get_jsobject(&self) -> *mut JSObject { debug_assert!(thread_state::get().is_layout()); - (*self.ptr.get()).reflector().get_jsobject().get() + (*self.ptr.as_ptr()).reflector().get_jsobject().get() } } @@ -420,7 +419,7 @@ impl<T> Copy for LayoutDom<T> {} impl<T> PartialEq for Dom<T> { fn eq(&self, other: &Dom<T>) -> bool { - self.ptr == other.ptr + self.ptr.as_ptr() == other.ptr.as_ptr() } } @@ -428,7 +427,7 @@ impl<T> Eq for Dom<T> {} impl<T> PartialEq for LayoutDom<T> { fn eq(&self, other: &LayoutDom<T>) -> bool { - self.ptr == other.ptr + self.ptr.as_ptr() == other.ptr.as_ptr() } } @@ -436,13 +435,13 @@ impl<T> Eq for LayoutDom<T> {} impl<T> Hash for Dom<T> { fn hash<H: Hasher>(&self, state: &mut H) { - self.ptr.hash(state) + self.ptr.as_ptr().hash(state) } } impl<T> Hash for LayoutDom<T> { fn hash<H: Hasher>(&self, state: &mut H) { - self.ptr.hash(state) + self.ptr.as_ptr().hash(state) } } @@ -474,7 +473,7 @@ impl LayoutDom<Node> { debug_assert!(thread_state::get().is_layout()); let TrustedNodeAddress(addr) = inner; LayoutDom { - ptr: NonZero::new_unchecked(addr as *const Node), + ptr: ptr::NonNull::new_unchecked(addr as *const Node as *mut Node), } } } @@ -700,7 +699,7 @@ impl<T: DomObject> LayoutDom<T> { /// this is unsafe is what necessitates the layout wrappers.) pub unsafe fn unsafe_get(&self) -> *const T { debug_assert!(thread_state::get().is_layout()); - self.ptr.get() + self.ptr.as_ptr() } /// Returns a reference to the interior of this JS object. This method is @@ -708,7 +707,7 @@ impl<T: DomObject> LayoutDom<T> { /// mutate DOM nodes. pub fn get_for_script(&self) -> &T { debug_assert!(thread_state::get().is_script()); - unsafe { &*self.ptr.get() } + unsafe { &*self.ptr.as_ptr() } } } diff --git a/components/script/dom/bindings/weakref.rs b/components/script/dom/bindings/weakref.rs index 2aa12490867..e4e5f00103f 100644 --- a/components/script/dom/bindings/weakref.rs +++ b/components/script/dom/bindings/weakref.rs @@ -18,10 +18,10 @@ use js::jsapi::{JSTracer, JS_GetReservedSlot, JS_SetReservedSlot}; use js::jsval::PrivateValue; use libc::c_void; use malloc_size_of::{MallocSizeOf, MallocSizeOfOps}; -use nonzero::NonZero; use std::cell::{Cell, UnsafeCell}; use std::mem; use std::ops::{Deref, DerefMut, Drop}; +use std::ptr; /// The index of the slot wherein a pointer to the weak holder cell is /// stored for weak-referenceable bindings. We use slot 1 for holding it, @@ -30,9 +30,10 @@ use std::ops::{Deref, DerefMut, Drop}; pub const DOM_WEAK_SLOT: u32 = 1; /// A weak reference to a JS-managed DOM object. +#[allow(unrooted_must_root)] #[allow_unrooted_interior] pub struct WeakRef<T: WeakReferenceable> { - ptr: NonZero<*mut WeakBox<T>>, + ptr: ptr::NonNull<WeakBox<T>>, } /// The inner box of weak references, public for the finalization in codegen. @@ -42,7 +43,7 @@ pub struct WeakBox<T: WeakReferenceable> { /// have already been set to `None`. The pointee contributes one to the count. pub count: Cell<usize>, /// The pointer to the JS-managed object, set to None when it is collected. - pub value: Cell<Option<NonZero<*const T>>>, + pub value: Cell<Option<ptr::NonNull<T>>>, } /// Trait implemented by weak-referenceable interfaces. @@ -58,7 +59,7 @@ pub trait WeakReferenceable: DomObject + Sized { trace!("Creating new WeakBox holder for {:p}.", self); ptr = Box::into_raw(Box::new(WeakBox { count: Cell::new(1), - value: Cell::new(Some(NonZero::new_unchecked(self))), + value: Cell::new(Some(ptr::NonNull::from(self))), })); JS_SetReservedSlot(object, DOM_WEAK_SLOT, PrivateValue(ptr as *const c_void)); } @@ -70,7 +71,7 @@ pub trait WeakReferenceable: DomObject + Sized { new_count); box_.count.set(new_count); WeakRef { - ptr: NonZero::new_unchecked(ptr), + ptr: ptr::NonNull::new_unchecked(ptr), } } } @@ -86,21 +87,21 @@ impl<T: WeakReferenceable> WeakRef<T> { /// DomRoot a weak reference. Returns `None` if the object was already collected. pub fn root(&self) -> Option<DomRoot<T>> { - unsafe { &*self.ptr.get() }.value.get().map(|ptr| unsafe { - DomRoot::from_ref(&*ptr.get()) + unsafe { &*self.ptr.as_ptr() }.value.get().map(|ptr| unsafe { + DomRoot::from_ref(&*ptr.as_ptr()) }) } /// Return whether the weakly-referenced object is still alive. pub fn is_alive(&self) -> bool { - unsafe { &*self.ptr.get() }.value.get().is_some() + unsafe { &*self.ptr.as_ptr() }.value.get().is_some() } } impl<T: WeakReferenceable> Clone for WeakRef<T> { fn clone(&self) -> WeakRef<T> { unsafe { - let box_ = &*self.ptr.get(); + let box_ = &*self.ptr.as_ptr(); let new_count = box_.count.get() + 1; box_.count.set(new_count); WeakRef { @@ -119,7 +120,8 @@ impl<T: WeakReferenceable> MallocSizeOf for WeakRef<T> { impl<T: WeakReferenceable> PartialEq for WeakRef<T> { fn eq(&self, other: &Self) -> bool { unsafe { - (*self.ptr.get()).value.get() == (*other.ptr.get()).value.get() + (*self.ptr.as_ptr()).value.get().map(ptr::NonNull::as_ptr) == + (*other.ptr.as_ptr()).value.get().map(ptr::NonNull::as_ptr) } } } @@ -127,8 +129,8 @@ impl<T: WeakReferenceable> PartialEq for WeakRef<T> { impl<T: WeakReferenceable> PartialEq<T> for WeakRef<T> { fn eq(&self, other: &T) -> bool { unsafe { - match (*self.ptr.get()).value.get() { - Some(ptr) => ptr.get() == other, + match self.ptr.as_ref().value.get() { + Some(ptr) => ptr::eq(ptr.as_ptr(), other), None => false, } } @@ -145,7 +147,7 @@ impl<T: WeakReferenceable> Drop for WeakRef<T> { fn drop(&mut self) { unsafe { let (count, value) = { - let weak_box = &*self.ptr.get(); + let weak_box = &*self.ptr.as_ptr(); assert!(weak_box.count.get() > 0); let count = weak_box.count.get() - 1; weak_box.count.set(count); @@ -153,7 +155,7 @@ impl<T: WeakReferenceable> Drop for WeakRef<T> { }; if count == 0 { assert!(value.is_none()); - mem::drop(Box::from_raw(self.ptr.get())); + mem::drop(Box::from_raw(self.ptr.as_ptr())); } } } diff --git a/components/script/dom/crypto.rs b/components/script/dom/crypto.rs index 1a13194151c..71e67e46b9a 100644 --- a/components/script/dom/crypto.rs +++ b/components/script/dom/crypto.rs @@ -6,7 +6,6 @@ use dom::bindings::cell::DomRefCell; use dom::bindings::codegen::Bindings::CryptoBinding; use dom::bindings::codegen::Bindings::CryptoBinding::CryptoMethods; use dom::bindings::error::{Error, Fallible}; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::bindings::root::DomRoot; use dom::globalscope::GlobalScope; @@ -14,6 +13,7 @@ use dom_struct::dom_struct; use js::jsapi::{JSContext, JSObject}; use js::jsapi::Type; use servo_rand::{ServoRng, Rng}; +use std::ptr::NonNull; unsafe_no_jsmanaged_fields!(ServoRng); @@ -44,7 +44,7 @@ impl CryptoMethods for Crypto { unsafe fn GetRandomValues(&self, _cx: *mut JSContext, input: *mut JSObject) - -> Fallible<NonNullJSObjectPtr> { + -> Fallible<NonNull<JSObject>> { assert!(!input.is_null()); typedarray!(in(_cx) let mut array_buffer_view: ArrayBufferView = input); let (array_type, mut data) = match array_buffer_view.as_mut() { @@ -65,7 +65,7 @@ impl CryptoMethods for Crypto { self.rng.borrow_mut().fill_bytes(&mut data); - Ok(NonNullJSObjectPtr::new_unchecked(input)) + Ok(NonNull::new_unchecked(input)) } } diff --git a/components/script/dom/cssrulelist.rs b/components/script/dom/cssrulelist.rs index 1f800a6a0b4..baa685d5a72 100644 --- a/components/script/dom/cssrulelist.rs +++ b/components/script/dom/cssrulelist.rs @@ -103,7 +103,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, MutNullableDom::new(Some(&*dom_rule))); - Ok((idx)) + Ok(idx) } // In case of a keyframe rule, index must be valid. diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index b9bf61c1924..2699bda9b07 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -21,7 +21,7 @@ use style::properties::{DeclarationSource, Importance, PropertyDeclarationBlock, use style::properties::{parse_one_declaration_into, parse_style_attribute, SourcePropertyDeclaration}; use style::selector_parser::PseudoElement; use style::shared_lock::Locked; -use style_traits::{ParsingMode, ToCss}; +use style_traits::ParsingMode; // http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface #[dom_struct] @@ -85,7 +85,8 @@ impl CSSStyleOwner { // [1]: https://github.com/whatwg/html/issues/2306 if let Some(pdb) = attr { let guard = shared_lock.read(); - let serialization = pdb.read_with(&guard).to_css_string(); + let mut serialization = String::new(); + pdb.read_with(&guard).to_css(&mut serialization).unwrap(); el.set_attribute(&local_name!("style"), AttrValue::Declaration(serialization, pdb)); @@ -415,7 +416,8 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { self.owner.with_block(|pdb| { pdb.declarations().get(index as usize).map(|declaration| { let important = pdb.declarations_importance().get(index); - let mut css = declaration.to_css_string(); + let mut css = String::new(); + declaration.to_css(&mut css).unwrap(); if important { css += " !important"; } @@ -427,7 +429,9 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { // https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-csstext fn CssText(&self) -> DOMString { self.owner.with_block(|pdb| { - DOMString::from(pdb.to_css_string()) + let mut serialization = String::new(); + pdb.to_css(&mut serialization).unwrap(); + DOMString::from(serialization) }) } diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index aecc0b0d0e7..a833ac75f58 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -21,7 +21,6 @@ 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::nonnull::NonNullJSObjectPtr; use dom::bindings::num::Finite; use dom::bindings::refcounted::{Trusted, TrustedPromise}; use dom::bindings::reflector::{DomObject, reflect_dom_object}; @@ -96,7 +95,7 @@ use html5ever::{LocalName, Namespace, QualName}; use hyper::header::{Header, SetCookie}; use hyper_serde::Serde; use ipc_channel::ipc::{self, IpcSender}; -use js::jsapi::{JSContext, JSRuntime}; +use js::jsapi::{JSContext, JSObject, JSRuntime}; use js::jsapi::JS_GetRuntime; use metrics::{InteractiveFlag, InteractiveMetrics, InteractiveWindow, ProfilerMetadataFactory, ProgressiveWebMetric}; use msg::constellation_msg::{BrowsingContextId, Key, KeyModifiers, KeyState, TopLevelBrowsingContextId}; @@ -125,6 +124,7 @@ use std::collections::hash_map::Entry::{Occupied, Vacant}; use std::default::Default; use std::iter::once; use std::mem; +use std::ptr::NonNull; use std::rc::Rc; use std::time::{Duration, Instant}; use style::attr::AttrValue; @@ -3554,7 +3554,7 @@ impl DocumentMethods for Document { #[allow(unsafe_code)] // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:dom-document-nameditem-filter - unsafe fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString) -> Option<NonNullJSObjectPtr> { + unsafe fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString) -> Option<NonNull<JSObject>> { #[derive(JSTraceable, MallocSizeOf)] struct NamedElementFilter { name: Atom, @@ -3611,7 +3611,7 @@ impl DocumentMethods for Document { if elements.peek().is_none() { // TODO: Step 2. // Step 3. - return Some(NonNullJSObjectPtr::new_unchecked(first.reflector().get_jsobject().get())); + return Some(NonNull::new_unchecked(first.reflector().get_jsobject().get())); } } else { return None; @@ -3622,7 +3622,7 @@ impl DocumentMethods for Document { name: name, }; let collection = HTMLCollection::create(self.window(), root, Box::new(filter)); - Some(NonNullJSObjectPtr::new_unchecked(collection.reflector().get_jsobject().get())) + Some(NonNull::new_unchecked(collection.reflector().get_jsobject().get())) } // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:supported-property-names diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 30ac45802a8..c6224e7dc87 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -89,7 +89,6 @@ use script_layout_interface::message::ReflowGoal; use script_thread::ScriptThread; use selectors::Element as SelectorsElement; use selectors::attr::{AttrSelectorOperation, NamespaceConstraint, CaseSensitivity}; -use selectors::context::VisitedHandlingMode; use selectors::matching::{ElementSelectorFlags, MatchingContext}; use selectors::sink::Push; use servo_arc::Arc; @@ -349,11 +348,12 @@ impl Element { } // https://drafts.csswg.org/cssom-view/#css-layout-box - // Elements that have a computed value of the display property - // that is table-column or table-column-group - // FIXME: Currently, it is assumed to be true always + // + // We'll have no content box if there's no fragment for the node, and we use + // bounding_content_box, for simplicity, to detect this (rather than making a more specific + // query to the layout thread). fn has_css_layout_box(&self) -> bool { - true + self.upcast::<Node>().bounding_content_box().is_some() } // https://drafts.csswg.org/cssom-view/#potentially-scrollable @@ -2636,7 +2636,6 @@ impl<'a> SelectorsElement for DomRoot<Element> { &self, pseudo_class: &NonTSPseudoClass, _: &mut MatchingContext<Self::Impl>, - _: VisitedHandlingMode, _: &mut F, ) -> bool where diff --git a/components/script/dom/gamepad.rs b/components/script/dom/gamepad.rs index e5381d5587b..769b1ee548f 100644 --- a/components/script/dom/gamepad.rs +++ b/components/script/dom/gamepad.rs @@ -5,7 +5,6 @@ use dom::bindings::codegen::Bindings::GamepadBinding; use dom::bindings::codegen::Bindings::GamepadBinding::GamepadMethods; use dom::bindings::inheritance::Castable; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::num::Finite; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::{Dom, DomRoot}; @@ -21,6 +20,7 @@ use js::jsapi::{Heap, JSContext, JSObject}; use js::typedarray::{Float64Array, CreateWith}; use std::cell::Cell; use std::ptr; +use std::ptr::NonNull; use webvr_traits::{WebVRGamepadData, WebVRGamepadHand, WebVRGamepadState}; #[dom_struct] @@ -131,8 +131,8 @@ impl GamepadMethods for Gamepad { #[allow(unsafe_code)] // https://w3c.github.io/gamepad/#dom-gamepad-axes - unsafe fn Axes(&self, _cx: *mut JSContext) -> NonNullJSObjectPtr { - NonNullJSObjectPtr::new_unchecked(self.axes.get()) + unsafe fn Axes(&self, _cx: *mut JSContext) -> NonNull<JSObject> { + NonNull::new_unchecked(self.axes.get()) } // https://w3c.github.io/gamepad/#dom-gamepad-buttons diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 426f5ae32b4..1122e267e7e 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -31,13 +31,10 @@ use dom::node::{window_from_node, document_from_node, Node, UnbindContext}; use dom::promise::Promise; use dom::virtualmethods::VirtualMethods; use dom_struct::dom_struct; -#[cfg(all(any(target_os = "macos", target_os = "linux"), not(any(target_arch = "arm", target_arch = "aarch64"))))] -use gecko_media::{CanPlayType, GeckoMedia}; use html5ever::{LocalName, Prefix}; use ipc_channel::ipc; use ipc_channel::router::ROUTER; use microtask::{Microtask, MicrotaskRunnable}; -#[allow(unused_imports)] use mime::{Mime, SubLevel, TopLevel}; use net_traits::{FetchResponseListener, FetchMetadata, Metadata, NetworkError}; use net_traits::request::{CredentialsMode, Destination, RequestInit}; @@ -870,27 +867,6 @@ impl HTMLMediaElementMethods for HTMLMediaElement { self.media_element_load_algorithm(); } - #[cfg(all( - any(target_os = "macos", target_os = "linux"), - not(any(target_arch = "arm", target_arch = "aarch64")), - ))] - // https://html.spec.whatwg.org/multipage/#dom-navigator-canplaytype - fn CanPlayType(&self, type_: DOMString) -> CanPlayTypeResult { - let gecko_media = match GeckoMedia::get() { - Ok(gecko_media) => gecko_media, - Err(_) => return CanPlayTypeResult::_empty, - }; - match gecko_media.can_play_type(&type_) { - CanPlayType::No => CanPlayTypeResult::_empty, - CanPlayType::Maybe => CanPlayTypeResult::Maybe, - CanPlayType::Probably => CanPlayTypeResult::Probably - } - } - - #[cfg(not(all( - any(target_os = "macos", target_os = "linux"), - not(any(target_arch = "arm", target_arch = "aarch64")), - )))] // https://html.spec.whatwg.org/multipage/#dom-navigator-canplaytype fn CanPlayType(&self, type_: DOMString) -> CanPlayTypeResult { match type_.parse::<Mime>() { diff --git a/components/script/dom/imagedata.rs b/components/script/dom/imagedata.rs index 6be4e5d89c2..9e80d86d089 100644 --- a/components/script/dom/imagedata.rs +++ b/components/script/dom/imagedata.rs @@ -5,7 +5,6 @@ use dom::bindings::codegen::Bindings::ImageDataBinding; use dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods; use dom::bindings::error::{Fallible, Error}; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::bindings::root::DomRoot; use dom::globalscope::GlobalScope; @@ -16,6 +15,7 @@ use js::rust::Runtime; use js::typedarray::{Uint8ClampedArray, CreateWith}; use std::default::Default; use std::ptr; +use std::ptr::NonNull; use std::vec::Vec; #[dom_struct] @@ -159,8 +159,7 @@ impl ImageDataMethods for ImageData { #[allow(unsafe_code)] // https://html.spec.whatwg.org/multipage/#dom-imagedata-data - unsafe fn Data(&self, _: *mut JSContext) -> NonNullJSObjectPtr { - assert!(!self.data.get().is_null()); - NonNullJSObjectPtr::new_unchecked(self.data.get()) + unsafe fn Data(&self, _: *mut JSContext) -> NonNull<JSObject> { + NonNull::new(self.data.get()).expect("got a null pointer") } } diff --git a/components/script/dom/medialist.rs b/components/script/dom/medialist.rs index 6ae318da582..449c3c19ea6 100644 --- a/components/script/dom/medialist.rs +++ b/components/script/dom/medialist.rs @@ -93,12 +93,11 @@ impl MediaListMethods for MediaList { // https://drafts.csswg.org/cssom/#dom-medialist-item fn Item(&self, index: u32) -> Option<DOMString> { let guard = self.shared_lock().read(); - self.media_queries.read_with(&guard).media_queries - .get(index as usize).and_then(|query| { - let mut s = String::new(); - query.to_css(&mut s).unwrap(); - Some(DOMString::from_string(s)) - }) + self.media_queries + .read_with(&guard) + .media_queries + .get(index as usize) + .map(|query| query.to_css_string().into()) } // https://drafts.csswg.org/cssom/#dom-medialist-item diff --git a/components/script/dom/mediaquerylist.rs b/components/script/dom/mediaquerylist.rs index e89e7d4d744..4c6be0091b1 100644 --- a/components/script/dom/mediaquerylist.rs +++ b/components/script/dom/mediaquerylist.rs @@ -83,9 +83,7 @@ impl MediaQueryList { impl MediaQueryListMethods for MediaQueryList { // https://drafts.csswg.org/cssom-view/#dom-mediaquerylist-media fn Media(&self) -> DOMString { - let mut s = String::new(); - self.media_query_list.to_css(&mut s).unwrap(); - DOMString::from_string(s) + self.media_query_list.to_css_string().into() } // https://drafts.csswg.org/cssom-view/#dom-mediaquerylist-matches diff --git a/components/script/dom/performanceobserver.rs b/components/script/dom/performanceobserver.rs index 96ad99edf92..af43fe76246 100644 --- a/components/script/dom/performanceobserver.rs +++ b/components/script/dom/performanceobserver.rs @@ -106,7 +106,7 @@ impl PerformanceObserverMethods for PerformanceObserver { // step 2 // There must be at least one valid entry type. if entry_types.is_empty() { - return Err((Error::Type("entryTypes cannot be empty".to_string()))); + return Err(Error::Type("entryTypes cannot be empty".to_string())); } // step 3-4-5 diff --git a/components/script/dom/screen.rs b/components/script/dom/screen.rs index bec082e9729..3cd54034994 100644 --- a/components/script/dom/screen.rs +++ b/components/script/dom/screen.rs @@ -39,14 +39,14 @@ impl Screen { let (send, recv) = ipc::channel::<(Size2D<u32>)>().unwrap(); self.window.upcast::<GlobalScope>() .script_to_constellation_chan().send(ScriptMsg::GetScreenSize(send)).unwrap(); - recv.recv().unwrap_or((Size2D::zero())) + recv.recv().unwrap_or(Size2D::zero()) } fn screen_avail_size(&self) -> Size2D<u32> { let (send, recv) = ipc::channel::<(Size2D<u32>)>().unwrap(); self.window.upcast::<GlobalScope>() .script_to_constellation_chan().send(ScriptMsg::GetScreenAvailSize(send)).unwrap(); - recv.recv().unwrap_or((Size2D::zero())) + recv.recv().unwrap_or(Size2D::zero()) } } diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs index 6ffe2efefdd..2dd77427590 100644 --- a/components/script/dom/testbinding.rs +++ b/components/script/dom/testbinding.rs @@ -21,7 +21,6 @@ use dom::bindings::codegen::UnionTypes::{StringOrLongSequence, StringOrStringSeq use dom::bindings::codegen::UnionTypes::{StringOrUnsignedLong, StringOrBoolean, UnsignedLongOrBoolean}; use dom::bindings::error::{Error, Fallible}; use dom::bindings::mozmap::MozMap; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::num::Finite; use dom::bindings::refcounted::TrustedPromise; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; @@ -43,6 +42,7 @@ use script_traits::MsDuration; use servo_config::prefs::PREFS; use std::borrow::ToOwned; use std::ptr; +use std::ptr::NonNull; use std::rc::Rc; use timers::OneshotTimerCallback; @@ -152,20 +152,18 @@ impl TestBindingMethods for TestBinding { } fn SetUnion9Attribute(&self, _: ByteStringOrLong) {} #[allow(unsafe_code)] - unsafe fn ArrayAttribute(&self, cx: *mut JSContext) -> NonNullJSObjectPtr { + unsafe fn ArrayAttribute(&self, cx: *mut JSContext) -> NonNull<JSObject> { rooted!(in(cx) let array = JS_NewUint8ClampedArray(cx, 16)); - assert!(!array.is_null()); - NonNullJSObjectPtr::new_unchecked(array.get()) + NonNull::new(array.get()).expect("got a null pointer") } #[allow(unsafe_code)] unsafe fn AnyAttribute(&self, _: *mut JSContext) -> JSVal { NullValue() } #[allow(unsafe_code)] unsafe fn SetAnyAttribute(&self, _: *mut JSContext, _: HandleValue) {} #[allow(unsafe_code)] - unsafe fn ObjectAttribute(&self, cx: *mut JSContext) -> NonNullJSObjectPtr { + unsafe fn ObjectAttribute(&self, cx: *mut JSContext) -> NonNull<JSObject> { rooted!(in(cx) let obj = JS_NewPlainObject(cx)); - assert!(!obj.is_null()); - NonNullJSObjectPtr::new_unchecked(obj.get()) + NonNull::new(obj.get()).expect("got a null pointer") } #[allow(unsafe_code)] unsafe fn SetObjectAttribute(&self, _: *mut JSContext, _: *mut JSObject) {} @@ -221,7 +219,7 @@ impl TestBindingMethods for TestBinding { self.url.set(url); } #[allow(unsafe_code)] - unsafe fn GetObjectAttributeNullable(&self, _: *mut JSContext) -> Option<NonNullJSObjectPtr> { None } + unsafe fn GetObjectAttributeNullable(&self, _: *mut JSContext) -> Option<NonNull<JSObject>> { None } #[allow(unsafe_code)] unsafe fn SetObjectAttributeNullable(&self, _: *mut JSContext, _: *mut JSObject) {} fn GetUnionAttributeNullable(&self) -> Option<HTMLElementOrLong> { @@ -273,7 +271,7 @@ impl TestBindingMethods for TestBinding { #[allow(unsafe_code)] unsafe fn ReceiveAny(&self, _: *mut JSContext) -> JSVal { NullValue() } #[allow(unsafe_code)] - unsafe fn ReceiveObject(&self, cx: *mut JSContext) -> NonNullJSObjectPtr { + unsafe fn ReceiveObject(&self, cx: *mut JSContext) -> NonNull<JSObject> { self.ObjectAttribute(cx) } fn ReceiveUnion(&self) -> HTMLElementOrLong { HTMLElementOrLong::Long(0) } @@ -317,7 +315,7 @@ impl TestBindingMethods for TestBinding { Some(Blob::new(&self.global(), BlobImpl::new_from_bytes(vec![]), "".to_owned())) } #[allow(unsafe_code)] - unsafe fn ReceiveNullableObject(&self, cx: *mut JSContext) -> Option<NonNullJSObjectPtr> { + unsafe fn ReceiveNullableObject(&self, cx: *mut JSContext) -> Option<NonNull<JSObject>> { self.GetObjectAttributeNullable(cx) } fn ReceiveNullableUnion(&self) -> Option<HTMLElementOrLong> { diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index 8fb97ac9e78..cc0eae4e5a2 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -5,7 +5,6 @@ use dom::bindings::codegen::Bindings::TextEncoderBinding; use dom::bindings::codegen::Bindings::TextEncoderBinding::TextEncoderMethods; use dom::bindings::error::Fallible; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::bindings::root::DomRoot; use dom::bindings::str::{DOMString, USVString}; @@ -14,6 +13,7 @@ use dom_struct::dom_struct; use js::jsapi::{JSContext, JSObject}; use js::typedarray::{Uint8Array, CreateWith}; use std::ptr; +use std::ptr::NonNull; #[dom_struct] pub struct TextEncoder { @@ -47,12 +47,12 @@ impl TextEncoderMethods for TextEncoder { #[allow(unsafe_code)] // https://encoding.spec.whatwg.org/#dom-textencoder-encode - unsafe fn Encode(&self, cx: *mut JSContext, input: USVString) -> NonNullJSObjectPtr { + unsafe fn Encode(&self, cx: *mut JSContext, input: USVString) -> NonNull<JSObject> { let encoded = input.0.as_bytes(); rooted!(in(cx) let mut js_object = ptr::null_mut::<JSObject>()); assert!(Uint8Array::create(cx, CreateWith::Slice(&encoded), js_object.handle_mut()).is_ok()); - NonNullJSObjectPtr::new_unchecked(js_object.get()) + NonNull::new_unchecked(js_object.get()) } } diff --git a/components/script/dom/vreyeparameters.rs b/components/script/dom/vreyeparameters.rs index 496277ba65d..333c717f06b 100644 --- a/components/script/dom/vreyeparameters.rs +++ b/components/script/dom/vreyeparameters.rs @@ -5,7 +5,6 @@ use dom::bindings::cell::DomRefCell; use dom::bindings::codegen::Bindings::VREyeParametersBinding; use dom::bindings::codegen::Bindings::VREyeParametersBinding::VREyeParametersMethods; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::bindings::root::{Dom, DomRoot}; use dom::globalscope::GlobalScope; @@ -15,6 +14,7 @@ use js::jsapi::{Heap, JSContext, JSObject}; use js::typedarray::{Float32Array, CreateWith}; use std::default::Default; use std::ptr; +use std::ptr::NonNull; use webvr_traits::WebVREyeParameters; #[dom_struct] @@ -60,8 +60,8 @@ impl VREyeParameters { impl VREyeParametersMethods for VREyeParameters { #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vreyeparameters-offset - unsafe fn Offset(&self, _cx: *mut JSContext) -> NonNullJSObjectPtr { - NonNullJSObjectPtr::new_unchecked(self.offset.get()) + unsafe fn Offset(&self, _cx: *mut JSContext) -> NonNull<JSObject> { + NonNull::new_unchecked(self.offset.get()) } // https://w3c.github.io/webvr/#dom-vreyeparameters-fieldofview diff --git a/components/script/dom/vrframedata.rs b/components/script/dom/vrframedata.rs index 530a3727020..621f70a55c9 100644 --- a/components/script/dom/vrframedata.rs +++ b/components/script/dom/vrframedata.rs @@ -5,7 +5,6 @@ use dom::bindings::codegen::Bindings::VRFrameDataBinding; use dom::bindings::codegen::Bindings::VRFrameDataBinding::VRFrameDataMethods; use dom::bindings::error::Fallible; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::num::Finite; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::{Dom, DomRoot}; @@ -17,6 +16,7 @@ use js::jsapi::{Heap, JSContext, JSObject}; use js::typedarray::{Float32Array, CreateWith}; use std::cell::Cell; use std::ptr; +use std::ptr::NonNull; use webvr_traits::WebVRFrameData; #[dom_struct] @@ -118,26 +118,26 @@ impl VRFrameDataMethods for VRFrameData { #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrframedata-leftprojectionmatrix - unsafe fn LeftProjectionMatrix(&self, _cx: *mut JSContext) -> NonNullJSObjectPtr { - NonNullJSObjectPtr::new_unchecked(self.left_proj.get()) + unsafe fn LeftProjectionMatrix(&self, _cx: *mut JSContext) -> NonNull<JSObject> { + NonNull::new_unchecked(self.left_proj.get()) } #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrframedata-leftviewmatrix - unsafe fn LeftViewMatrix(&self, _cx: *mut JSContext) -> NonNullJSObjectPtr { - NonNullJSObjectPtr::new_unchecked(self.left_view.get()) + unsafe fn LeftViewMatrix(&self, _cx: *mut JSContext) -> NonNull<JSObject> { + NonNull::new_unchecked(self.left_view.get()) } #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrframedata-rightprojectionmatrix - unsafe fn RightProjectionMatrix(&self, _cx: *mut JSContext) -> NonNullJSObjectPtr { - NonNullJSObjectPtr::new_unchecked(self.right_proj.get()) + unsafe fn RightProjectionMatrix(&self, _cx: *mut JSContext) -> NonNull<JSObject> { + NonNull::new_unchecked(self.right_proj.get()) } #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrframedata-rightviewmatrix - unsafe fn RightViewMatrix(&self, _cx: *mut JSContext) -> NonNullJSObjectPtr { - NonNullJSObjectPtr::new_unchecked(self.right_view.get()) + unsafe fn RightViewMatrix(&self, _cx: *mut JSContext) -> NonNull<JSObject> { + NonNull::new_unchecked(self.right_view.get()) } // https://w3c.github.io/webvr/#dom-vrframedata-pose diff --git a/components/script/dom/vrpose.rs b/components/script/dom/vrpose.rs index a0b3ec7c92a..01778471ccb 100644 --- a/components/script/dom/vrpose.rs +++ b/components/script/dom/vrpose.rs @@ -4,7 +4,6 @@ use dom::bindings::codegen::Bindings::VRPoseBinding; use dom::bindings::codegen::Bindings::VRPoseBinding::VRPoseMethods; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::DomRoot; use dom::globalscope::GlobalScope; @@ -12,6 +11,7 @@ use dom_struct::dom_struct; use js::jsapi::{Heap, JSContext, JSObject}; use js::typedarray::{Float32Array, CreateWith}; use std::ptr; +use std::ptr::NonNull; use webvr_traits::webvr; #[dom_struct] @@ -52,13 +52,13 @@ unsafe fn update_or_create_typed_array(cx: *mut JSContext, #[inline] #[allow(unsafe_code)] -fn heap_to_option(heap: &Heap<*mut JSObject>) -> Option<NonNullJSObjectPtr> { +fn heap_to_option(heap: &Heap<*mut JSObject>) -> Option<NonNull<JSObject>> { let js_object = heap.get(); if js_object.is_null() { None } else { unsafe { - Some(NonNullJSObjectPtr::new_unchecked(js_object)) + Some(NonNull::new_unchecked(js_object)) } } } @@ -101,37 +101,37 @@ impl VRPose { impl VRPoseMethods for VRPose { #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrpose-position - unsafe fn GetPosition(&self, _cx: *mut JSContext) -> Option<NonNullJSObjectPtr> { + unsafe fn GetPosition(&self, _cx: *mut JSContext) -> Option<NonNull<JSObject>> { heap_to_option(&self.position) } #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrpose-linearvelocity - unsafe fn GetLinearVelocity(&self, _cx: *mut JSContext) -> Option<NonNullJSObjectPtr> { + unsafe fn GetLinearVelocity(&self, _cx: *mut JSContext) -> Option<NonNull<JSObject>> { heap_to_option(&self.linear_vel) } #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrpose-linearacceleration - unsafe fn GetLinearAcceleration(&self, _cx: *mut JSContext) -> Option<NonNullJSObjectPtr> { + unsafe fn GetLinearAcceleration(&self, _cx: *mut JSContext) -> Option<NonNull<JSObject>> { heap_to_option(&self.linear_acc) } #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrpose-orientation - unsafe fn GetOrientation(&self, _cx: *mut JSContext) -> Option<NonNullJSObjectPtr> { + unsafe fn GetOrientation(&self, _cx: *mut JSContext) -> Option<NonNull<JSObject>> { heap_to_option(&self.orientation) } #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrpose-angularvelocity - unsafe fn GetAngularVelocity(&self, _cx: *mut JSContext) -> Option<NonNullJSObjectPtr> { + unsafe fn GetAngularVelocity(&self, _cx: *mut JSContext) -> Option<NonNull<JSObject>> { heap_to_option(&self.angular_vel) } #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrpose-angularacceleration - unsafe fn GetAngularAcceleration(&self, _cx: *mut JSContext) -> Option<NonNullJSObjectPtr> { + unsafe fn GetAngularAcceleration(&self, _cx: *mut JSContext) -> Option<NonNull<JSObject>> { heap_to_option(&self.angular_acc) } } diff --git a/components/script/dom/vrstageparameters.rs b/components/script/dom/vrstageparameters.rs index 9a34af4c03e..bd4dfa5a3a6 100644 --- a/components/script/dom/vrstageparameters.rs +++ b/components/script/dom/vrstageparameters.rs @@ -5,7 +5,6 @@ use dom::bindings::cell::DomRefCell; use dom::bindings::codegen::Bindings::VRStageParametersBinding; use dom::bindings::codegen::Bindings::VRStageParametersBinding::VRStageParametersMethods; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::num::Finite; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::DomRoot; @@ -14,6 +13,7 @@ use dom_struct::dom_struct; use js::jsapi::{Heap, JSContext, JSObject}; use js::typedarray::{Float32Array, CreateWith}; use std::ptr; +use std::ptr::NonNull; use webvr_traits::WebVRStageParameters; #[dom_struct] @@ -69,8 +69,8 @@ impl VRStageParameters { impl VRStageParametersMethods for VRStageParameters { #[allow(unsafe_code)] // https://w3c.github.io/webvr/#dom-vrstageparameters-sittingtostandingtransform - unsafe fn SittingToStandingTransform(&self, _cx: *mut JSContext) -> NonNullJSObjectPtr { - NonNullJSObjectPtr::new_unchecked(self.transform.get()) + unsafe fn SittingToStandingTransform(&self, _cx: *mut JSContext) -> NonNull<JSObject> { + NonNull::new_unchecked(self.transform.get()) } // https://w3c.github.io/webvr/#dom-vrstageparameters-sizex diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs index 168f1146370..9bf016f9631 100644 --- a/components/script/dom/webgl2renderingcontext.rs +++ b/components/script/dom/webgl2renderingcontext.rs @@ -10,7 +10,6 @@ use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLContext use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextMethods; use dom::bindings::codegen::UnionTypes::ImageDataOrHTMLImageElementOrHTMLCanvasElementOrHTMLVideoElement; use dom::bindings::error::Fallible; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::{reflect_dom_object, Reflector}; use dom::bindings::root::{Dom, DomRoot, LayoutDom}; use dom::bindings::str::DOMString; @@ -33,6 +32,7 @@ use js::jsapi::{JSContext, JSObject}; use js::jsval::JSVal; use offscreen_gl_context::GLContextAttributes; use script_layout_interface::HTMLCanvasDataSource; +use std::ptr::NonNull; #[dom_struct] pub struct WebGL2RenderingContext { @@ -132,7 +132,7 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext { #[allow(unsafe_code)] /// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.14 - unsafe fn GetExtension(&self, cx: *mut JSContext, name: DOMString) -> Option<NonNullJSObjectPtr> { + unsafe fn GetExtension(&self, cx: *mut JSContext, name: DOMString) -> Option<NonNull<JSObject>> { self.base.GetExtension(cx, name) } diff --git a/components/script/dom/webgl_extensions/extensions.rs b/components/script/dom/webgl_extensions/extensions.rs index e599df7a25c..3c22817d555 100644 --- a/components/script/dom/webgl_extensions/extensions.rs +++ b/components/script/dom/webgl_extensions/extensions.rs @@ -7,19 +7,20 @@ use dom::bindings::cell::DomRefCell; use dom::bindings::codegen::Bindings::OESStandardDerivativesBinding::OESStandardDerivativesConstants; use dom::bindings::codegen::Bindings::OESTextureHalfFloatBinding::OESTextureHalfFloatConstants; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::root::DomRoot; use dom::bindings::trace::JSTraceable; use dom::webglrenderingcontext::WebGLRenderingContext; use fnv::{FnvHashMap, FnvHashSet}; use gleam::gl::GLenum; use js::jsapi::JSContext; +use js::jsapi::JSObject; use js::jsval::JSVal; use malloc_size_of::MallocSizeOf; use ref_filter_map::ref_filter_map; use std::cell::Ref; use std::collections::HashMap; use std::iter::FromIterator; +use std::ptr::NonNull; use super::{ext, WebGLExtension, WebGLExtensionSpec}; use super::wrapper::{WebGLExtensionWrapper, TypedWebGLExtensionWrapper}; @@ -127,7 +128,7 @@ impl WebGLExtensions { .collect() } - pub fn get_or_init_extension(&self, name: &str, ctx: &WebGLRenderingContext) -> Option<NonNullJSObjectPtr> { + pub fn get_or_init_extension(&self, name: &str, ctx: &WebGLRenderingContext) -> Option<NonNull<JSObject>> { let name = name.to_uppercase(); self.extensions.borrow().get(&name).and_then(|extension| { if extension.is_supported(self) { diff --git a/components/script/dom/webgl_extensions/wrapper.rs b/components/script/dom/webgl_extensions/wrapper.rs index 8af48a6d93e..05fb375ffbd 100644 --- a/components/script/dom/webgl_extensions/wrapper.rs +++ b/components/script/dom/webgl_extensions/wrapper.rs @@ -2,13 +2,14 @@ * 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/. */ -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::DomObject; use dom::bindings::root::{DomRoot, MutNullableDom}; use dom::bindings::trace::JSTraceable; use dom::webglrenderingcontext::WebGLRenderingContext; +use js::jsapi::JSObject; use malloc_size_of::MallocSizeOf; use std::any::Any; +use std::ptr::NonNull; use super::{WebGLExtension, WebGLExtensions, WebGLExtensionSpec}; /// Trait used internally by WebGLExtensions to store and @@ -17,7 +18,7 @@ pub trait WebGLExtensionWrapper: JSTraceable + MallocSizeOf { fn instance_or_init(&self, ctx: &WebGLRenderingContext, ext: &WebGLExtensions) - -> NonNullJSObjectPtr; + -> NonNull<JSObject>; fn spec(&self) -> WebGLExtensionSpec; fn is_supported(&self, &WebGLExtensions) -> bool; fn is_enabled(&self) -> bool; @@ -48,7 +49,7 @@ impl<T> WebGLExtensionWrapper for TypedWebGLExtensionWrapper<T> fn instance_or_init(&self, ctx: &WebGLRenderingContext, ext: &WebGLExtensions) - -> NonNullJSObjectPtr { + -> NonNull<JSObject> { let mut enabled = true; let extension = self.extension.or_init(|| { enabled = false; @@ -58,7 +59,7 @@ impl<T> WebGLExtensionWrapper for TypedWebGLExtensionWrapper<T> self.enable(ext); } unsafe { - NonNullJSObjectPtr::new_unchecked(extension.reflector().get_jsobject().get()) + NonNull::new_unchecked(extension.reflector().get_jsobject().get()) } } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 21712563e40..61f05a923e8 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -17,7 +17,6 @@ use dom::bindings::codegen::UnionTypes::ImageDataOrHTMLImageElementOrHTMLCanvasE use dom::bindings::conversions::{ConversionResult, FromJSValConvertible, ToJSValConvertible}; use dom::bindings::error::{Error, Fallible}; use dom::bindings::inheritance::Castable; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::root::{Dom, DomRoot, LayoutDom, MutNullableDom}; use dom::bindings::str::DOMString; @@ -57,6 +56,7 @@ use script_layout_interface::HTMLCanvasDataSource; use servo_config::prefs::PREFS; use std::cell::{Cell, Ref}; use std::iter::FromIterator; +use std::ptr::NonNull; use webrender_api; type ImagePixelResult = Result<(Vec<u8>, Size2D<i32>, bool), ()>; @@ -1389,7 +1389,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { #[allow(unsafe_code)] // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.14 unsafe fn GetExtension(&self, _cx: *mut JSContext, name: DOMString) - -> Option<NonNullJSObjectPtr> { + -> Option<NonNull<JSObject>> { self.extension_manager.init_once(|| { self.get_gl_extensions() }); diff --git a/components/script/dom/xmldocument.rs b/components/script/dom/xmldocument.rs index ed67be90900..68764eb1080 100644 --- a/components/script/dom/xmldocument.rs +++ b/components/script/dom/xmldocument.rs @@ -6,7 +6,6 @@ use document_loader::DocumentLoader; use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::codegen::Bindings::XMLDocumentBinding::{self, XMLDocumentMethods}; use dom::bindings::inheritance::Castable; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::reflector::reflect_dom_object; use dom::bindings::root::DomRoot; use dom::bindings::str::DOMString; @@ -16,8 +15,10 @@ use dom::node::Node; use dom::window::Window; use dom_struct::dom_struct; use js::jsapi::JSContext; +use js::jsapi::JSObject; use script_traits::DocumentActivity; use servo_url::{MutableOrigin, ServoUrl}; +use std::ptr::NonNull; // https://dom.spec.whatwg.org/#xmldocument #[dom_struct] @@ -101,7 +102,7 @@ impl XMLDocumentMethods for XMLDocument { #[allow(unsafe_code)] // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:dom-document-nameditem-filter - unsafe fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString) -> Option<NonNullJSObjectPtr> { + unsafe fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString) -> Option<NonNull<JSObject>> { self.upcast::<Document>().NamedGetter(_cx, name) } } diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 716115307d2..cb42db58ad4 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -14,7 +14,6 @@ use dom::bindings::codegen::UnionTypes::DocumentOrBodyInit; use dom::bindings::conversions::ToJSValConvertible; use dom::bindings::error::{Error, ErrorResult, Fallible}; use dom::bindings::inheritance::Castable; -use dom::bindings::nonnull::NonNullJSObjectPtr; use dom::bindings::refcounted::Trusted; use dom::bindings::reflector::{DomObject, reflect_dom_object}; use dom::bindings::root::{Dom, DomRoot, MutNullableDom}; @@ -67,6 +66,7 @@ use std::borrow::ToOwned; use std::cell::Cell; use std::default::Default; use std::ptr; +use std::ptr::NonNull; use std::slice; use std::str; use std::sync::{Arc, Mutex}; @@ -1120,11 +1120,11 @@ impl XMLHttpRequest { // https://xhr.spec.whatwg.org/#arraybuffer-response #[allow(unsafe_code)] - unsafe fn arraybuffer_response(&self, cx: *mut JSContext) -> Option<NonNullJSObjectPtr> { + unsafe fn arraybuffer_response(&self, cx: *mut JSContext) -> Option<NonNull<JSObject>> { // Step 1 let created = self.response_arraybuffer.get(); - if !created.is_null() { - return Some(NonNullJSObjectPtr::new_unchecked(created)); + if let Some(nonnull) = NonNull::new(created) { + return Some(nonnull) } // Step 2 @@ -1132,7 +1132,7 @@ impl XMLHttpRequest { rooted!(in(cx) let mut array_buffer = ptr::null_mut::<JSObject>()); ArrayBuffer::create(cx, CreateWith::Slice(&bytes), array_buffer.handle_mut()).ok().and_then(|()| { self.response_arraybuffer.set(array_buffer.get()); - Some(NonNullJSObjectPtr::new_unchecked(array_buffer.get())) + Some(NonNull::new_unchecked(array_buffer.get())) }) } diff --git a/components/script/lib.rs b/components/script/lib.rs index 3143342e4f6..a871b320758 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -42,9 +42,6 @@ extern crate domobject_derive; extern crate encoding_rs; extern crate euclid; extern crate fnv; -#[allow(unused_extern_crates)] -#[cfg(all(any(target_os = "macos", target_os = "linux"), not(any(target_arch = "arm", target_arch = "aarch64"))))] -extern crate gecko_media; extern crate gleam; extern crate half; #[macro_use] extern crate html5ever; @@ -71,7 +68,6 @@ extern crate mitochondria; extern crate mozjs as js; extern crate msg; extern crate net_traits; -extern crate nonzero; extern crate num_traits; extern crate offscreen_gl_context; extern crate open; diff --git a/components/script_layout_interface/Cargo.toml b/components/script_layout_interface/Cargo.toml index 6a64c2b205e..db3c63dddbe 100644 --- a/components/script_layout_interface/Cargo.toml +++ b/components/script_layout_interface/Cargo.toml @@ -25,7 +25,6 @@ malloc_size_of_derive = { path = "../malloc_size_of_derive" } metrics = {path = "../metrics"} msg = {path = "../msg"} net_traits = {path = "../net_traits"} -nonzero = {path = "../nonzero"} profile_traits = {path = "../profile_traits"} range = {path = "../range"} script_traits = {path = "../script_traits"} diff --git a/components/script_layout_interface/lib.rs b/components/script_layout_interface/lib.rs index 4e17570f92d..45c82ee1089 100644 --- a/components/script_layout_interface/lib.rs +++ b/components/script_layout_interface/lib.rs @@ -7,6 +7,7 @@ //! to depend on script. #![deny(unsafe_code)] +#![feature(associated_type_defaults)] extern crate app_units; extern crate atomic_refcell; @@ -24,7 +25,6 @@ extern crate malloc_size_of; extern crate metrics; extern crate msg; extern crate net_traits; -extern crate nonzero; extern crate profile_traits; extern crate range; extern crate script_traits; @@ -45,9 +45,9 @@ use canvas_traits::canvas::CanvasMsg; use ipc_channel::ipc::IpcSender; use libc::c_void; use net_traits::image_cache::PendingImageId; -use nonzero::NonZero; use script_traits::UntrustedNodeAddress; use servo_url::ServoUrl; +use std::ptr::NonNull; use std::sync::atomic::AtomicIsize; use style::data::ElementData; @@ -77,7 +77,7 @@ pub struct OpaqueStyleAndLayoutData { // NB: We really store a `StyleAndLayoutData` here, so be careful! #[ignore_malloc_size_of = "TODO(#6910) Box value that should be counted but \ the type lives in layout"] - pub ptr: NonZero<*mut StyleData>, + pub ptr: NonNull<StyleData>, } #[allow(unsafe_code)] diff --git a/components/script_layout_interface/wrapper_traits.rs b/components/script_layout_interface/wrapper_traits.rs index dc1f5db4c54..0b04d4256a6 100644 --- a/components/script_layout_interface/wrapper_traits.rs +++ b/components/script_layout_interface/wrapper_traits.rs @@ -19,10 +19,10 @@ use std::fmt::Debug; use style::attr::AttrValue; use style::context::SharedStyleContext; use style::data::ElementData; -use style::dom::{LayoutIterator, NodeInfo, TNode}; +use style::dom::{LayoutIterator, NodeInfo, TElement, TNode}; use style::dom::OpaqueNode; use style::font_metrics::ServoMetricsProvider; -use style::properties::{CascadeFlags, ComputedValues}; +use style::properties::ComputedValues; use style::selector_parser::{PseudoElement, PseudoElementCascadeType, SelectorImpl}; use style::stylist::RuleInclusion; use webrender_api::ClipId; @@ -148,6 +148,8 @@ impl<ConcreteNode> Iterator for TreeIterator<ConcreteNode> /// node does not allow any parents or siblings of nodes to be accessed, to avoid races. pub trait ThreadSafeLayoutNode: Clone + Copy + Debug + GetLayoutData + NodeInfo + PartialEq + Sized { type ConcreteNode: LayoutNode<ConcreteThreadSafeLayoutNode = Self>; + type ConcreteElement: TElement; + type ConcreteThreadSafeLayoutElement: ThreadSafeLayoutElement<ConcreteThreadSafeLayoutNode = Self> + ::selectors::Element<Impl=SelectorImpl>; @@ -291,6 +293,12 @@ pub trait ThreadSafeLayoutElement { type ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode<ConcreteThreadSafeLayoutElement = Self>; + /// This type alias is just a work-around to avoid writing + /// + /// <Self::ConcreteThreadSafeLayoutNode as ThreadSafeLayoutNode>::ConcreteElement + /// + type ConcreteElement: TElement; + fn as_node(&self) -> Self::ConcreteThreadSafeLayoutNode; /// Creates a new `ThreadSafeLayoutElement` for the same `LayoutElement` @@ -307,8 +315,7 @@ pub trait ThreadSafeLayoutElement /// /// We need this so that the functions defined on this trait can call /// lazily_compute_pseudo_element_style, which operates on TElement. - unsafe fn unsafe_get(self) -> - <<Self::ConcreteThreadSafeLayoutNode as ThreadSafeLayoutNode>::ConcreteNode as TNode>::ConcreteElement; + unsafe fn unsafe_get(self) -> Self::ConcreteElement; #[inline] fn get_attr(&self, namespace: &Namespace, name: &LocalName) -> Option<&str>; @@ -382,11 +389,10 @@ pub trait ThreadSafeLayoutElement .unwrap().clone() }, PseudoElementCascadeType::Precomputed => { - context.stylist.precomputed_values_for_pseudo( + context.stylist.precomputed_values_for_pseudo::<Self::ConcreteElement>( &context.guards, &style_pseudo, Some(data.styles.primary()), - CascadeFlags::empty(), &ServoMetricsProvider, ) } diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs index 3159de3a5c2..e330c49d441 100644 --- a/components/script_traits/lib.rs +++ b/components/script_traits/lib.rs @@ -68,7 +68,7 @@ use std::sync::Arc; use std::sync::mpsc::{Receiver, Sender, RecvTimeoutError}; use style_traits::CSSPixel; use style_traits::SpeculativePainter; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use webdriver_msg::{LoadStatus, WebDriverScriptCommand}; use webrender_api::{ClipId, DevicePixel, DocumentId, ImageKey}; use webvr_traits::{WebVREvent, WebVRMsg}; @@ -807,7 +807,7 @@ pub enum ConstellationMsg { /// Forward an event to the script task of the given pipeline. ForwardEvent(PipelineId, CompositorEvent), /// Requesting a change to the onscreen cursor. - SetCursor(Cursor), + SetCursor(CursorKind), } /// Resources required by workerglobalscopes diff --git a/components/script_traits/script_msg.rs b/components/script_traits/script_msg.rs index a9b5f86d8fe..6ff47b5e004 100644 --- a/components/script_traits/script_msg.rs +++ b/components/script_traits/script_msg.rs @@ -25,7 +25,7 @@ use net_traits::storage_thread::StorageType; use servo_url::ImmutableOrigin; use servo_url::ServoUrl; use style_traits::CSSPixel; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use style_traits::viewport::ViewportConstraints; /// Messages from the layout to the constellation. @@ -39,7 +39,7 @@ pub enum LayoutMsg { /// the time when the frame with the given ID (epoch) is painted. PendingPaintMetric(PipelineId, Epoch), /// Requests that the constellation inform the compositor of the a cursor change. - SetCursor(Cursor), + SetCursor(CursorKind), /// Notifies the constellation that the viewport has been constrained in some manner ViewportConstrained(PipelineId, ViewportConstraints), } diff --git a/components/selectors/context.rs b/components/selectors/context.rs index 856e18497d9..257a29afc44 100644 --- a/components/selectors/context.rs +++ b/components/selectors/context.rs @@ -100,13 +100,11 @@ where Impl: SelectorImpl, { /// Input with the matching mode we should use when matching selectors. - pub matching_mode: MatchingMode, + matching_mode: MatchingMode, /// Input with the bloom filter used to fast-reject selectors. pub bloom_filter: Option<&'a BloomFilter>, /// An optional cache to speed up nth-index-like selectors. pub nth_index_cache: Option<&'a mut NthIndexCache>, - /// Input that controls how matching for links is handled. - pub visited_handling: VisitedHandlingMode, /// The element which is going to match :scope pseudo-class. It can be /// either one :scope element, or the scoping element. /// @@ -120,11 +118,17 @@ where /// See https://drafts.csswg.org/selectors-4/#scope-pseudo pub scope_element: Option<OpaqueElement>, + /// Controls how matching for links is handled. + visited_handling: VisitedHandlingMode, + /// The current nesting level of selectors that we're matching. /// - /// FIXME(emilio): Move this somewhere else and make MatchingContext - /// immutable again. - pub nesting_level: usize, + /// FIXME(emilio): Consider putting the mutable stuff in a Cell, then make + /// MatchingContext immutable again. + nesting_level: usize, + + /// Whether we're inside a negation or not. + in_negation: bool, /// An optional hook function for checking whether a pseudo-element /// should match when matching_mode is ForStatelessPseudoElement. @@ -175,21 +179,91 @@ where classes_and_ids_case_sensitivity: quirks_mode.classes_and_ids_case_sensitivity(), scope_element: None, nesting_level: 0, + in_negation: false, pseudo_element_matching_fn: None, extra_data: Default::default(), _impl: ::std::marker::PhantomData, } } + /// Whether we're matching a nested selector. + #[inline] + pub fn is_nested(&self) -> bool { + self.nesting_level != 0 + } + + /// Whether we're matching inside a :not(..) selector. + #[inline] + pub fn in_negation(&self) -> bool { + self.in_negation + } + /// The quirks mode of the document. #[inline] pub fn quirks_mode(&self) -> QuirksMode { self.quirks_mode } + /// The matching-mode for this selector-matching operation. + #[inline] + pub fn matching_mode(&self) -> MatchingMode { + self.matching_mode + } + /// The case-sensitivity for class and ID selectors #[inline] pub fn classes_and_ids_case_sensitivity(&self) -> CaseSensitivity { self.classes_and_ids_case_sensitivity } + + /// Runs F with a deeper nesting level. + #[inline] + pub fn nest<F, R>(&mut self, f: F) -> R + where + F: FnOnce(&mut Self) -> R, + { + self.nesting_level += 1; + let result = f(self); + self.nesting_level -= 1; + result + } + + /// Runs F with a deeper nesting level, and marking ourselves in a negation, + /// for a :not(..) selector, for example. + #[inline] + pub fn nest_for_negation<F, R>(&mut self, f: F) -> R + where + F: FnOnce(&mut Self) -> R, + { + debug_assert!( + !self.in_negation, + "Someone messed up parsing?" + ); + self.in_negation = true; + let result = self.nest(f); + self.in_negation = false; + result + } + + #[inline] + pub fn visited_handling(&self) -> VisitedHandlingMode { + self.visited_handling + } + + /// Runs F with a different VisitedHandlingMode. + #[inline] + pub fn with_visited_handling_mode<F, R>( + &mut self, + handling_mode: VisitedHandlingMode, + f: F, + ) -> R + where + F: FnOnce(&mut Self) -> R, + { + let original_handling_mode = self.visited_handling; + self.visited_handling = handling_mode; + let result = f(self); + self.visited_handling = original_handling_mode; + result + } } diff --git a/components/selectors/matching.rs b/components/selectors/matching.rs index b01f7371f6b..eda52011ac7 100644 --- a/components/selectors/matching.rs +++ b/components/selectors/matching.rs @@ -60,8 +60,7 @@ impl ElementSelectorFlags { /// Holds per-compound-selector data. struct LocalMatchingContext<'a, 'b: 'a, Impl: SelectorImpl> { shared: &'a mut MatchingContext<'b, Impl>, - matches_hover_and_active_quirk: bool, - visited_handling: VisitedHandlingMode, + matches_hover_and_active_quirk: MatchesHoverAndActiveQuirk, } #[inline(always)] @@ -171,6 +170,15 @@ enum SelectorMatchingResult { NotMatchedGlobally, } +/// Whether the :hover and :active quirk applies. +/// +/// https://quirks.spec.whatwg.org/#the-active-and-hover-quirk +#[derive(Clone, Copy, Debug, PartialEq)] +enum MatchesHoverAndActiveQuirk { + Yes, + No, +} + /// Matches a selector, fast-rejecting against a bloom filter. /// /// We accept an offset to allow consumers to represent and match against @@ -236,11 +244,9 @@ where selector.combinator_at_parse_order(from_offset - 1); // This asserts. } - let visited_handling = context.visited_handling; let mut local_context = LocalMatchingContext { shared: context, - visited_handling, - matches_hover_and_active_quirk: false, + matches_hover_and_active_quirk: MatchesHoverAndActiveQuirk::No, }; for component in selector.iter_raw_parse_order_from(from_offset) { @@ -279,8 +285,8 @@ where { // If this is the special pseudo-element mode, consume the ::pseudo-element // before proceeding, since the caller has already handled that part. - if context.matching_mode == MatchingMode::ForStatelessPseudoElement && - context.nesting_level == 0 { + if context.matching_mode() == MatchingMode::ForStatelessPseudoElement && + !context.is_nested() { // Consume the pseudo. match *iter.next().unwrap() { Component::PseudoElement(ref pseudo) => { @@ -312,12 +318,10 @@ where } } - let visited_handling = context.visited_handling; let result = matches_complex_selector_internal( iter, element, context, - visited_handling, flags_setter, Rightmost::Yes, ); @@ -333,23 +337,23 @@ fn matches_hover_and_active_quirk<Impl: SelectorImpl>( selector_iter: &SelectorIter<Impl>, context: &MatchingContext<Impl>, rightmost: Rightmost, -) -> bool { +) -> MatchesHoverAndActiveQuirk { if context.quirks_mode() != QuirksMode::Quirks { - return false; + return MatchesHoverAndActiveQuirk::No; } - if context.nesting_level != 0 { - return false; + if context.is_nested() { + return MatchesHoverAndActiveQuirk::No; } // This compound selector had a pseudo-element to the right that we // intentionally skipped. - if matches!(rightmost, Rightmost::Yes) && - context.matching_mode == MatchingMode::ForStatelessPseudoElement { - return false; + if rightmost == Rightmost::Yes && + context.matching_mode() == MatchingMode::ForStatelessPseudoElement { + return MatchesHoverAndActiveQuirk::No; } - selector_iter.clone().all(|simple| { + let all_match = selector_iter.clone().all(|simple| { match *simple { Component::LocalName(_) | Component::AttributeInNoNamespaceExists { .. } | @@ -375,9 +379,16 @@ fn matches_hover_and_active_quirk<Impl: SelectorImpl>( }, _ => true, } - }) + }); + + if all_match { + MatchesHoverAndActiveQuirk::Yes + } else { + MatchesHoverAndActiveQuirk::No + } } +#[derive(Clone, Copy, PartialEq)] enum Rightmost { Yes, No, @@ -417,7 +428,6 @@ fn matches_complex_selector_internal<E, F>( mut selector_iter: SelectorIter<E::Impl>, element: &E, context: &mut MatchingContext<E::Impl>, - visited_handling: VisitedHandlingMode, flags_setter: &mut F, rightmost: Rightmost, ) -> SelectorMatchingResult @@ -431,7 +441,6 @@ where &mut selector_iter, element, context, - visited_handling, flags_setter, rightmost ); @@ -467,12 +476,11 @@ where // Stop matching :visited as soon as we find a link, or a combinator for // something that isn't an ancestor. - let mut visited_handling = - if element.is_link() || combinator.is_sibling() { - VisitedHandlingMode::AllLinksUnvisited - } else { - visited_handling - }; + let mut visited_handling = if element.is_link() || combinator.is_sibling() { + VisitedHandlingMode::AllLinksUnvisited + } else { + context.visited_handling() + }; loop { let element = match next_element { @@ -480,14 +488,16 @@ where Some(next_element) => next_element, }; - let result = matches_complex_selector_internal( - selector_iter.clone(), - &element, - context, - visited_handling, - flags_setter, - Rightmost::No, - ); + let result = + context.with_visited_handling_mode(visited_handling, |context| { + matches_complex_selector_internal( + selector_iter.clone(), + &element, + context, + flags_setter, + Rightmost::No, + ) + }); match (result, combinator) { // Return the status immediately. @@ -521,12 +531,9 @@ where _ => {}, } - visited_handling = - if element.is_link() || combinator.is_sibling() { - VisitedHandlingMode::AllLinksUnvisited - } else { - visited_handling - }; + if element.is_link() || combinator.is_sibling() { + visited_handling = VisitedHandlingMode::AllLinksUnvisited; + } next_element = next_element_for_combinator(&element, combinator); } @@ -554,7 +561,6 @@ fn matches_compound_selector<E, F>( selector_iter: &mut SelectorIter<E::Impl>, element: &E, context: &mut MatchingContext<E::Impl>, - visited_handling: VisitedHandlingMode, flags_setter: &mut F, rightmost: Rightmost, ) -> bool @@ -596,7 +602,6 @@ where let mut local_context = LocalMatchingContext { shared: context, - visited_handling, matches_hover_and_active_quirk, }; iter::once(selector).chain(selector_iter).all(|simple| { @@ -620,20 +625,20 @@ where E: Element, F: FnMut(&E, ElementSelectorFlags), { + debug_assert!(context.shared.is_nested() || !context.shared.in_negation()); + match *selector { Component::Combinator(_) => unreachable!(), Component::Slotted(ref selector) => { - context.shared.nesting_level += 1; - let result = + context.shared.nest(|context| { element.assigned_slot().is_some() && matches_complex_selector( selector.iter(), element, - context.shared, + context, flags_setter, - ); - context.shared.nesting_level -= 1; - result + ) + }) } Component::PseudoElement(ref pseudo) => { element.match_pseudo_element(pseudo, context.shared) @@ -714,17 +719,17 @@ where ) } Component::NonTSPseudoClass(ref pc) => { - if context.matches_hover_and_active_quirk && - context.shared.nesting_level == 0 && + if context.matches_hover_and_active_quirk == MatchesHoverAndActiveQuirk::Yes && + !context.shared.is_nested() && E::Impl::is_active_or_hover(pc) && - !element.is_link() { + !element.is_link() + { return false; } element.match_non_ts_pseudo_class( pc, &mut context.shared, - context.visited_handling, flags_setter ) } @@ -774,17 +779,20 @@ where matches_generic_nth_child(element, context, 0, 1, true, true, flags_setter) } Component::Negation(ref negated) => { - context.shared.nesting_level += 1; - let result = !negated.iter().all(|ss| { - matches_simple_selector( - ss, - element, - context, - flags_setter, - ) - }); - context.shared.nesting_level -= 1; - result + context.shared.nest_for_negation(|context| { + let mut local_context = LocalMatchingContext { + matches_hover_and_active_quirk: MatchesHoverAndActiveQuirk::No, + shared: context, + }; + !negated.iter().all(|ss| { + matches_simple_selector( + ss, + element, + &mut local_context, + flags_setter, + ) + }) + }) } } } diff --git a/components/selectors/tree.rs b/components/selectors/tree.rs index 0ae6d7307a5..ea36aac6f89 100644 --- a/components/selectors/tree.rs +++ b/components/selectors/tree.rs @@ -6,7 +6,6 @@ //! between layout and style. use attr::{AttrSelectorOperation, NamespaceConstraint, CaseSensitivity}; -use context::VisitedHandlingMode; use matching::{ElementSelectorFlags, MatchingContext}; use parser::SelectorImpl; use servo_arc::NonZeroPtrMut; @@ -69,7 +68,6 @@ pub trait Element: Sized + Clone + Debug { &self, pc: &<Self::Impl as SelectorImpl>::NonTSPseudoClass, context: &mut MatchingContext<Self::Impl>, - visited_handling: VisitedHandlingMode, flags_setter: &mut F, ) -> bool where diff --git a/components/servo_arc/lib.rs b/components/servo_arc/lib.rs index d7694901130..1301a8e6611 100644 --- a/components/servo_arc/lib.rs +++ b/components/servo_arc/lib.rs @@ -83,6 +83,7 @@ const MAX_REFCOUNT: usize = (isize::MAX) as usize; /// that this is all a temporary hack, this restriction is fine for now. /// /// [1]: https://github.com/rust-lang/rust/issues/27730 +// FIXME: remove this and use std::ptr::NonNull when Firefox requires Rust 1.25+ pub struct NonZeroPtrMut<T: ?Sized + 'static>(&'static mut T); impl<T: ?Sized> NonZeroPtrMut<T> { pub fn new(ptr: *mut T) -> Self { diff --git a/components/style/Cargo.toml b/components/style/Cargo.toml index 37cf1dc685f..16d46eb6e26 100644 --- a/components/style/Cargo.toml +++ b/components/style/Cargo.toml @@ -75,7 +75,7 @@ kernel32-sys = "0.2" [build-dependencies] lazy_static = "1" log = "0.3" -bindgen = { version = "0.31.2", optional = true } +bindgen = { version = "0.32.2", optional = true } regex = {version = "0.2", optional = true} walkdir = "1.0" toml = {version = "0.2.1", optional = true, default-features = false} diff --git a/components/style/animation.rs b/components/style/animation.rs index ada5ccad40f..ab482862358 100644 --- a/components/style/animation.rs +++ b/components/style/animation.rs @@ -8,7 +8,7 @@ use Atom; use bezier::Bezier; use context::SharedStyleContext; -use dom::OpaqueNode; +use dom::{OpaqueNode, TElement}; use font_metrics::FontMetricsProvider; use properties::{self, CascadeFlags, ComputedValues, LonghandId}; use properties::animated_properties::{AnimatedProperty, TransitionProperty}; @@ -458,12 +458,16 @@ pub fn start_transitions_if_applicable( had_animations } -fn compute_style_for_animation_step(context: &SharedStyleContext, - step: &KeyframesStep, - previous_style: &ComputedValues, - style_from_cascade: &Arc<ComputedValues>, - font_metrics_provider: &FontMetricsProvider) - -> Arc<ComputedValues> { +fn compute_style_for_animation_step<E>( + context: &SharedStyleContext, + step: &KeyframesStep, + previous_style: &ComputedValues, + style_from_cascade: &Arc<ComputedValues>, + font_metrics_provider: &FontMetricsProvider, +) -> Arc<ComputedValues> +where + E: TElement, +{ match step.value { KeyframesStepValue::ComputedValues => style_from_cascade.clone(), KeyframesStepValue::Declarations { block: ref declarations } => { @@ -482,20 +486,23 @@ fn compute_style_for_animation_step(context: &SharedStyleContext, // This currently ignores visited styles, which seems acceptable, // as existing browsers don't appear to animate visited styles. let computed = - properties::apply_declarations(context.stylist.device(), - /* pseudo = */ None, - previous_style.rules(), - &context.guards, - iter, - Some(previous_style), - Some(previous_style), - Some(previous_style), - /* visited_style = */ None, - font_metrics_provider, - CascadeFlags::empty(), - context.quirks_mode(), - /* rule_cache = */ None, - &mut Default::default()); + properties::apply_declarations::<E, _, _>( + context.stylist.device(), + /* pseudo = */ None, + previous_style.rules(), + &context.guards, + iter, + Some(previous_style), + Some(previous_style), + Some(previous_style), + /* visited_style = */ None, + font_metrics_provider, + CascadeFlags::empty(), + context.quirks_mode(), + /* rule_cache = */ None, + &mut Default::default(), + /* element = */ None, + ); computed } } @@ -503,11 +510,12 @@ fn compute_style_for_animation_step(context: &SharedStyleContext, /// Triggers animations for a given node looking at the animation property /// values. -pub fn maybe_start_animations(context: &SharedStyleContext, - new_animations_sender: &Sender<Animation>, - node: OpaqueNode, - new_style: &Arc<ComputedValues>) - -> bool { +pub fn maybe_start_animations( + context: &SharedStyleContext, + new_animations_sender: &Sender<Animation>, + node: OpaqueNode, + new_style: &Arc<ComputedValues>, +) -> bool { let mut had_animations = false; let box_style = new_style.get_box(); @@ -599,10 +607,15 @@ pub fn update_style_for_animation_frame(mut new_style: &mut Arc<ComputedValues>, } /// Updates a single animation and associated style based on the current time. /// If `damage` is provided, inserts the appropriate restyle damage. -pub fn update_style_for_animation(context: &SharedStyleContext, - animation: &Animation, - style: &mut Arc<ComputedValues>, - font_metrics_provider: &FontMetricsProvider) { +pub fn update_style_for_animation<E>( + context: &SharedStyleContext, + animation: &Animation, + style: &mut Arc<ComputedValues>, + font_metrics_provider: &FontMetricsProvider, +) +where + E: TElement, +{ debug!("update_style_for_animation: entering"); debug_assert!(!animation.is_expired()); @@ -724,11 +737,13 @@ pub fn update_style_for_animation(context: &SharedStyleContext, let relative_progress = (now - last_keyframe_ended_at) / relative_duration; // TODO: How could we optimise it? Is it such a big deal? - let from_style = compute_style_for_animation_step(context, - last_keyframe, - &**style, - &state.cascade_style, - font_metrics_provider); + let from_style = compute_style_for_animation_step::<E>( + context, + last_keyframe, + &**style, + &state.cascade_style, + font_metrics_provider, + ); // NB: The spec says that the timing function can be overwritten // from the keyframe style. @@ -739,11 +754,13 @@ pub fn update_style_for_animation(context: &SharedStyleContext, timing_function = from_style.get_box().animation_timing_function_at(0); } - let target_style = compute_style_for_animation_step(context, - target_keyframe, - &from_style, - &state.cascade_style, - font_metrics_provider); + let target_style = compute_style_for_animation_step::<E>( + context, + target_keyframe, + &from_style, + &state.cascade_style, + font_metrics_provider, + ); let mut new_style = (*style).clone(); diff --git a/components/style/build_gecko.rs b/components/style/build_gecko.rs index 1bef36f8b28..7415bff8a26 100644 --- a/components/style/build_gecko.rs +++ b/components/style/build_gecko.rs @@ -204,6 +204,9 @@ mod bindings { // Disable rust unions, because we replace some types inside of // them. + // + // FIXME(emilio, bug 1432153): Make the bindings rustfmt'd on + // automation. let mut builder = Builder::default() .rustfmt_bindings(false) .rust_target(RustTarget::Stable_1_0); diff --git a/components/style/context.rs b/components/style/context.rs index 6c9ba7b47f6..3768289da0e 100644 --- a/components/style/context.rs +++ b/components/style/context.rs @@ -203,7 +203,7 @@ impl<'a> SharedStyleContext<'a> { /// within the `CurrentElementInfo`. At the end of the cascade, they are folded /// down into the main `ComputedValues` to reduce memory usage per element while /// still remaining accessible. -#[derive(Clone, Default)] +#[derive(Clone, Debug, Default)] pub struct CascadeInputs { /// The rule node representing the ordered list of rules matched for this /// node. @@ -226,15 +226,6 @@ impl CascadeInputs { } } -// We manually implement Debug for CascadeInputs so that we can avoid the -// verbose stringification of ComputedValues for normal logging. -impl fmt::Debug for CascadeInputs { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "CascadeInputs {{ rules: {:?}, visited_rules: {:?}, .. }}", - self.rules, self.visited_rules) - } -} - /// A list of cascade inputs for eagerly-cascaded pseudo-elements. /// The list is stored inline. #[derive(Debug)] diff --git a/components/style/counter_style/mod.rs b/components/style/counter_style/mod.rs index f0fa18fda92..1ad385c4bfd 100644 --- a/components/style/counter_style/mod.rs +++ b/components/style/counter_style/mod.rs @@ -17,9 +17,11 @@ use selectors::parser::SelectorParseErrorKind; use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard}; #[allow(unused_imports)] use std::ascii::AsciiExt; use std::borrow::Cow; -use std::fmt; +use std::fmt::{self, Write}; use std::ops::Range; -use style_traits::{Comma, OneOrMoreSeparated, ParseError, StyleParseErrorKind, ToCss}; +use str::CssStringWriter; +use style_traits::{Comma, CssWriter, OneOrMoreSeparated, ParseError}; +use style_traits::{StyleParseErrorKind, ToCss}; use values::CustomIdent; /// Parse a counter style name reference. @@ -228,15 +230,14 @@ macro_rules! counter_style_descriptors { } impl ToCssWithGuard for CounterStyleRuleData { - fn to_css<W>(&self, _guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, _guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@counter-style ")?; - self.name.to_css(dest)?; + self.name.to_css(&mut CssWriter::new(dest))?; dest.write_str(" {\n")?; $( if let Some(ref value) = self.$ident { dest.write_str(concat!(" ", $name, ": "))?; - ToCss::to_css(value, dest)?; + ToCss::to_css(value, &mut CssWriter::new(dest))?; dest.write_str(";\n")?; } )+ @@ -362,7 +363,10 @@ impl Parse for System { } impl ToCss for System { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { System::Cyclic => dest.write_str("cyclic"), System::Numeric => dest.write_str("numeric"), @@ -410,7 +414,10 @@ impl Parse for Symbol { } impl ToCss for Symbol { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { Symbol::String(ref s) => s.to_css(dest), Symbol::Ident(ref s) => serialize_identifier(s, dest), @@ -477,7 +484,10 @@ fn parse_bound<'i, 't>(input: &mut Parser<'i, 't>) -> Result<Option<i32>, ParseE } impl ToCss for Ranges { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let mut iter = self.0.iter(); if let Some(first) = iter.next() { range_to_css(first, dest)?; @@ -492,14 +502,19 @@ impl ToCss for Ranges { } } -fn range_to_css<W>(range: &Range<Option<i32>>, dest: &mut W) -> fmt::Result -where W: fmt::Write { +fn range_to_css<W>(range: &Range<Option<i32>>, dest: &mut CssWriter<W>) -> fmt::Result +where + W: Write, +{ bound_to_css(range.start, dest)?; dest.write_char(' ')?; bound_to_css(range.end, dest) } -fn bound_to_css<W>(range: Option<i32>, dest: &mut W) -> fmt::Result where W: fmt::Write { +fn bound_to_css<W>(range: Option<i32>, dest: &mut CssWriter<W>) -> fmt::Result +where + W: Write, +{ if let Some(finite) = range { finite.to_css(dest) } else { @@ -556,7 +571,10 @@ impl Parse for Symbols { } impl ToCss for Symbols { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let mut iter = self.0.iter(); let first = iter.next().expect("expected at least one symbol"); first.to_css(dest)?; diff --git a/components/style/custom_properties.rs b/components/style/custom_properties.rs index 86aa135a0b8..0aa43109a18 100644 --- a/components/style/custom_properties.rs +++ b/components/style/custom_properties.rs @@ -17,9 +17,9 @@ use smallvec::SmallVec; #[allow(unused_imports)] use std::ascii::AsciiExt; use std::borrow::{Borrow, Cow}; use std::cmp; -use std::fmt; +use std::fmt::{self, Write}; use std::hash::Hash; -use style_traits::{ToCss, StyleParseErrorKind, ParseError}; +use style_traits::{CssWriter, ToCss, StyleParseErrorKind, ParseError}; /// A custom property name is just an `Atom`. /// @@ -53,8 +53,9 @@ pub struct VariableValue { } impl ToCss for SpecifiedValue { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { dest.write_str(&self.css) } diff --git a/components/style/dom.rs b/components/style/dom.rs index bfa0b6078ac..88cd7a82829 100644 --- a/components/style/dom.rs +++ b/components/style/dom.rs @@ -680,7 +680,7 @@ pub trait TElement /// Whether we should skip any root- or item-based display property /// blockification on this element. (This function exists so that Gecko /// native anonymous content can opt out of this style fixup.) - fn skip_root_and_item_based_display_fixup(&self) -> bool; + fn skip_item_display_fixup(&self) -> bool; /// Sets selector flags, which indicate what kinds of selectors may have /// matched on this element and therefore what kind of work may need to diff --git a/components/style/font_face.rs b/components/style/font_face.rs index 80c32a552e7..1eae14e4a3a 100644 --- a/components/style/font_face.rs +++ b/components/style/font_face.rs @@ -20,8 +20,10 @@ use parser::{ParserContext, ParserErrorContext, Parse}; use properties::longhands::font_language_override; use selectors::parser::SelectorParseErrorKind; use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; -use style_traits::{Comma, OneOrMoreSeparated, ParseError, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use str::CssStringWriter; +use style_traits::{Comma, CssWriter, OneOrMoreSeparated, ParseError}; +use style_traits::{StyleParseErrorKind, ToCss}; use values::computed::font::FamilyName; use values::specified::url::SpecifiedUrl; @@ -54,8 +56,9 @@ pub struct UrlSource { } impl ToCss for UrlSource { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { self.url.to_css(dest) } @@ -272,13 +275,12 @@ macro_rules! font_face_descriptors_common { impl ToCssWithGuard for FontFaceRuleData { // Serialization of FontFaceRule is not specced. - fn to_css<W>(&self, _guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, _guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@font-face {\n")?; $( if let Some(ref value) = self.$ident { dest.write_str(concat!(" ", $name, ": "))?; - ToCss::to_css(value, dest)?; + ToCss::to_css(value, &mut CssWriter::new(dest))?; dest.write_str(";\n")?; } )* diff --git a/components/style/gecko/generated/atom_macro.rs b/components/style/gecko/generated/atom_macro.rs index ba9eda4c208..e620ce3c4c9 100644 --- a/components/style/gecko/generated/atom_macro.rs +++ b/components/style/gecko/generated/atom_macro.rs @@ -5178,8 +5178,6 @@ cfg_if! { pub static nsCSSAnonBoxes_mozTreeCellText: *mut nsICSSAnonBoxPseudo; #[link_name = "_ZN14nsCSSAnonBoxes15mozTreeCheckboxE"] pub static nsCSSAnonBoxes_mozTreeCheckbox: *mut nsICSSAnonBoxPseudo; - #[link_name = "_ZN14nsCSSAnonBoxes20mozTreeProgressmeterE"] - pub static nsCSSAnonBoxes_mozTreeProgressmeter: *mut nsICSSAnonBoxPseudo; #[link_name = "_ZN14nsCSSAnonBoxes19mozTreeDropFeedbackE"] pub static nsCSSAnonBoxes_mozTreeDropFeedback: *mut nsICSSAnonBoxPseudo; #[link_name = "_ZN14nsCSSAnonBoxes21mozSVGMarkerAnonChildE"] @@ -10351,8 +10349,6 @@ cfg_if! { pub static nsCSSAnonBoxes_mozTreeCellText: *mut nsICSSAnonBoxPseudo; #[link_name = "?mozTreeCheckbox@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] pub static nsCSSAnonBoxes_mozTreeCheckbox: *mut nsICSSAnonBoxPseudo; - #[link_name = "?mozTreeProgressmeter@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] - pub static nsCSSAnonBoxes_mozTreeProgressmeter: *mut nsICSSAnonBoxPseudo; #[link_name = "?mozTreeDropFeedback@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] pub static nsCSSAnonBoxes_mozTreeDropFeedback: *mut nsICSSAnonBoxPseudo; #[link_name = "?mozSVGMarkerAnonChild@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] @@ -15524,8 +15520,6 @@ cfg_if! { pub static nsCSSAnonBoxes_mozTreeCellText: *mut nsICSSAnonBoxPseudo; #[link_name = "\x01?mozTreeCheckbox@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozTreeCheckbox: *mut nsICSSAnonBoxPseudo; - #[link_name = "\x01?mozTreeProgressmeter@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] - pub static nsCSSAnonBoxes_mozTreeProgressmeter: *mut nsICSSAnonBoxPseudo; #[link_name = "\x01?mozTreeDropFeedback@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] pub static nsCSSAnonBoxes_mozTreeDropFeedback: *mut nsICSSAnonBoxPseudo; #[link_name = "\x01?mozSVGMarkerAnonChild@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] @@ -20700,8 +20694,6 @@ macro_rules! atom { {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozTreeCellText as *mut _) } }}; (":-moz-tree-checkbox") => {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozTreeCheckbox as *mut _) } }}; -(":-moz-tree-progressmeter") => - {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozTreeProgressmeter as *mut _) } }}; (":-moz-tree-drop-feedback") => {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozTreeDropFeedback as *mut _) } }}; (":-moz-svg-marker-anon-child") => diff --git a/components/style/gecko/generated/bindings.rs b/components/style/gecko/generated/bindings.rs index 301aba806f5..ff7248e166c 100644 --- a/components/style/gecko/generated/bindings.rs +++ b/components/style/gecko/generated/bindings.rs @@ -426,1173 +426,2864 @@ enum RawServoRuleNodeVoid { } pub struct RawServoRuleNode(RawServoRuleNodeVoid); extern "C" { - pub fn Gecko_EnsureTArrayCapacity ( aArray : * mut :: std :: os :: raw :: c_void , aCapacity : usize , aElementSize : usize , ) ; -} extern "C" { - pub fn Gecko_ClearPODTArray ( aArray : * mut :: std :: os :: raw :: c_void , aElementSize : usize , aElementAlign : usize , ) ; -} extern "C" { - pub fn Servo_CssRules_AddRef ( ptr : ServoCssRulesBorrowed , ) ; -} extern "C" { - pub fn Servo_CssRules_Release ( ptr : ServoCssRulesBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleSheetContents_AddRef ( ptr : RawServoStyleSheetContentsBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleSheetContents_Release ( ptr : RawServoStyleSheetContentsBorrowed , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_AddRef ( ptr : RawServoDeclarationBlockBorrowed , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_Release ( ptr : RawServoDeclarationBlockBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleRule_AddRef ( ptr : RawServoStyleRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleRule_Release ( ptr : RawServoStyleRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_ImportRule_AddRef ( ptr : RawServoImportRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_ImportRule_Release ( ptr : RawServoImportRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_AnimationValue_AddRef ( ptr : RawServoAnimationValueBorrowed , ) ; -} extern "C" { - pub fn Servo_AnimationValue_Release ( ptr : RawServoAnimationValueBorrowed , ) ; -} extern "C" { - pub fn Servo_Keyframe_AddRef ( ptr : RawServoKeyframeBorrowed , ) ; -} extern "C" { - pub fn Servo_Keyframe_Release ( ptr : RawServoKeyframeBorrowed , ) ; -} extern "C" { - pub fn Servo_KeyframesRule_AddRef ( ptr : RawServoKeyframesRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_KeyframesRule_Release ( ptr : RawServoKeyframesRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_MediaList_AddRef ( ptr : RawServoMediaListBorrowed , ) ; -} extern "C" { - pub fn Servo_MediaList_Release ( ptr : RawServoMediaListBorrowed , ) ; -} extern "C" { - pub fn Servo_MediaRule_AddRef ( ptr : RawServoMediaRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_MediaRule_Release ( ptr : RawServoMediaRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_NamespaceRule_AddRef ( ptr : RawServoNamespaceRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_NamespaceRule_Release ( ptr : RawServoNamespaceRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_PageRule_AddRef ( ptr : RawServoPageRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_PageRule_Release ( ptr : RawServoPageRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_SupportsRule_AddRef ( ptr : RawServoSupportsRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_SupportsRule_Release ( ptr : RawServoSupportsRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_DocumentRule_AddRef ( ptr : RawServoDocumentRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_DocumentRule_Release ( ptr : RawServoDocumentRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_FontFeatureValuesRule_AddRef ( ptr : RawServoFontFeatureValuesRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_FontFeatureValuesRule_Release ( ptr : RawServoFontFeatureValuesRuleBorrowed , ) ; -} extern "C" { - pub fn Servo_RuleNode_AddRef ( ptr : RawServoRuleNodeBorrowed , ) ; -} extern "C" { - pub fn Servo_RuleNode_Release ( ptr : RawServoRuleNodeBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleSet_Drop ( ptr : RawServoStyleSetOwned , ) ; -} extern "C" { - pub fn Servo_SelectorList_Drop ( ptr : RawServoSelectorListOwned , ) ; -} extern "C" { - pub fn Servo_SourceSizeList_Drop ( ptr : RawServoSourceSizeListOwned , ) ; -} extern "C" { - pub fn Gecko_RecordTraversalStatistics ( total : u32 , parallel : u32 , total_t : u32 , parallel_t : u32 , total_s : u32 , parallel_s : u32 , ) ; -} extern "C" { - pub fn Gecko_IsSignificantChild ( node : RawGeckoNodeBorrowed , text_is_significant : bool , whitespace_is_significant : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_GetLastChild ( node : RawGeckoNodeBorrowed , ) -> RawGeckoNodeBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetFlattenedTreeParentNode ( node : RawGeckoNodeBorrowed , ) -> RawGeckoNodeBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetBeforeOrAfterPseudo ( element : RawGeckoElementBorrowed , is_before : bool , ) -> RawGeckoElementBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetAnonymousContentForElement ( element : RawGeckoElementBorrowed , ) -> * mut nsTArray < * mut nsIContent > ; -} extern "C" { - pub fn Gecko_DestroyAnonymousContentList ( anon_content : * mut nsTArray < * mut nsIContent > , ) ; -} extern "C" { - pub fn Gecko_ServoStyleContext_Init ( context : * mut ServoStyleContext , parent_context : ServoStyleContextBorrowedOrNull , pres_context : RawGeckoPresContextBorrowed , values : ServoComputedDataBorrowed , pseudo_type : CSSPseudoElementType , pseudo_tag : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_ServoStyleContext_Destroy ( context : * mut ServoStyleContext , ) ; -} extern "C" { - pub fn Gecko_ConstructStyleChildrenIterator ( aElement : RawGeckoElementBorrowed , aIterator : RawGeckoStyleChildrenIteratorBorrowedMut , ) ; -} extern "C" { - pub fn Gecko_DestroyStyleChildrenIterator ( aIterator : RawGeckoStyleChildrenIteratorBorrowedMut , ) ; -} extern "C" { - pub fn Gecko_GetNextStyleChild ( it : RawGeckoStyleChildrenIteratorBorrowedMut , ) -> RawGeckoNodeBorrowedOrNull ; -} extern "C" { - pub fn Gecko_LoadStyleSheet ( loader : * mut Loader , parent : * mut ServoStyleSheet , reusable_sheets : * mut LoaderReusableStyleSheets , base_url_data : * mut RawGeckoURLExtraData , url_bytes : * const u8 , url_length : u32 , media_list : RawServoMediaListStrong , ) -> * mut ServoStyleSheet ; -} extern "C" { - pub fn Gecko_ElementState ( element : RawGeckoElementBorrowed , ) -> u64 ; -} extern "C" { - pub fn Gecko_IsRootElement ( element : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Gecko_MatchesElement ( type_ : CSSPseudoClassType , element : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Gecko_MatchLang ( element : RawGeckoElementBorrowed , override_lang : * mut nsAtom , has_override_lang : bool , value : * const u16 , ) -> bool ; -} extern "C" { - pub fn Gecko_GetXMLLangValue ( element : RawGeckoElementBorrowed , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_GetDocumentLWTheme ( aDocument : * const nsIDocument , ) -> nsIDocument_DocumentTheme ; -} extern "C" { - pub fn Gecko_AtomAttrValue ( element : RawGeckoElementBorrowed , attribute : * mut nsAtom , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_LangValue ( element : RawGeckoElementBorrowed , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_HasAttr ( element : RawGeckoElementBorrowed , ns : * mut nsAtom , name : * mut nsAtom , ) -> bool ; -} extern "C" { - pub fn Gecko_AttrEquals ( element : RawGeckoElementBorrowed , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignoreCase : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_AttrDashEquals ( element : RawGeckoElementBorrowed , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_AttrIncludes ( element : RawGeckoElementBorrowed , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_AttrHasSubstring ( element : RawGeckoElementBorrowed , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_AttrHasPrefix ( element : RawGeckoElementBorrowed , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_AttrHasSuffix ( element : RawGeckoElementBorrowed , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_ClassOrClassList ( element : RawGeckoElementBorrowed , class_ : * mut * mut nsAtom , classList : * mut * mut * mut nsAtom , ) -> u32 ; -} extern "C" { - pub fn Gecko_SnapshotAtomAttrValue ( element : * const ServoElementSnapshot , attribute : * mut nsAtom , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_SnapshotLangValue ( element : * const ServoElementSnapshot , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_SnapshotHasAttr ( element : * const ServoElementSnapshot , ns : * mut nsAtom , name : * mut nsAtom , ) -> bool ; -} extern "C" { - pub fn Gecko_SnapshotAttrEquals ( element : * const ServoElementSnapshot , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignoreCase : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_SnapshotAttrDashEquals ( element : * const ServoElementSnapshot , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_SnapshotAttrIncludes ( element : * const ServoElementSnapshot , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_SnapshotAttrHasSubstring ( element : * const ServoElementSnapshot , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_SnapshotAttrHasPrefix ( element : * const ServoElementSnapshot , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_SnapshotAttrHasSuffix ( element : * const ServoElementSnapshot , ns : * mut nsAtom , name : * mut nsAtom , str : * mut nsAtom , ignore_case : bool , ) -> bool ; -} extern "C" { - pub fn Gecko_SnapshotClassOrClassList ( element : * const ServoElementSnapshot , class_ : * mut * mut nsAtom , classList : * mut * mut * mut nsAtom , ) -> u32 ; -} extern "C" { - pub fn Gecko_GetStyleAttrDeclarationBlock ( element : RawGeckoElementBorrowed , ) -> RawServoDeclarationBlockStrongBorrowedOrNull ; -} extern "C" { - pub fn Gecko_UnsetDirtyStyleAttr ( element : RawGeckoElementBorrowed , ) ; -} extern "C" { - pub fn Gecko_GetHTMLPresentationAttrDeclarationBlock ( element : RawGeckoElementBorrowed , ) -> RawServoDeclarationBlockStrongBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetExtraContentStyleDeclarations ( element : RawGeckoElementBorrowed , ) -> RawServoDeclarationBlockStrongBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetUnvisitedLinkAttrDeclarationBlock ( element : RawGeckoElementBorrowed , ) -> RawServoDeclarationBlockStrongBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetVisitedLinkAttrDeclarationBlock ( element : RawGeckoElementBorrowed , ) -> RawServoDeclarationBlockStrongBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetActiveLinkAttrDeclarationBlock ( element : RawGeckoElementBorrowed , ) -> RawServoDeclarationBlockStrongBorrowedOrNull ; -} extern "C" { - pub fn Gecko_IsPrivateBrowsingEnabled ( aDoc : * const nsIDocument , ) -> bool ; -} extern "C" { - pub fn Gecko_GetAnimationRule ( aElementOrPseudo : RawGeckoElementBorrowed , aCascadeLevel : EffectCompositor_CascadeLevel , aAnimationValues : RawServoAnimationValueMapBorrowedMut , ) -> bool ; -} extern "C" { - pub fn Gecko_StyleAnimationsEquals ( arg1 : RawGeckoStyleAnimationListBorrowed , arg2 : RawGeckoStyleAnimationListBorrowed , ) -> bool ; -} extern "C" { - pub fn Gecko_CopyAnimationNames ( aDest : RawGeckoStyleAnimationListBorrowedMut , aSrc : RawGeckoStyleAnimationListBorrowed , ) ; -} extern "C" { - pub fn Gecko_SetAnimationName ( aStyleAnimation : * mut StyleAnimation , aAtom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_UpdateAnimations ( aElementOrPseudo : RawGeckoElementBorrowed , aOldComputedValues : ServoStyleContextBorrowedOrNull , aComputedValues : ServoStyleContextBorrowedOrNull , aTasks : UpdateAnimationsTasks , ) ; -} extern "C" { - pub fn Gecko_ElementHasAnimations ( aElementOrPseudo : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Gecko_ElementHasCSSAnimations ( aElementOrPseudo : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Gecko_ElementHasCSSTransitions ( aElementOrPseudo : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Gecko_ElementTransitions_Length ( aElementOrPseudo : RawGeckoElementBorrowed , ) -> usize ; -} extern "C" { - pub fn Gecko_ElementTransitions_PropertyAt ( aElementOrPseudo : RawGeckoElementBorrowed , aIndex : usize , ) -> nsCSSPropertyID ; -} extern "C" { - pub fn Gecko_ElementTransitions_EndValueAt ( aElementOrPseudo : RawGeckoElementBorrowed , aIndex : usize , ) -> RawServoAnimationValueBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetProgressFromComputedTiming ( aComputedTiming : RawGeckoComputedTimingBorrowed , ) -> f64 ; -} extern "C" { - pub fn Gecko_GetPositionInSegment ( aSegment : RawGeckoAnimationPropertySegmentBorrowed , aProgress : f64 , aBeforeFlag : ComputedTimingFunction_BeforeFlag , ) -> f64 ; -} extern "C" { - pub fn Gecko_AnimationGetBaseStyle ( aBaseStyles : RawServoAnimationValueTableBorrowed , aProperty : nsCSSPropertyID , ) -> RawServoAnimationValueBorrowedOrNull ; -} extern "C" { - pub fn Gecko_StyleTransition_SetUnsupportedProperty ( aTransition : * mut StyleTransition , aAtom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_Atomize ( aString : * const :: std :: os :: raw :: c_char , aLength : u32 , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_Atomize16 ( aString : * const nsAString , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_AddRefAtom ( aAtom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_ReleaseAtom ( aAtom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_GetAtomAsUTF16 ( aAtom : * mut nsAtom , aLength : * mut u32 , ) -> * const u16 ; -} extern "C" { - pub fn Gecko_AtomEqualsUTF8 ( aAtom : * mut nsAtom , aString : * const :: std :: os :: raw :: c_char , aLength : u32 , ) -> bool ; -} extern "C" { - pub fn Gecko_AtomEqualsUTF8IgnoreCase ( aAtom : * mut nsAtom , aString : * const :: std :: os :: raw :: c_char , aLength : u32 , ) -> bool ; -} extern "C" { - pub fn Gecko_EnsureMozBorderColors ( aBorder : * mut nsStyleBorder , ) ; -} extern "C" { - pub fn Gecko_CopyFontFamilyFrom ( dst : * mut nsFont , src : * const nsFont , ) ; -} extern "C" { - pub fn Gecko_nsTArray_FontFamilyName_AppendNamed ( aNames : * mut nsTArray < FontFamilyName > , aName : * mut nsAtom , aQuoted : bool , ) ; -} extern "C" { - pub fn Gecko_nsTArray_FontFamilyName_AppendGeneric ( aNames : * mut nsTArray < FontFamilyName > , aType : FontFamilyType , ) ; -} extern "C" { - pub fn Gecko_SharedFontList_Create ( ) -> * mut SharedFontList ; -} extern "C" { - pub fn Gecko_SharedFontList_SizeOfIncludingThis ( fontlist : * mut SharedFontList , ) -> usize ; -} extern "C" { - pub fn Gecko_SharedFontList_SizeOfIncludingThisIfUnshared ( fontlist : * mut SharedFontList , ) -> usize ; -} extern "C" { - pub fn Gecko_AddRefSharedFontListArbitraryThread ( aPtr : * mut SharedFontList , ) ; -} extern "C" { - pub fn Gecko_ReleaseSharedFontListArbitraryThread ( aPtr : * mut SharedFontList , ) ; -} extern "C" { - pub fn Gecko_nsFont_InitSystem ( dst : * mut nsFont , font_id : i32 , font : * const nsStyleFont , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_nsFont_Destroy ( dst : * mut nsFont , ) ; -} extern "C" { - pub fn Gecko_ConstructFontFeatureValueSet ( ) -> * mut gfxFontFeatureValueSet ; -} extern "C" { - pub fn Gecko_AppendFeatureValueHashEntry ( value_set : * mut gfxFontFeatureValueSet , family : * mut nsAtom , alternate : u32 , name : * mut nsAtom , ) -> * mut nsTArray < :: std :: os :: raw :: c_uint > ; -} extern "C" { - pub fn Gecko_nsFont_SetFontFeatureValuesLookup ( font : * mut nsFont , pres_context : * const RawGeckoPresContext , ) ; -} extern "C" { - pub fn Gecko_nsFont_ResetFontFeatureValuesLookup ( font : * mut nsFont , ) ; -} extern "C" { - pub fn Gecko_ClearAlternateValues ( font : * mut nsFont , length : usize , ) ; -} extern "C" { - pub fn Gecko_AppendAlternateValues ( font : * mut nsFont , alternate_name : u32 , atom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_CopyAlternateValuesFrom ( dest : * mut nsFont , src : * const nsFont , ) ; -} extern "C" { - pub fn Gecko_SetImageOrientation ( aVisibility : * mut nsStyleVisibility , aOrientation : u8 , aFlip : bool , ) ; -} extern "C" { - pub fn Gecko_SetImageOrientationAsFromImage ( aVisibility : * mut nsStyleVisibility , ) ; -} extern "C" { - pub fn Gecko_CopyImageOrientationFrom ( aDst : * mut nsStyleVisibility , aSrc : * const nsStyleVisibility , ) ; -} extern "C" { - pub fn Gecko_SetCounterStyleToName ( ptr : * mut CounterStylePtr , name : * mut nsAtom , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_SetCounterStyleToSymbols ( ptr : * mut CounterStylePtr , symbols_type : u8 , symbols : * const * const nsACString , symbols_count : u32 , ) ; -} extern "C" { - pub fn Gecko_SetCounterStyleToString ( ptr : * mut CounterStylePtr , symbol : * const nsACString , ) ; -} extern "C" { - pub fn Gecko_CopyCounterStyle ( dst : * mut CounterStylePtr , src : * const CounterStylePtr , ) ; -} extern "C" { - pub fn Gecko_CounterStyle_GetName ( ptr : * const CounterStylePtr , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_CounterStyle_GetAnonymous ( ptr : * const CounterStylePtr , ) -> * const AnonymousCounterStyle ; -} extern "C" { - pub fn Gecko_SetNullImageValue ( image : * mut nsStyleImage , ) ; -} extern "C" { - pub fn Gecko_SetGradientImageValue ( image : * mut nsStyleImage , gradient : * mut nsStyleGradient , ) ; -} extern "C" { - pub fn Gecko_AddRefImageValueArbitraryThread ( aPtr : * mut ImageValue , ) ; -} extern "C" { - pub fn Gecko_ReleaseImageValueArbitraryThread ( aPtr : * mut ImageValue , ) ; -} extern "C" { - pub fn Gecko_ImageValue_Create ( aURI : ServoBundledURI , aURIString : ServoRawOffsetArc < RustString > , ) -> * mut ImageValue ; -} extern "C" { - pub fn Gecko_ImageValue_SizeOfIncludingThis ( aImageValue : * mut ImageValue , ) -> usize ; -} extern "C" { - pub fn Gecko_SetLayerImageImageValue ( image : * mut nsStyleImage , aImageValue : * mut ImageValue , ) ; -} extern "C" { - pub fn Gecko_SetImageElement ( image : * mut nsStyleImage , atom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_CopyImageValueFrom ( image : * mut nsStyleImage , other : * const nsStyleImage , ) ; -} extern "C" { - pub fn Gecko_InitializeImageCropRect ( image : * mut nsStyleImage , ) ; -} extern "C" { - pub fn Gecko_CreateGradient ( shape : u8 , size : u8 , repeating : bool , legacy_syntax : bool , moz_legacy_syntax : bool , stops : u32 , ) -> * mut nsStyleGradient ; -} extern "C" { - pub fn Gecko_GetURLValue ( image : * const nsStyleImage , ) -> * const URLValueData ; -} extern "C" { - pub fn Gecko_GetImageElement ( image : * const nsStyleImage , ) -> * mut nsAtom ; -} extern "C" { - pub fn Gecko_GetGradientImageValue ( image : * const nsStyleImage , ) -> * const nsStyleGradient ; -} extern "C" { - pub fn Gecko_SetListStyleImageNone ( style_struct : * mut nsStyleList , ) ; -} extern "C" { - pub fn Gecko_SetListStyleImageImageValue ( style_struct : * mut nsStyleList , aImageValue : * mut ImageValue , ) ; -} extern "C" { - pub fn Gecko_CopyListStyleImageFrom ( dest : * mut nsStyleList , src : * const nsStyleList , ) ; -} extern "C" { - pub fn Gecko_SetCursorArrayLength ( ui : * mut nsStyleUserInterface , len : usize , ) ; -} extern "C" { - pub fn Gecko_SetCursorImageValue ( aCursor : * mut nsCursorImage , aImageValue : * mut ImageValue , ) ; -} extern "C" { - pub fn Gecko_CopyCursorArrayFrom ( dest : * mut nsStyleUserInterface , src : * const nsStyleUserInterface , ) ; -} extern "C" { - pub fn Gecko_SetContentDataImageValue ( aList : * mut nsStyleContentData , aImageValue : * mut ImageValue , ) ; -} extern "C" { - pub fn Gecko_SetCounterFunction ( content_data : * mut nsStyleContentData , type_ : nsStyleContentType , ) -> * mut nsStyleContentData_CounterFunction ; -} extern "C" { - pub fn Gecko_SetNodeFlags ( node : RawGeckoNodeBorrowed , flags : u32 , ) ; -} extern "C" { - pub fn Gecko_UnsetNodeFlags ( node : RawGeckoNodeBorrowed , flags : u32 , ) ; -} extern "C" { - pub fn Gecko_NoteDirtyElement ( element : RawGeckoElementBorrowed , ) ; -} extern "C" { - pub fn Gecko_NoteDirtySubtreeForInvalidation ( element : RawGeckoElementBorrowed , ) ; -} extern "C" { - pub fn Gecko_NoteAnimationOnlyDirtyElement ( element : RawGeckoElementBorrowed , ) ; -} extern "C" { - pub fn Gecko_GetImplementedPseudo ( element : RawGeckoElementBorrowed , ) -> CSSPseudoElementType ; -} extern "C" { - pub fn Gecko_CalcStyleDifference ( old_style : ServoStyleContextBorrowed , new_style : ServoStyleContextBorrowed , any_style_changed : * mut bool , reset_only_changed : * mut bool , ) -> u32 ; -} extern "C" { - pub fn Gecko_GetElementSnapshot ( table : * const ServoElementSnapshotTable , element : RawGeckoElementBorrowed , ) -> * const ServoElementSnapshot ; -} extern "C" { - pub fn Gecko_HaveSeenPtr ( table : * mut SeenPtrs , ptr : * const :: std :: os :: raw :: c_void , ) -> bool ; -} extern "C" { - pub fn Gecko_ResizeTArrayForStrings ( array : * mut nsTArray <nsStringRepr> , length : u32 , ) ; -} extern "C" { - pub fn Gecko_SetStyleGridTemplate ( grid_template : * mut UniquePtr < nsStyleGridTemplate > , value : * mut nsStyleGridTemplate , ) ; -} extern "C" { - pub fn Gecko_CreateStyleGridTemplate ( track_sizes : u32 , name_size : u32 , ) -> * mut nsStyleGridTemplate ; -} extern "C" { - pub fn Gecko_CopyStyleGridTemplateValues ( grid_template : * mut UniquePtr < nsStyleGridTemplate > , other : * const nsStyleGridTemplate , ) ; -} extern "C" { - pub fn Gecko_NewGridTemplateAreasValue ( areas : u32 , templates : u32 , columns : u32 , ) -> * mut GridTemplateAreasValue ; -} extern "C" { - pub fn Gecko_AddRefGridTemplateAreasValueArbitraryThread ( aPtr : * mut GridTemplateAreasValue , ) ; -} extern "C" { - pub fn Gecko_ReleaseGridTemplateAreasValueArbitraryThread ( aPtr : * mut GridTemplateAreasValue , ) ; -} extern "C" { - pub fn Gecko_ClearAndResizeStyleContents ( content : * mut nsStyleContent , how_many : u32 , ) ; -} extern "C" { - pub fn Gecko_ClearAndResizeCounterIncrements ( content : * mut nsStyleContent , how_many : u32 , ) ; -} extern "C" { - pub fn Gecko_ClearAndResizeCounterResets ( content : * mut nsStyleContent , how_many : u32 , ) ; -} extern "C" { - pub fn Gecko_CopyStyleContentsFrom ( content : * mut nsStyleContent , other : * const nsStyleContent , ) ; -} extern "C" { - pub fn Gecko_CopyCounterResetsFrom ( content : * mut nsStyleContent , other : * const nsStyleContent , ) ; -} extern "C" { - pub fn Gecko_CopyCounterIncrementsFrom ( content : * mut nsStyleContent , other : * const nsStyleContent , ) ; -} extern "C" { - pub fn Gecko_EnsureImageLayersLength ( layers : * mut nsStyleImageLayers , len : usize , layer_type : nsStyleImageLayers_LayerType , ) ; -} extern "C" { - pub fn Gecko_EnsureStyleAnimationArrayLength ( array : * mut :: std :: os :: raw :: c_void , len : usize , ) ; -} extern "C" { - pub fn Gecko_EnsureStyleTransitionArrayLength ( array : * mut :: std :: os :: raw :: c_void , len : usize , ) ; -} extern "C" { - pub fn Gecko_ClearWillChange ( display : * mut nsStyleDisplay , length : usize , ) ; -} extern "C" { - pub fn Gecko_AppendWillChange ( display : * mut nsStyleDisplay , atom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_CopyWillChangeFrom ( dest : * mut nsStyleDisplay , src : * mut nsStyleDisplay , ) ; -} extern "C" { - pub fn Gecko_GetOrCreateKeyframeAtStart ( keyframes : RawGeckoKeyframeListBorrowedMut , offset : f32 , timingFunction : * const nsTimingFunction , ) -> * mut Keyframe ; -} extern "C" { - pub fn Gecko_GetOrCreateInitialKeyframe ( keyframes : RawGeckoKeyframeListBorrowedMut , timingFunction : * const nsTimingFunction , ) -> * mut Keyframe ; -} extern "C" { - pub fn Gecko_GetOrCreateFinalKeyframe ( keyframes : RawGeckoKeyframeListBorrowedMut , timingFunction : * const nsTimingFunction , ) -> * mut Keyframe ; -} extern "C" { - pub fn Gecko_AppendPropertyValuePair ( aProperties : RawGeckoPropertyValuePairListBorrowedMut , aProperty : nsCSSPropertyID , ) -> * mut PropertyValuePair ; -} extern "C" { - pub fn Gecko_ResetStyleCoord ( unit : * mut nsStyleUnit , value : * mut nsStyleUnion , ) ; -} extern "C" { - pub fn Gecko_SetStyleCoordCalcValue ( unit : * mut nsStyleUnit , value : * mut nsStyleUnion , calc : nsStyleCoord_CalcValue , ) ; -} extern "C" { - pub fn Gecko_CopyShapeSourceFrom ( dst : * mut StyleShapeSource , src : * const StyleShapeSource , ) ; -} extern "C" { - pub fn Gecko_DestroyShapeSource ( shape : * mut StyleShapeSource , ) ; -} extern "C" { - pub fn Gecko_NewBasicShape ( shape : * mut StyleShapeSource , type_ : StyleBasicShapeType , ) ; -} extern "C" { - pub fn Gecko_NewShapeImage ( shape : * mut StyleShapeSource , ) ; -} extern "C" { - pub fn Gecko_StyleShapeSource_SetURLValue ( shape : * mut StyleShapeSource , uri : ServoBundledURI , ) ; -} extern "C" { - pub fn Gecko_ResetFilters ( effects : * mut nsStyleEffects , new_len : usize , ) ; -} extern "C" { - pub fn Gecko_CopyFiltersFrom ( aSrc : * mut nsStyleEffects , aDest : * mut nsStyleEffects , ) ; -} extern "C" { - pub fn Gecko_nsStyleFilter_SetURLValue ( effects : * mut nsStyleFilter , uri : ServoBundledURI , ) ; -} extern "C" { - pub fn Gecko_nsStyleSVGPaint_CopyFrom ( dest : * mut nsStyleSVGPaint , src : * const nsStyleSVGPaint , ) ; -} extern "C" { - pub fn Gecko_nsStyleSVGPaint_SetURLValue ( paint : * mut nsStyleSVGPaint , uri : ServoBundledURI , ) ; -} extern "C" { - pub fn Gecko_nsStyleSVGPaint_Reset ( paint : * mut nsStyleSVGPaint , ) ; -} extern "C" { - pub fn Gecko_nsStyleSVG_SetDashArrayLength ( svg : * mut nsStyleSVG , len : u32 , ) ; -} extern "C" { - pub fn Gecko_nsStyleSVG_CopyDashArray ( dst : * mut nsStyleSVG , src : * const nsStyleSVG , ) ; -} extern "C" { - pub fn Gecko_nsStyleSVG_SetContextPropertiesLength ( svg : * mut nsStyleSVG , len : u32 , ) ; -} extern "C" { - pub fn Gecko_nsStyleSVG_CopyContextProperties ( dst : * mut nsStyleSVG , src : * const nsStyleSVG , ) ; -} extern "C" { - pub fn Gecko_NewURLValue ( uri : ServoBundledURI , ) -> * mut URLValue ; -} extern "C" { - pub fn Gecko_AddRefCSSURLValueArbitraryThread ( aPtr : * mut URLValue , ) ; -} extern "C" { - pub fn Gecko_ReleaseCSSURLValueArbitraryThread ( aPtr : * mut URLValue , ) ; -} extern "C" { - pub fn Gecko_AddRefURLExtraDataArbitraryThread ( aPtr : * mut RawGeckoURLExtraData , ) ; -} extern "C" { - pub fn Gecko_ReleaseURLExtraDataArbitraryThread ( aPtr : * mut RawGeckoURLExtraData , ) ; -} extern "C" { - pub fn Gecko_FillAllImageLayers ( layers : * mut nsStyleImageLayers , max_len : u32 , ) ; -} extern "C" { - pub fn Gecko_AddRefCalcArbitraryThread ( aPtr : * mut nsStyleCoord_Calc , ) ; -} extern "C" { - pub fn Gecko_ReleaseCalcArbitraryThread ( aPtr : * mut nsStyleCoord_Calc , ) ; -} extern "C" { - pub fn Gecko_NewCSSShadowArray ( len : u32 , ) -> * mut nsCSSShadowArray ; -} extern "C" { - pub fn Gecko_AddRefCSSShadowArrayArbitraryThread ( aPtr : * mut nsCSSShadowArray , ) ; -} extern "C" { - pub fn Gecko_ReleaseCSSShadowArrayArbitraryThread ( aPtr : * mut nsCSSShadowArray , ) ; -} extern "C" { - pub fn Gecko_NewStyleQuoteValues ( len : u32 , ) -> * mut nsStyleQuoteValues ; -} extern "C" { - pub fn Gecko_AddRefQuoteValuesArbitraryThread ( aPtr : * mut nsStyleQuoteValues , ) ; -} extern "C" { - pub fn Gecko_ReleaseQuoteValuesArbitraryThread ( aPtr : * mut nsStyleQuoteValues , ) ; -} extern "C" { - pub fn Gecko_NewCSSValueSharedList ( len : u32 , ) -> * mut nsCSSValueSharedList ; -} extern "C" { - pub fn Gecko_NewNoneTransform ( ) -> * mut nsCSSValueSharedList ; -} extern "C" { - pub fn Gecko_CSSValue_GetArrayItem ( css_value : nsCSSValueBorrowedMut , index : i32 , ) -> nsCSSValueBorrowedMut ; -} extern "C" { - pub fn Gecko_CSSValue_GetArrayItemConst ( css_value : nsCSSValueBorrowed , index : i32 , ) -> nsCSSValueBorrowed ; -} extern "C" { - pub fn Gecko_CSSValue_GetKeyword ( aCSSValue : nsCSSValueBorrowed , ) -> nsCSSKeyword ; -} extern "C" { - pub fn Gecko_CSSValue_GetNumber ( css_value : nsCSSValueBorrowed , ) -> f32 ; -} extern "C" { - pub fn Gecko_CSSValue_GetPercentage ( css_value : nsCSSValueBorrowed , ) -> f32 ; -} extern "C" { - pub fn Gecko_CSSValue_GetCalc ( aCSSValue : nsCSSValueBorrowed , ) -> nsStyleCoord_CalcValue ; -} extern "C" { - pub fn Gecko_CSSValue_SetNumber ( css_value : nsCSSValueBorrowedMut , number : f32 , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetKeyword ( css_value : nsCSSValueBorrowedMut , keyword : nsCSSKeyword , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetPercentage ( css_value : nsCSSValueBorrowedMut , percent : f32 , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetPixelLength ( aCSSValue : nsCSSValueBorrowedMut , aLen : f32 , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetCalc ( css_value : nsCSSValueBorrowedMut , calc : nsStyleCoord_CalcValue , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetFunction ( css_value : nsCSSValueBorrowedMut , len : i32 , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetString ( css_value : nsCSSValueBorrowedMut , string : * const u8 , len : u32 , unit : nsCSSUnit , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetStringFromAtom ( css_value : nsCSSValueBorrowedMut , atom : * mut nsAtom , unit : nsCSSUnit , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetAtomIdent ( css_value : nsCSSValueBorrowedMut , atom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetArray ( css_value : nsCSSValueBorrowedMut , len : i32 , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetURL ( css_value : nsCSSValueBorrowedMut , uri : ServoBundledURI , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetInt ( css_value : nsCSSValueBorrowedMut , integer : i32 , unit : nsCSSUnit , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetPair ( css_value : nsCSSValueBorrowedMut , xvalue : nsCSSValueBorrowed , yvalue : nsCSSValueBorrowed , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetList ( css_value : nsCSSValueBorrowedMut , len : u32 , ) ; -} extern "C" { - pub fn Gecko_CSSValue_SetPairList ( css_value : nsCSSValueBorrowedMut , len : u32 , ) ; -} extern "C" { - pub fn Gecko_CSSValue_InitSharedList ( css_value : nsCSSValueBorrowedMut , len : u32 , ) ; -} extern "C" { - pub fn Gecko_CSSValue_Drop ( css_value : nsCSSValueBorrowedMut , ) ; -} extern "C" { - pub fn Gecko_AddRefCSSValueSharedListArbitraryThread ( aPtr : * mut nsCSSValueSharedList , ) ; -} extern "C" { - pub fn Gecko_ReleaseCSSValueSharedListArbitraryThread ( aPtr : * mut nsCSSValueSharedList , ) ; -} extern "C" { - pub fn Gecko_nsStyleFont_SetLang ( font : * mut nsStyleFont , atom : * mut nsAtom , ) ; -} extern "C" { - pub fn Gecko_nsStyleFont_CopyLangFrom ( aFont : * mut nsStyleFont , aSource : * const nsStyleFont , ) ; -} extern "C" { - pub fn Gecko_nsStyleFont_FixupNoneGeneric ( font : * mut nsStyleFont , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_nsStyleFont_PrefillDefaultForGeneric ( font : * mut nsStyleFont , pres_context : RawGeckoPresContextBorrowed , generic_id : u8 , ) ; -} extern "C" { - pub fn Gecko_nsStyleFont_FixupMinFontSize ( font : * mut nsStyleFont , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_GetBaseSize ( lang : * mut nsAtom , ) -> FontSizePrefs ; -} extern "C" { - pub fn Gecko_GetBindingParent ( aElement : RawGeckoElementBorrowed , ) -> RawGeckoElementBorrowedOrNull ; -} extern "C" { - pub fn Gecko_GetXBLBinding ( aElement : RawGeckoElementBorrowed , ) -> RawGeckoXBLBindingBorrowedOrNull ; -} extern "C" { - pub fn Gecko_XBLBinding_GetRawServoStyleSet ( aXBLBinding : RawGeckoXBLBindingBorrowed , ) -> RawServoStyleSetBorrowedOrNull ; -} extern "C" { - pub fn Gecko_XBLBinding_InheritsStyle ( aXBLBinding : RawGeckoXBLBindingBorrowed , ) -> bool ; -} extern "C" { - pub fn Gecko_GetFontMetrics ( pres_context : RawGeckoPresContextBorrowed , is_vertical : bool , font : * const nsStyleFont , font_size : nscoord , use_user_font_set : bool , ) -> GeckoFontMetrics ; -} extern "C" { - pub fn Gecko_GetAppUnitsPerPhysicalInch ( pres_context : RawGeckoPresContextBorrowed , ) -> i32 ; -} extern "C" { - pub fn Gecko_StyleSheet_Clone ( aSheet : * const ServoStyleSheet , aNewParentSheet : * const ServoStyleSheet , ) -> * mut ServoStyleSheet ; -} extern "C" { - pub fn Gecko_StyleSheet_AddRef ( aSheet : * const ServoStyleSheet , ) ; -} extern "C" { - pub fn Gecko_StyleSheet_Release ( aSheet : * const ServoStyleSheet , ) ; -} extern "C" { - pub fn Gecko_LookupCSSKeyword ( string : * const u8 , len : u32 , ) -> nsCSSKeyword ; -} extern "C" { - pub fn Gecko_CSSKeywordString ( keyword : nsCSSKeyword , len : * mut u32 , ) -> * const :: std :: os :: raw :: c_char ; -} extern "C" { - pub fn Gecko_CSSFontFaceRule_Create ( line : u32 , column : u32 , ) -> * mut nsCSSFontFaceRule ; -} extern "C" { - pub fn Gecko_CSSFontFaceRule_Clone ( rule : * const nsCSSFontFaceRule , ) -> * mut nsCSSFontFaceRule ; -} extern "C" { - pub fn Gecko_CSSFontFaceRule_GetCssText ( rule : * const nsCSSFontFaceRule , result : * mut nsAString , ) ; -} extern "C" { - pub fn Gecko_CSSFontFaceRule_AddRef ( aPtr : * mut nsCSSFontFaceRule , ) ; -} extern "C" { - pub fn Gecko_CSSFontFaceRule_Release ( aPtr : * mut nsCSSFontFaceRule , ) ; -} extern "C" { - pub fn Gecko_CSSCounterStyle_Create ( name : * mut nsAtom , ) -> * mut nsCSSCounterStyleRule ; -} extern "C" { - pub fn Gecko_CSSCounterStyle_Clone ( rule : * const nsCSSCounterStyleRule , ) -> * mut nsCSSCounterStyleRule ; -} extern "C" { - pub fn Gecko_CSSCounterStyle_GetCssText ( rule : * const nsCSSCounterStyleRule , result : * mut nsAString , ) ; -} extern "C" { - pub fn Gecko_CSSCounterStyleRule_AddRef ( aPtr : * mut nsCSSCounterStyleRule , ) ; -} extern "C" { - pub fn Gecko_CSSCounterStyleRule_Release ( aPtr : * mut nsCSSCounterStyleRule , ) ; -} extern "C" { - pub fn Gecko_IsDocumentBody ( element : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Gecko_GetLookAndFeelSystemColor ( color_id : i32 , pres_context : RawGeckoPresContextBorrowed , ) -> nscolor ; -} extern "C" { - pub fn Gecko_AddPropertyToSet ( arg1 : nsCSSPropertyIDSetBorrowedMut , arg2 : nsCSSPropertyID , ) ; -} extern "C" { - pub fn Gecko_RegisterNamespace ( ns : * mut nsAtom , ) -> i32 ; -} extern "C" { - pub fn Gecko_ShouldCreateStyleThreadPool ( ) -> bool ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleFont ( ptr : * mut nsStyleFont , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleFont ( ptr : * mut nsStyleFont , other : * const nsStyleFont , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleFont ( ptr : * mut nsStyleFont , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleColor ( ptr : * mut nsStyleColor , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleColor ( ptr : * mut nsStyleColor , other : * const nsStyleColor , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleColor ( ptr : * mut nsStyleColor , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleList ( ptr : * mut nsStyleList , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleList ( ptr : * mut nsStyleList , other : * const nsStyleList , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleList ( ptr : * mut nsStyleList , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleText ( ptr : * mut nsStyleText , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleText ( ptr : * mut nsStyleText , other : * const nsStyleText , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleText ( ptr : * mut nsStyleText , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleVisibility ( ptr : * mut nsStyleVisibility , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleVisibility ( ptr : * mut nsStyleVisibility , other : * const nsStyleVisibility , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleVisibility ( ptr : * mut nsStyleVisibility , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleUserInterface ( ptr : * mut nsStyleUserInterface , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleUserInterface ( ptr : * mut nsStyleUserInterface , other : * const nsStyleUserInterface , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleUserInterface ( ptr : * mut nsStyleUserInterface , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleTableBorder ( ptr : * mut nsStyleTableBorder , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleTableBorder ( ptr : * mut nsStyleTableBorder , other : * const nsStyleTableBorder , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleTableBorder ( ptr : * mut nsStyleTableBorder , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleSVG ( ptr : * mut nsStyleSVG , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleSVG ( ptr : * mut nsStyleSVG , other : * const nsStyleSVG , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleSVG ( ptr : * mut nsStyleSVG , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleVariables ( ptr : * mut nsStyleVariables , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleVariables ( ptr : * mut nsStyleVariables , other : * const nsStyleVariables , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleVariables ( ptr : * mut nsStyleVariables , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleBackground ( ptr : * mut nsStyleBackground , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleBackground ( ptr : * mut nsStyleBackground , other : * const nsStyleBackground , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleBackground ( ptr : * mut nsStyleBackground , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStylePosition ( ptr : * mut nsStylePosition , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStylePosition ( ptr : * mut nsStylePosition , other : * const nsStylePosition , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStylePosition ( ptr : * mut nsStylePosition , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleTextReset ( ptr : * mut nsStyleTextReset , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleTextReset ( ptr : * mut nsStyleTextReset , other : * const nsStyleTextReset , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleTextReset ( ptr : * mut nsStyleTextReset , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleDisplay ( ptr : * mut nsStyleDisplay , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleDisplay ( ptr : * mut nsStyleDisplay , other : * const nsStyleDisplay , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleDisplay ( ptr : * mut nsStyleDisplay , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleContent ( ptr : * mut nsStyleContent , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleContent ( ptr : * mut nsStyleContent , other : * const nsStyleContent , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleContent ( ptr : * mut nsStyleContent , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleUIReset ( ptr : * mut nsStyleUIReset , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleUIReset ( ptr : * mut nsStyleUIReset , other : * const nsStyleUIReset , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleUIReset ( ptr : * mut nsStyleUIReset , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleTable ( ptr : * mut nsStyleTable , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleTable ( ptr : * mut nsStyleTable , other : * const nsStyleTable , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleTable ( ptr : * mut nsStyleTable , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleMargin ( ptr : * mut nsStyleMargin , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleMargin ( ptr : * mut nsStyleMargin , other : * const nsStyleMargin , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleMargin ( ptr : * mut nsStyleMargin , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStylePadding ( ptr : * mut nsStylePadding , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStylePadding ( ptr : * mut nsStylePadding , other : * const nsStylePadding , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStylePadding ( ptr : * mut nsStylePadding , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleBorder ( ptr : * mut nsStyleBorder , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleBorder ( ptr : * mut nsStyleBorder , other : * const nsStyleBorder , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleBorder ( ptr : * mut nsStyleBorder , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleOutline ( ptr : * mut nsStyleOutline , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleOutline ( ptr : * mut nsStyleOutline , other : * const nsStyleOutline , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleOutline ( ptr : * mut nsStyleOutline , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleXUL ( ptr : * mut nsStyleXUL , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleXUL ( ptr : * mut nsStyleXUL , other : * const nsStyleXUL , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleXUL ( ptr : * mut nsStyleXUL , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleSVGReset ( ptr : * mut nsStyleSVGReset , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleSVGReset ( ptr : * mut nsStyleSVGReset , other : * const nsStyleSVGReset , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleSVGReset ( ptr : * mut nsStyleSVGReset , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleColumn ( ptr : * mut nsStyleColumn , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleColumn ( ptr : * mut nsStyleColumn , other : * const nsStyleColumn , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleColumn ( ptr : * mut nsStyleColumn , ) ; -} extern "C" { - pub fn Gecko_Construct_Default_nsStyleEffects ( ptr : * mut nsStyleEffects , pres_context : RawGeckoPresContextBorrowed , ) ; -} extern "C" { - pub fn Gecko_CopyConstruct_nsStyleEffects ( ptr : * mut nsStyleEffects , other : * const nsStyleEffects , ) ; -} extern "C" { - pub fn Gecko_Destroy_nsStyleEffects ( ptr : * mut nsStyleEffects , ) ; -} extern "C" { - pub fn Gecko_RegisterProfilerThread ( name : * const :: std :: os :: raw :: c_char , ) ; -} extern "C" { - pub fn Gecko_UnregisterProfilerThread ( ) ; -} extern "C" { - pub fn Gecko_DocumentRule_UseForPresentation ( arg1 : RawGeckoPresContextBorrowed , aPattern : * const nsACString , aURLMatchingFunction : URLMatchingFunction , ) -> bool ; -} extern "C" { - pub fn Gecko_SetJemallocThreadLocalArena ( enabled : bool , ) ; -} extern "C" { - pub fn Gecko_AddBufferToCrashReport ( addr : * const :: std :: os :: raw :: c_void , len : usize , ) ; -} extern "C" { - pub fn Gecko_AnnotateCrashReport ( key_str : * const :: std :: os :: raw :: c_char , value_str : * const :: std :: os :: raw :: c_char , ) ; -} extern "C" { - pub fn Servo_Element_ClearData ( node : RawGeckoElementBorrowed , ) ; -} extern "C" { - pub fn Servo_Element_SizeOfExcludingThisAndCVs ( malloc_size_of : MallocSizeOf , malloc_enclosing_size_of : MallocSizeOf , seen_ptrs : * mut SeenPtrs , node : RawGeckoElementBorrowed , ) -> usize ; -} extern "C" { - pub fn Servo_Element_HasPrimaryComputedValues ( node : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_Element_GetPrimaryComputedValues ( node : RawGeckoElementBorrowed , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_Element_HasPseudoComputedValues ( node : RawGeckoElementBorrowed , index : usize , ) -> bool ; -} extern "C" { - pub fn Servo_Element_GetPseudoComputedValues ( node : RawGeckoElementBorrowed , index : usize , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_Element_IsDisplayNone ( element : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_Element_IsPrimaryStyleReusedViaRuleNode ( element : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_StyleSheet_FromUTF8Bytes ( loader : * mut Loader , gecko_stylesheet : * mut ServoStyleSheet , data : * const u8 , data_len : usize , parsing_mode : SheetParsingMode , extra_data : * mut RawGeckoURLExtraData , line_number_offset : u32 , quirks_mode : nsCompatibility , reusable_sheets : * mut LoaderReusableStyleSheets , ) -> RawServoStyleSheetContentsStrong ; -} extern "C" { - pub fn Servo_StyleSheet_Empty ( parsing_mode : SheetParsingMode , ) -> RawServoStyleSheetContentsStrong ; -} extern "C" { - pub fn Servo_StyleSheet_HasRules ( sheet : RawServoStyleSheetContentsBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_StyleSheet_GetRules ( sheet : RawServoStyleSheetContentsBorrowed , ) -> ServoCssRulesStrong ; -} extern "C" { - pub fn Servo_StyleSheet_Clone ( sheet : RawServoStyleSheetContentsBorrowed , reference_sheet : * const ServoStyleSheet , ) -> RawServoStyleSheetContentsStrong ; -} extern "C" { - pub fn Servo_StyleSheet_SizeOfIncludingThis ( malloc_size_of : MallocSizeOf , malloc_enclosing_size_of : MallocSizeOf , sheet : RawServoStyleSheetContentsBorrowed , ) -> usize ; -} extern "C" { - pub fn Servo_StyleSheet_GetSourceMapURL ( sheet : RawServoStyleSheetContentsBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_StyleSheet_GetSourceURL ( sheet : RawServoStyleSheetContentsBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_StyleSheet_GetOrigin ( sheet : RawServoStyleSheetContentsBorrowed , ) -> u8 ; -} extern "C" { - pub fn Servo_StyleSet_Init ( pres_context : RawGeckoPresContextOwned , ) -> * mut RawServoStyleSet ; -} extern "C" { - pub fn Servo_StyleSet_RebuildCachedData ( set : RawServoStyleSetBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleSet_MediumFeaturesChanged ( set : RawServoStyleSetBorrowed , viewport_units_used : * mut bool , ) -> u8 ; -} extern "C" { - pub fn Servo_StyleSet_SetDevice ( set : RawServoStyleSetBorrowed , pres_context : RawGeckoPresContextOwned , ) -> u8 ; -} extern "C" { - pub fn Servo_StyleSet_CompatModeChanged ( raw_data : RawServoStyleSetBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleSet_AppendStyleSheet ( set : RawServoStyleSetBorrowed , gecko_sheet : * const ServoStyleSheet , ) ; -} extern "C" { - pub fn Servo_StyleSet_PrependStyleSheet ( set : RawServoStyleSetBorrowed , gecko_sheet : * const ServoStyleSheet , ) ; -} extern "C" { - pub fn Servo_StyleSet_RemoveStyleSheet ( set : RawServoStyleSetBorrowed , gecko_sheet : * const ServoStyleSheet , ) ; -} extern "C" { - pub fn Servo_StyleSet_InsertStyleSheetBefore ( set : RawServoStyleSetBorrowed , gecko_sheet : * const ServoStyleSheet , before : * const ServoStyleSheet , ) ; -} extern "C" { - pub fn Servo_StyleSet_FlushStyleSheets ( set : RawServoStyleSetBorrowed , doc_elem : RawGeckoElementBorrowedOrNull , ) ; -} extern "C" { - pub fn Servo_StyleSet_NoteStyleSheetsChanged ( set : RawServoStyleSetBorrowed , author_style_disabled : bool , changed_origins : OriginFlags , ) ; -} extern "C" { - pub fn Servo_StyleSet_GetKeyframesForName ( set : RawServoStyleSetBorrowed , name : * mut nsAtom , timing_function : nsTimingFunctionBorrowed , keyframe_list : RawGeckoKeyframeListBorrowedMut , ) -> bool ; -} extern "C" { - pub fn Servo_StyleSet_GetFontFaceRules ( set : RawServoStyleSetBorrowed , list : RawGeckoFontFaceRuleListBorrowedMut , ) ; -} extern "C" { - pub fn Servo_StyleSet_GetCounterStyleRule ( set : RawServoStyleSetBorrowed , name : * mut nsAtom , ) -> * mut nsCSSCounterStyleRule ; -} extern "C" { - pub fn Servo_StyleSet_BuildFontFeatureValueSet ( set : RawServoStyleSetBorrowed , ) -> * mut gfxFontFeatureValueSet ; -} extern "C" { - pub fn Servo_StyleSet_ResolveForDeclarations ( set : RawServoStyleSetBorrowed , parent_style : ServoStyleContextBorrowedOrNull , declarations : RawServoDeclarationBlockBorrowed , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_SelectorList_Parse ( selector_list : * const nsACString , ) -> * mut RawServoSelectorList ; -} extern "C" { - pub fn Servo_SourceSizeList_Parse ( value : * const nsACString , ) -> * mut RawServoSourceSizeList ; -} extern "C" { - pub fn Servo_SourceSizeList_Evaluate ( set : RawServoStyleSetBorrowed , arg1 : RawServoSourceSizeListBorrowedOrNull , ) -> i32 ; -} extern "C" { - pub fn Servo_SelectorList_Matches ( arg1 : RawGeckoElementBorrowed , arg2 : RawServoSelectorListBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_SelectorList_Closest ( arg1 : RawGeckoElementBorrowed , arg2 : RawServoSelectorListBorrowed , ) -> * const RawGeckoElement ; -} extern "C" { - pub fn Servo_SelectorList_QueryFirst ( arg1 : RawGeckoNodeBorrowed , arg2 : RawServoSelectorListBorrowed , may_use_invalidation : bool , ) -> * const RawGeckoElement ; -} extern "C" { - pub fn Servo_SelectorList_QueryAll ( arg1 : RawGeckoNodeBorrowed , arg2 : RawServoSelectorListBorrowed , content_list : * mut nsSimpleContentList , may_use_invalidation : bool , ) ; -} extern "C" { - pub fn Servo_StyleSet_AddSizeOfExcludingThis ( malloc_size_of : MallocSizeOf , malloc_enclosing_size_of : MallocSizeOf , sizes : * mut ServoStyleSetSizes , set : RawServoStyleSetBorrowed , ) ; -} extern "C" { - pub fn Servo_UACache_AddSizeOf ( malloc_size_of : MallocSizeOf , malloc_enclosing_size_of : MallocSizeOf , sizes : * mut ServoStyleSetSizes , ) ; -} extern "C" { - pub fn Servo_StyleContext_AddRef ( ctx : ServoStyleContextBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleContext_Release ( ctx : ServoStyleContextBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleSet_MightHaveAttributeDependency ( set : RawServoStyleSetBorrowed , element : RawGeckoElementBorrowed , local_name : * mut nsAtom , ) -> bool ; -} extern "C" { - pub fn Servo_StyleSet_HasStateDependency ( set : RawServoStyleSetBorrowed , element : RawGeckoElementBorrowed , state : u64 , ) -> bool ; -} extern "C" { - pub fn Servo_StyleSet_HasDocumentStateDependency ( set : RawServoStyleSetBorrowed , state : u64 , ) -> bool ; -} extern "C" { - pub fn Servo_CssRules_ListTypes ( rules : ServoCssRulesBorrowed , result : nsTArrayBorrowed_uintptr_t , ) ; -} extern "C" { - pub fn Servo_CssRules_InsertRule ( rules : ServoCssRulesBorrowed , sheet : RawServoStyleSheetContentsBorrowed , rule : * const nsACString , index : u32 , nested : bool , loader : * mut Loader , gecko_stylesheet : * mut ServoStyleSheet , rule_type : * mut u16 , ) -> nsresult ; -} extern "C" { - pub fn Servo_CssRules_DeleteRule ( rules : ServoCssRulesBorrowed , index : u32 , ) -> nsresult ; -} extern "C" { - pub fn Servo_CssRules_GetStyleRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoStyleRuleStrong ; -} extern "C" { - pub fn Servo_StyleRule_Debug ( rule : RawServoStyleRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_StyleRule_GetCssText ( rule : RawServoStyleRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_CssRules_GetImportRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoImportRuleStrong ; -} extern "C" { - pub fn Servo_ImportRule_Debug ( rule : RawServoImportRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_ImportRule_GetCssText ( rule : RawServoImportRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_Keyframe_Debug ( rule : RawServoKeyframeBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_Keyframe_GetCssText ( rule : RawServoKeyframeBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_CssRules_GetKeyframesRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoKeyframesRuleStrong ; -} extern "C" { - pub fn Servo_KeyframesRule_Debug ( rule : RawServoKeyframesRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_KeyframesRule_GetCssText ( rule : RawServoKeyframesRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_CssRules_GetMediaRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoMediaRuleStrong ; -} extern "C" { - pub fn Servo_MediaRule_Debug ( rule : RawServoMediaRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_MediaRule_GetCssText ( rule : RawServoMediaRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_MediaRule_GetRules ( rule : RawServoMediaRuleBorrowed , ) -> ServoCssRulesStrong ; -} extern "C" { - pub fn Servo_CssRules_GetNamespaceRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoNamespaceRuleStrong ; -} extern "C" { - pub fn Servo_NamespaceRule_Debug ( rule : RawServoNamespaceRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_NamespaceRule_GetCssText ( rule : RawServoNamespaceRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_CssRules_GetPageRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoPageRuleStrong ; -} extern "C" { - pub fn Servo_PageRule_Debug ( rule : RawServoPageRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_PageRule_GetCssText ( rule : RawServoPageRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_CssRules_GetSupportsRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoSupportsRuleStrong ; -} extern "C" { - pub fn Servo_SupportsRule_Debug ( rule : RawServoSupportsRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_SupportsRule_GetCssText ( rule : RawServoSupportsRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_SupportsRule_GetRules ( rule : RawServoSupportsRuleBorrowed , ) -> ServoCssRulesStrong ; -} extern "C" { - pub fn Servo_CssRules_GetDocumentRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoDocumentRuleStrong ; -} extern "C" { - pub fn Servo_DocumentRule_Debug ( rule : RawServoDocumentRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_DocumentRule_GetCssText ( rule : RawServoDocumentRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_DocumentRule_GetRules ( rule : RawServoDocumentRuleBorrowed , ) -> ServoCssRulesStrong ; -} extern "C" { - pub fn Servo_CssRules_GetFontFeatureValuesRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoFontFeatureValuesRuleStrong ; -} extern "C" { - pub fn Servo_FontFeatureValuesRule_Debug ( rule : RawServoFontFeatureValuesRuleBorrowed , result : * mut nsACString , ) ; -} extern "C" { - pub fn Servo_FontFeatureValuesRule_GetCssText ( rule : RawServoFontFeatureValuesRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_CssRules_GetFontFaceRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , ) -> * mut nsCSSFontFaceRule ; -} extern "C" { - pub fn Servo_CssRules_GetCounterStyleRuleAt ( rules : ServoCssRulesBorrowed , index : u32 , ) -> * mut nsCSSCounterStyleRule ; -} extern "C" { - pub fn Servo_StyleRule_GetStyle ( rule : RawServoStyleRuleBorrowed , ) -> RawServoDeclarationBlockStrong ; -} extern "C" { - pub fn Servo_StyleRule_SetStyle ( rule : RawServoStyleRuleBorrowed , declarations : RawServoDeclarationBlockBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleRule_GetSelectorText ( rule : RawServoStyleRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_StyleRule_GetSelectorTextAtIndex ( rule : RawServoStyleRuleBorrowed , index : u32 , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_StyleRule_GetSpecificityAtIndex ( rule : RawServoStyleRuleBorrowed , index : u32 , specificity : * mut u64 , ) ; -} extern "C" { - pub fn Servo_StyleRule_GetSelectorCount ( rule : RawServoStyleRuleBorrowed , count : * mut u32 , ) ; -} extern "C" { - pub fn Servo_StyleRule_SelectorMatchesElement ( arg1 : RawServoStyleRuleBorrowed , arg2 : RawGeckoElementBorrowed , index : u32 , pseudo_type : CSSPseudoElementType , ) -> bool ; -} extern "C" { - pub fn Servo_ImportRule_GetHref ( rule : RawServoImportRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_ImportRule_GetSheet ( rule : RawServoImportRuleBorrowed , ) -> * const ServoStyleSheet ; -} extern "C" { - pub fn Servo_Keyframe_GetKeyText ( keyframe : RawServoKeyframeBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_Keyframe_SetKeyText ( keyframe : RawServoKeyframeBorrowed , text : * const nsACString , ) -> bool ; -} extern "C" { - pub fn Servo_Keyframe_GetStyle ( keyframe : RawServoKeyframeBorrowed , ) -> RawServoDeclarationBlockStrong ; -} extern "C" { - pub fn Servo_Keyframe_SetStyle ( keyframe : RawServoKeyframeBorrowed , declarations : RawServoDeclarationBlockBorrowed , ) ; -} extern "C" { - pub fn Servo_KeyframesRule_GetName ( rule : RawServoKeyframesRuleBorrowed , ) -> * mut nsAtom ; -} extern "C" { - pub fn Servo_KeyframesRule_SetName ( rule : RawServoKeyframesRuleBorrowed , name : * mut nsAtom , ) ; -} extern "C" { - pub fn Servo_KeyframesRule_GetCount ( rule : RawServoKeyframesRuleBorrowed , ) -> u32 ; -} extern "C" { - pub fn Servo_KeyframesRule_GetKeyframeAt ( rule : RawServoKeyframesRuleBorrowed , index : u32 , line : * mut u32 , column : * mut u32 , ) -> RawServoKeyframeStrong ; -} extern "C" { - pub fn Servo_KeyframesRule_FindRule ( rule : RawServoKeyframesRuleBorrowed , key : * const nsACString , ) -> u32 ; -} extern "C" { - pub fn Servo_KeyframesRule_AppendRule ( rule : RawServoKeyframesRuleBorrowed , sheet : RawServoStyleSheetContentsBorrowed , css : * const nsACString , ) -> bool ; -} extern "C" { - pub fn Servo_KeyframesRule_DeleteRule ( rule : RawServoKeyframesRuleBorrowed , index : u32 , ) ; -} extern "C" { - pub fn Servo_MediaRule_GetMedia ( rule : RawServoMediaRuleBorrowed , ) -> RawServoMediaListStrong ; -} extern "C" { - pub fn Servo_NamespaceRule_GetPrefix ( rule : RawServoNamespaceRuleBorrowed , ) -> * mut nsAtom ; -} extern "C" { - pub fn Servo_NamespaceRule_GetURI ( rule : RawServoNamespaceRuleBorrowed , ) -> * mut nsAtom ; -} extern "C" { - pub fn Servo_PageRule_GetStyle ( rule : RawServoPageRuleBorrowed , ) -> RawServoDeclarationBlockStrong ; -} extern "C" { - pub fn Servo_PageRule_SetStyle ( rule : RawServoPageRuleBorrowed , declarations : RawServoDeclarationBlockBorrowed , ) ; -} extern "C" { - pub fn Servo_SupportsRule_GetConditionText ( rule : RawServoSupportsRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_DocumentRule_GetConditionText ( rule : RawServoDocumentRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_FontFeatureValuesRule_GetFontFamily ( rule : RawServoFontFeatureValuesRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_FontFeatureValuesRule_GetValueText ( rule : RawServoFontFeatureValuesRuleBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_ParseProperty ( property : nsCSSPropertyID , value : * const nsACString , data : * mut RawGeckoURLExtraData , parsing_mode : ParsingMode , quirks_mode : nsCompatibility , loader : * mut Loader , ) -> RawServoDeclarationBlockStrong ; -} extern "C" { - pub fn Servo_ParseEasing ( easing : * const nsAString , data : * mut RawGeckoURLExtraData , output : nsTimingFunctionBorrowedMut , ) -> bool ; -} extern "C" { - pub fn Servo_GetComputedKeyframeValues ( keyframes : RawGeckoKeyframeListBorrowed , element : RawGeckoElementBorrowed , style : ServoStyleContextBorrowed , set : RawServoStyleSetBorrowed , result : RawGeckoComputedKeyframeValuesListBorrowedMut , ) ; -} extern "C" { - pub fn Servo_ComputedValues_ExtractAnimationValue ( computed_values : ServoStyleContextBorrowed , property : nsCSSPropertyID , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_ComputedValues_SpecifiesAnimationsOrTransitions ( computed_values : ServoStyleContextBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_Property_IsAnimatable ( property : nsCSSPropertyID , ) -> bool ; -} extern "C" { - pub fn Servo_Property_IsTransitionable ( property : nsCSSPropertyID , ) -> bool ; -} extern "C" { - pub fn Servo_Property_IsDiscreteAnimatable ( property : nsCSSPropertyID , ) -> bool ; -} extern "C" { - pub fn Servo_GetProperties_Overriding_Animation ( arg1 : RawGeckoElementBorrowed , arg2 : RawGeckoCSSPropertyIDListBorrowed , arg3 : nsCSSPropertyIDSetBorrowedMut , ) ; -} extern "C" { - pub fn Servo_MatrixTransform_Operate ( matrix_operator : MatrixTransformOperator , from : * const RawGeckoGfxMatrix4x4 , to : * const RawGeckoGfxMatrix4x4 , progress : f64 , result : * mut RawGeckoGfxMatrix4x4 , ) ; -} extern "C" { - pub fn Servo_GetAnimationValues ( declarations : RawServoDeclarationBlockBorrowed , element : RawGeckoElementBorrowed , style : ServoStyleContextBorrowed , style_set : RawServoStyleSetBorrowed , animation_values : RawGeckoServoAnimationValueListBorrowedMut , ) ; -} extern "C" { - pub fn Servo_AnimationValues_Interpolate ( from : RawServoAnimationValueBorrowed , to : RawServoAnimationValueBorrowed , progress : f64 , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_AnimationValues_IsInterpolable ( from : RawServoAnimationValueBorrowed , to : RawServoAnimationValueBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_AnimationValues_Add ( a : RawServoAnimationValueBorrowed , b : RawServoAnimationValueBorrowed , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_AnimationValues_Accumulate ( a : RawServoAnimationValueBorrowed , b : RawServoAnimationValueBorrowed , count : u64 , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_AnimationValues_GetZeroValue ( value_to_match : RawServoAnimationValueBorrowed , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_AnimationValues_ComputeDistance ( from : RawServoAnimationValueBorrowed , to : RawServoAnimationValueBorrowed , ) -> f64 ; -} extern "C" { - pub fn Servo_AnimationValue_Serialize ( value : RawServoAnimationValueBorrowed , property : nsCSSPropertyID , buffer : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_Shorthand_AnimationValues_Serialize ( shorthand_property : nsCSSPropertyID , values : RawGeckoServoAnimationValueListBorrowed , buffer : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_AnimationValue_GetOpacity ( value : RawServoAnimationValueBorrowed , ) -> f32 ; -} extern "C" { - pub fn Servo_AnimationValue_Opacity ( arg1 : f32 , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_AnimationValue_GetTransform ( value : RawServoAnimationValueBorrowed , list : * mut RefPtr < nsCSSValueSharedList > , ) ; -} extern "C" { - pub fn Servo_AnimationValue_Transform ( list : * const nsCSSValueSharedList , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_AnimationValue_DeepEqual ( arg1 : RawServoAnimationValueBorrowed , arg2 : RawServoAnimationValueBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_AnimationValue_Uncompute ( value : RawServoAnimationValueBorrowed , ) -> RawServoDeclarationBlockStrong ; -} extern "C" { - pub fn Servo_AnimationValue_Compute ( element : RawGeckoElementBorrowed , declarations : RawServoDeclarationBlockBorrowed , style : ServoStyleContextBorrowed , raw_data : RawServoStyleSetBorrowed , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_ParseStyleAttribute ( data : * const nsACString , extra_data : * mut RawGeckoURLExtraData , quirks_mode : nsCompatibility , loader : * mut Loader , ) -> RawServoDeclarationBlockStrong ; -} extern "C" { - pub fn Servo_DeclarationBlock_CreateEmpty ( ) -> RawServoDeclarationBlockStrong ; -} extern "C" { - pub fn Servo_DeclarationBlock_Clone ( declarations : RawServoDeclarationBlockBorrowed , ) -> RawServoDeclarationBlockStrong ; -} extern "C" { - pub fn Servo_DeclarationBlock_Equals ( a : RawServoDeclarationBlockBorrowed , b : RawServoDeclarationBlockBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_DeclarationBlock_GetCssText ( declarations : RawServoDeclarationBlockBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SerializeOneValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , buffer : * mut nsAString , computed_values : ServoStyleContextBorrowedOrNull , custom_properties : RawServoDeclarationBlockBorrowedOrNull , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_Count ( declarations : RawServoDeclarationBlockBorrowed , ) -> u32 ; -} extern "C" { - pub fn Servo_DeclarationBlock_GetNthProperty ( declarations : RawServoDeclarationBlockBorrowed , index : u32 , result : * mut nsAString , ) -> bool ; -} extern "C" { - pub fn Servo_DeclarationBlock_GetPropertyValue ( declarations : RawServoDeclarationBlockBorrowed , property : * const nsACString , value : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_GetPropertyValueById ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_GetPropertyIsImportant ( declarations : RawServoDeclarationBlockBorrowed , property : * const nsACString , ) -> bool ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetProperty ( declarations : RawServoDeclarationBlockBorrowed , property : * const nsACString , value : * const nsACString , is_important : bool , data : * mut RawGeckoURLExtraData , parsing_mode : ParsingMode , quirks_mode : nsCompatibility , loader : * mut Loader , ) -> bool ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetPropertyById ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : * const nsACString , is_important : bool , data : * mut RawGeckoURLExtraData , parsing_mode : ParsingMode , quirks_mode : nsCompatibility , loader : * mut Loader , ) -> bool ; -} extern "C" { - pub fn Servo_DeclarationBlock_RemoveProperty ( declarations : RawServoDeclarationBlockBorrowed , property : * const nsACString , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_RemovePropertyById ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , ) -> bool ; -} extern "C" { - pub fn Servo_DeclarationBlock_HasCSSWideKeyword ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , ) -> bool ; -} extern "C" { - pub fn Servo_AnimationCompose ( animation_values : RawServoAnimationValueMapBorrowedMut , base_values : RawServoAnimationValueTableBorrowed , property : nsCSSPropertyID , animation_segment : RawGeckoAnimationPropertySegmentBorrowed , last_segment : RawGeckoAnimationPropertySegmentBorrowed , computed_timing : RawGeckoComputedTimingBorrowed , iter_composite : IterationCompositeOperation , ) ; -} extern "C" { - pub fn Servo_ComposeAnimationSegment ( animation_segment : RawGeckoAnimationPropertySegmentBorrowed , underlying_value : RawServoAnimationValueBorrowedOrNull , last_value : RawServoAnimationValueBorrowedOrNull , iter_composite : IterationCompositeOperation , progress : f64 , current_iteration : u64 , ) -> RawServoAnimationValueStrong ; -} extern "C" { - pub fn Servo_DeclarationBlock_PropertyIsSet ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , ) -> bool ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetIdentStringValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : * mut nsAtom , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetKeywordValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : i32 , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetIntValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : i32 , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetPixelValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : f32 , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetLengthValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : f32 , unit : nsCSSUnit , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetNumberValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : f32 , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetPercentValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : f32 , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetAutoValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetCurrentColor ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetColorValue ( declarations : RawServoDeclarationBlockBorrowed , property : nsCSSPropertyID , value : nscolor , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetFontFamily ( declarations : RawServoDeclarationBlockBorrowed , value : * const nsAString , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetTextDecorationColorOverride ( declarations : RawServoDeclarationBlockBorrowed , ) ; -} extern "C" { - pub fn Servo_DeclarationBlock_SetBackgroundImage ( declarations : RawServoDeclarationBlockBorrowed , value : * const nsAString , extra_data : * mut RawGeckoURLExtraData , ) ; -} extern "C" { - pub fn Servo_MediaList_Create ( ) -> RawServoMediaListStrong ; -} extern "C" { - pub fn Servo_MediaList_DeepClone ( list : RawServoMediaListBorrowed , ) -> RawServoMediaListStrong ; -} extern "C" { - pub fn Servo_MediaList_Matches ( list : RawServoMediaListBorrowed , set : RawServoStyleSetBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_MediaList_GetText ( list : RawServoMediaListBorrowed , result : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_MediaList_SetText ( list : RawServoMediaListBorrowed , text : * const nsACString , aCallerType : CallerType , ) ; -} extern "C" { - pub fn Servo_MediaList_GetLength ( list : RawServoMediaListBorrowed , ) -> u32 ; -} extern "C" { - pub fn Servo_MediaList_GetMediumAt ( list : RawServoMediaListBorrowed , index : u32 , result : * mut nsAString , ) -> bool ; -} extern "C" { - pub fn Servo_MediaList_AppendMedium ( list : RawServoMediaListBorrowed , new_medium : * const nsACString , ) ; -} extern "C" { - pub fn Servo_MediaList_DeleteMedium ( list : RawServoMediaListBorrowed , old_medium : * const nsACString , ) -> bool ; -} extern "C" { - pub fn Servo_CSSSupports2 ( name : * const nsACString , value : * const nsACString , ) -> bool ; -} extern "C" { - pub fn Servo_CSSSupports ( cond : * const nsACString , ) -> bool ; -} extern "C" { - pub fn Servo_ComputedValues_GetForAnonymousBox ( parent_style_or_null : ServoStyleContextBorrowedOrNull , pseudo_tag : * mut nsAtom , set : RawServoStyleSetBorrowed , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_ComputedValues_Inherit ( set : RawServoStyleSetBorrowed , pseudo_tag : * mut nsAtom , parent_style : ServoStyleContextBorrowedOrNull , target : InheritTarget , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_ComputedValues_GetStyleBits ( values : ServoStyleContextBorrowed , ) -> u64 ; -} extern "C" { - pub fn Servo_ComputedValues_EqualCustomProperties ( first : ServoComputedDataBorrowed , second : ServoComputedDataBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_ComputedValues_GetStyleRuleList ( values : ServoStyleContextBorrowed , rules : RawGeckoServoStyleRuleListBorrowedMut , ) ; -} extern "C" { - pub fn Servo_Initialize ( dummy_url_data : * mut RawGeckoURLExtraData , ) ; -} extern "C" { - pub fn Servo_InitializeCooperativeThread ( ) ; -} extern "C" { - pub fn Servo_Shutdown ( ) ; -} extern "C" { - pub fn Servo_NoteExplicitHints ( element : RawGeckoElementBorrowed , restyle_hint : nsRestyleHint , change_hint : nsChangeHint , ) ; -} extern "C" { - pub fn Servo_TakeChangeHint ( element : RawGeckoElementBorrowed , was_restyled : * mut bool , ) -> u32 ; -} extern "C" { - pub fn Servo_ResolveStyle ( element : RawGeckoElementBorrowed , set : RawServoStyleSetBorrowed , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_ResolvePseudoStyle ( element : RawGeckoElementBorrowed , pseudo_type : CSSPseudoElementType , is_probe : bool , inherited_style : ServoStyleContextBorrowedOrNull , set : RawServoStyleSetBorrowed , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_ComputedValues_ResolveXULTreePseudoStyle ( element : RawGeckoElementBorrowed , pseudo_tag : * mut nsAtom , inherited_style : ServoStyleContextBorrowed , input_word : * const AtomArray , set : RawServoStyleSetBorrowed , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_SetExplicitStyle ( element : RawGeckoElementBorrowed , primary_style : ServoStyleContextBorrowed , ) ; -} extern "C" { - pub fn Servo_HasAuthorSpecifiedRules ( style : ServoStyleContextBorrowed , element : RawGeckoElementBorrowed , pseudo_type : CSSPseudoElementType , rule_type_mask : u32 , author_colors_allowed : bool , ) -> bool ; -} extern "C" { - pub fn Servo_ResolveStyleLazily ( element : RawGeckoElementBorrowed , pseudo_type : CSSPseudoElementType , rule_inclusion : StyleRuleInclusion , snapshots : * const ServoElementSnapshotTable , set : RawServoStyleSetBorrowed , ignore_existing_styles : bool , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_ReparentStyle ( style_to_reparent : ServoStyleContextBorrowed , parent_style : ServoStyleContextBorrowed , parent_style_ignoring_first_line : ServoStyleContextBorrowed , layout_parent_style : ServoStyleContextBorrowed , element : RawGeckoElementBorrowedOrNull , set : RawServoStyleSetBorrowed , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_TraverseSubtree ( root : RawGeckoElementBorrowed , set : RawServoStyleSetBorrowed , snapshots : * const ServoElementSnapshotTable , flags : ServoTraversalFlags , ) -> bool ; -} extern "C" { - pub fn Servo_AssertTreeIsClean ( root : RawGeckoElementBorrowed , ) ; -} extern "C" { - pub fn Servo_IsWorkerThread ( ) -> bool ; -} extern "C" { - pub fn Servo_MaybeGCRuleTree ( set : RawServoStyleSetBorrowed , ) ; -} extern "C" { - pub fn Servo_StyleSet_GetBaseComputedValuesForElement ( set : RawServoStyleSetBorrowed , element : RawGeckoElementBorrowed , existing_style : ServoStyleContextBorrowed , snapshots : * const ServoElementSnapshotTable , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_StyleSet_GetComputedValuesByAddingAnimation ( set : RawServoStyleSetBorrowed , element : RawGeckoElementBorrowed , existing_style : ServoStyleContextBorrowed , snapshots : * const ServoElementSnapshotTable , animation : RawServoAnimationValueBorrowed , ) -> ServoStyleContextStrong ; -} extern "C" { - pub fn Servo_SerializeFontValueForCanvas ( declarations : RawServoDeclarationBlockBorrowed , buffer : * mut nsAString , ) ; -} extern "C" { - pub fn Servo_GetCustomPropertyValue ( computed_values : ServoStyleContextBorrowed , name : * const nsAString , value : * mut nsAString , ) -> bool ; -} extern "C" { - pub fn Servo_GetCustomPropertiesCount ( computed_values : ServoStyleContextBorrowed , ) -> u32 ; -} extern "C" { - pub fn Servo_GetCustomPropertyNameAt ( arg1 : ServoStyleContextBorrowed , index : u32 , name : * mut nsAString , ) -> bool ; -} extern "C" { - pub fn Servo_ProcessInvalidations ( set : RawServoStyleSetBorrowed , element : RawGeckoElementBorrowed , snapshots : * const ServoElementSnapshotTable , ) ; -} extern "C" { - pub fn Servo_HasPendingRestyleAncestor ( element : RawGeckoElementBorrowed , ) -> bool ; -} extern "C" { - pub fn Servo_GetArcStringData ( arg1 : * const RustString , chars : * mut * const u8 , len : * mut u32 , ) ; -} extern "C" { - pub fn Servo_ReleaseArcStringData ( string : * const ServoRawOffsetArc < RustString > , ) ; -} extern "C" { - pub fn Servo_CloneArcStringData ( string : * const ServoRawOffsetArc < RustString > , ) -> ServoRawOffsetArc < RustString > ; -} extern "C" { - pub fn Servo_IsValidCSSColor ( value : * const nsAString , ) -> bool ; -} extern "C" { - pub fn Servo_ComputeColor ( set : RawServoStyleSetBorrowedOrNull , current_color : nscolor , value : * const nsAString , result_color : * mut nscolor , was_current_color : * mut bool , loader : * mut Loader , ) -> bool ; -} extern "C" { - pub fn Servo_ParseIntersectionObserverRootMargin ( value : * const nsAString , result : * mut nsCSSRect , ) -> bool ; -} extern "C" { - pub fn Servo_ParseTransformIntoMatrix ( value : * const nsAString , contains_3d_transform : * mut bool , result : * mut RawGeckoGfxMatrix4x4 , ) -> bool ; -} extern "C" { - pub fn Servo_ParseCounterStyleName ( value : * const nsACString , ) -> * mut nsAtom ; -} extern "C" { - pub fn Servo_ParseCounterStyleDescriptor ( aDescriptor : nsCSSCounterDesc , aValue : * const nsACString , aURLExtraData : * mut RawGeckoURLExtraData , aResult : * mut nsCSSValue , ) -> bool ; -} extern "C" { - pub fn Servo_ParseFontDescriptor ( desc_id : nsCSSFontDesc , value : * const nsAString , data : * mut RawGeckoURLExtraData , arg1 : nsCSSValueBorrowedMut , ) -> bool ; -} extern "C" { - pub fn Servo_ParseFontShorthandForMatching ( value : * const nsAString , data : * mut RawGeckoURLExtraData , family : * mut RefPtr < SharedFontList > , style : nsCSSValueBorrowedMut , stretch : nsCSSValueBorrowedMut , weight : nsCSSValueBorrowedMut , ) -> bool ; -} extern "C" { - pub fn Gecko_CreateCSSErrorReporter ( sheet : * mut ServoStyleSheet , loader : * mut Loader , uri : * mut nsIURI , ) -> * mut ErrorReporter ; -} extern "C" { - pub fn Gecko_DestroyCSSErrorReporter ( reporter : * mut ErrorReporter , ) ; -} extern "C" { - pub fn Gecko_ReportUnexpectedCSSError ( reporter : * mut ErrorReporter , message : * const :: std :: os :: raw :: c_char , param : * const :: std :: os :: raw :: c_char , paramLen : u32 , prefix : * const :: std :: os :: raw :: c_char , prefixParam : * const :: std :: os :: raw :: c_char , prefixParamLen : u32 , suffix : * const :: std :: os :: raw :: c_char , source : * const :: std :: os :: raw :: c_char , sourceLen : u32 , lineNumber : u32 , colNumber : u32 , ) ; -} extern "C" { - pub fn Gecko_ContentList_AppendAll ( aContentList : * mut nsSimpleContentList , aElements : * mut * const RawGeckoElement , aLength : usize , ) ; -} extern "C" { - pub fn Gecko_GetElementsWithId ( aDocument : * const nsIDocument , aId : * mut nsAtom , ) -> * const nsTArray < * mut Element > ; -} extern "C" { - pub fn Gecko_GetBoolPrefValue ( pref_name : * const :: std :: os :: raw :: c_char , ) -> bool ; -} extern "C" { - pub fn Gecko_IsInServoTraversal ( ) -> bool ; -} extern "C" { - pub fn Gecko_IsMainThread ( ) -> bool ; + pub fn Gecko_EnsureTArrayCapacity( + aArray: *mut ::std::os::raw::c_void, + aCapacity: usize, + aElementSize: usize, + ); +} +extern "C" { + pub fn Gecko_ClearPODTArray( + aArray: *mut ::std::os::raw::c_void, + aElementSize: usize, + aElementAlign: usize, + ); +} +extern "C" { + pub fn Servo_CssRules_AddRef(ptr: ServoCssRulesBorrowed); +} +extern "C" { + pub fn Servo_CssRules_Release(ptr: ServoCssRulesBorrowed); +} +extern "C" { + pub fn Servo_StyleSheetContents_AddRef(ptr: RawServoStyleSheetContentsBorrowed); +} +extern "C" { + pub fn Servo_StyleSheetContents_Release(ptr: RawServoStyleSheetContentsBorrowed); +} +extern "C" { + pub fn Servo_DeclarationBlock_AddRef(ptr: RawServoDeclarationBlockBorrowed); +} +extern "C" { + pub fn Servo_DeclarationBlock_Release(ptr: RawServoDeclarationBlockBorrowed); +} +extern "C" { + pub fn Servo_StyleRule_AddRef(ptr: RawServoStyleRuleBorrowed); +} +extern "C" { + pub fn Servo_StyleRule_Release(ptr: RawServoStyleRuleBorrowed); +} +extern "C" { + pub fn Servo_ImportRule_AddRef(ptr: RawServoImportRuleBorrowed); +} +extern "C" { + pub fn Servo_ImportRule_Release(ptr: RawServoImportRuleBorrowed); +} +extern "C" { + pub fn Servo_AnimationValue_AddRef(ptr: RawServoAnimationValueBorrowed); +} +extern "C" { + pub fn Servo_AnimationValue_Release(ptr: RawServoAnimationValueBorrowed); +} +extern "C" { + pub fn Servo_Keyframe_AddRef(ptr: RawServoKeyframeBorrowed); +} +extern "C" { + pub fn Servo_Keyframe_Release(ptr: RawServoKeyframeBorrowed); +} +extern "C" { + pub fn Servo_KeyframesRule_AddRef(ptr: RawServoKeyframesRuleBorrowed); +} +extern "C" { + pub fn Servo_KeyframesRule_Release(ptr: RawServoKeyframesRuleBorrowed); +} +extern "C" { + pub fn Servo_MediaList_AddRef(ptr: RawServoMediaListBorrowed); +} +extern "C" { + pub fn Servo_MediaList_Release(ptr: RawServoMediaListBorrowed); +} +extern "C" { + pub fn Servo_MediaRule_AddRef(ptr: RawServoMediaRuleBorrowed); +} +extern "C" { + pub fn Servo_MediaRule_Release(ptr: RawServoMediaRuleBorrowed); +} +extern "C" { + pub fn Servo_NamespaceRule_AddRef(ptr: RawServoNamespaceRuleBorrowed); +} +extern "C" { + pub fn Servo_NamespaceRule_Release(ptr: RawServoNamespaceRuleBorrowed); +} +extern "C" { + pub fn Servo_PageRule_AddRef(ptr: RawServoPageRuleBorrowed); +} +extern "C" { + pub fn Servo_PageRule_Release(ptr: RawServoPageRuleBorrowed); +} +extern "C" { + pub fn Servo_SupportsRule_AddRef(ptr: RawServoSupportsRuleBorrowed); +} +extern "C" { + pub fn Servo_SupportsRule_Release(ptr: RawServoSupportsRuleBorrowed); +} +extern "C" { + pub fn Servo_DocumentRule_AddRef(ptr: RawServoDocumentRuleBorrowed); +} +extern "C" { + pub fn Servo_DocumentRule_Release(ptr: RawServoDocumentRuleBorrowed); +} +extern "C" { + pub fn Servo_FontFeatureValuesRule_AddRef(ptr: RawServoFontFeatureValuesRuleBorrowed); +} +extern "C" { + pub fn Servo_FontFeatureValuesRule_Release(ptr: RawServoFontFeatureValuesRuleBorrowed); +} +extern "C" { + pub fn Servo_RuleNode_AddRef(ptr: RawServoRuleNodeBorrowed); +} +extern "C" { + pub fn Servo_RuleNode_Release(ptr: RawServoRuleNodeBorrowed); +} +extern "C" { + pub fn Servo_StyleSet_Drop(ptr: RawServoStyleSetOwned); +} +extern "C" { + pub fn Servo_SelectorList_Drop(ptr: RawServoSelectorListOwned); +} +extern "C" { + pub fn Servo_SourceSizeList_Drop(ptr: RawServoSourceSizeListOwned); +} +extern "C" { + pub fn Gecko_RecordTraversalStatistics( + total: u32, + parallel: u32, + total_t: u32, + parallel_t: u32, + total_s: u32, + parallel_s: u32, + ); +} +extern "C" { + pub fn Gecko_IsSignificantChild( + node: RawGeckoNodeBorrowed, + text_is_significant: bool, + whitespace_is_significant: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_GetLastChild(node: RawGeckoNodeBorrowed) -> RawGeckoNodeBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetFlattenedTreeParentNode( + node: RawGeckoNodeBorrowed, + ) -> RawGeckoNodeBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetBeforeOrAfterPseudo( + element: RawGeckoElementBorrowed, + is_before: bool, + ) -> RawGeckoElementBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetAnonymousContentForElement( + element: RawGeckoElementBorrowed, + ) -> *mut nsTArray<*mut nsIContent>; +} +extern "C" { + pub fn Gecko_DestroyAnonymousContentList(anon_content: *mut nsTArray<*mut nsIContent>); +} +extern "C" { + pub fn Gecko_ServoStyleContext_Init( + context: *mut ServoStyleContext, + parent_context: ServoStyleContextBorrowedOrNull, + pres_context: RawGeckoPresContextBorrowed, + values: ServoComputedDataBorrowed, + pseudo_type: CSSPseudoElementType, + pseudo_tag: *mut nsAtom, + ); +} +extern "C" { + pub fn Gecko_ServoStyleContext_Destroy(context: *mut ServoStyleContext); +} +extern "C" { + pub fn Gecko_ConstructStyleChildrenIterator( + aElement: RawGeckoElementBorrowed, + aIterator: RawGeckoStyleChildrenIteratorBorrowedMut, + ); +} +extern "C" { + pub fn Gecko_DestroyStyleChildrenIterator(aIterator: RawGeckoStyleChildrenIteratorBorrowedMut); +} +extern "C" { + pub fn Gecko_GetNextStyleChild( + it: RawGeckoStyleChildrenIteratorBorrowedMut, + ) -> RawGeckoNodeBorrowedOrNull; +} +extern "C" { + pub fn Gecko_LoadStyleSheet( + loader: *mut Loader, + parent: *mut ServoStyleSheet, + reusable_sheets: *mut LoaderReusableStyleSheets, + base_url_data: *mut RawGeckoURLExtraData, + url_bytes: *const u8, + url_length: u32, + media_list: RawServoMediaListStrong, + ) -> *mut ServoStyleSheet; +} +extern "C" { + pub fn Gecko_ElementState(element: RawGeckoElementBorrowed) -> u64; +} +extern "C" { + pub fn Gecko_IsRootElement(element: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Gecko_MatchesElement( + type_: CSSPseudoClassType, + element: RawGeckoElementBorrowed, + ) -> bool; +} +extern "C" { + pub fn Gecko_MatchLang( + element: RawGeckoElementBorrowed, + override_lang: *mut nsAtom, + has_override_lang: bool, + value: *const u16, + ) -> bool; +} +extern "C" { + pub fn Gecko_GetXMLLangValue(element: RawGeckoElementBorrowed) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_GetDocumentLWTheme(aDocument: *const nsIDocument) -> nsIDocument_DocumentTheme; +} +extern "C" { + pub fn Gecko_AtomAttrValue( + element: RawGeckoElementBorrowed, + attribute: *mut nsAtom, + ) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_LangValue(element: RawGeckoElementBorrowed) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_HasAttr( + element: RawGeckoElementBorrowed, + ns: *mut nsAtom, + name: *mut nsAtom, + ) -> bool; +} +extern "C" { + pub fn Gecko_AttrEquals( + element: RawGeckoElementBorrowed, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignoreCase: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_AttrDashEquals( + element: RawGeckoElementBorrowed, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_AttrIncludes( + element: RawGeckoElementBorrowed, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_AttrHasSubstring( + element: RawGeckoElementBorrowed, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_AttrHasPrefix( + element: RawGeckoElementBorrowed, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_AttrHasSuffix( + element: RawGeckoElementBorrowed, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_ClassOrClassList( + element: RawGeckoElementBorrowed, + class_: *mut *mut nsAtom, + classList: *mut *mut *mut nsAtom, + ) -> u32; +} +extern "C" { + pub fn Gecko_SnapshotAtomAttrValue( + element: *const ServoElementSnapshot, + attribute: *mut nsAtom, + ) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_SnapshotLangValue(element: *const ServoElementSnapshot) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_SnapshotHasAttr( + element: *const ServoElementSnapshot, + ns: *mut nsAtom, + name: *mut nsAtom, + ) -> bool; +} +extern "C" { + pub fn Gecko_SnapshotAttrEquals( + element: *const ServoElementSnapshot, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignoreCase: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_SnapshotAttrDashEquals( + element: *const ServoElementSnapshot, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_SnapshotAttrIncludes( + element: *const ServoElementSnapshot, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_SnapshotAttrHasSubstring( + element: *const ServoElementSnapshot, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_SnapshotAttrHasPrefix( + element: *const ServoElementSnapshot, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_SnapshotAttrHasSuffix( + element: *const ServoElementSnapshot, + ns: *mut nsAtom, + name: *mut nsAtom, + str: *mut nsAtom, + ignore_case: bool, + ) -> bool; +} +extern "C" { + pub fn Gecko_SnapshotClassOrClassList( + element: *const ServoElementSnapshot, + class_: *mut *mut nsAtom, + classList: *mut *mut *mut nsAtom, + ) -> u32; +} +extern "C" { + pub fn Gecko_GetStyleAttrDeclarationBlock( + element: RawGeckoElementBorrowed, + ) -> RawServoDeclarationBlockStrongBorrowedOrNull; +} +extern "C" { + pub fn Gecko_UnsetDirtyStyleAttr(element: RawGeckoElementBorrowed); +} +extern "C" { + pub fn Gecko_GetHTMLPresentationAttrDeclarationBlock( + element: RawGeckoElementBorrowed, + ) -> RawServoDeclarationBlockStrongBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetExtraContentStyleDeclarations( + element: RawGeckoElementBorrowed, + ) -> RawServoDeclarationBlockStrongBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetUnvisitedLinkAttrDeclarationBlock( + element: RawGeckoElementBorrowed, + ) -> RawServoDeclarationBlockStrongBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetVisitedLinkAttrDeclarationBlock( + element: RawGeckoElementBorrowed, + ) -> RawServoDeclarationBlockStrongBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetActiveLinkAttrDeclarationBlock( + element: RawGeckoElementBorrowed, + ) -> RawServoDeclarationBlockStrongBorrowedOrNull; +} +extern "C" { + pub fn Gecko_IsPrivateBrowsingEnabled(aDoc: *const nsIDocument) -> bool; +} +extern "C" { + pub fn Gecko_GetAnimationRule( + aElementOrPseudo: RawGeckoElementBorrowed, + aCascadeLevel: EffectCompositor_CascadeLevel, + aAnimationValues: RawServoAnimationValueMapBorrowedMut, + ) -> bool; +} +extern "C" { + pub fn Gecko_StyleAnimationsEquals( + arg1: RawGeckoStyleAnimationListBorrowed, + arg2: RawGeckoStyleAnimationListBorrowed, + ) -> bool; +} +extern "C" { + pub fn Gecko_CopyAnimationNames( + aDest: RawGeckoStyleAnimationListBorrowedMut, + aSrc: RawGeckoStyleAnimationListBorrowed, + ); +} +extern "C" { + pub fn Gecko_SetAnimationName(aStyleAnimation: *mut StyleAnimation, aAtom: *mut nsAtom); +} +extern "C" { + pub fn Gecko_UpdateAnimations( + aElementOrPseudo: RawGeckoElementBorrowed, + aOldComputedValues: ServoStyleContextBorrowedOrNull, + aComputedValues: ServoStyleContextBorrowedOrNull, + aTasks: UpdateAnimationsTasks, + ); +} +extern "C" { + pub fn Gecko_ElementHasAnimations(aElementOrPseudo: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Gecko_ElementHasCSSAnimations(aElementOrPseudo: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Gecko_ElementHasCSSTransitions(aElementOrPseudo: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Gecko_ElementTransitions_Length(aElementOrPseudo: RawGeckoElementBorrowed) -> usize; +} +extern "C" { + pub fn Gecko_ElementTransitions_PropertyAt( + aElementOrPseudo: RawGeckoElementBorrowed, + aIndex: usize, + ) -> nsCSSPropertyID; +} +extern "C" { + pub fn Gecko_ElementTransitions_EndValueAt( + aElementOrPseudo: RawGeckoElementBorrowed, + aIndex: usize, + ) -> RawServoAnimationValueBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetProgressFromComputedTiming( + aComputedTiming: RawGeckoComputedTimingBorrowed, + ) -> f64; +} +extern "C" { + pub fn Gecko_GetPositionInSegment( + aSegment: RawGeckoAnimationPropertySegmentBorrowed, + aProgress: f64, + aBeforeFlag: ComputedTimingFunction_BeforeFlag, + ) -> f64; +} +extern "C" { + pub fn Gecko_AnimationGetBaseStyle( + aBaseStyles: RawServoAnimationValueTableBorrowed, + aProperty: nsCSSPropertyID, + ) -> RawServoAnimationValueBorrowedOrNull; +} +extern "C" { + pub fn Gecko_StyleTransition_SetUnsupportedProperty( + aTransition: *mut StyleTransition, + aAtom: *mut nsAtom, + ); +} +extern "C" { + pub fn Gecko_Atomize(aString: *const ::std::os::raw::c_char, aLength: u32) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_Atomize16(aString: *const nsAString) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_AddRefAtom(aAtom: *mut nsAtom); +} +extern "C" { + pub fn Gecko_ReleaseAtom(aAtom: *mut nsAtom); +} +extern "C" { + pub fn Gecko_GetAtomAsUTF16(aAtom: *mut nsAtom, aLength: *mut u32) -> *const u16; +} +extern "C" { + pub fn Gecko_AtomEqualsUTF8( + aAtom: *mut nsAtom, + aString: *const ::std::os::raw::c_char, + aLength: u32, + ) -> bool; +} +extern "C" { + pub fn Gecko_AtomEqualsUTF8IgnoreCase( + aAtom: *mut nsAtom, + aString: *const ::std::os::raw::c_char, + aLength: u32, + ) -> bool; +} +extern "C" { + pub fn Gecko_CopyFontFamilyFrom(dst: *mut nsFont, src: *const nsFont); +} +extern "C" { + pub fn Gecko_nsTArray_FontFamilyName_AppendNamed( + aNames: *mut nsTArray<FontFamilyName>, + aName: *mut nsAtom, + aQuoted: bool, + ); +} +extern "C" { + pub fn Gecko_nsTArray_FontFamilyName_AppendGeneric( + aNames: *mut nsTArray<FontFamilyName>, + aType: FontFamilyType, + ); +} +extern "C" { + pub fn Gecko_SharedFontList_Create() -> *mut SharedFontList; +} +extern "C" { + pub fn Gecko_SharedFontList_SizeOfIncludingThis(fontlist: *mut SharedFontList) -> usize; +} +extern "C" { + pub fn Gecko_SharedFontList_SizeOfIncludingThisIfUnshared( + fontlist: *mut SharedFontList, + ) -> usize; +} +extern "C" { + pub fn Gecko_AddRefSharedFontListArbitraryThread(aPtr: *mut SharedFontList); +} +extern "C" { + pub fn Gecko_ReleaseSharedFontListArbitraryThread(aPtr: *mut SharedFontList); +} +extern "C" { + pub fn Gecko_nsFont_InitSystem( + dst: *mut nsFont, + font_id: i32, + font: *const nsStyleFont, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_nsFont_Destroy(dst: *mut nsFont); +} +extern "C" { + pub fn Gecko_ConstructFontFeatureValueSet() -> *mut gfxFontFeatureValueSet; +} +extern "C" { + pub fn Gecko_AppendFeatureValueHashEntry( + value_set: *mut gfxFontFeatureValueSet, + family: *mut nsAtom, + alternate: u32, + name: *mut nsAtom, + ) -> *mut nsTArray<::std::os::raw::c_uint>; +} +extern "C" { + pub fn Gecko_nsFont_SetFontFeatureValuesLookup( + font: *mut nsFont, + pres_context: *const RawGeckoPresContext, + ); +} +extern "C" { + pub fn Gecko_nsFont_ResetFontFeatureValuesLookup(font: *mut nsFont); +} +extern "C" { + pub fn Gecko_ClearAlternateValues(font: *mut nsFont, length: usize); +} +extern "C" { + pub fn Gecko_AppendAlternateValues(font: *mut nsFont, alternate_name: u32, atom: *mut nsAtom); +} +extern "C" { + pub fn Gecko_CopyAlternateValuesFrom(dest: *mut nsFont, src: *const nsFont); +} +extern "C" { + pub fn Gecko_SetImageOrientation( + aVisibility: *mut nsStyleVisibility, + aOrientation: u8, + aFlip: bool, + ); +} +extern "C" { + pub fn Gecko_SetImageOrientationAsFromImage(aVisibility: *mut nsStyleVisibility); +} +extern "C" { + pub fn Gecko_CopyImageOrientationFrom( + aDst: *mut nsStyleVisibility, + aSrc: *const nsStyleVisibility, + ); +} +extern "C" { + pub fn Gecko_SetCounterStyleToName( + ptr: *mut CounterStylePtr, + name: *mut nsAtom, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_SetCounterStyleToSymbols( + ptr: *mut CounterStylePtr, + symbols_type: u8, + symbols: *const *const nsACString, + symbols_count: u32, + ); +} +extern "C" { + pub fn Gecko_SetCounterStyleToString(ptr: *mut CounterStylePtr, symbol: *const nsACString); +} +extern "C" { + pub fn Gecko_CopyCounterStyle(dst: *mut CounterStylePtr, src: *const CounterStylePtr); +} +extern "C" { + pub fn Gecko_CounterStyle_GetName(ptr: *const CounterStylePtr) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_CounterStyle_GetAnonymous( + ptr: *const CounterStylePtr, + ) -> *const AnonymousCounterStyle; +} +extern "C" { + pub fn Gecko_SetNullImageValue(image: *mut nsStyleImage); +} +extern "C" { + pub fn Gecko_SetGradientImageValue(image: *mut nsStyleImage, gradient: *mut nsStyleGradient); +} +extern "C" { + pub fn Gecko_AddRefImageValueArbitraryThread(aPtr: *mut ImageValue); +} +extern "C" { + pub fn Gecko_ReleaseImageValueArbitraryThread(aPtr: *mut ImageValue); +} +extern "C" { + pub fn Gecko_ImageValue_Create( + aURI: ServoBundledURI, + aURIString: ServoRawOffsetArc<RustString>, + ) -> *mut ImageValue; +} +extern "C" { + pub fn Gecko_ImageValue_SizeOfIncludingThis(aImageValue: *mut ImageValue) -> usize; +} +extern "C" { + pub fn Gecko_SetLayerImageImageValue(image: *mut nsStyleImage, aImageValue: *mut ImageValue); +} +extern "C" { + pub fn Gecko_SetImageElement(image: *mut nsStyleImage, atom: *mut nsAtom); +} +extern "C" { + pub fn Gecko_CopyImageValueFrom(image: *mut nsStyleImage, other: *const nsStyleImage); +} +extern "C" { + pub fn Gecko_InitializeImageCropRect(image: *mut nsStyleImage); +} +extern "C" { + pub fn Gecko_CreateGradient( + shape: u8, + size: u8, + repeating: bool, + legacy_syntax: bool, + moz_legacy_syntax: bool, + stops: u32, + ) -> *mut nsStyleGradient; +} +extern "C" { + pub fn Gecko_GetURLValue(image: *const nsStyleImage) -> *const URLValueData; +} +extern "C" { + pub fn Gecko_GetImageElement(image: *const nsStyleImage) -> *mut nsAtom; +} +extern "C" { + pub fn Gecko_GetGradientImageValue(image: *const nsStyleImage) -> *const nsStyleGradient; +} +extern "C" { + pub fn Gecko_SetListStyleImageNone(style_struct: *mut nsStyleList); +} +extern "C" { + pub fn Gecko_SetListStyleImageImageValue( + style_struct: *mut nsStyleList, + aImageValue: *mut ImageValue, + ); +} +extern "C" { + pub fn Gecko_CopyListStyleImageFrom(dest: *mut nsStyleList, src: *const nsStyleList); +} +extern "C" { + pub fn Gecko_SetCursorArrayLength(ui: *mut nsStyleUserInterface, len: usize); +} +extern "C" { + pub fn Gecko_SetCursorImageValue(aCursor: *mut nsCursorImage, aImageValue: *mut ImageValue); +} +extern "C" { + pub fn Gecko_CopyCursorArrayFrom( + dest: *mut nsStyleUserInterface, + src: *const nsStyleUserInterface, + ); +} +extern "C" { + pub fn Gecko_SetContentDataImageValue( + aList: *mut nsStyleContentData, + aImageValue: *mut ImageValue, + ); +} +extern "C" { + pub fn Gecko_SetCounterFunction( + content_data: *mut nsStyleContentData, + type_: nsStyleContentType, + ) -> *mut nsStyleContentData_CounterFunction; +} +extern "C" { + pub fn Gecko_SetNodeFlags(node: RawGeckoNodeBorrowed, flags: u32); +} +extern "C" { + pub fn Gecko_UnsetNodeFlags(node: RawGeckoNodeBorrowed, flags: u32); +} +extern "C" { + pub fn Gecko_NoteDirtyElement(element: RawGeckoElementBorrowed); +} +extern "C" { + pub fn Gecko_NoteDirtySubtreeForInvalidation(element: RawGeckoElementBorrowed); +} +extern "C" { + pub fn Gecko_NoteAnimationOnlyDirtyElement(element: RawGeckoElementBorrowed); +} +extern "C" { + pub fn Gecko_GetImplementedPseudo(element: RawGeckoElementBorrowed) -> CSSPseudoElementType; +} +extern "C" { + pub fn Gecko_CalcStyleDifference( + old_style: ServoStyleContextBorrowed, + new_style: ServoStyleContextBorrowed, + any_style_changed: *mut bool, + reset_only_changed: *mut bool, + ) -> u32; +} +extern "C" { + pub fn Gecko_GetElementSnapshot( + table: *const ServoElementSnapshotTable, + element: RawGeckoElementBorrowed, + ) -> *const ServoElementSnapshot; +} +extern "C" { + pub fn Gecko_HaveSeenPtr(table: *mut SeenPtrs, ptr: *const ::std::os::raw::c_void) -> bool; +} +extern "C" { + pub fn Gecko_ResizeTArrayForStrings(array: *mut nsTArray<nsStringRepr>, length: u32); +} +extern "C" { + pub fn Gecko_SetStyleGridTemplate( + grid_template: *mut UniquePtr<nsStyleGridTemplate>, + value: *mut nsStyleGridTemplate, + ); +} +extern "C" { + pub fn Gecko_CreateStyleGridTemplate( + track_sizes: u32, + name_size: u32, + ) -> *mut nsStyleGridTemplate; +} +extern "C" { + pub fn Gecko_CopyStyleGridTemplateValues( + grid_template: *mut UniquePtr<nsStyleGridTemplate>, + other: *const nsStyleGridTemplate, + ); +} +extern "C" { + pub fn Gecko_NewGridTemplateAreasValue( + areas: u32, + templates: u32, + columns: u32, + ) -> *mut GridTemplateAreasValue; +} +extern "C" { + pub fn Gecko_AddRefGridTemplateAreasValueArbitraryThread(aPtr: *mut GridTemplateAreasValue); +} +extern "C" { + pub fn Gecko_ReleaseGridTemplateAreasValueArbitraryThread(aPtr: *mut GridTemplateAreasValue); +} +extern "C" { + pub fn Gecko_ClearAndResizeStyleContents(content: *mut nsStyleContent, how_many: u32); +} +extern "C" { + pub fn Gecko_ClearAndResizeCounterIncrements(content: *mut nsStyleContent, how_many: u32); +} +extern "C" { + pub fn Gecko_ClearAndResizeCounterResets(content: *mut nsStyleContent, how_many: u32); +} +extern "C" { + pub fn Gecko_CopyStyleContentsFrom(content: *mut nsStyleContent, other: *const nsStyleContent); +} +extern "C" { + pub fn Gecko_CopyCounterResetsFrom(content: *mut nsStyleContent, other: *const nsStyleContent); +} +extern "C" { + pub fn Gecko_CopyCounterIncrementsFrom( + content: *mut nsStyleContent, + other: *const nsStyleContent, + ); +} +extern "C" { + pub fn Gecko_EnsureImageLayersLength( + layers: *mut nsStyleImageLayers, + len: usize, + layer_type: nsStyleImageLayers_LayerType, + ); +} +extern "C" { + pub fn Gecko_EnsureStyleAnimationArrayLength(array: *mut ::std::os::raw::c_void, len: usize); +} +extern "C" { + pub fn Gecko_EnsureStyleTransitionArrayLength(array: *mut ::std::os::raw::c_void, len: usize); +} +extern "C" { + pub fn Gecko_ClearWillChange(display: *mut nsStyleDisplay, length: usize); +} +extern "C" { + pub fn Gecko_AppendWillChange(display: *mut nsStyleDisplay, atom: *mut nsAtom); +} +extern "C" { + pub fn Gecko_CopyWillChangeFrom(dest: *mut nsStyleDisplay, src: *mut nsStyleDisplay); +} +extern "C" { + pub fn Gecko_GetOrCreateKeyframeAtStart( + keyframes: RawGeckoKeyframeListBorrowedMut, + offset: f32, + timingFunction: *const nsTimingFunction, + ) -> *mut Keyframe; +} +extern "C" { + pub fn Gecko_GetOrCreateInitialKeyframe( + keyframes: RawGeckoKeyframeListBorrowedMut, + timingFunction: *const nsTimingFunction, + ) -> *mut Keyframe; +} +extern "C" { + pub fn Gecko_GetOrCreateFinalKeyframe( + keyframes: RawGeckoKeyframeListBorrowedMut, + timingFunction: *const nsTimingFunction, + ) -> *mut Keyframe; +} +extern "C" { + pub fn Gecko_AppendPropertyValuePair( + aProperties: RawGeckoPropertyValuePairListBorrowedMut, + aProperty: nsCSSPropertyID, + ) -> *mut PropertyValuePair; +} +extern "C" { + pub fn Gecko_ResetStyleCoord(unit: *mut nsStyleUnit, value: *mut nsStyleUnion); +} +extern "C" { + pub fn Gecko_SetStyleCoordCalcValue( + unit: *mut nsStyleUnit, + value: *mut nsStyleUnion, + calc: nsStyleCoord_CalcValue, + ); +} +extern "C" { + pub fn Gecko_CopyShapeSourceFrom(dst: *mut StyleShapeSource, src: *const StyleShapeSource); +} +extern "C" { + pub fn Gecko_DestroyShapeSource(shape: *mut StyleShapeSource); +} +extern "C" { + pub fn Gecko_NewBasicShape(shape: *mut StyleShapeSource, type_: StyleBasicShapeType); +} +extern "C" { + pub fn Gecko_NewShapeImage(shape: *mut StyleShapeSource); +} +extern "C" { + pub fn Gecko_StyleShapeSource_SetURLValue(shape: *mut StyleShapeSource, uri: ServoBundledURI); +} +extern "C" { + pub fn Gecko_ResetFilters(effects: *mut nsStyleEffects, new_len: usize); +} +extern "C" { + pub fn Gecko_CopyFiltersFrom(aSrc: *mut nsStyleEffects, aDest: *mut nsStyleEffects); +} +extern "C" { + pub fn Gecko_nsStyleFilter_SetURLValue(effects: *mut nsStyleFilter, uri: ServoBundledURI); +} +extern "C" { + pub fn Gecko_nsStyleSVGPaint_CopyFrom(dest: *mut nsStyleSVGPaint, src: *const nsStyleSVGPaint); +} +extern "C" { + pub fn Gecko_nsStyleSVGPaint_SetURLValue(paint: *mut nsStyleSVGPaint, uri: ServoBundledURI); +} +extern "C" { + pub fn Gecko_nsStyleSVGPaint_Reset(paint: *mut nsStyleSVGPaint); +} +extern "C" { + pub fn Gecko_nsStyleSVG_SetDashArrayLength(svg: *mut nsStyleSVG, len: u32); +} +extern "C" { + pub fn Gecko_nsStyleSVG_CopyDashArray(dst: *mut nsStyleSVG, src: *const nsStyleSVG); +} +extern "C" { + pub fn Gecko_nsStyleSVG_SetContextPropertiesLength(svg: *mut nsStyleSVG, len: u32); +} +extern "C" { + pub fn Gecko_nsStyleSVG_CopyContextProperties(dst: *mut nsStyleSVG, src: *const nsStyleSVG); +} +extern "C" { + pub fn Gecko_NewURLValue(uri: ServoBundledURI) -> *mut URLValue; +} +extern "C" { + pub fn Gecko_AddRefCSSURLValueArbitraryThread(aPtr: *mut URLValue); +} +extern "C" { + pub fn Gecko_ReleaseCSSURLValueArbitraryThread(aPtr: *mut URLValue); +} +extern "C" { + pub fn Gecko_AddRefURLExtraDataArbitraryThread(aPtr: *mut RawGeckoURLExtraData); +} +extern "C" { + pub fn Gecko_ReleaseURLExtraDataArbitraryThread(aPtr: *mut RawGeckoURLExtraData); +} +extern "C" { + pub fn Gecko_FillAllImageLayers(layers: *mut nsStyleImageLayers, max_len: u32); +} +extern "C" { + pub fn Gecko_AddRefCalcArbitraryThread(aPtr: *mut nsStyleCoord_Calc); +} +extern "C" { + pub fn Gecko_ReleaseCalcArbitraryThread(aPtr: *mut nsStyleCoord_Calc); +} +extern "C" { + pub fn Gecko_NewCSSShadowArray(len: u32) -> *mut nsCSSShadowArray; +} +extern "C" { + pub fn Gecko_AddRefCSSShadowArrayArbitraryThread(aPtr: *mut nsCSSShadowArray); +} +extern "C" { + pub fn Gecko_ReleaseCSSShadowArrayArbitraryThread(aPtr: *mut nsCSSShadowArray); +} +extern "C" { + pub fn Gecko_NewStyleQuoteValues(len: u32) -> *mut nsStyleQuoteValues; +} +extern "C" { + pub fn Gecko_AddRefQuoteValuesArbitraryThread(aPtr: *mut nsStyleQuoteValues); +} +extern "C" { + pub fn Gecko_ReleaseQuoteValuesArbitraryThread(aPtr: *mut nsStyleQuoteValues); +} +extern "C" { + pub fn Gecko_NewCSSValueSharedList(len: u32) -> *mut nsCSSValueSharedList; +} +extern "C" { + pub fn Gecko_NewNoneTransform() -> *mut nsCSSValueSharedList; +} +extern "C" { + pub fn Gecko_CSSValue_GetArrayItem( + css_value: nsCSSValueBorrowedMut, + index: i32, + ) -> nsCSSValueBorrowedMut; +} +extern "C" { + pub fn Gecko_CSSValue_GetArrayItemConst( + css_value: nsCSSValueBorrowed, + index: i32, + ) -> nsCSSValueBorrowed; +} +extern "C" { + pub fn Gecko_CSSValue_GetKeyword(aCSSValue: nsCSSValueBorrowed) -> nsCSSKeyword; +} +extern "C" { + pub fn Gecko_CSSValue_GetNumber(css_value: nsCSSValueBorrowed) -> f32; +} +extern "C" { + pub fn Gecko_CSSValue_GetPercentage(css_value: nsCSSValueBorrowed) -> f32; +} +extern "C" { + pub fn Gecko_CSSValue_GetCalc(aCSSValue: nsCSSValueBorrowed) -> nsStyleCoord_CalcValue; +} +extern "C" { + pub fn Gecko_CSSValue_SetNumber(css_value: nsCSSValueBorrowedMut, number: f32); +} +extern "C" { + pub fn Gecko_CSSValue_SetKeyword(css_value: nsCSSValueBorrowedMut, keyword: nsCSSKeyword); +} +extern "C" { + pub fn Gecko_CSSValue_SetPercentage(css_value: nsCSSValueBorrowedMut, percent: f32); +} +extern "C" { + pub fn Gecko_CSSValue_SetPixelLength(aCSSValue: nsCSSValueBorrowedMut, aLen: f32); +} +extern "C" { + pub fn Gecko_CSSValue_SetCalc(css_value: nsCSSValueBorrowedMut, calc: nsStyleCoord_CalcValue); +} +extern "C" { + pub fn Gecko_CSSValue_SetFunction(css_value: nsCSSValueBorrowedMut, len: i32); +} +extern "C" { + pub fn Gecko_CSSValue_SetString( + css_value: nsCSSValueBorrowedMut, + string: *const u8, + len: u32, + unit: nsCSSUnit, + ); +} +extern "C" { + pub fn Gecko_CSSValue_SetStringFromAtom( + css_value: nsCSSValueBorrowedMut, + atom: *mut nsAtom, + unit: nsCSSUnit, + ); +} +extern "C" { + pub fn Gecko_CSSValue_SetAtomIdent(css_value: nsCSSValueBorrowedMut, atom: *mut nsAtom); +} +extern "C" { + pub fn Gecko_CSSValue_SetArray(css_value: nsCSSValueBorrowedMut, len: i32); +} +extern "C" { + pub fn Gecko_CSSValue_SetURL(css_value: nsCSSValueBorrowedMut, uri: ServoBundledURI); +} +extern "C" { + pub fn Gecko_CSSValue_SetInt(css_value: nsCSSValueBorrowedMut, integer: i32, unit: nsCSSUnit); +} +extern "C" { + pub fn Gecko_CSSValue_SetPair( + css_value: nsCSSValueBorrowedMut, + xvalue: nsCSSValueBorrowed, + yvalue: nsCSSValueBorrowed, + ); +} +extern "C" { + pub fn Gecko_CSSValue_SetList(css_value: nsCSSValueBorrowedMut, len: u32); +} +extern "C" { + pub fn Gecko_CSSValue_SetPairList(css_value: nsCSSValueBorrowedMut, len: u32); +} +extern "C" { + pub fn Gecko_CSSValue_InitSharedList(css_value: nsCSSValueBorrowedMut, len: u32); +} +extern "C" { + pub fn Gecko_CSSValue_Drop(css_value: nsCSSValueBorrowedMut); +} +extern "C" { + pub fn Gecko_AddRefCSSValueSharedListArbitraryThread(aPtr: *mut nsCSSValueSharedList); +} +extern "C" { + pub fn Gecko_ReleaseCSSValueSharedListArbitraryThread(aPtr: *mut nsCSSValueSharedList); +} +extern "C" { + pub fn Gecko_nsStyleFont_SetLang(font: *mut nsStyleFont, atom: *mut nsAtom); +} +extern "C" { + pub fn Gecko_nsStyleFont_CopyLangFrom(aFont: *mut nsStyleFont, aSource: *const nsStyleFont); +} +extern "C" { + pub fn Gecko_nsStyleFont_FixupNoneGeneric( + font: *mut nsStyleFont, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_nsStyleFont_PrefillDefaultForGeneric( + font: *mut nsStyleFont, + pres_context: RawGeckoPresContextBorrowed, + generic_id: u8, + ); +} +extern "C" { + pub fn Gecko_nsStyleFont_FixupMinFontSize( + font: *mut nsStyleFont, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_GetBaseSize(lang: *mut nsAtom) -> FontSizePrefs; +} +extern "C" { + pub fn Gecko_GetBindingParent( + aElement: RawGeckoElementBorrowed, + ) -> RawGeckoElementBorrowedOrNull; +} +extern "C" { + pub fn Gecko_GetXBLBinding( + aElement: RawGeckoElementBorrowed, + ) -> RawGeckoXBLBindingBorrowedOrNull; +} +extern "C" { + pub fn Gecko_XBLBinding_GetRawServoStyleSet( + aXBLBinding: RawGeckoXBLBindingBorrowed, + ) -> RawServoStyleSetBorrowedOrNull; +} +extern "C" { + pub fn Gecko_XBLBinding_InheritsStyle(aXBLBinding: RawGeckoXBLBindingBorrowed) -> bool; +} +extern "C" { + pub fn Gecko_GetFontMetrics( + pres_context: RawGeckoPresContextBorrowed, + is_vertical: bool, + font: *const nsStyleFont, + font_size: nscoord, + use_user_font_set: bool, + ) -> GeckoFontMetrics; +} +extern "C" { + pub fn Gecko_GetAppUnitsPerPhysicalInch(pres_context: RawGeckoPresContextBorrowed) -> i32; +} +extern "C" { + pub fn Gecko_StyleSheet_Clone( + aSheet: *const ServoStyleSheet, + aNewParentSheet: *const ServoStyleSheet, + ) -> *mut ServoStyleSheet; +} +extern "C" { + pub fn Gecko_StyleSheet_AddRef(aSheet: *const ServoStyleSheet); +} +extern "C" { + pub fn Gecko_StyleSheet_Release(aSheet: *const ServoStyleSheet); +} +extern "C" { + pub fn Gecko_LookupCSSKeyword(string: *const u8, len: u32) -> nsCSSKeyword; +} +extern "C" { + pub fn Gecko_CSSKeywordString( + keyword: nsCSSKeyword, + len: *mut u32, + ) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn Gecko_CSSFontFaceRule_Create(line: u32, column: u32) -> *mut nsCSSFontFaceRule; +} +extern "C" { + pub fn Gecko_CSSFontFaceRule_Clone(rule: *const nsCSSFontFaceRule) -> *mut nsCSSFontFaceRule; +} +extern "C" { + pub fn Gecko_CSSFontFaceRule_GetCssText(rule: *const nsCSSFontFaceRule, result: *mut nsAString); +} +extern "C" { + pub fn Gecko_CSSFontFaceRule_AddRef(aPtr: *mut nsCSSFontFaceRule); +} +extern "C" { + pub fn Gecko_CSSFontFaceRule_Release(aPtr: *mut nsCSSFontFaceRule); +} +extern "C" { + pub fn Gecko_CSSCounterStyle_Create(name: *mut nsAtom) -> *mut nsCSSCounterStyleRule; +} +extern "C" { + pub fn Gecko_CSSCounterStyle_Clone( + rule: *const nsCSSCounterStyleRule, + ) -> *mut nsCSSCounterStyleRule; +} +extern "C" { + pub fn Gecko_CSSCounterStyle_GetCssText( + rule: *const nsCSSCounterStyleRule, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Gecko_CSSCounterStyleRule_AddRef(aPtr: *mut nsCSSCounterStyleRule); +} +extern "C" { + pub fn Gecko_CSSCounterStyleRule_Release(aPtr: *mut nsCSSCounterStyleRule); +} +extern "C" { + pub fn Gecko_IsDocumentBody(element: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Gecko_GetLookAndFeelSystemColor( + color_id: i32, + pres_context: RawGeckoPresContextBorrowed, + ) -> nscolor; +} +extern "C" { + pub fn Gecko_AddPropertyToSet(arg1: nsCSSPropertyIDSetBorrowedMut, arg2: nsCSSPropertyID); +} +extern "C" { + pub fn Gecko_RegisterNamespace(ns: *mut nsAtom) -> i32; +} +extern "C" { + pub fn Gecko_ShouldCreateStyleThreadPool() -> bool; +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleFont( + ptr: *mut nsStyleFont, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleFont(ptr: *mut nsStyleFont, other: *const nsStyleFont); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleFont(ptr: *mut nsStyleFont); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleColor( + ptr: *mut nsStyleColor, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleColor(ptr: *mut nsStyleColor, other: *const nsStyleColor); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleColor(ptr: *mut nsStyleColor); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleList( + ptr: *mut nsStyleList, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleList(ptr: *mut nsStyleList, other: *const nsStyleList); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleList(ptr: *mut nsStyleList); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleText( + ptr: *mut nsStyleText, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleText(ptr: *mut nsStyleText, other: *const nsStyleText); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleText(ptr: *mut nsStyleText); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleVisibility( + ptr: *mut nsStyleVisibility, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleVisibility( + ptr: *mut nsStyleVisibility, + other: *const nsStyleVisibility, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleVisibility(ptr: *mut nsStyleVisibility); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleUserInterface( + ptr: *mut nsStyleUserInterface, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleUserInterface( + ptr: *mut nsStyleUserInterface, + other: *const nsStyleUserInterface, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleUserInterface(ptr: *mut nsStyleUserInterface); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleTableBorder( + ptr: *mut nsStyleTableBorder, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleTableBorder( + ptr: *mut nsStyleTableBorder, + other: *const nsStyleTableBorder, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleTableBorder(ptr: *mut nsStyleTableBorder); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleSVG( + ptr: *mut nsStyleSVG, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleSVG(ptr: *mut nsStyleSVG, other: *const nsStyleSVG); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleSVG(ptr: *mut nsStyleSVG); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleVariables( + ptr: *mut nsStyleVariables, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleVariables( + ptr: *mut nsStyleVariables, + other: *const nsStyleVariables, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleVariables(ptr: *mut nsStyleVariables); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleBackground( + ptr: *mut nsStyleBackground, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleBackground( + ptr: *mut nsStyleBackground, + other: *const nsStyleBackground, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleBackground(ptr: *mut nsStyleBackground); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStylePosition( + ptr: *mut nsStylePosition, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStylePosition( + ptr: *mut nsStylePosition, + other: *const nsStylePosition, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStylePosition(ptr: *mut nsStylePosition); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleTextReset( + ptr: *mut nsStyleTextReset, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleTextReset( + ptr: *mut nsStyleTextReset, + other: *const nsStyleTextReset, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleTextReset(ptr: *mut nsStyleTextReset); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleDisplay( + ptr: *mut nsStyleDisplay, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleDisplay( + ptr: *mut nsStyleDisplay, + other: *const nsStyleDisplay, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleDisplay(ptr: *mut nsStyleDisplay); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleContent( + ptr: *mut nsStyleContent, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleContent( + ptr: *mut nsStyleContent, + other: *const nsStyleContent, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleContent(ptr: *mut nsStyleContent); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleUIReset( + ptr: *mut nsStyleUIReset, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleUIReset( + ptr: *mut nsStyleUIReset, + other: *const nsStyleUIReset, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleUIReset(ptr: *mut nsStyleUIReset); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleTable( + ptr: *mut nsStyleTable, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleTable(ptr: *mut nsStyleTable, other: *const nsStyleTable); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleTable(ptr: *mut nsStyleTable); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleMargin( + ptr: *mut nsStyleMargin, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleMargin(ptr: *mut nsStyleMargin, other: *const nsStyleMargin); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleMargin(ptr: *mut nsStyleMargin); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStylePadding( + ptr: *mut nsStylePadding, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStylePadding( + ptr: *mut nsStylePadding, + other: *const nsStylePadding, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStylePadding(ptr: *mut nsStylePadding); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleBorder( + ptr: *mut nsStyleBorder, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleBorder(ptr: *mut nsStyleBorder, other: *const nsStyleBorder); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleBorder(ptr: *mut nsStyleBorder); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleOutline( + ptr: *mut nsStyleOutline, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleOutline( + ptr: *mut nsStyleOutline, + other: *const nsStyleOutline, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleOutline(ptr: *mut nsStyleOutline); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleXUL( + ptr: *mut nsStyleXUL, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleXUL(ptr: *mut nsStyleXUL, other: *const nsStyleXUL); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleXUL(ptr: *mut nsStyleXUL); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleSVGReset( + ptr: *mut nsStyleSVGReset, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleSVGReset( + ptr: *mut nsStyleSVGReset, + other: *const nsStyleSVGReset, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleSVGReset(ptr: *mut nsStyleSVGReset); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleColumn( + ptr: *mut nsStyleColumn, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleColumn(ptr: *mut nsStyleColumn, other: *const nsStyleColumn); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleColumn(ptr: *mut nsStyleColumn); +} +extern "C" { + pub fn Gecko_Construct_Default_nsStyleEffects( + ptr: *mut nsStyleEffects, + pres_context: RawGeckoPresContextBorrowed, + ); +} +extern "C" { + pub fn Gecko_CopyConstruct_nsStyleEffects( + ptr: *mut nsStyleEffects, + other: *const nsStyleEffects, + ); +} +extern "C" { + pub fn Gecko_Destroy_nsStyleEffects(ptr: *mut nsStyleEffects); +} +extern "C" { + pub fn Gecko_RegisterProfilerThread(name: *const ::std::os::raw::c_char); +} +extern "C" { + pub fn Gecko_UnregisterProfilerThread(); +} +extern "C" { + pub fn Gecko_DocumentRule_UseForPresentation( + arg1: RawGeckoPresContextBorrowed, + aPattern: *const nsACString, + aURLMatchingFunction: URLMatchingFunction, + ) -> bool; +} +extern "C" { + pub fn Gecko_SetJemallocThreadLocalArena(enabled: bool); +} +extern "C" { + pub fn Gecko_AddBufferToCrashReport(addr: *const ::std::os::raw::c_void, len: usize); +} +extern "C" { + pub fn Gecko_AnnotateCrashReport( + key_str: *const ::std::os::raw::c_char, + value_str: *const ::std::os::raw::c_char, + ); +} +extern "C" { + pub fn Servo_Element_ClearData(node: RawGeckoElementBorrowed); +} +extern "C" { + pub fn Servo_Element_SizeOfExcludingThisAndCVs( + malloc_size_of: MallocSizeOf, + malloc_enclosing_size_of: MallocSizeOf, + seen_ptrs: *mut SeenPtrs, + node: RawGeckoElementBorrowed, + ) -> usize; +} +extern "C" { + pub fn Servo_Element_HasPrimaryComputedValues(node: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Servo_Element_GetPrimaryComputedValues( + node: RawGeckoElementBorrowed, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_Element_HasPseudoComputedValues( + node: RawGeckoElementBorrowed, + index: usize, + ) -> bool; +} +extern "C" { + pub fn Servo_Element_GetPseudoComputedValues( + node: RawGeckoElementBorrowed, + index: usize, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_Element_IsDisplayNone(element: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Servo_Element_IsPrimaryStyleReusedViaRuleNode(element: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Servo_StyleSheet_FromUTF8Bytes( + loader: *mut Loader, + gecko_stylesheet: *mut ServoStyleSheet, + data: *const u8, + data_len: usize, + parsing_mode: SheetParsingMode, + extra_data: *mut RawGeckoURLExtraData, + line_number_offset: u32, + quirks_mode: nsCompatibility, + reusable_sheets: *mut LoaderReusableStyleSheets, + ) -> RawServoStyleSheetContentsStrong; +} +extern "C" { + pub fn Servo_StyleSheet_Empty( + parsing_mode: SheetParsingMode, + ) -> RawServoStyleSheetContentsStrong; +} +extern "C" { + pub fn Servo_StyleSheet_HasRules(sheet: RawServoStyleSheetContentsBorrowed) -> bool; +} +extern "C" { + pub fn Servo_StyleSheet_GetRules( + sheet: RawServoStyleSheetContentsBorrowed, + ) -> ServoCssRulesStrong; +} +extern "C" { + pub fn Servo_StyleSheet_Clone( + sheet: RawServoStyleSheetContentsBorrowed, + reference_sheet: *const ServoStyleSheet, + ) -> RawServoStyleSheetContentsStrong; +} +extern "C" { + pub fn Servo_StyleSheet_SizeOfIncludingThis( + malloc_size_of: MallocSizeOf, + malloc_enclosing_size_of: MallocSizeOf, + sheet: RawServoStyleSheetContentsBorrowed, + ) -> usize; +} +extern "C" { + pub fn Servo_StyleSheet_GetSourceMapURL( + sheet: RawServoStyleSheetContentsBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_StyleSheet_GetSourceURL( + sheet: RawServoStyleSheetContentsBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_StyleSheet_GetOrigin(sheet: RawServoStyleSheetContentsBorrowed) -> u8; +} +extern "C" { + pub fn Servo_StyleSet_Init(pres_context: RawGeckoPresContextOwned) -> *mut RawServoStyleSet; +} +extern "C" { + pub fn Servo_StyleSet_RebuildCachedData(set: RawServoStyleSetBorrowed); +} +extern "C" { + pub fn Servo_StyleSet_MediumFeaturesChanged( + set: RawServoStyleSetBorrowed, + viewport_units_used: *mut bool, + ) -> u8; +} +extern "C" { + pub fn Servo_StyleSet_SetDevice( + set: RawServoStyleSetBorrowed, + pres_context: RawGeckoPresContextOwned, + ) -> u8; +} +extern "C" { + pub fn Servo_StyleSet_CompatModeChanged(raw_data: RawServoStyleSetBorrowed); +} +extern "C" { + pub fn Servo_StyleSet_AppendStyleSheet( + set: RawServoStyleSetBorrowed, + gecko_sheet: *const ServoStyleSheet, + ); +} +extern "C" { + pub fn Servo_StyleSet_PrependStyleSheet( + set: RawServoStyleSetBorrowed, + gecko_sheet: *const ServoStyleSheet, + ); +} +extern "C" { + pub fn Servo_StyleSet_RemoveStyleSheet( + set: RawServoStyleSetBorrowed, + gecko_sheet: *const ServoStyleSheet, + ); +} +extern "C" { + pub fn Servo_StyleSet_InsertStyleSheetBefore( + set: RawServoStyleSetBorrowed, + gecko_sheet: *const ServoStyleSheet, + before: *const ServoStyleSheet, + ); +} +extern "C" { + pub fn Servo_StyleSet_FlushStyleSheets( + set: RawServoStyleSetBorrowed, + doc_elem: RawGeckoElementBorrowedOrNull, + ); +} +extern "C" { + pub fn Servo_StyleSet_NoteStyleSheetsChanged( + set: RawServoStyleSetBorrowed, + author_style_disabled: bool, + changed_origins: OriginFlags, + ); +} +extern "C" { + pub fn Servo_StyleSet_GetKeyframesForName( + set: RawServoStyleSetBorrowed, + name: *mut nsAtom, + timing_function: nsTimingFunctionBorrowed, + keyframe_list: RawGeckoKeyframeListBorrowedMut, + ) -> bool; +} +extern "C" { + pub fn Servo_StyleSet_GetFontFaceRules( + set: RawServoStyleSetBorrowed, + list: RawGeckoFontFaceRuleListBorrowedMut, + ); +} +extern "C" { + pub fn Servo_StyleSet_GetCounterStyleRule( + set: RawServoStyleSetBorrowed, + name: *mut nsAtom, + ) -> *mut nsCSSCounterStyleRule; +} +extern "C" { + pub fn Servo_StyleSet_BuildFontFeatureValueSet( + set: RawServoStyleSetBorrowed, + ) -> *mut gfxFontFeatureValueSet; +} +extern "C" { + pub fn Servo_StyleSet_ResolveForDeclarations( + set: RawServoStyleSetBorrowed, + parent_style: ServoStyleContextBorrowedOrNull, + declarations: RawServoDeclarationBlockBorrowed, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_SelectorList_Parse(selector_list: *const nsACString) -> *mut RawServoSelectorList; +} +extern "C" { + pub fn Servo_SourceSizeList_Parse(value: *const nsACString) -> *mut RawServoSourceSizeList; +} +extern "C" { + pub fn Servo_SourceSizeList_Evaluate( + set: RawServoStyleSetBorrowed, + arg1: RawServoSourceSizeListBorrowedOrNull, + ) -> i32; +} +extern "C" { + pub fn Servo_SelectorList_Matches( + arg1: RawGeckoElementBorrowed, + arg2: RawServoSelectorListBorrowed, + ) -> bool; +} +extern "C" { + pub fn Servo_SelectorList_Closest( + arg1: RawGeckoElementBorrowed, + arg2: RawServoSelectorListBorrowed, + ) -> *const RawGeckoElement; +} +extern "C" { + pub fn Servo_SelectorList_QueryFirst( + arg1: RawGeckoNodeBorrowed, + arg2: RawServoSelectorListBorrowed, + may_use_invalidation: bool, + ) -> *const RawGeckoElement; +} +extern "C" { + pub fn Servo_SelectorList_QueryAll( + arg1: RawGeckoNodeBorrowed, + arg2: RawServoSelectorListBorrowed, + content_list: *mut nsSimpleContentList, + may_use_invalidation: bool, + ); +} +extern "C" { + pub fn Servo_StyleSet_AddSizeOfExcludingThis( + malloc_size_of: MallocSizeOf, + malloc_enclosing_size_of: MallocSizeOf, + sizes: *mut ServoStyleSetSizes, + set: RawServoStyleSetBorrowed, + ); +} +extern "C" { + pub fn Servo_UACache_AddSizeOf( + malloc_size_of: MallocSizeOf, + malloc_enclosing_size_of: MallocSizeOf, + sizes: *mut ServoStyleSetSizes, + ); +} +extern "C" { + pub fn Servo_StyleContext_AddRef(ctx: ServoStyleContextBorrowed); +} +extern "C" { + pub fn Servo_StyleContext_Release(ctx: ServoStyleContextBorrowed); +} +extern "C" { + pub fn Servo_StyleSet_MightHaveAttributeDependency( + set: RawServoStyleSetBorrowed, + element: RawGeckoElementBorrowed, + local_name: *mut nsAtom, + ) -> bool; +} +extern "C" { + pub fn Servo_StyleSet_HasStateDependency( + set: RawServoStyleSetBorrowed, + element: RawGeckoElementBorrowed, + state: u64, + ) -> bool; +} +extern "C" { + pub fn Servo_StyleSet_HasDocumentStateDependency( + set: RawServoStyleSetBorrowed, + state: u64, + ) -> bool; +} +extern "C" { + pub fn Servo_CssRules_ListTypes( + rules: ServoCssRulesBorrowed, + result: nsTArrayBorrowed_uintptr_t, + ); +} +extern "C" { + pub fn Servo_CssRules_InsertRule( + rules: ServoCssRulesBorrowed, + sheet: RawServoStyleSheetContentsBorrowed, + rule: *const nsACString, + index: u32, + nested: bool, + loader: *mut Loader, + gecko_stylesheet: *mut ServoStyleSheet, + rule_type: *mut u16, + ) -> nsresult; +} +extern "C" { + pub fn Servo_CssRules_DeleteRule(rules: ServoCssRulesBorrowed, index: u32) -> nsresult; +} +extern "C" { + pub fn Servo_CssRules_GetStyleRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoStyleRuleStrong; +} +extern "C" { + pub fn Servo_StyleRule_Debug(rule: RawServoStyleRuleBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_StyleRule_GetCssText(rule: RawServoStyleRuleBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_CssRules_GetImportRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoImportRuleStrong; +} +extern "C" { + pub fn Servo_ImportRule_Debug(rule: RawServoImportRuleBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_ImportRule_GetCssText(rule: RawServoImportRuleBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_Keyframe_Debug(rule: RawServoKeyframeBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_Keyframe_GetCssText(rule: RawServoKeyframeBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_CssRules_GetKeyframesRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoKeyframesRuleStrong; +} +extern "C" { + pub fn Servo_KeyframesRule_Debug(rule: RawServoKeyframesRuleBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_KeyframesRule_GetCssText( + rule: RawServoKeyframesRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_CssRules_GetMediaRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoMediaRuleStrong; +} +extern "C" { + pub fn Servo_MediaRule_Debug(rule: RawServoMediaRuleBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_MediaRule_GetCssText(rule: RawServoMediaRuleBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_MediaRule_GetRules(rule: RawServoMediaRuleBorrowed) -> ServoCssRulesStrong; +} +extern "C" { + pub fn Servo_CssRules_GetNamespaceRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoNamespaceRuleStrong; +} +extern "C" { + pub fn Servo_NamespaceRule_Debug(rule: RawServoNamespaceRuleBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_NamespaceRule_GetCssText( + rule: RawServoNamespaceRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_CssRules_GetPageRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoPageRuleStrong; +} +extern "C" { + pub fn Servo_PageRule_Debug(rule: RawServoPageRuleBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_PageRule_GetCssText(rule: RawServoPageRuleBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_CssRules_GetSupportsRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoSupportsRuleStrong; +} +extern "C" { + pub fn Servo_SupportsRule_Debug(rule: RawServoSupportsRuleBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_SupportsRule_GetCssText( + rule: RawServoSupportsRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_SupportsRule_GetRules(rule: RawServoSupportsRuleBorrowed) -> ServoCssRulesStrong; +} +extern "C" { + pub fn Servo_CssRules_GetDocumentRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoDocumentRuleStrong; +} +extern "C" { + pub fn Servo_DocumentRule_Debug(rule: RawServoDocumentRuleBorrowed, result: *mut nsACString); +} +extern "C" { + pub fn Servo_DocumentRule_GetCssText( + rule: RawServoDocumentRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_DocumentRule_GetRules(rule: RawServoDocumentRuleBorrowed) -> ServoCssRulesStrong; +} +extern "C" { + pub fn Servo_CssRules_GetFontFeatureValuesRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoFontFeatureValuesRuleStrong; +} +extern "C" { + pub fn Servo_FontFeatureValuesRule_Debug( + rule: RawServoFontFeatureValuesRuleBorrowed, + result: *mut nsACString, + ); +} +extern "C" { + pub fn Servo_FontFeatureValuesRule_GetCssText( + rule: RawServoFontFeatureValuesRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_CssRules_GetFontFaceRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + ) -> *mut nsCSSFontFaceRule; +} +extern "C" { + pub fn Servo_CssRules_GetCounterStyleRuleAt( + rules: ServoCssRulesBorrowed, + index: u32, + ) -> *mut nsCSSCounterStyleRule; +} +extern "C" { + pub fn Servo_StyleRule_GetStyle( + rule: RawServoStyleRuleBorrowed, + ) -> RawServoDeclarationBlockStrong; +} +extern "C" { + pub fn Servo_StyleRule_SetStyle( + rule: RawServoStyleRuleBorrowed, + declarations: RawServoDeclarationBlockBorrowed, + ); +} +extern "C" { + pub fn Servo_StyleRule_GetSelectorText(rule: RawServoStyleRuleBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_StyleRule_GetSelectorTextAtIndex( + rule: RawServoStyleRuleBorrowed, + index: u32, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_StyleRule_GetSpecificityAtIndex( + rule: RawServoStyleRuleBorrowed, + index: u32, + specificity: *mut u64, + ); +} +extern "C" { + pub fn Servo_StyleRule_GetSelectorCount(rule: RawServoStyleRuleBorrowed, count: *mut u32); +} +extern "C" { + pub fn Servo_StyleRule_SelectorMatchesElement( + arg1: RawServoStyleRuleBorrowed, + arg2: RawGeckoElementBorrowed, + index: u32, + pseudo_type: CSSPseudoElementType, + ) -> bool; +} +extern "C" { + pub fn Servo_ImportRule_GetHref(rule: RawServoImportRuleBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_ImportRule_GetSheet(rule: RawServoImportRuleBorrowed) -> *const ServoStyleSheet; +} +extern "C" { + pub fn Servo_Keyframe_GetKeyText(keyframe: RawServoKeyframeBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_Keyframe_SetKeyText( + keyframe: RawServoKeyframeBorrowed, + text: *const nsACString, + ) -> bool; +} +extern "C" { + pub fn Servo_Keyframe_GetStyle( + keyframe: RawServoKeyframeBorrowed, + ) -> RawServoDeclarationBlockStrong; +} +extern "C" { + pub fn Servo_Keyframe_SetStyle( + keyframe: RawServoKeyframeBorrowed, + declarations: RawServoDeclarationBlockBorrowed, + ); +} +extern "C" { + pub fn Servo_KeyframesRule_GetName(rule: RawServoKeyframesRuleBorrowed) -> *mut nsAtom; +} +extern "C" { + pub fn Servo_KeyframesRule_SetName(rule: RawServoKeyframesRuleBorrowed, name: *mut nsAtom); +} +extern "C" { + pub fn Servo_KeyframesRule_GetCount(rule: RawServoKeyframesRuleBorrowed) -> u32; +} +extern "C" { + pub fn Servo_KeyframesRule_GetKeyframeAt( + rule: RawServoKeyframesRuleBorrowed, + index: u32, + line: *mut u32, + column: *mut u32, + ) -> RawServoKeyframeStrong; +} +extern "C" { + pub fn Servo_KeyframesRule_FindRule( + rule: RawServoKeyframesRuleBorrowed, + key: *const nsACString, + ) -> u32; +} +extern "C" { + pub fn Servo_KeyframesRule_AppendRule( + rule: RawServoKeyframesRuleBorrowed, + sheet: RawServoStyleSheetContentsBorrowed, + css: *const nsACString, + ) -> bool; +} +extern "C" { + pub fn Servo_KeyframesRule_DeleteRule(rule: RawServoKeyframesRuleBorrowed, index: u32); +} +extern "C" { + pub fn Servo_MediaRule_GetMedia(rule: RawServoMediaRuleBorrowed) -> RawServoMediaListStrong; +} +extern "C" { + pub fn Servo_NamespaceRule_GetPrefix(rule: RawServoNamespaceRuleBorrowed) -> *mut nsAtom; +} +extern "C" { + pub fn Servo_NamespaceRule_GetURI(rule: RawServoNamespaceRuleBorrowed) -> *mut nsAtom; +} +extern "C" { + pub fn Servo_PageRule_GetStyle( + rule: RawServoPageRuleBorrowed, + ) -> RawServoDeclarationBlockStrong; +} +extern "C" { + pub fn Servo_PageRule_SetStyle( + rule: RawServoPageRuleBorrowed, + declarations: RawServoDeclarationBlockBorrowed, + ); +} +extern "C" { + pub fn Servo_SupportsRule_GetConditionText( + rule: RawServoSupportsRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_DocumentRule_GetConditionText( + rule: RawServoDocumentRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_FontFeatureValuesRule_GetFontFamily( + rule: RawServoFontFeatureValuesRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_FontFeatureValuesRule_GetValueText( + rule: RawServoFontFeatureValuesRuleBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_ParseProperty( + property: nsCSSPropertyID, + value: *const nsACString, + data: *mut RawGeckoURLExtraData, + parsing_mode: ParsingMode, + quirks_mode: nsCompatibility, + loader: *mut Loader, + ) -> RawServoDeclarationBlockStrong; +} +extern "C" { + pub fn Servo_ParseEasing( + easing: *const nsAString, + data: *mut RawGeckoURLExtraData, + output: nsTimingFunctionBorrowedMut, + ) -> bool; +} +extern "C" { + pub fn Servo_GetComputedKeyframeValues( + keyframes: RawGeckoKeyframeListBorrowed, + element: RawGeckoElementBorrowed, + style: ServoStyleContextBorrowed, + set: RawServoStyleSetBorrowed, + result: RawGeckoComputedKeyframeValuesListBorrowedMut, + ); +} +extern "C" { + pub fn Servo_ComputedValues_ExtractAnimationValue( + computed_values: ServoStyleContextBorrowed, + property: nsCSSPropertyID, + ) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_ComputedValues_SpecifiesAnimationsOrTransitions( + computed_values: ServoStyleContextBorrowed, + ) -> bool; +} +extern "C" { + pub fn Servo_Property_IsAnimatable(property: nsCSSPropertyID) -> bool; +} +extern "C" { + pub fn Servo_Property_IsTransitionable(property: nsCSSPropertyID) -> bool; +} +extern "C" { + pub fn Servo_Property_IsDiscreteAnimatable(property: nsCSSPropertyID) -> bool; +} +extern "C" { + pub fn Servo_GetProperties_Overriding_Animation( + arg1: RawGeckoElementBorrowed, + arg2: RawGeckoCSSPropertyIDListBorrowed, + arg3: nsCSSPropertyIDSetBorrowedMut, + ); +} +extern "C" { + pub fn Servo_MatrixTransform_Operate( + matrix_operator: MatrixTransformOperator, + from: *const RawGeckoGfxMatrix4x4, + to: *const RawGeckoGfxMatrix4x4, + progress: f64, + result: *mut RawGeckoGfxMatrix4x4, + ); +} +extern "C" { + pub fn Servo_GetAnimationValues( + declarations: RawServoDeclarationBlockBorrowed, + element: RawGeckoElementBorrowed, + style: ServoStyleContextBorrowed, + style_set: RawServoStyleSetBorrowed, + animation_values: RawGeckoServoAnimationValueListBorrowedMut, + ); +} +extern "C" { + pub fn Servo_AnimationValues_Interpolate( + from: RawServoAnimationValueBorrowed, + to: RawServoAnimationValueBorrowed, + progress: f64, + ) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_AnimationValues_IsInterpolable( + from: RawServoAnimationValueBorrowed, + to: RawServoAnimationValueBorrowed, + ) -> bool; +} +extern "C" { + pub fn Servo_AnimationValues_Add( + a: RawServoAnimationValueBorrowed, + b: RawServoAnimationValueBorrowed, + ) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_AnimationValues_Accumulate( + a: RawServoAnimationValueBorrowed, + b: RawServoAnimationValueBorrowed, + count: u64, + ) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_AnimationValues_GetZeroValue( + value_to_match: RawServoAnimationValueBorrowed, + ) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_AnimationValues_ComputeDistance( + from: RawServoAnimationValueBorrowed, + to: RawServoAnimationValueBorrowed, + ) -> f64; +} +extern "C" { + pub fn Servo_AnimationValue_Serialize( + value: RawServoAnimationValueBorrowed, + property: nsCSSPropertyID, + buffer: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_Shorthand_AnimationValues_Serialize( + shorthand_property: nsCSSPropertyID, + values: RawGeckoServoAnimationValueListBorrowed, + buffer: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_AnimationValue_GetOpacity(value: RawServoAnimationValueBorrowed) -> f32; +} +extern "C" { + pub fn Servo_AnimationValue_Opacity(arg1: f32) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_AnimationValue_GetTransform( + value: RawServoAnimationValueBorrowed, + list: *mut RefPtr<nsCSSValueSharedList>, + ); +} +extern "C" { + pub fn Servo_AnimationValue_Transform( + list: *const nsCSSValueSharedList, + ) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_AnimationValue_DeepEqual( + arg1: RawServoAnimationValueBorrowed, + arg2: RawServoAnimationValueBorrowed, + ) -> bool; +} +extern "C" { + pub fn Servo_AnimationValue_Uncompute( + value: RawServoAnimationValueBorrowed, + ) -> RawServoDeclarationBlockStrong; +} +extern "C" { + pub fn Servo_AnimationValue_Compute( + element: RawGeckoElementBorrowed, + declarations: RawServoDeclarationBlockBorrowed, + style: ServoStyleContextBorrowed, + raw_data: RawServoStyleSetBorrowed, + ) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_ParseStyleAttribute( + data: *const nsACString, + extra_data: *mut RawGeckoURLExtraData, + quirks_mode: nsCompatibility, + loader: *mut Loader, + ) -> RawServoDeclarationBlockStrong; +} +extern "C" { + pub fn Servo_DeclarationBlock_CreateEmpty() -> RawServoDeclarationBlockStrong; +} +extern "C" { + pub fn Servo_DeclarationBlock_Clone( + declarations: RawServoDeclarationBlockBorrowed, + ) -> RawServoDeclarationBlockStrong; +} +extern "C" { + pub fn Servo_DeclarationBlock_Equals( + a: RawServoDeclarationBlockBorrowed, + b: RawServoDeclarationBlockBorrowed, + ) -> bool; +} +extern "C" { + pub fn Servo_DeclarationBlock_GetCssText( + declarations: RawServoDeclarationBlockBorrowed, + result: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SerializeOneValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + buffer: *mut nsAString, + computed_values: ServoStyleContextBorrowedOrNull, + custom_properties: RawServoDeclarationBlockBorrowedOrNull, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_Count(declarations: RawServoDeclarationBlockBorrowed) -> u32; +} +extern "C" { + pub fn Servo_DeclarationBlock_GetNthProperty( + declarations: RawServoDeclarationBlockBorrowed, + index: u32, + result: *mut nsAString, + ) -> bool; +} +extern "C" { + pub fn Servo_DeclarationBlock_GetPropertyValue( + declarations: RawServoDeclarationBlockBorrowed, + property: *const nsACString, + value: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_GetPropertyValueById( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_GetPropertyIsImportant( + declarations: RawServoDeclarationBlockBorrowed, + property: *const nsACString, + ) -> bool; +} +extern "C" { + pub fn Servo_DeclarationBlock_SetProperty( + declarations: RawServoDeclarationBlockBorrowed, + property: *const nsACString, + value: *const nsACString, + is_important: bool, + data: *mut RawGeckoURLExtraData, + parsing_mode: ParsingMode, + quirks_mode: nsCompatibility, + loader: *mut Loader, + ) -> bool; +} +extern "C" { + pub fn Servo_DeclarationBlock_SetPropertyById( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: *const nsACString, + is_important: bool, + data: *mut RawGeckoURLExtraData, + parsing_mode: ParsingMode, + quirks_mode: nsCompatibility, + loader: *mut Loader, + ) -> bool; +} +extern "C" { + pub fn Servo_DeclarationBlock_RemoveProperty( + declarations: RawServoDeclarationBlockBorrowed, + property: *const nsACString, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_RemovePropertyById( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + ) -> bool; +} +extern "C" { + pub fn Servo_DeclarationBlock_HasCSSWideKeyword( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + ) -> bool; +} +extern "C" { + pub fn Servo_AnimationCompose( + animation_values: RawServoAnimationValueMapBorrowedMut, + base_values: RawServoAnimationValueTableBorrowed, + property: nsCSSPropertyID, + animation_segment: RawGeckoAnimationPropertySegmentBorrowed, + last_segment: RawGeckoAnimationPropertySegmentBorrowed, + computed_timing: RawGeckoComputedTimingBorrowed, + iter_composite: IterationCompositeOperation, + ); +} +extern "C" { + pub fn Servo_ComposeAnimationSegment( + animation_segment: RawGeckoAnimationPropertySegmentBorrowed, + underlying_value: RawServoAnimationValueBorrowedOrNull, + last_value: RawServoAnimationValueBorrowedOrNull, + iter_composite: IterationCompositeOperation, + progress: f64, + current_iteration: u64, + ) -> RawServoAnimationValueStrong; +} +extern "C" { + pub fn Servo_DeclarationBlock_PropertyIsSet( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + ) -> bool; +} +extern "C" { + pub fn Servo_DeclarationBlock_SetIdentStringValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: *mut nsAtom, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetKeywordValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: i32, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetIntValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: i32, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetPixelValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: f32, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetLengthValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: f32, + unit: nsCSSUnit, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetNumberValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: f32, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetPercentValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: f32, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetAutoValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetCurrentColor( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetColorValue( + declarations: RawServoDeclarationBlockBorrowed, + property: nsCSSPropertyID, + value: nscolor, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetFontFamily( + declarations: RawServoDeclarationBlockBorrowed, + value: *const nsAString, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetTextDecorationColorOverride( + declarations: RawServoDeclarationBlockBorrowed, + ); +} +extern "C" { + pub fn Servo_DeclarationBlock_SetBackgroundImage( + declarations: RawServoDeclarationBlockBorrowed, + value: *const nsAString, + extra_data: *mut RawGeckoURLExtraData, + ); +} +extern "C" { + pub fn Servo_MediaList_Create() -> RawServoMediaListStrong; +} +extern "C" { + pub fn Servo_MediaList_DeepClone(list: RawServoMediaListBorrowed) -> RawServoMediaListStrong; +} +extern "C" { + pub fn Servo_MediaList_Matches( + list: RawServoMediaListBorrowed, + set: RawServoStyleSetBorrowed, + ) -> bool; +} +extern "C" { + pub fn Servo_MediaList_GetText(list: RawServoMediaListBorrowed, result: *mut nsAString); +} +extern "C" { + pub fn Servo_MediaList_SetText( + list: RawServoMediaListBorrowed, + text: *const nsACString, + aCallerType: CallerType, + ); +} +extern "C" { + pub fn Servo_MediaList_GetLength(list: RawServoMediaListBorrowed) -> u32; +} +extern "C" { + pub fn Servo_MediaList_GetMediumAt( + list: RawServoMediaListBorrowed, + index: u32, + result: *mut nsAString, + ) -> bool; +} +extern "C" { + pub fn Servo_MediaList_AppendMedium( + list: RawServoMediaListBorrowed, + new_medium: *const nsACString, + ); +} +extern "C" { + pub fn Servo_MediaList_DeleteMedium( + list: RawServoMediaListBorrowed, + old_medium: *const nsACString, + ) -> bool; +} +extern "C" { + pub fn Servo_CSSSupports2(name: *const nsACString, value: *const nsACString) -> bool; +} +extern "C" { + pub fn Servo_CSSSupports(cond: *const nsACString) -> bool; +} +extern "C" { + pub fn Servo_ComputedValues_GetForAnonymousBox( + parent_style_or_null: ServoStyleContextBorrowedOrNull, + pseudo_tag: *mut nsAtom, + set: RawServoStyleSetBorrowed, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_ComputedValues_Inherit( + set: RawServoStyleSetBorrowed, + pseudo_tag: *mut nsAtom, + parent_style: ServoStyleContextBorrowedOrNull, + target: InheritTarget, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_ComputedValues_GetStyleBits(values: ServoStyleContextBorrowed) -> u64; +} +extern "C" { + pub fn Servo_ComputedValues_EqualCustomProperties( + first: ServoComputedDataBorrowed, + second: ServoComputedDataBorrowed, + ) -> bool; +} +extern "C" { + pub fn Servo_ComputedValues_GetStyleRuleList( + values: ServoStyleContextBorrowed, + rules: RawGeckoServoStyleRuleListBorrowedMut, + ); +} +extern "C" { + pub fn Servo_Initialize(dummy_url_data: *mut RawGeckoURLExtraData); +} +extern "C" { + pub fn Servo_InitializeCooperativeThread(); +} +extern "C" { + pub fn Servo_Shutdown(); +} +extern "C" { + pub fn Servo_NoteExplicitHints( + element: RawGeckoElementBorrowed, + restyle_hint: nsRestyleHint, + change_hint: nsChangeHint, + ); +} +extern "C" { + pub fn Servo_TakeChangeHint(element: RawGeckoElementBorrowed, was_restyled: *mut bool) -> u32; +} +extern "C" { + pub fn Servo_ResolveStyle( + element: RawGeckoElementBorrowed, + set: RawServoStyleSetBorrowed, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_ResolvePseudoStyle( + element: RawGeckoElementBorrowed, + pseudo_type: CSSPseudoElementType, + is_probe: bool, + inherited_style: ServoStyleContextBorrowedOrNull, + set: RawServoStyleSetBorrowed, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_ComputedValues_ResolveXULTreePseudoStyle( + element: RawGeckoElementBorrowed, + pseudo_tag: *mut nsAtom, + inherited_style: ServoStyleContextBorrowed, + input_word: *const AtomArray, + set: RawServoStyleSetBorrowed, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_SetExplicitStyle( + element: RawGeckoElementBorrowed, + primary_style: ServoStyleContextBorrowed, + ); +} +extern "C" { + pub fn Servo_HasAuthorSpecifiedRules( + style: ServoStyleContextBorrowed, + element: RawGeckoElementBorrowed, + pseudo_type: CSSPseudoElementType, + rule_type_mask: u32, + author_colors_allowed: bool, + ) -> bool; +} +extern "C" { + pub fn Servo_ResolveStyleLazily( + element: RawGeckoElementBorrowed, + pseudo_type: CSSPseudoElementType, + rule_inclusion: StyleRuleInclusion, + snapshots: *const ServoElementSnapshotTable, + set: RawServoStyleSetBorrowed, + ignore_existing_styles: bool, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_ReparentStyle( + style_to_reparent: ServoStyleContextBorrowed, + parent_style: ServoStyleContextBorrowed, + parent_style_ignoring_first_line: ServoStyleContextBorrowed, + layout_parent_style: ServoStyleContextBorrowed, + element: RawGeckoElementBorrowedOrNull, + set: RawServoStyleSetBorrowed, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_TraverseSubtree( + root: RawGeckoElementBorrowed, + set: RawServoStyleSetBorrowed, + snapshots: *const ServoElementSnapshotTable, + flags: ServoTraversalFlags, + ) -> bool; +} +extern "C" { + pub fn Servo_AssertTreeIsClean(root: RawGeckoElementBorrowed); +} +extern "C" { + pub fn Servo_IsWorkerThread() -> bool; +} +extern "C" { + pub fn Servo_MaybeGCRuleTree(set: RawServoStyleSetBorrowed); +} +extern "C" { + pub fn Servo_StyleSet_GetBaseComputedValuesForElement( + set: RawServoStyleSetBorrowed, + element: RawGeckoElementBorrowed, + existing_style: ServoStyleContextBorrowed, + snapshots: *const ServoElementSnapshotTable, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_StyleSet_GetComputedValuesByAddingAnimation( + set: RawServoStyleSetBorrowed, + element: RawGeckoElementBorrowed, + existing_style: ServoStyleContextBorrowed, + snapshots: *const ServoElementSnapshotTable, + animation: RawServoAnimationValueBorrowed, + ) -> ServoStyleContextStrong; +} +extern "C" { + pub fn Servo_SerializeFontValueForCanvas( + declarations: RawServoDeclarationBlockBorrowed, + buffer: *mut nsAString, + ); +} +extern "C" { + pub fn Servo_GetCustomPropertyValue( + computed_values: ServoStyleContextBorrowed, + name: *const nsAString, + value: *mut nsAString, + ) -> bool; +} +extern "C" { + pub fn Servo_GetCustomPropertiesCount(computed_values: ServoStyleContextBorrowed) -> u32; +} +extern "C" { + pub fn Servo_GetCustomPropertyNameAt( + arg1: ServoStyleContextBorrowed, + index: u32, + name: *mut nsAString, + ) -> bool; +} +extern "C" { + pub fn Servo_ProcessInvalidations( + set: RawServoStyleSetBorrowed, + element: RawGeckoElementBorrowed, + snapshots: *const ServoElementSnapshotTable, + ); +} +extern "C" { + pub fn Servo_HasPendingRestyleAncestor(element: RawGeckoElementBorrowed) -> bool; +} +extern "C" { + pub fn Servo_GetArcStringData(arg1: *const RustString, chars: *mut *const u8, len: *mut u32); +} +extern "C" { + pub fn Servo_ReleaseArcStringData(string: *const ServoRawOffsetArc<RustString>); +} +extern "C" { + pub fn Servo_CloneArcStringData( + string: *const ServoRawOffsetArc<RustString>, + ) -> ServoRawOffsetArc<RustString>; +} +extern "C" { + pub fn Servo_IsValidCSSColor(value: *const nsAString) -> bool; +} +extern "C" { + pub fn Servo_ComputeColor( + set: RawServoStyleSetBorrowedOrNull, + current_color: nscolor, + value: *const nsAString, + result_color: *mut nscolor, + was_current_color: *mut bool, + loader: *mut Loader, + ) -> bool; +} +extern "C" { + pub fn Servo_ParseIntersectionObserverRootMargin( + value: *const nsAString, + result: *mut nsCSSRect, + ) -> bool; +} +extern "C" { + pub fn Servo_ParseTransformIntoMatrix( + value: *const nsAString, + contains_3d_transform: *mut bool, + result: *mut RawGeckoGfxMatrix4x4, + ) -> bool; +} +extern "C" { + pub fn Servo_ParseCounterStyleName(value: *const nsACString) -> *mut nsAtom; +} +extern "C" { + pub fn Servo_ParseCounterStyleDescriptor( + aDescriptor: nsCSSCounterDesc, + aValue: *const nsACString, + aURLExtraData: *mut RawGeckoURLExtraData, + aResult: *mut nsCSSValue, + ) -> bool; +} +extern "C" { + pub fn Servo_ParseFontDescriptor( + desc_id: nsCSSFontDesc, + value: *const nsAString, + data: *mut RawGeckoURLExtraData, + arg1: nsCSSValueBorrowedMut, + ) -> bool; +} +extern "C" { + pub fn Servo_ParseFontShorthandForMatching( + value: *const nsAString, + data: *mut RawGeckoURLExtraData, + family: *mut RefPtr<SharedFontList>, + style: nsCSSValueBorrowedMut, + stretch: nsCSSValueBorrowedMut, + weight: nsCSSValueBorrowedMut, + ) -> bool; +} +extern "C" { + pub fn Gecko_CreateCSSErrorReporter( + sheet: *mut ServoStyleSheet, + loader: *mut Loader, + uri: *mut nsIURI, + ) -> *mut ErrorReporter; +} +extern "C" { + pub fn Gecko_DestroyCSSErrorReporter(reporter: *mut ErrorReporter); +} +extern "C" { + pub fn Gecko_ReportUnexpectedCSSError( + reporter: *mut ErrorReporter, + message: *const ::std::os::raw::c_char, + param: *const ::std::os::raw::c_char, + paramLen: u32, + prefix: *const ::std::os::raw::c_char, + prefixParam: *const ::std::os::raw::c_char, + prefixParamLen: u32, + suffix: *const ::std::os::raw::c_char, + source: *const ::std::os::raw::c_char, + sourceLen: u32, + lineNumber: u32, + colNumber: u32, + ); +} +extern "C" { + pub fn Gecko_ContentList_AppendAll( + aContentList: *mut nsSimpleContentList, + aElements: *mut *const RawGeckoElement, + aLength: usize, + ); +} +extern "C" { + pub fn Gecko_GetElementsWithId( + aDocument: *const nsIDocument, + aId: *mut nsAtom, + ) -> *const nsTArray<*mut Element>; +} +extern "C" { + pub fn Gecko_GetBoolPrefValue(pref_name: *const ::std::os::raw::c_char) -> bool; +} +extern "C" { + pub fn Gecko_IsInServoTraversal() -> bool; +} +extern "C" { + pub fn Gecko_IsMainThread() -> bool; } diff --git a/components/style/gecko/generated/pseudo_element_definition.rs b/components/style/gecko/generated/pseudo_element_definition.rs index 4a18723ec85..c312161dde6 100644 --- a/components/style/gecko/generated/pseudo_element_definition.rs +++ b/components/style/gecko/generated/pseudo_element_definition.rs @@ -159,8 +159,6 @@ pub enum PseudoElement { MozTreeCellText(Box<[Atom]>), /// :-moz-tree-checkbox MozTreeCheckbox(Box<[Atom]>), - /// :-moz-tree-progressmeter - MozTreeProgressmeter(Box<[Atom]>), /// :-moz-tree-drop-feedback MozTreeDropFeedback(Box<[Atom]>), /// :-moz-svg-marker-anon-child @@ -186,10 +184,10 @@ pub const EAGER_PSEUDO_COUNT: usize = 4; pub const SIMPLE_PSEUDO_COUNT: usize = 71; /// The number of tree pseudo-elements. -pub const TREE_PSEUDO_COUNT: usize = 12; +pub const TREE_PSEUDO_COUNT: usize = 11; /// The number of all pseudo-elements. -pub const PSEUDO_COUNT: usize = 83; +pub const PSEUDO_COUNT: usize = 82; /// The list of eager pseudos. pub const EAGER_PSEUDOS: [PseudoElement; EAGER_PSEUDO_COUNT] = [ @@ -283,7 +281,6 @@ impl PseudoElement { PseudoElement::MozTreeImage(..) => atom!(":-moz-tree-image"), PseudoElement::MozTreeCellText(..) => atom!(":-moz-tree-cell-text"), PseudoElement::MozTreeCheckbox(..) => atom!(":-moz-tree-checkbox"), - PseudoElement::MozTreeProgressmeter(..) => atom!(":-moz-tree-progressmeter"), PseudoElement::MozTreeDropFeedback(..) => atom!(":-moz-tree-drop-feedback"), PseudoElement::MozSVGMarkerAnonChild => atom!(":-moz-svg-marker-anon-child"), PseudoElement::MozSVGOuterSVGAnonChild => atom!(":-moz-svg-outer-svg-anon-child"), @@ -373,12 +370,11 @@ impl PseudoElement { PseudoElement::MozTreeImage(..) => 74, PseudoElement::MozTreeCellText(..) => 75, PseudoElement::MozTreeCheckbox(..) => 76, - PseudoElement::MozTreeProgressmeter(..) => 77, - PseudoElement::MozTreeDropFeedback(..) => 78, - PseudoElement::MozSVGMarkerAnonChild => 79, - PseudoElement::MozSVGOuterSVGAnonChild => 80, - PseudoElement::MozSVGForeignContent => 81, - PseudoElement::MozSVGText => 82, + PseudoElement::MozTreeDropFeedback(..) => 77, + PseudoElement::MozSVGMarkerAnonChild => 78, + PseudoElement::MozSVGOuterSVGAnonChild => 79, + PseudoElement::MozSVGForeignContent => 80, + PseudoElement::MozSVGText => 81, } } @@ -468,7 +464,6 @@ impl PseudoElement { None, None, None, - None, None ] } @@ -529,7 +524,6 @@ impl PseudoElement { PseudoElement::MozTreeImage(..) => true, PseudoElement::MozTreeCellText(..) => true, PseudoElement::MozTreeCheckbox(..) => true, - PseudoElement::MozTreeProgressmeter(..) => true, PseudoElement::MozTreeDropFeedback(..) => true, PseudoElement::MozSVGMarkerAnonChild => true, PseudoElement::MozSVGOuterSVGAnonChild => true, @@ -560,7 +554,6 @@ impl PseudoElement { PseudoElement::MozTreeImage(..) => true, PseudoElement::MozTreeCellText(..) => true, PseudoElement::MozTreeCheckbox(..) => true, - PseudoElement::MozTreeProgressmeter(..) => true, PseudoElement::MozTreeDropFeedback(..) => true, _ => false, } @@ -724,8 +717,6 @@ impl PseudoElement { 0, PseudoElement::MozTreeCheckbox(..) => 0, - PseudoElement::MozTreeProgressmeter(..) => - 0, PseudoElement::MozTreeDropFeedback(..) => 0, PseudoElement::MozSVGMarkerAnonChild => @@ -905,7 +896,6 @@ impl PseudoElement { PseudoElement::MozTreeImage(..) => CSSPseudoElementType::XULTree, PseudoElement::MozTreeCellText(..) => CSSPseudoElementType::XULTree, PseudoElement::MozTreeCheckbox(..) => CSSPseudoElementType::XULTree, - PseudoElement::MozTreeProgressmeter(..) => CSSPseudoElementType::XULTree, PseudoElement::MozTreeDropFeedback(..) => CSSPseudoElementType::XULTree, PseudoElement::MozSVGMarkerAnonChild => CSSPseudoElementType_InheritingAnonBox, PseudoElement::MozSVGOuterSVGAnonChild => CSSPseudoElementType_InheritingAnonBox, @@ -933,7 +923,6 @@ impl PseudoElement { PseudoElement::MozTreeImage(ref args) => Some(args), PseudoElement::MozTreeCellText(ref args) => Some(args), PseudoElement::MozTreeCheckbox(ref args) => Some(args), - PseudoElement::MozTreeProgressmeter(ref args) => Some(args), PseudoElement::MozTreeDropFeedback(ref args) => Some(args), _ => None, } @@ -1153,7 +1142,6 @@ impl PseudoElement { // We cannot generate PseudoElement::MozTreeImage(..) from just an atom. // We cannot generate PseudoElement::MozTreeCellText(..) from just an atom. // We cannot generate PseudoElement::MozTreeCheckbox(..) from just an atom. - // We cannot generate PseudoElement::MozTreeProgressmeter(..) from just an atom. // We cannot generate PseudoElement::MozTreeDropFeedback(..) from just an atom. if atom == &atom!(":-moz-svg-marker-anon-child") { return Some(PseudoElement::MozSVGMarkerAnonChild); @@ -1309,7 +1297,6 @@ impl PseudoElement { // We cannot generate PseudoElement::MozTreeImage(..) from just an atom. // We cannot generate PseudoElement::MozTreeCellText(..) from just an atom. // We cannot generate PseudoElement::MozTreeCheckbox(..) from just an atom. - // We cannot generate PseudoElement::MozTreeProgressmeter(..) from just an atom. // We cannot generate PseudoElement::MozTreeDropFeedback(..) from just an atom. if atom == &atom!(":-moz-svg-marker-anon-child") { return Some(PseudoElement::MozSVGMarkerAnonChild); @@ -1359,9 +1346,6 @@ impl PseudoElement { if atom == &atom!(":-moz-tree-checkbox") { return Some(PseudoElement::MozTreeCheckbox(args)); } - if atom == &atom!(":-moz-tree-progressmeter") { - return Some(PseudoElement::MozTreeProgressmeter(args)); - } if atom == &atom!(":-moz-tree-drop-feedback") { return Some(PseudoElement::MozTreeDropFeedback(args)); } @@ -1780,9 +1764,6 @@ impl PseudoElement { if tree_part.eq_ignore_ascii_case("checkbox") { return Some(PseudoElement::MozTreeCheckbox(args)); } - if tree_part.eq_ignore_ascii_case("progressmeter") { - return Some(PseudoElement::MozTreeProgressmeter(args)); - } if tree_part.eq_ignore_ascii_case("drop-feedback") { return Some(PseudoElement::MozTreeDropFeedback(args)); } @@ -1871,7 +1852,6 @@ impl ToCss for PseudoElement { PseudoElement::MozTreeImage(..) => dest.write_str(":-moz-tree-image")?, PseudoElement::MozTreeCellText(..) => dest.write_str(":-moz-tree-cell-text")?, PseudoElement::MozTreeCheckbox(..) => dest.write_str(":-moz-tree-checkbox")?, - PseudoElement::MozTreeProgressmeter(..) => dest.write_str(":-moz-tree-progressmeter")?, PseudoElement::MozTreeDropFeedback(..) => dest.write_str(":-moz-tree-drop-feedback")?, PseudoElement::MozSVGMarkerAnonChild => dest.write_str(":-moz-svg-marker-anon-child")?, PseudoElement::MozSVGOuterSVGAnonChild => dest.write_str(":-moz-svg-outer-svg-anon-child")?, diff --git a/components/style/gecko/generated/structs.rs b/components/style/gecko/generated/structs.rs index 70038a99621..6a5048a44a0 100644 --- a/components/style/gecko/generated/structs.rs +++ b/components/style/gecko/generated/structs.rs @@ -17,14 +17,1101 @@ pub type ServoComputedValueFlags = ::properties::computed_value_flags::ComputedV pub type ServoRawOffsetArc<T> = ::servo_arc::RawOffsetArc<T>; pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<::properties::ComputedValues>; -# [ allow ( non_snake_case , non_camel_case_types , non_upper_case_globals ) ] pub mod root { # [ repr ( C ) ] pub struct __BindgenUnionField < T > ( :: std :: marker :: PhantomData < T > ) ; impl < T > __BindgenUnionField < T > { # [ inline ] pub fn new ( ) -> Self { __BindgenUnionField ( :: std :: marker :: PhantomData ) } # [ inline ] pub unsafe fn as_ref ( & self ) -> & T { :: std :: mem :: transmute ( self ) } # [ inline ] pub unsafe fn as_mut ( & mut self ) -> & mut T { :: std :: mem :: transmute ( self ) } } impl < T > :: std :: default :: Default for __BindgenUnionField < T > { # [ inline ] fn default ( ) -> Self { Self :: new ( ) } } impl < T > :: std :: clone :: Clone for __BindgenUnionField < T > { # [ inline ] fn clone ( & self ) -> Self { Self :: new ( ) } } impl < T > :: std :: marker :: Copy for __BindgenUnionField < T > { } impl < T > :: std :: fmt :: Debug for __BindgenUnionField < T > { fn fmt ( & self , fmt : & mut :: std :: fmt :: Formatter ) -> :: std :: fmt :: Result { fmt . write_str ( "__BindgenUnionField" ) } } impl < T > :: std :: hash :: Hash for __BindgenUnionField < T > { fn hash < H : :: std :: hash :: Hasher > ( & self , _state : & mut H ) { } } impl < T > :: std :: cmp :: PartialEq for __BindgenUnionField < T > { fn eq ( & self , _other : & __BindgenUnionField < T > ) -> bool { true } } impl < T > :: std :: cmp :: Eq for __BindgenUnionField < T > { } # [ allow ( unused_imports ) ] use self :: super :: root ; pub const NS_FONT_STYLE_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_STYLE_ITALIC : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_STYLE_OBLIQUE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_WEIGHT_NORMAL : :: std :: os :: raw :: c_uint = 400 ; pub const NS_FONT_WEIGHT_BOLD : :: std :: os :: raw :: c_uint = 700 ; pub const NS_FONT_WEIGHT_THIN : :: std :: os :: raw :: c_uint = 100 ; pub const NS_FONT_STRETCH_ULTRA_CONDENSED : :: std :: os :: raw :: c_int = -4 ; pub const NS_FONT_STRETCH_EXTRA_CONDENSED : :: std :: os :: raw :: c_int = -3 ; pub const NS_FONT_STRETCH_CONDENSED : :: std :: os :: raw :: c_int = -2 ; pub const NS_FONT_STRETCH_SEMI_CONDENSED : :: std :: os :: raw :: c_int = -1 ; pub const NS_FONT_STRETCH_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_STRETCH_SEMI_EXPANDED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_STRETCH_EXPANDED : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_STRETCH_EXTRA_EXPANDED : :: std :: os :: raw :: c_uint = 3 ; pub const NS_FONT_STRETCH_ULTRA_EXPANDED : :: std :: os :: raw :: c_uint = 4 ; pub const NS_FONT_SMOOTHING_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_SMOOTHING_GRAYSCALE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_KERNING_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_KERNING_NONE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_KERNING_NORMAL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_SYNTHESIS_WEIGHT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_SYNTHESIS_STYLE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_DISPLAY_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_DISPLAY_BLOCK : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_DISPLAY_SWAP : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_DISPLAY_FALLBACK : :: std :: os :: raw :: c_uint = 3 ; pub const NS_FONT_DISPLAY_OPTIONAL : :: std :: os :: raw :: c_uint = 4 ; pub const NS_FONT_VARIANT_ALTERNATES_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_VARIANT_ALTERNATES_HISTORICAL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_VARIANT_ALTERNATES_STYLISTIC : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_VARIANT_ALTERNATES_STYLESET : :: std :: os :: raw :: c_uint = 4 ; pub const NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_FONT_VARIANT_ALTERNATES_SWASH : :: std :: os :: raw :: c_uint = 16 ; pub const NS_FONT_VARIANT_ALTERNATES_ORNAMENTS : :: std :: os :: raw :: c_uint = 32 ; pub const NS_FONT_VARIANT_ALTERNATES_ANNOTATION : :: std :: os :: raw :: c_uint = 64 ; pub const NS_FONT_VARIANT_ALTERNATES_COUNT : :: std :: os :: raw :: c_uint = 7 ; pub const NS_FONT_VARIANT_ALTERNATES_ENUMERATED_MASK : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_VARIANT_ALTERNATES_FUNCTIONAL_MASK : :: std :: os :: raw :: c_uint = 126 ; pub const NS_FONT_VARIANT_CAPS_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_VARIANT_CAPS_SMALLCAPS : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_VARIANT_CAPS_ALLSMALL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_VARIANT_CAPS_PETITECAPS : :: std :: os :: raw :: c_uint = 3 ; pub const NS_FONT_VARIANT_CAPS_ALLPETITE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_FONT_VARIANT_CAPS_TITLING : :: std :: os :: raw :: c_uint = 5 ; pub const NS_FONT_VARIANT_CAPS_UNICASE : :: std :: os :: raw :: c_uint = 6 ; pub const NS_FONT_VARIANT_EAST_ASIAN_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_VARIANT_EAST_ASIAN_JIS78 : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_VARIANT_EAST_ASIAN_JIS83 : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_VARIANT_EAST_ASIAN_JIS90 : :: std :: os :: raw :: c_uint = 4 ; pub const NS_FONT_VARIANT_EAST_ASIAN_JIS04 : :: std :: os :: raw :: c_uint = 8 ; pub const NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED : :: std :: os :: raw :: c_uint = 16 ; pub const NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL : :: std :: os :: raw :: c_uint = 32 ; pub const NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH : :: std :: os :: raw :: c_uint = 64 ; pub const NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH : :: std :: os :: raw :: c_uint = 128 ; pub const NS_FONT_VARIANT_EAST_ASIAN_RUBY : :: std :: os :: raw :: c_uint = 256 ; pub const NS_FONT_VARIANT_EAST_ASIAN_COUNT : :: std :: os :: raw :: c_uint = 9 ; pub const NS_FONT_VARIANT_EAST_ASIAN_VARIANT_MASK : :: std :: os :: raw :: c_uint = 63 ; pub const NS_FONT_VARIANT_EAST_ASIAN_WIDTH_MASK : :: std :: os :: raw :: c_uint = 192 ; pub const NS_FONT_VARIANT_LIGATURES_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_VARIANT_LIGATURES_NONE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_VARIANT_LIGATURES_COMMON : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_VARIANT_LIGATURES_NO_COMMON : :: std :: os :: raw :: c_uint = 4 ; pub const NS_FONT_VARIANT_LIGATURES_DISCRETIONARY : :: std :: os :: raw :: c_uint = 8 ; pub const NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY : :: std :: os :: raw :: c_uint = 16 ; pub const NS_FONT_VARIANT_LIGATURES_HISTORICAL : :: std :: os :: raw :: c_uint = 32 ; pub const NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL : :: std :: os :: raw :: c_uint = 64 ; pub const NS_FONT_VARIANT_LIGATURES_CONTEXTUAL : :: std :: os :: raw :: c_uint = 128 ; pub const NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL : :: std :: os :: raw :: c_uint = 256 ; pub const NS_FONT_VARIANT_LIGATURES_COUNT : :: std :: os :: raw :: c_uint = 9 ; pub const NS_FONT_VARIANT_LIGATURES_COMMON_MASK : :: std :: os :: raw :: c_uint = 6 ; pub const NS_FONT_VARIANT_LIGATURES_DISCRETIONARY_MASK : :: std :: os :: raw :: c_uint = 24 ; pub const NS_FONT_VARIANT_LIGATURES_HISTORICAL_MASK : :: std :: os :: raw :: c_uint = 96 ; pub const NS_FONT_VARIANT_LIGATURES_CONTEXTUAL_MASK : :: std :: os :: raw :: c_uint = 384 ; pub const NS_FONT_VARIANT_NUMERIC_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_VARIANT_NUMERIC_LINING : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_VARIANT_NUMERIC_OLDSTYLE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_VARIANT_NUMERIC_PROPORTIONAL : :: std :: os :: raw :: c_uint = 4 ; pub const NS_FONT_VARIANT_NUMERIC_TABULAR : :: std :: os :: raw :: c_uint = 8 ; pub const NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS : :: std :: os :: raw :: c_uint = 16 ; pub const NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS : :: std :: os :: raw :: c_uint = 32 ; pub const NS_FONT_VARIANT_NUMERIC_SLASHZERO : :: std :: os :: raw :: c_uint = 64 ; pub const NS_FONT_VARIANT_NUMERIC_ORDINAL : :: std :: os :: raw :: c_uint = 128 ; pub const NS_FONT_VARIANT_NUMERIC_COUNT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_FONT_VARIANT_NUMERIC_FIGURE_MASK : :: std :: os :: raw :: c_uint = 3 ; pub const NS_FONT_VARIANT_NUMERIC_SPACING_MASK : :: std :: os :: raw :: c_uint = 12 ; pub const NS_FONT_VARIANT_NUMERIC_FRACTION_MASK : :: std :: os :: raw :: c_uint = 48 ; pub const NS_FONT_VARIANT_POSITION_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_VARIANT_POSITION_SUPER : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_VARIANT_POSITION_SUB : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_VARIANT_WIDTH_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_VARIANT_WIDTH_FULL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_FONT_VARIANT_WIDTH_HALF : :: std :: os :: raw :: c_uint = 2 ; pub const NS_FONT_VARIANT_WIDTH_THIRD : :: std :: os :: raw :: c_uint = 3 ; pub const NS_FONT_VARIANT_WIDTH_QUARTER : :: std :: os :: raw :: c_uint = 4 ; pub const NS_FONT_SUBSCRIPT_OFFSET_RATIO : f64 = 0.2 ; pub const NS_FONT_SUPERSCRIPT_OFFSET_RATIO : f64 = 0.34 ; pub const NS_FONT_SUB_SUPER_SIZE_RATIO_SMALL : f64 = 0.82 ; pub const NS_FONT_SUB_SUPER_SIZE_RATIO_LARGE : f64 = 0.667 ; pub const NS_FONT_SUB_SUPER_SMALL_SIZE : f64 = 20. ; pub const NS_FONT_SUB_SUPER_LARGE_SIZE : f64 = 45. ; pub const NS_FONT_VARIANT_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_FONT_VARIANT_SMALL_CAPS : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_COLOR_INHERIT_FROM_BODY : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_WILL_CHANGE_STACKING_CONTEXT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_WILL_CHANGE_TRANSFORM : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_WILL_CHANGE_SCROLL : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_WILL_CHANGE_OPACITY : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_WILL_CHANGE_FIXPOS_CB : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_WILL_CHANGE_ABSPOS_CB : :: std :: os :: raw :: c_uint = 32 ; pub const NS_STYLE_ANIMATION_ITERATION_COUNT_INFINITE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_ANIMATION_PLAY_STATE_RUNNING : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_ANIMATION_PLAY_STATE_PAUSED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_IMAGELAYER_ATTACHMENT_SCROLL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_IMAGELAYER_ATTACHMENT_FIXED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_IMAGELAYER_ATTACHMENT_LOCAL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_IMAGELAYER_CLIP_MOZ_ALMOST_PADDING : :: std :: os :: raw :: c_uint = 127 ; pub const NS_STYLE_IMAGELAYER_POSITION_CENTER : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_IMAGELAYER_POSITION_TOP : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_IMAGELAYER_POSITION_BOTTOM : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_IMAGELAYER_POSITION_LEFT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_IMAGELAYER_POSITION_RIGHT : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_IMAGELAYER_SIZE_CONTAIN : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_IMAGELAYER_SIZE_COVER : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_MASK_MODE_ALPHA : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_MASK_MODE_LUMINANCE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_MASK_MODE_MATCH_SOURCE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_BG_INLINE_POLICY_EACH_BOX : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_BG_INLINE_POLICY_CONTINUOUS : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_BG_INLINE_POLICY_BOUNDING_BOX : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_BORDER_COLLAPSE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_BORDER_SEPARATE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_BORDER_WIDTH_THIN : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_BORDER_WIDTH_MEDIUM : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_BORDER_WIDTH_THICK : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_BORDER_STYLE_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_BORDER_STYLE_GROOVE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_BORDER_STYLE_RIDGE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_BORDER_STYLE_DOTTED : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_BORDER_STYLE_DASHED : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_BORDER_STYLE_SOLID : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_BORDER_STYLE_DOUBLE : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_BORDER_STYLE_INSET : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_BORDER_STYLE_OUTSET : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_BORDER_STYLE_HIDDEN : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_BORDER_STYLE_AUTO : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_BORDER_IMAGE_SLICE_NOFILL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_BORDER_IMAGE_SLICE_FILL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CURSOR_AUTO : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CURSOR_CROSSHAIR : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_CURSOR_DEFAULT : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_CURSOR_POINTER : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_CURSOR_MOVE : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_CURSOR_E_RESIZE : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_CURSOR_NE_RESIZE : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_CURSOR_NW_RESIZE : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_CURSOR_N_RESIZE : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_CURSOR_SE_RESIZE : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_CURSOR_SW_RESIZE : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_CURSOR_S_RESIZE : :: std :: os :: raw :: c_uint = 12 ; pub const NS_STYLE_CURSOR_W_RESIZE : :: std :: os :: raw :: c_uint = 13 ; pub const NS_STYLE_CURSOR_TEXT : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_CURSOR_WAIT : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_CURSOR_HELP : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_CURSOR_COPY : :: std :: os :: raw :: c_uint = 17 ; pub const NS_STYLE_CURSOR_ALIAS : :: std :: os :: raw :: c_uint = 18 ; pub const NS_STYLE_CURSOR_CONTEXT_MENU : :: std :: os :: raw :: c_uint = 19 ; pub const NS_STYLE_CURSOR_CELL : :: std :: os :: raw :: c_uint = 20 ; pub const NS_STYLE_CURSOR_GRAB : :: std :: os :: raw :: c_uint = 21 ; pub const NS_STYLE_CURSOR_GRABBING : :: std :: os :: raw :: c_uint = 22 ; pub const NS_STYLE_CURSOR_SPINNING : :: std :: os :: raw :: c_uint = 23 ; pub const NS_STYLE_CURSOR_ZOOM_IN : :: std :: os :: raw :: c_uint = 24 ; pub const NS_STYLE_CURSOR_ZOOM_OUT : :: std :: os :: raw :: c_uint = 25 ; pub const NS_STYLE_CURSOR_NOT_ALLOWED : :: std :: os :: raw :: c_uint = 26 ; pub const NS_STYLE_CURSOR_COL_RESIZE : :: std :: os :: raw :: c_uint = 27 ; pub const NS_STYLE_CURSOR_ROW_RESIZE : :: std :: os :: raw :: c_uint = 28 ; pub const NS_STYLE_CURSOR_NO_DROP : :: std :: os :: raw :: c_uint = 29 ; pub const NS_STYLE_CURSOR_VERTICAL_TEXT : :: std :: os :: raw :: c_uint = 30 ; pub const NS_STYLE_CURSOR_ALL_SCROLL : :: std :: os :: raw :: c_uint = 31 ; pub const NS_STYLE_CURSOR_NESW_RESIZE : :: std :: os :: raw :: c_uint = 32 ; pub const NS_STYLE_CURSOR_NWSE_RESIZE : :: std :: os :: raw :: c_uint = 33 ; pub const NS_STYLE_CURSOR_NS_RESIZE : :: std :: os :: raw :: c_uint = 34 ; pub const NS_STYLE_CURSOR_EW_RESIZE : :: std :: os :: raw :: c_uint = 35 ; pub const NS_STYLE_CURSOR_NONE : :: std :: os :: raw :: c_uint = 36 ; pub const NS_STYLE_DIRECTION_LTR : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_DIRECTION_RTL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_WRITING_MODE_HORIZONTAL_TB : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_WRITING_MODE_VERTICAL_RL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_WRITING_MODE_VERTICAL_LR : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_WRITING_MODE_SIDEWAYS_MASK : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_WRITING_MODE_SIDEWAYS_RL : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_WRITING_MODE_SIDEWAYS_LR : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_CONTAIN_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_CONTAIN_STRICT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CONTAIN_LAYOUT : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_CONTAIN_STYLE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_CONTAIN_PAINT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_CONTAIN_ALL_BITS : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_ALIGN_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_ALIGN_NORMAL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_ALIGN_START : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_ALIGN_END : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_ALIGN_FLEX_START : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_ALIGN_FLEX_END : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_ALIGN_CENTER : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_ALIGN_LEFT : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_ALIGN_RIGHT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_ALIGN_BASELINE : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_ALIGN_LAST_BASELINE : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_ALIGN_STRETCH : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_ALIGN_SELF_START : :: std :: os :: raw :: c_uint = 12 ; pub const NS_STYLE_ALIGN_SELF_END : :: std :: os :: raw :: c_uint = 13 ; pub const NS_STYLE_ALIGN_SPACE_BETWEEN : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_ALIGN_SPACE_AROUND : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_ALIGN_SPACE_EVENLY : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_ALIGN_LEGACY : :: std :: os :: raw :: c_uint = 32 ; pub const NS_STYLE_ALIGN_SAFE : :: std :: os :: raw :: c_uint = 64 ; pub const NS_STYLE_ALIGN_UNSAFE : :: std :: os :: raw :: c_uint = 128 ; pub const NS_STYLE_ALIGN_FLAG_BITS : :: std :: os :: raw :: c_uint = 224 ; pub const NS_STYLE_ALIGN_ALL_BITS : :: std :: os :: raw :: c_uint = 255 ; pub const NS_STYLE_ALIGN_ALL_SHIFT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_JUSTIFY_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_JUSTIFY_NORMAL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_JUSTIFY_START : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_JUSTIFY_END : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_JUSTIFY_FLEX_START : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_JUSTIFY_FLEX_END : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_JUSTIFY_CENTER : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_JUSTIFY_LEFT : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_JUSTIFY_RIGHT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_JUSTIFY_BASELINE : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_JUSTIFY_LAST_BASELINE : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_JUSTIFY_STRETCH : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_JUSTIFY_SELF_START : :: std :: os :: raw :: c_uint = 12 ; pub const NS_STYLE_JUSTIFY_SELF_END : :: std :: os :: raw :: c_uint = 13 ; pub const NS_STYLE_JUSTIFY_SPACE_BETWEEN : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_JUSTIFY_SPACE_AROUND : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_JUSTIFY_SPACE_EVENLY : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_JUSTIFY_LEGACY : :: std :: os :: raw :: c_uint = 32 ; pub const NS_STYLE_JUSTIFY_SAFE : :: std :: os :: raw :: c_uint = 64 ; pub const NS_STYLE_JUSTIFY_UNSAFE : :: std :: os :: raw :: c_uint = 128 ; pub const NS_STYLE_JUSTIFY_FLAG_BITS : :: std :: os :: raw :: c_uint = 224 ; pub const NS_STYLE_JUSTIFY_ALL_BITS : :: std :: os :: raw :: c_uint = 255 ; pub const NS_STYLE_JUSTIFY_ALL_SHIFT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_FLEX_DIRECTION_ROW : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_FLEX_DIRECTION_ROW_REVERSE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_FLEX_DIRECTION_COLUMN : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_FLEX_DIRECTION_COLUMN_REVERSE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_FLEX_WRAP_NOWRAP : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_FLEX_WRAP_WRAP : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_FLEX_WRAP_WRAP_REVERSE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_ORDER_INITIAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_JUSTIFY_CONTENT_FLEX_START : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_JUSTIFY_CONTENT_FLEX_END : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_JUSTIFY_CONTENT_CENTER : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_JUSTIFY_CONTENT_SPACE_BETWEEN : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_JUSTIFY_CONTENT_SPACE_AROUND : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_FILTER_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_FILTER_URL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_FILTER_BLUR : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_FILTER_BRIGHTNESS : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_FILTER_CONTRAST : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_FILTER_GRAYSCALE : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_FILTER_INVERT : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_FILTER_OPACITY : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_FILTER_SATURATE : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_FILTER_SEPIA : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_FILTER_HUE_ROTATE : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_FILTER_DROP_SHADOW : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_FONT_STYLE_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_FONT_STYLE_ITALIC : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_FONT_STYLE_OBLIQUE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_FONT_WEIGHT_NORMAL : :: std :: os :: raw :: c_uint = 400 ; pub const NS_STYLE_FONT_WEIGHT_BOLD : :: std :: os :: raw :: c_uint = 700 ; pub const NS_STYLE_FONT_WEIGHT_BOLDER : :: std :: os :: raw :: c_int = -1 ; pub const NS_STYLE_FONT_WEIGHT_LIGHTER : :: std :: os :: raw :: c_int = -2 ; pub const NS_STYLE_FONT_SIZE_XXSMALL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_FONT_SIZE_XSMALL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_FONT_SIZE_SMALL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_FONT_SIZE_MEDIUM : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_FONT_SIZE_LARGE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_FONT_SIZE_XLARGE : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_FONT_SIZE_XXLARGE : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_FONT_SIZE_XXXLARGE : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_FONT_SIZE_LARGER : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_FONT_SIZE_SMALLER : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_FONT_SIZE_NO_KEYWORD : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_FONT_STRETCH_ULTRA_CONDENSED : :: std :: os :: raw :: c_int = -4 ; pub const NS_STYLE_FONT_STRETCH_EXTRA_CONDENSED : :: std :: os :: raw :: c_int = -3 ; pub const NS_STYLE_FONT_STRETCH_CONDENSED : :: std :: os :: raw :: c_int = -2 ; pub const NS_STYLE_FONT_STRETCH_SEMI_CONDENSED : :: std :: os :: raw :: c_int = -1 ; pub const NS_STYLE_FONT_STRETCH_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_FONT_STRETCH_SEMI_EXPANDED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_FONT_STRETCH_EXPANDED : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_FONT_STRETCH_EXTRA_EXPANDED : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_FONT_STRETCH_ULTRA_EXPANDED : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_FONT_CAPTION : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_FONT_ICON : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_FONT_MENU : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_FONT_MESSAGE_BOX : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_FONT_SMALL_CAPTION : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_FONT_STATUS_BAR : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_FONT_WINDOW : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_FONT_DOCUMENT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_FONT_WORKSPACE : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_FONT_DESKTOP : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_FONT_INFO : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_FONT_DIALOG : :: std :: os :: raw :: c_uint = 12 ; pub const NS_STYLE_FONT_BUTTON : :: std :: os :: raw :: c_uint = 13 ; pub const NS_STYLE_FONT_PULL_DOWN_MENU : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_FONT_LIST : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_FONT_FIELD : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_GRID_AUTO_FLOW_ROW : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_GRID_AUTO_FLOW_COLUMN : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_GRID_AUTO_FLOW_DENSE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_GRID_TEMPLATE_SUBGRID : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_GRID_REPEAT_AUTO_FILL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_GRID_REPEAT_AUTO_FIT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_MATHML_DEFAULT_SCRIPT_SIZE_MULTIPLIER : f64 = 0.71 ; pub const NS_MATHML_DEFAULT_SCRIPT_MIN_SIZE_PT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_MATHML_MATHVARIANT_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_MATHML_MATHVARIANT_NORMAL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_MATHML_MATHVARIANT_BOLD : :: std :: os :: raw :: c_uint = 2 ; pub const NS_MATHML_MATHVARIANT_ITALIC : :: std :: os :: raw :: c_uint = 3 ; pub const NS_MATHML_MATHVARIANT_BOLD_ITALIC : :: std :: os :: raw :: c_uint = 4 ; pub const NS_MATHML_MATHVARIANT_SCRIPT : :: std :: os :: raw :: c_uint = 5 ; pub const NS_MATHML_MATHVARIANT_BOLD_SCRIPT : :: std :: os :: raw :: c_uint = 6 ; pub const NS_MATHML_MATHVARIANT_FRAKTUR : :: std :: os :: raw :: c_uint = 7 ; pub const NS_MATHML_MATHVARIANT_DOUBLE_STRUCK : :: std :: os :: raw :: c_uint = 8 ; pub const NS_MATHML_MATHVARIANT_BOLD_FRAKTUR : :: std :: os :: raw :: c_uint = 9 ; pub const NS_MATHML_MATHVARIANT_SANS_SERIF : :: std :: os :: raw :: c_uint = 10 ; pub const NS_MATHML_MATHVARIANT_BOLD_SANS_SERIF : :: std :: os :: raw :: c_uint = 11 ; pub const NS_MATHML_MATHVARIANT_SANS_SERIF_ITALIC : :: std :: os :: raw :: c_uint = 12 ; pub const NS_MATHML_MATHVARIANT_SANS_SERIF_BOLD_ITALIC : :: std :: os :: raw :: c_uint = 13 ; pub const NS_MATHML_MATHVARIANT_MONOSPACE : :: std :: os :: raw :: c_uint = 14 ; pub const NS_MATHML_MATHVARIANT_INITIAL : :: std :: os :: raw :: c_uint = 15 ; pub const NS_MATHML_MATHVARIANT_TAILED : :: std :: os :: raw :: c_uint = 16 ; pub const NS_MATHML_MATHVARIANT_LOOPED : :: std :: os :: raw :: c_uint = 17 ; pub const NS_MATHML_MATHVARIANT_STRETCHED : :: std :: os :: raw :: c_uint = 18 ; pub const NS_MATHML_DISPLAYSTYLE_INLINE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_MATHML_DISPLAYSTYLE_BLOCK : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_WIDTH_MAX_CONTENT : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_WIDTH_MIN_CONTENT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_WIDTH_FIT_CONTENT : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_WIDTH_AVAILABLE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_POSITION_STATIC : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_POSITION_RELATIVE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_POSITION_ABSOLUTE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_POSITION_FIXED : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_POSITION_STICKY : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_CLIP_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_CLIP_RECT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CLIP_TYPE_MASK : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_CLIP_LEFT_AUTO : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_CLIP_TOP_AUTO : :: std :: os :: raw :: c_uint = 32 ; pub const NS_STYLE_CLIP_RIGHT_AUTO : :: std :: os :: raw :: c_uint = 64 ; pub const NS_STYLE_CLIP_BOTTOM_AUTO : :: std :: os :: raw :: c_uint = 128 ; pub const NS_STYLE_FRAME_YES : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_FRAME_NO : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_FRAME_0 : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_FRAME_1 : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_FRAME_ON : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_FRAME_OFF : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_FRAME_AUTO : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_FRAME_SCROLL : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_FRAME_NOSCROLL : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_OVERFLOW_VISIBLE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_OVERFLOW_HIDDEN : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_OVERFLOW_SCROLL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_OVERFLOW_AUTO : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_OVERFLOW_CLIP : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_OVERFLOW_SCROLLBARS_HORIZONTAL : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_OVERFLOW_SCROLLBARS_VERTICAL : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_OVERFLOW_CLIP_BOX_PADDING_BOX : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_OVERFLOW_CLIP_BOX_CONTENT_BOX : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_LIST_STYLE_CUSTOM : :: std :: os :: raw :: c_int = -1 ; pub const NS_STYLE_LIST_STYLE_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_LIST_STYLE_DECIMAL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_LIST_STYLE_DISC : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_LIST_STYLE_CIRCLE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_LIST_STYLE_SQUARE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_LIST_STYLE_DISCLOSURE_CLOSED : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_LIST_STYLE_DISCLOSURE_OPEN : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_LIST_STYLE_HEBREW : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_LIST_STYLE_JAPANESE_INFORMAL : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_LIST_STYLE_JAPANESE_FORMAL : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_LIST_STYLE_KOREAN_HANGUL_FORMAL : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_LIST_STYLE_KOREAN_HANJA_INFORMAL : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_LIST_STYLE_KOREAN_HANJA_FORMAL : :: std :: os :: raw :: c_uint = 12 ; pub const NS_STYLE_LIST_STYLE_SIMP_CHINESE_INFORMAL : :: std :: os :: raw :: c_uint = 13 ; pub const NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC : :: std :: os :: raw :: c_uint = 17 ; pub const NS_STYLE_LIST_STYLE_LOWER_ROMAN : :: std :: os :: raw :: c_uint = 100 ; pub const NS_STYLE_LIST_STYLE_UPPER_ROMAN : :: std :: os :: raw :: c_uint = 101 ; pub const NS_STYLE_LIST_STYLE_LOWER_ALPHA : :: std :: os :: raw :: c_uint = 102 ; pub const NS_STYLE_LIST_STYLE_UPPER_ALPHA : :: std :: os :: raw :: c_uint = 103 ; pub const NS_STYLE_LIST_STYLE_POSITION_INSIDE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_LIST_STYLE_POSITION_OUTSIDE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_MARGIN_SIZE_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_POINTER_EVENTS_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_POINTER_EVENTS_VISIBLEFILL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_POINTER_EVENTS_VISIBLESTROKE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_POINTER_EVENTS_VISIBLE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_POINTER_EVENTS_PAINTED : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_POINTER_EVENTS_FILL : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_POINTER_EVENTS_STROKE : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_POINTER_EVENTS_ALL : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_POINTER_EVENTS_AUTO : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_IMAGE_ORIENTATION_FLIP : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_IMAGE_ORIENTATION_FROM_IMAGE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_ISOLATION_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_ISOLATION_ISOLATE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_OBJECT_FIT_FILL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_OBJECT_FIT_CONTAIN : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_OBJECT_FIT_COVER : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_OBJECT_FIT_NONE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_OBJECT_FIT_SCALE_DOWN : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_RESIZE_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_RESIZE_BOTH : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_RESIZE_HORIZONTAL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_RESIZE_VERTICAL : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_TEXT_ALIGN_START : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_ALIGN_LEFT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_ALIGN_RIGHT : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_ALIGN_CENTER : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_TEXT_ALIGN_JUSTIFY : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_TEXT_ALIGN_CHAR : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_TEXT_ALIGN_END : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_TEXT_ALIGN_AUTO : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_TEXT_ALIGN_MOZ_CENTER : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_TEXT_ALIGN_MOZ_RIGHT : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_TEXT_ALIGN_MOZ_LEFT : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_TEXT_ALIGN_MOZ_CENTER_OR_INHERIT : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_TEXT_ALIGN_UNSAFE : :: std :: os :: raw :: c_uint = 12 ; pub const NS_STYLE_TEXT_ALIGN_MATCH_PARENT : :: std :: os :: raw :: c_uint = 13 ; pub const NS_STYLE_TEXT_DECORATION_LINE_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_DECORATION_LINE_OVERLINE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_TEXT_DECORATION_LINE_BLINK : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_TEXT_DECORATION_LINE_OVERRIDE_ALL : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_TEXT_DECORATION_LINE_LINES_MASK : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_TEXT_DECORATION_STYLE_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_DECORATION_STYLE_DOTTED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_DECORATION_STYLE_DASHED : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_DECORATION_STYLE_SOLID : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_TEXT_DECORATION_STYLE_WAVY : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_TEXT_DECORATION_STYLE_MAX : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_TEXT_OVERFLOW_CLIP : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_OVERFLOW_ELLIPSIS : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_OVERFLOW_STRING : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_TRANSFORM_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_TRANSFORM_CAPITALIZE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_TRANSFORM_LOWERCASE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_TRANSFORM_UPPERCASE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_TEXT_TRANSFORM_FULL_WIDTH : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_TOUCH_ACTION_NONE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TOUCH_ACTION_AUTO : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TOUCH_ACTION_PAN_X : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_TOUCH_ACTION_PAN_Y : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_TOUCH_ACTION_MANIPULATION : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_TOP_LAYER_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TOP_LAYER_TOP : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_LINEAR : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_OUT : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN_OUT : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_START : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_END : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_VERTICAL_ALIGN_BASELINE : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_VERTICAL_ALIGN_SUB : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_VERTICAL_ALIGN_SUPER : :: std :: os :: raw :: c_uint = 16 ; pub const NS_STYLE_VERTICAL_ALIGN_TOP : :: std :: os :: raw :: c_uint = 17 ; pub const NS_STYLE_VERTICAL_ALIGN_TEXT_TOP : :: std :: os :: raw :: c_uint = 18 ; pub const NS_STYLE_VERTICAL_ALIGN_MIDDLE : :: std :: os :: raw :: c_uint = 19 ; pub const NS_STYLE_VERTICAL_ALIGN_TEXT_BOTTOM : :: std :: os :: raw :: c_uint = 20 ; pub const NS_STYLE_VERTICAL_ALIGN_BOTTOM : :: std :: os :: raw :: c_uint = 21 ; pub const NS_STYLE_VERTICAL_ALIGN_MIDDLE_WITH_BASELINE : :: std :: os :: raw :: c_uint = 22 ; pub const NS_STYLE_VISIBILITY_HIDDEN : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_VISIBILITY_VISIBLE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_VISIBILITY_COLLAPSE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TABSIZE_INITIAL : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_WORDBREAK_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_WORDBREAK_BREAK_ALL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_WORDBREAK_KEEP_ALL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_OVERFLOWWRAP_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_OVERFLOWWRAP_BREAK_WORD : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_RUBY_ALIGN_START : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_RUBY_ALIGN_CENTER : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_RUBY_ALIGN_SPACE_BETWEEN : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_RUBY_ALIGN_SPACE_AROUND : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_RUBY_POSITION_OVER : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_RUBY_POSITION_UNDER : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_RUBY_POSITION_INTER_CHARACTER : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_SIZE_ADJUST_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_SIZE_ADJUST_AUTO : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_ORIENTATION_MIXED : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_ORIENTATION_UPRIGHT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_ORIENTATION_SIDEWAYS : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_ALL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_2 : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_3 : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_4 : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_LINE_HEIGHT_BLOCK_HEIGHT : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_UNICODE_BIDI_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_UNICODE_BIDI_EMBED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_UNICODE_BIDI_ISOLATE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_UNICODE_BIDI_BIDI_OVERRIDE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_UNICODE_BIDI_PLAINTEXT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_TABLE_LAYOUT_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TABLE_LAYOUT_FIXED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TABLE_EMPTY_CELLS_HIDE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TABLE_EMPTY_CELLS_SHOW : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CAPTION_SIDE_TOP : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_CAPTION_SIDE_RIGHT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CAPTION_SIDE_BOTTOM : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_CAPTION_SIDE_LEFT : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_CAPTION_SIDE_TOP_OUTSIDE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_CAPTION_SIDE_BOTTOM_OUTSIDE : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_CELL_SCOPE_ROW : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_CELL_SCOPE_COL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CELL_SCOPE_ROWGROUP : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_CELL_SCOPE_COLGROUP : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_PAGE_MARKS_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_PAGE_MARKS_CROP : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_PAGE_MARKS_REGISTER : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_PAGE_SIZE_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_PAGE_SIZE_PORTRAIT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_PAGE_SIZE_LANDSCAPE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_PAGE_BREAK_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_PAGE_BREAK_ALWAYS : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_PAGE_BREAK_AVOID : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_PAGE_BREAK_LEFT : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_PAGE_BREAK_RIGHT : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_COLUMN_COUNT_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_COLUMN_COUNT_UNLIMITED : :: std :: os :: raw :: c_int = -1 ; pub const NS_STYLE_COLUMN_FILL_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_COLUMN_FILL_BALANCE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_COLUMN_SPAN_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_COLUMN_SPAN_ALL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_IME_MODE_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_IME_MODE_NORMAL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_IME_MODE_ACTIVE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_IME_MODE_DISABLED : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_IME_MODE_INACTIVE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_GRADIENT_SHAPE_LINEAR : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_GRADIENT_SHAPE_ELLIPTICAL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_GRADIENT_SHAPE_CIRCULAR : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_GRADIENT_SIZE_EXPLICIT_SIZE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_CONTEXT_PROPERTY_FILL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CONTEXT_PROPERTY_STROKE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_CONTEXT_PROPERTY_FILL_OPACITY : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_CONTEXT_PROPERTY_STROKE_OPACITY : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_WINDOW_SHADOW_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_WINDOW_SHADOW_DEFAULT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_WINDOW_SHADOW_MENU : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_WINDOW_SHADOW_TOOLTIP : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_WINDOW_SHADOW_SHEET : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_DOMINANT_BASELINE_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_DOMINANT_BASELINE_USE_SCRIPT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_DOMINANT_BASELINE_NO_CHANGE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_DOMINANT_BASELINE_RESET_SIZE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_DOMINANT_BASELINE_IDEOGRAPHIC : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_DOMINANT_BASELINE_ALPHABETIC : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_DOMINANT_BASELINE_HANGING : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_DOMINANT_BASELINE_MATHEMATICAL : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_DOMINANT_BASELINE_CENTRAL : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_DOMINANT_BASELINE_MIDDLE : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_DOMINANT_BASELINE_TEXT_AFTER_EDGE : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_DOMINANT_BASELINE_TEXT_BEFORE_EDGE : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_IMAGE_RENDERING_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_IMAGE_RENDERING_OPTIMIZESPEED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_IMAGE_RENDERING_OPTIMIZEQUALITY : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_IMAGE_RENDERING_CRISPEDGES : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_MASK_TYPE_LUMINANCE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_MASK_TYPE_ALPHA : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_PAINT_ORDER_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_PAINT_ORDER_FILL : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_PAINT_ORDER_STROKE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_PAINT_ORDER_MARKERS : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_PAINT_ORDER_LAST_VALUE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_PAINT_ORDER_BITWIDTH : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_SHAPE_RENDERING_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_SHAPE_RENDERING_OPTIMIZESPEED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_SHAPE_RENDERING_CRISPEDGES : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_SHAPE_RENDERING_GEOMETRICPRECISION : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_STROKE_LINECAP_BUTT : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_STROKE_LINECAP_ROUND : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_STROKE_LINECAP_SQUARE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_STROKE_LINEJOIN_MITER : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_STROKE_LINEJOIN_ROUND : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_STROKE_LINEJOIN_BEVEL : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_STROKE_PROP_CONTEXT_VALUE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_ANCHOR_START : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_ANCHOR_MIDDLE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_ANCHOR_END : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_EMPHASIS_POSITION_OVER : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_EMPHASIS_POSITION_UNDER : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_EMPHASIS_POSITION_LEFT : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_TEXT_EMPHASIS_POSITION_RIGHT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT_ZH : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_FILL_MASK : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_FILLED : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_OPEN : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_SHAPE_MASK : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_DOT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_CIRCLE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_DOUBLE_CIRCLE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_TRIANGLE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_SESAME : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_TEXT_EMPHASIS_STYLE_STRING : :: std :: os :: raw :: c_uint = 255 ; pub const NS_STYLE_TEXT_RENDERING_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TEXT_RENDERING_OPTIMIZESPEED : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_TEXT_RENDERING_OPTIMIZELEGIBILITY : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_TEXT_RENDERING_GEOMETRICPRECISION : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_COLOR_ADJUST_ECONOMY : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_COLOR_ADJUST_EXACT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_COLOR_INTERPOLATION_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_COLOR_INTERPOLATION_SRGB : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_COLOR_INTERPOLATION_LINEARRGB : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_VECTOR_EFFECT_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_VECTOR_EFFECT_NON_SCALING_STROKE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_BACKFACE_VISIBILITY_VISIBLE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_BACKFACE_VISIBILITY_HIDDEN : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TRANSFORM_STYLE_FLAT : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_TRANSFORM_STYLE_PRESERVE_3D : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_CONTEXT_FILL_OPACITY : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_CONTEXT_STROKE_OPACITY : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_BLEND_NORMAL : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_BLEND_MULTIPLY : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_BLEND_SCREEN : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_BLEND_OVERLAY : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_BLEND_DARKEN : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_BLEND_LIGHTEN : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_BLEND_COLOR_DODGE : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_BLEND_COLOR_BURN : :: std :: os :: raw :: c_uint = 7 ; pub const NS_STYLE_BLEND_HARD_LIGHT : :: std :: os :: raw :: c_uint = 8 ; pub const NS_STYLE_BLEND_SOFT_LIGHT : :: std :: os :: raw :: c_uint = 9 ; pub const NS_STYLE_BLEND_DIFFERENCE : :: std :: os :: raw :: c_uint = 10 ; pub const NS_STYLE_BLEND_EXCLUSION : :: std :: os :: raw :: c_uint = 11 ; pub const NS_STYLE_BLEND_HUE : :: std :: os :: raw :: c_uint = 12 ; pub const NS_STYLE_BLEND_SATURATION : :: std :: os :: raw :: c_uint = 13 ; pub const NS_STYLE_BLEND_COLOR : :: std :: os :: raw :: c_uint = 14 ; pub const NS_STYLE_BLEND_LUMINOSITY : :: std :: os :: raw :: c_uint = 15 ; pub const NS_STYLE_MASK_COMPOSITE_ADD : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_MASK_COMPOSITE_SUBTRACT : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_MASK_COMPOSITE_INTERSECT : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_MASK_COMPOSITE_EXCLUDE : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_CONTROL_CHARACTER_VISIBILITY_HIDDEN : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_CONTROL_CHARACTER_VISIBILITY_VISIBLE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_COUNTER_SYSTEM_CYCLIC : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_COUNTER_SYSTEM_NUMERIC : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_COUNTER_SYSTEM_ALPHABETIC : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_COUNTER_SYSTEM_SYMBOLIC : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_COUNTER_SYSTEM_ADDITIVE : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_COUNTER_SYSTEM_FIXED : :: std :: os :: raw :: c_uint = 5 ; pub const NS_STYLE_COUNTER_SYSTEM_EXTENDS : :: std :: os :: raw :: c_uint = 6 ; pub const NS_STYLE_COUNTER_RANGE_INFINITE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_COUNTER_SPEAKAS_BULLETS : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_COUNTER_SPEAKAS_NUMBERS : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_COUNTER_SPEAKAS_WORDS : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_COUNTER_SPEAKAS_SPELL_OUT : :: std :: os :: raw :: c_uint = 3 ; pub const NS_STYLE_COUNTER_SPEAKAS_OTHER : :: std :: os :: raw :: c_uint = 255 ; pub const NS_STYLE_SCROLL_BEHAVIOR_AUTO : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_SCROLL_BEHAVIOR_SMOOTH : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_SCROLL_SNAP_TYPE_NONE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_SCROLL_SNAP_TYPE_MANDATORY : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_SCROLL_SNAP_TYPE_PROXIMITY : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_ORIENTATION_PORTRAIT : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_ORIENTATION_LANDSCAPE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_SCAN_PROGRESSIVE : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_SCAN_INTERLACE : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_DISPLAY_MODE_BROWSER : :: std :: os :: raw :: c_uint = 0 ; pub const NS_STYLE_DISPLAY_MODE_MINIMAL_UI : :: std :: os :: raw :: c_uint = 1 ; pub const NS_STYLE_DISPLAY_MODE_STANDALONE : :: std :: os :: raw :: c_uint = 2 ; pub const NS_STYLE_DISPLAY_MODE_FULLSCREEN : :: std :: os :: raw :: c_uint = 3 ; pub const CSS_PSEUDO_ELEMENT_IS_CSS2 : :: std :: os :: raw :: c_uint = 1 ; pub const CSS_PSEUDO_ELEMENT_CONTAINS_ELEMENTS : :: std :: os :: raw :: c_uint = 2 ; pub const CSS_PSEUDO_ELEMENT_SUPPORTS_STYLE_ATTRIBUTE : :: std :: os :: raw :: c_uint = 4 ; pub const CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE : :: std :: os :: raw :: c_uint = 8 ; pub const CSS_PSEUDO_ELEMENT_UA_SHEET_ONLY : :: std :: os :: raw :: c_uint = 16 ; pub const CSS_PSEUDO_ELEMENT_IS_JS_CREATED_NAC : :: std :: os :: raw :: c_uint = 32 ; pub const CSS_PSEUDO_ELEMENT_IS_FLEX_OR_GRID_ITEM : :: std :: os :: raw :: c_uint = 64 ; pub const kNameSpaceID_Unknown : :: std :: os :: raw :: c_int = -1 ; pub const kNameSpaceID_XMLNS : :: std :: os :: raw :: c_uint = 1 ; pub const kNameSpaceID_XML : :: std :: os :: raw :: c_uint = 2 ; pub const kNameSpaceID_XHTML : :: std :: os :: raw :: c_uint = 3 ; pub const kNameSpaceID_XLink : :: std :: os :: raw :: c_uint = 4 ; pub const kNameSpaceID_XSLT : :: std :: os :: raw :: c_uint = 5 ; pub const kNameSpaceID_XBL : :: std :: os :: raw :: c_uint = 6 ; pub const kNameSpaceID_MathML : :: std :: os :: raw :: c_uint = 7 ; pub const kNameSpaceID_RDF : :: std :: os :: raw :: c_uint = 8 ; pub const kNameSpaceID_XUL : :: std :: os :: raw :: c_uint = 9 ; pub const kNameSpaceID_SVG : :: std :: os :: raw :: c_uint = 10 ; pub const kNameSpaceID_disabled_MathML : :: std :: os :: raw :: c_uint = 11 ; pub const kNameSpaceID_disabled_SVG : :: std :: os :: raw :: c_uint = 12 ; pub const kNameSpaceID_LastBuiltin : :: std :: os :: raw :: c_uint = 12 ; pub const kNameSpaceID_Wildcard : :: std :: os :: raw :: c_int = -2147483648 ; pub const NS_AUTHOR_SPECIFIED_BACKGROUND : :: std :: os :: raw :: c_uint = 1 ; pub const NS_AUTHOR_SPECIFIED_BORDER : :: std :: os :: raw :: c_uint = 2 ; pub const NS_AUTHOR_SPECIFIED_PADDING : :: std :: os :: raw :: c_uint = 4 ; pub const NS_STYLE_INHERIT_MASK : :: std :: os :: raw :: c_uint = 16777215 ; pub const NS_STYLE_HAS_TEXT_DECORATION_LINES : :: std :: os :: raw :: c_uint = 16777216 ; pub const NS_STYLE_HAS_PSEUDO_ELEMENT_DATA : :: std :: os :: raw :: c_uint = 33554432 ; pub const NS_STYLE_RELEVANT_LINK_VISITED : :: std :: os :: raw :: c_uint = 67108864 ; pub const NS_STYLE_IS_STYLE_IF_VISITED : :: std :: os :: raw :: c_uint = 134217728 ; pub const NS_STYLE_CHILD_USES_GRANDANCESTOR_STYLE : :: std :: os :: raw :: c_uint = 268435456 ; pub const NS_STYLE_IS_SHARED : :: std :: os :: raw :: c_uint = 536870912 ; pub const NS_STYLE_IS_GOING_AWAY : :: std :: os :: raw :: c_uint = 1073741824 ; pub const NS_STYLE_SUPPRESS_LINEBREAK : :: std :: os :: raw :: c_uint = 2147483648 ; pub const NS_STYLE_IN_DISPLAY_NONE_SUBTREE : :: std :: os :: raw :: c_ulonglong = 4294967296 ; pub const NS_STYLE_INELIGIBLE_FOR_SHARING : :: std :: os :: raw :: c_ulonglong = 8589934592 ; pub const NS_STYLE_HAS_CHILD_THAT_USES_RESET_STYLE : :: std :: os :: raw :: c_ulonglong = 17179869184 ; pub const NS_STYLE_IS_TEXT_COMBINED : :: std :: os :: raw :: c_ulonglong = 34359738368 ; pub const NS_STYLE_CONTEXT_IS_GECKO : :: std :: os :: raw :: c_ulonglong = 68719476736 ; pub const NS_STYLE_CONTEXT_TYPE_SHIFT : :: std :: os :: raw :: c_uint = 37 ; pub mod std { # [ allow ( unused_imports ) ] use self :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nothrow_t { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nothrow_t ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nothrow_t > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( nothrow_t ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nothrow_t > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( nothrow_t ) ) ) ; } impl Clone for nothrow_t { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct pair < _T1 , _T2 > { pub first : _T1 , pub second : _T2 , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < _T1 > > , pub _phantom_1 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < _T2 > > , } pub type pair_first_type < _T1 > = _T1 ; pub type pair_second_type < _T2 > = _T2 ; pub type pair__PCCP = u8 ; pub type pair__PCCFP = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct input_iterator_tag { pub _address : u8 , } # [ test ] fn bindgen_test_layout_input_iterator_tag ( ) { assert_eq ! ( :: std :: mem :: size_of :: < input_iterator_tag > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( input_iterator_tag ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < input_iterator_tag > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( input_iterator_tag ) ) ) ; } impl Clone for input_iterator_tag { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct iterator { pub _address : u8 , } pub type iterator_iterator_category < _Category > = _Category ; pub type iterator_value_type < _Tp > = _Tp ; pub type iterator_difference_type < _Distance > = _Distance ; pub type iterator_pointer < _Pointer > = _Pointer ; pub type iterator_reference < _Reference > = _Reference ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct atomic { pub _address : u8 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct function { pub _address : u8 , } pub type _Base_bitset__WordT = :: std :: os :: raw :: c_ulong ; pub type bitset__Base = u8 ; pub type bitset__WordT = :: std :: os :: raw :: c_ulong ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct bitset_reference { pub _M_wp : * mut root :: std :: bitset__WordT , pub _M_bpos : usize , } } pub mod __gnu_cxx { # [ allow ( unused_imports ) ] use self :: super :: super :: root ; } pub type __int8_t = :: std :: os :: raw :: c_schar ; pub type __uint8_t = :: std :: os :: raw :: c_uchar ; pub type __int16_t = :: std :: os :: raw :: c_short ; pub type __uint16_t = :: std :: os :: raw :: c_ushort ; pub type __int32_t = :: std :: os :: raw :: c_int ; pub type __uint32_t = :: std :: os :: raw :: c_uint ; pub type __int64_t = :: std :: os :: raw :: c_long ; pub type __uint64_t = :: std :: os :: raw :: c_ulong ; pub mod mozilla { # [ allow ( unused_imports ) ] use self :: super :: super :: root ; pub type fallible_t = root :: std :: nothrow_t ; pub type IntegralConstant_ValueType < T > = T ; pub type IntegralConstant_Type = u8 ; - /// Convenient aliases. - pub type TrueType = u8 ; pub type FalseType = u8 ; pub mod detail { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; pub const StringDataFlags_TERMINATED : root :: mozilla :: detail :: StringDataFlags = 1 ; pub const StringDataFlags_VOIDED : root :: mozilla :: detail :: StringDataFlags = 2 ; pub const StringDataFlags_SHARED : root :: mozilla :: detail :: StringDataFlags = 4 ; pub const StringDataFlags_OWNED : root :: mozilla :: detail :: StringDataFlags = 8 ; pub const StringDataFlags_INLINE : root :: mozilla :: detail :: StringDataFlags = 16 ; pub const StringDataFlags_LITERAL : root :: mozilla :: detail :: StringDataFlags = 32 ; pub type StringDataFlags = u16 ; pub const StringClassFlags_INLINE : root :: mozilla :: detail :: StringClassFlags = 1 ; pub const StringClassFlags_NULL_TERMINATED : root :: mozilla :: detail :: StringClassFlags = 2 ; pub type StringClassFlags = u16 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTStringRepr < T > { pub mData : * mut root :: mozilla :: detail :: nsTStringRepr_char_type < T > , pub mLength : root :: mozilla :: detail :: nsTStringRepr_size_type , pub mDataFlags : root :: mozilla :: detail :: nsTStringRepr_DataFlags , pub mClassFlags : root :: mozilla :: detail :: nsTStringRepr_ClassFlags , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsTStringRepr_fallible_t = root :: mozilla :: fallible_t ; pub type nsTStringRepr_char_type < T > = T ; pub type nsTStringRepr_self_type < T > = root :: mozilla :: detail :: nsTStringRepr < T > ; pub type nsTStringRepr_base_string_type < T > = root :: mozilla :: detail :: nsTStringRepr_self_type < T > ; pub type nsTStringRepr_substring_type < T > = root :: nsTSubstring < T > ; pub type nsTStringRepr_substring_tuple_type < T > = root :: nsTSubstringTuple < T > ; pub type nsTStringRepr_literalstring_type < T > = root :: nsTLiteralString < T > ; pub type nsTStringRepr_const_iterator < T > = root :: nsReadingIterator < root :: mozilla :: detail :: nsTStringRepr_char_type < T > > ; pub type nsTStringRepr_iterator < T > = root :: nsWritingIterator < root :: mozilla :: detail :: nsTStringRepr_char_type < T > > ; pub type nsTStringRepr_comparator_type = root :: nsTStringComparator ; pub type nsTStringRepr_char_iterator < T > = * mut root :: mozilla :: detail :: nsTStringRepr_char_type < T > ; pub type nsTStringRepr_const_char_iterator < T > = * const root :: mozilla :: detail :: nsTStringRepr_char_type < T > ; pub type nsTStringRepr_index_type = u32 ; pub type nsTStringRepr_size_type = u32 ; pub use self :: super :: super :: super :: root :: mozilla :: detail :: StringDataFlags as nsTStringRepr_DataFlags ; pub use self :: super :: super :: super :: root :: mozilla :: detail :: StringClassFlags as nsTStringRepr_ClassFlags ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTStringRepr_raw_type { pub _address : u8 , } pub type nsTStringRepr_raw_type_type < U > = * mut U ; - /// LinkedList supports refcounted elements using this adapter class. Clients +#[allow(non_snake_case, non_camel_case_types, non_upper_case_globals)] +pub mod root { + #[repr(C)] + #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] + pub struct __BindgenBitfieldUnit<Storage, Align> + where + Storage: AsRef<[u8]> + AsMut<[u8]>, + { + storage: Storage, + align: [Align; 0], + } + + impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align> + where + Storage: AsRef<[u8]> + AsMut<[u8]>, + { + #[inline] + pub fn new(storage: Storage) -> Self { + Self { storage, align: [] } + } + + #[inline] + pub fn get_bit(&self, index: usize) -> bool { + debug_assert!(index / 8 < self.storage.as_ref().len()); + + let byte_index = index / 8; + let byte = self.storage.as_ref()[byte_index]; + + let bit_index = index % 8; + let mask = 1 << bit_index; + + byte & mask == mask + } + + #[inline] + pub fn set_bit(&mut self, index: usize, val: bool) { + debug_assert!(index / 8 < self.storage.as_ref().len()); + + let byte_index = index / 8; + let byte = &mut self.storage.as_mut()[byte_index]; + + let bit_index = index % 8; + let mask = 1 << bit_index; + + if val { + *byte |= mask; + } else { + *byte &= !mask; + } + } + + #[inline] + pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { + debug_assert!(bit_width <= 64); + debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); + debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); + + let mut val = 0; + + for i in 0..(bit_width as usize) { + if self.get_bit(i + bit_offset) { + val |= 1 << i; + } + } + + val + } + + #[inline] + pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { + debug_assert!(bit_width <= 64); + debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); + debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); + + for i in 0..(bit_width as usize) { + let mask = 1 << i; + let val_bit_is_set = val & mask == mask; + self.set_bit(i + bit_offset, val_bit_is_set); + } + } + } + #[repr(C)] + pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>); + impl<T> __BindgenUnionField<T> { + #[inline] + pub fn new() -> Self { + __BindgenUnionField(::std::marker::PhantomData) + } + #[inline] + pub unsafe fn as_ref(&self) -> &T { + ::std::mem::transmute(self) + } + #[inline] + pub unsafe fn as_mut(&mut self) -> &mut T { + ::std::mem::transmute(self) + } + } + impl<T> ::std::default::Default for __BindgenUnionField<T> { + #[inline] + fn default() -> Self { + Self::new() + } + } + impl<T> ::std::clone::Clone for __BindgenUnionField<T> { + #[inline] + fn clone(&self) -> Self { + Self::new() + } + } + impl<T> ::std::marker::Copy for __BindgenUnionField<T> {} + impl<T> ::std::fmt::Debug for __BindgenUnionField<T> { + fn fmt(&self, fmt: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + fmt.write_str("__BindgenUnionField") + } + } + impl<T> ::std::hash::Hash for __BindgenUnionField<T> { + fn hash<H: ::std::hash::Hasher>(&self, _state: &mut H) {} + } + impl<T> ::std::cmp::PartialEq for __BindgenUnionField<T> { + fn eq(&self, _other: &__BindgenUnionField<T>) -> bool { + true + } + } + impl<T> ::std::cmp::Eq for __BindgenUnionField<T> {} + #[allow(unused_imports)] + use self::super::root; + pub const NS_FONT_STYLE_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_STYLE_ITALIC: ::std::os::raw::c_uint = 1; + pub const NS_FONT_STYLE_OBLIQUE: ::std::os::raw::c_uint = 2; + pub const NS_FONT_WEIGHT_NORMAL: ::std::os::raw::c_uint = 400; + pub const NS_FONT_WEIGHT_BOLD: ::std::os::raw::c_uint = 700; + pub const NS_FONT_WEIGHT_THIN: ::std::os::raw::c_uint = 100; + pub const NS_FONT_STRETCH_ULTRA_CONDENSED: ::std::os::raw::c_int = -4; + pub const NS_FONT_STRETCH_EXTRA_CONDENSED: ::std::os::raw::c_int = -3; + pub const NS_FONT_STRETCH_CONDENSED: ::std::os::raw::c_int = -2; + pub const NS_FONT_STRETCH_SEMI_CONDENSED: ::std::os::raw::c_int = -1; + pub const NS_FONT_STRETCH_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_STRETCH_SEMI_EXPANDED: ::std::os::raw::c_uint = 1; + pub const NS_FONT_STRETCH_EXPANDED: ::std::os::raw::c_uint = 2; + pub const NS_FONT_STRETCH_EXTRA_EXPANDED: ::std::os::raw::c_uint = 3; + pub const NS_FONT_STRETCH_ULTRA_EXPANDED: ::std::os::raw::c_uint = 4; + pub const NS_FONT_SMOOTHING_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_FONT_SMOOTHING_GRAYSCALE: ::std::os::raw::c_uint = 1; + pub const NS_FONT_KERNING_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_FONT_KERNING_NONE: ::std::os::raw::c_uint = 1; + pub const NS_FONT_KERNING_NORMAL: ::std::os::raw::c_uint = 2; + pub const NS_FONT_SYNTHESIS_WEIGHT: ::std::os::raw::c_uint = 1; + pub const NS_FONT_SYNTHESIS_STYLE: ::std::os::raw::c_uint = 2; + pub const NS_FONT_DISPLAY_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_FONT_DISPLAY_BLOCK: ::std::os::raw::c_uint = 1; + pub const NS_FONT_DISPLAY_SWAP: ::std::os::raw::c_uint = 2; + pub const NS_FONT_DISPLAY_FALLBACK: ::std::os::raw::c_uint = 3; + pub const NS_FONT_DISPLAY_OPTIONAL: ::std::os::raw::c_uint = 4; + pub const NS_FONT_VARIANT_ALTERNATES_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_VARIANT_ALTERNATES_HISTORICAL: ::std::os::raw::c_uint = 1; + pub const NS_FONT_VARIANT_ALTERNATES_STYLISTIC: ::std::os::raw::c_uint = 2; + pub const NS_FONT_VARIANT_ALTERNATES_STYLESET: ::std::os::raw::c_uint = 4; + pub const NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT: ::std::os::raw::c_uint = 8; + pub const NS_FONT_VARIANT_ALTERNATES_SWASH: ::std::os::raw::c_uint = 16; + pub const NS_FONT_VARIANT_ALTERNATES_ORNAMENTS: ::std::os::raw::c_uint = 32; + pub const NS_FONT_VARIANT_ALTERNATES_ANNOTATION: ::std::os::raw::c_uint = 64; + pub const NS_FONT_VARIANT_ALTERNATES_COUNT: ::std::os::raw::c_uint = 7; + pub const NS_FONT_VARIANT_ALTERNATES_ENUMERATED_MASK: ::std::os::raw::c_uint = 1; + pub const NS_FONT_VARIANT_ALTERNATES_FUNCTIONAL_MASK: ::std::os::raw::c_uint = 126; + pub const NS_FONT_VARIANT_CAPS_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_VARIANT_CAPS_SMALLCAPS: ::std::os::raw::c_uint = 1; + pub const NS_FONT_VARIANT_CAPS_ALLSMALL: ::std::os::raw::c_uint = 2; + pub const NS_FONT_VARIANT_CAPS_PETITECAPS: ::std::os::raw::c_uint = 3; + pub const NS_FONT_VARIANT_CAPS_ALLPETITE: ::std::os::raw::c_uint = 4; + pub const NS_FONT_VARIANT_CAPS_TITLING: ::std::os::raw::c_uint = 5; + pub const NS_FONT_VARIANT_CAPS_UNICASE: ::std::os::raw::c_uint = 6; + pub const NS_FONT_VARIANT_EAST_ASIAN_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_VARIANT_EAST_ASIAN_JIS78: ::std::os::raw::c_uint = 1; + pub const NS_FONT_VARIANT_EAST_ASIAN_JIS83: ::std::os::raw::c_uint = 2; + pub const NS_FONT_VARIANT_EAST_ASIAN_JIS90: ::std::os::raw::c_uint = 4; + pub const NS_FONT_VARIANT_EAST_ASIAN_JIS04: ::std::os::raw::c_uint = 8; + pub const NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED: ::std::os::raw::c_uint = 16; + pub const NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL: ::std::os::raw::c_uint = 32; + pub const NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH: ::std::os::raw::c_uint = 64; + pub const NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH: ::std::os::raw::c_uint = 128; + pub const NS_FONT_VARIANT_EAST_ASIAN_RUBY: ::std::os::raw::c_uint = 256; + pub const NS_FONT_VARIANT_EAST_ASIAN_COUNT: ::std::os::raw::c_uint = 9; + pub const NS_FONT_VARIANT_EAST_ASIAN_VARIANT_MASK: ::std::os::raw::c_uint = 63; + pub const NS_FONT_VARIANT_EAST_ASIAN_WIDTH_MASK: ::std::os::raw::c_uint = 192; + pub const NS_FONT_VARIANT_LIGATURES_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_VARIANT_LIGATURES_NONE: ::std::os::raw::c_uint = 1; + pub const NS_FONT_VARIANT_LIGATURES_COMMON: ::std::os::raw::c_uint = 2; + pub const NS_FONT_VARIANT_LIGATURES_NO_COMMON: ::std::os::raw::c_uint = 4; + pub const NS_FONT_VARIANT_LIGATURES_DISCRETIONARY: ::std::os::raw::c_uint = 8; + pub const NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY: ::std::os::raw::c_uint = 16; + pub const NS_FONT_VARIANT_LIGATURES_HISTORICAL: ::std::os::raw::c_uint = 32; + pub const NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL: ::std::os::raw::c_uint = 64; + pub const NS_FONT_VARIANT_LIGATURES_CONTEXTUAL: ::std::os::raw::c_uint = 128; + pub const NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL: ::std::os::raw::c_uint = 256; + pub const NS_FONT_VARIANT_LIGATURES_COUNT: ::std::os::raw::c_uint = 9; + pub const NS_FONT_VARIANT_LIGATURES_COMMON_MASK: ::std::os::raw::c_uint = 6; + pub const NS_FONT_VARIANT_LIGATURES_DISCRETIONARY_MASK: ::std::os::raw::c_uint = 24; + pub const NS_FONT_VARIANT_LIGATURES_HISTORICAL_MASK: ::std::os::raw::c_uint = 96; + pub const NS_FONT_VARIANT_LIGATURES_CONTEXTUAL_MASK: ::std::os::raw::c_uint = 384; + pub const NS_FONT_VARIANT_NUMERIC_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_VARIANT_NUMERIC_LINING: ::std::os::raw::c_uint = 1; + pub const NS_FONT_VARIANT_NUMERIC_OLDSTYLE: ::std::os::raw::c_uint = 2; + pub const NS_FONT_VARIANT_NUMERIC_PROPORTIONAL: ::std::os::raw::c_uint = 4; + pub const NS_FONT_VARIANT_NUMERIC_TABULAR: ::std::os::raw::c_uint = 8; + pub const NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS: ::std::os::raw::c_uint = 16; + pub const NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS: ::std::os::raw::c_uint = 32; + pub const NS_FONT_VARIANT_NUMERIC_SLASHZERO: ::std::os::raw::c_uint = 64; + pub const NS_FONT_VARIANT_NUMERIC_ORDINAL: ::std::os::raw::c_uint = 128; + pub const NS_FONT_VARIANT_NUMERIC_COUNT: ::std::os::raw::c_uint = 8; + pub const NS_FONT_VARIANT_NUMERIC_FIGURE_MASK: ::std::os::raw::c_uint = 3; + pub const NS_FONT_VARIANT_NUMERIC_SPACING_MASK: ::std::os::raw::c_uint = 12; + pub const NS_FONT_VARIANT_NUMERIC_FRACTION_MASK: ::std::os::raw::c_uint = 48; + pub const NS_FONT_VARIANT_POSITION_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_VARIANT_POSITION_SUPER: ::std::os::raw::c_uint = 1; + pub const NS_FONT_VARIANT_POSITION_SUB: ::std::os::raw::c_uint = 2; + pub const NS_FONT_VARIANT_WIDTH_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_VARIANT_WIDTH_FULL: ::std::os::raw::c_uint = 1; + pub const NS_FONT_VARIANT_WIDTH_HALF: ::std::os::raw::c_uint = 2; + pub const NS_FONT_VARIANT_WIDTH_THIRD: ::std::os::raw::c_uint = 3; + pub const NS_FONT_VARIANT_WIDTH_QUARTER: ::std::os::raw::c_uint = 4; + pub const NS_FONT_SUBSCRIPT_OFFSET_RATIO: f64 = 0.2; + pub const NS_FONT_SUPERSCRIPT_OFFSET_RATIO: f64 = 0.34; + pub const NS_FONT_SUB_SUPER_SIZE_RATIO_SMALL: f64 = 0.82; + pub const NS_FONT_SUB_SUPER_SIZE_RATIO_LARGE: f64 = 0.667; + pub const NS_FONT_SUB_SUPER_SMALL_SIZE: f64 = 20.; + pub const NS_FONT_SUB_SUPER_LARGE_SIZE: f64 = 45.; + pub const NS_FONT_VARIANT_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_FONT_VARIANT_SMALL_CAPS: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_COLOR_INHERIT_FROM_BODY: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_WILL_CHANGE_STACKING_CONTEXT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_WILL_CHANGE_TRANSFORM: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_WILL_CHANGE_SCROLL: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_WILL_CHANGE_OPACITY: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_WILL_CHANGE_FIXPOS_CB: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_WILL_CHANGE_ABSPOS_CB: ::std::os::raw::c_uint = 32; + pub const NS_STYLE_ANIMATION_ITERATION_COUNT_INFINITE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_ANIMATION_PLAY_STATE_RUNNING: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_ANIMATION_PLAY_STATE_PAUSED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_IMAGELAYER_ATTACHMENT_SCROLL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_IMAGELAYER_ATTACHMENT_FIXED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_IMAGELAYER_ATTACHMENT_LOCAL: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_IMAGELAYER_CLIP_MOZ_ALMOST_PADDING: ::std::os::raw::c_uint = 127; + pub const NS_STYLE_IMAGELAYER_POSITION_CENTER: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_IMAGELAYER_POSITION_TOP: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_IMAGELAYER_POSITION_BOTTOM: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_IMAGELAYER_POSITION_LEFT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_IMAGELAYER_POSITION_RIGHT: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_IMAGELAYER_SIZE_CONTAIN: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_IMAGELAYER_SIZE_COVER: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_MASK_MODE_ALPHA: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_MASK_MODE_LUMINANCE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_MASK_MODE_MATCH_SOURCE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_BG_INLINE_POLICY_EACH_BOX: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_BG_INLINE_POLICY_CONTINUOUS: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_BG_INLINE_POLICY_BOUNDING_BOX: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_BORDER_COLLAPSE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_BORDER_SEPARATE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_BORDER_WIDTH_THIN: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_BORDER_WIDTH_MEDIUM: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_BORDER_WIDTH_THICK: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_BORDER_STYLE_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_BORDER_STYLE_GROOVE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_BORDER_STYLE_RIDGE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_BORDER_STYLE_DOTTED: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_BORDER_STYLE_DASHED: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_BORDER_STYLE_SOLID: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_BORDER_STYLE_DOUBLE: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_BORDER_STYLE_INSET: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_BORDER_STYLE_OUTSET: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_BORDER_STYLE_HIDDEN: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_BORDER_STYLE_AUTO: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_BORDER_IMAGE_SLICE_NOFILL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_BORDER_IMAGE_SLICE_FILL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CURSOR_AUTO: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CURSOR_CROSSHAIR: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_CURSOR_DEFAULT: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_CURSOR_POINTER: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_CURSOR_MOVE: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_CURSOR_E_RESIZE: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_CURSOR_NE_RESIZE: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_CURSOR_NW_RESIZE: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_CURSOR_N_RESIZE: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_CURSOR_SE_RESIZE: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_CURSOR_SW_RESIZE: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_CURSOR_S_RESIZE: ::std::os::raw::c_uint = 12; + pub const NS_STYLE_CURSOR_W_RESIZE: ::std::os::raw::c_uint = 13; + pub const NS_STYLE_CURSOR_TEXT: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_CURSOR_WAIT: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_CURSOR_HELP: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_CURSOR_COPY: ::std::os::raw::c_uint = 17; + pub const NS_STYLE_CURSOR_ALIAS: ::std::os::raw::c_uint = 18; + pub const NS_STYLE_CURSOR_CONTEXT_MENU: ::std::os::raw::c_uint = 19; + pub const NS_STYLE_CURSOR_CELL: ::std::os::raw::c_uint = 20; + pub const NS_STYLE_CURSOR_GRAB: ::std::os::raw::c_uint = 21; + pub const NS_STYLE_CURSOR_GRABBING: ::std::os::raw::c_uint = 22; + pub const NS_STYLE_CURSOR_SPINNING: ::std::os::raw::c_uint = 23; + pub const NS_STYLE_CURSOR_ZOOM_IN: ::std::os::raw::c_uint = 24; + pub const NS_STYLE_CURSOR_ZOOM_OUT: ::std::os::raw::c_uint = 25; + pub const NS_STYLE_CURSOR_NOT_ALLOWED: ::std::os::raw::c_uint = 26; + pub const NS_STYLE_CURSOR_COL_RESIZE: ::std::os::raw::c_uint = 27; + pub const NS_STYLE_CURSOR_ROW_RESIZE: ::std::os::raw::c_uint = 28; + pub const NS_STYLE_CURSOR_NO_DROP: ::std::os::raw::c_uint = 29; + pub const NS_STYLE_CURSOR_VERTICAL_TEXT: ::std::os::raw::c_uint = 30; + pub const NS_STYLE_CURSOR_ALL_SCROLL: ::std::os::raw::c_uint = 31; + pub const NS_STYLE_CURSOR_NESW_RESIZE: ::std::os::raw::c_uint = 32; + pub const NS_STYLE_CURSOR_NWSE_RESIZE: ::std::os::raw::c_uint = 33; + pub const NS_STYLE_CURSOR_NS_RESIZE: ::std::os::raw::c_uint = 34; + pub const NS_STYLE_CURSOR_EW_RESIZE: ::std::os::raw::c_uint = 35; + pub const NS_STYLE_CURSOR_NONE: ::std::os::raw::c_uint = 36; + pub const NS_STYLE_DIRECTION_LTR: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_DIRECTION_RTL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_WRITING_MODE_HORIZONTAL_TB: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_WRITING_MODE_VERTICAL_RL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_WRITING_MODE_VERTICAL_LR: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_WRITING_MODE_SIDEWAYS_MASK: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_WRITING_MODE_SIDEWAYS_RL: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_WRITING_MODE_SIDEWAYS_LR: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_CONTAIN_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_CONTAIN_STRICT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CONTAIN_LAYOUT: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_CONTAIN_STYLE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_CONTAIN_PAINT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_CONTAIN_ALL_BITS: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_ALIGN_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_ALIGN_NORMAL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_ALIGN_START: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_ALIGN_END: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_ALIGN_FLEX_START: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_ALIGN_FLEX_END: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_ALIGN_CENTER: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_ALIGN_LEFT: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_ALIGN_RIGHT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_ALIGN_BASELINE: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_ALIGN_LAST_BASELINE: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_ALIGN_STRETCH: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_ALIGN_SELF_START: ::std::os::raw::c_uint = 12; + pub const NS_STYLE_ALIGN_SELF_END: ::std::os::raw::c_uint = 13; + pub const NS_STYLE_ALIGN_SPACE_BETWEEN: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_ALIGN_SPACE_AROUND: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_ALIGN_SPACE_EVENLY: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_ALIGN_LEGACY: ::std::os::raw::c_uint = 32; + pub const NS_STYLE_ALIGN_SAFE: ::std::os::raw::c_uint = 64; + pub const NS_STYLE_ALIGN_UNSAFE: ::std::os::raw::c_uint = 128; + pub const NS_STYLE_ALIGN_FLAG_BITS: ::std::os::raw::c_uint = 224; + pub const NS_STYLE_ALIGN_ALL_BITS: ::std::os::raw::c_uint = 255; + pub const NS_STYLE_ALIGN_ALL_SHIFT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_JUSTIFY_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_JUSTIFY_NORMAL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_JUSTIFY_START: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_JUSTIFY_END: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_JUSTIFY_FLEX_START: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_JUSTIFY_FLEX_END: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_JUSTIFY_CENTER: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_JUSTIFY_LEFT: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_JUSTIFY_RIGHT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_JUSTIFY_BASELINE: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_JUSTIFY_LAST_BASELINE: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_JUSTIFY_STRETCH: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_JUSTIFY_SELF_START: ::std::os::raw::c_uint = 12; + pub const NS_STYLE_JUSTIFY_SELF_END: ::std::os::raw::c_uint = 13; + pub const NS_STYLE_JUSTIFY_SPACE_BETWEEN: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_JUSTIFY_SPACE_AROUND: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_JUSTIFY_SPACE_EVENLY: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_JUSTIFY_LEGACY: ::std::os::raw::c_uint = 32; + pub const NS_STYLE_JUSTIFY_SAFE: ::std::os::raw::c_uint = 64; + pub const NS_STYLE_JUSTIFY_UNSAFE: ::std::os::raw::c_uint = 128; + pub const NS_STYLE_JUSTIFY_FLAG_BITS: ::std::os::raw::c_uint = 224; + pub const NS_STYLE_JUSTIFY_ALL_BITS: ::std::os::raw::c_uint = 255; + pub const NS_STYLE_JUSTIFY_ALL_SHIFT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_FLEX_DIRECTION_ROW: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_FLEX_DIRECTION_ROW_REVERSE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_FLEX_DIRECTION_COLUMN: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_FLEX_DIRECTION_COLUMN_REVERSE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_FLEX_WRAP_NOWRAP: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_FLEX_WRAP_WRAP: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_FLEX_WRAP_WRAP_REVERSE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_ORDER_INITIAL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_JUSTIFY_CONTENT_FLEX_START: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_JUSTIFY_CONTENT_FLEX_END: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_JUSTIFY_CONTENT_CENTER: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_JUSTIFY_CONTENT_SPACE_BETWEEN: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_JUSTIFY_CONTENT_SPACE_AROUND: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_FILTER_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_FILTER_URL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_FILTER_BLUR: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_FILTER_BRIGHTNESS: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_FILTER_CONTRAST: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_FILTER_GRAYSCALE: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_FILTER_INVERT: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_FILTER_OPACITY: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_FILTER_SATURATE: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_FILTER_SEPIA: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_FILTER_HUE_ROTATE: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_FILTER_DROP_SHADOW: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_FONT_STYLE_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_FONT_STYLE_ITALIC: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_FONT_STYLE_OBLIQUE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_FONT_WEIGHT_NORMAL: ::std::os::raw::c_uint = 400; + pub const NS_STYLE_FONT_WEIGHT_BOLD: ::std::os::raw::c_uint = 700; + pub const NS_STYLE_FONT_WEIGHT_BOLDER: ::std::os::raw::c_int = -1; + pub const NS_STYLE_FONT_WEIGHT_LIGHTER: ::std::os::raw::c_int = -2; + pub const NS_STYLE_FONT_SIZE_XXSMALL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_FONT_SIZE_XSMALL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_FONT_SIZE_SMALL: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_FONT_SIZE_MEDIUM: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_FONT_SIZE_LARGE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_FONT_SIZE_XLARGE: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_FONT_SIZE_XXLARGE: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_FONT_SIZE_XXXLARGE: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_FONT_SIZE_LARGER: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_FONT_SIZE_SMALLER: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_FONT_SIZE_NO_KEYWORD: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_FONT_STRETCH_ULTRA_CONDENSED: ::std::os::raw::c_int = -4; + pub const NS_STYLE_FONT_STRETCH_EXTRA_CONDENSED: ::std::os::raw::c_int = -3; + pub const NS_STYLE_FONT_STRETCH_CONDENSED: ::std::os::raw::c_int = -2; + pub const NS_STYLE_FONT_STRETCH_SEMI_CONDENSED: ::std::os::raw::c_int = -1; + pub const NS_STYLE_FONT_STRETCH_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_FONT_STRETCH_SEMI_EXPANDED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_FONT_STRETCH_EXPANDED: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_FONT_STRETCH_EXTRA_EXPANDED: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_FONT_STRETCH_ULTRA_EXPANDED: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_FONT_CAPTION: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_FONT_ICON: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_FONT_MENU: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_FONT_MESSAGE_BOX: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_FONT_SMALL_CAPTION: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_FONT_STATUS_BAR: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_FONT_WINDOW: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_FONT_DOCUMENT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_FONT_WORKSPACE: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_FONT_DESKTOP: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_FONT_INFO: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_FONT_DIALOG: ::std::os::raw::c_uint = 12; + pub const NS_STYLE_FONT_BUTTON: ::std::os::raw::c_uint = 13; + pub const NS_STYLE_FONT_PULL_DOWN_MENU: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_FONT_LIST: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_FONT_FIELD: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_GRID_AUTO_FLOW_ROW: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_GRID_AUTO_FLOW_COLUMN: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_GRID_AUTO_FLOW_DENSE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_GRID_TEMPLATE_SUBGRID: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_GRID_REPEAT_AUTO_FILL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_GRID_REPEAT_AUTO_FIT: ::std::os::raw::c_uint = 1; + pub const NS_MATHML_DEFAULT_SCRIPT_SIZE_MULTIPLIER: f64 = 0.71; + pub const NS_MATHML_DEFAULT_SCRIPT_MIN_SIZE_PT: ::std::os::raw::c_uint = 8; + pub const NS_MATHML_MATHVARIANT_NONE: ::std::os::raw::c_uint = 0; + pub const NS_MATHML_MATHVARIANT_NORMAL: ::std::os::raw::c_uint = 1; + pub const NS_MATHML_MATHVARIANT_BOLD: ::std::os::raw::c_uint = 2; + pub const NS_MATHML_MATHVARIANT_ITALIC: ::std::os::raw::c_uint = 3; + pub const NS_MATHML_MATHVARIANT_BOLD_ITALIC: ::std::os::raw::c_uint = 4; + pub const NS_MATHML_MATHVARIANT_SCRIPT: ::std::os::raw::c_uint = 5; + pub const NS_MATHML_MATHVARIANT_BOLD_SCRIPT: ::std::os::raw::c_uint = 6; + pub const NS_MATHML_MATHVARIANT_FRAKTUR: ::std::os::raw::c_uint = 7; + pub const NS_MATHML_MATHVARIANT_DOUBLE_STRUCK: ::std::os::raw::c_uint = 8; + pub const NS_MATHML_MATHVARIANT_BOLD_FRAKTUR: ::std::os::raw::c_uint = 9; + pub const NS_MATHML_MATHVARIANT_SANS_SERIF: ::std::os::raw::c_uint = 10; + pub const NS_MATHML_MATHVARIANT_BOLD_SANS_SERIF: ::std::os::raw::c_uint = 11; + pub const NS_MATHML_MATHVARIANT_SANS_SERIF_ITALIC: ::std::os::raw::c_uint = 12; + pub const NS_MATHML_MATHVARIANT_SANS_SERIF_BOLD_ITALIC: ::std::os::raw::c_uint = 13; + pub const NS_MATHML_MATHVARIANT_MONOSPACE: ::std::os::raw::c_uint = 14; + pub const NS_MATHML_MATHVARIANT_INITIAL: ::std::os::raw::c_uint = 15; + pub const NS_MATHML_MATHVARIANT_TAILED: ::std::os::raw::c_uint = 16; + pub const NS_MATHML_MATHVARIANT_LOOPED: ::std::os::raw::c_uint = 17; + pub const NS_MATHML_MATHVARIANT_STRETCHED: ::std::os::raw::c_uint = 18; + pub const NS_MATHML_DISPLAYSTYLE_INLINE: ::std::os::raw::c_uint = 0; + pub const NS_MATHML_DISPLAYSTYLE_BLOCK: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_WIDTH_MAX_CONTENT: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_WIDTH_MIN_CONTENT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_WIDTH_FIT_CONTENT: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_WIDTH_AVAILABLE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_POSITION_STATIC: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_POSITION_RELATIVE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_POSITION_ABSOLUTE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_POSITION_FIXED: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_POSITION_STICKY: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_CLIP_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_CLIP_RECT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CLIP_TYPE_MASK: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_CLIP_LEFT_AUTO: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_CLIP_TOP_AUTO: ::std::os::raw::c_uint = 32; + pub const NS_STYLE_CLIP_RIGHT_AUTO: ::std::os::raw::c_uint = 64; + pub const NS_STYLE_CLIP_BOTTOM_AUTO: ::std::os::raw::c_uint = 128; + pub const NS_STYLE_FRAME_YES: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_FRAME_NO: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_FRAME_0: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_FRAME_1: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_FRAME_ON: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_FRAME_OFF: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_FRAME_AUTO: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_FRAME_SCROLL: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_FRAME_NOSCROLL: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_OVERFLOW_VISIBLE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_OVERFLOW_HIDDEN: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_OVERFLOW_SCROLL: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_OVERFLOW_AUTO: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_OVERFLOW_CLIP: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_OVERFLOW_SCROLLBARS_HORIZONTAL: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_OVERFLOW_SCROLLBARS_VERTICAL: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_OVERFLOW_CLIP_BOX_PADDING_BOX: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_OVERFLOW_CLIP_BOX_CONTENT_BOX: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_LIST_STYLE_CUSTOM: ::std::os::raw::c_int = -1; + pub const NS_STYLE_LIST_STYLE_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_LIST_STYLE_DECIMAL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_LIST_STYLE_DISC: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_LIST_STYLE_CIRCLE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_LIST_STYLE_SQUARE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_LIST_STYLE_DISCLOSURE_CLOSED: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_LIST_STYLE_DISCLOSURE_OPEN: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_LIST_STYLE_HEBREW: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_LIST_STYLE_JAPANESE_INFORMAL: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_LIST_STYLE_JAPANESE_FORMAL: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_LIST_STYLE_KOREAN_HANGUL_FORMAL: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_LIST_STYLE_KOREAN_HANJA_INFORMAL: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_LIST_STYLE_KOREAN_HANJA_FORMAL: ::std::os::raw::c_uint = 12; + pub const NS_STYLE_LIST_STYLE_SIMP_CHINESE_INFORMAL: ::std::os::raw::c_uint = 13; + pub const NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC: ::std::os::raw::c_uint = 17; + pub const NS_STYLE_LIST_STYLE_LOWER_ROMAN: ::std::os::raw::c_uint = 100; + pub const NS_STYLE_LIST_STYLE_UPPER_ROMAN: ::std::os::raw::c_uint = 101; + pub const NS_STYLE_LIST_STYLE_LOWER_ALPHA: ::std::os::raw::c_uint = 102; + pub const NS_STYLE_LIST_STYLE_UPPER_ALPHA: ::std::os::raw::c_uint = 103; + pub const NS_STYLE_LIST_STYLE_POSITION_INSIDE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_LIST_STYLE_POSITION_OUTSIDE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_MARGIN_SIZE_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_POINTER_EVENTS_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_POINTER_EVENTS_VISIBLEFILL: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_POINTER_EVENTS_VISIBLESTROKE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_POINTER_EVENTS_VISIBLE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_POINTER_EVENTS_PAINTED: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_POINTER_EVENTS_FILL: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_POINTER_EVENTS_STROKE: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_POINTER_EVENTS_ALL: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_POINTER_EVENTS_AUTO: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_IMAGE_ORIENTATION_FLIP: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_IMAGE_ORIENTATION_FROM_IMAGE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_ISOLATION_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_ISOLATION_ISOLATE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_OBJECT_FIT_FILL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_OBJECT_FIT_CONTAIN: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_OBJECT_FIT_COVER: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_OBJECT_FIT_NONE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_OBJECT_FIT_SCALE_DOWN: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_RESIZE_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_RESIZE_BOTH: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_RESIZE_HORIZONTAL: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_RESIZE_VERTICAL: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_TEXT_ALIGN_START: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_ALIGN_LEFT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_ALIGN_RIGHT: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_ALIGN_CENTER: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_TEXT_ALIGN_JUSTIFY: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_TEXT_ALIGN_CHAR: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_TEXT_ALIGN_END: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_TEXT_ALIGN_AUTO: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_TEXT_ALIGN_MOZ_CENTER: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_TEXT_ALIGN_MOZ_RIGHT: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_TEXT_ALIGN_MOZ_LEFT: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_TEXT_ALIGN_MOZ_CENTER_OR_INHERIT: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_TEXT_ALIGN_UNSAFE: ::std::os::raw::c_uint = 12; + pub const NS_STYLE_TEXT_ALIGN_MATCH_PARENT: ::std::os::raw::c_uint = 13; + pub const NS_STYLE_TEXT_DECORATION_LINE_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_DECORATION_LINE_OVERLINE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_TEXT_DECORATION_LINE_BLINK: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_TEXT_DECORATION_LINE_OVERRIDE_ALL: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_TEXT_DECORATION_LINE_LINES_MASK: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_TEXT_DECORATION_STYLE_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_DECORATION_STYLE_DOTTED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_DECORATION_STYLE_DASHED: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_DECORATION_STYLE_SOLID: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_TEXT_DECORATION_STYLE_WAVY: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_TEXT_DECORATION_STYLE_MAX: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_TEXT_OVERFLOW_CLIP: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_OVERFLOW_ELLIPSIS: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_OVERFLOW_STRING: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_TRANSFORM_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_TRANSFORM_CAPITALIZE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_TRANSFORM_LOWERCASE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_TRANSFORM_UPPERCASE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_TEXT_TRANSFORM_FULL_WIDTH: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_TOUCH_ACTION_NONE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TOUCH_ACTION_AUTO: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TOUCH_ACTION_PAN_X: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_TOUCH_ACTION_PAN_Y: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_TOUCH_ACTION_MANIPULATION: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_TOP_LAYER_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TOP_LAYER_TOP: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_LINEAR: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_OUT: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN_OUT: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_START: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_END: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_VERTICAL_ALIGN_BASELINE: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_VERTICAL_ALIGN_SUB: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_VERTICAL_ALIGN_SUPER: ::std::os::raw::c_uint = 16; + pub const NS_STYLE_VERTICAL_ALIGN_TOP: ::std::os::raw::c_uint = 17; + pub const NS_STYLE_VERTICAL_ALIGN_TEXT_TOP: ::std::os::raw::c_uint = 18; + pub const NS_STYLE_VERTICAL_ALIGN_MIDDLE: ::std::os::raw::c_uint = 19; + pub const NS_STYLE_VERTICAL_ALIGN_TEXT_BOTTOM: ::std::os::raw::c_uint = 20; + pub const NS_STYLE_VERTICAL_ALIGN_BOTTOM: ::std::os::raw::c_uint = 21; + pub const NS_STYLE_VERTICAL_ALIGN_MIDDLE_WITH_BASELINE: ::std::os::raw::c_uint = 22; + pub const NS_STYLE_VISIBILITY_HIDDEN: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_VISIBILITY_VISIBLE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_VISIBILITY_COLLAPSE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TABSIZE_INITIAL: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_WORDBREAK_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_WORDBREAK_BREAK_ALL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_WORDBREAK_KEEP_ALL: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_OVERFLOWWRAP_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_OVERFLOWWRAP_BREAK_WORD: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_RUBY_ALIGN_START: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_RUBY_ALIGN_CENTER: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_RUBY_ALIGN_SPACE_BETWEEN: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_RUBY_ALIGN_SPACE_AROUND: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_RUBY_POSITION_OVER: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_RUBY_POSITION_UNDER: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_RUBY_POSITION_INTER_CHARACTER: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_SIZE_ADJUST_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_SIZE_ADJUST_AUTO: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_ORIENTATION_MIXED: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_ORIENTATION_UPRIGHT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_ORIENTATION_SIDEWAYS: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_ALL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_2: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_3: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_4: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_LINE_HEIGHT_BLOCK_HEIGHT: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_UNICODE_BIDI_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_UNICODE_BIDI_EMBED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_UNICODE_BIDI_ISOLATE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_UNICODE_BIDI_BIDI_OVERRIDE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_UNICODE_BIDI_PLAINTEXT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_TABLE_LAYOUT_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TABLE_LAYOUT_FIXED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TABLE_EMPTY_CELLS_HIDE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TABLE_EMPTY_CELLS_SHOW: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CAPTION_SIDE_TOP: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_CAPTION_SIDE_RIGHT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CAPTION_SIDE_BOTTOM: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_CAPTION_SIDE_LEFT: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_CAPTION_SIDE_TOP_OUTSIDE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_CAPTION_SIDE_BOTTOM_OUTSIDE: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_CELL_SCOPE_ROW: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_CELL_SCOPE_COL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CELL_SCOPE_ROWGROUP: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_CELL_SCOPE_COLGROUP: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_PAGE_MARKS_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_PAGE_MARKS_CROP: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_PAGE_MARKS_REGISTER: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_PAGE_SIZE_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_PAGE_SIZE_PORTRAIT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_PAGE_SIZE_LANDSCAPE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_PAGE_BREAK_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_PAGE_BREAK_ALWAYS: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_PAGE_BREAK_AVOID: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_PAGE_BREAK_LEFT: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_PAGE_BREAK_RIGHT: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_COLUMN_COUNT_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_COLUMN_COUNT_UNLIMITED: ::std::os::raw::c_int = -1; + pub const NS_STYLE_COLUMN_FILL_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_COLUMN_FILL_BALANCE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_COLUMN_SPAN_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_COLUMN_SPAN_ALL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_IME_MODE_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_IME_MODE_NORMAL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_IME_MODE_ACTIVE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_IME_MODE_DISABLED: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_IME_MODE_INACTIVE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_GRADIENT_SHAPE_LINEAR: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_GRADIENT_SHAPE_ELLIPTICAL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_GRADIENT_SHAPE_CIRCULAR: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_GRADIENT_SIZE_EXPLICIT_SIZE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_CONTEXT_PROPERTY_FILL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CONTEXT_PROPERTY_STROKE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_CONTEXT_PROPERTY_FILL_OPACITY: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_CONTEXT_PROPERTY_STROKE_OPACITY: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_WINDOW_SHADOW_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_WINDOW_SHADOW_DEFAULT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_WINDOW_SHADOW_MENU: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_WINDOW_SHADOW_TOOLTIP: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_WINDOW_SHADOW_SHEET: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_DOMINANT_BASELINE_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_DOMINANT_BASELINE_USE_SCRIPT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_DOMINANT_BASELINE_NO_CHANGE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_DOMINANT_BASELINE_RESET_SIZE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_DOMINANT_BASELINE_IDEOGRAPHIC: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_DOMINANT_BASELINE_ALPHABETIC: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_DOMINANT_BASELINE_HANGING: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_DOMINANT_BASELINE_MATHEMATICAL: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_DOMINANT_BASELINE_CENTRAL: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_DOMINANT_BASELINE_MIDDLE: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_DOMINANT_BASELINE_TEXT_AFTER_EDGE: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_DOMINANT_BASELINE_TEXT_BEFORE_EDGE: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_IMAGE_RENDERING_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_IMAGE_RENDERING_OPTIMIZESPEED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_IMAGE_RENDERING_OPTIMIZEQUALITY: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_IMAGE_RENDERING_CRISPEDGES: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_MASK_TYPE_LUMINANCE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_MASK_TYPE_ALPHA: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_PAINT_ORDER_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_PAINT_ORDER_FILL: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_PAINT_ORDER_STROKE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_PAINT_ORDER_MARKERS: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_PAINT_ORDER_LAST_VALUE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_PAINT_ORDER_BITWIDTH: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_SHAPE_RENDERING_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_SHAPE_RENDERING_OPTIMIZESPEED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_SHAPE_RENDERING_CRISPEDGES: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_SHAPE_RENDERING_GEOMETRICPRECISION: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_STROKE_LINECAP_BUTT: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_STROKE_LINECAP_ROUND: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_STROKE_LINECAP_SQUARE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_STROKE_LINEJOIN_MITER: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_STROKE_LINEJOIN_ROUND: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_STROKE_LINEJOIN_BEVEL: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_STROKE_PROP_CONTEXT_VALUE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_ANCHOR_START: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_ANCHOR_MIDDLE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_ANCHOR_END: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_EMPHASIS_POSITION_OVER: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_EMPHASIS_POSITION_UNDER: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_EMPHASIS_POSITION_LEFT: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_TEXT_EMPHASIS_POSITION_RIGHT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT_ZH: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_FILL_MASK: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_FILLED: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_OPEN: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_SHAPE_MASK: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_DOT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_CIRCLE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_DOUBLE_CIRCLE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_TRIANGLE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_SESAME: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_TEXT_EMPHASIS_STYLE_STRING: ::std::os::raw::c_uint = 255; + pub const NS_STYLE_TEXT_RENDERING_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TEXT_RENDERING_OPTIMIZESPEED: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_TEXT_RENDERING_OPTIMIZELEGIBILITY: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_TEXT_RENDERING_GEOMETRICPRECISION: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_COLOR_ADJUST_ECONOMY: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_COLOR_ADJUST_EXACT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_COLOR_INTERPOLATION_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_COLOR_INTERPOLATION_SRGB: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_COLOR_INTERPOLATION_LINEARRGB: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_VECTOR_EFFECT_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_VECTOR_EFFECT_NON_SCALING_STROKE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_BACKFACE_VISIBILITY_VISIBLE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_BACKFACE_VISIBILITY_HIDDEN: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TRANSFORM_STYLE_FLAT: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_TRANSFORM_STYLE_PRESERVE_3D: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_CONTEXT_FILL_OPACITY: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_CONTEXT_STROKE_OPACITY: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_BLEND_NORMAL: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_BLEND_MULTIPLY: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_BLEND_SCREEN: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_BLEND_OVERLAY: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_BLEND_DARKEN: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_BLEND_LIGHTEN: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_BLEND_COLOR_DODGE: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_BLEND_COLOR_BURN: ::std::os::raw::c_uint = 7; + pub const NS_STYLE_BLEND_HARD_LIGHT: ::std::os::raw::c_uint = 8; + pub const NS_STYLE_BLEND_SOFT_LIGHT: ::std::os::raw::c_uint = 9; + pub const NS_STYLE_BLEND_DIFFERENCE: ::std::os::raw::c_uint = 10; + pub const NS_STYLE_BLEND_EXCLUSION: ::std::os::raw::c_uint = 11; + pub const NS_STYLE_BLEND_HUE: ::std::os::raw::c_uint = 12; + pub const NS_STYLE_BLEND_SATURATION: ::std::os::raw::c_uint = 13; + pub const NS_STYLE_BLEND_COLOR: ::std::os::raw::c_uint = 14; + pub const NS_STYLE_BLEND_LUMINOSITY: ::std::os::raw::c_uint = 15; + pub const NS_STYLE_MASK_COMPOSITE_ADD: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_MASK_COMPOSITE_SUBTRACT: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_MASK_COMPOSITE_INTERSECT: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_MASK_COMPOSITE_EXCLUDE: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_CONTROL_CHARACTER_VISIBILITY_HIDDEN: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_CONTROL_CHARACTER_VISIBILITY_VISIBLE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_COUNTER_SYSTEM_CYCLIC: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_COUNTER_SYSTEM_NUMERIC: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_COUNTER_SYSTEM_ALPHABETIC: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_COUNTER_SYSTEM_SYMBOLIC: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_COUNTER_SYSTEM_ADDITIVE: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_COUNTER_SYSTEM_FIXED: ::std::os::raw::c_uint = 5; + pub const NS_STYLE_COUNTER_SYSTEM_EXTENDS: ::std::os::raw::c_uint = 6; + pub const NS_STYLE_COUNTER_RANGE_INFINITE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_COUNTER_SPEAKAS_BULLETS: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_COUNTER_SPEAKAS_NUMBERS: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_COUNTER_SPEAKAS_WORDS: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_COUNTER_SPEAKAS_SPELL_OUT: ::std::os::raw::c_uint = 3; + pub const NS_STYLE_COUNTER_SPEAKAS_OTHER: ::std::os::raw::c_uint = 255; + pub const NS_STYLE_SCROLL_BEHAVIOR_AUTO: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_SCROLL_BEHAVIOR_SMOOTH: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_SCROLL_SNAP_TYPE_NONE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_SCROLL_SNAP_TYPE_MANDATORY: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_SCROLL_SNAP_TYPE_PROXIMITY: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_ORIENTATION_PORTRAIT: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_ORIENTATION_LANDSCAPE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_SCAN_PROGRESSIVE: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_SCAN_INTERLACE: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_DISPLAY_MODE_BROWSER: ::std::os::raw::c_uint = 0; + pub const NS_STYLE_DISPLAY_MODE_MINIMAL_UI: ::std::os::raw::c_uint = 1; + pub const NS_STYLE_DISPLAY_MODE_STANDALONE: ::std::os::raw::c_uint = 2; + pub const NS_STYLE_DISPLAY_MODE_FULLSCREEN: ::std::os::raw::c_uint = 3; + pub const CSS_PSEUDO_ELEMENT_IS_CSS2: ::std::os::raw::c_uint = 1; + pub const CSS_PSEUDO_ELEMENT_CONTAINS_ELEMENTS: ::std::os::raw::c_uint = 2; + pub const CSS_PSEUDO_ELEMENT_SUPPORTS_STYLE_ATTRIBUTE: ::std::os::raw::c_uint = 4; + pub const CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE: ::std::os::raw::c_uint = 8; + pub const CSS_PSEUDO_ELEMENT_UA_SHEET_ONLY: ::std::os::raw::c_uint = 16; + pub const CSS_PSEUDO_ELEMENT_IS_JS_CREATED_NAC: ::std::os::raw::c_uint = 32; + pub const CSS_PSEUDO_ELEMENT_IS_FLEX_OR_GRID_ITEM: ::std::os::raw::c_uint = 64; + pub const kNameSpaceID_Unknown: ::std::os::raw::c_int = -1; + pub const kNameSpaceID_XMLNS: ::std::os::raw::c_uint = 1; + pub const kNameSpaceID_XML: ::std::os::raw::c_uint = 2; + pub const kNameSpaceID_XHTML: ::std::os::raw::c_uint = 3; + pub const kNameSpaceID_XLink: ::std::os::raw::c_uint = 4; + pub const kNameSpaceID_XSLT: ::std::os::raw::c_uint = 5; + pub const kNameSpaceID_XBL: ::std::os::raw::c_uint = 6; + pub const kNameSpaceID_MathML: ::std::os::raw::c_uint = 7; + pub const kNameSpaceID_RDF: ::std::os::raw::c_uint = 8; + pub const kNameSpaceID_XUL: ::std::os::raw::c_uint = 9; + pub const kNameSpaceID_SVG: ::std::os::raw::c_uint = 10; + pub const kNameSpaceID_disabled_MathML: ::std::os::raw::c_uint = 11; + pub const kNameSpaceID_disabled_SVG: ::std::os::raw::c_uint = 12; + pub const kNameSpaceID_LastBuiltin: ::std::os::raw::c_uint = 12; + pub const kNameSpaceID_Wildcard: ::std::os::raw::c_int = -2147483648; + pub const NS_AUTHOR_SPECIFIED_BACKGROUND: ::std::os::raw::c_uint = 1; + pub const NS_AUTHOR_SPECIFIED_BORDER: ::std::os::raw::c_uint = 2; + pub const NS_AUTHOR_SPECIFIED_PADDING: ::std::os::raw::c_uint = 4; + pub const NS_STYLE_INHERIT_MASK: ::std::os::raw::c_uint = 16777215; + pub const NS_STYLE_HAS_TEXT_DECORATION_LINES: ::std::os::raw::c_uint = 16777216; + pub const NS_STYLE_HAS_PSEUDO_ELEMENT_DATA: ::std::os::raw::c_uint = 33554432; + pub const NS_STYLE_RELEVANT_LINK_VISITED: ::std::os::raw::c_uint = 67108864; + pub const NS_STYLE_IS_STYLE_IF_VISITED: ::std::os::raw::c_uint = 134217728; + pub const NS_STYLE_CHILD_USES_GRANDANCESTOR_STYLE: ::std::os::raw::c_uint = 268435456; + pub const NS_STYLE_IS_SHARED: ::std::os::raw::c_uint = 536870912; + pub const NS_STYLE_IS_GOING_AWAY: ::std::os::raw::c_uint = 1073741824; + pub const NS_STYLE_SUPPRESS_LINEBREAK: ::std::os::raw::c_uint = 2147483648; + pub const NS_STYLE_IN_DISPLAY_NONE_SUBTREE: ::std::os::raw::c_ulonglong = 4294967296; + pub const NS_STYLE_INELIGIBLE_FOR_SHARING: ::std::os::raw::c_ulonglong = 8589934592; + pub const NS_STYLE_HAS_CHILD_THAT_USES_RESET_STYLE: ::std::os::raw::c_ulonglong = 17179869184; + pub const NS_STYLE_IS_TEXT_COMBINED: ::std::os::raw::c_ulonglong = 34359738368; + pub const NS_STYLE_CONTEXT_IS_GECKO: ::std::os::raw::c_ulonglong = 68719476736; + pub const NS_STYLE_CONTEXT_TYPE_SHIFT: ::std::os::raw::c_uint = 37; + pub mod std { + #[allow(unused_imports)] + use self::super::super::root; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nothrow_t { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nothrow_t() { + assert_eq!( + ::std::mem::size_of::<nothrow_t>(), + 1usize, + concat!("Size of: ", stringify!(nothrow_t)) + ); + assert_eq!( + ::std::mem::align_of::<nothrow_t>(), + 1usize, + concat!("Alignment of ", stringify!(nothrow_t)) + ); + } + impl Clone for nothrow_t { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct pair<_T1, _T2> { + pub first: _T1, + pub second: _T2, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<_T1>>, + pub _phantom_1: ::std::marker::PhantomData<::std::cell::UnsafeCell<_T2>>, + } + pub type pair_first_type<_T1> = _T1; + pub type pair_second_type<_T2> = _T2; + pub type pair__PCCP = u8; + pub type pair__PCCFP = u8; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct input_iterator_tag { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_input_iterator_tag() { + assert_eq!( + ::std::mem::size_of::<input_iterator_tag>(), + 1usize, + concat!("Size of: ", stringify!(input_iterator_tag)) + ); + assert_eq!( + ::std::mem::align_of::<input_iterator_tag>(), + 1usize, + concat!("Alignment of ", stringify!(input_iterator_tag)) + ); + } + impl Clone for input_iterator_tag { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct iterator { + pub _address: u8, + } + pub type iterator_iterator_category<_Category> = _Category; + pub type iterator_value_type<_Tp> = _Tp; + pub type iterator_difference_type<_Distance> = _Distance; + pub type iterator_pointer<_Pointer> = _Pointer; + pub type iterator_reference<_Reference> = _Reference; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct atomic { + pub _address: u8, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct function { + pub _address: u8, + } + pub type _Base_bitset__WordT = ::std::os::raw::c_ulong; + pub type bitset__Base = u8; + pub type bitset__WordT = ::std::os::raw::c_ulong; + #[repr(C)] + #[derive(Debug)] + pub struct bitset_reference { + pub _M_wp: *mut root::std::bitset__WordT, + pub _M_bpos: usize, + } + } + pub mod __gnu_cxx { + #[allow(unused_imports)] + use self::super::super::root; + } + pub type __int8_t = ::std::os::raw::c_schar; + pub type __uint8_t = ::std::os::raw::c_uchar; + pub type __int16_t = ::std::os::raw::c_short; + pub type __uint16_t = ::std::os::raw::c_ushort; + pub type __int32_t = ::std::os::raw::c_int; + pub type __uint32_t = ::std::os::raw::c_uint; + pub type __int64_t = ::std::os::raw::c_long; + pub type __uint64_t = ::std::os::raw::c_ulong; + pub mod mozilla { + #[allow(unused_imports)] + use self::super::super::root; + pub type fallible_t = root::std::nothrow_t; + pub type IntegralConstant_ValueType<T> = T; + pub type IntegralConstant_Type = u8; + /// Convenient aliases. + pub type TrueType = u8; + pub type FalseType = u8; + pub mod detail { + #[allow(unused_imports)] + use self::super::super::super::root; + pub const StringDataFlags_TERMINATED: root::mozilla::detail::StringDataFlags = 1; + pub const StringDataFlags_VOIDED: root::mozilla::detail::StringDataFlags = 2; + pub const StringDataFlags_SHARED: root::mozilla::detail::StringDataFlags = 4; + pub const StringDataFlags_OWNED: root::mozilla::detail::StringDataFlags = 8; + pub const StringDataFlags_INLINE: root::mozilla::detail::StringDataFlags = 16; + pub const StringDataFlags_LITERAL: root::mozilla::detail::StringDataFlags = 32; + pub type StringDataFlags = u16; + pub const StringClassFlags_INLINE: root::mozilla::detail::StringClassFlags = 1; + pub const StringClassFlags_NULL_TERMINATED: root::mozilla::detail::StringClassFlags = 2; + pub type StringClassFlags = u16; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTStringRepr<T> { + pub mData: *mut root::mozilla::detail::nsTStringRepr_char_type<T>, + pub mLength: root::mozilla::detail::nsTStringRepr_size_type, + pub mDataFlags: root::mozilla::detail::nsTStringRepr_DataFlags, + pub mClassFlags: root::mozilla::detail::nsTStringRepr_ClassFlags, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsTStringRepr_fallible_t = root::mozilla::fallible_t; + pub type nsTStringRepr_char_type<T> = T; + pub type nsTStringRepr_self_type<T> = root::mozilla::detail::nsTStringRepr<T>; + pub type nsTStringRepr_base_string_type<T> = + root::mozilla::detail::nsTStringRepr_self_type<T>; + pub type nsTStringRepr_substring_type<T> = root::nsTSubstring<T>; + pub type nsTStringRepr_substring_tuple_type<T> = root::nsTSubstringTuple<T>; + pub type nsTStringRepr_literalstring_type<T> = root::nsTLiteralString<T>; + pub type nsTStringRepr_const_iterator<T> = + root::nsReadingIterator<root::mozilla::detail::nsTStringRepr_char_type<T>>; + pub type nsTStringRepr_iterator<T> = + root::nsWritingIterator<root::mozilla::detail::nsTStringRepr_char_type<T>>; + pub type nsTStringRepr_comparator_type = root::nsTStringComparator; + pub type nsTStringRepr_char_iterator<T> = + *mut root::mozilla::detail::nsTStringRepr_char_type<T>; + pub type nsTStringRepr_const_char_iterator<T> = + *const root::mozilla::detail::nsTStringRepr_char_type<T>; + pub type nsTStringRepr_index_type = u32; + pub type nsTStringRepr_size_type = u32; + pub use self :: super :: super :: super :: root :: mozilla :: detail :: StringDataFlags as nsTStringRepr_DataFlags; + pub use self :: super :: super :: super :: root :: mozilla :: detail :: StringClassFlags as nsTStringRepr_ClassFlags; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTStringRepr_raw_type { + pub _address: u8, + } + pub type nsTStringRepr_raw_type_type<U> = *mut U; + /// LinkedList supports refcounted elements using this adapter class. Clients /// using LinkedList<RefPtr<T>> will get a data structure that holds a strong - /// reference to T as long as T is in the list. - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct LinkedListElementTraits { pub _address : u8 , } pub type LinkedListElementTraits_RawType < T > = * mut T ; pub type LinkedListElementTraits_ConstRawType < T > = * mut T ; pub type LinkedListElementTraits_ClientType < T > = * mut T ; pub type LinkedListElementTraits_ConstClientType < T > = * mut T ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct WeakReference { pub _address : u8 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct FreePolicy { pub _address : u8 , } } pub type Conditional_Type < A > = A ; pub const ArenaObjectID_eArenaObjectID_DummyBeforeFirstObjectID : root :: mozilla :: ArenaObjectID = 171 ; pub const ArenaObjectID_eArenaObjectID_GeckoStyleContext : root :: mozilla :: ArenaObjectID = 172 ; pub const ArenaObjectID_eArenaObjectID_nsLineBox : root :: mozilla :: ArenaObjectID = 173 ; pub const ArenaObjectID_eArenaObjectID_nsRuleNode : root :: mozilla :: ArenaObjectID = 174 ; pub const ArenaObjectID_eArenaObjectID_DisplayItemData : root :: mozilla :: ArenaObjectID = 175 ; pub const ArenaObjectID_eArenaObjectID_nsInheritedStyleData : root :: mozilla :: ArenaObjectID = 176 ; pub const ArenaObjectID_eArenaObjectID_nsResetStyleData : root :: mozilla :: ArenaObjectID = 177 ; pub const ArenaObjectID_eArenaObjectID_nsConditionalResetStyleData : root :: mozilla :: ArenaObjectID = 178 ; pub const ArenaObjectID_eArenaObjectID_nsConditionalResetStyleDataEntry : root :: mozilla :: ArenaObjectID = 179 ; pub const ArenaObjectID_eArenaObjectID_nsFrameList : root :: mozilla :: ArenaObjectID = 180 ; pub const ArenaObjectID_eArenaObjectID_CustomCounterStyle : root :: mozilla :: ArenaObjectID = 181 ; pub const ArenaObjectID_eArenaObjectID_DependentBuiltinCounterStyle : root :: mozilla :: ArenaObjectID = 182 ; pub const ArenaObjectID_eArenaObjectID_nsCallbackEventRequest : root :: mozilla :: ArenaObjectID = 183 ; pub const ArenaObjectID_eArenaObjectID_nsIntervalSet_Interval : root :: mozilla :: ArenaObjectID = 184 ; pub const ArenaObjectID_eArenaObjectID_CellData : root :: mozilla :: ArenaObjectID = 185 ; pub const ArenaObjectID_eArenaObjectID_BCCellData : root :: mozilla :: ArenaObjectID = 186 ; pub const ArenaObjectID_eArenaObjectID_nsStyleFont : root :: mozilla :: ArenaObjectID = 187 ; pub const ArenaObjectID_eArenaObjectID_nsStyleColor : root :: mozilla :: ArenaObjectID = 188 ; pub const ArenaObjectID_eArenaObjectID_nsStyleList : root :: mozilla :: ArenaObjectID = 189 ; pub const ArenaObjectID_eArenaObjectID_nsStyleText : root :: mozilla :: ArenaObjectID = 190 ; pub const ArenaObjectID_eArenaObjectID_nsStyleVisibility : root :: mozilla :: ArenaObjectID = 191 ; pub const ArenaObjectID_eArenaObjectID_nsStyleUserInterface : root :: mozilla :: ArenaObjectID = 192 ; pub const ArenaObjectID_eArenaObjectID_nsStyleTableBorder : root :: mozilla :: ArenaObjectID = 193 ; pub const ArenaObjectID_eArenaObjectID_nsStyleSVG : root :: mozilla :: ArenaObjectID = 194 ; pub const ArenaObjectID_eArenaObjectID_nsStyleVariables : root :: mozilla :: ArenaObjectID = 195 ; pub const ArenaObjectID_eArenaObjectID_nsStyleBackground : root :: mozilla :: ArenaObjectID = 196 ; pub const ArenaObjectID_eArenaObjectID_nsStylePosition : root :: mozilla :: ArenaObjectID = 197 ; pub const ArenaObjectID_eArenaObjectID_nsStyleTextReset : root :: mozilla :: ArenaObjectID = 198 ; pub const ArenaObjectID_eArenaObjectID_nsStyleDisplay : root :: mozilla :: ArenaObjectID = 199 ; pub const ArenaObjectID_eArenaObjectID_nsStyleContent : root :: mozilla :: ArenaObjectID = 200 ; pub const ArenaObjectID_eArenaObjectID_nsStyleUIReset : root :: mozilla :: ArenaObjectID = 201 ; pub const ArenaObjectID_eArenaObjectID_nsStyleTable : root :: mozilla :: ArenaObjectID = 202 ; pub const ArenaObjectID_eArenaObjectID_nsStyleMargin : root :: mozilla :: ArenaObjectID = 203 ; pub const ArenaObjectID_eArenaObjectID_nsStylePadding : root :: mozilla :: ArenaObjectID = 204 ; pub const ArenaObjectID_eArenaObjectID_nsStyleBorder : root :: mozilla :: ArenaObjectID = 205 ; pub const ArenaObjectID_eArenaObjectID_nsStyleOutline : root :: mozilla :: ArenaObjectID = 206 ; pub const ArenaObjectID_eArenaObjectID_nsStyleXUL : root :: mozilla :: ArenaObjectID = 207 ; pub const ArenaObjectID_eArenaObjectID_nsStyleSVGReset : root :: mozilla :: ArenaObjectID = 208 ; pub const ArenaObjectID_eArenaObjectID_nsStyleColumn : root :: mozilla :: ArenaObjectID = 209 ; pub const ArenaObjectID_eArenaObjectID_nsStyleEffects : root :: mozilla :: ArenaObjectID = 210 ; pub const ArenaObjectID_eArenaObjectID_COUNT : root :: mozilla :: ArenaObjectID = 211 ; pub type ArenaObjectID = :: std :: os :: raw :: c_uint ; - /// A default deletion policy using plain old operator delete. + /// reference to T as long as T is in the list. + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct LinkedListElementTraits { + pub _address: u8, + } + pub type LinkedListElementTraits_RawType<T> = *mut T; + pub type LinkedListElementTraits_ConstRawType<T> = *mut T; + pub type LinkedListElementTraits_ClientType<T> = *mut T; + pub type LinkedListElementTraits_ConstClientType<T> = *mut T; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct WeakReference { + pub _address: u8, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct FreePolicy { + pub _address: u8, + } + } + pub type Conditional_Type<A> = A; + pub const ArenaObjectID_eArenaObjectID_DummyBeforeFirstObjectID: + root::mozilla::ArenaObjectID = 171; + pub const ArenaObjectID_eArenaObjectID_GeckoStyleContext: root::mozilla::ArenaObjectID = + 172; + pub const ArenaObjectID_eArenaObjectID_nsLineBox: root::mozilla::ArenaObjectID = 173; + pub const ArenaObjectID_eArenaObjectID_nsRuleNode: root::mozilla::ArenaObjectID = 174; + pub const ArenaObjectID_eArenaObjectID_DisplayItemData: root::mozilla::ArenaObjectID = 175; + pub const ArenaObjectID_eArenaObjectID_nsInheritedStyleData: root::mozilla::ArenaObjectID = + 176; + pub const ArenaObjectID_eArenaObjectID_nsResetStyleData: root::mozilla::ArenaObjectID = 177; + pub const ArenaObjectID_eArenaObjectID_nsConditionalResetStyleData: + root::mozilla::ArenaObjectID = 178; + pub const ArenaObjectID_eArenaObjectID_nsConditionalResetStyleDataEntry: + root::mozilla::ArenaObjectID = 179; + pub const ArenaObjectID_eArenaObjectID_nsFrameList: root::mozilla::ArenaObjectID = 180; + pub const ArenaObjectID_eArenaObjectID_CustomCounterStyle: root::mozilla::ArenaObjectID = + 181; + pub const ArenaObjectID_eArenaObjectID_DependentBuiltinCounterStyle: + root::mozilla::ArenaObjectID = 182; + pub const ArenaObjectID_eArenaObjectID_nsCallbackEventRequest: + root::mozilla::ArenaObjectID = 183; + pub const ArenaObjectID_eArenaObjectID_nsIntervalSet_Interval: + root::mozilla::ArenaObjectID = 184; + pub const ArenaObjectID_eArenaObjectID_CellData: root::mozilla::ArenaObjectID = 185; + pub const ArenaObjectID_eArenaObjectID_BCCellData: root::mozilla::ArenaObjectID = 186; + pub const ArenaObjectID_eArenaObjectID_nsStyleFont: root::mozilla::ArenaObjectID = 187; + pub const ArenaObjectID_eArenaObjectID_nsStyleColor: root::mozilla::ArenaObjectID = 188; + pub const ArenaObjectID_eArenaObjectID_nsStyleList: root::mozilla::ArenaObjectID = 189; + pub const ArenaObjectID_eArenaObjectID_nsStyleText: root::mozilla::ArenaObjectID = 190; + pub const ArenaObjectID_eArenaObjectID_nsStyleVisibility: root::mozilla::ArenaObjectID = + 191; + pub const ArenaObjectID_eArenaObjectID_nsStyleUserInterface: root::mozilla::ArenaObjectID = + 192; + pub const ArenaObjectID_eArenaObjectID_nsStyleTableBorder: root::mozilla::ArenaObjectID = + 193; + pub const ArenaObjectID_eArenaObjectID_nsStyleSVG: root::mozilla::ArenaObjectID = 194; + pub const ArenaObjectID_eArenaObjectID_nsStyleVariables: root::mozilla::ArenaObjectID = 195; + pub const ArenaObjectID_eArenaObjectID_nsStyleBackground: root::mozilla::ArenaObjectID = + 196; + pub const ArenaObjectID_eArenaObjectID_nsStylePosition: root::mozilla::ArenaObjectID = 197; + pub const ArenaObjectID_eArenaObjectID_nsStyleTextReset: root::mozilla::ArenaObjectID = 198; + pub const ArenaObjectID_eArenaObjectID_nsStyleDisplay: root::mozilla::ArenaObjectID = 199; + pub const ArenaObjectID_eArenaObjectID_nsStyleContent: root::mozilla::ArenaObjectID = 200; + pub const ArenaObjectID_eArenaObjectID_nsStyleUIReset: root::mozilla::ArenaObjectID = 201; + pub const ArenaObjectID_eArenaObjectID_nsStyleTable: root::mozilla::ArenaObjectID = 202; + pub const ArenaObjectID_eArenaObjectID_nsStyleMargin: root::mozilla::ArenaObjectID = 203; + pub const ArenaObjectID_eArenaObjectID_nsStylePadding: root::mozilla::ArenaObjectID = 204; + pub const ArenaObjectID_eArenaObjectID_nsStyleBorder: root::mozilla::ArenaObjectID = 205; + pub const ArenaObjectID_eArenaObjectID_nsStyleOutline: root::mozilla::ArenaObjectID = 206; + pub const ArenaObjectID_eArenaObjectID_nsStyleXUL: root::mozilla::ArenaObjectID = 207; + pub const ArenaObjectID_eArenaObjectID_nsStyleSVGReset: root::mozilla::ArenaObjectID = 208; + pub const ArenaObjectID_eArenaObjectID_nsStyleColumn: root::mozilla::ArenaObjectID = 209; + pub const ArenaObjectID_eArenaObjectID_nsStyleEffects: root::mozilla::ArenaObjectID = 210; + pub const ArenaObjectID_eArenaObjectID_COUNT: root::mozilla::ArenaObjectID = 211; + pub type ArenaObjectID = u32; + /// A default deletion policy using plain old operator delete. /// /// Note that this type can be specialized, but authors should beware of the risk /// that the specialization may at some point cease to match (either because it @@ -34,9 +1121,29 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// This is a non-issue for types which are always incomplete (i.e. opaque handle /// types), since |delete|-ing such a type will always trigger a compilation - /// error. - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct DefaultDelete { pub _address : u8 , } pub type MallocSizeOf = :: std :: option :: Option < unsafe extern "C" fn ( p : * const :: std :: os :: raw :: c_void ) -> usize > ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ReverseIterator < IteratorT > { pub mCurrent : IteratorT , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < IteratorT > > , } pub type Array_iterator < T > = * mut T ; pub type Array_const_iterator < T > = * mut T ; pub type Array_reverse_iterator < T > = root :: mozilla :: ReverseIterator < T > ; pub type Array_const_reverse_iterator < T > = root :: mozilla :: ReverseIterator < T > ; pub mod css { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; # [ repr ( u8 ) ] - /// Enum defining the mode in which a sheet is to be parsed. This is + /// error. + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct DefaultDelete { + pub _address: u8, + } + pub type MallocSizeOf = + ::std::option::Option<unsafe extern "C" fn(p: *const ::std::os::raw::c_void) -> usize>; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ReverseIterator<IteratorT> { + pub mCurrent: IteratorT, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<IteratorT>>, + } + pub type Array_iterator<T> = *mut T; + pub type Array_const_iterator<T> = *mut T; + pub type Array_reverse_iterator<T> = root::mozilla::ReverseIterator<T>; + pub type Array_const_reverse_iterator<T> = root::mozilla::ReverseIterator<T>; + pub mod css { + #[allow(unused_imports)] + use self::super::super::super::root; + #[repr(u8)] + /// Enum defining the mode in which a sheet is to be parsed. This is /// usually, but not always, the same as the cascade level at which the /// sheet will apply (see nsStyleSet.h). Most of the Loader APIs only /// support loading of author sheets. @@ -63,91 +1170,2730 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// Agent sheets that do not use any unsafe rules could use /// eSafeAgentSheetFeatures when creating the sheet. This enum value allows /// Servo backend to recognize the sheets as the agent level, but Gecko - /// backend will parse it under _author_ level. - # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum SheetParsingMode { eAuthorSheetFeatures = 0 , eUserSheetFeatures = 1 , eAgentSheetFeatures = 2 , eSafeAgentSheetFeatures = 3 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct GroupRule { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ImageLoader { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] pub struct URLValueData__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct URLValueData { pub vtable_ : * const URLValueData__bindgen_vtable , pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mURI : root :: nsMainThreadPtrHandle < root :: nsIURI > , pub mExtraData : root :: RefPtr < root :: mozilla :: URLExtraData > , pub mURIResolved : bool , pub mIsLocalRef : [ u8 ; 2usize ] , pub mMightHaveRef : [ u8 ; 2usize ] , pub mStrings : root :: mozilla :: css :: URLValueData_RustOrGeckoString , pub mUsingRustString : bool , pub mLoadedImage : bool , } pub type URLValueData_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct URLValueData_RustOrGeckoString { pub mString : root :: __BindgenUnionField < ::nsstring::nsStringRepr > , pub mRustString : root :: __BindgenUnionField < ::gecko_bindings::structs::ServoRawOffsetArc < root :: RustString > > , pub bindgen_union_field : [ u64 ; 2usize ] , } # [ test ] fn bindgen_test_layout_URLValueData_RustOrGeckoString ( ) { assert_eq ! ( :: std :: mem :: size_of :: < URLValueData_RustOrGeckoString > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( URLValueData_RustOrGeckoString ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < URLValueData_RustOrGeckoString > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( URLValueData_RustOrGeckoString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData_RustOrGeckoString ) ) . mString as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData_RustOrGeckoString ) , "::" , stringify ! ( mString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData_RustOrGeckoString ) ) . mRustString as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData_RustOrGeckoString ) , "::" , stringify ! ( mRustString ) ) ) ; } # [ test ] fn bindgen_test_layout_URLValueData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < URLValueData > ( ) , 64usize , concat ! ( "Size of: " , stringify ! ( URLValueData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < URLValueData > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( URLValueData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mRefCnt as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mURI as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mExtraData as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mExtraData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mURIResolved as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mURIResolved ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mIsLocalRef as * const _ as usize } , 33usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mIsLocalRef ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mMightHaveRef as * const _ as usize } , 35usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mMightHaveRef ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mStrings as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mStrings ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mUsingRustString as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mUsingRustString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLValueData ) ) . mLoadedImage as * const _ as usize } , 57usize , concat ! ( "Alignment of field: " , stringify ! ( URLValueData ) , "::" , stringify ! ( mLoadedImage ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct URLValue { pub _base : root :: mozilla :: css :: URLValueData , } # [ test ] fn bindgen_test_layout_URLValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < URLValue > ( ) , 64usize , concat ! ( "Size of: " , stringify ! ( URLValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < URLValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( URLValue ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ImageValue { pub _base : root :: mozilla :: css :: URLValueData , pub mRequests : [ u64 ; 4usize ] , } # [ test ] fn bindgen_test_layout_ImageValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ImageValue > ( ) , 96usize , concat ! ( "Size of: " , stringify ! ( ImageValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ImageValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ImageValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ImageValue ) ) . mRequests as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( ImageValue ) , "::" , stringify ! ( mRequests ) ) ) ; } # [ repr ( C ) ] pub struct GridNamedArea { pub mName : ::nsstring::nsStringRepr , pub mColumnStart : u32 , pub mColumnEnd : u32 , pub mRowStart : u32 , pub mRowEnd : u32 , } # [ test ] fn bindgen_test_layout_GridNamedArea ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GridNamedArea > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( GridNamedArea ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GridNamedArea > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GridNamedArea ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridNamedArea ) ) . mName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GridNamedArea ) , "::" , stringify ! ( mName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridNamedArea ) ) . mColumnStart as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( GridNamedArea ) , "::" , stringify ! ( mColumnStart ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridNamedArea ) ) . mColumnEnd as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( GridNamedArea ) , "::" , stringify ! ( mColumnEnd ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridNamedArea ) ) . mRowStart as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( GridNamedArea ) , "::" , stringify ! ( mRowStart ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridNamedArea ) ) . mRowEnd as * const _ as usize } , 28usize , concat ! ( "Alignment of field: " , stringify ! ( GridNamedArea ) , "::" , stringify ! ( mRowEnd ) ) ) ; } # [ repr ( C ) ] pub struct GridTemplateAreasValue { pub mNamedAreas : root :: nsTArray < root :: mozilla :: css :: GridNamedArea > , pub mTemplates : root :: nsTArray < ::nsstring::nsStringRepr > , pub mNColumns : u32 , pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , } pub type GridTemplateAreasValue_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_GridTemplateAreasValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GridTemplateAreasValue > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( GridTemplateAreasValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GridTemplateAreasValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GridTemplateAreasValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridTemplateAreasValue ) ) . mNamedAreas as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GridTemplateAreasValue ) , "::" , stringify ! ( mNamedAreas ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridTemplateAreasValue ) ) . mTemplates as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( GridTemplateAreasValue ) , "::" , stringify ! ( mTemplates ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridTemplateAreasValue ) ) . mNColumns as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( GridTemplateAreasValue ) , "::" , stringify ! ( mNColumns ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GridTemplateAreasValue ) ) . mRefCnt as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( GridTemplateAreasValue ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct RGBAColorData { pub mR : f32 , pub mG : f32 , pub mB : f32 , pub mA : f32 , } # [ test ] fn bindgen_test_layout_RGBAColorData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < RGBAColorData > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( RGBAColorData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < RGBAColorData > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( RGBAColorData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const RGBAColorData ) ) . mR as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( RGBAColorData ) , "::" , stringify ! ( mR ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const RGBAColorData ) ) . mG as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( RGBAColorData ) , "::" , stringify ! ( mG ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const RGBAColorData ) ) . mB as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( RGBAColorData ) , "::" , stringify ! ( mB ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const RGBAColorData ) ) . mA as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( RGBAColorData ) , "::" , stringify ! ( mA ) ) ) ; } impl Clone for RGBAColorData { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ComplexColorData { pub mColor : root :: mozilla :: css :: RGBAColorData , pub mForegroundRatio : f32 , } # [ test ] fn bindgen_test_layout_ComplexColorData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ComplexColorData > ( ) , 20usize , concat ! ( "Size of: " , stringify ! ( ComplexColorData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ComplexColorData > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( ComplexColorData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComplexColorData ) ) . mColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ComplexColorData ) , "::" , stringify ! ( mColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComplexColorData ) ) . mForegroundRatio as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ComplexColorData ) , "::" , stringify ! ( mForegroundRatio ) ) ) ; } impl Clone for ComplexColorData { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ComplexColorValue { pub _base : root :: mozilla :: css :: ComplexColorData , pub mRefCnt : root :: nsAutoRefCnt , } pub type ComplexColorValue_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_ComplexColorValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ComplexColorValue > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( ComplexColorValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ComplexColorValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ComplexColorValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComplexColorValue ) ) . mRefCnt as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ComplexColorValue ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct SheetLoadData { _unused : [ u8 ; 0 ] } - /// Style sheet reuse * - # [ repr ( C ) ] pub struct LoaderReusableStyleSheets { pub mReusableSheets : root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > , } # [ test ] fn bindgen_test_layout_LoaderReusableStyleSheets ( ) { assert_eq ! ( :: std :: mem :: size_of :: < LoaderReusableStyleSheets > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( LoaderReusableStyleSheets ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < LoaderReusableStyleSheets > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( LoaderReusableStyleSheets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LoaderReusableStyleSheets ) ) . mReusableSheets as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( LoaderReusableStyleSheets ) , "::" , stringify ! ( mReusableSheets ) ) ) ; } # [ repr ( C ) ] pub struct Loader { pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mSheets : root :: nsAutoPtr < root :: mozilla :: css :: Loader_Sheets > , pub mParsingDatas : [ u64 ; 10usize ] , pub mPostedEvents : root :: mozilla :: css :: Loader_LoadDataArray , pub mObservers : [ u64 ; 2usize ] , pub mDocument : * mut root :: nsIDocument , pub mDocGroup : root :: RefPtr < root :: mozilla :: dom :: DocGroup > , pub mDatasToNotifyOn : u32 , pub mCompatMode : root :: nsCompatibility , pub mPreferredSheet : ::nsstring::nsStringRepr , pub mStyleBackendType : [ u8 ; 2usize ] , pub mEnabled : bool , pub mReporter : root :: nsCOMPtr , } pub use self :: super :: super :: super :: root :: mozilla :: net :: ReferrerPolicy as Loader_ReferrerPolicy ; pub type Loader_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Loader_cycleCollection { pub _base : root :: nsCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_Loader_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Loader_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( Loader_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Loader_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Loader_cycleCollection ) ) ) ; } impl Clone for Loader_cycleCollection { fn clone ( & self ) -> Self { * self } } pub type Loader_LoadDataArray = root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct Loader_Sheets { pub mCompleteSheets : [ u64 ; 4usize ] , pub mLoadingDatas : [ u64 ; 4usize ] , pub mPendingDatas : [ u64 ; 4usize ] , } # [ test ] fn bindgen_test_layout_Loader_Sheets ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Loader_Sheets > ( ) , 96usize , concat ! ( "Size of: " , stringify ! ( Loader_Sheets ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Loader_Sheets > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Loader_Sheets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader_Sheets ) ) . mCompleteSheets as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Loader_Sheets ) , "::" , stringify ! ( mCompleteSheets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader_Sheets ) ) . mLoadingDatas as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( Loader_Sheets ) , "::" , stringify ! ( mLoadingDatas ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader_Sheets ) ) . mPendingDatas as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( Loader_Sheets ) , "::" , stringify ! ( mPendingDatas ) ) ) ; } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3css6Loader21_cycleCollectorGlobalE" ] - pub static mut Loader__cycleCollectorGlobal : root :: mozilla :: css :: Loader_cycleCollection ; -} # [ test ] fn bindgen_test_layout_Loader ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Loader > ( ) , 176usize , concat ! ( "Size of: " , stringify ! ( Loader ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Loader > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Loader ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mSheets as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mSheets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mParsingDatas as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mParsingDatas ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mPostedEvents as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mPostedEvents ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mObservers as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mObservers ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mDocument as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mDocument ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mDocGroup as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mDocGroup ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mDatasToNotifyOn as * const _ as usize } , 136usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mDatasToNotifyOn ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mCompatMode as * const _ as usize } , 140usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mCompatMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mPreferredSheet as * const _ as usize } , 144usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mPreferredSheet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mStyleBackendType as * const _ as usize } , 160usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mStyleBackendType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mEnabled as * const _ as usize } , 162usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mEnabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Loader ) ) . mReporter as * const _ as usize } , 168usize , concat ! ( "Alignment of field: " , stringify ! ( Loader ) , "::" , stringify ! ( mReporter ) ) ) ; } # [ repr ( C ) ] pub struct ErrorReporter { pub mError : root :: nsAutoString , pub mErrorLine : ::nsstring::nsStringRepr , pub mFileName : ::nsstring::nsStringRepr , pub mScanner : * const root :: nsCSSScanner , pub mSheet : * const root :: mozilla :: StyleSheet , pub mLoader : * const root :: mozilla :: css :: Loader , pub mURI : * mut root :: nsIURI , pub mInnerWindowID : u64 , pub mErrorLineNumber : u32 , pub mPrevErrorLineNumber : u32 , pub mErrorColNumber : u32 , } # [ test ] fn bindgen_test_layout_ErrorReporter ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ErrorReporter > ( ) , 240usize , concat ! ( "Size of: " , stringify ! ( ErrorReporter ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ErrorReporter > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ErrorReporter ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mError as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mError ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mErrorLine as * const _ as usize } , 152usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mErrorLine ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mFileName as * const _ as usize } , 168usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mFileName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mScanner as * const _ as usize } , 184usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mScanner ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mSheet as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mSheet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mLoader as * const _ as usize } , 200usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mLoader ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mURI as * const _ as usize } , 208usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mInnerWindowID as * const _ as usize } , 216usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mInnerWindowID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mErrorLineNumber as * const _ as usize } , 224usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mErrorLineNumber ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mPrevErrorLineNumber as * const _ as usize } , 228usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mPrevErrorLineNumber ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ErrorReporter ) ) . mErrorColNumber as * const _ as usize } , 232usize , concat ! ( "Alignment of field: " , stringify ! ( ErrorReporter ) , "::" , stringify ! ( mErrorColNumber ) ) ) ; } # [ repr ( i32 ) ] - /// Enum defining the type of URL matching function for a @-moz-document rule - /// condition. - # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum URLMatchingFunction { eURL = 0 , eURLPrefix = 1 , eDomain = 2 , eRegExp = 3 , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct Rule { pub _base : root :: nsIDOMCSSRule , pub _base_1 : root :: nsWrapperCache , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mSheet : * mut root :: mozilla :: StyleSheet , pub mParentRule : * mut root :: mozilla :: css :: GroupRule , pub mLineNumber : u32 , pub mColumnNumber : u32 , } pub type Rule_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Rule_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_Rule_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Rule_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( Rule_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Rule_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Rule_cycleCollection ) ) ) ; } impl Clone for Rule_cycleCollection { fn clone ( & self ) -> Self { * self } } pub const Rule_UNKNOWN_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 0 ; pub const Rule_CHARSET_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 1 ; pub const Rule_IMPORT_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 2 ; pub const Rule_NAMESPACE_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 3 ; pub const Rule_STYLE_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 4 ; pub const Rule_MEDIA_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 5 ; pub const Rule_FONT_FACE_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 6 ; pub const Rule_PAGE_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 7 ; pub const Rule_KEYFRAME_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 8 ; pub const Rule_KEYFRAMES_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 9 ; pub const Rule_DOCUMENT_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 10 ; pub const Rule_SUPPORTS_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 11 ; pub const Rule_FONT_FEATURE_VALUES_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 12 ; pub const Rule_COUNTER_STYLE_RULE : root :: mozilla :: css :: Rule__bindgen_ty_1 = 13 ; pub type Rule__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3css4Rule21_cycleCollectorGlobalE" ] - pub static mut Rule__cycleCollectorGlobal : root :: mozilla :: css :: Rule_cycleCollection ; -} # [ test ] fn bindgen_test_layout_Rule ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Rule > ( ) , 64usize , concat ! ( "Size of: " , stringify ! ( Rule ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Rule > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Rule ) ) ) ; } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ThreadSafeAutoRefCnt { pub mValue : u64 , } pub const ThreadSafeAutoRefCnt_isThreadSafe : bool = true ; # [ test ] fn bindgen_test_layout_ThreadSafeAutoRefCnt ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ThreadSafeAutoRefCnt > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( ThreadSafeAutoRefCnt ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ThreadSafeAutoRefCnt > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ThreadSafeAutoRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ThreadSafeAutoRefCnt ) ) . mValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ThreadSafeAutoRefCnt ) , "::" , stringify ! ( mValue ) ) ) ; } pub type EnumeratedArray_ArrayType = u8 ; pub type EnumeratedArray_iterator = root :: mozilla :: EnumeratedArray_ArrayType ; pub type EnumeratedArray_const_iterator = root :: mozilla :: EnumeratedArray_ArrayType ; pub type EnumeratedArray_reverse_iterator = root :: mozilla :: EnumeratedArray_ArrayType ; pub type EnumeratedArray_const_reverse_iterator = root :: mozilla :: EnumeratedArray_ArrayType ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct LinkedListElement { pub mNext : * mut root :: mozilla :: LinkedListElement , pub mPrev : * mut root :: mozilla :: LinkedListElement , pub mIsSentinel : bool , } pub type LinkedListElement_Traits = root :: mozilla :: detail :: LinkedListElementTraits ; pub type LinkedListElement_RawType = root :: mozilla :: LinkedListElement_Traits ; pub type LinkedListElement_ConstRawType = root :: mozilla :: LinkedListElement_Traits ; pub type LinkedListElement_ClientType = root :: mozilla :: LinkedListElement_Traits ; pub type LinkedListElement_ConstClientType = root :: mozilla :: LinkedListElement_Traits ; pub const LinkedListElement_NodeKind_Normal : root :: mozilla :: LinkedListElement_NodeKind = 0 ; pub const LinkedListElement_NodeKind_Sentinel : root :: mozilla :: LinkedListElement_NodeKind = 0 ; pub type LinkedListElement_NodeKind = :: std :: os :: raw :: c_int ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct LinkedList { pub sentinel : root :: mozilla :: LinkedListElement , } pub type LinkedList_Traits = root :: mozilla :: detail :: LinkedListElementTraits ; pub type LinkedList_RawType = root :: mozilla :: LinkedList_Traits ; pub type LinkedList_ConstRawType = root :: mozilla :: LinkedList_Traits ; pub type LinkedList_ClientType = root :: mozilla :: LinkedList_Traits ; pub type LinkedList_ConstClientType = root :: mozilla :: LinkedList_Traits ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct LinkedList_Iterator { pub mCurrent : root :: mozilla :: LinkedList_RawType , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Maybe { pub _address : u8 , } pub type Maybe_ValueType < T > = T ; pub mod gfx { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; pub type Float = f32 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct IntPointTyped { pub _address : u8 , } pub type IntPointTyped_ToInt = u32 ; pub type IntPointTyped_Coord = u8 ; pub type IntPointTyped_Super = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct FontVariation { pub mTag : u32 , pub mValue : f32 , } # [ test ] fn bindgen_test_layout_FontVariation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FontVariation > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( FontVariation ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FontVariation > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( FontVariation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontVariation ) ) . mTag as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( FontVariation ) , "::" , stringify ! ( mTag ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontVariation ) ) . mValue as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( FontVariation ) , "::" , stringify ! ( mValue ) ) ) ; } impl Clone for FontVariation { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct SourceSurface { _unused : [ u8 ; 0 ] } } pub mod layers { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct LayerManager { _unused : [ u8 ; 0 ] } } pub mod dom { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct AllOwningUnionBase { pub _address : u8 , } # [ test ] fn bindgen_test_layout_AllOwningUnionBase ( ) { assert_eq ! ( :: std :: mem :: size_of :: < AllOwningUnionBase > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( AllOwningUnionBase ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < AllOwningUnionBase > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( AllOwningUnionBase ) ) ) ; } impl Clone for AllOwningUnionBase { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GlobalObject { pub mGlobalJSObject : [ u64 ; 3usize ] , pub mCx : * mut root :: JSContext , pub mGlobalObject : * mut root :: nsISupports , } # [ test ] fn bindgen_test_layout_GlobalObject ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GlobalObject > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( GlobalObject ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GlobalObject > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GlobalObject ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GlobalObject ) ) . mGlobalJSObject as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GlobalObject ) , "::" , stringify ! ( mGlobalJSObject ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GlobalObject ) ) . mCx as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( GlobalObject ) , "::" , stringify ! ( mCx ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GlobalObject ) ) . mGlobalObject as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( GlobalObject ) , "::" , stringify ! ( mGlobalObject ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Sequence { pub _address : u8 , } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum CallerType { System = 0 , NonSystem = 1 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Nullable { pub _address : u8 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ClientSource { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct CSSImportRule { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ShadowRoot { _unused : [ u8 ; 0 ] } - /// Struct that stores info on an attribute. The name and value must either both + /// backend will parse it under _author_ level. + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum SheetParsingMode { + eAuthorSheetFeatures = 0, + eUserSheetFeatures = 1, + eAgentSheetFeatures = 2, + eSafeAgentSheetFeatures = 3, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct GroupRule { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ImageLoader { + _unused: [u8; 0], + } + #[repr(C)] + pub struct URLValueData__bindgen_vtable(::std::os::raw::c_void); + #[repr(C)] + #[derive(Debug)] + pub struct URLValueData { + pub vtable_: *const URLValueData__bindgen_vtable, + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mURI: root::nsMainThreadPtrHandle<root::nsIURI>, + pub mExtraData: root::RefPtr<root::mozilla::URLExtraData>, + pub mURIResolved: bool, + pub mIsLocalRef: [u8; 2usize], + pub mMightHaveRef: [u8; 2usize], + pub mStrings: root::mozilla::css::URLValueData_RustOrGeckoString, + pub mUsingRustString: bool, + pub mLoadedImage: bool, + } + pub type URLValueData_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[repr(C)] + #[derive(Debug)] + pub struct URLValueData_RustOrGeckoString { + pub mString: root::__BindgenUnionField<::nsstring::nsStringRepr>, + pub mRustString: + root::__BindgenUnionField<::gecko_bindings::structs::ServoRawOffsetArc<root::RustString>>, + pub bindgen_union_field: [u64; 2usize], + } + #[test] + fn bindgen_test_layout_URLValueData_RustOrGeckoString() { + assert_eq!( + ::std::mem::size_of::<URLValueData_RustOrGeckoString>(), + 16usize, + concat!("Size of: ", stringify!(URLValueData_RustOrGeckoString)) + ); + assert_eq!( + ::std::mem::align_of::<URLValueData_RustOrGeckoString>(), + 8usize, + concat!("Alignment of ", stringify!(URLValueData_RustOrGeckoString)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData_RustOrGeckoString>())).mString + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(URLValueData_RustOrGeckoString), + "::", + stringify!(mString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData_RustOrGeckoString>())).mRustString + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(URLValueData_RustOrGeckoString), + "::", + stringify!(mRustString) + ) + ); + } + #[test] + fn bindgen_test_layout_URLValueData() { + assert_eq!( + ::std::mem::size_of::<URLValueData>(), + 64usize, + concat!("Size of: ", stringify!(URLValueData)) + ); + assert_eq!( + ::std::mem::align_of::<URLValueData>(), + 8usize, + concat!("Alignment of ", stringify!(URLValueData)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData>())).mRefCnt as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<URLValueData>())).mURI as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData>())).mExtraData as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mExtraData) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData>())).mURIResolved as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mURIResolved) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData>())).mIsLocalRef as *const _ as usize + }, + 33usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mIsLocalRef) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData>())).mMightHaveRef as *const _ as usize + }, + 35usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mMightHaveRef) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData>())).mStrings as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mStrings) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData>())).mUsingRustString as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mUsingRustString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLValueData>())).mLoadedImage as *const _ as usize + }, + 57usize, + concat!( + "Offset of field: ", + stringify!(URLValueData), + "::", + stringify!(mLoadedImage) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct URLValue { + pub _base: root::mozilla::css::URLValueData, + } + #[test] + fn bindgen_test_layout_URLValue() { + assert_eq!( + ::std::mem::size_of::<URLValue>(), + 64usize, + concat!("Size of: ", stringify!(URLValue)) + ); + assert_eq!( + ::std::mem::align_of::<URLValue>(), + 8usize, + concat!("Alignment of ", stringify!(URLValue)) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct ImageValue { + pub _base: root::mozilla::css::URLValueData, + pub mRequests: [u64; 4usize], + } + #[test] + fn bindgen_test_layout_ImageValue() { + assert_eq!( + ::std::mem::size_of::<ImageValue>(), + 96usize, + concat!("Size of: ", stringify!(ImageValue)) + ); + assert_eq!( + ::std::mem::align_of::<ImageValue>(), + 8usize, + concat!("Alignment of ", stringify!(ImageValue)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ImageValue>())).mRequests as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(ImageValue), + "::", + stringify!(mRequests) + ) + ); + } + #[repr(C)] + pub struct GridNamedArea { + pub mName: ::nsstring::nsStringRepr, + pub mColumnStart: u32, + pub mColumnEnd: u32, + pub mRowStart: u32, + pub mRowEnd: u32, + } + #[test] + fn bindgen_test_layout_GridNamedArea() { + assert_eq!( + ::std::mem::size_of::<GridNamedArea>(), + 32usize, + concat!("Size of: ", stringify!(GridNamedArea)) + ); + assert_eq!( + ::std::mem::align_of::<GridNamedArea>(), + 8usize, + concat!("Alignment of ", stringify!(GridNamedArea)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GridNamedArea>())).mName as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GridNamedArea), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GridNamedArea>())).mColumnStart as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(GridNamedArea), + "::", + stringify!(mColumnStart) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GridNamedArea>())).mColumnEnd as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(GridNamedArea), + "::", + stringify!(mColumnEnd) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GridNamedArea>())).mRowStart as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(GridNamedArea), + "::", + stringify!(mRowStart) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GridNamedArea>())).mRowEnd as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(GridNamedArea), + "::", + stringify!(mRowEnd) + ) + ); + } + #[repr(C)] + pub struct GridTemplateAreasValue { + pub mNamedAreas: root::nsTArray<root::mozilla::css::GridNamedArea>, + pub mTemplates: root::nsTArray<::nsstring::nsStringRepr>, + pub mNColumns: u32, + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + } + pub type GridTemplateAreasValue_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_GridTemplateAreasValue() { + assert_eq!( + ::std::mem::size_of::<GridTemplateAreasValue>(), + 32usize, + concat!("Size of: ", stringify!(GridTemplateAreasValue)) + ); + assert_eq!( + ::std::mem::align_of::<GridTemplateAreasValue>(), + 8usize, + concat!("Alignment of ", stringify!(GridTemplateAreasValue)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GridTemplateAreasValue>())).mNamedAreas as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GridTemplateAreasValue), + "::", + stringify!(mNamedAreas) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GridTemplateAreasValue>())).mTemplates as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(GridTemplateAreasValue), + "::", + stringify!(mTemplates) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GridTemplateAreasValue>())).mNColumns as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(GridTemplateAreasValue), + "::", + stringify!(mNColumns) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GridTemplateAreasValue>())).mRefCnt as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(GridTemplateAreasValue), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct RGBAColorData { + pub mR: f32, + pub mG: f32, + pub mB: f32, + pub mA: f32, + } + #[test] + fn bindgen_test_layout_RGBAColorData() { + assert_eq!( + ::std::mem::size_of::<RGBAColorData>(), + 16usize, + concat!("Size of: ", stringify!(RGBAColorData)) + ); + assert_eq!( + ::std::mem::align_of::<RGBAColorData>(), + 4usize, + concat!("Alignment of ", stringify!(RGBAColorData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<RGBAColorData>())).mR as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(RGBAColorData), + "::", + stringify!(mR) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<RGBAColorData>())).mG as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(RGBAColorData), + "::", + stringify!(mG) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<RGBAColorData>())).mB as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(RGBAColorData), + "::", + stringify!(mB) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<RGBAColorData>())).mA as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(RGBAColorData), + "::", + stringify!(mA) + ) + ); + } + impl Clone for RGBAColorData { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ComplexColorData { + pub mColor: root::mozilla::css::RGBAColorData, + pub mForegroundRatio: f32, + } + #[test] + fn bindgen_test_layout_ComplexColorData() { + assert_eq!( + ::std::mem::size_of::<ComplexColorData>(), + 20usize, + concat!("Size of: ", stringify!(ComplexColorData)) + ); + assert_eq!( + ::std::mem::align_of::<ComplexColorData>(), + 4usize, + concat!("Alignment of ", stringify!(ComplexColorData)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComplexColorData>())).mColor as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ComplexColorData), + "::", + stringify!(mColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComplexColorData>())).mForegroundRatio as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ComplexColorData), + "::", + stringify!(mForegroundRatio) + ) + ); + } + impl Clone for ComplexColorData { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct ComplexColorValue { + pub _base: root::mozilla::css::ComplexColorData, + pub mRefCnt: root::nsAutoRefCnt, + } + pub type ComplexColorValue_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_ComplexColorValue() { + assert_eq!( + ::std::mem::size_of::<ComplexColorValue>(), + 32usize, + concat!("Size of: ", stringify!(ComplexColorValue)) + ); + assert_eq!( + ::std::mem::align_of::<ComplexColorValue>(), + 8usize, + concat!("Alignment of ", stringify!(ComplexColorValue)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComplexColorValue>())).mRefCnt as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ComplexColorValue), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct SheetLoadData { + _unused: [u8; 0], + } + /// Style sheet reuse * + #[repr(C)] + pub struct LoaderReusableStyleSheets { + pub mReusableSheets: root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>, + } + #[test] + fn bindgen_test_layout_LoaderReusableStyleSheets() { + assert_eq!( + ::std::mem::size_of::<LoaderReusableStyleSheets>(), + 8usize, + concat!("Size of: ", stringify!(LoaderReusableStyleSheets)) + ); + assert_eq!( + ::std::mem::align_of::<LoaderReusableStyleSheets>(), + 8usize, + concat!("Alignment of ", stringify!(LoaderReusableStyleSheets)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LoaderReusableStyleSheets>())).mReusableSheets + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(LoaderReusableStyleSheets), + "::", + stringify!(mReusableSheets) + ) + ); + } + #[repr(C)] + pub struct Loader { + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mSheets: root::nsAutoPtr<root::mozilla::css::Loader_Sheets>, + pub mParsingDatas: [u64; 10usize], + pub mPostedEvents: root::mozilla::css::Loader_LoadDataArray, + pub mObservers: [u64; 2usize], + pub mDocument: *mut root::nsIDocument, + pub mDocGroup: root::RefPtr<root::mozilla::dom::DocGroup>, + pub mDatasToNotifyOn: u32, + pub mCompatMode: root::nsCompatibility, + pub mPreferredSheet: ::nsstring::nsStringRepr, + pub mStyleBackendType: [u8; 2usize], + pub mEnabled: bool, + pub mReporter: root::nsCOMPtr, + } + pub use self :: super :: super :: super :: root :: mozilla :: net :: ReferrerPolicy as Loader_ReferrerPolicy; + pub type Loader_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Loader_cycleCollection { + pub _base: root::nsCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_Loader_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<Loader_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(Loader_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<Loader_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(Loader_cycleCollection)) + ); + } + impl Clone for Loader_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + pub type Loader_LoadDataArray = + root::nsTArray<root::RefPtr<root::mozilla::css::SheetLoadData>>; + #[repr(C)] + #[derive(Debug)] + pub struct Loader_Sheets { + pub mCompleteSheets: [u64; 4usize], + pub mLoadingDatas: [u64; 4usize], + pub mPendingDatas: [u64; 4usize], + } + #[test] + fn bindgen_test_layout_Loader_Sheets() { + assert_eq!( + ::std::mem::size_of::<Loader_Sheets>(), + 96usize, + concat!("Size of: ", stringify!(Loader_Sheets)) + ); + assert_eq!( + ::std::mem::align_of::<Loader_Sheets>(), + 8usize, + concat!("Alignment of ", stringify!(Loader_Sheets)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Loader_Sheets>())).mCompleteSheets as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Loader_Sheets), + "::", + stringify!(mCompleteSheets) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Loader_Sheets>())).mLoadingDatas as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(Loader_Sheets), + "::", + stringify!(mLoadingDatas) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Loader_Sheets>())).mPendingDatas as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(Loader_Sheets), + "::", + stringify!(mPendingDatas) + ) + ); + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3css6Loader21_cycleCollectorGlobalE"] + pub static mut Loader__cycleCollectorGlobal: + root::mozilla::css::Loader_cycleCollection; + } + #[test] + fn bindgen_test_layout_Loader() { + assert_eq!( + ::std::mem::size_of::<Loader>(), + 176usize, + concat!("Size of: ", stringify!(Loader)) + ); + assert_eq!( + ::std::mem::align_of::<Loader>(), + 8usize, + concat!("Alignment of ", stringify!(Loader)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Loader>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Loader>())).mSheets as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mSheets) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Loader>())).mParsingDatas as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mParsingDatas) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Loader>())).mPostedEvents as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mPostedEvents) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Loader>())).mObservers as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mObservers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Loader>())).mDocument as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mDocument) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Loader>())).mDocGroup as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mDocGroup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Loader>())).mDatasToNotifyOn as *const _ as usize + }, + 136usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mDatasToNotifyOn) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Loader>())).mCompatMode as *const _ as usize }, + 140usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mCompatMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Loader>())).mPreferredSheet as *const _ as usize + }, + 144usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mPreferredSheet) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Loader>())).mStyleBackendType as *const _ as usize + }, + 160usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mStyleBackendType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Loader>())).mEnabled as *const _ as usize }, + 162usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mEnabled) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Loader>())).mReporter as *const _ as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(Loader), + "::", + stringify!(mReporter) + ) + ); + } + #[repr(C)] + pub struct ErrorReporter { + pub mError: root::nsAutoString, + pub mErrorLine: ::nsstring::nsStringRepr, + pub mFileName: ::nsstring::nsStringRepr, + pub mScanner: *const root::nsCSSScanner, + pub mSheet: *const root::mozilla::StyleSheet, + pub mLoader: *const root::mozilla::css::Loader, + pub mURI: *mut root::nsIURI, + pub mInnerWindowID: u64, + pub mErrorLineNumber: u32, + pub mPrevErrorLineNumber: u32, + pub mErrorColNumber: u32, + } + #[test] + fn bindgen_test_layout_ErrorReporter() { + assert_eq!( + ::std::mem::size_of::<ErrorReporter>(), + 240usize, + concat!("Size of: ", stringify!(ErrorReporter)) + ); + assert_eq!( + ::std::mem::align_of::<ErrorReporter>(), + 8usize, + concat!("Alignment of ", stringify!(ErrorReporter)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mError as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mError) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mErrorLine as *const _ as usize + }, + 152usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mErrorLine) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mFileName as *const _ as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mFileName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mScanner as *const _ as usize + }, + 184usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mScanner) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mSheet as *const _ as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mSheet) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mLoader as *const _ as usize + }, + 200usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mLoader) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ErrorReporter>())).mURI as *const _ as usize }, + 208usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mInnerWindowID as *const _ + as usize + }, + 216usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mInnerWindowID) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mErrorLineNumber as *const _ + as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mErrorLineNumber) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mPrevErrorLineNumber as *const _ + as usize + }, + 228usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mPrevErrorLineNumber) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ErrorReporter>())).mErrorColNumber as *const _ + as usize + }, + 232usize, + concat!( + "Offset of field: ", + stringify!(ErrorReporter), + "::", + stringify!(mErrorColNumber) + ) + ); + } + #[repr(i32)] + /// Enum defining the type of URL matching function for a @-moz-document rule + /// condition. + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum URLMatchingFunction { + eURL = 0, + eURLPrefix = 1, + eDomain = 2, + eRegExp = 3, + } + #[repr(C)] + #[derive(Debug)] + pub struct Rule { + pub _base: root::nsISupports, + pub _base_1: root::nsWrapperCache, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mSheet: *mut root::mozilla::StyleSheet, + pub mParentRule: *mut root::mozilla::css::GroupRule, + pub mLineNumber: u32, + pub mColumnNumber: u32, + } + pub type Rule_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Rule_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_Rule_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<Rule_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(Rule_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<Rule_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(Rule_cycleCollection)) + ); + } + impl Clone for Rule_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + pub const Rule_UNKNOWN_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 0; + pub const Rule_CHARSET_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 1; + pub const Rule_IMPORT_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 2; + pub const Rule_NAMESPACE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 3; + pub const Rule_STYLE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 4; + pub const Rule_MEDIA_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 5; + pub const Rule_FONT_FACE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 6; + pub const Rule_PAGE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 7; + pub const Rule_KEYFRAME_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 8; + pub const Rule_KEYFRAMES_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 9; + pub const Rule_DOCUMENT_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 10; + pub const Rule_SUPPORTS_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 11; + pub const Rule_FONT_FEATURE_VALUES_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 12; + pub const Rule_COUNTER_STYLE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 13; + pub type Rule__bindgen_ty_1 = u32; + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3css4Rule21_cycleCollectorGlobalE"] + pub static mut Rule__cycleCollectorGlobal: root::mozilla::css::Rule_cycleCollection; + } + #[test] + fn bindgen_test_layout_Rule() { + assert_eq!( + ::std::mem::size_of::<Rule>(), + 64usize, + concat!("Size of: ", stringify!(Rule)) + ); + assert_eq!( + ::std::mem::align_of::<Rule>(), + 8usize, + concat!("Alignment of ", stringify!(Rule)) + ); + } + } + #[repr(C)] + #[derive(Debug)] + pub struct ThreadSafeAutoRefCnt { + pub mValue: u64, + } + pub const ThreadSafeAutoRefCnt_isThreadSafe: bool = true; + #[test] + fn bindgen_test_layout_ThreadSafeAutoRefCnt() { + assert_eq!( + ::std::mem::size_of::<ThreadSafeAutoRefCnt>(), + 8usize, + concat!("Size of: ", stringify!(ThreadSafeAutoRefCnt)) + ); + assert_eq!( + ::std::mem::align_of::<ThreadSafeAutoRefCnt>(), + 8usize, + concat!("Alignment of ", stringify!(ThreadSafeAutoRefCnt)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ThreadSafeAutoRefCnt>())).mValue as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ThreadSafeAutoRefCnt), + "::", + stringify!(mValue) + ) + ); + } + pub type EnumeratedArray_ArrayType = u8; + pub type EnumeratedArray_iterator = root::mozilla::EnumeratedArray_ArrayType; + pub type EnumeratedArray_const_iterator = root::mozilla::EnumeratedArray_ArrayType; + pub type EnumeratedArray_reverse_iterator = root::mozilla::EnumeratedArray_ArrayType; + pub type EnumeratedArray_const_reverse_iterator = root::mozilla::EnumeratedArray_ArrayType; + #[repr(C)] + #[derive(Debug)] + pub struct LinkedListElement { + pub mNext: *mut root::mozilla::LinkedListElement, + pub mPrev: *mut root::mozilla::LinkedListElement, + pub mIsSentinel: bool, + } + pub type LinkedListElement_Traits = root::mozilla::detail::LinkedListElementTraits; + pub type LinkedListElement_RawType = root::mozilla::LinkedListElement_Traits; + pub type LinkedListElement_ConstRawType = root::mozilla::LinkedListElement_Traits; + pub type LinkedListElement_ClientType = root::mozilla::LinkedListElement_Traits; + pub type LinkedListElement_ConstClientType = root::mozilla::LinkedListElement_Traits; + pub const LinkedListElement_NodeKind_Normal: root::mozilla::LinkedListElement_NodeKind = 0; + pub const LinkedListElement_NodeKind_Sentinel: root::mozilla::LinkedListElement_NodeKind = + 0; + pub type LinkedListElement_NodeKind = i32; + #[repr(C)] + #[derive(Debug)] + pub struct LinkedList { + pub sentinel: root::mozilla::LinkedListElement, + } + pub type LinkedList_Traits = root::mozilla::detail::LinkedListElementTraits; + pub type LinkedList_RawType = root::mozilla::LinkedList_Traits; + pub type LinkedList_ConstRawType = root::mozilla::LinkedList_Traits; + pub type LinkedList_ClientType = root::mozilla::LinkedList_Traits; + pub type LinkedList_ConstClientType = root::mozilla::LinkedList_Traits; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct LinkedList_Iterator { + pub mCurrent: root::mozilla::LinkedList_RawType, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Maybe { + pub _address: u8, + } + pub type Maybe_ValueType<T> = T; + pub mod gfx { + #[allow(unused_imports)] + use self::super::super::super::root; + pub type Float = f32; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct IntPointTyped { + pub _address: u8, + } + pub type IntPointTyped_ToInt = u32; + pub type IntPointTyped_Coord = u8; + pub type IntPointTyped_Super = u8; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct FontVariation { + pub mTag: u32, + pub mValue: f32, + } + #[test] + fn bindgen_test_layout_FontVariation() { + assert_eq!( + ::std::mem::size_of::<FontVariation>(), + 8usize, + concat!("Size of: ", stringify!(FontVariation)) + ); + assert_eq!( + ::std::mem::align_of::<FontVariation>(), + 4usize, + concat!("Alignment of ", stringify!(FontVariation)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<FontVariation>())).mTag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(FontVariation), + "::", + stringify!(mTag) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontVariation>())).mValue as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(FontVariation), + "::", + stringify!(mValue) + ) + ); + } + impl Clone for FontVariation { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct SourceSurface { + _unused: [u8; 0], + } + } + pub mod layers { + #[allow(unused_imports)] + use self::super::super::super::root; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct LayerManager { + _unused: [u8; 0], + } + } + pub mod dom { + #[allow(unused_imports)] + use self::super::super::super::root; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct AllOwningUnionBase { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_AllOwningUnionBase() { + assert_eq!( + ::std::mem::size_of::<AllOwningUnionBase>(), + 1usize, + concat!("Size of: ", stringify!(AllOwningUnionBase)) + ); + assert_eq!( + ::std::mem::align_of::<AllOwningUnionBase>(), + 1usize, + concat!("Alignment of ", stringify!(AllOwningUnionBase)) + ); + } + impl Clone for AllOwningUnionBase { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct GlobalObject { + pub mGlobalJSObject: [u64; 3usize], + pub mCx: *mut root::JSContext, + pub mGlobalObject: *mut root::nsISupports, + } + #[test] + fn bindgen_test_layout_GlobalObject() { + assert_eq!( + ::std::mem::size_of::<GlobalObject>(), + 40usize, + concat!("Size of: ", stringify!(GlobalObject)) + ); + assert_eq!( + ::std::mem::align_of::<GlobalObject>(), + 8usize, + concat!("Alignment of ", stringify!(GlobalObject)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GlobalObject>())).mGlobalJSObject as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GlobalObject), + "::", + stringify!(mGlobalJSObject) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GlobalObject>())).mCx as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(GlobalObject), + "::", + stringify!(mCx) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GlobalObject>())).mGlobalObject as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(GlobalObject), + "::", + stringify!(mGlobalObject) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Sequence { + pub _address: u8, + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum CallerType { + System = 0, + NonSystem = 1, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Nullable { + pub _address: u8, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ClientSource { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct CSSImportRule { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ShadowRoot { + _unused: [u8; 0], + } + /// Struct that stores info on an attribute. The name and value must either both /// be null or both be non-null. /// /// Note that, just as the pointers returned by GetAttrNameAt, the pointers that /// this struct hold are only valid until the element or its attributes are - /// mutated (directly or via script). - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct BorrowedAttrInfo { pub mName : * const root :: nsAttrName , pub mValue : * const root :: nsAttrValue , } # [ test ] fn bindgen_test_layout_BorrowedAttrInfo ( ) { assert_eq ! ( :: std :: mem :: size_of :: < BorrowedAttrInfo > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( BorrowedAttrInfo ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < BorrowedAttrInfo > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( BorrowedAttrInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const BorrowedAttrInfo ) ) . mName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( BorrowedAttrInfo ) , "::" , stringify ! ( mName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const BorrowedAttrInfo ) ) . mValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( BorrowedAttrInfo ) , "::" , stringify ! ( mValue ) ) ) ; } impl Clone for BorrowedAttrInfo { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct NodeInfo { pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mDocument : * mut root :: nsIDocument , pub mInner : root :: mozilla :: dom :: NodeInfo_NodeInfoInner , pub mOwnerManager : root :: RefPtr < root :: nsNodeInfoManager > , pub mQualifiedName : ::nsstring::nsStringRepr , pub mNodeName : ::nsstring::nsStringRepr , pub mLocalName : ::nsstring::nsStringRepr , } pub type NodeInfo_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct NodeInfo_cycleCollection { pub _base : root :: nsCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_NodeInfo_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < NodeInfo_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( NodeInfo_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < NodeInfo_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( NodeInfo_cycleCollection ) ) ) ; } impl Clone for NodeInfo_cycleCollection { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct NodeInfo_NodeInfoInner { pub mName : * const root :: nsAtom , pub mPrefix : * mut root :: nsAtom , pub mNamespaceID : i32 , pub mNodeType : u16 , pub mNameString : * const root :: nsAString , pub mExtraName : * mut root :: nsAtom , pub mHash : root :: PLHashNumber , pub mHashInitialized : bool , } # [ test ] fn bindgen_test_layout_NodeInfo_NodeInfoInner ( ) { assert_eq ! ( :: std :: mem :: size_of :: < NodeInfo_NodeInfoInner > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( NodeInfo_NodeInfoInner ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < NodeInfo_NodeInfoInner > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( NodeInfo_NodeInfoInner ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo_NodeInfoInner ) ) . mName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo_NodeInfoInner ) , "::" , stringify ! ( mName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo_NodeInfoInner ) ) . mPrefix as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo_NodeInfoInner ) , "::" , stringify ! ( mPrefix ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo_NodeInfoInner ) ) . mNamespaceID as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo_NodeInfoInner ) , "::" , stringify ! ( mNamespaceID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo_NodeInfoInner ) ) . mNodeType as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo_NodeInfoInner ) , "::" , stringify ! ( mNodeType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo_NodeInfoInner ) ) . mNameString as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo_NodeInfoInner ) , "::" , stringify ! ( mNameString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo_NodeInfoInner ) ) . mExtraName as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo_NodeInfoInner ) , "::" , stringify ! ( mExtraName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo_NodeInfoInner ) ) . mHash as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo_NodeInfoInner ) , "::" , stringify ! ( mHash ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo_NodeInfoInner ) ) . mHashInitialized as * const _ as usize } , 44usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo_NodeInfoInner ) , "::" , stringify ! ( mHashInitialized ) ) ) ; } impl Clone for NodeInfo_NodeInfoInner { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3dom8NodeInfo21_cycleCollectorGlobalE" ] - pub static mut NodeInfo__cycleCollectorGlobal : root :: mozilla :: dom :: NodeInfo_cycleCollection ; -} # [ test ] fn bindgen_test_layout_NodeInfo ( ) { assert_eq ! ( :: std :: mem :: size_of :: < NodeInfo > ( ) , 120usize , concat ! ( "Size of: " , stringify ! ( NodeInfo ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < NodeInfo > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( NodeInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo ) ) . mDocument as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo ) , "::" , stringify ! ( mDocument ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo ) ) . mInner as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo ) , "::" , stringify ! ( mInner ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo ) ) . mOwnerManager as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo ) , "::" , stringify ! ( mOwnerManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo ) ) . mQualifiedName as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo ) , "::" , stringify ! ( mQualifiedName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo ) ) . mNodeName as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo ) , "::" , stringify ! ( mNodeName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NodeInfo ) ) . mLocalName as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( NodeInfo ) , "::" , stringify ! ( mLocalName ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct EventTarget { pub _base : root :: nsIDOMEventTarget , pub _base_1 : root :: nsWrapperCache , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct EventTarget_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_EventTarget ( ) { assert_eq ! ( :: std :: mem :: size_of :: < EventTarget > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( EventTarget ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < EventTarget > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( EventTarget ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct BoxQuadOptions { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ConvertCoordinateOptions { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct DocGroup { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct DOMPoint { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct DOMQuad { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct TextOrElementOrDocument { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct DOMPointInit { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct TabGroup { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] pub struct DispatcherTrait__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct DispatcherTrait { pub vtable_ : * const DispatcherTrait__bindgen_vtable , } # [ test ] fn bindgen_test_layout_DispatcherTrait ( ) { assert_eq ! ( :: std :: mem :: size_of :: < DispatcherTrait > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( DispatcherTrait ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < DispatcherTrait > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( DispatcherTrait ) ) ) ; } impl Clone for DispatcherTrait { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct AudioContext { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Performance { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ServiceWorkerRegistration { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct TimeoutManager { _unused : [ u8 ; 0 ] } pub const LargeAllocStatus_NONE : root :: mozilla :: dom :: LargeAllocStatus = 0 ; pub const LargeAllocStatus_SUCCESS : root :: mozilla :: dom :: LargeAllocStatus = 1 ; pub const LargeAllocStatus_NON_GET : root :: mozilla :: dom :: LargeAllocStatus = 2 ; pub const LargeAllocStatus_NON_E10S : root :: mozilla :: dom :: LargeAllocStatus = 3 ; pub const LargeAllocStatus_NOT_ONLY_TOPLEVEL_IN_TABGROUP : root :: mozilla :: dom :: LargeAllocStatus = 4 ; pub const LargeAllocStatus_NON_WIN32 : root :: mozilla :: dom :: LargeAllocStatus = 5 ; pub type LargeAllocStatus = u8 ; pub mod prototypes { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: super :: root ; } pub mod constructors { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: super :: root ; } pub mod namedpropertiesobjects { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: super :: root ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct StyleSheetList { _unused : [ u8 ; 0 ] } - /// A class meant to be shared by ShadowRoot and Document, that holds a list of + /// mutated (directly or via script). + #[repr(C)] + #[derive(Debug, Copy)] + pub struct BorrowedAttrInfo { + pub mName: *const root::nsAttrName, + pub mValue: *const root::nsAttrValue, + } + #[test] + fn bindgen_test_layout_BorrowedAttrInfo() { + assert_eq!( + ::std::mem::size_of::<BorrowedAttrInfo>(), + 16usize, + concat!("Size of: ", stringify!(BorrowedAttrInfo)) + ); + assert_eq!( + ::std::mem::align_of::<BorrowedAttrInfo>(), + 8usize, + concat!("Alignment of ", stringify!(BorrowedAttrInfo)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<BorrowedAttrInfo>())).mName as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(BorrowedAttrInfo), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<BorrowedAttrInfo>())).mValue as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(BorrowedAttrInfo), + "::", + stringify!(mValue) + ) + ); + } + impl Clone for BorrowedAttrInfo { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct NodeInfo { + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mDocument: *mut root::nsIDocument, + pub mInner: root::mozilla::dom::NodeInfo_NodeInfoInner, + pub mOwnerManager: root::RefPtr<root::nsNodeInfoManager>, + pub mQualifiedName: ::nsstring::nsStringRepr, + pub mNodeName: ::nsstring::nsStringRepr, + pub mLocalName: ::nsstring::nsStringRepr, + } + pub type NodeInfo_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct NodeInfo_cycleCollection { + pub _base: root::nsCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_NodeInfo_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<NodeInfo_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(NodeInfo_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<NodeInfo_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(NodeInfo_cycleCollection)) + ); + } + impl Clone for NodeInfo_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct NodeInfo_NodeInfoInner { + pub mName: *const root::nsAtom, + pub mPrefix: *mut root::nsAtom, + pub mNamespaceID: i32, + pub mNodeType: u16, + pub mNameString: *const root::nsAString, + pub mExtraName: *mut root::nsAtom, + pub mHash: root::PLHashNumber, + pub mHashInitialized: bool, + } + #[test] + fn bindgen_test_layout_NodeInfo_NodeInfoInner() { + assert_eq!( + ::std::mem::size_of::<NodeInfo_NodeInfoInner>(), + 48usize, + concat!("Size of: ", stringify!(NodeInfo_NodeInfoInner)) + ); + assert_eq!( + ::std::mem::align_of::<NodeInfo_NodeInfoInner>(), + 8usize, + concat!("Alignment of ", stringify!(NodeInfo_NodeInfoInner)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo_NodeInfoInner>())).mName as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo_NodeInfoInner), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo_NodeInfoInner>())).mPrefix as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo_NodeInfoInner), + "::", + stringify!(mPrefix) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo_NodeInfoInner>())).mNamespaceID as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo_NodeInfoInner), + "::", + stringify!(mNamespaceID) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo_NodeInfoInner>())).mNodeType as *const _ + as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo_NodeInfoInner), + "::", + stringify!(mNodeType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo_NodeInfoInner>())).mNameString as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo_NodeInfoInner), + "::", + stringify!(mNameString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo_NodeInfoInner>())).mExtraName as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo_NodeInfoInner), + "::", + stringify!(mExtraName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo_NodeInfoInner>())).mHash as *const _ + as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo_NodeInfoInner), + "::", + stringify!(mHash) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo_NodeInfoInner>())).mHashInitialized + as *const _ as usize + }, + 44usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo_NodeInfoInner), + "::", + stringify!(mHashInitialized) + ) + ); + } + impl Clone for NodeInfo_NodeInfoInner { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3dom8NodeInfo21_cycleCollectorGlobalE"] + pub static mut NodeInfo__cycleCollectorGlobal: + root::mozilla::dom::NodeInfo_cycleCollection; + } + #[test] + fn bindgen_test_layout_NodeInfo() { + assert_eq!( + ::std::mem::size_of::<NodeInfo>(), + 120usize, + concat!("Size of: ", stringify!(NodeInfo)) + ); + assert_eq!( + ::std::mem::align_of::<NodeInfo>(), + 8usize, + concat!("Alignment of ", stringify!(NodeInfo)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<NodeInfo>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<NodeInfo>())).mDocument as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo), + "::", + stringify!(mDocument) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<NodeInfo>())).mInner as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo), + "::", + stringify!(mInner) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo>())).mOwnerManager as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo), + "::", + stringify!(mOwnerManager) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NodeInfo>())).mQualifiedName as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo), + "::", + stringify!(mQualifiedName) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<NodeInfo>())).mNodeName as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo), + "::", + stringify!(mNodeName) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<NodeInfo>())).mLocalName as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(NodeInfo), + "::", + stringify!(mLocalName) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct EventTarget { + pub _base: root::nsIDOMEventTarget, + pub _base_1: root::nsWrapperCache, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct EventTarget_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_EventTarget() { + assert_eq!( + ::std::mem::size_of::<EventTarget>(), + 32usize, + concat!("Size of: ", stringify!(EventTarget)) + ); + assert_eq!( + ::std::mem::align_of::<EventTarget>(), + 8usize, + concat!("Alignment of ", stringify!(EventTarget)) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct BoxQuadOptions { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ConvertCoordinateOptions { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct DocGroup { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct DOMPoint { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct DOMQuad { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct TextOrElementOrDocument { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct DOMPointInit { + _unused: [u8; 0], + } + pub const VisibilityState_Hidden: root::mozilla::dom::VisibilityState = 0; + pub const VisibilityState_Visible: root::mozilla::dom::VisibilityState = 1; + pub const VisibilityState_EndGuard_: root::mozilla::dom::VisibilityState = 2; + pub type VisibilityState = u8; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct IPCClientInfo { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct TabGroup { + _unused: [u8; 0], + } + #[repr(C)] + pub struct DispatcherTrait__bindgen_vtable(::std::os::raw::c_void); + #[repr(C)] + #[derive(Debug, Copy)] + pub struct DispatcherTrait { + pub vtable_: *const DispatcherTrait__bindgen_vtable, + } + #[test] + fn bindgen_test_layout_DispatcherTrait() { + assert_eq!( + ::std::mem::size_of::<DispatcherTrait>(), + 8usize, + concat!("Size of: ", stringify!(DispatcherTrait)) + ); + assert_eq!( + ::std::mem::align_of::<DispatcherTrait>(), + 8usize, + concat!("Alignment of ", stringify!(DispatcherTrait)) + ); + } + impl Clone for DispatcherTrait { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct IPCServiceWorkerDescriptor { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct AudioContext { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Performance { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ServiceWorkerRegistration { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct TimeoutManager { + _unused: [u8; 0], + } + pub const LargeAllocStatus_NONE: root::mozilla::dom::LargeAllocStatus = 0; + pub const LargeAllocStatus_SUCCESS: root::mozilla::dom::LargeAllocStatus = 1; + pub const LargeAllocStatus_NON_GET: root::mozilla::dom::LargeAllocStatus = 2; + pub const LargeAllocStatus_NON_E10S: root::mozilla::dom::LargeAllocStatus = 3; + pub const LargeAllocStatus_NOT_ONLY_TOPLEVEL_IN_TABGROUP: + root::mozilla::dom::LargeAllocStatus = 4; + pub const LargeAllocStatus_NON_WIN32: root::mozilla::dom::LargeAllocStatus = 5; + pub type LargeAllocStatus = u8; + pub mod prototypes { + #[allow(unused_imports)] + use self::super::super::super::super::root; + } + pub mod constructors { + #[allow(unused_imports)] + use self::super::super::super::super::root; + } + pub mod namedpropertiesobjects { + #[allow(unused_imports)] + use self::super::super::super::super::root; + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct StyleSheetList { + _unused: [u8; 0], + } + /// A class meant to be shared by ShadowRoot and Document, that holds a list of /// stylesheets. /// /// TODO(emilio, bug 1418159): In the future this should hold most of the - /// relevant style state, this should allow us to fix bug 548397. - # [ repr ( C ) ] pub struct DocumentOrShadowRoot { pub mStyleSheets : root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > , pub mDOMStyleSheets : root :: RefPtr < root :: mozilla :: dom :: StyleSheetList > , pub mIdentifierMap : [ u64 ; 4usize ] , pub mAsNode : * mut root :: nsINode , pub mKind : root :: mozilla :: dom :: DocumentOrShadowRoot_Kind , } pub const DocumentOrShadowRoot_Kind_Document : root :: mozilla :: dom :: DocumentOrShadowRoot_Kind = 0 ; pub const DocumentOrShadowRoot_Kind_ShadowRoot : root :: mozilla :: dom :: DocumentOrShadowRoot_Kind = 1 ; pub type DocumentOrShadowRoot_Kind = :: std :: os :: raw :: c_int ; # [ test ] fn bindgen_test_layout_DocumentOrShadowRoot ( ) { assert_eq ! ( :: std :: mem :: size_of :: < DocumentOrShadowRoot > ( ) , 64usize , concat ! ( "Size of: " , stringify ! ( DocumentOrShadowRoot ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < DocumentOrShadowRoot > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( DocumentOrShadowRoot ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DocumentOrShadowRoot ) ) . mStyleSheets as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( DocumentOrShadowRoot ) , "::" , stringify ! ( mStyleSheets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DocumentOrShadowRoot ) ) . mDOMStyleSheets as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( DocumentOrShadowRoot ) , "::" , stringify ! ( mDOMStyleSheets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DocumentOrShadowRoot ) ) . mIdentifierMap as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( DocumentOrShadowRoot ) , "::" , stringify ! ( mIdentifierMap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DocumentOrShadowRoot ) ) . mAsNode as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( DocumentOrShadowRoot ) , "::" , stringify ! ( mAsNode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DocumentOrShadowRoot ) ) . mKind as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( DocumentOrShadowRoot ) , "::" , stringify ! ( mKind ) ) ) ; } pub const VisibilityState_Hidden : root :: mozilla :: dom :: VisibilityState = 0 ; pub const VisibilityState_Visible : root :: mozilla :: dom :: VisibilityState = 1 ; pub const VisibilityState_Prerender : root :: mozilla :: dom :: VisibilityState = 2 ; pub const VisibilityState_EndGuard_ : root :: mozilla :: dom :: VisibilityState = 3 ; pub type VisibilityState = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct AnonymousContent { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct FontFaceSet { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct FullscreenRequest { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ImageTracker { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Link { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct MediaQueryList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct XPathEvaluator { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct FrameRequestCallback { pub _bindgen_opaque_blob : [ u64 ; 6usize ] , } # [ test ] fn bindgen_test_layout_FrameRequestCallback ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FrameRequestCallback > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( FrameRequestCallback ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FrameRequestCallback > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( FrameRequestCallback ) ) ) ; } impl Clone for FrameRequestCallback { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct URLParams { pub mParams : root :: nsTArray < root :: mozilla :: dom :: URLParams_Param > , } # [ repr ( C ) ] pub struct URLParams_ForEachIterator__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct URLParams_ForEachIterator { pub vtable_ : * const URLParams_ForEachIterator__bindgen_vtable , } # [ test ] fn bindgen_test_layout_URLParams_ForEachIterator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < URLParams_ForEachIterator > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( URLParams_ForEachIterator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < URLParams_ForEachIterator > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( URLParams_ForEachIterator ) ) ) ; } impl Clone for URLParams_ForEachIterator { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct URLParams_Param { pub mKey : ::nsstring::nsStringRepr , pub mValue : ::nsstring::nsStringRepr , } # [ test ] fn bindgen_test_layout_URLParams_Param ( ) { assert_eq ! ( :: std :: mem :: size_of :: < URLParams_Param > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( URLParams_Param ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < URLParams_Param > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( URLParams_Param ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLParams_Param ) ) . mKey as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( URLParams_Param ) , "::" , stringify ! ( mKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLParams_Param ) ) . mValue as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( URLParams_Param ) , "::" , stringify ! ( mValue ) ) ) ; } # [ test ] fn bindgen_test_layout_URLParams ( ) { assert_eq ! ( :: std :: mem :: size_of :: < URLParams > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( URLParams ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < URLParams > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( URLParams ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLParams ) ) . mParams as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( URLParams ) , "::" , stringify ! ( mParams ) ) ) ; } # [ repr ( C ) ] pub struct SRIMetadata { pub mHashes : root :: nsTArray < root :: nsCString > , pub mIntegrityString : ::nsstring::nsStringRepr , pub mAlgorithm : root :: nsCString , pub mAlgorithmType : i8 , pub mEmpty : bool , } pub const SRIMetadata_MAX_ALTERNATE_HASHES : u32 = 256 ; pub const SRIMetadata_UNKNOWN_ALGORITHM : i8 = -1 ; # [ test ] fn bindgen_test_layout_SRIMetadata ( ) { assert_eq ! ( :: std :: mem :: size_of :: < SRIMetadata > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( SRIMetadata ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < SRIMetadata > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( SRIMetadata ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const SRIMetadata ) ) . mHashes as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( SRIMetadata ) , "::" , stringify ! ( mHashes ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const SRIMetadata ) ) . mIntegrityString as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( SRIMetadata ) , "::" , stringify ! ( mIntegrityString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const SRIMetadata ) ) . mAlgorithm as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( SRIMetadata ) , "::" , stringify ! ( mAlgorithm ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const SRIMetadata ) ) . mAlgorithmType as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( SRIMetadata ) , "::" , stringify ! ( mAlgorithmType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const SRIMetadata ) ) . mEmpty as * const _ as usize } , 41usize , concat ! ( "Alignment of field: " , stringify ! ( SRIMetadata ) , "::" , stringify ! ( mEmpty ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct OwningNodeOrString { pub mType : root :: mozilla :: dom :: OwningNodeOrString_Type , pub mValue : root :: mozilla :: dom :: OwningNodeOrString_Value , } pub const OwningNodeOrString_Type_eUninitialized : root :: mozilla :: dom :: OwningNodeOrString_Type = 0 ; pub const OwningNodeOrString_Type_eNode : root :: mozilla :: dom :: OwningNodeOrString_Type = 1 ; pub const OwningNodeOrString_Type_eString : root :: mozilla :: dom :: OwningNodeOrString_Type = 2 ; pub type OwningNodeOrString_Type = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct OwningNodeOrString_Value { pub _bindgen_opaque_blob : [ u64 ; 2usize ] , } # [ test ] fn bindgen_test_layout_OwningNodeOrString_Value ( ) { assert_eq ! ( :: std :: mem :: size_of :: < OwningNodeOrString_Value > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( OwningNodeOrString_Value ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < OwningNodeOrString_Value > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( OwningNodeOrString_Value ) ) ) ; } impl Clone for OwningNodeOrString_Value { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_OwningNodeOrString ( ) { assert_eq ! ( :: std :: mem :: size_of :: < OwningNodeOrString > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( OwningNodeOrString ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < OwningNodeOrString > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( OwningNodeOrString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const OwningNodeOrString ) ) . mType as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( OwningNodeOrString ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const OwningNodeOrString ) ) . mValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( OwningNodeOrString ) , "::" , stringify ! ( mValue ) ) ) ; } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum FillMode { None = 0 , Forwards = 1 , Backwards = 2 , Both = 3 , Auto = 4 , EndGuard_ = 5 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum PlaybackDirection { Normal = 0 , Reverse = 1 , Alternate = 2 , Alternate_reverse = 3 , EndGuard_ = 4 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct XBLChildrenElement { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct CustomElementData { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] pub struct FragmentOrElement { pub _base : root :: nsIContent , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , - /// Array containing all attributes and children for this element - pub mAttrsAndChildren : root :: nsAttrAndChildArray , } pub type FragmentOrElement_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct FragmentOrElement_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_FragmentOrElement_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FragmentOrElement_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( FragmentOrElement_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FragmentOrElement_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( FragmentOrElement_cycleCollection ) ) ) ; } impl Clone for FragmentOrElement_cycleCollection { fn clone ( & self ) -> Self { * self } } - /// There are a set of DOM- and scripting-specific instance variables + /// relevant style state, this should allow us to fix bug 548397. + #[repr(C)] + pub struct DocumentOrShadowRoot { + pub mStyleSheets: root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>, + pub mDOMStyleSheets: root::RefPtr<root::mozilla::dom::StyleSheetList>, + pub mIdentifierMap: [u64; 4usize], + pub mAsNode: *mut root::nsINode, + pub mKind: root::mozilla::dom::DocumentOrShadowRoot_Kind, + } + pub const DocumentOrShadowRoot_Kind_Document: + root::mozilla::dom::DocumentOrShadowRoot_Kind = 0; + pub const DocumentOrShadowRoot_Kind_ShadowRoot: + root::mozilla::dom::DocumentOrShadowRoot_Kind = 1; + pub type DocumentOrShadowRoot_Kind = i32; + #[test] + fn bindgen_test_layout_DocumentOrShadowRoot() { + assert_eq!( + ::std::mem::size_of::<DocumentOrShadowRoot>(), + 64usize, + concat!("Size of: ", stringify!(DocumentOrShadowRoot)) + ); + assert_eq!( + ::std::mem::align_of::<DocumentOrShadowRoot>(), + 8usize, + concat!("Alignment of ", stringify!(DocumentOrShadowRoot)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DocumentOrShadowRoot>())).mStyleSheets as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(DocumentOrShadowRoot), + "::", + stringify!(mStyleSheets) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DocumentOrShadowRoot>())).mDOMStyleSheets as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(DocumentOrShadowRoot), + "::", + stringify!(mDOMStyleSheets) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DocumentOrShadowRoot>())).mIdentifierMap as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(DocumentOrShadowRoot), + "::", + stringify!(mIdentifierMap) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DocumentOrShadowRoot>())).mAsNode as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(DocumentOrShadowRoot), + "::", + stringify!(mAsNode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DocumentOrShadowRoot>())).mKind as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(DocumentOrShadowRoot), + "::", + stringify!(mKind) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct AnonymousContent { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct FontFaceSet { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct FullscreenRequest { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ImageTracker { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Link { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct MediaQueryList { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct XPathEvaluator { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct FrameRequestCallback { + pub _bindgen_opaque_blob: [u64; 6usize], + } + #[test] + fn bindgen_test_layout_FrameRequestCallback() { + assert_eq!( + ::std::mem::size_of::<FrameRequestCallback>(), + 48usize, + concat!("Size of: ", stringify!(FrameRequestCallback)) + ); + assert_eq!( + ::std::mem::align_of::<FrameRequestCallback>(), + 8usize, + concat!("Alignment of ", stringify!(FrameRequestCallback)) + ); + } + impl Clone for FrameRequestCallback { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct URLParams { + pub mParams: root::nsTArray<root::mozilla::dom::URLParams_Param>, + } + #[repr(C)] + pub struct URLParams_ForEachIterator__bindgen_vtable(::std::os::raw::c_void); + #[repr(C)] + #[derive(Debug, Copy)] + pub struct URLParams_ForEachIterator { + pub vtable_: *const URLParams_ForEachIterator__bindgen_vtable, + } + #[test] + fn bindgen_test_layout_URLParams_ForEachIterator() { + assert_eq!( + ::std::mem::size_of::<URLParams_ForEachIterator>(), + 8usize, + concat!("Size of: ", stringify!(URLParams_ForEachIterator)) + ); + assert_eq!( + ::std::mem::align_of::<URLParams_ForEachIterator>(), + 8usize, + concat!("Alignment of ", stringify!(URLParams_ForEachIterator)) + ); + } + impl Clone for URLParams_ForEachIterator { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct URLParams_Param { + pub mKey: ::nsstring::nsStringRepr, + pub mValue: ::nsstring::nsStringRepr, + } + #[test] + fn bindgen_test_layout_URLParams_Param() { + assert_eq!( + ::std::mem::size_of::<URLParams_Param>(), + 32usize, + concat!("Size of: ", stringify!(URLParams_Param)) + ); + assert_eq!( + ::std::mem::align_of::<URLParams_Param>(), + 8usize, + concat!("Alignment of ", stringify!(URLParams_Param)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLParams_Param>())).mKey as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(URLParams_Param), + "::", + stringify!(mKey) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URLParams_Param>())).mValue as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(URLParams_Param), + "::", + stringify!(mValue) + ) + ); + } + #[test] + fn bindgen_test_layout_URLParams() { + assert_eq!( + ::std::mem::size_of::<URLParams>(), + 8usize, + concat!("Size of: ", stringify!(URLParams)) + ); + assert_eq!( + ::std::mem::align_of::<URLParams>(), + 8usize, + concat!("Alignment of ", stringify!(URLParams)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<URLParams>())).mParams as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(URLParams), + "::", + stringify!(mParams) + ) + ); + } + #[repr(C)] + pub struct SRIMetadata { + pub mHashes: root::nsTArray<root::nsCString>, + pub mIntegrityString: ::nsstring::nsStringRepr, + pub mAlgorithm: root::nsCString, + pub mAlgorithmType: i8, + pub mEmpty: bool, + } + pub const SRIMetadata_MAX_ALTERNATE_HASHES: u32 = 256; + pub const SRIMetadata_UNKNOWN_ALGORITHM: i8 = -1; + #[test] + fn bindgen_test_layout_SRIMetadata() { + assert_eq!( + ::std::mem::size_of::<SRIMetadata>(), + 48usize, + concat!("Size of: ", stringify!(SRIMetadata)) + ); + assert_eq!( + ::std::mem::align_of::<SRIMetadata>(), + 8usize, + concat!("Alignment of ", stringify!(SRIMetadata)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<SRIMetadata>())).mHashes as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SRIMetadata), + "::", + stringify!(mHashes) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<SRIMetadata>())).mIntegrityString as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SRIMetadata), + "::", + stringify!(mIntegrityString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<SRIMetadata>())).mAlgorithm as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SRIMetadata), + "::", + stringify!(mAlgorithm) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<SRIMetadata>())).mAlgorithmType as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SRIMetadata), + "::", + stringify!(mAlgorithmType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<SRIMetadata>())).mEmpty as *const _ as usize }, + 41usize, + concat!( + "Offset of field: ", + stringify!(SRIMetadata), + "::", + stringify!(mEmpty) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct OwningNodeOrString { + pub mType: root::mozilla::dom::OwningNodeOrString_Type, + pub mValue: root::mozilla::dom::OwningNodeOrString_Value, + } + pub const OwningNodeOrString_Type_eUninitialized: + root::mozilla::dom::OwningNodeOrString_Type = 0; + pub const OwningNodeOrString_Type_eNode: root::mozilla::dom::OwningNodeOrString_Type = + 1; + pub const OwningNodeOrString_Type_eString: root::mozilla::dom::OwningNodeOrString_Type = + 2; + pub type OwningNodeOrString_Type = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct OwningNodeOrString_Value { + pub _bindgen_opaque_blob: [u64; 2usize], + } + #[test] + fn bindgen_test_layout_OwningNodeOrString_Value() { + assert_eq!( + ::std::mem::size_of::<OwningNodeOrString_Value>(), + 16usize, + concat!("Size of: ", stringify!(OwningNodeOrString_Value)) + ); + assert_eq!( + ::std::mem::align_of::<OwningNodeOrString_Value>(), + 8usize, + concat!("Alignment of ", stringify!(OwningNodeOrString_Value)) + ); + } + impl Clone for OwningNodeOrString_Value { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_OwningNodeOrString() { + assert_eq!( + ::std::mem::size_of::<OwningNodeOrString>(), + 24usize, + concat!("Size of: ", stringify!(OwningNodeOrString)) + ); + assert_eq!( + ::std::mem::align_of::<OwningNodeOrString>(), + 8usize, + concat!("Alignment of ", stringify!(OwningNodeOrString)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<OwningNodeOrString>())).mType as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(OwningNodeOrString), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<OwningNodeOrString>())).mValue as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(OwningNodeOrString), + "::", + stringify!(mValue) + ) + ); + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum FillMode { + None = 0, + Forwards = 1, + Backwards = 2, + Both = 3, + Auto = 4, + EndGuard_ = 5, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum PlaybackDirection { + Normal = 0, + Reverse = 1, + Alternate = 2, + Alternate_reverse = 3, + EndGuard_ = 4, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct XBLChildrenElement { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct CustomElementData { + _unused: [u8; 0], + } + #[repr(C)] + pub struct FragmentOrElement { + pub _base: root::nsIContent, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + /// Array containing all attributes and children for this element + pub mAttrsAndChildren: root::nsAttrAndChildArray, + } + pub type FragmentOrElement_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct FragmentOrElement_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_FragmentOrElement_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<FragmentOrElement_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(FragmentOrElement_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<FragmentOrElement_cycleCollection>(), + 8usize, + concat!( + "Alignment of ", + stringify!(FragmentOrElement_cycleCollection) + ) + ); + } + impl Clone for FragmentOrElement_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + /// There are a set of DOM- and scripting-specific instance variables /// that may only be instantiated when a content object is accessed /// through the DOM. Rather than burn actual slots in the content /// objects for each of these instance variables, we put them off /// in a side structure that's only allocated when the content is - /// accessed through the DOM. - # [ repr ( C ) ] pub struct FragmentOrElement_nsExtendedDOMSlots { pub _base : root :: nsIContent_nsExtendedContentSlots , - /// SMIL Overridde style rules (for SMIL animation of CSS properties) - /// @see Element::GetSMILOverrideStyle - pub mSMILOverrideStyle : root :: nsCOMPtr , - /// Holds any SMIL override style declaration for this element. - pub mSMILOverrideStyleDeclaration : root :: RefPtr < root :: mozilla :: DeclarationBlock > , - /// The controllers of the XUL Element. - pub mControllers : root :: nsCOMPtr , - /// An object implementing the .labels property for this element. - pub mLabelsList : root :: RefPtr < root :: nsLabelsNodeList > , - /// ShadowRoot bound to the element. - pub mShadowRoot : root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > , - /// XBL binding installed on the element. - pub mXBLBinding : root :: RefPtr < root :: nsXBLBinding > , - /// Web components custom element data. - pub mCustomElementData : root :: RefPtr < root :: mozilla :: dom :: CustomElementData > , - /// For XUL to hold either frameloader or opener. - pub mFrameLoaderOrOpener : root :: nsCOMPtr , } # [ test ] fn bindgen_test_layout_FragmentOrElement_nsExtendedDOMSlots ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FragmentOrElement_nsExtendedDOMSlots > ( ) , 104usize , concat ! ( "Size of: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FragmentOrElement_nsExtendedDOMSlots > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsExtendedDOMSlots ) ) . mSMILOverrideStyle as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) , "::" , stringify ! ( mSMILOverrideStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsExtendedDOMSlots ) ) . mSMILOverrideStyleDeclaration as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) , "::" , stringify ! ( mSMILOverrideStyleDeclaration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsExtendedDOMSlots ) ) . mControllers as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) , "::" , stringify ! ( mControllers ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsExtendedDOMSlots ) ) . mLabelsList as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) , "::" , stringify ! ( mLabelsList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsExtendedDOMSlots ) ) . mShadowRoot as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) , "::" , stringify ! ( mShadowRoot ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsExtendedDOMSlots ) ) . mXBLBinding as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) , "::" , stringify ! ( mXBLBinding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsExtendedDOMSlots ) ) . mCustomElementData as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) , "::" , stringify ! ( mCustomElementData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsExtendedDOMSlots ) ) . mFrameLoaderOrOpener as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsExtendedDOMSlots ) , "::" , stringify ! ( mFrameLoaderOrOpener ) ) ) ; } # [ repr ( C ) ] pub struct FragmentOrElement_nsDOMSlots { pub _base : root :: nsIContent_nsContentSlots , - /// The .style attribute (an interface that forwards to the actual + /// accessed through the DOM. + #[repr(C)] + pub struct FragmentOrElement_nsExtendedDOMSlots { + pub _base: root::nsIContent_nsExtendedContentSlots, + /// SMIL Overridde style rules (for SMIL animation of CSS properties) + /// @see Element::GetSMILOverrideStyle + pub mSMILOverrideStyle: root::nsCOMPtr, + /// Holds any SMIL override style declaration for this element. + pub mSMILOverrideStyleDeclaration: root::RefPtr<root::mozilla::DeclarationBlock>, + /// The controllers of the XUL Element. + pub mControllers: root::nsCOMPtr, + /// An object implementing the .labels property for this element. + pub mLabelsList: root::RefPtr<root::nsLabelsNodeList>, + /// ShadowRoot bound to the element. + pub mShadowRoot: root::RefPtr<root::mozilla::dom::ShadowRoot>, + /// XBL binding installed on the element. + pub mXBLBinding: root::RefPtr<root::nsXBLBinding>, + /// Web components custom element data. + pub mCustomElementData: root::RefPtr<root::mozilla::dom::CustomElementData>, + /// For XUL to hold either frameloader or opener. + pub mFrameLoaderOrOpener: root::nsCOMPtr, + } + #[test] + fn bindgen_test_layout_FragmentOrElement_nsExtendedDOMSlots() { + assert_eq!( + ::std::mem::size_of::<FragmentOrElement_nsExtendedDOMSlots>(), + 104usize, + concat!( + "Size of: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots) + ) + ); + assert_eq!( + ::std::mem::align_of::<FragmentOrElement_nsExtendedDOMSlots>(), + 8usize, + concat!( + "Alignment of ", + stringify!(FragmentOrElement_nsExtendedDOMSlots) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsExtendedDOMSlots>())) + .mSMILOverrideStyle as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots), + "::", + stringify!(mSMILOverrideStyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsExtendedDOMSlots>())) + .mSMILOverrideStyleDeclaration as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots), + "::", + stringify!(mSMILOverrideStyleDeclaration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsExtendedDOMSlots>())) + .mControllers as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots), + "::", + stringify!(mControllers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsExtendedDOMSlots>())).mLabelsList + as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots), + "::", + stringify!(mLabelsList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsExtendedDOMSlots>())).mShadowRoot + as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots), + "::", + stringify!(mShadowRoot) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsExtendedDOMSlots>())).mXBLBinding + as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots), + "::", + stringify!(mXBLBinding) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsExtendedDOMSlots>())) + .mCustomElementData as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots), + "::", + stringify!(mCustomElementData) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsExtendedDOMSlots>())) + .mFrameLoaderOrOpener as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsExtendedDOMSlots), + "::", + stringify!(mFrameLoaderOrOpener) + ) + ); + } + #[repr(C)] + pub struct FragmentOrElement_nsDOMSlots { + pub _base: root::nsIContent_nsContentSlots, + /// The .style attribute (an interface that forwards to the actual /// style rules) - /// @see nsGenericHTMLElement::GetStyle - pub mStyle : root :: nsCOMPtr , - /// The .dataset attribute. - /// @see nsGenericHTMLElement::GetDataset - pub mDataset : * mut root :: nsDOMStringMap , - /// An object implementing nsIDOMMozNamedAttrMap for this content (attributes) - /// @see FragmentOrElement::GetAttributes - pub mAttributeMap : root :: RefPtr < root :: nsDOMAttributeMap > , - /// An object implementing the .children property for this element. - pub mChildrenList : root :: RefPtr < root :: nsContentList > , - /// An object implementing the .classList property for this element. - pub mClassList : root :: RefPtr < root :: nsDOMTokenList > , } # [ test ] fn bindgen_test_layout_FragmentOrElement_nsDOMSlots ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FragmentOrElement_nsDOMSlots > ( ) , 120usize , concat ! ( "Size of: " , stringify ! ( FragmentOrElement_nsDOMSlots ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FragmentOrElement_nsDOMSlots > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( FragmentOrElement_nsDOMSlots ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsDOMSlots ) ) . mStyle as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsDOMSlots ) , "::" , stringify ! ( mStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsDOMSlots ) ) . mDataset as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsDOMSlots ) , "::" , stringify ! ( mDataset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsDOMSlots ) ) . mAttributeMap as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsDOMSlots ) , "::" , stringify ! ( mAttributeMap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsDOMSlots ) ) . mChildrenList as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsDOMSlots ) , "::" , stringify ! ( mChildrenList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement_nsDOMSlots ) ) . mClassList as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement_nsDOMSlots ) , "::" , stringify ! ( mClassList ) ) ) ; } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3dom17FragmentOrElement21_cycleCollectorGlobalE" ] - pub static mut FragmentOrElement__cycleCollectorGlobal : root :: mozilla :: dom :: FragmentOrElement_cycleCollection ; -} # [ test ] fn bindgen_test_layout_FragmentOrElement ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FragmentOrElement > ( ) , 104usize , concat ! ( "Size of: " , stringify ! ( FragmentOrElement ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FragmentOrElement > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( FragmentOrElement ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement ) ) . mRefCnt as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FragmentOrElement ) ) . mAttrsAndChildren as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( FragmentOrElement ) , "::" , stringify ! ( mAttrsAndChildren ) ) ) ; } # [ repr ( C ) ] pub struct Attr { pub _base : root :: nsIAttribute , pub _base_1 : root :: nsIDOMAttr , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mValue : ::nsstring::nsStringRepr , } pub type Attr_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Attr_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_Attr_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Attr_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( Attr_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Attr_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Attr_cycleCollection ) ) ) ; } impl Clone for Attr_cycleCollection { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3dom4Attr21_cycleCollectorGlobalE" ] - pub static mut Attr__cycleCollectorGlobal : root :: mozilla :: dom :: Attr_cycleCollection ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3dom4Attr12sInitializedE" ] - pub static mut Attr_sInitialized : bool ; -} # [ test ] fn bindgen_test_layout_Attr ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Attr > ( ) , 128usize , concat ! ( "Size of: " , stringify ! ( Attr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Attr > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Attr ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct DOMRectReadOnly { pub _base : root :: nsISupports , pub _base_1 : root :: nsWrapperCache , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mParent : root :: nsCOMPtr , } pub type DOMRectReadOnly_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct DOMRectReadOnly_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_DOMRectReadOnly_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < DOMRectReadOnly_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( DOMRectReadOnly_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < DOMRectReadOnly_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( DOMRectReadOnly_cycleCollection ) ) ) ; } impl Clone for DOMRectReadOnly_cycleCollection { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3dom15DOMRectReadOnly21_cycleCollectorGlobalE" ] - pub static mut DOMRectReadOnly__cycleCollectorGlobal : root :: mozilla :: dom :: DOMRectReadOnly_cycleCollection ; -} # [ test ] fn bindgen_test_layout_DOMRectReadOnly ( ) { assert_eq ! ( :: std :: mem :: size_of :: < DOMRectReadOnly > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( DOMRectReadOnly ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < DOMRectReadOnly > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( DOMRectReadOnly ) ) ) ; } # [ repr ( C ) ] pub struct Element { pub _base : root :: mozilla :: dom :: FragmentOrElement , pub mState : root :: mozilla :: EventStates , pub mServoData : ::gecko_bindings::structs::ServoCell < * mut ::gecko_bindings::structs::ServoNodeData > , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Element_COMTypeInfo { pub _address : u8 , } - /// StyleStateLocks is used to specify which event states should be locked, - /// and whether they should be locked to on or off. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Element_StyleStateLocks { pub mLocks : root :: mozilla :: EventStates , pub mValues : root :: mozilla :: EventStates , } # [ test ] fn bindgen_test_layout_Element_StyleStateLocks ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Element_StyleStateLocks > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( Element_StyleStateLocks ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Element_StyleStateLocks > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Element_StyleStateLocks ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Element_StyleStateLocks ) ) . mLocks as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Element_StyleStateLocks ) , "::" , stringify ! ( mLocks ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Element_StyleStateLocks ) ) . mValues as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( Element_StyleStateLocks ) , "::" , stringify ! ( mValues ) ) ) ; } impl Clone for Element_StyleStateLocks { fn clone ( & self ) -> Self { * self } } pub const Element_ATTR_MISSING : root :: mozilla :: dom :: Element__bindgen_ty_1 = -1 ; pub const Element_ATTR_VALUE_NO_MATCH : root :: mozilla :: dom :: Element__bindgen_ty_1 = -2 ; pub type Element__bindgen_ty_1 = :: std :: os :: raw :: c_int ; - /// Check whether this Element's given attribute has one of a given list of + /// @see nsGenericHTMLElement::GetStyle + pub mStyle: root::nsCOMPtr, + /// The .dataset attribute. + /// @see nsGenericHTMLElement::GetDataset + pub mDataset: *mut root::nsDOMStringMap, + /// @see Element::Attributes + pub mAttributeMap: root::RefPtr<root::nsDOMAttributeMap>, + /// An object implementing the .children property for this element. + pub mChildrenList: root::RefPtr<root::nsContentList>, + /// An object implementing the .classList property for this element. + pub mClassList: root::RefPtr<root::nsDOMTokenList>, + } + #[test] + fn bindgen_test_layout_FragmentOrElement_nsDOMSlots() { + assert_eq!( + ::std::mem::size_of::<FragmentOrElement_nsDOMSlots>(), + 120usize, + concat!("Size of: ", stringify!(FragmentOrElement_nsDOMSlots)) + ); + assert_eq!( + ::std::mem::align_of::<FragmentOrElement_nsDOMSlots>(), + 8usize, + concat!("Alignment of ", stringify!(FragmentOrElement_nsDOMSlots)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsDOMSlots>())).mStyle as *const _ + as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsDOMSlots), + "::", + stringify!(mStyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsDOMSlots>())).mDataset + as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsDOMSlots), + "::", + stringify!(mDataset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsDOMSlots>())).mAttributeMap + as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsDOMSlots), + "::", + stringify!(mAttributeMap) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsDOMSlots>())).mChildrenList + as *const _ as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsDOMSlots), + "::", + stringify!(mChildrenList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement_nsDOMSlots>())).mClassList + as *const _ as usize + }, + 112usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement_nsDOMSlots), + "::", + stringify!(mClassList) + ) + ); + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3dom17FragmentOrElement21_cycleCollectorGlobalE"] + pub static mut FragmentOrElement__cycleCollectorGlobal: + root::mozilla::dom::FragmentOrElement_cycleCollection; + } + #[test] + fn bindgen_test_layout_FragmentOrElement() { + assert_eq!( + ::std::mem::size_of::<FragmentOrElement>(), + 104usize, + concat!("Size of: ", stringify!(FragmentOrElement)) + ); + assert_eq!( + ::std::mem::align_of::<FragmentOrElement>(), + 8usize, + concat!("Alignment of ", stringify!(FragmentOrElement)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement>())).mRefCnt as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FragmentOrElement>())).mAttrsAndChildren as *const _ + as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(FragmentOrElement), + "::", + stringify!(mAttrsAndChildren) + ) + ); + } + #[repr(C)] + pub struct Attr { + pub _base: root::nsIAttribute, + pub _base_1: root::nsIDOMNode, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mValue: ::nsstring::nsStringRepr, + } + pub type Attr_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Attr_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_Attr_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<Attr_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(Attr_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<Attr_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(Attr_cycleCollection)) + ); + } + impl Clone for Attr_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3dom4Attr21_cycleCollectorGlobalE"] + pub static mut Attr__cycleCollectorGlobal: root::mozilla::dom::Attr_cycleCollection; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3dom4Attr12sInitializedE"] + pub static mut Attr_sInitialized: bool; + } + #[test] + fn bindgen_test_layout_Attr() { + assert_eq!( + ::std::mem::size_of::<Attr>(), + 128usize, + concat!("Size of: ", stringify!(Attr)) + ); + assert_eq!( + ::std::mem::align_of::<Attr>(), + 8usize, + concat!("Alignment of ", stringify!(Attr)) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct DOMRectReadOnly { + pub _base: root::nsISupports, + pub _base_1: root::nsWrapperCache, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mParent: root::nsCOMPtr, + } + pub type DOMRectReadOnly_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct DOMRectReadOnly_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_DOMRectReadOnly_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<DOMRectReadOnly_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(DOMRectReadOnly_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<DOMRectReadOnly_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(DOMRectReadOnly_cycleCollection)) + ); + } + impl Clone for DOMRectReadOnly_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3dom15DOMRectReadOnly21_cycleCollectorGlobalE"] + pub static mut DOMRectReadOnly__cycleCollectorGlobal: + root::mozilla::dom::DOMRectReadOnly_cycleCollection; + } + #[test] + fn bindgen_test_layout_DOMRectReadOnly() { + assert_eq!( + ::std::mem::size_of::<DOMRectReadOnly>(), + 48usize, + concat!("Size of: ", stringify!(DOMRectReadOnly)) + ); + assert_eq!( + ::std::mem::align_of::<DOMRectReadOnly>(), + 8usize, + concat!("Alignment of ", stringify!(DOMRectReadOnly)) + ); + } + #[repr(C)] + pub struct Element { + pub _base: root::mozilla::dom::FragmentOrElement, + pub mState: root::mozilla::EventStates, + pub mServoData: ::gecko_bindings::structs::ServoCell<*mut ::gecko_bindings::structs::ServoNodeData>, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Element_COMTypeInfo { + pub _address: u8, + } + /// StyleStateLocks is used to specify which event states should be locked, + /// and whether they should be locked to on or off. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Element_StyleStateLocks { + pub mLocks: root::mozilla::EventStates, + pub mValues: root::mozilla::EventStates, + } + #[test] + fn bindgen_test_layout_Element_StyleStateLocks() { + assert_eq!( + ::std::mem::size_of::<Element_StyleStateLocks>(), + 16usize, + concat!("Size of: ", stringify!(Element_StyleStateLocks)) + ); + assert_eq!( + ::std::mem::align_of::<Element_StyleStateLocks>(), + 8usize, + concat!("Alignment of ", stringify!(Element_StyleStateLocks)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Element_StyleStateLocks>())).mLocks as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Element_StyleStateLocks), + "::", + stringify!(mLocks) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Element_StyleStateLocks>())).mValues as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(Element_StyleStateLocks), + "::", + stringify!(mValues) + ) + ); + } + impl Clone for Element_StyleStateLocks { + fn clone(&self) -> Self { + *self + } + } + pub const Element_ATTR_MISSING: root::mozilla::dom::Element__bindgen_ty_1 = -1; + pub const Element_ATTR_VALUE_NO_MATCH: root::mozilla::dom::Element__bindgen_ty_1 = -2; + pub type Element__bindgen_ty_1 = i32; + /// Check whether this Element's given attribute has one of a given list of /// values. If there is a match, we return the index in the list of the first /// matching value. If there was no attribute at all, then we return /// ATTR_MISSING. If there was an attribute but it didn't match, we return @@ -160,24 +3906,414 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// against. /// @param aCaseSensitive Whether to do a case-sensitive compare on the values. /// @return ATTR_MISSING, ATTR_VALUE_NO_MATCH or the non-negative index - /// indicating the first value of aValues that matched - pub type Element_AttrValuesArray = * const * const root :: nsStaticAtom ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Element_MappedAttributeEntry { pub attribute : * mut * mut root :: nsStaticAtom , } # [ test ] fn bindgen_test_layout_Element_MappedAttributeEntry ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Element_MappedAttributeEntry > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( Element_MappedAttributeEntry ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Element_MappedAttributeEntry > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Element_MappedAttributeEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Element_MappedAttributeEntry ) ) . attribute as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Element_MappedAttributeEntry ) , "::" , stringify ! ( attribute ) ) ) ; } impl Clone for Element_MappedAttributeEntry { fn clone ( & self ) -> Self { * self } } - /// Define a general matching function that can be passed to + /// indicating the first value of aValues that matched + pub type Element_AttrValuesArray = *const *const root::nsStaticAtom; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Element_MappedAttributeEntry { + pub attribute: *mut *mut root::nsStaticAtom, + } + #[test] + fn bindgen_test_layout_Element_MappedAttributeEntry() { + assert_eq!( + ::std::mem::size_of::<Element_MappedAttributeEntry>(), + 8usize, + concat!("Size of: ", stringify!(Element_MappedAttributeEntry)) + ); + assert_eq!( + ::std::mem::align_of::<Element_MappedAttributeEntry>(), + 8usize, + concat!("Alignment of ", stringify!(Element_MappedAttributeEntry)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Element_MappedAttributeEntry>())).attribute + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Element_MappedAttributeEntry), + "::", + stringify!(attribute) + ) + ); + } + impl Clone for Element_MappedAttributeEntry { + fn clone(&self) -> Self { + *self + } + } + /// Define a general matching function that can be passed to /// GetElementsByMatching(). Each Element being considered is - /// passed in. - pub type Element_nsElementMatchFunc = :: std :: option :: Option < unsafe extern "C" fn ( aElement : * mut root :: mozilla :: dom :: Element ) -> bool > ; pub const Element_kAllServoDescendantBits : u32 = 25296896 ; pub const Element_kFireMutationEvent : bool = true ; pub const Element_kDontFireMutationEvent : bool = false ; pub const Element_kNotifyDocumentObservers : bool = true ; pub const Element_kDontNotifyDocumentObservers : bool = false ; pub const Element_kCallAfterSetAttr : bool = true ; pub const Element_kDontCallAfterSetAttr : bool = false ; # [ test ] fn bindgen_test_layout_Element ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Element > ( ) , 120usize , concat ! ( "Size of: " , stringify ! ( Element ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Element > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Element ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Element ) ) . mState as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( Element ) , "::" , stringify ! ( mState ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Element ) ) . mServoData as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( Element ) , "::" , stringify ! ( mServoData ) ) ) ; } # [ repr ( C ) ] pub struct HTMLSlotElement { pub _base : root :: nsGenericHTMLElement , pub mAssignedNodes : root :: nsTArray < root :: RefPtr < root :: nsINode > > , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct HTMLSlotElement_cycleCollection { pub _base : root :: mozilla :: dom :: FragmentOrElement_cycleCollection , } # [ test ] fn bindgen_test_layout_HTMLSlotElement_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < HTMLSlotElement_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( HTMLSlotElement_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < HTMLSlotElement_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( HTMLSlotElement_cycleCollection ) ) ) ; } impl Clone for HTMLSlotElement_cycleCollection { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3dom15HTMLSlotElement21_cycleCollectorGlobalE" ] - pub static mut HTMLSlotElement__cycleCollectorGlobal : root :: mozilla :: dom :: HTMLSlotElement_cycleCollection ; -} # [ test ] fn bindgen_test_layout_HTMLSlotElement ( ) { assert_eq ! ( :: std :: mem :: size_of :: < HTMLSlotElement > ( ) , 136usize , concat ! ( "Size of: " , stringify ! ( HTMLSlotElement ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < HTMLSlotElement > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( HTMLSlotElement ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const HTMLSlotElement ) ) . mAssignedNodes as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( HTMLSlotElement ) , "::" , stringify ! ( mAssignedNodes ) ) ) ; } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum CompositeOperation { Replace = 0 , Add = 1 , Accumulate = 2 , EndGuard_ = 3 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum IterationCompositeOperation { Replace = 0 , Accumulate = 1 , EndGuard_ = 2 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ExplicitChildIterator { pub mParent : * const root :: nsIContent , pub mParentAsSlot : * const root :: mozilla :: dom :: HTMLSlotElement , pub mChild : * mut root :: nsIContent , pub mDefaultChild : * mut root :: nsIContent , pub mIsFirst : bool , pub mIndexInInserted : u32 , } # [ test ] fn bindgen_test_layout_ExplicitChildIterator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ExplicitChildIterator > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( ExplicitChildIterator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ExplicitChildIterator > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ExplicitChildIterator ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ExplicitChildIterator ) ) . mParent as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ExplicitChildIterator ) , "::" , stringify ! ( mParent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ExplicitChildIterator ) ) . mParentAsSlot as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ExplicitChildIterator ) , "::" , stringify ! ( mParentAsSlot ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ExplicitChildIterator ) ) . mChild as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ExplicitChildIterator ) , "::" , stringify ! ( mChild ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ExplicitChildIterator ) ) . mDefaultChild as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ExplicitChildIterator ) , "::" , stringify ! ( mDefaultChild ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ExplicitChildIterator ) ) . mIsFirst as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( ExplicitChildIterator ) , "::" , stringify ! ( mIsFirst ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ExplicitChildIterator ) ) . mIndexInInserted as * const _ as usize } , 36usize , concat ! ( "Alignment of field: " , stringify ! ( ExplicitChildIterator ) , "::" , stringify ! ( mIndexInInserted ) ) ) ; } impl Clone for ExplicitChildIterator { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct FlattenedChildIterator { pub _base : root :: mozilla :: dom :: ExplicitChildIterator , pub mXBLInvolved : bool , pub mOriginalContent : * const root :: nsIContent , } # [ test ] fn bindgen_test_layout_FlattenedChildIterator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FlattenedChildIterator > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( FlattenedChildIterator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FlattenedChildIterator > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( FlattenedChildIterator ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FlattenedChildIterator ) ) . mXBLInvolved as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( FlattenedChildIterator ) , "::" , stringify ! ( mXBLInvolved ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FlattenedChildIterator ) ) . mOriginalContent as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( FlattenedChildIterator ) , "::" , stringify ! ( mOriginalContent ) ) ) ; } impl Clone for FlattenedChildIterator { fn clone ( & self ) -> Self { * self } } - /// AllChildrenIterator traverses the children of an element including before / + /// passed in. + pub type Element_nsElementMatchFunc = ::std::option::Option< + unsafe extern "C" fn(aElement: *mut root::mozilla::dom::Element) -> bool, + >; + pub const Element_kAllServoDescendantBits: u32 = 25296896; + pub const Element_kFireMutationEvent: bool = true; + pub const Element_kDontFireMutationEvent: bool = false; + pub const Element_kNotifyDocumentObservers: bool = true; + pub const Element_kDontNotifyDocumentObservers: bool = false; + pub const Element_kCallAfterSetAttr: bool = true; + pub const Element_kDontCallAfterSetAttr: bool = false; + #[test] + fn bindgen_test_layout_Element() { + assert_eq!( + ::std::mem::size_of::<Element>(), + 120usize, + concat!("Size of: ", stringify!(Element)) + ); + assert_eq!( + ::std::mem::align_of::<Element>(), + 8usize, + concat!("Alignment of ", stringify!(Element)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Element>())).mState as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(Element), + "::", + stringify!(mState) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Element>())).mServoData as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(Element), + "::", + stringify!(mServoData) + ) + ); + } + #[repr(C)] + pub struct HTMLSlotElement { + pub _base: root::nsGenericHTMLElement, + pub mAssignedNodes: root::nsTArray<root::RefPtr<root::nsINode>>, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct HTMLSlotElement_cycleCollection { + pub _base: root::mozilla::dom::FragmentOrElement_cycleCollection, + } + #[test] + fn bindgen_test_layout_HTMLSlotElement_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<HTMLSlotElement_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(HTMLSlotElement_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<HTMLSlotElement_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(HTMLSlotElement_cycleCollection)) + ); + } + impl Clone for HTMLSlotElement_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3dom15HTMLSlotElement21_cycleCollectorGlobalE"] + pub static mut HTMLSlotElement__cycleCollectorGlobal: + root::mozilla::dom::HTMLSlotElement_cycleCollection; + } + #[test] + fn bindgen_test_layout_HTMLSlotElement() { + assert_eq!( + ::std::mem::size_of::<HTMLSlotElement>(), + 136usize, + concat!("Size of: ", stringify!(HTMLSlotElement)) + ); + assert_eq!( + ::std::mem::align_of::<HTMLSlotElement>(), + 8usize, + concat!("Alignment of ", stringify!(HTMLSlotElement)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<HTMLSlotElement>())).mAssignedNodes as *const _ + as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(HTMLSlotElement), + "::", + stringify!(mAssignedNodes) + ) + ); + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum CompositeOperation { + Replace = 0, + Add = 1, + Accumulate = 2, + EndGuard_ = 3, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum IterationCompositeOperation { + Replace = 0, + Accumulate = 1, + EndGuard_ = 2, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ExplicitChildIterator { + pub mParent: *const root::nsIContent, + pub mParentAsSlot: *const root::mozilla::dom::HTMLSlotElement, + pub mChild: *mut root::nsIContent, + pub mDefaultChild: *mut root::nsIContent, + pub mIsFirst: bool, + pub mIndexInInserted: u32, + } + #[test] + fn bindgen_test_layout_ExplicitChildIterator() { + assert_eq!( + ::std::mem::size_of::<ExplicitChildIterator>(), + 40usize, + concat!("Size of: ", stringify!(ExplicitChildIterator)) + ); + assert_eq!( + ::std::mem::align_of::<ExplicitChildIterator>(), + 8usize, + concat!("Alignment of ", stringify!(ExplicitChildIterator)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ExplicitChildIterator>())).mParent as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ExplicitChildIterator), + "::", + stringify!(mParent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ExplicitChildIterator>())).mParentAsSlot as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ExplicitChildIterator), + "::", + stringify!(mParentAsSlot) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ExplicitChildIterator>())).mChild as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ExplicitChildIterator), + "::", + stringify!(mChild) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ExplicitChildIterator>())).mDefaultChild as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ExplicitChildIterator), + "::", + stringify!(mDefaultChild) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ExplicitChildIterator>())).mIsFirst as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(ExplicitChildIterator), + "::", + stringify!(mIsFirst) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ExplicitChildIterator>())).mIndexInInserted + as *const _ as usize + }, + 36usize, + concat!( + "Offset of field: ", + stringify!(ExplicitChildIterator), + "::", + stringify!(mIndexInInserted) + ) + ); + } + impl Clone for ExplicitChildIterator { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct FlattenedChildIterator { + pub _base: root::mozilla::dom::ExplicitChildIterator, + pub mXBLInvolved: bool, + pub mOriginalContent: *const root::nsIContent, + } + #[test] + fn bindgen_test_layout_FlattenedChildIterator() { + assert_eq!( + ::std::mem::size_of::<FlattenedChildIterator>(), + 56usize, + concat!("Size of: ", stringify!(FlattenedChildIterator)) + ); + assert_eq!( + ::std::mem::align_of::<FlattenedChildIterator>(), + 8usize, + concat!("Alignment of ", stringify!(FlattenedChildIterator)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FlattenedChildIterator>())).mXBLInvolved as *const _ + as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(FlattenedChildIterator), + "::", + stringify!(mXBLInvolved) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FlattenedChildIterator>())).mOriginalContent + as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(FlattenedChildIterator), + "::", + stringify!(mOriginalContent) + ) + ); + } + impl Clone for FlattenedChildIterator { + fn clone(&self) -> Self { + *self + } + } + /// AllChildrenIterator traverses the children of an element including before / /// after content and optionally XBL children. The iterator can be initialized /// to start at the end by providing false for aStartAtBeginning in order to /// start iterating in reverse from the last child. /// /// Note: it assumes that no mutation of the DOM or frame tree takes place during - /// iteration, and will break horribly if that is not true. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct AllChildrenIterator { pub _base : root :: mozilla :: dom :: FlattenedChildIterator , pub mAnonKids : root :: nsTArray < * mut root :: nsIContent > , pub mAnonKidsIdx : u32 , pub mFlags : u32 , pub mPhase : root :: mozilla :: dom :: AllChildrenIterator_IteratorPhase , } pub const AllChildrenIterator_IteratorPhase_eAtBegin : root :: mozilla :: dom :: AllChildrenIterator_IteratorPhase = 0 ; pub const AllChildrenIterator_IteratorPhase_eAtBeforeKid : root :: mozilla :: dom :: AllChildrenIterator_IteratorPhase = 1 ; pub const AllChildrenIterator_IteratorPhase_eAtExplicitKids : root :: mozilla :: dom :: AllChildrenIterator_IteratorPhase = 2 ; pub const AllChildrenIterator_IteratorPhase_eAtAnonKids : root :: mozilla :: dom :: AllChildrenIterator_IteratorPhase = 3 ; pub const AllChildrenIterator_IteratorPhase_eAtAfterKid : root :: mozilla :: dom :: AllChildrenIterator_IteratorPhase = 4 ; pub const AllChildrenIterator_IteratorPhase_eAtEnd : root :: mozilla :: dom :: AllChildrenIterator_IteratorPhase = 5 ; pub type AllChildrenIterator_IteratorPhase = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_AllChildrenIterator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < AllChildrenIterator > ( ) , 80usize , concat ! ( "Size of: " , stringify ! ( AllChildrenIterator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < AllChildrenIterator > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( AllChildrenIterator ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AllChildrenIterator ) ) . mAnonKids as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( AllChildrenIterator ) , "::" , stringify ! ( mAnonKids ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AllChildrenIterator ) ) . mAnonKidsIdx as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( AllChildrenIterator ) , "::" , stringify ! ( mAnonKidsIdx ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AllChildrenIterator ) ) . mFlags as * const _ as usize } , 68usize , concat ! ( "Alignment of field: " , stringify ! ( AllChildrenIterator ) , "::" , stringify ! ( mFlags ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AllChildrenIterator ) ) . mPhase as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( AllChildrenIterator ) , "::" , stringify ! ( mPhase ) ) ) ; } - /// StyleChildrenIterator traverses the children of the element from the + /// iteration, and will break horribly if that is not true. + #[repr(C)] + #[derive(Debug)] + pub struct AllChildrenIterator { + pub _base: root::mozilla::dom::FlattenedChildIterator, + pub mAnonKids: root::nsTArray<*mut root::nsIContent>, + pub mAnonKidsIdx: u32, + pub mFlags: u32, + pub mPhase: root::mozilla::dom::AllChildrenIterator_IteratorPhase, + } + pub const AllChildrenIterator_IteratorPhase_eAtBegin: + root::mozilla::dom::AllChildrenIterator_IteratorPhase = 0; + pub const AllChildrenIterator_IteratorPhase_eAtBeforeKid: + root::mozilla::dom::AllChildrenIterator_IteratorPhase = 1; + pub const AllChildrenIterator_IteratorPhase_eAtExplicitKids: + root::mozilla::dom::AllChildrenIterator_IteratorPhase = 2; + pub const AllChildrenIterator_IteratorPhase_eAtAnonKids: + root::mozilla::dom::AllChildrenIterator_IteratorPhase = 3; + pub const AllChildrenIterator_IteratorPhase_eAtAfterKid: + root::mozilla::dom::AllChildrenIterator_IteratorPhase = 4; + pub const AllChildrenIterator_IteratorPhase_eAtEnd: + root::mozilla::dom::AllChildrenIterator_IteratorPhase = 5; + pub type AllChildrenIterator_IteratorPhase = u32; + #[test] + fn bindgen_test_layout_AllChildrenIterator() { + assert_eq!( + ::std::mem::size_of::<AllChildrenIterator>(), + 80usize, + concat!("Size of: ", stringify!(AllChildrenIterator)) + ); + assert_eq!( + ::std::mem::align_of::<AllChildrenIterator>(), + 8usize, + concat!("Alignment of ", stringify!(AllChildrenIterator)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AllChildrenIterator>())).mAnonKids as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(AllChildrenIterator), + "::", + stringify!(mAnonKids) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AllChildrenIterator>())).mAnonKidsIdx as *const _ + as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(AllChildrenIterator), + "::", + stringify!(mAnonKidsIdx) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AllChildrenIterator>())).mFlags as *const _ as usize + }, + 68usize, + concat!( + "Offset of field: ", + stringify!(AllChildrenIterator), + "::", + stringify!(mFlags) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AllChildrenIterator>())).mPhase as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(AllChildrenIterator), + "::", + stringify!(mPhase) + ) + ); + } + /// StyleChildrenIterator traverses the children of the element from the /// perspective of the style system, particularly the children we need to /// traverse during restyle. /// @@ -191,51 +4327,1236 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// iteration, and will break horribly if that is not true. /// /// We require this to be memmovable since Rust code can create and move - /// StyleChildrenIterators. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct StyleChildrenIterator { pub _base : root :: mozilla :: dom :: AllChildrenIterator , } # [ test ] fn bindgen_test_layout_StyleChildrenIterator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleChildrenIterator > ( ) , 80usize , concat ! ( "Size of: " , stringify ! ( StyleChildrenIterator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleChildrenIterator > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleChildrenIterator ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct MediaList { pub _base : root :: nsIDOMMediaList , pub _base_1 : root :: nsWrapperCache , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mStyleSheet : * mut root :: mozilla :: StyleSheet , } pub type MediaList_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct MediaList_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_MediaList_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < MediaList_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( MediaList_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < MediaList_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( MediaList_cycleCollection ) ) ) ; } impl Clone for MediaList_cycleCollection { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla3dom9MediaList21_cycleCollectorGlobalE" ] - pub static mut MediaList__cycleCollectorGlobal : root :: mozilla :: dom :: MediaList_cycleCollection ; -} # [ test ] fn bindgen_test_layout_MediaList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < MediaList > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( MediaList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < MediaList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( MediaList ) ) ) ; } } # [ repr ( C ) ] pub struct CSSVariableValues { - /// Map of variable names to IDs. Variable IDs are indexes into - /// mVariables. - pub mVariableIDs : [ u64 ; 4usize ] , - /// Array of variables, indexed by variable ID. - pub mVariables : root :: nsTArray < root :: mozilla :: CSSVariableValues_Variable > , } # [ repr ( C ) ] pub struct CSSVariableValues_Variable { pub mVariableName : ::nsstring::nsStringRepr , pub mValue : ::nsstring::nsStringRepr , pub mFirstToken : root :: nsCSSTokenSerializationType , pub mLastToken : root :: nsCSSTokenSerializationType , } # [ test ] fn bindgen_test_layout_CSSVariableValues_Variable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CSSVariableValues_Variable > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( CSSVariableValues_Variable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CSSVariableValues_Variable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CSSVariableValues_Variable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSVariableValues_Variable ) ) . mVariableName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( CSSVariableValues_Variable ) , "::" , stringify ! ( mVariableName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSVariableValues_Variable ) ) . mValue as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( CSSVariableValues_Variable ) , "::" , stringify ! ( mValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSVariableValues_Variable ) ) . mFirstToken as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( CSSVariableValues_Variable ) , "::" , stringify ! ( mFirstToken ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSVariableValues_Variable ) ) . mLastToken as * const _ as usize } , 36usize , concat ! ( "Alignment of field: " , stringify ! ( CSSVariableValues_Variable ) , "::" , stringify ! ( mLastToken ) ) ) ; } # [ test ] fn bindgen_test_layout_CSSVariableValues ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CSSVariableValues > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( CSSVariableValues ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CSSVariableValues > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CSSVariableValues ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSVariableValues ) ) . mVariableIDs as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( CSSVariableValues ) , "::" , stringify ! ( mVariableIDs ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSVariableValues ) ) . mVariables as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( CSSVariableValues ) , "::" , stringify ! ( mVariables ) ) ) ; } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum SheetType { Agent = 0 , User = 1 , PresHint = 2 , Doc = 3 , ScopedDoc = 4 , StyleAttr = 5 , Override = 6 , Animation = 7 , Transition = 8 , Count = 9 , Unknown = 255 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct StaticRefPtr < T > { pub mRawPtr : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } - /// This struct represents a combined color from a numeric color and + /// StyleChildrenIterators. + #[repr(C)] + #[derive(Debug)] + pub struct StyleChildrenIterator { + pub _base: root::mozilla::dom::AllChildrenIterator, + } + #[test] + fn bindgen_test_layout_StyleChildrenIterator() { + assert_eq!( + ::std::mem::size_of::<StyleChildrenIterator>(), + 80usize, + concat!("Size of: ", stringify!(StyleChildrenIterator)) + ); + assert_eq!( + ::std::mem::align_of::<StyleChildrenIterator>(), + 8usize, + concat!("Alignment of ", stringify!(StyleChildrenIterator)) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct MediaList { + pub _base: root::nsISupports, + pub _base_1: root::nsWrapperCache, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mStyleSheet: *mut root::mozilla::StyleSheet, + } + pub type MediaList_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct MediaList_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_MediaList_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<MediaList_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(MediaList_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<MediaList_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(MediaList_cycleCollection)) + ); + } + impl Clone for MediaList_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla3dom9MediaList21_cycleCollectorGlobalE"] + pub static mut MediaList__cycleCollectorGlobal: + root::mozilla::dom::MediaList_cycleCollection; + } + #[test] + fn bindgen_test_layout_MediaList() { + assert_eq!( + ::std::mem::size_of::<MediaList>(), + 48usize, + concat!("Size of: ", stringify!(MediaList)) + ); + assert_eq!( + ::std::mem::align_of::<MediaList>(), + 8usize, + concat!("Alignment of ", stringify!(MediaList)) + ); + } + } + #[repr(C)] + pub struct CSSVariableValues { + /// Map of variable names to IDs. Variable IDs are indexes into + /// mVariables. + pub mVariableIDs: [u64; 4usize], + /// Array of variables, indexed by variable ID. + pub mVariables: root::nsTArray<root::mozilla::CSSVariableValues_Variable>, + } + #[repr(C)] + pub struct CSSVariableValues_Variable { + pub mVariableName: ::nsstring::nsStringRepr, + pub mValue: ::nsstring::nsStringRepr, + pub mFirstToken: root::nsCSSTokenSerializationType, + pub mLastToken: root::nsCSSTokenSerializationType, + } + #[test] + fn bindgen_test_layout_CSSVariableValues_Variable() { + assert_eq!( + ::std::mem::size_of::<CSSVariableValues_Variable>(), + 40usize, + concat!("Size of: ", stringify!(CSSVariableValues_Variable)) + ); + assert_eq!( + ::std::mem::align_of::<CSSVariableValues_Variable>(), + 8usize, + concat!("Alignment of ", stringify!(CSSVariableValues_Variable)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSVariableValues_Variable>())).mVariableName as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CSSVariableValues_Variable), + "::", + stringify!(mVariableName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSVariableValues_Variable>())).mValue as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(CSSVariableValues_Variable), + "::", + stringify!(mValue) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSVariableValues_Variable>())).mFirstToken as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(CSSVariableValues_Variable), + "::", + stringify!(mFirstToken) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSVariableValues_Variable>())).mLastToken as *const _ + as usize + }, + 36usize, + concat!( + "Offset of field: ", + stringify!(CSSVariableValues_Variable), + "::", + stringify!(mLastToken) + ) + ); + } + #[test] + fn bindgen_test_layout_CSSVariableValues() { + assert_eq!( + ::std::mem::size_of::<CSSVariableValues>(), + 40usize, + concat!("Size of: ", stringify!(CSSVariableValues)) + ); + assert_eq!( + ::std::mem::align_of::<CSSVariableValues>(), + 8usize, + concat!("Alignment of ", stringify!(CSSVariableValues)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSVariableValues>())).mVariableIDs as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CSSVariableValues), + "::", + stringify!(mVariableIDs) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSVariableValues>())).mVariables as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(CSSVariableValues), + "::", + stringify!(mVariables) + ) + ); + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum SheetType { + Agent = 0, + User = 1, + PresHint = 2, + Doc = 3, + ScopedDoc = 4, + StyleAttr = 5, + Override = 6, + Animation = 7, + Transition = 8, + Count = 9, + Unknown = 255, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct StaticRefPtr<T> { + pub mRawPtr: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + /// This struct represents a combined color from a numeric color and /// the current foreground color (currentcolor keyword). /// Conceptually, the formula is "color * (1 - p) + currentcolor * p" /// where p is mForegroundRatio. See mozilla::LinearBlendColors for - /// the actual algorithm. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StyleComplexColor { pub mColor : root :: nscolor , pub mForegroundRatio : u8 , pub mIsAuto : bool , } # [ test ] fn bindgen_test_layout_StyleComplexColor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleComplexColor > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( StyleComplexColor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleComplexColor > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( StyleComplexColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleComplexColor ) ) . mColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleComplexColor ) , "::" , stringify ! ( mColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleComplexColor ) ) . mForegroundRatio as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( StyleComplexColor ) , "::" , stringify ! ( mForegroundRatio ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleComplexColor ) ) . mIsAuto as * const _ as usize } , 5usize , concat ! ( "Alignment of field: " , stringify ! ( StyleComplexColor ) , "::" , stringify ! ( mIsAuto ) ) ) ; } impl Clone for StyleComplexColor { fn clone ( & self ) -> Self { * self } } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum Side { eSideTop = 0 , eSideRight = 1 , eSideBottom = 2 , eSideLeft = 3 , } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum HalfCorner { eCornerTopLeftX = 0 , eCornerTopLeftY = 1 , eCornerTopRightX = 2 , eCornerTopRightY = 3 , eCornerBottomRightX = 4 , eCornerBottomRightY = 5 , eCornerBottomLeftX = 6 , eCornerBottomLeftY = 7 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct NotNull < T > { pub mBasePtr : T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub const FontFamilyType_eFamily_generic_first : root :: mozilla :: FontFamilyType = FontFamilyType :: eFamily_serif ; pub const FontFamilyType_eFamily_generic_last : root :: mozilla :: FontFamilyType = FontFamilyType :: eFamily_fantasy ; pub const FontFamilyType_eFamily_generic_count : root :: mozilla :: FontFamilyType = FontFamilyType :: eFamily_monospace ; # [ repr ( u32 ) ] - /// type of font family name, either a name (e.g. Helvetica) or a + /// the actual algorithm. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StyleComplexColor { + pub mColor: root::nscolor, + pub mForegroundRatio: u8, + pub mIsAuto: bool, + } + #[test] + fn bindgen_test_layout_StyleComplexColor() { + assert_eq!( + ::std::mem::size_of::<StyleComplexColor>(), + 8usize, + concat!("Size of: ", stringify!(StyleComplexColor)) + ); + assert_eq!( + ::std::mem::align_of::<StyleComplexColor>(), + 4usize, + concat!("Alignment of ", stringify!(StyleComplexColor)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleComplexColor>())).mColor as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleComplexColor), + "::", + stringify!(mColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleComplexColor>())).mForegroundRatio as *const _ + as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(StyleComplexColor), + "::", + stringify!(mForegroundRatio) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleComplexColor>())).mIsAuto as *const _ as usize + }, + 5usize, + concat!( + "Offset of field: ", + stringify!(StyleComplexColor), + "::", + stringify!(mIsAuto) + ) + ); + } + impl Clone for StyleComplexColor { + fn clone(&self) -> Self { + *self + } + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum Side { + eSideTop = 0, + eSideRight = 1, + eSideBottom = 2, + eSideLeft = 3, + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum HalfCorner { + eCornerTopLeftX = 0, + eCornerTopLeftY = 1, + eCornerTopRightX = 2, + eCornerTopRightY = 3, + eCornerBottomRightX = 4, + eCornerBottomRightY = 5, + eCornerBottomLeftX = 6, + eCornerBottomLeftY = 7, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct NotNull<T> { + pub mBasePtr: T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub const FontFamilyType_eFamily_generic_first: root::mozilla::FontFamilyType = + FontFamilyType::eFamily_serif; + pub const FontFamilyType_eFamily_generic_last: root::mozilla::FontFamilyType = + FontFamilyType::eFamily_fantasy; + pub const FontFamilyType_eFamily_generic_count: root::mozilla::FontFamilyType = + FontFamilyType::eFamily_monospace; + #[repr(u32)] + /// type of font family name, either a name (e.g. Helvetica) or a /// generic (e.g. serif, sans-serif), with the ability to distinguish - /// between unquoted and quoted names for serializaiton - # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum FontFamilyType { eFamily_none = 0 , eFamily_named = 1 , eFamily_named_quoted = 2 , eFamily_serif = 3 , eFamily_sans_serif = 4 , eFamily_monospace = 5 , eFamily_cursive = 6 , eFamily_fantasy = 7 , eFamily_moz_variable = 8 , eFamily_moz_fixed = 9 , eFamily_moz_emoji = 10 , } - /// font family name, a string for the name if not a generic and - /// a font type indicated named family or which generic family - # [ repr ( C ) ] pub struct FontFamilyName { pub mType : root :: mozilla :: FontFamilyType , pub mName : ::nsstring::nsStringRepr , } # [ test ] fn bindgen_test_layout_FontFamilyName ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FontFamilyName > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( FontFamilyName ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FontFamilyName > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( FontFamilyName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontFamilyName ) ) . mType as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( FontFamilyName ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontFamilyName ) ) . mName as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( FontFamilyName ) , "::" , stringify ! ( mName ) ) ) ; } - /// A refcounted array of FontFamilyNames. We use this to store the specified + /// between unquoted and quoted names for serializaiton + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum FontFamilyType { + eFamily_none = 0, + eFamily_named = 1, + eFamily_named_quoted = 2, + eFamily_serif = 3, + eFamily_sans_serif = 4, + eFamily_monospace = 5, + eFamily_cursive = 6, + eFamily_fantasy = 7, + eFamily_moz_variable = 8, + eFamily_moz_fixed = 9, + eFamily_moz_emoji = 10, + } + /// font family name, a string for the name if not a generic and + /// a font type indicated named family or which generic family + #[repr(C)] + pub struct FontFamilyName { + pub mType: root::mozilla::FontFamilyType, + pub mName: ::nsstring::nsStringRepr, + } + #[test] + fn bindgen_test_layout_FontFamilyName() { + assert_eq!( + ::std::mem::size_of::<FontFamilyName>(), + 24usize, + concat!("Size of: ", stringify!(FontFamilyName)) + ); + assert_eq!( + ::std::mem::align_of::<FontFamilyName>(), + 8usize, + concat!("Alignment of ", stringify!(FontFamilyName)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<FontFamilyName>())).mType as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(FontFamilyName), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<FontFamilyName>())).mName as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(FontFamilyName), + "::", + stringify!(mName) + ) + ); + } + /// A refcounted array of FontFamilyNames. We use this to store the specified /// value (in Servo) and the computed value (in both Gecko and Servo) of the - /// font-family property. - # [ repr ( C ) ] pub struct SharedFontList { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mNames : root :: nsTArray < root :: mozilla :: FontFamilyName > , } pub type SharedFontList_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; extern "C" { - # [ link_name = "\u{1}_ZN7mozilla14SharedFontList6sEmptyE" ] - pub static mut SharedFontList_sEmpty : root :: mozilla :: StaticRefPtr < root :: mozilla :: SharedFontList > ; -} # [ test ] fn bindgen_test_layout_SharedFontList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < SharedFontList > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( SharedFontList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < SharedFontList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( SharedFontList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const SharedFontList ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( SharedFontList ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const SharedFontList ) ) . mNames as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( SharedFontList ) , "::" , stringify ! ( mNames ) ) ) ; } # [ test ] fn __bindgen_test_layout_StaticRefPtr_open0_SharedFontList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: StaticRefPtr < root :: mozilla :: SharedFontList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: mozilla :: SharedFontList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: StaticRefPtr < root :: mozilla :: SharedFontList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: mozilla :: SharedFontList > ) ) ) ; } - /// font family list, array of font families and a default font type. + /// font-family property. + #[repr(C)] + pub struct SharedFontList { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mNames: root::nsTArray<root::mozilla::FontFamilyName>, + } + pub type SharedFontList_HasThreadSafeRefCnt = root::mozilla::TrueType; + extern "C" { + #[link_name = "\u{1}_ZN7mozilla14SharedFontList6sEmptyE"] + pub static mut SharedFontList_sEmpty: + root::mozilla::StaticRefPtr<root::mozilla::SharedFontList>; + } + #[test] + fn bindgen_test_layout_SharedFontList() { + assert_eq!( + ::std::mem::size_of::<SharedFontList>(), + 16usize, + concat!("Size of: ", stringify!(SharedFontList)) + ); + assert_eq!( + ::std::mem::align_of::<SharedFontList>(), + 8usize, + concat!("Alignment of ", stringify!(SharedFontList)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<SharedFontList>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SharedFontList), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<SharedFontList>())).mNames as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SharedFontList), + "::", + stringify!(mNames) + ) + ); + } + #[test] + fn __bindgen_test_layout_StaticRefPtr_open0_SharedFontList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::StaticRefPtr<root::mozilla::SharedFontList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::mozilla::SharedFontList>) + ) + ); + assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: StaticRefPtr < root :: mozilla :: SharedFontList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: mozilla :: SharedFontList > ) ) ); + } + /// font family list, array of font families and a default font type. /// font family names are either named strings or generics. the default - /// font type is used to preserve the variable font fallback behavior - # [ repr ( C ) ] pub struct FontFamilyList { pub mFontlist : root :: mozilla :: NotNull < root :: RefPtr < root :: mozilla :: SharedFontList > > , pub mDefaultFontType : root :: mozilla :: FontFamilyType , } # [ test ] fn bindgen_test_layout_FontFamilyList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FontFamilyList > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( FontFamilyList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FontFamilyList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( FontFamilyList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontFamilyList ) ) . mFontlist as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( FontFamilyList ) , "::" , stringify ! ( mFontlist ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontFamilyList ) ) . mDefaultFontType as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( FontFamilyList ) , "::" , stringify ! ( mDefaultFontType ) ) ) ; } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleBasicShapeType { Polygon = 0 , Circle = 1 , Ellipse = 2 , Inset = 3 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleBoxAlign { Stretch = 0 , Start = 1 , Center = 2 , Baseline = 3 , End = 4 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleBoxDecorationBreak { Slice = 0 , Clone = 1 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleBoxDirection { Normal = 0 , Reverse = 1 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleBoxOrient { Horizontal = 0 , Vertical = 1 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleBoxPack { Start = 0 , Center = 1 , End = 2 , Justify = 3 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleBoxSizing { Content = 0 , Border = 1 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleClear { None = 0 , Left = 1 , Right = 2 , InlineStart = 3 , InlineEnd = 4 , Both = 5 , Line = 8 , Max = 13 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleGeometryBox { ContentBox = 0 , PaddingBox = 1 , BorderBox = 2 , MarginBox = 3 , FillBox = 4 , StrokeBox = 5 , ViewBox = 6 , NoClip = 7 , Text = 8 , NoBox = 9 , MozAlmostPadding = 127 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleFillRule { Nonzero = 0 , Evenodd = 1 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleFloat { None = 0 , Left = 1 , Right = 2 , InlineStart = 3 , InlineEnd = 4 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleFloatEdge { ContentBox = 0 , MarginBox = 1 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleHyphens { None = 0 , Manual = 1 , Auto = 2 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleShapeRadius { ClosestSide = 0 , FarthestSide = 1 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleShapeSourceType { None = 0 , URL = 1 , Image = 2 , Shape = 3 , Box = 4 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleStackSizing { Ignore = 0 , StretchToFit = 1 , IgnoreHorizontal = 2 , IgnoreVertical = 3 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleTextJustify { None = 0 , Auto = 1 , InterWord = 2 , InterCharacter = 3 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleUserFocus { None = 0 , Ignore = 1 , Normal = 2 , SelectAll = 3 , SelectBefore = 4 , SelectAfter = 5 , SelectSame = 6 , SelectMenu = 7 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleUserSelect { None = 0 , Text = 1 , Element = 2 , Elements = 3 , All = 4 , Toggle = 5 , TriState = 6 , Auto = 7 , MozAll = 8 , MozText = 9 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleUserInput { None = 0 , Enabled = 1 , Disabled = 2 , Auto = 3 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleUserModify { ReadOnly = 0 , ReadWrite = 1 , WriteOnly = 2 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleWindowDragging { Default = 0 , Drag = 1 , NoDrag = 2 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleOrient { Inline = 0 , Block = 1 , Horizontal = 2 , Vertical = 3 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleImageLayerRepeat { NoRepeat = 0 , RepeatX = 1 , RepeatY = 2 , Repeat = 3 , Space = 4 , Round = 5 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleBorderImageRepeat { Stretch = 0 , Repeat = 1 , Round = 2 , Space = 3 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleDisplay { None = 0 , Block = 1 , FlowRoot = 2 , Inline = 3 , InlineBlock = 4 , ListItem = 5 , Table = 6 , InlineTable = 7 , TableRowGroup = 8 , TableColumn = 9 , TableColumnGroup = 10 , TableHeaderGroup = 11 , TableFooterGroup = 12 , TableRow = 13 , TableCell = 14 , TableCaption = 15 , Flex = 16 , InlineFlex = 17 , Grid = 18 , InlineGrid = 19 , Ruby = 20 , RubyBase = 21 , RubyBaseContainer = 22 , RubyText = 23 , RubyTextContainer = 24 , Contents = 25 , WebkitBox = 26 , WebkitInlineBox = 27 , MozBox = 28 , MozInlineBox = 29 , MozGrid = 30 , MozInlineGrid = 31 , MozGridGroup = 32 , MozGridLine = 33 , MozStack = 34 , MozInlineStack = 35 , MozDeck = 36 , MozGroupbox = 37 , MozPopup = 38 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleGridTrackBreadth { MaxContent = 1 , MinContent = 2 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleWhiteSpace { Normal = 0 , Pre = 1 , Nowrap = 2 , PreWrap = 3 , PreLine = 4 , PreSpace = 5 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleOverscrollBehavior { Auto = 0 , Contain = 1 , None = 2 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct SupportsWeakPtr { pub _address : u8 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct WeakPtr { pub _address : u8 , } pub type WeakPtr_WeakReference = u8 ; - /// Event messages - pub type EventMessageType = u16 ; pub const EventMessage_eVoidEvent : root :: mozilla :: EventMessage = 0 ; pub const EventMessage_eAllEvents : root :: mozilla :: EventMessage = 1 ; pub const EventMessage_eWindowClose : root :: mozilla :: EventMessage = 2 ; pub const EventMessage_eKeyPress : root :: mozilla :: EventMessage = 3 ; pub const EventMessage_eKeyUp : root :: mozilla :: EventMessage = 4 ; pub const EventMessage_eKeyDown : root :: mozilla :: EventMessage = 5 ; pub const EventMessage_eKeyDownOnPlugin : root :: mozilla :: EventMessage = 6 ; pub const EventMessage_eKeyUpOnPlugin : root :: mozilla :: EventMessage = 7 ; pub const EventMessage_eAccessKeyNotFound : root :: mozilla :: EventMessage = 8 ; pub const EventMessage_eResize : root :: mozilla :: EventMessage = 9 ; pub const EventMessage_eScroll : root :: mozilla :: EventMessage = 10 ; pub const EventMessage_eInstall : root :: mozilla :: EventMessage = 11 ; pub const EventMessage_eAppInstalled : root :: mozilla :: EventMessage = 12 ; pub const EventMessage_ePluginActivate : root :: mozilla :: EventMessage = 13 ; pub const EventMessage_ePluginFocus : root :: mozilla :: EventMessage = 14 ; pub const EventMessage_eOffline : root :: mozilla :: EventMessage = 15 ; pub const EventMessage_eOnline : root :: mozilla :: EventMessage = 16 ; pub const EventMessage_eLanguageChange : root :: mozilla :: EventMessage = 17 ; pub const EventMessage_eMouseMove : root :: mozilla :: EventMessage = 18 ; pub const EventMessage_eMouseUp : root :: mozilla :: EventMessage = 19 ; pub const EventMessage_eMouseDown : root :: mozilla :: EventMessage = 20 ; pub const EventMessage_eMouseEnterIntoWidget : root :: mozilla :: EventMessage = 21 ; pub const EventMessage_eMouseExitFromWidget : root :: mozilla :: EventMessage = 22 ; pub const EventMessage_eMouseDoubleClick : root :: mozilla :: EventMessage = 23 ; pub const EventMessage_eMouseClick : root :: mozilla :: EventMessage = 24 ; pub const EventMessage_eMouseAuxClick : root :: mozilla :: EventMessage = 25 ; pub const EventMessage_eMouseActivate : root :: mozilla :: EventMessage = 26 ; pub const EventMessage_eMouseOver : root :: mozilla :: EventMessage = 27 ; pub const EventMessage_eMouseOut : root :: mozilla :: EventMessage = 28 ; pub const EventMessage_eMouseHitTest : root :: mozilla :: EventMessage = 29 ; pub const EventMessage_eMouseEnter : root :: mozilla :: EventMessage = 30 ; pub const EventMessage_eMouseLeave : root :: mozilla :: EventMessage = 31 ; pub const EventMessage_eMouseTouchDrag : root :: mozilla :: EventMessage = 32 ; pub const EventMessage_eMouseLongTap : root :: mozilla :: EventMessage = 33 ; pub const EventMessage_eMouseEventFirst : root :: mozilla :: EventMessage = 18 ; pub const EventMessage_eMouseEventLast : root :: mozilla :: EventMessage = 33 ; pub const EventMessage_ePointerMove : root :: mozilla :: EventMessage = 34 ; pub const EventMessage_ePointerUp : root :: mozilla :: EventMessage = 35 ; pub const EventMessage_ePointerDown : root :: mozilla :: EventMessage = 36 ; pub const EventMessage_ePointerOver : root :: mozilla :: EventMessage = 37 ; pub const EventMessage_ePointerOut : root :: mozilla :: EventMessage = 38 ; pub const EventMessage_ePointerEnter : root :: mozilla :: EventMessage = 39 ; pub const EventMessage_ePointerLeave : root :: mozilla :: EventMessage = 40 ; pub const EventMessage_ePointerCancel : root :: mozilla :: EventMessage = 41 ; pub const EventMessage_ePointerGotCapture : root :: mozilla :: EventMessage = 42 ; pub const EventMessage_ePointerLostCapture : root :: mozilla :: EventMessage = 43 ; pub const EventMessage_ePointerEventFirst : root :: mozilla :: EventMessage = 34 ; pub const EventMessage_ePointerEventLast : root :: mozilla :: EventMessage = 43 ; pub const EventMessage_eContextMenu : root :: mozilla :: EventMessage = 44 ; pub const EventMessage_eLoad : root :: mozilla :: EventMessage = 45 ; pub const EventMessage_eUnload : root :: mozilla :: EventMessage = 46 ; pub const EventMessage_eHashChange : root :: mozilla :: EventMessage = 47 ; pub const EventMessage_eImageAbort : root :: mozilla :: EventMessage = 48 ; pub const EventMessage_eLoadError : root :: mozilla :: EventMessage = 49 ; pub const EventMessage_eLoadEnd : root :: mozilla :: EventMessage = 50 ; pub const EventMessage_ePopState : root :: mozilla :: EventMessage = 51 ; pub const EventMessage_eStorage : root :: mozilla :: EventMessage = 52 ; pub const EventMessage_eBeforeUnload : root :: mozilla :: EventMessage = 53 ; pub const EventMessage_eReadyStateChange : root :: mozilla :: EventMessage = 54 ; pub const EventMessage_eFormSubmit : root :: mozilla :: EventMessage = 55 ; pub const EventMessage_eFormReset : root :: mozilla :: EventMessage = 56 ; pub const EventMessage_eFormChange : root :: mozilla :: EventMessage = 57 ; pub const EventMessage_eFormSelect : root :: mozilla :: EventMessage = 58 ; pub const EventMessage_eFormInvalid : root :: mozilla :: EventMessage = 59 ; pub const EventMessage_eFormCheckboxStateChange : root :: mozilla :: EventMessage = 60 ; pub const EventMessage_eFormRadioStateChange : root :: mozilla :: EventMessage = 61 ; pub const EventMessage_eFocus : root :: mozilla :: EventMessage = 62 ; pub const EventMessage_eBlur : root :: mozilla :: EventMessage = 63 ; pub const EventMessage_eFocusIn : root :: mozilla :: EventMessage = 64 ; pub const EventMessage_eFocusOut : root :: mozilla :: EventMessage = 65 ; pub const EventMessage_eDragEnter : root :: mozilla :: EventMessage = 66 ; pub const EventMessage_eDragOver : root :: mozilla :: EventMessage = 67 ; pub const EventMessage_eDragExit : root :: mozilla :: EventMessage = 68 ; pub const EventMessage_eDrag : root :: mozilla :: EventMessage = 69 ; pub const EventMessage_eDragEnd : root :: mozilla :: EventMessage = 70 ; pub const EventMessage_eDragStart : root :: mozilla :: EventMessage = 71 ; pub const EventMessage_eDrop : root :: mozilla :: EventMessage = 72 ; pub const EventMessage_eDragLeave : root :: mozilla :: EventMessage = 73 ; pub const EventMessage_eDragDropEventFirst : root :: mozilla :: EventMessage = 66 ; pub const EventMessage_eDragDropEventLast : root :: mozilla :: EventMessage = 73 ; pub const EventMessage_eXULPopupShowing : root :: mozilla :: EventMessage = 74 ; pub const EventMessage_eXULPopupShown : root :: mozilla :: EventMessage = 75 ; pub const EventMessage_eXULPopupPositioned : root :: mozilla :: EventMessage = 76 ; pub const EventMessage_eXULPopupHiding : root :: mozilla :: EventMessage = 77 ; pub const EventMessage_eXULPopupHidden : root :: mozilla :: EventMessage = 78 ; pub const EventMessage_eXULBroadcast : root :: mozilla :: EventMessage = 79 ; pub const EventMessage_eXULCommandUpdate : root :: mozilla :: EventMessage = 80 ; pub const EventMessage_eLegacyMouseLineOrPageScroll : root :: mozilla :: EventMessage = 81 ; pub const EventMessage_eLegacyMousePixelScroll : root :: mozilla :: EventMessage = 82 ; pub const EventMessage_eScrollPortUnderflow : root :: mozilla :: EventMessage = 83 ; pub const EventMessage_eScrollPortOverflow : root :: mozilla :: EventMessage = 84 ; pub const EventMessage_eLegacySubtreeModified : root :: mozilla :: EventMessage = 85 ; pub const EventMessage_eLegacyNodeInserted : root :: mozilla :: EventMessage = 86 ; pub const EventMessage_eLegacyNodeRemoved : root :: mozilla :: EventMessage = 87 ; pub const EventMessage_eLegacyNodeRemovedFromDocument : root :: mozilla :: EventMessage = 88 ; pub const EventMessage_eLegacyNodeInsertedIntoDocument : root :: mozilla :: EventMessage = 89 ; pub const EventMessage_eLegacyAttrModified : root :: mozilla :: EventMessage = 90 ; pub const EventMessage_eLegacyCharacterDataModified : root :: mozilla :: EventMessage = 91 ; pub const EventMessage_eLegacyMutationEventFirst : root :: mozilla :: EventMessage = 85 ; pub const EventMessage_eLegacyMutationEventLast : root :: mozilla :: EventMessage = 91 ; pub const EventMessage_eUnidentifiedEvent : root :: mozilla :: EventMessage = 92 ; pub const EventMessage_eCompositionStart : root :: mozilla :: EventMessage = 93 ; pub const EventMessage_eCompositionEnd : root :: mozilla :: EventMessage = 94 ; pub const EventMessage_eCompositionUpdate : root :: mozilla :: EventMessage = 95 ; pub const EventMessage_eCompositionChange : root :: mozilla :: EventMessage = 96 ; pub const EventMessage_eCompositionCommitAsIs : root :: mozilla :: EventMessage = 97 ; pub const EventMessage_eCompositionCommit : root :: mozilla :: EventMessage = 98 ; pub const EventMessage_eCompositionCommitRequestHandled : root :: mozilla :: EventMessage = 99 ; pub const EventMessage_eLegacyDOMActivate : root :: mozilla :: EventMessage = 100 ; pub const EventMessage_eLegacyDOMFocusIn : root :: mozilla :: EventMessage = 101 ; pub const EventMessage_eLegacyDOMFocusOut : root :: mozilla :: EventMessage = 102 ; pub const EventMessage_ePageShow : root :: mozilla :: EventMessage = 103 ; pub const EventMessage_ePageHide : root :: mozilla :: EventMessage = 104 ; pub const EventMessage_eSVGLoad : root :: mozilla :: EventMessage = 105 ; pub const EventMessage_eSVGUnload : root :: mozilla :: EventMessage = 106 ; pub const EventMessage_eSVGResize : root :: mozilla :: EventMessage = 107 ; pub const EventMessage_eSVGScroll : root :: mozilla :: EventMessage = 108 ; pub const EventMessage_eSVGZoom : root :: mozilla :: EventMessage = 109 ; pub const EventMessage_eXULCommand : root :: mozilla :: EventMessage = 110 ; pub const EventMessage_eCopy : root :: mozilla :: EventMessage = 111 ; pub const EventMessage_eCut : root :: mozilla :: EventMessage = 112 ; pub const EventMessage_ePaste : root :: mozilla :: EventMessage = 113 ; pub const EventMessage_ePasteNoFormatting : root :: mozilla :: EventMessage = 114 ; pub const EventMessage_eQuerySelectedText : root :: mozilla :: EventMessage = 115 ; pub const EventMessage_eQueryTextContent : root :: mozilla :: EventMessage = 116 ; pub const EventMessage_eQueryCaretRect : root :: mozilla :: EventMessage = 117 ; pub const EventMessage_eQueryTextRect : root :: mozilla :: EventMessage = 118 ; pub const EventMessage_eQueryTextRectArray : root :: mozilla :: EventMessage = 119 ; pub const EventMessage_eQueryEditorRect : root :: mozilla :: EventMessage = 120 ; pub const EventMessage_eQueryContentState : root :: mozilla :: EventMessage = 121 ; pub const EventMessage_eQuerySelectionAsTransferable : root :: mozilla :: EventMessage = 122 ; pub const EventMessage_eQueryCharacterAtPoint : root :: mozilla :: EventMessage = 123 ; pub const EventMessage_eQueryDOMWidgetHittest : root :: mozilla :: EventMessage = 124 ; pub const EventMessage_eLoadStart : root :: mozilla :: EventMessage = 125 ; pub const EventMessage_eProgress : root :: mozilla :: EventMessage = 126 ; pub const EventMessage_eSuspend : root :: mozilla :: EventMessage = 127 ; pub const EventMessage_eEmptied : root :: mozilla :: EventMessage = 128 ; pub const EventMessage_eStalled : root :: mozilla :: EventMessage = 129 ; pub const EventMessage_ePlay : root :: mozilla :: EventMessage = 130 ; pub const EventMessage_ePause : root :: mozilla :: EventMessage = 131 ; pub const EventMessage_eLoadedMetaData : root :: mozilla :: EventMessage = 132 ; pub const EventMessage_eLoadedData : root :: mozilla :: EventMessage = 133 ; pub const EventMessage_eWaiting : root :: mozilla :: EventMessage = 134 ; pub const EventMessage_ePlaying : root :: mozilla :: EventMessage = 135 ; pub const EventMessage_eCanPlay : root :: mozilla :: EventMessage = 136 ; pub const EventMessage_eCanPlayThrough : root :: mozilla :: EventMessage = 137 ; pub const EventMessage_eSeeking : root :: mozilla :: EventMessage = 138 ; pub const EventMessage_eSeeked : root :: mozilla :: EventMessage = 139 ; pub const EventMessage_eTimeUpdate : root :: mozilla :: EventMessage = 140 ; pub const EventMessage_eEnded : root :: mozilla :: EventMessage = 141 ; pub const EventMessage_eRateChange : root :: mozilla :: EventMessage = 142 ; pub const EventMessage_eDurationChange : root :: mozilla :: EventMessage = 143 ; pub const EventMessage_eVolumeChange : root :: mozilla :: EventMessage = 144 ; pub const EventMessage_eAfterPaint : root :: mozilla :: EventMessage = 145 ; pub const EventMessage_eSwipeGestureMayStart : root :: mozilla :: EventMessage = 146 ; pub const EventMessage_eSwipeGestureStart : root :: mozilla :: EventMessage = 147 ; pub const EventMessage_eSwipeGestureUpdate : root :: mozilla :: EventMessage = 148 ; pub const EventMessage_eSwipeGestureEnd : root :: mozilla :: EventMessage = 149 ; pub const EventMessage_eSwipeGesture : root :: mozilla :: EventMessage = 150 ; pub const EventMessage_eMagnifyGestureStart : root :: mozilla :: EventMessage = 151 ; pub const EventMessage_eMagnifyGestureUpdate : root :: mozilla :: EventMessage = 152 ; pub const EventMessage_eMagnifyGesture : root :: mozilla :: EventMessage = 153 ; pub const EventMessage_eRotateGestureStart : root :: mozilla :: EventMessage = 154 ; pub const EventMessage_eRotateGestureUpdate : root :: mozilla :: EventMessage = 155 ; pub const EventMessage_eRotateGesture : root :: mozilla :: EventMessage = 156 ; pub const EventMessage_eTapGesture : root :: mozilla :: EventMessage = 157 ; pub const EventMessage_ePressTapGesture : root :: mozilla :: EventMessage = 158 ; pub const EventMessage_eEdgeUIStarted : root :: mozilla :: EventMessage = 159 ; pub const EventMessage_eEdgeUICanceled : root :: mozilla :: EventMessage = 160 ; pub const EventMessage_eEdgeUICompleted : root :: mozilla :: EventMessage = 161 ; pub const EventMessage_ePluginInputEvent : root :: mozilla :: EventMessage = 162 ; pub const EventMessage_eSetSelection : root :: mozilla :: EventMessage = 163 ; pub const EventMessage_eContentCommandCut : root :: mozilla :: EventMessage = 164 ; pub const EventMessage_eContentCommandCopy : root :: mozilla :: EventMessage = 165 ; pub const EventMessage_eContentCommandPaste : root :: mozilla :: EventMessage = 166 ; pub const EventMessage_eContentCommandDelete : root :: mozilla :: EventMessage = 167 ; pub const EventMessage_eContentCommandUndo : root :: mozilla :: EventMessage = 168 ; pub const EventMessage_eContentCommandRedo : root :: mozilla :: EventMessage = 169 ; pub const EventMessage_eContentCommandPasteTransferable : root :: mozilla :: EventMessage = 170 ; pub const EventMessage_eContentCommandLookUpDictionary : root :: mozilla :: EventMessage = 171 ; pub const EventMessage_eContentCommandScroll : root :: mozilla :: EventMessage = 172 ; pub const EventMessage_eGestureNotify : root :: mozilla :: EventMessage = 173 ; pub const EventMessage_eScrolledAreaChanged : root :: mozilla :: EventMessage = 174 ; pub const EventMessage_eTransitionStart : root :: mozilla :: EventMessage = 175 ; pub const EventMessage_eTransitionRun : root :: mozilla :: EventMessage = 176 ; pub const EventMessage_eTransitionEnd : root :: mozilla :: EventMessage = 177 ; pub const EventMessage_eTransitionCancel : root :: mozilla :: EventMessage = 178 ; pub const EventMessage_eAnimationStart : root :: mozilla :: EventMessage = 179 ; pub const EventMessage_eAnimationEnd : root :: mozilla :: EventMessage = 180 ; pub const EventMessage_eAnimationIteration : root :: mozilla :: EventMessage = 181 ; pub const EventMessage_eAnimationCancel : root :: mozilla :: EventMessage = 182 ; pub const EventMessage_eWebkitTransitionEnd : root :: mozilla :: EventMessage = 183 ; pub const EventMessage_eWebkitAnimationStart : root :: mozilla :: EventMessage = 184 ; pub const EventMessage_eWebkitAnimationEnd : root :: mozilla :: EventMessage = 185 ; pub const EventMessage_eWebkitAnimationIteration : root :: mozilla :: EventMessage = 186 ; pub const EventMessage_eSMILBeginEvent : root :: mozilla :: EventMessage = 187 ; pub const EventMessage_eSMILEndEvent : root :: mozilla :: EventMessage = 188 ; pub const EventMessage_eSMILRepeatEvent : root :: mozilla :: EventMessage = 189 ; pub const EventMessage_eAudioProcess : root :: mozilla :: EventMessage = 190 ; pub const EventMessage_eAudioComplete : root :: mozilla :: EventMessage = 191 ; pub const EventMessage_eBeforeScriptExecute : root :: mozilla :: EventMessage = 192 ; pub const EventMessage_eAfterScriptExecute : root :: mozilla :: EventMessage = 193 ; pub const EventMessage_eBeforePrint : root :: mozilla :: EventMessage = 194 ; pub const EventMessage_eAfterPrint : root :: mozilla :: EventMessage = 195 ; pub const EventMessage_eMessage : root :: mozilla :: EventMessage = 196 ; pub const EventMessage_eMessageError : root :: mozilla :: EventMessage = 197 ; pub const EventMessage_eOpen : root :: mozilla :: EventMessage = 198 ; pub const EventMessage_eDeviceOrientation : root :: mozilla :: EventMessage = 199 ; pub const EventMessage_eAbsoluteDeviceOrientation : root :: mozilla :: EventMessage = 200 ; pub const EventMessage_eDeviceMotion : root :: mozilla :: EventMessage = 201 ; pub const EventMessage_eDeviceProximity : root :: mozilla :: EventMessage = 202 ; pub const EventMessage_eUserProximity : root :: mozilla :: EventMessage = 203 ; pub const EventMessage_eDeviceLight : root :: mozilla :: EventMessage = 204 ; pub const EventMessage_eVRDisplayActivate : root :: mozilla :: EventMessage = 205 ; pub const EventMessage_eVRDisplayDeactivate : root :: mozilla :: EventMessage = 206 ; pub const EventMessage_eVRDisplayConnect : root :: mozilla :: EventMessage = 207 ; pub const EventMessage_eVRDisplayDisconnect : root :: mozilla :: EventMessage = 208 ; pub const EventMessage_eVRDisplayPresentChange : root :: mozilla :: EventMessage = 209 ; pub const EventMessage_eShow : root :: mozilla :: EventMessage = 210 ; pub const EventMessage_eFullscreenChange : root :: mozilla :: EventMessage = 211 ; pub const EventMessage_eFullscreenError : root :: mozilla :: EventMessage = 212 ; pub const EventMessage_eMozFullscreenChange : root :: mozilla :: EventMessage = 213 ; pub const EventMessage_eMozFullscreenError : root :: mozilla :: EventMessage = 214 ; pub const EventMessage_eTouchStart : root :: mozilla :: EventMessage = 215 ; pub const EventMessage_eTouchMove : root :: mozilla :: EventMessage = 216 ; pub const EventMessage_eTouchEnd : root :: mozilla :: EventMessage = 217 ; pub const EventMessage_eTouchCancel : root :: mozilla :: EventMessage = 218 ; pub const EventMessage_eTouchPointerCancel : root :: mozilla :: EventMessage = 219 ; pub const EventMessage_ePointerLockChange : root :: mozilla :: EventMessage = 220 ; pub const EventMessage_ePointerLockError : root :: mozilla :: EventMessage = 221 ; pub const EventMessage_eMozPointerLockChange : root :: mozilla :: EventMessage = 222 ; pub const EventMessage_eMozPointerLockError : root :: mozilla :: EventMessage = 223 ; pub const EventMessage_eWheel : root :: mozilla :: EventMessage = 224 ; pub const EventMessage_eWheelOperationStart : root :: mozilla :: EventMessage = 225 ; pub const EventMessage_eWheelOperationEnd : root :: mozilla :: EventMessage = 226 ; pub const EventMessage_eTimeChange : root :: mozilla :: EventMessage = 227 ; pub const EventMessage_eNetworkUpload : root :: mozilla :: EventMessage = 228 ; pub const EventMessage_eNetworkDownload : root :: mozilla :: EventMessage = 229 ; pub const EventMessage_eMediaRecorderDataAvailable : root :: mozilla :: EventMessage = 230 ; pub const EventMessage_eMediaRecorderWarning : root :: mozilla :: EventMessage = 231 ; pub const EventMessage_eMediaRecorderStop : root :: mozilla :: EventMessage = 232 ; pub const EventMessage_eGamepadButtonDown : root :: mozilla :: EventMessage = 233 ; pub const EventMessage_eGamepadButtonUp : root :: mozilla :: EventMessage = 234 ; pub const EventMessage_eGamepadAxisMove : root :: mozilla :: EventMessage = 235 ; pub const EventMessage_eGamepadConnected : root :: mozilla :: EventMessage = 236 ; pub const EventMessage_eGamepadDisconnected : root :: mozilla :: EventMessage = 237 ; pub const EventMessage_eGamepadEventFirst : root :: mozilla :: EventMessage = 233 ; pub const EventMessage_eGamepadEventLast : root :: mozilla :: EventMessage = 237 ; pub const EventMessage_eEditorInput : root :: mozilla :: EventMessage = 238 ; pub const EventMessage_eSelectStart : root :: mozilla :: EventMessage = 239 ; pub const EventMessage_eSelectionChange : root :: mozilla :: EventMessage = 240 ; pub const EventMessage_eVisibilityChange : root :: mozilla :: EventMessage = 241 ; pub const EventMessage_eToggle : root :: mozilla :: EventMessage = 242 ; pub const EventMessage_eClose : root :: mozilla :: EventMessage = 243 ; pub const EventMessage_eEventMessage_MaxValue : root :: mozilla :: EventMessage = 244 ; pub type EventMessage = root :: mozilla :: EventMessageType ; - /// Event class IDs - pub type EventClassIDType = u8 ; pub const EventClassID_eBasicEventClass : root :: mozilla :: EventClassID = 0 ; pub const EventClassID_eGUIEventClass : root :: mozilla :: EventClassID = 1 ; pub const EventClassID_eInputEventClass : root :: mozilla :: EventClassID = 2 ; pub const EventClassID_eUIEventClass : root :: mozilla :: EventClassID = 3 ; pub const EventClassID_eKeyboardEventClass : root :: mozilla :: EventClassID = 4 ; pub const EventClassID_eCompositionEventClass : root :: mozilla :: EventClassID = 5 ; pub const EventClassID_eQueryContentEventClass : root :: mozilla :: EventClassID = 6 ; pub const EventClassID_eSelectionEventClass : root :: mozilla :: EventClassID = 7 ; pub const EventClassID_eEditorInputEventClass : root :: mozilla :: EventClassID = 8 ; pub const EventClassID_eMouseEventBaseClass : root :: mozilla :: EventClassID = 9 ; pub const EventClassID_eMouseEventClass : root :: mozilla :: EventClassID = 10 ; pub const EventClassID_eDragEventClass : root :: mozilla :: EventClassID = 11 ; pub const EventClassID_eMouseScrollEventClass : root :: mozilla :: EventClassID = 12 ; pub const EventClassID_eWheelEventClass : root :: mozilla :: EventClassID = 13 ; pub const EventClassID_ePointerEventClass : root :: mozilla :: EventClassID = 14 ; pub const EventClassID_eGestureNotifyEventClass : root :: mozilla :: EventClassID = 15 ; pub const EventClassID_eSimpleGestureEventClass : root :: mozilla :: EventClassID = 16 ; pub const EventClassID_eTouchEventClass : root :: mozilla :: EventClassID = 17 ; pub const EventClassID_eScrollPortEventClass : root :: mozilla :: EventClassID = 18 ; pub const EventClassID_eScrollAreaEventClass : root :: mozilla :: EventClassID = 19 ; pub const EventClassID_eFormEventClass : root :: mozilla :: EventClassID = 20 ; pub const EventClassID_eClipboardEventClass : root :: mozilla :: EventClassID = 21 ; pub const EventClassID_eFocusEventClass : root :: mozilla :: EventClassID = 22 ; pub const EventClassID_eTransitionEventClass : root :: mozilla :: EventClassID = 23 ; pub const EventClassID_eAnimationEventClass : root :: mozilla :: EventClassID = 24 ; pub const EventClassID_eSMILTimeEventClass : root :: mozilla :: EventClassID = 25 ; pub const EventClassID_eCommandEventClass : root :: mozilla :: EventClassID = 26 ; pub const EventClassID_eContentCommandEventClass : root :: mozilla :: EventClassID = 27 ; pub const EventClassID_ePluginEventClass : root :: mozilla :: EventClassID = 28 ; pub const EventClassID_eMutationEventClass : root :: mozilla :: EventClassID = 29 ; pub type EventClassID = root :: mozilla :: EventClassIDType ; pub type AtomArray = root :: nsTArray < root :: RefPtr < root :: nsAtom > > ; - /// EventStates is the class used to represent the event states of nsIContent + /// font type is used to preserve the variable font fallback behavior + #[repr(C)] + pub struct FontFamilyList { + pub mFontlist: root::mozilla::NotNull<root::RefPtr<root::mozilla::SharedFontList>>, + pub mDefaultFontType: root::mozilla::FontFamilyType, + } + #[test] + fn bindgen_test_layout_FontFamilyList() { + assert_eq!( + ::std::mem::size_of::<FontFamilyList>(), + 16usize, + concat!("Size of: ", stringify!(FontFamilyList)) + ); + assert_eq!( + ::std::mem::align_of::<FontFamilyList>(), + 8usize, + concat!("Alignment of ", stringify!(FontFamilyList)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontFamilyList>())).mFontlist as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(FontFamilyList), + "::", + stringify!(mFontlist) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontFamilyList>())).mDefaultFontType as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(FontFamilyList), + "::", + stringify!(mDefaultFontType) + ) + ); + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleBasicShapeType { + Polygon = 0, + Circle = 1, + Ellipse = 2, + Inset = 3, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleBoxAlign { + Stretch = 0, + Start = 1, + Center = 2, + Baseline = 3, + End = 4, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleBoxDecorationBreak { + Slice = 0, + Clone = 1, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleBoxDirection { + Normal = 0, + Reverse = 1, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleBoxOrient { + Horizontal = 0, + Vertical = 1, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleBoxPack { + Start = 0, + Center = 1, + End = 2, + Justify = 3, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleBoxSizing { + Content = 0, + Border = 1, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleClear { + None = 0, + Left = 1, + Right = 2, + InlineStart = 3, + InlineEnd = 4, + Both = 5, + Line = 8, + Max = 13, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleGeometryBox { + ContentBox = 0, + PaddingBox = 1, + BorderBox = 2, + MarginBox = 3, + FillBox = 4, + StrokeBox = 5, + ViewBox = 6, + NoClip = 7, + Text = 8, + NoBox = 9, + MozAlmostPadding = 127, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleFillRule { + Nonzero = 0, + Evenodd = 1, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleFloat { + None = 0, + Left = 1, + Right = 2, + InlineStart = 3, + InlineEnd = 4, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleFloatEdge { + ContentBox = 0, + MarginBox = 1, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleHyphens { + None = 0, + Manual = 1, + Auto = 2, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleShapeRadius { + ClosestSide = 0, + FarthestSide = 1, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleShapeSourceType { + None = 0, + URL = 1, + Image = 2, + Shape = 3, + Box = 4, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleStackSizing { + Ignore = 0, + StretchToFit = 1, + IgnoreHorizontal = 2, + IgnoreVertical = 3, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleTextJustify { + None = 0, + Auto = 1, + InterWord = 2, + InterCharacter = 3, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleUserFocus { + None = 0, + Ignore = 1, + Normal = 2, + SelectAll = 3, + SelectBefore = 4, + SelectAfter = 5, + SelectSame = 6, + SelectMenu = 7, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleUserSelect { + None = 0, + Text = 1, + Element = 2, + Elements = 3, + All = 4, + Toggle = 5, + TriState = 6, + Auto = 7, + MozAll = 8, + MozText = 9, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleUserInput { + None = 0, + Enabled = 1, + Disabled = 2, + Auto = 3, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleUserModify { + ReadOnly = 0, + ReadWrite = 1, + WriteOnly = 2, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleWindowDragging { + Default = 0, + Drag = 1, + NoDrag = 2, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleOrient { + Inline = 0, + Block = 1, + Horizontal = 2, + Vertical = 3, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleImageLayerRepeat { + NoRepeat = 0, + RepeatX = 1, + RepeatY = 2, + Repeat = 3, + Space = 4, + Round = 5, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleBorderImageRepeat { + Stretch = 0, + Repeat = 1, + Round = 2, + Space = 3, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleDisplay { + None = 0, + Block = 1, + FlowRoot = 2, + Inline = 3, + InlineBlock = 4, + ListItem = 5, + Table = 6, + InlineTable = 7, + TableRowGroup = 8, + TableColumn = 9, + TableColumnGroup = 10, + TableHeaderGroup = 11, + TableFooterGroup = 12, + TableRow = 13, + TableCell = 14, + TableCaption = 15, + Flex = 16, + InlineFlex = 17, + Grid = 18, + InlineGrid = 19, + Ruby = 20, + RubyBase = 21, + RubyBaseContainer = 22, + RubyText = 23, + RubyTextContainer = 24, + Contents = 25, + WebkitBox = 26, + WebkitInlineBox = 27, + MozBox = 28, + MozInlineBox = 29, + MozGrid = 30, + MozInlineGrid = 31, + MozGridGroup = 32, + MozGridLine = 33, + MozStack = 34, + MozInlineStack = 35, + MozDeck = 36, + MozGroupbox = 37, + MozPopup = 38, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleGridTrackBreadth { + MaxContent = 1, + MinContent = 2, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleWhiteSpace { + Normal = 0, + Pre = 1, + Nowrap = 2, + PreWrap = 3, + PreLine = 4, + PreSpace = 5, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleOverscrollBehavior { + Auto = 0, + Contain = 1, + None = 2, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct SupportsWeakPtr { + pub _address: u8, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct WeakPtr { + pub _address: u8, + } + pub type WeakPtr_WeakReference = u8; + /// Event messages + pub type EventMessageType = u16; + pub const EventMessage_eVoidEvent: root::mozilla::EventMessage = 0; + pub const EventMessage_eAllEvents: root::mozilla::EventMessage = 1; + pub const EventMessage_eWindowClose: root::mozilla::EventMessage = 2; + pub const EventMessage_eKeyPress: root::mozilla::EventMessage = 3; + pub const EventMessage_eKeyUp: root::mozilla::EventMessage = 4; + pub const EventMessage_eKeyDown: root::mozilla::EventMessage = 5; + pub const EventMessage_eKeyDownOnPlugin: root::mozilla::EventMessage = 6; + pub const EventMessage_eKeyUpOnPlugin: root::mozilla::EventMessage = 7; + pub const EventMessage_eAccessKeyNotFound: root::mozilla::EventMessage = 8; + pub const EventMessage_eResize: root::mozilla::EventMessage = 9; + pub const EventMessage_eScroll: root::mozilla::EventMessage = 10; + pub const EventMessage_eInstall: root::mozilla::EventMessage = 11; + pub const EventMessage_eAppInstalled: root::mozilla::EventMessage = 12; + pub const EventMessage_ePluginActivate: root::mozilla::EventMessage = 13; + pub const EventMessage_ePluginFocus: root::mozilla::EventMessage = 14; + pub const EventMessage_eOffline: root::mozilla::EventMessage = 15; + pub const EventMessage_eOnline: root::mozilla::EventMessage = 16; + pub const EventMessage_eLanguageChange: root::mozilla::EventMessage = 17; + pub const EventMessage_eMouseMove: root::mozilla::EventMessage = 18; + pub const EventMessage_eMouseUp: root::mozilla::EventMessage = 19; + pub const EventMessage_eMouseDown: root::mozilla::EventMessage = 20; + pub const EventMessage_eMouseEnterIntoWidget: root::mozilla::EventMessage = 21; + pub const EventMessage_eMouseExitFromWidget: root::mozilla::EventMessage = 22; + pub const EventMessage_eMouseDoubleClick: root::mozilla::EventMessage = 23; + pub const EventMessage_eMouseClick: root::mozilla::EventMessage = 24; + pub const EventMessage_eMouseAuxClick: root::mozilla::EventMessage = 25; + pub const EventMessage_eMouseActivate: root::mozilla::EventMessage = 26; + pub const EventMessage_eMouseOver: root::mozilla::EventMessage = 27; + pub const EventMessage_eMouseOut: root::mozilla::EventMessage = 28; + pub const EventMessage_eMouseHitTest: root::mozilla::EventMessage = 29; + pub const EventMessage_eMouseEnter: root::mozilla::EventMessage = 30; + pub const EventMessage_eMouseLeave: root::mozilla::EventMessage = 31; + pub const EventMessage_eMouseTouchDrag: root::mozilla::EventMessage = 32; + pub const EventMessage_eMouseLongTap: root::mozilla::EventMessage = 33; + pub const EventMessage_eMouseEventFirst: root::mozilla::EventMessage = 18; + pub const EventMessage_eMouseEventLast: root::mozilla::EventMessage = 33; + pub const EventMessage_ePointerMove: root::mozilla::EventMessage = 34; + pub const EventMessage_ePointerUp: root::mozilla::EventMessage = 35; + pub const EventMessage_ePointerDown: root::mozilla::EventMessage = 36; + pub const EventMessage_ePointerOver: root::mozilla::EventMessage = 37; + pub const EventMessage_ePointerOut: root::mozilla::EventMessage = 38; + pub const EventMessage_ePointerEnter: root::mozilla::EventMessage = 39; + pub const EventMessage_ePointerLeave: root::mozilla::EventMessage = 40; + pub const EventMessage_ePointerCancel: root::mozilla::EventMessage = 41; + pub const EventMessage_ePointerGotCapture: root::mozilla::EventMessage = 42; + pub const EventMessage_ePointerLostCapture: root::mozilla::EventMessage = 43; + pub const EventMessage_ePointerEventFirst: root::mozilla::EventMessage = 34; + pub const EventMessage_ePointerEventLast: root::mozilla::EventMessage = 43; + pub const EventMessage_eContextMenu: root::mozilla::EventMessage = 44; + pub const EventMessage_eLoad: root::mozilla::EventMessage = 45; + pub const EventMessage_eUnload: root::mozilla::EventMessage = 46; + pub const EventMessage_eHashChange: root::mozilla::EventMessage = 47; + pub const EventMessage_eImageAbort: root::mozilla::EventMessage = 48; + pub const EventMessage_eLoadError: root::mozilla::EventMessage = 49; + pub const EventMessage_eLoadEnd: root::mozilla::EventMessage = 50; + pub const EventMessage_ePopState: root::mozilla::EventMessage = 51; + pub const EventMessage_eStorage: root::mozilla::EventMessage = 52; + pub const EventMessage_eBeforeUnload: root::mozilla::EventMessage = 53; + pub const EventMessage_eReadyStateChange: root::mozilla::EventMessage = 54; + pub const EventMessage_eFormSubmit: root::mozilla::EventMessage = 55; + pub const EventMessage_eFormReset: root::mozilla::EventMessage = 56; + pub const EventMessage_eFormChange: root::mozilla::EventMessage = 57; + pub const EventMessage_eFormSelect: root::mozilla::EventMessage = 58; + pub const EventMessage_eFormInvalid: root::mozilla::EventMessage = 59; + pub const EventMessage_eFormCheckboxStateChange: root::mozilla::EventMessage = 60; + pub const EventMessage_eFormRadioStateChange: root::mozilla::EventMessage = 61; + pub const EventMessage_eFocus: root::mozilla::EventMessage = 62; + pub const EventMessage_eBlur: root::mozilla::EventMessage = 63; + pub const EventMessage_eFocusIn: root::mozilla::EventMessage = 64; + pub const EventMessage_eFocusOut: root::mozilla::EventMessage = 65; + pub const EventMessage_eDragEnter: root::mozilla::EventMessage = 66; + pub const EventMessage_eDragOver: root::mozilla::EventMessage = 67; + pub const EventMessage_eDragExit: root::mozilla::EventMessage = 68; + pub const EventMessage_eDrag: root::mozilla::EventMessage = 69; + pub const EventMessage_eDragEnd: root::mozilla::EventMessage = 70; + pub const EventMessage_eDragStart: root::mozilla::EventMessage = 71; + pub const EventMessage_eDrop: root::mozilla::EventMessage = 72; + pub const EventMessage_eDragLeave: root::mozilla::EventMessage = 73; + pub const EventMessage_eDragDropEventFirst: root::mozilla::EventMessage = 66; + pub const EventMessage_eDragDropEventLast: root::mozilla::EventMessage = 73; + pub const EventMessage_eXULPopupShowing: root::mozilla::EventMessage = 74; + pub const EventMessage_eXULPopupShown: root::mozilla::EventMessage = 75; + pub const EventMessage_eXULPopupPositioned: root::mozilla::EventMessage = 76; + pub const EventMessage_eXULPopupHiding: root::mozilla::EventMessage = 77; + pub const EventMessage_eXULPopupHidden: root::mozilla::EventMessage = 78; + pub const EventMessage_eXULBroadcast: root::mozilla::EventMessage = 79; + pub const EventMessage_eXULCommandUpdate: root::mozilla::EventMessage = 80; + pub const EventMessage_eLegacyMouseLineOrPageScroll: root::mozilla::EventMessage = 81; + pub const EventMessage_eLegacyMousePixelScroll: root::mozilla::EventMessage = 82; + pub const EventMessage_eScrollPortUnderflow: root::mozilla::EventMessage = 83; + pub const EventMessage_eScrollPortOverflow: root::mozilla::EventMessage = 84; + pub const EventMessage_eLegacySubtreeModified: root::mozilla::EventMessage = 85; + pub const EventMessage_eLegacyNodeInserted: root::mozilla::EventMessage = 86; + pub const EventMessage_eLegacyNodeRemoved: root::mozilla::EventMessage = 87; + pub const EventMessage_eLegacyNodeRemovedFromDocument: root::mozilla::EventMessage = 88; + pub const EventMessage_eLegacyNodeInsertedIntoDocument: root::mozilla::EventMessage = 89; + pub const EventMessage_eLegacyAttrModified: root::mozilla::EventMessage = 90; + pub const EventMessage_eLegacyCharacterDataModified: root::mozilla::EventMessage = 91; + pub const EventMessage_eLegacyMutationEventFirst: root::mozilla::EventMessage = 85; + pub const EventMessage_eLegacyMutationEventLast: root::mozilla::EventMessage = 91; + pub const EventMessage_eUnidentifiedEvent: root::mozilla::EventMessage = 92; + pub const EventMessage_eCompositionStart: root::mozilla::EventMessage = 93; + pub const EventMessage_eCompositionEnd: root::mozilla::EventMessage = 94; + pub const EventMessage_eCompositionUpdate: root::mozilla::EventMessage = 95; + pub const EventMessage_eCompositionChange: root::mozilla::EventMessage = 96; + pub const EventMessage_eCompositionCommitAsIs: root::mozilla::EventMessage = 97; + pub const EventMessage_eCompositionCommit: root::mozilla::EventMessage = 98; + pub const EventMessage_eCompositionCommitRequestHandled: root::mozilla::EventMessage = 99; + pub const EventMessage_eLegacyDOMActivate: root::mozilla::EventMessage = 100; + pub const EventMessage_eLegacyDOMFocusIn: root::mozilla::EventMessage = 101; + pub const EventMessage_eLegacyDOMFocusOut: root::mozilla::EventMessage = 102; + pub const EventMessage_ePageShow: root::mozilla::EventMessage = 103; + pub const EventMessage_ePageHide: root::mozilla::EventMessage = 104; + pub const EventMessage_eSVGLoad: root::mozilla::EventMessage = 105; + pub const EventMessage_eSVGUnload: root::mozilla::EventMessage = 106; + pub const EventMessage_eSVGResize: root::mozilla::EventMessage = 107; + pub const EventMessage_eSVGScroll: root::mozilla::EventMessage = 108; + pub const EventMessage_eSVGZoom: root::mozilla::EventMessage = 109; + pub const EventMessage_eXULCommand: root::mozilla::EventMessage = 110; + pub const EventMessage_eCopy: root::mozilla::EventMessage = 111; + pub const EventMessage_eCut: root::mozilla::EventMessage = 112; + pub const EventMessage_ePaste: root::mozilla::EventMessage = 113; + pub const EventMessage_ePasteNoFormatting: root::mozilla::EventMessage = 114; + pub const EventMessage_eQuerySelectedText: root::mozilla::EventMessage = 115; + pub const EventMessage_eQueryTextContent: root::mozilla::EventMessage = 116; + pub const EventMessage_eQueryCaretRect: root::mozilla::EventMessage = 117; + pub const EventMessage_eQueryTextRect: root::mozilla::EventMessage = 118; + pub const EventMessage_eQueryTextRectArray: root::mozilla::EventMessage = 119; + pub const EventMessage_eQueryEditorRect: root::mozilla::EventMessage = 120; + pub const EventMessage_eQueryContentState: root::mozilla::EventMessage = 121; + pub const EventMessage_eQuerySelectionAsTransferable: root::mozilla::EventMessage = 122; + pub const EventMessage_eQueryCharacterAtPoint: root::mozilla::EventMessage = 123; + pub const EventMessage_eQueryDOMWidgetHittest: root::mozilla::EventMessage = 124; + pub const EventMessage_eLoadStart: root::mozilla::EventMessage = 125; + pub const EventMessage_eProgress: root::mozilla::EventMessage = 126; + pub const EventMessage_eSuspend: root::mozilla::EventMessage = 127; + pub const EventMessage_eEmptied: root::mozilla::EventMessage = 128; + pub const EventMessage_eStalled: root::mozilla::EventMessage = 129; + pub const EventMessage_ePlay: root::mozilla::EventMessage = 130; + pub const EventMessage_ePause: root::mozilla::EventMessage = 131; + pub const EventMessage_eLoadedMetaData: root::mozilla::EventMessage = 132; + pub const EventMessage_eLoadedData: root::mozilla::EventMessage = 133; + pub const EventMessage_eWaiting: root::mozilla::EventMessage = 134; + pub const EventMessage_ePlaying: root::mozilla::EventMessage = 135; + pub const EventMessage_eCanPlay: root::mozilla::EventMessage = 136; + pub const EventMessage_eCanPlayThrough: root::mozilla::EventMessage = 137; + pub const EventMessage_eSeeking: root::mozilla::EventMessage = 138; + pub const EventMessage_eSeeked: root::mozilla::EventMessage = 139; + pub const EventMessage_eTimeUpdate: root::mozilla::EventMessage = 140; + pub const EventMessage_eEnded: root::mozilla::EventMessage = 141; + pub const EventMessage_eRateChange: root::mozilla::EventMessage = 142; + pub const EventMessage_eDurationChange: root::mozilla::EventMessage = 143; + pub const EventMessage_eVolumeChange: root::mozilla::EventMessage = 144; + pub const EventMessage_eAfterPaint: root::mozilla::EventMessage = 145; + pub const EventMessage_eSwipeGestureMayStart: root::mozilla::EventMessage = 146; + pub const EventMessage_eSwipeGestureStart: root::mozilla::EventMessage = 147; + pub const EventMessage_eSwipeGestureUpdate: root::mozilla::EventMessage = 148; + pub const EventMessage_eSwipeGestureEnd: root::mozilla::EventMessage = 149; + pub const EventMessage_eSwipeGesture: root::mozilla::EventMessage = 150; + pub const EventMessage_eMagnifyGestureStart: root::mozilla::EventMessage = 151; + pub const EventMessage_eMagnifyGestureUpdate: root::mozilla::EventMessage = 152; + pub const EventMessage_eMagnifyGesture: root::mozilla::EventMessage = 153; + pub const EventMessage_eRotateGestureStart: root::mozilla::EventMessage = 154; + pub const EventMessage_eRotateGestureUpdate: root::mozilla::EventMessage = 155; + pub const EventMessage_eRotateGesture: root::mozilla::EventMessage = 156; + pub const EventMessage_eTapGesture: root::mozilla::EventMessage = 157; + pub const EventMessage_ePressTapGesture: root::mozilla::EventMessage = 158; + pub const EventMessage_eEdgeUIStarted: root::mozilla::EventMessage = 159; + pub const EventMessage_eEdgeUICanceled: root::mozilla::EventMessage = 160; + pub const EventMessage_eEdgeUICompleted: root::mozilla::EventMessage = 161; + pub const EventMessage_ePluginInputEvent: root::mozilla::EventMessage = 162; + pub const EventMessage_eSetSelection: root::mozilla::EventMessage = 163; + pub const EventMessage_eContentCommandCut: root::mozilla::EventMessage = 164; + pub const EventMessage_eContentCommandCopy: root::mozilla::EventMessage = 165; + pub const EventMessage_eContentCommandPaste: root::mozilla::EventMessage = 166; + pub const EventMessage_eContentCommandDelete: root::mozilla::EventMessage = 167; + pub const EventMessage_eContentCommandUndo: root::mozilla::EventMessage = 168; + pub const EventMessage_eContentCommandRedo: root::mozilla::EventMessage = 169; + pub const EventMessage_eContentCommandPasteTransferable: root::mozilla::EventMessage = 170; + pub const EventMessage_eContentCommandLookUpDictionary: root::mozilla::EventMessage = 171; + pub const EventMessage_eContentCommandScroll: root::mozilla::EventMessage = 172; + pub const EventMessage_eGestureNotify: root::mozilla::EventMessage = 173; + pub const EventMessage_eScrolledAreaChanged: root::mozilla::EventMessage = 174; + pub const EventMessage_eTransitionStart: root::mozilla::EventMessage = 175; + pub const EventMessage_eTransitionRun: root::mozilla::EventMessage = 176; + pub const EventMessage_eTransitionEnd: root::mozilla::EventMessage = 177; + pub const EventMessage_eTransitionCancel: root::mozilla::EventMessage = 178; + pub const EventMessage_eAnimationStart: root::mozilla::EventMessage = 179; + pub const EventMessage_eAnimationEnd: root::mozilla::EventMessage = 180; + pub const EventMessage_eAnimationIteration: root::mozilla::EventMessage = 181; + pub const EventMessage_eAnimationCancel: root::mozilla::EventMessage = 182; + pub const EventMessage_eWebkitTransitionEnd: root::mozilla::EventMessage = 183; + pub const EventMessage_eWebkitAnimationStart: root::mozilla::EventMessage = 184; + pub const EventMessage_eWebkitAnimationEnd: root::mozilla::EventMessage = 185; + pub const EventMessage_eWebkitAnimationIteration: root::mozilla::EventMessage = 186; + pub const EventMessage_eSMILBeginEvent: root::mozilla::EventMessage = 187; + pub const EventMessage_eSMILEndEvent: root::mozilla::EventMessage = 188; + pub const EventMessage_eSMILRepeatEvent: root::mozilla::EventMessage = 189; + pub const EventMessage_eAudioProcess: root::mozilla::EventMessage = 190; + pub const EventMessage_eAudioComplete: root::mozilla::EventMessage = 191; + pub const EventMessage_eBeforeScriptExecute: root::mozilla::EventMessage = 192; + pub const EventMessage_eAfterScriptExecute: root::mozilla::EventMessage = 193; + pub const EventMessage_eBeforePrint: root::mozilla::EventMessage = 194; + pub const EventMessage_eAfterPrint: root::mozilla::EventMessage = 195; + pub const EventMessage_eMessage: root::mozilla::EventMessage = 196; + pub const EventMessage_eMessageError: root::mozilla::EventMessage = 197; + pub const EventMessage_eOpen: root::mozilla::EventMessage = 198; + pub const EventMessage_eDeviceOrientation: root::mozilla::EventMessage = 199; + pub const EventMessage_eAbsoluteDeviceOrientation: root::mozilla::EventMessage = 200; + pub const EventMessage_eDeviceMotion: root::mozilla::EventMessage = 201; + pub const EventMessage_eDeviceProximity: root::mozilla::EventMessage = 202; + pub const EventMessage_eUserProximity: root::mozilla::EventMessage = 203; + pub const EventMessage_eDeviceLight: root::mozilla::EventMessage = 204; + pub const EventMessage_eVRDisplayActivate: root::mozilla::EventMessage = 205; + pub const EventMessage_eVRDisplayDeactivate: root::mozilla::EventMessage = 206; + pub const EventMessage_eVRDisplayConnect: root::mozilla::EventMessage = 207; + pub const EventMessage_eVRDisplayDisconnect: root::mozilla::EventMessage = 208; + pub const EventMessage_eVRDisplayPresentChange: root::mozilla::EventMessage = 209; + pub const EventMessage_eShow: root::mozilla::EventMessage = 210; + pub const EventMessage_eFullscreenChange: root::mozilla::EventMessage = 211; + pub const EventMessage_eFullscreenError: root::mozilla::EventMessage = 212; + pub const EventMessage_eMozFullscreenChange: root::mozilla::EventMessage = 213; + pub const EventMessage_eMozFullscreenError: root::mozilla::EventMessage = 214; + pub const EventMessage_eTouchStart: root::mozilla::EventMessage = 215; + pub const EventMessage_eTouchMove: root::mozilla::EventMessage = 216; + pub const EventMessage_eTouchEnd: root::mozilla::EventMessage = 217; + pub const EventMessage_eTouchCancel: root::mozilla::EventMessage = 218; + pub const EventMessage_eTouchPointerCancel: root::mozilla::EventMessage = 219; + pub const EventMessage_ePointerLockChange: root::mozilla::EventMessage = 220; + pub const EventMessage_ePointerLockError: root::mozilla::EventMessage = 221; + pub const EventMessage_eMozPointerLockChange: root::mozilla::EventMessage = 222; + pub const EventMessage_eMozPointerLockError: root::mozilla::EventMessage = 223; + pub const EventMessage_eWheel: root::mozilla::EventMessage = 224; + pub const EventMessage_eWheelOperationStart: root::mozilla::EventMessage = 225; + pub const EventMessage_eWheelOperationEnd: root::mozilla::EventMessage = 226; + pub const EventMessage_eTimeChange: root::mozilla::EventMessage = 227; + pub const EventMessage_eNetworkUpload: root::mozilla::EventMessage = 228; + pub const EventMessage_eNetworkDownload: root::mozilla::EventMessage = 229; + pub const EventMessage_eMediaRecorderDataAvailable: root::mozilla::EventMessage = 230; + pub const EventMessage_eMediaRecorderWarning: root::mozilla::EventMessage = 231; + pub const EventMessage_eMediaRecorderStop: root::mozilla::EventMessage = 232; + pub const EventMessage_eGamepadButtonDown: root::mozilla::EventMessage = 233; + pub const EventMessage_eGamepadButtonUp: root::mozilla::EventMessage = 234; + pub const EventMessage_eGamepadAxisMove: root::mozilla::EventMessage = 235; + pub const EventMessage_eGamepadConnected: root::mozilla::EventMessage = 236; + pub const EventMessage_eGamepadDisconnected: root::mozilla::EventMessage = 237; + pub const EventMessage_eGamepadEventFirst: root::mozilla::EventMessage = 233; + pub const EventMessage_eGamepadEventLast: root::mozilla::EventMessage = 237; + pub const EventMessage_eEditorInput: root::mozilla::EventMessage = 238; + pub const EventMessage_eSelectStart: root::mozilla::EventMessage = 239; + pub const EventMessage_eSelectionChange: root::mozilla::EventMessage = 240; + pub const EventMessage_eVisibilityChange: root::mozilla::EventMessage = 241; + pub const EventMessage_eToggle: root::mozilla::EventMessage = 242; + pub const EventMessage_eClose: root::mozilla::EventMessage = 243; + pub const EventMessage_eEventMessage_MaxValue: root::mozilla::EventMessage = 244; + pub type EventMessage = u16; + /// Event class IDs + pub type EventClassIDType = u8; + pub const EventClassID_eBasicEventClass: root::mozilla::EventClassID = 0; + pub const EventClassID_eGUIEventClass: root::mozilla::EventClassID = 1; + pub const EventClassID_eInputEventClass: root::mozilla::EventClassID = 2; + pub const EventClassID_eUIEventClass: root::mozilla::EventClassID = 3; + pub const EventClassID_eKeyboardEventClass: root::mozilla::EventClassID = 4; + pub const EventClassID_eCompositionEventClass: root::mozilla::EventClassID = 5; + pub const EventClassID_eQueryContentEventClass: root::mozilla::EventClassID = 6; + pub const EventClassID_eSelectionEventClass: root::mozilla::EventClassID = 7; + pub const EventClassID_eEditorInputEventClass: root::mozilla::EventClassID = 8; + pub const EventClassID_eMouseEventBaseClass: root::mozilla::EventClassID = 9; + pub const EventClassID_eMouseEventClass: root::mozilla::EventClassID = 10; + pub const EventClassID_eDragEventClass: root::mozilla::EventClassID = 11; + pub const EventClassID_eMouseScrollEventClass: root::mozilla::EventClassID = 12; + pub const EventClassID_eWheelEventClass: root::mozilla::EventClassID = 13; + pub const EventClassID_ePointerEventClass: root::mozilla::EventClassID = 14; + pub const EventClassID_eGestureNotifyEventClass: root::mozilla::EventClassID = 15; + pub const EventClassID_eSimpleGestureEventClass: root::mozilla::EventClassID = 16; + pub const EventClassID_eTouchEventClass: root::mozilla::EventClassID = 17; + pub const EventClassID_eScrollPortEventClass: root::mozilla::EventClassID = 18; + pub const EventClassID_eScrollAreaEventClass: root::mozilla::EventClassID = 19; + pub const EventClassID_eFormEventClass: root::mozilla::EventClassID = 20; + pub const EventClassID_eClipboardEventClass: root::mozilla::EventClassID = 21; + pub const EventClassID_eFocusEventClass: root::mozilla::EventClassID = 22; + pub const EventClassID_eTransitionEventClass: root::mozilla::EventClassID = 23; + pub const EventClassID_eAnimationEventClass: root::mozilla::EventClassID = 24; + pub const EventClassID_eSMILTimeEventClass: root::mozilla::EventClassID = 25; + pub const EventClassID_eCommandEventClass: root::mozilla::EventClassID = 26; + pub const EventClassID_eContentCommandEventClass: root::mozilla::EventClassID = 27; + pub const EventClassID_ePluginEventClass: root::mozilla::EventClassID = 28; + pub const EventClassID_eMutationEventClass: root::mozilla::EventClassID = 29; + pub type EventClassID = u8; + pub type AtomArray = root::nsTArray<root::RefPtr<root::nsAtom>>; + /// EventStates is the class used to represent the event states of nsIContent /// instances. These states are calculated by IntrinsicState() and /// ContentStatesChanged() has to be called when one of them changes thus /// informing the layout/style engine of the change. - /// Event states are associated with pseudo-classes. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct EventStates { pub mStates : root :: mozilla :: EventStates_InternalType , } pub type EventStates_InternalType = u64 ; pub type EventStates_ServoType = u64 ; # [ test ] fn bindgen_test_layout_EventStates ( ) { assert_eq ! ( :: std :: mem :: size_of :: < EventStates > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( EventStates ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < EventStates > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( EventStates ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EventStates ) ) . mStates as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( EventStates ) , "::" , stringify ! ( mStates ) ) ) ; } impl Clone for EventStates { fn clone ( & self ) -> Self { * self } } pub const ServoTraversalFlags_Empty : root :: mozilla :: ServoTraversalFlags = 0 ; pub const ServoTraversalFlags_AnimationOnly : root :: mozilla :: ServoTraversalFlags = 1 ; pub const ServoTraversalFlags_ForCSSRuleChanges : root :: mozilla :: ServoTraversalFlags = 2 ; pub const ServoTraversalFlags_Forgetful : root :: mozilla :: ServoTraversalFlags = 8 ; pub const ServoTraversalFlags_ClearDirtyBits : root :: mozilla :: ServoTraversalFlags = 32 ; pub const ServoTraversalFlags_ClearAnimationOnlyDirtyDescendants : root :: mozilla :: ServoTraversalFlags = 64 ; pub const ServoTraversalFlags_ParallelTraversal : root :: mozilla :: ServoTraversalFlags = 128 ; pub const ServoTraversalFlags_FlushThrottledAnimations : root :: mozilla :: ServoTraversalFlags = 256 ; pub type ServoTraversalFlags = u32 ; # [ repr ( i32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum StyleRuleInclusion { All = 0 , DefaultOnly = 1 , } pub const UpdateAnimationsTasks_CSSAnimations : root :: mozilla :: UpdateAnimationsTasks = 1 ; pub const UpdateAnimationsTasks_CSSTransitions : root :: mozilla :: UpdateAnimationsTasks = 2 ; pub const UpdateAnimationsTasks_EffectProperties : root :: mozilla :: UpdateAnimationsTasks = 4 ; pub const UpdateAnimationsTasks_CascadeResults : root :: mozilla :: UpdateAnimationsTasks = 8 ; pub type UpdateAnimationsTasks = u8 ; pub const ParsingMode_Default : root :: mozilla :: ParsingMode = 0 ; pub const ParsingMode_AllowUnitlessLength : root :: mozilla :: ParsingMode = 1 ; pub const ParsingMode_AllowAllNumericValues : root :: mozilla :: ParsingMode = 2 ; pub type ParsingMode = u8 ; # [ repr ( i32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum InheritTarget { Text = 0 , FirstLetterContinuation = 1 , PlaceholderFrame = 2 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ServoStyleSetSizes { pub mRuleTree : usize , pub mPrecomputedPseudos : usize , pub mElementAndPseudosMaps : usize , pub mInvalidationMap : usize , pub mRevalidationSelectors : usize , pub mOther : usize , } # [ test ] fn bindgen_test_layout_ServoStyleSetSizes ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoStyleSetSizes > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( ServoStyleSetSizes ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoStyleSetSizes > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoStyleSetSizes ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSetSizes ) ) . mRuleTree as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSetSizes ) , "::" , stringify ! ( mRuleTree ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSetSizes ) ) . mPrecomputedPseudos as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSetSizes ) , "::" , stringify ! ( mPrecomputedPseudos ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSetSizes ) ) . mElementAndPseudosMaps as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSetSizes ) , "::" , stringify ! ( mElementAndPseudosMaps ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSetSizes ) ) . mInvalidationMap as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSetSizes ) , "::" , stringify ! ( mInvalidationMap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSetSizes ) ) . mRevalidationSelectors as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSetSizes ) , "::" , stringify ! ( mRevalidationSelectors ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSetSizes ) ) . mOther as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSetSizes ) , "::" , stringify ! ( mOther ) ) ) ; } impl Clone for ServoStyleSetSizes { fn clone ( & self ) -> Self { * self } } pub const StyleBackendType_None : root :: mozilla :: StyleBackendType = 0 ; pub const StyleBackendType_Gecko : root :: mozilla :: StyleBackendType = 1 ; pub const StyleBackendType_Servo : root :: mozilla :: StyleBackendType = 2 ; pub type StyleBackendType = u8 ; pub type TimeStampValue = u64 ; - /// Instances of this class represent the length of an interval of time. + /// Event states are associated with pseudo-classes. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct EventStates { + pub mStates: root::mozilla::EventStates_InternalType, + } + pub type EventStates_InternalType = u64; + pub type EventStates_ServoType = u64; + #[test] + fn bindgen_test_layout_EventStates() { + assert_eq!( + ::std::mem::size_of::<EventStates>(), + 8usize, + concat!("Size of: ", stringify!(EventStates)) + ); + assert_eq!( + ::std::mem::align_of::<EventStates>(), + 8usize, + concat!("Alignment of ", stringify!(EventStates)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<EventStates>())).mStates as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(EventStates), + "::", + stringify!(mStates) + ) + ); + } + impl Clone for EventStates { + fn clone(&self) -> Self { + *self + } + } + pub const ServoTraversalFlags_Empty: root::mozilla::ServoTraversalFlags = 0; + pub const ServoTraversalFlags_AnimationOnly: root::mozilla::ServoTraversalFlags = 1; + pub const ServoTraversalFlags_ForCSSRuleChanges: root::mozilla::ServoTraversalFlags = 2; + pub const ServoTraversalFlags_Forgetful: root::mozilla::ServoTraversalFlags = 8; + pub const ServoTraversalFlags_ClearDirtyBits: root::mozilla::ServoTraversalFlags = 32; + pub const ServoTraversalFlags_ClearAnimationOnlyDirtyDescendants: + root::mozilla::ServoTraversalFlags = 64; + pub const ServoTraversalFlags_ParallelTraversal: root::mozilla::ServoTraversalFlags = 128; + pub const ServoTraversalFlags_FlushThrottledAnimations: root::mozilla::ServoTraversalFlags = + 256; + pub type ServoTraversalFlags = u32; + #[repr(i32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StyleRuleInclusion { + All = 0, + DefaultOnly = 1, + } + pub const UpdateAnimationsTasks_CSSAnimations: root::mozilla::UpdateAnimationsTasks = 1; + pub const UpdateAnimationsTasks_CSSTransitions: root::mozilla::UpdateAnimationsTasks = 2; + pub const UpdateAnimationsTasks_EffectProperties: root::mozilla::UpdateAnimationsTasks = 4; + pub const UpdateAnimationsTasks_CascadeResults: root::mozilla::UpdateAnimationsTasks = 8; + pub type UpdateAnimationsTasks = u8; + pub const ParsingMode_Default: root::mozilla::ParsingMode = 0; + pub const ParsingMode_AllowUnitlessLength: root::mozilla::ParsingMode = 1; + pub const ParsingMode_AllowAllNumericValues: root::mozilla::ParsingMode = 2; + pub type ParsingMode = u8; + #[repr(i32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum InheritTarget { + Text = 0, + FirstLetterContinuation = 1, + PlaceholderFrame = 2, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ServoStyleSetSizes { + pub mRuleTree: usize, + pub mPrecomputedPseudos: usize, + pub mElementAndPseudosMaps: usize, + pub mInvalidationMap: usize, + pub mRevalidationSelectors: usize, + pub mOther: usize, + } + #[test] + fn bindgen_test_layout_ServoStyleSetSizes() { + assert_eq!( + ::std::mem::size_of::<ServoStyleSetSizes>(), + 48usize, + concat!("Size of: ", stringify!(ServoStyleSetSizes)) + ); + assert_eq!( + ::std::mem::align_of::<ServoStyleSetSizes>(), + 8usize, + concat!("Alignment of ", stringify!(ServoStyleSetSizes)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSetSizes>())).mRuleTree as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSetSizes), + "::", + stringify!(mRuleTree) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSetSizes>())).mPrecomputedPseudos as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSetSizes), + "::", + stringify!(mPrecomputedPseudos) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSetSizes>())).mElementAndPseudosMaps + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSetSizes), + "::", + stringify!(mElementAndPseudosMaps) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSetSizes>())).mInvalidationMap as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSetSizes), + "::", + stringify!(mInvalidationMap) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSetSizes>())).mRevalidationSelectors + as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSetSizes), + "::", + stringify!(mRevalidationSelectors) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSetSizes>())).mOther as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSetSizes), + "::", + stringify!(mOther) + ) + ); + } + impl Clone for ServoStyleSetSizes { + fn clone(&self) -> Self { + *self + } + } + pub const StyleBackendType_None: root::mozilla::StyleBackendType = 0; + pub const StyleBackendType_Gecko: root::mozilla::StyleBackendType = 1; + pub const StyleBackendType_Servo: root::mozilla::StyleBackendType = 2; + pub type StyleBackendType = u8; + pub type TimeStampValue = u64; + /// Instances of this class represent the length of an interval of time. /// Negative durations are allowed, meaning the end is before the start. /// /// Internally the duration is stored as a int64_t in units of @@ -245,19 +5566,50 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// this class would be broken. /// /// The ValueCalculator template parameter determines how arithmetic - /// operations are performed on the integer count of ticks (mValue). - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct BaseTimeDuration { pub mValue : i64 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct BaseTimeDuration__SomethingVeryRandomHere { pub _address : u8 , } - /// Perform arithmetic operations on the value of a BaseTimeDuration without - /// doing strict checks on the range of values. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct TimeDurationValueCalculator { pub _address : u8 , } # [ test ] fn bindgen_test_layout_TimeDurationValueCalculator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < TimeDurationValueCalculator > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( TimeDurationValueCalculator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < TimeDurationValueCalculator > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( TimeDurationValueCalculator ) ) ) ; } impl Clone for TimeDurationValueCalculator { fn clone ( & self ) -> Self { * self } } - /// Specialization of BaseTimeDuration that uses TimeDurationValueCalculator for + /// operations are performed on the integer count of ticks (mValue). + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct BaseTimeDuration { + pub mValue: i64, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct BaseTimeDuration__SomethingVeryRandomHere { + pub _address: u8, + } + /// Perform arithmetic operations on the value of a BaseTimeDuration without + /// doing strict checks on the range of values. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct TimeDurationValueCalculator { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_TimeDurationValueCalculator() { + assert_eq!( + ::std::mem::size_of::<TimeDurationValueCalculator>(), + 1usize, + concat!("Size of: ", stringify!(TimeDurationValueCalculator)) + ); + assert_eq!( + ::std::mem::align_of::<TimeDurationValueCalculator>(), + 1usize, + concat!("Alignment of ", stringify!(TimeDurationValueCalculator)) + ); + } + impl Clone for TimeDurationValueCalculator { + fn clone(&self) -> Self { + *self + } + } + /// Specialization of BaseTimeDuration that uses TimeDurationValueCalculator for /// arithmetic on the mValue member. /// /// Use this class for time durations that are *not* expected to hold values of /// Forever (or the negative equivalent) or when such time duration are *not* - /// expected to be used in arithmetic operations. - pub type TimeDuration = root :: mozilla :: BaseTimeDuration ; - /// Instances of this class represent moments in time, or a special + /// expected to be used in arithmetic operations. + pub type TimeDuration = root::mozilla::BaseTimeDuration; + /// Instances of this class represent moments in time, or a special /// "null" moment. We do not use the non-monotonic system clock or /// local time, since they can be reset, causing apparent backward /// travel in time, which can confuse algorithms. Instead we measure @@ -284,9 +5636,11 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// explicitly nullable and provides an IsNull() method. time_point /// is initialized to the clock's epoch and provides a /// time_since_epoch() method that functions similiarly. i.e. - /// t.IsNull() is equivalent to t.time_since_epoch() == decltype(t)::duration::zero(); - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct TimeStamp { - /// When built with PRIntervalTime, a value of 0 means this instance + /// t.IsNull() is equivalent to t.time_since_epoch() == decltype(t)::duration::zero(); + #[repr(C)] + #[derive(Debug, Copy)] + pub struct TimeStamp { + /// When built with PRIntervalTime, a value of 0 means this instance /// is "null". Otherwise, the low 32 bits represent a PRIntervalTime, /// and the high 32 bits represent a counter of the number of /// rollovers of PRIntervalTime that we've seen. This counter starts @@ -296,20 +5650,472 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// time to wrap around is about 2^64/100000 seconds, i.e. about /// 5,849,424 years. /// - /// When using a system clock, a value is system dependent. - pub mValue : root :: mozilla :: TimeStampValue , } # [ test ] fn bindgen_test_layout_TimeStamp ( ) { assert_eq ! ( :: std :: mem :: size_of :: < TimeStamp > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( TimeStamp ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < TimeStamp > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( TimeStamp ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const TimeStamp ) ) . mValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( TimeStamp ) , "::" , stringify ! ( mValue ) ) ) ; } impl Clone for TimeStamp { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct MallocAllocPolicy { pub _address : u8 , } # [ test ] fn bindgen_test_layout_MallocAllocPolicy ( ) { assert_eq ! ( :: std :: mem :: size_of :: < MallocAllocPolicy > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( MallocAllocPolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < MallocAllocPolicy > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( MallocAllocPolicy ) ) ) ; } impl Clone for MallocAllocPolicy { fn clone ( & self ) -> Self { * self } } pub type Vector_Impl = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Vector_CapacityAndReserved { pub mCapacity : usize , } pub type Vector_ElementType < T > = T ; pub const Vector_InlineLength : root :: mozilla :: Vector__bindgen_ty_1 = 0 ; pub type Vector__bindgen_ty_1 = i32 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Vector_Range < T > { pub mCur : * mut T , pub mEnd : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Vector_ConstRange < T > { pub mCur : * mut T , pub mEnd : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub mod binding_danger { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct AssertAndSuppressCleanupPolicy { pub _address : u8 , } pub const AssertAndSuppressCleanupPolicy_assertHandled : bool = true ; pub const AssertAndSuppressCleanupPolicy_suppress : bool = true ; # [ test ] fn bindgen_test_layout_AssertAndSuppressCleanupPolicy ( ) { assert_eq ! ( :: std :: mem :: size_of :: < AssertAndSuppressCleanupPolicy > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( AssertAndSuppressCleanupPolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < AssertAndSuppressCleanupPolicy > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( AssertAndSuppressCleanupPolicy ) ) ) ; } impl Clone for AssertAndSuppressCleanupPolicy { fn clone ( & self ) -> Self { * self } } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct OwningNonNull < T > { pub mPtr : root :: RefPtr < T > , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub mod net { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; pub const ReferrerPolicy_RP_No_Referrer : root :: mozilla :: net :: ReferrerPolicy = 2 ; pub const ReferrerPolicy_RP_Origin : root :: mozilla :: net :: ReferrerPolicy = 3 ; pub const ReferrerPolicy_RP_No_Referrer_When_Downgrade : root :: mozilla :: net :: ReferrerPolicy = 1 ; pub const ReferrerPolicy_RP_Origin_When_Crossorigin : root :: mozilla :: net :: ReferrerPolicy = 4 ; pub const ReferrerPolicy_RP_Unsafe_URL : root :: mozilla :: net :: ReferrerPolicy = 5 ; pub const ReferrerPolicy_RP_Same_Origin : root :: mozilla :: net :: ReferrerPolicy = 6 ; pub const ReferrerPolicy_RP_Strict_Origin : root :: mozilla :: net :: ReferrerPolicy = 7 ; pub const ReferrerPolicy_RP_Strict_Origin_When_Cross_Origin : root :: mozilla :: net :: ReferrerPolicy = 8 ; pub const ReferrerPolicy_RP_Unset : root :: mozilla :: net :: ReferrerPolicy = 0 ; pub type ReferrerPolicy = :: std :: os :: raw :: c_uint ; } pub const CORSMode_CORS_NONE : root :: mozilla :: CORSMode = 0 ; pub const CORSMode_CORS_ANONYMOUS : root :: mozilla :: CORSMode = 1 ; pub const CORSMode_CORS_USE_CREDENTIALS : root :: mozilla :: CORSMode = 2 ; pub type CORSMode = u8 ; - /// Superclass for data common to CSSStyleSheet and ServoStyleSheet. - # [ repr ( C ) ] pub struct StyleSheet { pub _base : root :: nsIDOMCSSStyleSheet , pub _base_1 : root :: nsICSSLoaderObserver , pub _base_2 : root :: nsWrapperCache , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mParent : * mut root :: mozilla :: StyleSheet , pub mTitle : ::nsstring::nsStringRepr , pub mDocument : * mut root :: nsIDocument , pub mOwningNode : * mut root :: nsINode , pub mOwnerRule : * mut root :: mozilla :: dom :: CSSImportRule , pub mMedia : root :: RefPtr < root :: mozilla :: dom :: MediaList > , pub mNext : root :: RefPtr < root :: mozilla :: StyleSheet > , pub mParsingMode : root :: mozilla :: css :: SheetParsingMode , pub mType : root :: mozilla :: StyleBackendType , pub mDisabled : bool , pub mDirty : bool , pub mDocumentAssociationMode : root :: mozilla :: StyleSheet_DocumentAssociationMode , pub mInner : * mut root :: mozilla :: StyleSheetInfo , pub mStyleSets : root :: nsTArray < root :: mozilla :: StyleSetHandle > , } pub type StyleSheet_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StyleSheet_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_StyleSheet_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleSheet_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( StyleSheet_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleSheet_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleSheet_cycleCollection ) ) ) ; } impl Clone for StyleSheet_cycleCollection { fn clone ( & self ) -> Self { * self } } pub const StyleSheet_ChangeType_Added : root :: mozilla :: StyleSheet_ChangeType = 0 ; pub const StyleSheet_ChangeType_Removed : root :: mozilla :: StyleSheet_ChangeType = 1 ; pub const StyleSheet_ChangeType_ApplicableStateChanged : root :: mozilla :: StyleSheet_ChangeType = 2 ; pub const StyleSheet_ChangeType_RuleAdded : root :: mozilla :: StyleSheet_ChangeType = 3 ; pub const StyleSheet_ChangeType_RuleRemoved : root :: mozilla :: StyleSheet_ChangeType = 4 ; pub const StyleSheet_ChangeType_RuleChanged : root :: mozilla :: StyleSheet_ChangeType = 5 ; pub type StyleSheet_ChangeType = :: std :: os :: raw :: c_int ; pub const StyleSheet_DocumentAssociationMode_OwnedByDocument : root :: mozilla :: StyleSheet_DocumentAssociationMode = 0 ; pub const StyleSheet_DocumentAssociationMode_NotOwnedByDocument : root :: mozilla :: StyleSheet_DocumentAssociationMode = 1 ; pub type StyleSheet_DocumentAssociationMode = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StyleSheet_ChildSheetListBuilder { pub sheetSlot : * mut root :: RefPtr < root :: mozilla :: StyleSheet > , pub parent : * mut root :: mozilla :: StyleSheet , } # [ test ] fn bindgen_test_layout_StyleSheet_ChildSheetListBuilder ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleSheet_ChildSheetListBuilder > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( StyleSheet_ChildSheetListBuilder ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleSheet_ChildSheetListBuilder > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleSheet_ChildSheetListBuilder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheet_ChildSheetListBuilder ) ) . sheetSlot as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheet_ChildSheetListBuilder ) , "::" , stringify ! ( sheetSlot ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheet_ChildSheetListBuilder ) ) . parent as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheet_ChildSheetListBuilder ) , "::" , stringify ! ( parent ) ) ) ; } impl Clone for StyleSheet_ChildSheetListBuilder { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StyleSheet21_cycleCollectorGlobalE" ] - pub static mut StyleSheet__cycleCollectorGlobal : root :: mozilla :: StyleSheet_cycleCollection ; -} # [ test ] fn bindgen_test_layout_StyleSheet ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleSheet > ( ) , 136usize , concat ! ( "Size of: " , stringify ! ( StyleSheet ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleSheet > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleSheet ) ) ) ; } pub const CSSEnabledState_eForAllContent : root :: mozilla :: CSSEnabledState = 0 ; pub const CSSEnabledState_eInUASheets : root :: mozilla :: CSSEnabledState = 1 ; pub const CSSEnabledState_eInChrome : root :: mozilla :: CSSEnabledState = 2 ; pub const CSSEnabledState_eIgnoreEnabledState : root :: mozilla :: CSSEnabledState = 255 ; pub type CSSEnabledState = :: std :: os :: raw :: c_int ; pub type CSSPseudoElementTypeBase = u8 ; pub const CSSPseudoElementType_InheritingAnonBox : root :: mozilla :: CSSPseudoElementType = CSSPseudoElementType :: Count ; # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum CSSPseudoElementType { after = 0 , before = 1 , backdrop = 2 , cue = 3 , firstLetter = 4 , firstLine = 5 , mozSelection = 6 , mozFocusInner = 7 , mozFocusOuter = 8 , mozListBullet = 9 , mozListNumber = 10 , mozMathAnonymous = 11 , mozNumberWrapper = 12 , mozNumberText = 13 , mozNumberSpinBox = 14 , mozNumberSpinUp = 15 , mozNumberSpinDown = 16 , mozProgressBar = 17 , mozRangeTrack = 18 , mozRangeProgress = 19 , mozRangeThumb = 20 , mozMeterBar = 21 , mozPlaceholder = 22 , placeholder = 23 , mozColorSwatch = 24 , Count = 25 , NonInheritingAnonBox = 26 , XULTree = 27 , NotPseudo = 28 , MAX = 29 , } - /// Smart pointer class that can hold a pointer to either an nsStyleSet - /// or a ServoStyleSet. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StyleSetHandle { pub mPtr : root :: mozilla :: StyleSetHandle_Ptr , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StyleSetHandle_Ptr { pub mValue : usize , } # [ test ] fn bindgen_test_layout_StyleSetHandle_Ptr ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleSetHandle_Ptr > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( StyleSetHandle_Ptr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleSetHandle_Ptr > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleSetHandle_Ptr ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSetHandle_Ptr ) ) . mValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSetHandle_Ptr ) , "::" , stringify ! ( mValue ) ) ) ; } impl Clone for StyleSetHandle_Ptr { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_StyleSetHandle ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleSetHandle > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( StyleSetHandle ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleSetHandle > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleSetHandle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSetHandle ) ) . mPtr as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSetHandle ) , "::" , stringify ! ( mPtr ) ) ) ; } impl Clone for StyleSetHandle { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct SeenPtrs { pub _bindgen_opaque_blob : [ u64 ; 4usize ] , } # [ test ] fn bindgen_test_layout_SeenPtrs ( ) { assert_eq ! ( :: std :: mem :: size_of :: < SeenPtrs > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( SeenPtrs ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < SeenPtrs > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( SeenPtrs ) ) ) ; } impl Clone for SeenPtrs { fn clone ( & self ) -> Self { * self } } pub mod widget { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; - /// Contains IMEStatus plus information about the current - /// input context that the IME can use as hints if desired. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct IMEState { pub mEnabled : root :: mozilla :: widget :: IMEState_Enabled , pub mOpen : root :: mozilla :: widget :: IMEState_Open , } pub const IMEState_Enabled_DISABLED : root :: mozilla :: widget :: IMEState_Enabled = 0 ; pub const IMEState_Enabled_ENABLED : root :: mozilla :: widget :: IMEState_Enabled = 1 ; pub const IMEState_Enabled_PASSWORD : root :: mozilla :: widget :: IMEState_Enabled = 2 ; pub const IMEState_Enabled_PLUGIN : root :: mozilla :: widget :: IMEState_Enabled = 3 ; pub const IMEState_Enabled_UNKNOWN : root :: mozilla :: widget :: IMEState_Enabled = 4 ; pub type IMEState_Enabled = :: std :: os :: raw :: c_uint ; pub const IMEState_Open_OPEN_STATE_NOT_SUPPORTED : root :: mozilla :: widget :: IMEState_Open = 0 ; pub const IMEState_Open_DONT_CHANGE_OPEN_STATE : root :: mozilla :: widget :: IMEState_Open = 0 ; pub const IMEState_Open_OPEN : root :: mozilla :: widget :: IMEState_Open = 1 ; pub const IMEState_Open_CLOSED : root :: mozilla :: widget :: IMEState_Open = 2 ; pub type IMEState_Open = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_IMEState ( ) { assert_eq ! ( :: std :: mem :: size_of :: < IMEState > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( IMEState ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < IMEState > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( IMEState ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const IMEState ) ) . mEnabled as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( IMEState ) , "::" , stringify ! ( mEnabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const IMEState ) ) . mOpen as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( IMEState ) , "::" , stringify ! ( mOpen ) ) ) ; } impl Clone for IMEState { fn clone ( & self ) -> Self { * self } } } - /// This class is designed to cause crashes when various kinds of memory + /// When using a system clock, a value is system dependent. + pub mValue: root::mozilla::TimeStampValue, + } + #[test] + fn bindgen_test_layout_TimeStamp() { + assert_eq!( + ::std::mem::size_of::<TimeStamp>(), + 8usize, + concat!("Size of: ", stringify!(TimeStamp)) + ); + assert_eq!( + ::std::mem::align_of::<TimeStamp>(), + 8usize, + concat!("Alignment of ", stringify!(TimeStamp)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<TimeStamp>())).mValue as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(TimeStamp), + "::", + stringify!(mValue) + ) + ); + } + impl Clone for TimeStamp { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct MallocAllocPolicy { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_MallocAllocPolicy() { + assert_eq!( + ::std::mem::size_of::<MallocAllocPolicy>(), + 1usize, + concat!("Size of: ", stringify!(MallocAllocPolicy)) + ); + assert_eq!( + ::std::mem::align_of::<MallocAllocPolicy>(), + 1usize, + concat!("Alignment of ", stringify!(MallocAllocPolicy)) + ); + } + impl Clone for MallocAllocPolicy { + fn clone(&self) -> Self { + *self + } + } + pub type Vector_Impl = u8; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Vector_CapacityAndReserved { + pub mCapacity: usize, + } + pub type Vector_ElementType<T> = T; + pub const Vector_InlineLength: root::mozilla::Vector__bindgen_ty_1 = 0; + pub type Vector__bindgen_ty_1 = i32; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Vector_Range<T> { + pub mCur: *mut T, + pub mEnd: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Vector_ConstRange<T> { + pub mCur: *mut T, + pub mEnd: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub mod binding_danger { + #[allow(unused_imports)] + use self::super::super::super::root; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct AssertAndSuppressCleanupPolicy { + pub _address: u8, + } + pub const AssertAndSuppressCleanupPolicy_assertHandled: bool = true; + pub const AssertAndSuppressCleanupPolicy_suppress: bool = true; + #[test] + fn bindgen_test_layout_AssertAndSuppressCleanupPolicy() { + assert_eq!( + ::std::mem::size_of::<AssertAndSuppressCleanupPolicy>(), + 1usize, + concat!("Size of: ", stringify!(AssertAndSuppressCleanupPolicy)) + ); + assert_eq!( + ::std::mem::align_of::<AssertAndSuppressCleanupPolicy>(), + 1usize, + concat!("Alignment of ", stringify!(AssertAndSuppressCleanupPolicy)) + ); + } + impl Clone for AssertAndSuppressCleanupPolicy { + fn clone(&self) -> Self { + *self + } + } + } + #[repr(C)] + #[derive(Debug)] + pub struct OwningNonNull<T> { + pub mPtr: root::RefPtr<T>, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub mod net { + #[allow(unused_imports)] + use self::super::super::super::root; + pub const ReferrerPolicy_RP_No_Referrer: root::mozilla::net::ReferrerPolicy = 2; + pub const ReferrerPolicy_RP_Origin: root::mozilla::net::ReferrerPolicy = 3; + pub const ReferrerPolicy_RP_No_Referrer_When_Downgrade: + root::mozilla::net::ReferrerPolicy = 1; + pub const ReferrerPolicy_RP_Origin_When_Crossorigin: + root::mozilla::net::ReferrerPolicy = 4; + pub const ReferrerPolicy_RP_Unsafe_URL: root::mozilla::net::ReferrerPolicy = 5; + pub const ReferrerPolicy_RP_Same_Origin: root::mozilla::net::ReferrerPolicy = 6; + pub const ReferrerPolicy_RP_Strict_Origin: root::mozilla::net::ReferrerPolicy = 7; + pub const ReferrerPolicy_RP_Strict_Origin_When_Cross_Origin: + root::mozilla::net::ReferrerPolicy = 8; + pub const ReferrerPolicy_RP_Unset: root::mozilla::net::ReferrerPolicy = 0; + pub type ReferrerPolicy = u32; + } + pub const CORSMode_CORS_NONE: root::mozilla::CORSMode = 0; + pub const CORSMode_CORS_ANONYMOUS: root::mozilla::CORSMode = 1; + pub const CORSMode_CORS_USE_CREDENTIALS: root::mozilla::CORSMode = 2; + pub type CORSMode = u8; + /// Superclass for data common to CSSStyleSheet and ServoStyleSheet. + #[repr(C)] + pub struct StyleSheet { + pub _base: root::nsICSSLoaderObserver, + pub _base_1: root::nsWrapperCache, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mParent: *mut root::mozilla::StyleSheet, + pub mTitle: ::nsstring::nsStringRepr, + pub mDocument: *mut root::nsIDocument, + pub mOwningNode: *mut root::nsINode, + pub mOwnerRule: *mut root::mozilla::dom::CSSImportRule, + pub mMedia: root::RefPtr<root::mozilla::dom::MediaList>, + pub mNext: root::RefPtr<root::mozilla::StyleSheet>, + pub mParsingMode: root::mozilla::css::SheetParsingMode, + pub mType: root::mozilla::StyleBackendType, + pub mDisabled: bool, + pub mDirtyFlags: u8, + pub mDocumentAssociationMode: root::mozilla::StyleSheet_DocumentAssociationMode, + pub mInner: *mut root::mozilla::StyleSheetInfo, + pub mStyleSets: root::nsTArray<root::mozilla::StyleSetHandle>, + } + pub type StyleSheet_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StyleSheet_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_StyleSheet_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<StyleSheet_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(StyleSheet_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<StyleSheet_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(StyleSheet_cycleCollection)) + ); + } + impl Clone for StyleSheet_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + pub const StyleSheet_ChangeType_Added: root::mozilla::StyleSheet_ChangeType = 0; + pub const StyleSheet_ChangeType_Removed: root::mozilla::StyleSheet_ChangeType = 1; + pub const StyleSheet_ChangeType_ApplicableStateChanged: + root::mozilla::StyleSheet_ChangeType = 2; + pub const StyleSheet_ChangeType_RuleAdded: root::mozilla::StyleSheet_ChangeType = 3; + pub const StyleSheet_ChangeType_RuleRemoved: root::mozilla::StyleSheet_ChangeType = 4; + pub const StyleSheet_ChangeType_RuleChanged: root::mozilla::StyleSheet_ChangeType = 5; + pub type StyleSheet_ChangeType = i32; + pub const StyleSheet_DocumentAssociationMode_OwnedByDocument: + root::mozilla::StyleSheet_DocumentAssociationMode = 0; + pub const StyleSheet_DocumentAssociationMode_NotOwnedByDocument: + root::mozilla::StyleSheet_DocumentAssociationMode = 1; + pub type StyleSheet_DocumentAssociationMode = u8; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StyleSheet_ChildSheetListBuilder { + pub sheetSlot: *mut root::RefPtr<root::mozilla::StyleSheet>, + pub parent: *mut root::mozilla::StyleSheet, + } + #[test] + fn bindgen_test_layout_StyleSheet_ChildSheetListBuilder() { + assert_eq!( + ::std::mem::size_of::<StyleSheet_ChildSheetListBuilder>(), + 16usize, + concat!("Size of: ", stringify!(StyleSheet_ChildSheetListBuilder)) + ); + assert_eq!( + ::std::mem::align_of::<StyleSheet_ChildSheetListBuilder>(), + 8usize, + concat!( + "Alignment of ", + stringify!(StyleSheet_ChildSheetListBuilder) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheet_ChildSheetListBuilder>())).sheetSlot + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleSheet_ChildSheetListBuilder), + "::", + stringify!(sheetSlot) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheet_ChildSheetListBuilder>())).parent as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(StyleSheet_ChildSheetListBuilder), + "::", + stringify!(parent) + ) + ); + } + impl Clone for StyleSheet_ChildSheetListBuilder { + fn clone(&self) -> Self { + *self + } + } + pub const StyleSheet_dirtyFlagAttributes_FORCED_UNIQUE_INNER: + root::mozilla::StyleSheet_dirtyFlagAttributes = 1; + pub const StyleSheet_dirtyFlagAttributes_MODIFIED_RULES: + root::mozilla::StyleSheet_dirtyFlagAttributes = 2; + pub type StyleSheet_dirtyFlagAttributes = u32; + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StyleSheet21_cycleCollectorGlobalE"] + pub static mut StyleSheet__cycleCollectorGlobal: + root::mozilla::StyleSheet_cycleCollection; + } + #[test] + fn bindgen_test_layout_StyleSheet() { + assert_eq!( + ::std::mem::size_of::<StyleSheet>(), + 128usize, + concat!("Size of: ", stringify!(StyleSheet)) + ); + assert_eq!( + ::std::mem::align_of::<StyleSheet>(), + 8usize, + concat!("Alignment of ", stringify!(StyleSheet)) + ); + } + pub const CSSEnabledState_eForAllContent: root::mozilla::CSSEnabledState = 0; + pub const CSSEnabledState_eInUASheets: root::mozilla::CSSEnabledState = 1; + pub const CSSEnabledState_eInChrome: root::mozilla::CSSEnabledState = 2; + pub const CSSEnabledState_eIgnoreEnabledState: root::mozilla::CSSEnabledState = 255; + pub type CSSEnabledState = i32; + pub type CSSPseudoElementTypeBase = u8; + pub const CSSPseudoElementType_InheritingAnonBox: root::mozilla::CSSPseudoElementType = + CSSPseudoElementType::Count; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum CSSPseudoElementType { + after = 0, + before = 1, + backdrop = 2, + cue = 3, + firstLetter = 4, + firstLine = 5, + mozSelection = 6, + mozFocusInner = 7, + mozFocusOuter = 8, + mozListBullet = 9, + mozListNumber = 10, + mozMathAnonymous = 11, + mozNumberWrapper = 12, + mozNumberText = 13, + mozNumberSpinBox = 14, + mozNumberSpinUp = 15, + mozNumberSpinDown = 16, + mozProgressBar = 17, + mozRangeTrack = 18, + mozRangeProgress = 19, + mozRangeThumb = 20, + mozMeterBar = 21, + mozPlaceholder = 22, + placeholder = 23, + mozColorSwatch = 24, + Count = 25, + NonInheritingAnonBox = 26, + XULTree = 27, + NotPseudo = 28, + MAX = 29, + } + /// Smart pointer class that can hold a pointer to either an nsStyleSet + /// or a ServoStyleSet. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StyleSetHandle { + pub mPtr: root::mozilla::StyleSetHandle_Ptr, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StyleSetHandle_Ptr { + pub mValue: usize, + } + #[test] + fn bindgen_test_layout_StyleSetHandle_Ptr() { + assert_eq!( + ::std::mem::size_of::<StyleSetHandle_Ptr>(), + 8usize, + concat!("Size of: ", stringify!(StyleSetHandle_Ptr)) + ); + assert_eq!( + ::std::mem::align_of::<StyleSetHandle_Ptr>(), + 8usize, + concat!("Alignment of ", stringify!(StyleSetHandle_Ptr)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSetHandle_Ptr>())).mValue as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleSetHandle_Ptr), + "::", + stringify!(mValue) + ) + ); + } + impl Clone for StyleSetHandle_Ptr { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_StyleSetHandle() { + assert_eq!( + ::std::mem::size_of::<StyleSetHandle>(), + 8usize, + concat!("Size of: ", stringify!(StyleSetHandle)) + ); + assert_eq!( + ::std::mem::align_of::<StyleSetHandle>(), + 8usize, + concat!("Alignment of ", stringify!(StyleSetHandle)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleSetHandle>())).mPtr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleSetHandle), + "::", + stringify!(mPtr) + ) + ); + } + impl Clone for StyleSetHandle { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct SeenPtrs { + pub _bindgen_opaque_blob: [u64; 4usize], + } + #[test] + fn bindgen_test_layout_SeenPtrs() { + assert_eq!( + ::std::mem::size_of::<SeenPtrs>(), + 32usize, + concat!("Size of: ", stringify!(SeenPtrs)) + ); + assert_eq!( + ::std::mem::align_of::<SeenPtrs>(), + 8usize, + concat!("Alignment of ", stringify!(SeenPtrs)) + ); + } + impl Clone for SeenPtrs { + fn clone(&self) -> Self { + *self + } + } + pub mod widget { + #[allow(unused_imports)] + use self::super::super::super::root; + /// Contains IMEStatus plus information about the current + /// input context that the IME can use as hints if desired. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct IMEState { + pub mEnabled: root::mozilla::widget::IMEState_Enabled, + pub mOpen: root::mozilla::widget::IMEState_Open, + } + pub const IMEState_Enabled_DISABLED: root::mozilla::widget::IMEState_Enabled = 0; + pub const IMEState_Enabled_ENABLED: root::mozilla::widget::IMEState_Enabled = 1; + pub const IMEState_Enabled_PASSWORD: root::mozilla::widget::IMEState_Enabled = 2; + pub const IMEState_Enabled_PLUGIN: root::mozilla::widget::IMEState_Enabled = 3; + pub const IMEState_Enabled_UNKNOWN: root::mozilla::widget::IMEState_Enabled = 4; + pub type IMEState_Enabled = u32; + pub const IMEState_Open_OPEN_STATE_NOT_SUPPORTED: root::mozilla::widget::IMEState_Open = + 0; + pub const IMEState_Open_DONT_CHANGE_OPEN_STATE: root::mozilla::widget::IMEState_Open = + 0; + pub const IMEState_Open_OPEN: root::mozilla::widget::IMEState_Open = 1; + pub const IMEState_Open_CLOSED: root::mozilla::widget::IMEState_Open = 2; + pub type IMEState_Open = u32; + #[test] + fn bindgen_test_layout_IMEState() { + assert_eq!( + ::std::mem::size_of::<IMEState>(), + 8usize, + concat!("Size of: ", stringify!(IMEState)) + ); + assert_eq!( + ::std::mem::align_of::<IMEState>(), + 4usize, + concat!("Alignment of ", stringify!(IMEState)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<IMEState>())).mEnabled as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(IMEState), + "::", + stringify!(mEnabled) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<IMEState>())).mOpen as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(IMEState), + "::", + stringify!(mOpen) + ) + ); + } + impl Clone for IMEState { + fn clone(&self) -> Self { + *self + } + } + } + /// This class is designed to cause crashes when various kinds of memory /// corruption are observed. For instance, let's say we have a class C where we /// suspect out-of-bounds writes to some members. We can insert a member of type /// Poison near the members we suspect are being corrupted by out-of-bounds @@ -322,13 +6128,304 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// A pleasant side-effect of these additional Check() calls is that crash /// signatures may become more regular, as crashes will ideally occur /// consolidated at the point of a Check(), rather than scattered about at - /// various uses of the corrupted memory. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct CorruptionCanary { pub mValue : usize , } pub const CorruptionCanary_kCanarySet : usize = 252382987 ; # [ test ] fn bindgen_test_layout_CorruptionCanary ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CorruptionCanary > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( CorruptionCanary ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CorruptionCanary > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CorruptionCanary ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CorruptionCanary ) ) . mValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( CorruptionCanary ) , "::" , stringify ! ( mValue ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ArenaAllocator_ArenaHeader { - /// The location in memory of the data portion of the arena. - pub offset : usize , - /// The location in memory of the end of the data portion of the arena. - pub tail : usize , } impl Clone for ArenaAllocator_ArenaHeader { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ArenaAllocator_ArenaChunk { pub canary : root :: mozilla :: CorruptionCanary , pub header : root :: mozilla :: ArenaAllocator_ArenaHeader , pub next : * mut root :: mozilla :: ArenaAllocator_ArenaChunk , } pub type LayoutDeviceIntPoint = [ u32 ; 2usize ] ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct LayoutDevicePixel { pub _address : u8 , } # [ test ] fn bindgen_test_layout_LayoutDevicePixel ( ) { assert_eq ! ( :: std :: mem :: size_of :: < LayoutDevicePixel > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( LayoutDevicePixel ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < LayoutDevicePixel > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( LayoutDevicePixel ) ) ) ; } impl Clone for LayoutDevicePixel { fn clone ( & self ) -> Self { * self } } pub mod a11y { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct DocAccessible { _unused : [ u8 ; 0 ] } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Encoding { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct Runnable { pub _base : root :: nsIRunnable , pub _base_1 : root :: nsINamed , pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mName : * const :: std :: os :: raw :: c_char , } pub type Runnable_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_Runnable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Runnable > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( Runnable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Runnable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Runnable ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct SegmentedVector_SegmentImpl_Storage { pub mBuf : root :: __BindgenUnionField < * mut :: std :: os :: raw :: c_char > , pub mAlign : root :: __BindgenUnionField < u8 > , pub bindgen_union_field : u64 , } pub type SegmentedVector_Segment = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct SegmentedVector_IterImpl { pub mSegment : * mut root :: mozilla :: SegmentedVector_Segment , pub mIndex : usize , } pub const UseCounter_eUseCounter_UNKNOWN : root :: mozilla :: UseCounter = -1 ; pub const UseCounter_eUseCounter_SVGSVGElement_getElementById : root :: mozilla :: UseCounter = 0 ; pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_getter : root :: mozilla :: UseCounter = 1 ; pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_setter : root :: mozilla :: UseCounter = 2 ; pub const UseCounter_eUseCounter_property_Fill : root :: mozilla :: UseCounter = 3 ; pub const UseCounter_eUseCounter_property_FillOpacity : root :: mozilla :: UseCounter = 4 ; pub const UseCounter_eUseCounter_XMLDocument_async_getter : root :: mozilla :: UseCounter = 5 ; pub const UseCounter_eUseCounter_XMLDocument_async_setter : root :: mozilla :: UseCounter = 6 ; pub const UseCounter_eUseCounter_DOMError_name_getter : root :: mozilla :: UseCounter = 7 ; pub const UseCounter_eUseCounter_DOMError_name_setter : root :: mozilla :: UseCounter = 8 ; pub const UseCounter_eUseCounter_DOMError_message_getter : root :: mozilla :: UseCounter = 9 ; pub const UseCounter_eUseCounter_DOMError_message_setter : root :: mozilla :: UseCounter = 10 ; pub const UseCounter_eUseCounter_custom_DOMErrorConstructor : root :: mozilla :: UseCounter = 11 ; pub const UseCounter_eUseCounter_PushManager_subscribe : root :: mozilla :: UseCounter = 12 ; pub const UseCounter_eUseCounter_PushSubscription_unsubscribe : root :: mozilla :: UseCounter = 13 ; pub const UseCounter_eUseCounter_Window_sidebar_getter : root :: mozilla :: UseCounter = 14 ; pub const UseCounter_eUseCounter_Window_sidebar_setter : root :: mozilla :: UseCounter = 15 ; pub const UseCounter_eUseCounter_OfflineResourceList_swapCache : root :: mozilla :: UseCounter = 16 ; pub const UseCounter_eUseCounter_OfflineResourceList_update : root :: mozilla :: UseCounter = 17 ; pub const UseCounter_eUseCounter_OfflineResourceList_status_getter : root :: mozilla :: UseCounter = 18 ; pub const UseCounter_eUseCounter_OfflineResourceList_status_setter : root :: mozilla :: UseCounter = 19 ; pub const UseCounter_eUseCounter_OfflineResourceList_onchecking_getter : root :: mozilla :: UseCounter = 20 ; pub const UseCounter_eUseCounter_OfflineResourceList_onchecking_setter : root :: mozilla :: UseCounter = 21 ; pub const UseCounter_eUseCounter_OfflineResourceList_onerror_getter : root :: mozilla :: UseCounter = 22 ; pub const UseCounter_eUseCounter_OfflineResourceList_onerror_setter : root :: mozilla :: UseCounter = 23 ; pub const UseCounter_eUseCounter_OfflineResourceList_onnoupdate_getter : root :: mozilla :: UseCounter = 24 ; pub const UseCounter_eUseCounter_OfflineResourceList_onnoupdate_setter : root :: mozilla :: UseCounter = 25 ; pub const UseCounter_eUseCounter_OfflineResourceList_ondownloading_getter : root :: mozilla :: UseCounter = 26 ; pub const UseCounter_eUseCounter_OfflineResourceList_ondownloading_setter : root :: mozilla :: UseCounter = 27 ; pub const UseCounter_eUseCounter_OfflineResourceList_onprogress_getter : root :: mozilla :: UseCounter = 28 ; pub const UseCounter_eUseCounter_OfflineResourceList_onprogress_setter : root :: mozilla :: UseCounter = 29 ; pub const UseCounter_eUseCounter_OfflineResourceList_onupdateready_getter : root :: mozilla :: UseCounter = 30 ; pub const UseCounter_eUseCounter_OfflineResourceList_onupdateready_setter : root :: mozilla :: UseCounter = 31 ; pub const UseCounter_eUseCounter_OfflineResourceList_oncached_getter : root :: mozilla :: UseCounter = 32 ; pub const UseCounter_eUseCounter_OfflineResourceList_oncached_setter : root :: mozilla :: UseCounter = 33 ; pub const UseCounter_eUseCounter_OfflineResourceList_onobsolete_getter : root :: mozilla :: UseCounter = 34 ; pub const UseCounter_eUseCounter_OfflineResourceList_onobsolete_setter : root :: mozilla :: UseCounter = 35 ; pub const UseCounter_eUseCounter_IDBDatabase_createMutableFile : root :: mozilla :: UseCounter = 36 ; pub const UseCounter_eUseCounter_IDBDatabase_mozCreateFileHandle : root :: mozilla :: UseCounter = 37 ; pub const UseCounter_eUseCounter_IDBMutableFile_open : root :: mozilla :: UseCounter = 38 ; pub const UseCounter_eUseCounter_IDBMutableFile_getFile : root :: mozilla :: UseCounter = 39 ; pub const UseCounter_eUseCounter_DataTransfer_addElement : root :: mozilla :: UseCounter = 40 ; pub const UseCounter_eUseCounter_DataTransfer_mozItemCount_getter : root :: mozilla :: UseCounter = 41 ; pub const UseCounter_eUseCounter_DataTransfer_mozItemCount_setter : root :: mozilla :: UseCounter = 42 ; pub const UseCounter_eUseCounter_DataTransfer_mozCursor_getter : root :: mozilla :: UseCounter = 43 ; pub const UseCounter_eUseCounter_DataTransfer_mozCursor_setter : root :: mozilla :: UseCounter = 44 ; pub const UseCounter_eUseCounter_DataTransfer_mozTypesAt : root :: mozilla :: UseCounter = 45 ; pub const UseCounter_eUseCounter_DataTransfer_mozClearDataAt : root :: mozilla :: UseCounter = 46 ; pub const UseCounter_eUseCounter_DataTransfer_mozSetDataAt : root :: mozilla :: UseCounter = 47 ; pub const UseCounter_eUseCounter_DataTransfer_mozGetDataAt : root :: mozilla :: UseCounter = 48 ; pub const UseCounter_eUseCounter_DataTransfer_mozUserCancelled_getter : root :: mozilla :: UseCounter = 49 ; pub const UseCounter_eUseCounter_DataTransfer_mozUserCancelled_setter : root :: mozilla :: UseCounter = 50 ; pub const UseCounter_eUseCounter_DataTransfer_mozSourceNode_getter : root :: mozilla :: UseCounter = 51 ; pub const UseCounter_eUseCounter_DataTransfer_mozSourceNode_setter : root :: mozilla :: UseCounter = 52 ; pub const UseCounter_eUseCounter_custom_JS_asmjs : root :: mozilla :: UseCounter = 53 ; pub const UseCounter_eUseCounter_custom_JS_wasm : root :: mozilla :: UseCounter = 54 ; pub const UseCounter_eUseCounter_EnablePrivilege : root :: mozilla :: UseCounter = 55 ; pub const UseCounter_eUseCounter_DOMExceptionCode : root :: mozilla :: UseCounter = 56 ; pub const UseCounter_eUseCounter_MutationEvent : root :: mozilla :: UseCounter = 57 ; pub const UseCounter_eUseCounter_Components : root :: mozilla :: UseCounter = 58 ; pub const UseCounter_eUseCounter_PrefixedVisibilityAPI : root :: mozilla :: UseCounter = 59 ; pub const UseCounter_eUseCounter_NodeIteratorDetach : root :: mozilla :: UseCounter = 60 ; pub const UseCounter_eUseCounter_LenientThis : root :: mozilla :: UseCounter = 61 ; pub const UseCounter_eUseCounter_GetPreventDefault : root :: mozilla :: UseCounter = 62 ; pub const UseCounter_eUseCounter_GetSetUserData : root :: mozilla :: UseCounter = 63 ; pub const UseCounter_eUseCounter_MozGetAsFile : root :: mozilla :: UseCounter = 64 ; pub const UseCounter_eUseCounter_UseOfCaptureEvents : root :: mozilla :: UseCounter = 65 ; pub const UseCounter_eUseCounter_UseOfReleaseEvents : root :: mozilla :: UseCounter = 66 ; pub const UseCounter_eUseCounter_UseOfDOM3LoadMethod : root :: mozilla :: UseCounter = 67 ; pub const UseCounter_eUseCounter_ChromeUseOfDOM3LoadMethod : root :: mozilla :: UseCounter = 68 ; pub const UseCounter_eUseCounter_ShowModalDialog : root :: mozilla :: UseCounter = 69 ; pub const UseCounter_eUseCounter_SyncXMLHttpRequest : root :: mozilla :: UseCounter = 70 ; pub const UseCounter_eUseCounter_Window_Cc_ontrollers : root :: mozilla :: UseCounter = 71 ; pub const UseCounter_eUseCounter_ImportXULIntoContent : root :: mozilla :: UseCounter = 72 ; pub const UseCounter_eUseCounter_PannerNodeDoppler : root :: mozilla :: UseCounter = 73 ; pub const UseCounter_eUseCounter_NavigatorGetUserMedia : root :: mozilla :: UseCounter = 74 ; pub const UseCounter_eUseCounter_WebrtcDeprecatedPrefix : root :: mozilla :: UseCounter = 75 ; pub const UseCounter_eUseCounter_RTCPeerConnectionGetStreams : root :: mozilla :: UseCounter = 76 ; pub const UseCounter_eUseCounter_AppCache : root :: mozilla :: UseCounter = 77 ; pub const UseCounter_eUseCounter_PrefixedImageSmoothingEnabled : root :: mozilla :: UseCounter = 78 ; pub const UseCounter_eUseCounter_PrefixedFullscreenAPI : root :: mozilla :: UseCounter = 79 ; pub const UseCounter_eUseCounter_LenientSetter : root :: mozilla :: UseCounter = 80 ; pub const UseCounter_eUseCounter_FileLastModifiedDate : root :: mozilla :: UseCounter = 81 ; pub const UseCounter_eUseCounter_ImageBitmapRenderingContext_TransferImageBitmap : root :: mozilla :: UseCounter = 82 ; pub const UseCounter_eUseCounter_URLCreateObjectURL_MediaStream : root :: mozilla :: UseCounter = 83 ; pub const UseCounter_eUseCounter_XMLBaseAttribute : root :: mozilla :: UseCounter = 84 ; pub const UseCounter_eUseCounter_WindowContentUntrusted : root :: mozilla :: UseCounter = 85 ; pub const UseCounter_eUseCounter_Count : root :: mozilla :: UseCounter = 86 ; pub type UseCounter = i16 ; pub const LogLevel_Disabled : root :: mozilla :: LogLevel = 0 ; pub const LogLevel_Error : root :: mozilla :: LogLevel = 1 ; pub const LogLevel_Warning : root :: mozilla :: LogLevel = 2 ; pub const LogLevel_Info : root :: mozilla :: LogLevel = 3 ; pub const LogLevel_Debug : root :: mozilla :: LogLevel = 4 ; pub const LogLevel_Verbose : root :: mozilla :: LogLevel = 5 ; pub type LogLevel = :: std :: os :: raw :: c_int ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct LogModule { pub mName : * mut :: std :: os :: raw :: c_char , pub mLevel : u32 , } # [ test ] fn bindgen_test_layout_LogModule ( ) { assert_eq ! ( :: std :: mem :: size_of :: < LogModule > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( LogModule ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < LogModule > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( LogModule ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LogModule ) ) . mName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( LogModule ) , "::" , stringify ! ( mName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LogModule ) ) . mLevel as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( LogModule ) , "::" , stringify ! ( mLevel ) ) ) ; } - /// Helper class that lazy loads the given log module. This is safe to use for + /// various uses of the corrupted memory. + #[repr(C)] + #[derive(Debug)] + pub struct CorruptionCanary { + pub mValue: usize, + } + pub const CorruptionCanary_kCanarySet: usize = 252382987; + #[test] + fn bindgen_test_layout_CorruptionCanary() { + assert_eq!( + ::std::mem::size_of::<CorruptionCanary>(), + 8usize, + concat!("Size of: ", stringify!(CorruptionCanary)) + ); + assert_eq!( + ::std::mem::align_of::<CorruptionCanary>(), + 8usize, + concat!("Alignment of ", stringify!(CorruptionCanary)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<CorruptionCanary>())).mValue as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CorruptionCanary), + "::", + stringify!(mValue) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ArenaAllocator_ArenaHeader { + /// The location in memory of the data portion of the arena. + pub offset: usize, + /// The location in memory of the end of the data portion of the arena. + pub tail: usize, + } + impl Clone for ArenaAllocator_ArenaHeader { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct ArenaAllocator_ArenaChunk { + pub canary: root::mozilla::CorruptionCanary, + pub header: root::mozilla::ArenaAllocator_ArenaHeader, + pub next: *mut root::mozilla::ArenaAllocator_ArenaChunk, + } + pub type LayoutDeviceIntPoint = [u32; 2usize]; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct LayoutDevicePixel { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_LayoutDevicePixel() { + assert_eq!( + ::std::mem::size_of::<LayoutDevicePixel>(), + 1usize, + concat!("Size of: ", stringify!(LayoutDevicePixel)) + ); + assert_eq!( + ::std::mem::align_of::<LayoutDevicePixel>(), + 1usize, + concat!("Alignment of ", stringify!(LayoutDevicePixel)) + ); + } + impl Clone for LayoutDevicePixel { + fn clone(&self) -> Self { + *self + } + } + pub mod a11y { + #[allow(unused_imports)] + use self::super::super::super::root; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct DocAccessible { + _unused: [u8; 0], + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Encoding { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug)] + pub struct Runnable { + pub _base: root::nsIRunnable, + pub _base_1: root::nsINamed, + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mName: *const ::std::os::raw::c_char, + } + pub type Runnable_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_Runnable() { + assert_eq!( + ::std::mem::size_of::<Runnable>(), + 32usize, + concat!("Size of: ", stringify!(Runnable)) + ); + assert_eq!( + ::std::mem::align_of::<Runnable>(), + 8usize, + concat!("Alignment of ", stringify!(Runnable)) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct SegmentedVector_SegmentImpl_Storage { + pub mBuf: root::__BindgenUnionField<*mut ::std::os::raw::c_char>, + pub mAlign: root::__BindgenUnionField<u8>, + pub bindgen_union_field: u64, + } + pub type SegmentedVector_Segment = u8; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct SegmentedVector_IterImpl { + pub mSegment: *mut root::mozilla::SegmentedVector_Segment, + pub mIndex: usize, + } + pub const UseCounter_eUseCounter_UNKNOWN: root::mozilla::UseCounter = -1; + pub const UseCounter_eUseCounter_SVGSVGElement_getElementById: root::mozilla::UseCounter = + 0; + pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_getter: + root::mozilla::UseCounter = 1; + pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_setter: + root::mozilla::UseCounter = 2; + pub const UseCounter_eUseCounter_property_Fill: root::mozilla::UseCounter = 3; + pub const UseCounter_eUseCounter_property_FillOpacity: root::mozilla::UseCounter = 4; + pub const UseCounter_eUseCounter_XMLDocument_async_getter: root::mozilla::UseCounter = 5; + pub const UseCounter_eUseCounter_XMLDocument_async_setter: root::mozilla::UseCounter = 6; + pub const UseCounter_eUseCounter_DOMError_name_getter: root::mozilla::UseCounter = 7; + pub const UseCounter_eUseCounter_DOMError_name_setter: root::mozilla::UseCounter = 8; + pub const UseCounter_eUseCounter_DOMError_message_getter: root::mozilla::UseCounter = 9; + pub const UseCounter_eUseCounter_DOMError_message_setter: root::mozilla::UseCounter = 10; + pub const UseCounter_eUseCounter_custom_DOMErrorConstructor: root::mozilla::UseCounter = 11; + pub const UseCounter_eUseCounter_PushManager_subscribe: root::mozilla::UseCounter = 12; + pub const UseCounter_eUseCounter_PushSubscription_unsubscribe: root::mozilla::UseCounter = + 13; + pub const UseCounter_eUseCounter_Window_sidebar_getter: root::mozilla::UseCounter = 14; + pub const UseCounter_eUseCounter_Window_sidebar_setter: root::mozilla::UseCounter = 15; + pub const UseCounter_eUseCounter_OfflineResourceList_swapCache: root::mozilla::UseCounter = + 16; + pub const UseCounter_eUseCounter_OfflineResourceList_update: root::mozilla::UseCounter = 17; + pub const UseCounter_eUseCounter_OfflineResourceList_status_getter: + root::mozilla::UseCounter = 18; + pub const UseCounter_eUseCounter_OfflineResourceList_status_setter: + root::mozilla::UseCounter = 19; + pub const UseCounter_eUseCounter_OfflineResourceList_onchecking_getter: + root::mozilla::UseCounter = 20; + pub const UseCounter_eUseCounter_OfflineResourceList_onchecking_setter: + root::mozilla::UseCounter = 21; + pub const UseCounter_eUseCounter_OfflineResourceList_onerror_getter: + root::mozilla::UseCounter = 22; + pub const UseCounter_eUseCounter_OfflineResourceList_onerror_setter: + root::mozilla::UseCounter = 23; + pub const UseCounter_eUseCounter_OfflineResourceList_onnoupdate_getter: + root::mozilla::UseCounter = 24; + pub const UseCounter_eUseCounter_OfflineResourceList_onnoupdate_setter: + root::mozilla::UseCounter = 25; + pub const UseCounter_eUseCounter_OfflineResourceList_ondownloading_getter: + root::mozilla::UseCounter = 26; + pub const UseCounter_eUseCounter_OfflineResourceList_ondownloading_setter: + root::mozilla::UseCounter = 27; + pub const UseCounter_eUseCounter_OfflineResourceList_onprogress_getter: + root::mozilla::UseCounter = 28; + pub const UseCounter_eUseCounter_OfflineResourceList_onprogress_setter: + root::mozilla::UseCounter = 29; + pub const UseCounter_eUseCounter_OfflineResourceList_onupdateready_getter: + root::mozilla::UseCounter = 30; + pub const UseCounter_eUseCounter_OfflineResourceList_onupdateready_setter: + root::mozilla::UseCounter = 31; + pub const UseCounter_eUseCounter_OfflineResourceList_oncached_getter: + root::mozilla::UseCounter = 32; + pub const UseCounter_eUseCounter_OfflineResourceList_oncached_setter: + root::mozilla::UseCounter = 33; + pub const UseCounter_eUseCounter_OfflineResourceList_onobsolete_getter: + root::mozilla::UseCounter = 34; + pub const UseCounter_eUseCounter_OfflineResourceList_onobsolete_setter: + root::mozilla::UseCounter = 35; + pub const UseCounter_eUseCounter_IDBDatabase_createMutableFile: root::mozilla::UseCounter = + 36; + pub const UseCounter_eUseCounter_IDBDatabase_mozCreateFileHandle: + root::mozilla::UseCounter = 37; + pub const UseCounter_eUseCounter_IDBMutableFile_open: root::mozilla::UseCounter = 38; + pub const UseCounter_eUseCounter_IDBMutableFile_getFile: root::mozilla::UseCounter = 39; + pub const UseCounter_eUseCounter_DataTransfer_addElement: root::mozilla::UseCounter = 40; + pub const UseCounter_eUseCounter_DataTransfer_mozItemCount_getter: + root::mozilla::UseCounter = 41; + pub const UseCounter_eUseCounter_DataTransfer_mozItemCount_setter: + root::mozilla::UseCounter = 42; + pub const UseCounter_eUseCounter_DataTransfer_mozCursor_getter: root::mozilla::UseCounter = + 43; + pub const UseCounter_eUseCounter_DataTransfer_mozCursor_setter: root::mozilla::UseCounter = + 44; + pub const UseCounter_eUseCounter_DataTransfer_mozTypesAt: root::mozilla::UseCounter = 45; + pub const UseCounter_eUseCounter_DataTransfer_mozClearDataAt: root::mozilla::UseCounter = + 46; + pub const UseCounter_eUseCounter_DataTransfer_mozSetDataAt: root::mozilla::UseCounter = 47; + pub const UseCounter_eUseCounter_DataTransfer_mozGetDataAt: root::mozilla::UseCounter = 48; + pub const UseCounter_eUseCounter_DataTransfer_mozUserCancelled_getter: + root::mozilla::UseCounter = 49; + pub const UseCounter_eUseCounter_DataTransfer_mozUserCancelled_setter: + root::mozilla::UseCounter = 50; + pub const UseCounter_eUseCounter_DataTransfer_mozSourceNode_getter: + root::mozilla::UseCounter = 51; + pub const UseCounter_eUseCounter_DataTransfer_mozSourceNode_setter: + root::mozilla::UseCounter = 52; + pub const UseCounter_eUseCounter_custom_JS_asmjs: root::mozilla::UseCounter = 53; + pub const UseCounter_eUseCounter_custom_JS_wasm: root::mozilla::UseCounter = 54; + pub const UseCounter_eUseCounter_EnablePrivilege: root::mozilla::UseCounter = 55; + pub const UseCounter_eUseCounter_DOMExceptionCode: root::mozilla::UseCounter = 56; + pub const UseCounter_eUseCounter_MutationEvent: root::mozilla::UseCounter = 57; + pub const UseCounter_eUseCounter_Components: root::mozilla::UseCounter = 58; + pub const UseCounter_eUseCounter_PrefixedVisibilityAPI: root::mozilla::UseCounter = 59; + pub const UseCounter_eUseCounter_NodeIteratorDetach: root::mozilla::UseCounter = 60; + pub const UseCounter_eUseCounter_LenientThis: root::mozilla::UseCounter = 61; + pub const UseCounter_eUseCounter_GetPreventDefault: root::mozilla::UseCounter = 62; + pub const UseCounter_eUseCounter_GetSetUserData: root::mozilla::UseCounter = 63; + pub const UseCounter_eUseCounter_MozGetAsFile: root::mozilla::UseCounter = 64; + pub const UseCounter_eUseCounter_UseOfCaptureEvents: root::mozilla::UseCounter = 65; + pub const UseCounter_eUseCounter_UseOfReleaseEvents: root::mozilla::UseCounter = 66; + pub const UseCounter_eUseCounter_UseOfDOM3LoadMethod: root::mozilla::UseCounter = 67; + pub const UseCounter_eUseCounter_ChromeUseOfDOM3LoadMethod: root::mozilla::UseCounter = 68; + pub const UseCounter_eUseCounter_ShowModalDialog: root::mozilla::UseCounter = 69; + pub const UseCounter_eUseCounter_SyncXMLHttpRequest: root::mozilla::UseCounter = 70; + pub const UseCounter_eUseCounter_Window_Cc_ontrollers: root::mozilla::UseCounter = 71; + pub const UseCounter_eUseCounter_ImportXULIntoContent: root::mozilla::UseCounter = 72; + pub const UseCounter_eUseCounter_PannerNodeDoppler: root::mozilla::UseCounter = 73; + pub const UseCounter_eUseCounter_NavigatorGetUserMedia: root::mozilla::UseCounter = 74; + pub const UseCounter_eUseCounter_WebrtcDeprecatedPrefix: root::mozilla::UseCounter = 75; + pub const UseCounter_eUseCounter_RTCPeerConnectionGetStreams: root::mozilla::UseCounter = + 76; + pub const UseCounter_eUseCounter_AppCache: root::mozilla::UseCounter = 77; + pub const UseCounter_eUseCounter_PrefixedImageSmoothingEnabled: root::mozilla::UseCounter = + 78; + pub const UseCounter_eUseCounter_PrefixedFullscreenAPI: root::mozilla::UseCounter = 79; + pub const UseCounter_eUseCounter_LenientSetter: root::mozilla::UseCounter = 80; + pub const UseCounter_eUseCounter_FileLastModifiedDate: root::mozilla::UseCounter = 81; + pub const UseCounter_eUseCounter_ImageBitmapRenderingContext_TransferImageBitmap: + root::mozilla::UseCounter = 82; + pub const UseCounter_eUseCounter_URLCreateObjectURL_MediaStream: root::mozilla::UseCounter = + 83; + pub const UseCounter_eUseCounter_XMLBaseAttribute: root::mozilla::UseCounter = 84; + pub const UseCounter_eUseCounter_WindowContentUntrusted: root::mozilla::UseCounter = 85; + pub const UseCounter_eUseCounter_Count: root::mozilla::UseCounter = 86; + pub type UseCounter = i16; + pub const LogLevel_Disabled: root::mozilla::LogLevel = 0; + pub const LogLevel_Error: root::mozilla::LogLevel = 1; + pub const LogLevel_Warning: root::mozilla::LogLevel = 2; + pub const LogLevel_Info: root::mozilla::LogLevel = 3; + pub const LogLevel_Debug: root::mozilla::LogLevel = 4; + pub const LogLevel_Verbose: root::mozilla::LogLevel = 5; + pub type LogLevel = i32; + #[repr(C)] + #[derive(Debug)] + pub struct LogModule { + pub mName: *mut ::std::os::raw::c_char, + pub mLevel: u32, + } + #[test] + fn bindgen_test_layout_LogModule() { + assert_eq!( + ::std::mem::size_of::<LogModule>(), + 16usize, + concat!("Size of: ", stringify!(LogModule)) + ); + assert_eq!( + ::std::mem::align_of::<LogModule>(), + 8usize, + concat!("Alignment of ", stringify!(LogModule)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<LogModule>())).mName as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(LogModule), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<LogModule>())).mLevel as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(LogModule), + "::", + stringify!(mLevel) + ) + ); + } + /// Helper class that lazy loads the given log module. This is safe to use for /// declaring static references to log modules and can be used as a replacement /// for accessing a LogModule directly. /// @@ -337,17 +6434,621 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// void Foo() { /// MOZ_LOG(sLayoutLog, LogLevel::Verbose, ("Entering foo")); - /// } - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct LazyLogModule { pub mLogName : * const :: std :: os :: raw :: c_char , pub mLog : u64 , } # [ test ] fn bindgen_test_layout_LazyLogModule ( ) { assert_eq ! ( :: std :: mem :: size_of :: < LazyLogModule > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( LazyLogModule ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < LazyLogModule > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( LazyLogModule ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LazyLogModule ) ) . mLogName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( LazyLogModule ) , "::" , stringify ! ( mLogName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LazyLogModule ) ) . mLog as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( LazyLogModule ) , "::" , stringify ! ( mLog ) ) ) ; } impl Clone for LazyLogModule { fn clone ( & self ) -> Self { * self } } pub type ComputedKeyframeValues = root :: nsTArray < root :: mozilla :: PropertyStyleAnimationValuePair > ; # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_RawServoStyleSet_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_RawServoSelectorList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_RawServoSourceSizeList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ScrollbarStyles { pub mHorizontal : u8 , pub mVertical : u8 , pub mScrollBehavior : u8 , pub mOverscrollBehaviorX : root :: mozilla :: StyleOverscrollBehavior , pub mOverscrollBehaviorY : root :: mozilla :: StyleOverscrollBehavior , pub mScrollSnapTypeX : u8 , pub mScrollSnapTypeY : u8 , pub mScrollSnapPointsX : root :: nsStyleCoord , pub mScrollSnapPointsY : root :: nsStyleCoord , pub mScrollSnapDestinationX : root :: nsStyleCoord_CalcValue , pub mScrollSnapDestinationY : root :: nsStyleCoord_CalcValue , } # [ test ] fn bindgen_test_layout_ScrollbarStyles ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ScrollbarStyles > ( ) , 64usize , concat ! ( "Size of: " , stringify ! ( ScrollbarStyles ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ScrollbarStyles > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ScrollbarStyles ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mHorizontal as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mHorizontal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mVertical as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mVertical ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mScrollBehavior as * const _ as usize } , 2usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mScrollBehavior ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mOverscrollBehaviorX as * const _ as usize } , 3usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mOverscrollBehaviorX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mOverscrollBehaviorY as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mOverscrollBehaviorY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mScrollSnapTypeX as * const _ as usize } , 5usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mScrollSnapTypeX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mScrollSnapTypeY as * const _ as usize } , 6usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mScrollSnapTypeY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mScrollSnapPointsX as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mScrollSnapPointsX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mScrollSnapPointsY as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mScrollSnapPointsY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mScrollSnapDestinationX as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mScrollSnapDestinationX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ScrollbarStyles ) ) . mScrollSnapDestinationY as * const _ as usize } , 52usize , concat ! ( "Alignment of field: " , stringify ! ( ScrollbarStyles ) , "::" , stringify ! ( mScrollSnapDestinationY ) ) ) ; } # [ repr ( C ) ] pub struct LangGroupFontPrefs { pub mLangGroup : root :: RefPtr < root :: nsAtom > , pub mMinimumFontSize : root :: nscoord , pub mDefaultVariableFont : root :: nsFont , pub mDefaultFixedFont : root :: nsFont , pub mDefaultSerifFont : root :: nsFont , pub mDefaultSansSerifFont : root :: nsFont , pub mDefaultMonospaceFont : root :: nsFont , pub mDefaultCursiveFont : root :: nsFont , pub mDefaultFantasyFont : root :: nsFont , pub mNext : root :: nsAutoPtr < root :: mozilla :: LangGroupFontPrefs > , } # [ test ] fn bindgen_test_layout_LangGroupFontPrefs ( ) { assert_eq ! ( :: std :: mem :: size_of :: < LangGroupFontPrefs > ( ) , 696usize , concat ! ( "Size of: " , stringify ! ( LangGroupFontPrefs ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < LangGroupFontPrefs > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( LangGroupFontPrefs ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mLangGroup as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mLangGroup ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mMinimumFontSize as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mMinimumFontSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mDefaultVariableFont as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mDefaultVariableFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mDefaultFixedFont as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mDefaultFixedFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mDefaultSerifFont as * const _ as usize } , 208usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mDefaultSerifFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mDefaultSansSerifFont as * const _ as usize } , 304usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mDefaultSansSerifFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mDefaultMonospaceFont as * const _ as usize } , 400usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mDefaultMonospaceFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mDefaultCursiveFont as * const _ as usize } , 496usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mDefaultCursiveFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mDefaultFantasyFont as * const _ as usize } , 592usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mDefaultFantasyFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LangGroupFontPrefs ) ) . mNext as * const _ as usize } , 688usize , concat ! ( "Alignment of field: " , stringify ! ( LangGroupFontPrefs ) , "::" , stringify ! ( mNext ) ) ) ; } - /// Some functionality that has historically lived on nsPresContext does not + /// } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct LazyLogModule { + pub mLogName: *const ::std::os::raw::c_char, + pub mLog: u64, + } + #[test] + fn bindgen_test_layout_LazyLogModule() { + assert_eq!( + ::std::mem::size_of::<LazyLogModule>(), + 16usize, + concat!("Size of: ", stringify!(LazyLogModule)) + ); + assert_eq!( + ::std::mem::align_of::<LazyLogModule>(), + 8usize, + concat!("Alignment of ", stringify!(LazyLogModule)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<LazyLogModule>())).mLogName as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(LazyLogModule), + "::", + stringify!(mLogName) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<LazyLogModule>())).mLog as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(LazyLogModule), + "::", + stringify!(mLog) + ) + ); + } + impl Clone for LazyLogModule { + fn clone(&self) -> Self { + *self + } + } + pub type ComputedKeyframeValues = + root::nsTArray<root::mozilla::PropertyStyleAnimationValuePair>; + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_RawServoStyleSet_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_RawServoSelectorList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_RawServoSourceSizeList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct ScrollbarStyles { + pub mHorizontal: u8, + pub mVertical: u8, + pub mScrollBehavior: u8, + pub mOverscrollBehaviorX: root::mozilla::StyleOverscrollBehavior, + pub mOverscrollBehaviorY: root::mozilla::StyleOverscrollBehavior, + pub mScrollSnapTypeX: u8, + pub mScrollSnapTypeY: u8, + pub mScrollSnapPointsX: root::nsStyleCoord, + pub mScrollSnapPointsY: root::nsStyleCoord, + pub mScrollSnapDestinationX: root::nsStyleCoord_CalcValue, + pub mScrollSnapDestinationY: root::nsStyleCoord_CalcValue, + } + #[test] + fn bindgen_test_layout_ScrollbarStyles() { + assert_eq!( + ::std::mem::size_of::<ScrollbarStyles>(), + 64usize, + concat!("Size of: ", stringify!(ScrollbarStyles)) + ); + assert_eq!( + ::std::mem::align_of::<ScrollbarStyles>(), + 8usize, + concat!("Alignment of ", stringify!(ScrollbarStyles)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mHorizontal as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mHorizontal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mVertical as *const _ as usize + }, + 1usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mVertical) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollBehavior as *const _ as usize + }, + 2usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mScrollBehavior) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mOverscrollBehaviorX as *const _ + as usize + }, + 3usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mOverscrollBehaviorX) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mOverscrollBehaviorY as *const _ + as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mOverscrollBehaviorY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapTypeX as *const _ + as usize + }, + 5usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mScrollSnapTypeX) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapTypeY as *const _ + as usize + }, + 6usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mScrollSnapTypeY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapPointsX as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mScrollSnapPointsX) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapPointsY as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mScrollSnapPointsY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapDestinationX as *const _ + as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mScrollSnapDestinationX) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapDestinationY as *const _ + as usize + }, + 52usize, + concat!( + "Offset of field: ", + stringify!(ScrollbarStyles), + "::", + stringify!(mScrollSnapDestinationY) + ) + ); + } + #[repr(C)] + pub struct LangGroupFontPrefs { + pub mLangGroup: root::RefPtr<root::nsAtom>, + pub mMinimumFontSize: root::nscoord, + pub mDefaultVariableFont: root::nsFont, + pub mDefaultFixedFont: root::nsFont, + pub mDefaultSerifFont: root::nsFont, + pub mDefaultSansSerifFont: root::nsFont, + pub mDefaultMonospaceFont: root::nsFont, + pub mDefaultCursiveFont: root::nsFont, + pub mDefaultFantasyFont: root::nsFont, + pub mNext: root::nsAutoPtr<root::mozilla::LangGroupFontPrefs>, + } + #[test] + fn bindgen_test_layout_LangGroupFontPrefs() { + assert_eq!( + ::std::mem::size_of::<LangGroupFontPrefs>(), + 696usize, + concat!("Size of: ", stringify!(LangGroupFontPrefs)) + ); + assert_eq!( + ::std::mem::align_of::<LangGroupFontPrefs>(), + 8usize, + concat!("Alignment of ", stringify!(LangGroupFontPrefs)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mLangGroup as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mLangGroup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mMinimumFontSize as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mMinimumFontSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultVariableFont as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mDefaultVariableFont) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultFixedFont as *const _ + as usize + }, + 112usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mDefaultFixedFont) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultSerifFont as *const _ + as usize + }, + 208usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mDefaultSerifFont) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultSansSerifFont as *const _ + as usize + }, + 304usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mDefaultSansSerifFont) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultMonospaceFont as *const _ + as usize + }, + 400usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mDefaultMonospaceFont) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultCursiveFont as *const _ + as usize + }, + 496usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mDefaultCursiveFont) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultFantasyFont as *const _ + as usize + }, + 592usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mDefaultFantasyFont) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<LangGroupFontPrefs>())).mNext as *const _ as usize + }, + 688usize, + concat!( + "Offset of field: ", + stringify!(LangGroupFontPrefs), + "::", + stringify!(mNext) + ) + ); + } + /// Some functionality that has historically lived on nsPresContext does not /// actually need to be per-document. This singleton class serves as a host /// for that functionality. We delegate to it from nsPresContext where - /// appropriate, and use it standalone in some cases as well. - # [ repr ( C ) ] pub struct StaticPresData { pub mLangService : * mut root :: nsLanguageAtomService , pub mBorderWidthTable : [ root :: nscoord ; 3usize ] , pub mStaticLangGroupFontPrefs : root :: mozilla :: LangGroupFontPrefs , } # [ test ] fn bindgen_test_layout_StaticPresData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StaticPresData > ( ) , 720usize , concat ! ( "Size of: " , stringify ! ( StaticPresData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StaticPresData > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StaticPresData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StaticPresData ) ) . mLangService as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StaticPresData ) , "::" , stringify ! ( mLangService ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StaticPresData ) ) . mBorderWidthTable as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( StaticPresData ) , "::" , stringify ! ( mBorderWidthTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StaticPresData ) ) . mStaticLangGroupFontPrefs as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( StaticPresData ) , "::" , stringify ! ( mStaticLangGroupFontPrefs ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct EventStateManager { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RestyleManager { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct URLExtraData { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mBaseURI : root :: nsCOMPtr , pub mReferrer : root :: nsCOMPtr , pub mPrincipal : root :: nsCOMPtr , pub mIsChrome : bool , } pub type URLExtraData_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; extern "C" { - # [ link_name = "\u{1}_ZN7mozilla12URLExtraData6sDummyE" ] - pub static mut URLExtraData_sDummy : root :: mozilla :: StaticRefPtr < root :: mozilla :: URLExtraData > ; -} # [ test ] fn bindgen_test_layout_URLExtraData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < URLExtraData > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( URLExtraData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < URLExtraData > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( URLExtraData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLExtraData ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( URLExtraData ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLExtraData ) ) . mBaseURI as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( URLExtraData ) , "::" , stringify ! ( mBaseURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLExtraData ) ) . mReferrer as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( URLExtraData ) , "::" , stringify ! ( mReferrer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLExtraData ) ) . mPrincipal as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( URLExtraData ) , "::" , stringify ! ( mPrincipal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URLExtraData ) ) . mIsChrome as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( URLExtraData ) , "::" , stringify ! ( mIsChrome ) ) ) ; } # [ test ] fn __bindgen_test_layout_StaticRefPtr_open0_URLExtraData_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: StaticRefPtr < root :: mozilla :: URLExtraData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: mozilla :: URLExtraData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: StaticRefPtr < root :: mozilla :: URLExtraData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: mozilla :: URLExtraData > ) ) ) ; } pub mod image { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ImageURL { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Image { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ProgressTracker { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] pub struct IProgressObserver__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; - /// An interface for observing changes to image state, as reported by + /// appropriate, and use it standalone in some cases as well. + #[repr(C)] + pub struct StaticPresData { + pub mLangService: *mut root::nsLanguageAtomService, + pub mBorderWidthTable: [root::nscoord; 3usize], + pub mStaticLangGroupFontPrefs: root::mozilla::LangGroupFontPrefs, + } + #[test] + fn bindgen_test_layout_StaticPresData() { + assert_eq!( + ::std::mem::size_of::<StaticPresData>(), + 720usize, + concat!("Size of: ", stringify!(StaticPresData)) + ); + assert_eq!( + ::std::mem::align_of::<StaticPresData>(), + 8usize, + concat!("Alignment of ", stringify!(StaticPresData)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StaticPresData>())).mLangService as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StaticPresData), + "::", + stringify!(mLangService) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StaticPresData>())).mBorderWidthTable as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(StaticPresData), + "::", + stringify!(mBorderWidthTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StaticPresData>())).mStaticLangGroupFontPrefs as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(StaticPresData), + "::", + stringify!(mStaticLangGroupFontPrefs) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct EventStateManager { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RestyleManager { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug)] + pub struct URLExtraData { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mBaseURI: root::nsCOMPtr, + pub mReferrer: root::nsCOMPtr, + pub mPrincipal: root::nsCOMPtr, + pub mIsChrome: bool, + } + pub type URLExtraData_HasThreadSafeRefCnt = root::mozilla::TrueType; + extern "C" { + #[link_name = "\u{1}_ZN7mozilla12URLExtraData6sDummyE"] + pub static mut URLExtraData_sDummy: + root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>; + } + #[test] + fn bindgen_test_layout_URLExtraData() { + assert_eq!( + ::std::mem::size_of::<URLExtraData>(), + 40usize, + concat!("Size of: ", stringify!(URLExtraData)) + ); + assert_eq!( + ::std::mem::align_of::<URLExtraData>(), + 8usize, + concat!("Alignment of ", stringify!(URLExtraData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<URLExtraData>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(URLExtraData), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<URLExtraData>())).mBaseURI as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(URLExtraData), + "::", + stringify!(mBaseURI) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<URLExtraData>())).mReferrer as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(URLExtraData), + "::", + stringify!(mReferrer) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<URLExtraData>())).mPrincipal as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(URLExtraData), + "::", + stringify!(mPrincipal) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<URLExtraData>())).mIsChrome as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(URLExtraData), + "::", + stringify!(mIsChrome) + ) + ); + } + #[test] + fn __bindgen_test_layout_StaticRefPtr_open0_URLExtraData_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>) + ) + ); + } + pub mod image { + #[allow(unused_imports)] + use self::super::super::super::root; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ImageURL { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Image { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ProgressTracker { + _unused: [u8; 0], + } + #[repr(C)] + pub struct IProgressObserver__bindgen_vtable(::std::os::raw::c_void); + /// An interface for observing changes to image state, as reported by /// ProgressTracker. /// /// This is the ImageLib-internal version of imgINotificationObserver, @@ -356,21 +7057,2059 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// XXX(seth): It's preferable to avoid adding anything to this interface if /// possible. In the long term, it would be ideal to get to a place where we can - /// just use the imgINotificationObserver interface internally as well. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct IProgressObserver { pub vtable_ : * const IProgressObserver__bindgen_vtable , pub _base : u64 , } # [ test ] fn bindgen_test_layout_IProgressObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < IProgressObserver > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( IProgressObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < IProgressObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( IProgressObserver ) ) ) ; } } # [ repr ( C ) ] pub struct CounterStyle__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct CounterStyle { pub vtable_ : * const CounterStyle__bindgen_vtable , pub mStyle : i32 , } # [ test ] fn bindgen_test_layout_CounterStyle ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CounterStyle > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( CounterStyle ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CounterStyle > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CounterStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CounterStyle ) ) . mStyle as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( CounterStyle ) , "::" , stringify ! ( mStyle ) ) ) ; } impl Clone for CounterStyle { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct AnonymousCounterStyle { pub _base : root :: mozilla :: CounterStyle , pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mSingleString : bool , pub mSystem : u8 , pub mSymbols : root :: nsTArray < ::nsstring::nsStringRepr > , } pub type AnonymousCounterStyle_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_AnonymousCounterStyle ( ) { assert_eq ! ( :: std :: mem :: size_of :: < AnonymousCounterStyle > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( AnonymousCounterStyle ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < AnonymousCounterStyle > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( AnonymousCounterStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnonymousCounterStyle ) ) . mRefCnt as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( AnonymousCounterStyle ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnonymousCounterStyle ) ) . mSingleString as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( AnonymousCounterStyle ) , "::" , stringify ! ( mSingleString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnonymousCounterStyle ) ) . mSystem as * const _ as usize } , 25usize , concat ! ( "Alignment of field: " , stringify ! ( AnonymousCounterStyle ) , "::" , stringify ! ( mSystem ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnonymousCounterStyle ) ) . mSymbols as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( AnonymousCounterStyle ) , "::" , stringify ! ( mSymbols ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct CounterStylePtr { pub mRaw : usize , } pub const CounterStylePtr_Type_eCounterStyle : root :: mozilla :: CounterStylePtr_Type = 0 ; pub const CounterStylePtr_Type_eAnonymousCounterStyle : root :: mozilla :: CounterStylePtr_Type = 1 ; pub const CounterStylePtr_Type_eUnresolvedAtom : root :: mozilla :: CounterStylePtr_Type = 2 ; pub const CounterStylePtr_Type_eMask : root :: mozilla :: CounterStylePtr_Type = 3 ; pub type CounterStylePtr_Type = usize ; # [ test ] fn bindgen_test_layout_CounterStylePtr ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CounterStylePtr > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( CounterStylePtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CounterStylePtr > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CounterStylePtr ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CounterStylePtr ) ) . mRaw as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( CounterStylePtr ) , "::" , stringify ! ( mRaw ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct CounterStyleManager { pub mRefCnt : root :: nsAutoRefCnt , pub mPresContext : * mut root :: nsPresContext , pub mStyles : [ u64 ; 4usize ] , pub mRetiredStyles : root :: nsTArray < * mut root :: mozilla :: CounterStyle > , } pub type CounterStyleManager_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_CounterStyleManager ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CounterStyleManager > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( CounterStyleManager ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CounterStyleManager > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CounterStyleManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CounterStyleManager ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( CounterStyleManager ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CounterStyleManager ) ) . mPresContext as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( CounterStyleManager ) , "::" , stringify ! ( mPresContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CounterStyleManager ) ) . mStyles as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( CounterStyleManager ) , "::" , stringify ! ( mStyles ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CounterStyleManager ) ) . mRetiredStyles as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( CounterStyleManager ) , "::" , stringify ! ( mRetiredStyles ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Position { pub mXPosition : root :: mozilla :: Position_Coord , pub mYPosition : root :: mozilla :: Position_Coord , } pub type Position_Coord = root :: nsStyleCoord_CalcValue ; # [ test ] fn bindgen_test_layout_Position ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Position > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( Position ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Position > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( Position ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Position ) ) . mXPosition as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Position ) , "::" , stringify ! ( mXPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Position ) ) . mYPosition as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( Position ) , "::" , stringify ! ( mYPosition ) ) ) ; } impl Clone for Position { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct StyleTransition { pub mTimingFunction : root :: nsTimingFunction , pub mDuration : f32 , pub mDelay : f32 , pub mProperty : root :: nsCSSPropertyID , pub mUnknownProperty : root :: RefPtr < root :: nsAtom > , } # [ test ] fn bindgen_test_layout_StyleTransition ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleTransition > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( StyleTransition ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleTransition > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleTransition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleTransition ) ) . mTimingFunction as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleTransition ) , "::" , stringify ! ( mTimingFunction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleTransition ) ) . mDuration as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( StyleTransition ) , "::" , stringify ! ( mDuration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleTransition ) ) . mDelay as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( StyleTransition ) , "::" , stringify ! ( mDelay ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleTransition ) ) . mProperty as * const _ as usize } , 28usize , concat ! ( "Alignment of field: " , stringify ! ( StyleTransition ) , "::" , stringify ! ( mProperty ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleTransition ) ) . mUnknownProperty as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( StyleTransition ) , "::" , stringify ! ( mUnknownProperty ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct StyleAnimation { pub mTimingFunction : root :: nsTimingFunction , pub mDuration : f32 , pub mDelay : f32 , pub mName : root :: RefPtr < root :: nsAtom > , pub mDirection : root :: mozilla :: dom :: PlaybackDirection , pub mFillMode : root :: mozilla :: dom :: FillMode , pub mPlayState : u8 , pub mIterationCount : f32 , } # [ test ] fn bindgen_test_layout_StyleAnimation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleAnimation > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( StyleAnimation ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleAnimation > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleAnimation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimation ) ) . mTimingFunction as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimation ) , "::" , stringify ! ( mTimingFunction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimation ) ) . mDuration as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimation ) , "::" , stringify ! ( mDuration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimation ) ) . mDelay as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimation ) , "::" , stringify ! ( mDelay ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimation ) ) . mName as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimation ) , "::" , stringify ! ( mName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimation ) ) . mDirection as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimation ) , "::" , stringify ! ( mDirection ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimation ) ) . mFillMode as * const _ as usize } , 41usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimation ) , "::" , stringify ! ( mFillMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimation ) ) . mPlayState as * const _ as usize } , 42usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimation ) , "::" , stringify ! ( mPlayState ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimation ) ) . mIterationCount as * const _ as usize } , 44usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimation ) , "::" , stringify ! ( mIterationCount ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct StyleBasicShape { pub mType : root :: mozilla :: StyleBasicShapeType , pub mFillRule : root :: mozilla :: StyleFillRule , pub mCoordinates : root :: nsTArray < root :: nsStyleCoord > , pub mPosition : root :: mozilla :: Position , pub mRadius : root :: nsStyleCorners , } # [ test ] fn bindgen_test_layout_StyleBasicShape ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleBasicShape > ( ) , 112usize , concat ! ( "Size of: " , stringify ! ( StyleBasicShape ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleBasicShape > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleBasicShape ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleBasicShape ) ) . mType as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleBasicShape ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleBasicShape ) ) . mFillRule as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( StyleBasicShape ) , "::" , stringify ! ( mFillRule ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleBasicShape ) ) . mCoordinates as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( StyleBasicShape ) , "::" , stringify ! ( mCoordinates ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleBasicShape ) ) . mPosition as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( StyleBasicShape ) , "::" , stringify ! ( mPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleBasicShape ) ) . mRadius as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( StyleBasicShape ) , "::" , stringify ! ( mRadius ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct StyleShapeSource { pub mBasicShape : root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > , pub mShapeImage : root :: mozilla :: UniquePtr < root :: nsStyleImage > , pub mType : root :: mozilla :: StyleShapeSourceType , pub mReferenceBox : root :: mozilla :: StyleGeometryBox , } # [ test ] fn bindgen_test_layout_StyleShapeSource ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleShapeSource > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( StyleShapeSource ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleShapeSource > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleShapeSource ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleShapeSource ) ) . mBasicShape as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleShapeSource ) , "::" , stringify ! ( mBasicShape ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleShapeSource ) ) . mShapeImage as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( StyleShapeSource ) , "::" , stringify ! ( mShapeImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleShapeSource ) ) . mType as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( StyleShapeSource ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleShapeSource ) ) . mReferenceBox as * const _ as usize } , 17usize , concat ! ( "Alignment of field: " , stringify ! ( StyleShapeSource ) , "::" , stringify ! ( mReferenceBox ) ) ) ; } - /// <div rustbindgen="true" replaces="mozilla::UniquePtr"> + /// just use the imgINotificationObserver interface internally as well. + #[repr(C)] + #[derive(Debug)] + pub struct IProgressObserver { + pub vtable_: *const IProgressObserver__bindgen_vtable, + pub _base: u64, + } + #[test] + fn bindgen_test_layout_IProgressObserver() { + assert_eq!( + ::std::mem::size_of::<IProgressObserver>(), + 16usize, + concat!("Size of: ", stringify!(IProgressObserver)) + ); + assert_eq!( + ::std::mem::align_of::<IProgressObserver>(), + 8usize, + concat!("Alignment of ", stringify!(IProgressObserver)) + ); + } + } + #[repr(C)] + pub struct CounterStyle__bindgen_vtable(::std::os::raw::c_void); + #[repr(C)] + #[derive(Debug, Copy)] + pub struct CounterStyle { + pub vtable_: *const CounterStyle__bindgen_vtable, + pub mStyle: i32, + } + #[test] + fn bindgen_test_layout_CounterStyle() { + assert_eq!( + ::std::mem::size_of::<CounterStyle>(), + 16usize, + concat!("Size of: ", stringify!(CounterStyle)) + ); + assert_eq!( + ::std::mem::align_of::<CounterStyle>(), + 8usize, + concat!("Alignment of ", stringify!(CounterStyle)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<CounterStyle>())).mStyle as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(CounterStyle), + "::", + stringify!(mStyle) + ) + ); + } + impl Clone for CounterStyle { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct AnonymousCounterStyle { + pub _base: root::mozilla::CounterStyle, + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mSingleString: bool, + pub mSystem: u8, + pub mSymbols: root::nsTArray<::nsstring::nsStringRepr>, + } + pub type AnonymousCounterStyle_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_AnonymousCounterStyle() { + assert_eq!( + ::std::mem::size_of::<AnonymousCounterStyle>(), + 40usize, + concat!("Size of: ", stringify!(AnonymousCounterStyle)) + ); + assert_eq!( + ::std::mem::align_of::<AnonymousCounterStyle>(), + 8usize, + concat!("Alignment of ", stringify!(AnonymousCounterStyle)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnonymousCounterStyle>())).mRefCnt as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(AnonymousCounterStyle), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnonymousCounterStyle>())).mSingleString as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(AnonymousCounterStyle), + "::", + stringify!(mSingleString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnonymousCounterStyle>())).mSystem as *const _ as usize + }, + 25usize, + concat!( + "Offset of field: ", + stringify!(AnonymousCounterStyle), + "::", + stringify!(mSystem) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnonymousCounterStyle>())).mSymbols as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(AnonymousCounterStyle), + "::", + stringify!(mSymbols) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct CounterStylePtr { + pub mRaw: usize, + } + pub const CounterStylePtr_Type_eCounterStyle: root::mozilla::CounterStylePtr_Type = 0; + pub const CounterStylePtr_Type_eAnonymousCounterStyle: root::mozilla::CounterStylePtr_Type = + 1; + pub const CounterStylePtr_Type_eUnresolvedAtom: root::mozilla::CounterStylePtr_Type = 2; + pub const CounterStylePtr_Type_eMask: root::mozilla::CounterStylePtr_Type = 3; + pub type CounterStylePtr_Type = u64; + #[test] + fn bindgen_test_layout_CounterStylePtr() { + assert_eq!( + ::std::mem::size_of::<CounterStylePtr>(), + 8usize, + concat!("Size of: ", stringify!(CounterStylePtr)) + ); + assert_eq!( + ::std::mem::align_of::<CounterStylePtr>(), + 8usize, + concat!("Alignment of ", stringify!(CounterStylePtr)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<CounterStylePtr>())).mRaw as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CounterStylePtr), + "::", + stringify!(mRaw) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct CounterStyleManager { + pub mRefCnt: root::nsAutoRefCnt, + pub mPresContext: *mut root::nsPresContext, + pub mStyles: [u64; 4usize], + pub mRetiredStyles: root::nsTArray<*mut root::mozilla::CounterStyle>, + } + pub type CounterStyleManager_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_CounterStyleManager() { + assert_eq!( + ::std::mem::size_of::<CounterStyleManager>(), + 56usize, + concat!("Size of: ", stringify!(CounterStyleManager)) + ); + assert_eq!( + ::std::mem::align_of::<CounterStyleManager>(), + 8usize, + concat!("Alignment of ", stringify!(CounterStyleManager)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CounterStyleManager>())).mRefCnt as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CounterStyleManager), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CounterStyleManager>())).mPresContext as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(CounterStyleManager), + "::", + stringify!(mPresContext) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CounterStyleManager>())).mStyles as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(CounterStyleManager), + "::", + stringify!(mStyles) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CounterStyleManager>())).mRetiredStyles as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(CounterStyleManager), + "::", + stringify!(mRetiredStyles) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Position { + pub mXPosition: root::mozilla::Position_Coord, + pub mYPosition: root::mozilla::Position_Coord, + } + pub type Position_Coord = root::nsStyleCoord_CalcValue; + #[test] + fn bindgen_test_layout_Position() { + assert_eq!( + ::std::mem::size_of::<Position>(), + 24usize, + concat!("Size of: ", stringify!(Position)) + ); + assert_eq!( + ::std::mem::align_of::<Position>(), + 4usize, + concat!("Alignment of ", stringify!(Position)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Position>())).mXPosition as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Position), + "::", + stringify!(mXPosition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Position>())).mYPosition as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(Position), + "::", + stringify!(mYPosition) + ) + ); + } + impl Clone for Position { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct StyleTransition { + pub mTimingFunction: root::nsTimingFunction, + pub mDuration: f32, + pub mDelay: f32, + pub mProperty: root::nsCSSPropertyID, + pub mUnknownProperty: root::RefPtr<root::nsAtom>, + } + #[test] + fn bindgen_test_layout_StyleTransition() { + assert_eq!( + ::std::mem::size_of::<StyleTransition>(), + 40usize, + concat!("Size of: ", stringify!(StyleTransition)) + ); + assert_eq!( + ::std::mem::align_of::<StyleTransition>(), + 8usize, + concat!("Alignment of ", stringify!(StyleTransition)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleTransition>())).mTimingFunction as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleTransition), + "::", + stringify!(mTimingFunction) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleTransition>())).mDuration as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(StyleTransition), + "::", + stringify!(mDuration) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleTransition>())).mDelay as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(StyleTransition), + "::", + stringify!(mDelay) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleTransition>())).mProperty as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(StyleTransition), + "::", + stringify!(mProperty) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleTransition>())).mUnknownProperty as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(StyleTransition), + "::", + stringify!(mUnknownProperty) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct StyleAnimation { + pub mTimingFunction: root::nsTimingFunction, + pub mDuration: f32, + pub mDelay: f32, + pub mName: root::RefPtr<root::nsAtom>, + pub mDirection: root::mozilla::dom::PlaybackDirection, + pub mFillMode: root::mozilla::dom::FillMode, + pub mPlayState: u8, + pub mIterationCount: f32, + } + #[test] + fn bindgen_test_layout_StyleAnimation() { + assert_eq!( + ::std::mem::size_of::<StyleAnimation>(), + 48usize, + concat!("Size of: ", stringify!(StyleAnimation)) + ); + assert_eq!( + ::std::mem::align_of::<StyleAnimation>(), + 8usize, + concat!("Alignment of ", stringify!(StyleAnimation)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimation>())).mTimingFunction as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimation), + "::", + stringify!(mTimingFunction) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimation>())).mDuration as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimation), + "::", + stringify!(mDuration) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleAnimation>())).mDelay as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimation), + "::", + stringify!(mDelay) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleAnimation>())).mName as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimation), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimation>())).mDirection as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimation), + "::", + stringify!(mDirection) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimation>())).mFillMode as *const _ as usize + }, + 41usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimation), + "::", + stringify!(mFillMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimation>())).mPlayState as *const _ as usize + }, + 42usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimation), + "::", + stringify!(mPlayState) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimation>())).mIterationCount as *const _ as usize + }, + 44usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimation), + "::", + stringify!(mIterationCount) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct StyleBasicShape { + pub mType: root::mozilla::StyleBasicShapeType, + pub mFillRule: root::mozilla::StyleFillRule, + pub mCoordinates: root::nsTArray<root::nsStyleCoord>, + pub mPosition: root::mozilla::Position, + pub mRadius: root::nsStyleCorners, + } + #[test] + fn bindgen_test_layout_StyleBasicShape() { + assert_eq!( + ::std::mem::size_of::<StyleBasicShape>(), + 112usize, + concat!("Size of: ", stringify!(StyleBasicShape)) + ); + assert_eq!( + ::std::mem::align_of::<StyleBasicShape>(), + 8usize, + concat!("Alignment of ", stringify!(StyleBasicShape)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleBasicShape>())).mType as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleBasicShape), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleBasicShape>())).mFillRule as *const _ as usize + }, + 1usize, + concat!( + "Offset of field: ", + stringify!(StyleBasicShape), + "::", + stringify!(mFillRule) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleBasicShape>())).mCoordinates as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(StyleBasicShape), + "::", + stringify!(mCoordinates) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleBasicShape>())).mPosition as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(StyleBasicShape), + "::", + stringify!(mPosition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleBasicShape>())).mRadius as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(StyleBasicShape), + "::", + stringify!(mRadius) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct StyleShapeSource { + pub mBasicShape: root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>, + pub mShapeImage: root::mozilla::UniquePtr<root::nsStyleImage>, + pub mType: root::mozilla::StyleShapeSourceType, + pub mReferenceBox: root::mozilla::StyleGeometryBox, + } + #[test] + fn bindgen_test_layout_StyleShapeSource() { + assert_eq!( + ::std::mem::size_of::<StyleShapeSource>(), + 24usize, + concat!("Size of: ", stringify!(StyleShapeSource)) + ); + assert_eq!( + ::std::mem::align_of::<StyleShapeSource>(), + 8usize, + concat!("Alignment of ", stringify!(StyleShapeSource)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleShapeSource>())).mBasicShape as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleShapeSource), + "::", + stringify!(mBasicShape) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleShapeSource>())).mShapeImage as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(StyleShapeSource), + "::", + stringify!(mShapeImage) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleShapeSource>())).mType as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(StyleShapeSource), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleShapeSource>())).mReferenceBox as *const _ as usize + }, + 17usize, + concat!( + "Offset of field: ", + stringify!(StyleShapeSource), + "::", + stringify!(mReferenceBox) + ) + ); + } + /// <div rustbindgen="true" replaces="mozilla::UniquePtr"> /// /// TODO(Emilio): This is a workaround and we should be able to get rid of this - /// one. - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct UniquePtr < T > { pub mPtr : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub const SERVO_PREF_ENABLED_align_content : bool = false ; pub const SERVO_PREF_ENABLED_align_items : bool = false ; pub const SERVO_PREF_ENABLED_align_self : bool = false ; pub const SERVO_PREF_ENABLED_all : bool = true ; pub const SERVO_PREF_ENABLED_animation : bool = false ; pub const SERVO_PREF_ENABLED_animation_delay : bool = false ; pub const SERVO_PREF_ENABLED_animation_direction : bool = false ; pub const SERVO_PREF_ENABLED_animation_duration : bool = false ; pub const SERVO_PREF_ENABLED_animation_fill_mode : bool = false ; pub const SERVO_PREF_ENABLED_animation_iteration_count : bool = false ; pub const SERVO_PREF_ENABLED_animation_name : bool = false ; pub const SERVO_PREF_ENABLED_animation_play_state : bool = false ; pub const SERVO_PREF_ENABLED_animation_timing_function : bool = false ; pub const SERVO_PREF_ENABLED__moz_appearance : bool = false ; pub const SERVO_PREF_ENABLED_backface_visibility : bool = false ; pub const SERVO_PREF_ENABLED_background : bool = false ; pub const SERVO_PREF_ENABLED_background_attachment : bool = false ; pub const SERVO_PREF_ENABLED_background_blend_mode : bool = true ; pub const SERVO_PREF_ENABLED_background_clip : bool = false ; pub const SERVO_PREF_ENABLED_background_color : bool = false ; pub const SERVO_PREF_ENABLED_background_image : bool = false ; pub const SERVO_PREF_ENABLED_background_origin : bool = false ; pub const SERVO_PREF_ENABLED_background_position : bool = false ; pub const SERVO_PREF_ENABLED_background_position_x : bool = false ; pub const SERVO_PREF_ENABLED_background_position_y : bool = false ; pub const SERVO_PREF_ENABLED_background_repeat : bool = false ; pub const SERVO_PREF_ENABLED_background_size : bool = false ; pub const SERVO_PREF_ENABLED__moz_binding : bool = false ; pub const SERVO_PREF_ENABLED_block_size : bool = false ; pub const SERVO_PREF_ENABLED_border : bool = false ; pub const SERVO_PREF_ENABLED_border_block_end : bool = false ; pub const SERVO_PREF_ENABLED_border_block_end_color : bool = false ; pub const SERVO_PREF_ENABLED_border_block_end_style : bool = false ; pub const SERVO_PREF_ENABLED_border_block_end_width : bool = false ; pub const SERVO_PREF_ENABLED_border_block_start : bool = false ; pub const SERVO_PREF_ENABLED_border_block_start_color : bool = false ; pub const SERVO_PREF_ENABLED_border_block_start_style : bool = false ; pub const SERVO_PREF_ENABLED_border_block_start_width : bool = false ; pub const SERVO_PREF_ENABLED_border_bottom : bool = false ; pub const SERVO_PREF_ENABLED_border_bottom_color : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_bottom_colors : bool = false ; pub const SERVO_PREF_ENABLED_border_bottom_left_radius : bool = false ; pub const SERVO_PREF_ENABLED_border_bottom_right_radius : bool = false ; pub const SERVO_PREF_ENABLED_border_bottom_style : bool = false ; pub const SERVO_PREF_ENABLED_border_bottom_width : bool = false ; pub const SERVO_PREF_ENABLED_border_collapse : bool = false ; pub const SERVO_PREF_ENABLED_border_color : bool = false ; pub const SERVO_PREF_ENABLED_border_image : bool = false ; pub const SERVO_PREF_ENABLED_border_image_outset : bool = false ; pub const SERVO_PREF_ENABLED_border_image_repeat : bool = false ; pub const SERVO_PREF_ENABLED_border_image_slice : bool = false ; pub const SERVO_PREF_ENABLED_border_image_source : bool = false ; pub const SERVO_PREF_ENABLED_border_image_width : bool = false ; pub const SERVO_PREF_ENABLED_border_inline_end : bool = false ; pub const SERVO_PREF_ENABLED_border_inline_end_color : bool = false ; pub const SERVO_PREF_ENABLED_border_inline_end_style : bool = false ; pub const SERVO_PREF_ENABLED_border_inline_end_width : bool = false ; pub const SERVO_PREF_ENABLED_border_inline_start : bool = false ; pub const SERVO_PREF_ENABLED_border_inline_start_color : bool = false ; pub const SERVO_PREF_ENABLED_border_inline_start_style : bool = false ; pub const SERVO_PREF_ENABLED_border_inline_start_width : bool = false ; pub const SERVO_PREF_ENABLED_border_left : bool = false ; pub const SERVO_PREF_ENABLED_border_left_color : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_left_colors : bool = false ; pub const SERVO_PREF_ENABLED_border_left_style : bool = false ; pub const SERVO_PREF_ENABLED_border_left_width : bool = false ; pub const SERVO_PREF_ENABLED_border_radius : bool = false ; pub const SERVO_PREF_ENABLED_border_right : bool = false ; pub const SERVO_PREF_ENABLED_border_right_color : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_right_colors : bool = false ; pub const SERVO_PREF_ENABLED_border_right_style : bool = false ; pub const SERVO_PREF_ENABLED_border_right_width : bool = false ; pub const SERVO_PREF_ENABLED_border_spacing : bool = false ; pub const SERVO_PREF_ENABLED_border_style : bool = false ; pub const SERVO_PREF_ENABLED_border_top : bool = false ; pub const SERVO_PREF_ENABLED_border_top_color : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_top_colors : bool = false ; pub const SERVO_PREF_ENABLED_border_top_left_radius : bool = false ; pub const SERVO_PREF_ENABLED_border_top_right_radius : bool = false ; pub const SERVO_PREF_ENABLED_border_top_style : bool = false ; pub const SERVO_PREF_ENABLED_border_top_width : bool = false ; pub const SERVO_PREF_ENABLED_border_width : bool = false ; pub const SERVO_PREF_ENABLED_bottom : bool = false ; pub const SERVO_PREF_ENABLED__moz_box_align : bool = false ; pub const SERVO_PREF_ENABLED_box_decoration_break : bool = true ; pub const SERVO_PREF_ENABLED__moz_box_direction : bool = false ; pub const SERVO_PREF_ENABLED__moz_box_flex : bool = false ; pub const SERVO_PREF_ENABLED__moz_box_ordinal_group : bool = false ; pub const SERVO_PREF_ENABLED__moz_box_orient : bool = false ; pub const SERVO_PREF_ENABLED__moz_box_pack : bool = false ; pub const SERVO_PREF_ENABLED_box_shadow : bool = false ; pub const SERVO_PREF_ENABLED_box_sizing : bool = false ; pub const SERVO_PREF_ENABLED_caption_side : bool = false ; pub const SERVO_PREF_ENABLED_caret_color : bool = false ; pub const SERVO_PREF_ENABLED_clear : bool = false ; pub const SERVO_PREF_ENABLED_clip : bool = false ; pub const SERVO_PREF_ENABLED_clip_path : bool = false ; pub const SERVO_PREF_ENABLED_clip_rule : bool = false ; pub const SERVO_PREF_ENABLED_color : bool = false ; pub const SERVO_PREF_ENABLED_color_adjust : bool = true ; pub const SERVO_PREF_ENABLED_color_interpolation : bool = false ; pub const SERVO_PREF_ENABLED_color_interpolation_filters : bool = false ; pub const SERVO_PREF_ENABLED_column_count : bool = false ; pub const SERVO_PREF_ENABLED_column_fill : bool = false ; pub const SERVO_PREF_ENABLED_column_gap : bool = false ; pub const SERVO_PREF_ENABLED_column_rule : bool = false ; pub const SERVO_PREF_ENABLED_column_rule_color : bool = false ; pub const SERVO_PREF_ENABLED_column_rule_style : bool = false ; pub const SERVO_PREF_ENABLED_column_rule_width : bool = false ; pub const SERVO_PREF_ENABLED_column_span : bool = true ; pub const SERVO_PREF_ENABLED_column_width : bool = false ; pub const SERVO_PREF_ENABLED_columns : bool = false ; pub const SERVO_PREF_ENABLED_contain : bool = true ; pub const SERVO_PREF_ENABLED_content : bool = false ; pub const SERVO_PREF_ENABLED__moz_context_properties : bool = false ; pub const SERVO_PREF_ENABLED__moz_control_character_visibility : bool = false ; pub const SERVO_PREF_ENABLED_counter_increment : bool = false ; pub const SERVO_PREF_ENABLED_counter_reset : bool = false ; pub const SERVO_PREF_ENABLED_cursor : bool = false ; pub const SERVO_PREF_ENABLED_direction : bool = false ; pub const SERVO_PREF_ENABLED_display : bool = false ; pub const SERVO_PREF_ENABLED_dominant_baseline : bool = false ; pub const SERVO_PREF_ENABLED_empty_cells : bool = false ; pub const SERVO_PREF_ENABLED_fill : bool = false ; pub const SERVO_PREF_ENABLED_fill_opacity : bool = false ; pub const SERVO_PREF_ENABLED_fill_rule : bool = false ; pub const SERVO_PREF_ENABLED_filter : bool = false ; pub const SERVO_PREF_ENABLED_flex : bool = false ; pub const SERVO_PREF_ENABLED_flex_basis : bool = false ; pub const SERVO_PREF_ENABLED_flex_direction : bool = false ; pub const SERVO_PREF_ENABLED_flex_flow : bool = false ; pub const SERVO_PREF_ENABLED_flex_grow : bool = false ; pub const SERVO_PREF_ENABLED_flex_shrink : bool = false ; pub const SERVO_PREF_ENABLED_flex_wrap : bool = false ; pub const SERVO_PREF_ENABLED_float_ : bool = false ; pub const SERVO_PREF_ENABLED__moz_float_edge : bool = false ; pub const SERVO_PREF_ENABLED_flood_color : bool = false ; pub const SERVO_PREF_ENABLED_flood_opacity : bool = false ; pub const SERVO_PREF_ENABLED_font : bool = false ; pub const SERVO_PREF_ENABLED_font_family : bool = false ; pub const SERVO_PREF_ENABLED_font_feature_settings : bool = false ; pub const SERVO_PREF_ENABLED_font_kerning : bool = false ; pub const SERVO_PREF_ENABLED_font_language_override : bool = false ; pub const SERVO_PREF_ENABLED_font_size : bool = false ; pub const SERVO_PREF_ENABLED_font_size_adjust : bool = false ; pub const SERVO_PREF_ENABLED__moz_font_smoothing_background_color : bool = false ; pub const SERVO_PREF_ENABLED_font_stretch : bool = false ; pub const SERVO_PREF_ENABLED_font_style : bool = false ; pub const SERVO_PREF_ENABLED_font_synthesis : bool = false ; pub const SERVO_PREF_ENABLED_font_variant : bool = false ; pub const SERVO_PREF_ENABLED_font_variant_alternates : bool = false ; pub const SERVO_PREF_ENABLED_font_variant_caps : bool = false ; pub const SERVO_PREF_ENABLED_font_variant_east_asian : bool = false ; pub const SERVO_PREF_ENABLED_font_variant_ligatures : bool = false ; pub const SERVO_PREF_ENABLED_font_variant_numeric : bool = false ; pub const SERVO_PREF_ENABLED_font_variant_position : bool = false ; pub const SERVO_PREF_ENABLED_font_variation_settings : bool = true ; pub const SERVO_PREF_ENABLED_font_weight : bool = false ; pub const SERVO_PREF_ENABLED__moz_force_broken_image_icon : bool = false ; pub const SERVO_PREF_ENABLED_grid : bool = false ; pub const SERVO_PREF_ENABLED_grid_area : bool = false ; pub const SERVO_PREF_ENABLED_grid_auto_columns : bool = false ; pub const SERVO_PREF_ENABLED_grid_auto_flow : bool = false ; pub const SERVO_PREF_ENABLED_grid_auto_rows : bool = false ; pub const SERVO_PREF_ENABLED_grid_column : bool = false ; pub const SERVO_PREF_ENABLED_grid_column_end : bool = false ; pub const SERVO_PREF_ENABLED_grid_column_gap : bool = false ; pub const SERVO_PREF_ENABLED_grid_column_start : bool = false ; pub const SERVO_PREF_ENABLED_grid_gap : bool = false ; pub const SERVO_PREF_ENABLED_grid_row : bool = false ; pub const SERVO_PREF_ENABLED_grid_row_end : bool = false ; pub const SERVO_PREF_ENABLED_grid_row_gap : bool = false ; pub const SERVO_PREF_ENABLED_grid_row_start : bool = false ; pub const SERVO_PREF_ENABLED_grid_template : bool = false ; pub const SERVO_PREF_ENABLED_grid_template_areas : bool = false ; pub const SERVO_PREF_ENABLED_grid_template_columns : bool = false ; pub const SERVO_PREF_ENABLED_grid_template_rows : bool = false ; pub const SERVO_PREF_ENABLED_height : bool = false ; pub const SERVO_PREF_ENABLED_hyphens : bool = false ; pub const SERVO_PREF_ENABLED_initial_letter : bool = true ; pub const SERVO_PREF_ENABLED_image_orientation : bool = true ; pub const SERVO_PREF_ENABLED__moz_image_region : bool = false ; pub const SERVO_PREF_ENABLED_image_rendering : bool = false ; pub const SERVO_PREF_ENABLED_ime_mode : bool = false ; pub const SERVO_PREF_ENABLED_inline_size : bool = false ; pub const SERVO_PREF_ENABLED_isolation : bool = true ; pub const SERVO_PREF_ENABLED_justify_content : bool = false ; pub const SERVO_PREF_ENABLED_justify_items : bool = false ; pub const SERVO_PREF_ENABLED_justify_self : bool = false ; pub const SERVO_PREF_ENABLED__x_lang : bool = false ; pub const SERVO_PREF_ENABLED_left : bool = false ; pub const SERVO_PREF_ENABLED_letter_spacing : bool = false ; pub const SERVO_PREF_ENABLED_lighting_color : bool = false ; pub const SERVO_PREF_ENABLED_line_height : bool = false ; pub const SERVO_PREF_ENABLED_list_style : bool = false ; pub const SERVO_PREF_ENABLED_list_style_image : bool = false ; pub const SERVO_PREF_ENABLED_list_style_position : bool = false ; pub const SERVO_PREF_ENABLED_list_style_type : bool = false ; pub const SERVO_PREF_ENABLED_margin : bool = false ; pub const SERVO_PREF_ENABLED_margin_block_end : bool = false ; pub const SERVO_PREF_ENABLED_margin_block_start : bool = false ; pub const SERVO_PREF_ENABLED_margin_bottom : bool = false ; pub const SERVO_PREF_ENABLED_margin_inline_end : bool = false ; pub const SERVO_PREF_ENABLED_margin_inline_start : bool = false ; pub const SERVO_PREF_ENABLED_margin_left : bool = false ; pub const SERVO_PREF_ENABLED_margin_right : bool = false ; pub const SERVO_PREF_ENABLED_margin_top : bool = false ; pub const SERVO_PREF_ENABLED_marker : bool = false ; pub const SERVO_PREF_ENABLED_marker_end : bool = false ; pub const SERVO_PREF_ENABLED_marker_mid : bool = false ; pub const SERVO_PREF_ENABLED_marker_start : bool = false ; pub const SERVO_PREF_ENABLED_mask : bool = false ; pub const SERVO_PREF_ENABLED_mask_clip : bool = false ; pub const SERVO_PREF_ENABLED_mask_composite : bool = false ; pub const SERVO_PREF_ENABLED_mask_image : bool = false ; pub const SERVO_PREF_ENABLED_mask_mode : bool = false ; pub const SERVO_PREF_ENABLED_mask_origin : bool = false ; pub const SERVO_PREF_ENABLED_mask_position : bool = false ; pub const SERVO_PREF_ENABLED_mask_position_x : bool = false ; pub const SERVO_PREF_ENABLED_mask_position_y : bool = false ; pub const SERVO_PREF_ENABLED_mask_repeat : bool = false ; pub const SERVO_PREF_ENABLED_mask_size : bool = false ; pub const SERVO_PREF_ENABLED_mask_type : bool = false ; pub const SERVO_PREF_ENABLED__moz_math_display : bool = false ; pub const SERVO_PREF_ENABLED__moz_math_variant : bool = false ; pub const SERVO_PREF_ENABLED_max_block_size : bool = false ; pub const SERVO_PREF_ENABLED_max_height : bool = false ; pub const SERVO_PREF_ENABLED_max_inline_size : bool = false ; pub const SERVO_PREF_ENABLED_max_width : bool = false ; pub const SERVO_PREF_ENABLED_min_block_size : bool = false ; pub const SERVO_PREF_ENABLED__moz_min_font_size_ratio : bool = false ; pub const SERVO_PREF_ENABLED_min_height : bool = false ; pub const SERVO_PREF_ENABLED_min_inline_size : bool = false ; pub const SERVO_PREF_ENABLED_min_width : bool = false ; pub const SERVO_PREF_ENABLED_mix_blend_mode : bool = true ; pub const SERVO_PREF_ENABLED_object_fit : bool = false ; pub const SERVO_PREF_ENABLED_object_position : bool = false ; pub const SERVO_PREF_ENABLED_offset_block_end : bool = false ; pub const SERVO_PREF_ENABLED_offset_block_start : bool = false ; pub const SERVO_PREF_ENABLED_offset_inline_end : bool = false ; pub const SERVO_PREF_ENABLED_offset_inline_start : bool = false ; pub const SERVO_PREF_ENABLED_opacity : bool = false ; pub const SERVO_PREF_ENABLED_order : bool = false ; pub const SERVO_PREF_ENABLED__moz_orient : bool = false ; pub const SERVO_PREF_ENABLED__moz_osx_font_smoothing : bool = true ; pub const SERVO_PREF_ENABLED_outline : bool = false ; pub const SERVO_PREF_ENABLED_outline_color : bool = false ; pub const SERVO_PREF_ENABLED_outline_offset : bool = false ; pub const SERVO_PREF_ENABLED__moz_outline_radius : bool = false ; pub const SERVO_PREF_ENABLED__moz_outline_radius_bottomleft : bool = false ; pub const SERVO_PREF_ENABLED__moz_outline_radius_bottomright : bool = false ; pub const SERVO_PREF_ENABLED__moz_outline_radius_topleft : bool = false ; pub const SERVO_PREF_ENABLED__moz_outline_radius_topright : bool = false ; pub const SERVO_PREF_ENABLED_outline_style : bool = false ; pub const SERVO_PREF_ENABLED_outline_width : bool = false ; pub const SERVO_PREF_ENABLED_overflow : bool = false ; pub const SERVO_PREF_ENABLED_overflow_clip_box : bool = true ; pub const SERVO_PREF_ENABLED_overflow_clip_box_block : bool = true ; pub const SERVO_PREF_ENABLED_overflow_clip_box_inline : bool = true ; pub const SERVO_PREF_ENABLED_overflow_x : bool = false ; pub const SERVO_PREF_ENABLED_overflow_y : bool = false ; pub const SERVO_PREF_ENABLED_padding : bool = false ; pub const SERVO_PREF_ENABLED_padding_block_end : bool = false ; pub const SERVO_PREF_ENABLED_padding_block_start : bool = false ; pub const SERVO_PREF_ENABLED_padding_bottom : bool = false ; pub const SERVO_PREF_ENABLED_padding_inline_end : bool = false ; pub const SERVO_PREF_ENABLED_padding_inline_start : bool = false ; pub const SERVO_PREF_ENABLED_padding_left : bool = false ; pub const SERVO_PREF_ENABLED_padding_right : bool = false ; pub const SERVO_PREF_ENABLED_padding_top : bool = false ; pub const SERVO_PREF_ENABLED_page_break_after : bool = false ; pub const SERVO_PREF_ENABLED_page_break_before : bool = false ; pub const SERVO_PREF_ENABLED_page_break_inside : bool = false ; pub const SERVO_PREF_ENABLED_paint_order : bool = true ; pub const SERVO_PREF_ENABLED_perspective : bool = false ; pub const SERVO_PREF_ENABLED_perspective_origin : bool = false ; pub const SERVO_PREF_ENABLED_place_content : bool = false ; pub const SERVO_PREF_ENABLED_place_items : bool = false ; pub const SERVO_PREF_ENABLED_place_self : bool = false ; pub const SERVO_PREF_ENABLED_pointer_events : bool = false ; pub const SERVO_PREF_ENABLED_position : bool = false ; pub const SERVO_PREF_ENABLED_quotes : bool = false ; pub const SERVO_PREF_ENABLED_resize : bool = false ; pub const SERVO_PREF_ENABLED_right : bool = false ; pub const SERVO_PREF_ENABLED_ruby_align : bool = false ; pub const SERVO_PREF_ENABLED_ruby_position : bool = false ; pub const SERVO_PREF_ENABLED__moz_script_level : bool = false ; pub const SERVO_PREF_ENABLED__moz_script_min_size : bool = false ; pub const SERVO_PREF_ENABLED__moz_script_size_multiplier : bool = false ; pub const SERVO_PREF_ENABLED_scroll_behavior : bool = true ; pub const SERVO_PREF_ENABLED_overscroll_behavior : bool = true ; pub const SERVO_PREF_ENABLED_overscroll_behavior_x : bool = true ; pub const SERVO_PREF_ENABLED_overscroll_behavior_y : bool = true ; pub const SERVO_PREF_ENABLED_scroll_snap_coordinate : bool = true ; pub const SERVO_PREF_ENABLED_scroll_snap_destination : bool = true ; pub const SERVO_PREF_ENABLED_scroll_snap_points_x : bool = true ; pub const SERVO_PREF_ENABLED_scroll_snap_points_y : bool = true ; pub const SERVO_PREF_ENABLED_scroll_snap_type : bool = true ; pub const SERVO_PREF_ENABLED_scroll_snap_type_x : bool = true ; pub const SERVO_PREF_ENABLED_scroll_snap_type_y : bool = true ; pub const SERVO_PREF_ENABLED_shape_image_threshold : bool = true ; pub const SERVO_PREF_ENABLED_shape_outside : bool = true ; pub const SERVO_PREF_ENABLED_shape_rendering : bool = false ; pub const SERVO_PREF_ENABLED__x_span : bool = false ; pub const SERVO_PREF_ENABLED__moz_stack_sizing : bool = false ; pub const SERVO_PREF_ENABLED_stop_color : bool = false ; pub const SERVO_PREF_ENABLED_stop_opacity : bool = false ; pub const SERVO_PREF_ENABLED_stroke : bool = false ; pub const SERVO_PREF_ENABLED_stroke_dasharray : bool = false ; pub const SERVO_PREF_ENABLED_stroke_dashoffset : bool = false ; pub const SERVO_PREF_ENABLED_stroke_linecap : bool = false ; pub const SERVO_PREF_ENABLED_stroke_linejoin : bool = false ; pub const SERVO_PREF_ENABLED_stroke_miterlimit : bool = false ; pub const SERVO_PREF_ENABLED_stroke_opacity : bool = false ; pub const SERVO_PREF_ENABLED_stroke_width : bool = false ; pub const SERVO_PREF_ENABLED__x_system_font : bool = false ; pub const SERVO_PREF_ENABLED__moz_tab_size : bool = false ; pub const SERVO_PREF_ENABLED_table_layout : bool = false ; pub const SERVO_PREF_ENABLED_text_align : bool = false ; pub const SERVO_PREF_ENABLED_text_align_last : bool = false ; pub const SERVO_PREF_ENABLED_text_anchor : bool = false ; pub const SERVO_PREF_ENABLED_text_combine_upright : bool = true ; pub const SERVO_PREF_ENABLED_text_decoration : bool = false ; pub const SERVO_PREF_ENABLED_text_decoration_color : bool = false ; pub const SERVO_PREF_ENABLED_text_decoration_line : bool = false ; pub const SERVO_PREF_ENABLED_text_decoration_style : bool = false ; pub const SERVO_PREF_ENABLED_text_emphasis : bool = false ; pub const SERVO_PREF_ENABLED_text_emphasis_color : bool = false ; pub const SERVO_PREF_ENABLED_text_emphasis_position : bool = false ; pub const SERVO_PREF_ENABLED_text_emphasis_style : bool = false ; pub const SERVO_PREF_ENABLED__webkit_text_fill_color : bool = true ; pub const SERVO_PREF_ENABLED_text_indent : bool = false ; pub const SERVO_PREF_ENABLED_text_justify : bool = true ; pub const SERVO_PREF_ENABLED_text_orientation : bool = false ; pub const SERVO_PREF_ENABLED_text_overflow : bool = false ; pub const SERVO_PREF_ENABLED_text_rendering : bool = false ; pub const SERVO_PREF_ENABLED_text_shadow : bool = false ; pub const SERVO_PREF_ENABLED__moz_text_size_adjust : bool = false ; pub const SERVO_PREF_ENABLED__webkit_text_stroke : bool = true ; pub const SERVO_PREF_ENABLED__webkit_text_stroke_color : bool = true ; pub const SERVO_PREF_ENABLED__webkit_text_stroke_width : bool = true ; pub const SERVO_PREF_ENABLED_text_transform : bool = false ; pub const SERVO_PREF_ENABLED__x_text_zoom : bool = false ; pub const SERVO_PREF_ENABLED_top : bool = false ; pub const SERVO_PREF_ENABLED__moz_top_layer : bool = false ; pub const SERVO_PREF_ENABLED_touch_action : bool = true ; pub const SERVO_PREF_ENABLED_transform : bool = false ; pub const SERVO_PREF_ENABLED__moz_transform : bool = true ; pub const SERVO_PREF_ENABLED_transform_box : bool = true ; pub const SERVO_PREF_ENABLED_transform_origin : bool = false ; pub const SERVO_PREF_ENABLED_transform_style : bool = false ; pub const SERVO_PREF_ENABLED_transition : bool = false ; pub const SERVO_PREF_ENABLED_transition_delay : bool = false ; pub const SERVO_PREF_ENABLED_transition_duration : bool = false ; pub const SERVO_PREF_ENABLED_transition_property : bool = false ; pub const SERVO_PREF_ENABLED_transition_timing_function : bool = false ; pub const SERVO_PREF_ENABLED_unicode_bidi : bool = false ; pub const SERVO_PREF_ENABLED__moz_user_focus : bool = false ; pub const SERVO_PREF_ENABLED__moz_user_input : bool = false ; pub const SERVO_PREF_ENABLED__moz_user_modify : bool = false ; pub const SERVO_PREF_ENABLED__moz_user_select : bool = false ; pub const SERVO_PREF_ENABLED_vector_effect : bool = false ; pub const SERVO_PREF_ENABLED_vertical_align : bool = false ; pub const SERVO_PREF_ENABLED_visibility : bool = false ; pub const SERVO_PREF_ENABLED_white_space : bool = false ; pub const SERVO_PREF_ENABLED_width : bool = false ; pub const SERVO_PREF_ENABLED_will_change : bool = false ; pub const SERVO_PREF_ENABLED__moz_window_dragging : bool = false ; pub const SERVO_PREF_ENABLED__moz_window_shadow : bool = false ; pub const SERVO_PREF_ENABLED__moz_window_opacity : bool = false ; pub const SERVO_PREF_ENABLED__moz_window_transform : bool = false ; pub const SERVO_PREF_ENABLED__moz_window_transform_origin : bool = false ; pub const SERVO_PREF_ENABLED_word_break : bool = false ; pub const SERVO_PREF_ENABLED_word_spacing : bool = false ; pub const SERVO_PREF_ENABLED_overflow_wrap : bool = false ; pub const SERVO_PREF_ENABLED_writing_mode : bool = false ; pub const SERVO_PREF_ENABLED_z_index : bool = false ; pub const SERVO_PREF_ENABLED_word_wrap : bool = false ; pub const SERVO_PREF_ENABLED__moz_transform_origin : bool = true ; pub const SERVO_PREF_ENABLED__moz_perspective_origin : bool = true ; pub const SERVO_PREF_ENABLED__moz_perspective : bool = true ; pub const SERVO_PREF_ENABLED__moz_transform_style : bool = true ; pub const SERVO_PREF_ENABLED__moz_backface_visibility : bool = true ; pub const SERVO_PREF_ENABLED__moz_border_image : bool = true ; pub const SERVO_PREF_ENABLED__moz_transition : bool = true ; pub const SERVO_PREF_ENABLED__moz_transition_delay : bool = true ; pub const SERVO_PREF_ENABLED__moz_transition_duration : bool = true ; pub const SERVO_PREF_ENABLED__moz_transition_property : bool = true ; pub const SERVO_PREF_ENABLED__moz_transition_timing_function : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation_delay : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation_direction : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation_duration : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation_fill_mode : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation_iteration_count : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation_name : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation_play_state : bool = true ; pub const SERVO_PREF_ENABLED__moz_animation_timing_function : bool = true ; pub const SERVO_PREF_ENABLED__moz_box_sizing : bool = true ; pub const SERVO_PREF_ENABLED__moz_font_feature_settings : bool = true ; pub const SERVO_PREF_ENABLED__moz_font_language_override : bool = true ; pub const SERVO_PREF_ENABLED__moz_padding_end : bool = false ; pub const SERVO_PREF_ENABLED__moz_padding_start : bool = false ; pub const SERVO_PREF_ENABLED__moz_margin_end : bool = false ; pub const SERVO_PREF_ENABLED__moz_margin_start : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_end : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_end_color : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_end_style : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_end_width : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_start : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_start_color : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_start_style : bool = false ; pub const SERVO_PREF_ENABLED__moz_border_start_width : bool = false ; pub const SERVO_PREF_ENABLED__moz_hyphens : bool = false ; pub const SERVO_PREF_ENABLED__moz_column_count : bool = false ; pub const SERVO_PREF_ENABLED__moz_column_fill : bool = false ; pub const SERVO_PREF_ENABLED__moz_column_gap : bool = false ; pub const SERVO_PREF_ENABLED__moz_column_rule : bool = false ; pub const SERVO_PREF_ENABLED__moz_column_rule_color : bool = false ; pub const SERVO_PREF_ENABLED__moz_column_rule_style : bool = false ; pub const SERVO_PREF_ENABLED__moz_column_rule_width : bool = false ; pub const SERVO_PREF_ENABLED__moz_column_span : bool = true ; pub const SERVO_PREF_ENABLED__moz_column_width : bool = false ; pub const SERVO_PREF_ENABLED__moz_columns : bool = false ; pub const SERVO_PREF_ENABLED__webkit_animation : bool = true ; pub const SERVO_PREF_ENABLED__webkit_animation_delay : bool = true ; pub const SERVO_PREF_ENABLED__webkit_animation_direction : bool = true ; pub const SERVO_PREF_ENABLED__webkit_animation_duration : bool = true ; pub const SERVO_PREF_ENABLED__webkit_animation_fill_mode : bool = true ; pub const SERVO_PREF_ENABLED__webkit_animation_iteration_count : bool = true ; pub const SERVO_PREF_ENABLED__webkit_animation_name : bool = true ; pub const SERVO_PREF_ENABLED__webkit_animation_play_state : bool = true ; pub const SERVO_PREF_ENABLED__webkit_animation_timing_function : bool = true ; pub const SERVO_PREF_ENABLED__webkit_filter : bool = true ; pub const SERVO_PREF_ENABLED__webkit_text_size_adjust : bool = true ; pub const SERVO_PREF_ENABLED__webkit_transform : bool = true ; pub const SERVO_PREF_ENABLED__webkit_transform_origin : bool = true ; pub const SERVO_PREF_ENABLED__webkit_transform_style : bool = true ; pub const SERVO_PREF_ENABLED__webkit_backface_visibility : bool = true ; pub const SERVO_PREF_ENABLED__webkit_perspective : bool = true ; pub const SERVO_PREF_ENABLED__webkit_perspective_origin : bool = true ; pub const SERVO_PREF_ENABLED__webkit_transition : bool = true ; pub const SERVO_PREF_ENABLED__webkit_transition_delay : bool = true ; pub const SERVO_PREF_ENABLED__webkit_transition_duration : bool = true ; pub const SERVO_PREF_ENABLED__webkit_transition_property : bool = true ; pub const SERVO_PREF_ENABLED__webkit_transition_timing_function : bool = true ; pub const SERVO_PREF_ENABLED__webkit_border_radius : bool = true ; pub const SERVO_PREF_ENABLED__webkit_border_top_left_radius : bool = true ; pub const SERVO_PREF_ENABLED__webkit_border_top_right_radius : bool = true ; pub const SERVO_PREF_ENABLED__webkit_border_bottom_left_radius : bool = true ; pub const SERVO_PREF_ENABLED__webkit_border_bottom_right_radius : bool = true ; pub const SERVO_PREF_ENABLED__webkit_background_clip : bool = true ; pub const SERVO_PREF_ENABLED__webkit_background_origin : bool = true ; pub const SERVO_PREF_ENABLED__webkit_background_size : bool = true ; pub const SERVO_PREF_ENABLED__webkit_border_image : bool = true ; pub const SERVO_PREF_ENABLED__webkit_box_shadow : bool = true ; pub const SERVO_PREF_ENABLED__webkit_box_sizing : bool = true ; pub const SERVO_PREF_ENABLED__webkit_box_flex : bool = true ; pub const SERVO_PREF_ENABLED__webkit_box_ordinal_group : bool = true ; pub const SERVO_PREF_ENABLED__webkit_box_orient : bool = true ; pub const SERVO_PREF_ENABLED__webkit_box_direction : bool = true ; pub const SERVO_PREF_ENABLED__webkit_box_align : bool = true ; pub const SERVO_PREF_ENABLED__webkit_box_pack : bool = true ; pub const SERVO_PREF_ENABLED__webkit_flex_direction : bool = true ; pub const SERVO_PREF_ENABLED__webkit_flex_wrap : bool = true ; pub const SERVO_PREF_ENABLED__webkit_flex_flow : bool = true ; pub const SERVO_PREF_ENABLED__webkit_order : bool = true ; pub const SERVO_PREF_ENABLED__webkit_flex : bool = true ; pub const SERVO_PREF_ENABLED__webkit_flex_grow : bool = true ; pub const SERVO_PREF_ENABLED__webkit_flex_shrink : bool = true ; pub const SERVO_PREF_ENABLED__webkit_flex_basis : bool = true ; pub const SERVO_PREF_ENABLED__webkit_justify_content : bool = true ; pub const SERVO_PREF_ENABLED__webkit_align_items : bool = true ; pub const SERVO_PREF_ENABLED__webkit_align_self : bool = true ; pub const SERVO_PREF_ENABLED__webkit_align_content : bool = true ; pub const SERVO_PREF_ENABLED__webkit_user_select : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_clip : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_composite : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_image : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_origin : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_position : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_position_x : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_position_y : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_repeat : bool = true ; pub const SERVO_PREF_ENABLED__webkit_mask_size : bool = true ; - /// Utility class to handle animated style values - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StyleAnimationValue { pub _bindgen_opaque_blob : [ u64 ; 2usize ] , } pub const StyleAnimationValue_Unit_eUnit_Null : root :: mozilla :: StyleAnimationValue_Unit = 0 ; pub const StyleAnimationValue_Unit_eUnit_Normal : root :: mozilla :: StyleAnimationValue_Unit = 1 ; pub const StyleAnimationValue_Unit_eUnit_Auto : root :: mozilla :: StyleAnimationValue_Unit = 2 ; pub const StyleAnimationValue_Unit_eUnit_None : root :: mozilla :: StyleAnimationValue_Unit = 3 ; pub const StyleAnimationValue_Unit_eUnit_Enumerated : root :: mozilla :: StyleAnimationValue_Unit = 4 ; pub const StyleAnimationValue_Unit_eUnit_Visibility : root :: mozilla :: StyleAnimationValue_Unit = 5 ; pub const StyleAnimationValue_Unit_eUnit_Integer : root :: mozilla :: StyleAnimationValue_Unit = 6 ; pub const StyleAnimationValue_Unit_eUnit_Coord : root :: mozilla :: StyleAnimationValue_Unit = 7 ; pub const StyleAnimationValue_Unit_eUnit_Percent : root :: mozilla :: StyleAnimationValue_Unit = 8 ; pub const StyleAnimationValue_Unit_eUnit_Float : root :: mozilla :: StyleAnimationValue_Unit = 9 ; pub const StyleAnimationValue_Unit_eUnit_Color : root :: mozilla :: StyleAnimationValue_Unit = 10 ; pub const StyleAnimationValue_Unit_eUnit_CurrentColor : root :: mozilla :: StyleAnimationValue_Unit = 11 ; pub const StyleAnimationValue_Unit_eUnit_ComplexColor : root :: mozilla :: StyleAnimationValue_Unit = 12 ; pub const StyleAnimationValue_Unit_eUnit_Calc : root :: mozilla :: StyleAnimationValue_Unit = 13 ; pub const StyleAnimationValue_Unit_eUnit_ObjectPosition : root :: mozilla :: StyleAnimationValue_Unit = 14 ; pub const StyleAnimationValue_Unit_eUnit_URL : root :: mozilla :: StyleAnimationValue_Unit = 15 ; pub const StyleAnimationValue_Unit_eUnit_DiscreteCSSValue : root :: mozilla :: StyleAnimationValue_Unit = 16 ; pub const StyleAnimationValue_Unit_eUnit_CSSValuePair : root :: mozilla :: StyleAnimationValue_Unit = 17 ; pub const StyleAnimationValue_Unit_eUnit_CSSValueTriplet : root :: mozilla :: StyleAnimationValue_Unit = 18 ; pub const StyleAnimationValue_Unit_eUnit_CSSRect : root :: mozilla :: StyleAnimationValue_Unit = 19 ; pub const StyleAnimationValue_Unit_eUnit_Dasharray : root :: mozilla :: StyleAnimationValue_Unit = 20 ; pub const StyleAnimationValue_Unit_eUnit_Shadow : root :: mozilla :: StyleAnimationValue_Unit = 21 ; pub const StyleAnimationValue_Unit_eUnit_Shape : root :: mozilla :: StyleAnimationValue_Unit = 22 ; pub const StyleAnimationValue_Unit_eUnit_Filter : root :: mozilla :: StyleAnimationValue_Unit = 23 ; pub const StyleAnimationValue_Unit_eUnit_Transform : root :: mozilla :: StyleAnimationValue_Unit = 24 ; pub const StyleAnimationValue_Unit_eUnit_BackgroundPositionCoord : root :: mozilla :: StyleAnimationValue_Unit = 25 ; pub const StyleAnimationValue_Unit_eUnit_CSSValuePairList : root :: mozilla :: StyleAnimationValue_Unit = 26 ; pub const StyleAnimationValue_Unit_eUnit_UnparsedString : root :: mozilla :: StyleAnimationValue_Unit = 27 ; pub type StyleAnimationValue_Unit = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StyleAnimationValue__bindgen_ty_1 { pub mInt : root :: __BindgenUnionField < i32 > , pub mCoord : root :: __BindgenUnionField < root :: nscoord > , pub mFloat : root :: __BindgenUnionField < f32 > , pub mCSSValue : root :: __BindgenUnionField < * mut root :: nsCSSValue > , pub mCSSValuePair : root :: __BindgenUnionField < * mut root :: nsCSSValuePair > , pub mCSSValueTriplet : root :: __BindgenUnionField < * mut root :: nsCSSValueTriplet > , pub mCSSRect : root :: __BindgenUnionField < * mut root :: nsCSSRect > , pub mCSSValueArray : root :: __BindgenUnionField < * mut root :: nsCSSValue_Array > , pub mCSSValueList : root :: __BindgenUnionField < * mut root :: nsCSSValueList > , pub mCSSValueSharedList : root :: __BindgenUnionField < * mut root :: nsCSSValueSharedList > , pub mCSSValuePairList : root :: __BindgenUnionField < * mut root :: nsCSSValuePairList > , pub mString : root :: __BindgenUnionField < * mut root :: nsStringBuffer > , pub mComplexColor : root :: __BindgenUnionField < * mut root :: mozilla :: css :: ComplexColorValue > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_StyleAnimationValue__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleAnimationValue__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleAnimationValue__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mInt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mInt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCoord as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCoord ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mFloat as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mFloat ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCSSValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCSSValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCSSValuePair as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCSSValuePair ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCSSValueTriplet as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCSSValueTriplet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCSSRect as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCSSRect ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCSSValueArray as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCSSValueArray ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCSSValueList as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCSSValueList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCSSValueSharedList as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCSSValueSharedList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mCSSValuePairList as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mCSSValuePairList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mString as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleAnimationValue__bindgen_ty_1 ) ) . mComplexColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( StyleAnimationValue__bindgen_ty_1 ) , "::" , stringify ! ( mComplexColor ) ) ) ; } impl Clone for StyleAnimationValue__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } pub const StyleAnimationValue_IntegerConstructorType_IntegerConstructor : root :: mozilla :: StyleAnimationValue_IntegerConstructorType = 0 ; pub type StyleAnimationValue_IntegerConstructorType = :: std :: os :: raw :: c_uint ; pub const StyleAnimationValue_CoordConstructorType_CoordConstructor : root :: mozilla :: StyleAnimationValue_CoordConstructorType = 0 ; pub type StyleAnimationValue_CoordConstructorType = :: std :: os :: raw :: c_uint ; pub const StyleAnimationValue_PercentConstructorType_PercentConstructor : root :: mozilla :: StyleAnimationValue_PercentConstructorType = 0 ; pub type StyleAnimationValue_PercentConstructorType = :: std :: os :: raw :: c_uint ; pub const StyleAnimationValue_FloatConstructorType_FloatConstructor : root :: mozilla :: StyleAnimationValue_FloatConstructorType = 0 ; pub type StyleAnimationValue_FloatConstructorType = :: std :: os :: raw :: c_uint ; pub const StyleAnimationValue_ColorConstructorType_ColorConstructor : root :: mozilla :: StyleAnimationValue_ColorConstructorType = 0 ; pub type StyleAnimationValue_ColorConstructorType = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_StyleAnimationValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleAnimationValue > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( StyleAnimationValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleAnimationValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleAnimationValue ) ) ) ; } impl Clone for StyleAnimationValue { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct AnimationValue { pub mGecko : root :: mozilla :: StyleAnimationValue , pub mServo : root :: RefPtr < root :: RawServoAnimationValue > , } # [ test ] fn bindgen_test_layout_AnimationValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < AnimationValue > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( AnimationValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < AnimationValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( AnimationValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationValue ) ) . mGecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationValue ) , "::" , stringify ! ( mGecko ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationValue ) ) . mServo as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationValue ) , "::" , stringify ! ( mServo ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct PropertyStyleAnimationValuePair { pub mProperty : root :: nsCSSPropertyID , pub mValue : root :: mozilla :: AnimationValue , } # [ test ] fn bindgen_test_layout_PropertyStyleAnimationValuePair ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PropertyStyleAnimationValuePair > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( PropertyStyleAnimationValuePair ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PropertyStyleAnimationValuePair > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PropertyStyleAnimationValuePair ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PropertyStyleAnimationValuePair ) ) . mProperty as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PropertyStyleAnimationValuePair ) , "::" , stringify ! ( mProperty ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PropertyStyleAnimationValuePair ) ) . mValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PropertyStyleAnimationValuePair ) , "::" , stringify ! ( mValue ) ) ) ; } # [ repr ( C ) ] pub struct StyleSheetInfo__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; - /// Struct for data common to CSSStyleSheetInner and ServoStyleSheet. - # [ repr ( C ) ] pub struct StyleSheetInfo { pub vtable_ : * const StyleSheetInfo__bindgen_vtable , pub mSheetURI : root :: nsCOMPtr , pub mOriginalSheetURI : root :: nsCOMPtr , pub mBaseURI : root :: nsCOMPtr , pub mPrincipal : root :: nsCOMPtr , pub mCORSMode : root :: mozilla :: CORSMode , pub mReferrerPolicy : root :: mozilla :: StyleSheetInfo_ReferrerPolicy , pub mIntegrity : root :: mozilla :: dom :: SRIMetadata , pub mComplete : bool , pub mFirstChild : root :: RefPtr < root :: mozilla :: StyleSheet > , pub mSheets : [ u64 ; 10usize ] , pub mSourceMapURL : ::nsstring::nsStringRepr , pub mSourceMapURLFromComment : ::nsstring::nsStringRepr , pub mSourceURL : ::nsstring::nsStringRepr , } pub use self :: super :: super :: root :: mozilla :: net :: ReferrerPolicy as StyleSheetInfo_ReferrerPolicy ; # [ test ] fn bindgen_test_layout_StyleSheetInfo ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StyleSheetInfo > ( ) , 240usize , concat ! ( "Size of: " , stringify ! ( StyleSheetInfo ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StyleSheetInfo > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( StyleSheetInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mSheetURI as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mSheetURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mOriginalSheetURI as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mOriginalSheetURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mBaseURI as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mBaseURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mPrincipal as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mPrincipal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mCORSMode as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mCORSMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mReferrerPolicy as * const _ as usize } , 44usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mReferrerPolicy ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mIntegrity as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mIntegrity ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mComplete as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mComplete ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mFirstChild as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mFirstChild ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mSheets as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mSheets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mSourceMapURL as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mSourceMapURL ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mSourceMapURLFromComment as * const _ as usize } , 208usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mSourceMapURLFromComment ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . mSourceURL as * const _ as usize } , 224usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mSourceURL ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ServoCSSRuleList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] pub struct ServoStyleSheetInner { pub _base : root :: mozilla :: StyleSheetInfo , pub mContents : root :: RefPtr < root :: RawServoStyleSheetContents > , pub mURLData : root :: RefPtr < root :: mozilla :: URLExtraData > , } # [ test ] fn bindgen_test_layout_ServoStyleSheetInner ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoStyleSheetInner > ( ) , 256usize , concat ! ( "Size of: " , stringify ! ( ServoStyleSheetInner ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoStyleSheetInner > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoStyleSheetInner ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSheetInner ) ) . mContents as * const _ as usize } , 240usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSheetInner ) , "::" , stringify ! ( mContents ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSheetInner ) ) . mURLData as * const _ as usize } , 248usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSheetInner ) , "::" , stringify ! ( mURLData ) ) ) ; } # [ repr ( C ) ] pub struct ServoStyleSheet { pub _base : root :: mozilla :: StyleSheet , pub mRuleList : root :: RefPtr < root :: mozilla :: ServoCSSRuleList > , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ServoStyleSheet_cycleCollection { pub _base : root :: mozilla :: StyleSheet_cycleCollection , } # [ test ] fn bindgen_test_layout_ServoStyleSheet_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoStyleSheet_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( ServoStyleSheet_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoStyleSheet_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoStyleSheet_cycleCollection ) ) ) ; } impl Clone for ServoStyleSheet_cycleCollection { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ServoStyleSheet_COMTypeInfo { pub _address : u8 , } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla15ServoStyleSheet21_cycleCollectorGlobalE" ] - pub static mut ServoStyleSheet__cycleCollectorGlobal : root :: mozilla :: ServoStyleSheet_cycleCollection ; -} # [ test ] fn bindgen_test_layout_ServoStyleSheet ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoStyleSheet > ( ) , 144usize , concat ! ( "Size of: " , stringify ! ( ServoStyleSheet ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoStyleSheet > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoStyleSheet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSheet ) ) . mRuleList as * const _ as usize } , 136usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSheet ) , "::" , stringify ! ( mRuleList ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct URIPrincipalReferrerPolicyAndCORSModeHashKey { pub _base : root :: nsURIHashKey , pub mPrincipal : root :: nsCOMPtr , pub mCORSMode : root :: mozilla :: CORSMode , pub mReferrerPolicy : root :: mozilla :: URIPrincipalReferrerPolicyAndCORSModeHashKey_ReferrerPolicy , } pub type URIPrincipalReferrerPolicyAndCORSModeHashKey_KeyType = * mut root :: mozilla :: URIPrincipalReferrerPolicyAndCORSModeHashKey ; pub type URIPrincipalReferrerPolicyAndCORSModeHashKey_KeyTypePointer = * const root :: mozilla :: URIPrincipalReferrerPolicyAndCORSModeHashKey ; pub use self :: super :: super :: root :: mozilla :: net :: ReferrerPolicy as URIPrincipalReferrerPolicyAndCORSModeHashKey_ReferrerPolicy ; pub const URIPrincipalReferrerPolicyAndCORSModeHashKey_ALLOW_MEMMOVE : root :: mozilla :: URIPrincipalReferrerPolicyAndCORSModeHashKey__bindgen_ty_1 = 1 ; pub type URIPrincipalReferrerPolicyAndCORSModeHashKey__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_URIPrincipalReferrerPolicyAndCORSModeHashKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < URIPrincipalReferrerPolicyAndCORSModeHashKey > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( URIPrincipalReferrerPolicyAndCORSModeHashKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < URIPrincipalReferrerPolicyAndCORSModeHashKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( URIPrincipalReferrerPolicyAndCORSModeHashKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URIPrincipalReferrerPolicyAndCORSModeHashKey ) ) . mPrincipal as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( URIPrincipalReferrerPolicyAndCORSModeHashKey ) , "::" , stringify ! ( mPrincipal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URIPrincipalReferrerPolicyAndCORSModeHashKey ) ) . mCORSMode as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( URIPrincipalReferrerPolicyAndCORSModeHashKey ) , "::" , stringify ! ( mCORSMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const URIPrincipalReferrerPolicyAndCORSModeHashKey ) ) . mReferrerPolicy as * const _ as usize } , 28usize , concat ! ( "Alignment of field: " , stringify ! ( URIPrincipalReferrerPolicyAndCORSModeHashKey ) , "::" , stringify ! ( mReferrerPolicy ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ComputedTimingFunction { pub mType : root :: nsTimingFunction_Type , pub mTimingFunction : root :: nsSMILKeySpline , pub mStepsOrFrames : u32 , } pub const ComputedTimingFunction_BeforeFlag_Unset : root :: mozilla :: ComputedTimingFunction_BeforeFlag = 0 ; pub const ComputedTimingFunction_BeforeFlag_Set : root :: mozilla :: ComputedTimingFunction_BeforeFlag = 1 ; pub type ComputedTimingFunction_BeforeFlag = :: std :: os :: raw :: c_int ; # [ test ] fn bindgen_test_layout_ComputedTimingFunction ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ComputedTimingFunction > ( ) , 136usize , concat ! ( "Size of: " , stringify ! ( ComputedTimingFunction ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ComputedTimingFunction > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ComputedTimingFunction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTimingFunction ) ) . mType as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTimingFunction ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTimingFunction ) ) . mTimingFunction as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTimingFunction ) , "::" , stringify ! ( mTimingFunction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTimingFunction ) ) . mStepsOrFrames as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTimingFunction ) , "::" , stringify ! ( mStepsOrFrames ) ) ) ; } impl Clone for ComputedTimingFunction { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct AnimationPropertySegment { pub mFromKey : f32 , pub mToKey : f32 , pub mFromValue : root :: mozilla :: AnimationValue , pub mToValue : root :: mozilla :: AnimationValue , pub mTimingFunction : [ u64 ; 18usize ] , pub mFromComposite : root :: mozilla :: dom :: CompositeOperation , pub mToComposite : root :: mozilla :: dom :: CompositeOperation , } # [ test ] fn bindgen_test_layout_AnimationPropertySegment ( ) { assert_eq ! ( :: std :: mem :: size_of :: < AnimationPropertySegment > ( ) , 208usize , concat ! ( "Size of: " , stringify ! ( AnimationPropertySegment ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < AnimationPropertySegment > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( AnimationPropertySegment ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationPropertySegment ) ) . mFromKey as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationPropertySegment ) , "::" , stringify ! ( mFromKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationPropertySegment ) ) . mToKey as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationPropertySegment ) , "::" , stringify ! ( mToKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationPropertySegment ) ) . mFromValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationPropertySegment ) , "::" , stringify ! ( mFromValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationPropertySegment ) ) . mToValue as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationPropertySegment ) , "::" , stringify ! ( mToValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationPropertySegment ) ) . mTimingFunction as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationPropertySegment ) , "::" , stringify ! ( mTimingFunction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationPropertySegment ) ) . mFromComposite as * const _ as usize } , 200usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationPropertySegment ) , "::" , stringify ! ( mFromComposite ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const AnimationPropertySegment ) ) . mToComposite as * const _ as usize } , 201usize , concat ! ( "Alignment of field: " , stringify ! ( AnimationPropertySegment ) , "::" , stringify ! ( mToComposite ) ) ) ; } - /// A ValueCalculator class that performs additional checks before performing + /// one. + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct UniquePtr<T> { + pub mPtr: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub const SERVO_PREF_ENABLED_align_content: bool = false; + pub const SERVO_PREF_ENABLED_align_items: bool = false; + pub const SERVO_PREF_ENABLED_align_self: bool = false; + pub const SERVO_PREF_ENABLED_all: bool = true; + pub const SERVO_PREF_ENABLED_animation: bool = false; + pub const SERVO_PREF_ENABLED_animation_delay: bool = false; + pub const SERVO_PREF_ENABLED_animation_direction: bool = false; + pub const SERVO_PREF_ENABLED_animation_duration: bool = false; + pub const SERVO_PREF_ENABLED_animation_fill_mode: bool = false; + pub const SERVO_PREF_ENABLED_animation_iteration_count: bool = false; + pub const SERVO_PREF_ENABLED_animation_name: bool = false; + pub const SERVO_PREF_ENABLED_animation_play_state: bool = false; + pub const SERVO_PREF_ENABLED_animation_timing_function: bool = false; + pub const SERVO_PREF_ENABLED__moz_appearance: bool = false; + pub const SERVO_PREF_ENABLED_backface_visibility: bool = false; + pub const SERVO_PREF_ENABLED_background: bool = false; + pub const SERVO_PREF_ENABLED_background_attachment: bool = false; + pub const SERVO_PREF_ENABLED_background_blend_mode: bool = true; + pub const SERVO_PREF_ENABLED_background_clip: bool = false; + pub const SERVO_PREF_ENABLED_background_color: bool = false; + pub const SERVO_PREF_ENABLED_background_image: bool = false; + pub const SERVO_PREF_ENABLED_background_origin: bool = false; + pub const SERVO_PREF_ENABLED_background_position: bool = false; + pub const SERVO_PREF_ENABLED_background_position_x: bool = false; + pub const SERVO_PREF_ENABLED_background_position_y: bool = false; + pub const SERVO_PREF_ENABLED_background_repeat: bool = false; + pub const SERVO_PREF_ENABLED_background_size: bool = false; + pub const SERVO_PREF_ENABLED__moz_binding: bool = false; + pub const SERVO_PREF_ENABLED_block_size: bool = false; + pub const SERVO_PREF_ENABLED_border: bool = false; + pub const SERVO_PREF_ENABLED_border_block_end: bool = false; + pub const SERVO_PREF_ENABLED_border_block_end_color: bool = false; + pub const SERVO_PREF_ENABLED_border_block_end_style: bool = false; + pub const SERVO_PREF_ENABLED_border_block_end_width: bool = false; + pub const SERVO_PREF_ENABLED_border_block_start: bool = false; + pub const SERVO_PREF_ENABLED_border_block_start_color: bool = false; + pub const SERVO_PREF_ENABLED_border_block_start_style: bool = false; + pub const SERVO_PREF_ENABLED_border_block_start_width: bool = false; + pub const SERVO_PREF_ENABLED_border_bottom: bool = false; + pub const SERVO_PREF_ENABLED_border_bottom_color: bool = false; + pub const SERVO_PREF_ENABLED_border_bottom_left_radius: bool = false; + pub const SERVO_PREF_ENABLED_border_bottom_right_radius: bool = false; + pub const SERVO_PREF_ENABLED_border_bottom_style: bool = false; + pub const SERVO_PREF_ENABLED_border_bottom_width: bool = false; + pub const SERVO_PREF_ENABLED_border_collapse: bool = false; + pub const SERVO_PREF_ENABLED_border_color: bool = false; + pub const SERVO_PREF_ENABLED_border_image: bool = false; + pub const SERVO_PREF_ENABLED_border_image_outset: bool = false; + pub const SERVO_PREF_ENABLED_border_image_repeat: bool = false; + pub const SERVO_PREF_ENABLED_border_image_slice: bool = false; + pub const SERVO_PREF_ENABLED_border_image_source: bool = false; + pub const SERVO_PREF_ENABLED_border_image_width: bool = false; + pub const SERVO_PREF_ENABLED_border_inline_end: bool = false; + pub const SERVO_PREF_ENABLED_border_inline_end_color: bool = false; + pub const SERVO_PREF_ENABLED_border_inline_end_style: bool = false; + pub const SERVO_PREF_ENABLED_border_inline_end_width: bool = false; + pub const SERVO_PREF_ENABLED_border_inline_start: bool = false; + pub const SERVO_PREF_ENABLED_border_inline_start_color: bool = false; + pub const SERVO_PREF_ENABLED_border_inline_start_style: bool = false; + pub const SERVO_PREF_ENABLED_border_inline_start_width: bool = false; + pub const SERVO_PREF_ENABLED_border_left: bool = false; + pub const SERVO_PREF_ENABLED_border_left_color: bool = false; + pub const SERVO_PREF_ENABLED_border_left_style: bool = false; + pub const SERVO_PREF_ENABLED_border_left_width: bool = false; + pub const SERVO_PREF_ENABLED_border_radius: bool = false; + pub const SERVO_PREF_ENABLED_border_right: bool = false; + pub const SERVO_PREF_ENABLED_border_right_color: bool = false; + pub const SERVO_PREF_ENABLED_border_right_style: bool = false; + pub const SERVO_PREF_ENABLED_border_right_width: bool = false; + pub const SERVO_PREF_ENABLED_border_spacing: bool = false; + pub const SERVO_PREF_ENABLED_border_style: bool = false; + pub const SERVO_PREF_ENABLED_border_top: bool = false; + pub const SERVO_PREF_ENABLED_border_top_color: bool = false; + pub const SERVO_PREF_ENABLED_border_top_left_radius: bool = false; + pub const SERVO_PREF_ENABLED_border_top_right_radius: bool = false; + pub const SERVO_PREF_ENABLED_border_top_style: bool = false; + pub const SERVO_PREF_ENABLED_border_top_width: bool = false; + pub const SERVO_PREF_ENABLED_border_width: bool = false; + pub const SERVO_PREF_ENABLED_bottom: bool = false; + pub const SERVO_PREF_ENABLED__moz_box_align: bool = false; + pub const SERVO_PREF_ENABLED_box_decoration_break: bool = true; + pub const SERVO_PREF_ENABLED__moz_box_direction: bool = false; + pub const SERVO_PREF_ENABLED__moz_box_flex: bool = false; + pub const SERVO_PREF_ENABLED__moz_box_ordinal_group: bool = false; + pub const SERVO_PREF_ENABLED__moz_box_orient: bool = false; + pub const SERVO_PREF_ENABLED__moz_box_pack: bool = false; + pub const SERVO_PREF_ENABLED_box_shadow: bool = false; + pub const SERVO_PREF_ENABLED_box_sizing: bool = false; + pub const SERVO_PREF_ENABLED_caption_side: bool = false; + pub const SERVO_PREF_ENABLED_caret_color: bool = false; + pub const SERVO_PREF_ENABLED_clear: bool = false; + pub const SERVO_PREF_ENABLED_clip: bool = false; + pub const SERVO_PREF_ENABLED_clip_path: bool = false; + pub const SERVO_PREF_ENABLED_clip_rule: bool = false; + pub const SERVO_PREF_ENABLED_color: bool = false; + pub const SERVO_PREF_ENABLED_color_adjust: bool = true; + pub const SERVO_PREF_ENABLED_color_interpolation: bool = false; + pub const SERVO_PREF_ENABLED_color_interpolation_filters: bool = false; + pub const SERVO_PREF_ENABLED_column_count: bool = false; + pub const SERVO_PREF_ENABLED_column_fill: bool = false; + pub const SERVO_PREF_ENABLED_column_gap: bool = false; + pub const SERVO_PREF_ENABLED_column_rule: bool = false; + pub const SERVO_PREF_ENABLED_column_rule_color: bool = false; + pub const SERVO_PREF_ENABLED_column_rule_style: bool = false; + pub const SERVO_PREF_ENABLED_column_rule_width: bool = false; + pub const SERVO_PREF_ENABLED_column_span: bool = true; + pub const SERVO_PREF_ENABLED_column_width: bool = false; + pub const SERVO_PREF_ENABLED_columns: bool = false; + pub const SERVO_PREF_ENABLED_contain: bool = true; + pub const SERVO_PREF_ENABLED_content: bool = false; + pub const SERVO_PREF_ENABLED__moz_context_properties: bool = false; + pub const SERVO_PREF_ENABLED__moz_control_character_visibility: bool = false; + pub const SERVO_PREF_ENABLED_counter_increment: bool = false; + pub const SERVO_PREF_ENABLED_counter_reset: bool = false; + pub const SERVO_PREF_ENABLED_cursor: bool = false; + pub const SERVO_PREF_ENABLED_direction: bool = false; + pub const SERVO_PREF_ENABLED_display: bool = false; + pub const SERVO_PREF_ENABLED_dominant_baseline: bool = false; + pub const SERVO_PREF_ENABLED_empty_cells: bool = false; + pub const SERVO_PREF_ENABLED_fill: bool = false; + pub const SERVO_PREF_ENABLED_fill_opacity: bool = false; + pub const SERVO_PREF_ENABLED_fill_rule: bool = false; + pub const SERVO_PREF_ENABLED_filter: bool = false; + pub const SERVO_PREF_ENABLED_flex: bool = false; + pub const SERVO_PREF_ENABLED_flex_basis: bool = false; + pub const SERVO_PREF_ENABLED_flex_direction: bool = false; + pub const SERVO_PREF_ENABLED_flex_flow: bool = false; + pub const SERVO_PREF_ENABLED_flex_grow: bool = false; + pub const SERVO_PREF_ENABLED_flex_shrink: bool = false; + pub const SERVO_PREF_ENABLED_flex_wrap: bool = false; + pub const SERVO_PREF_ENABLED_float_: bool = false; + pub const SERVO_PREF_ENABLED__moz_float_edge: bool = false; + pub const SERVO_PREF_ENABLED_flood_color: bool = false; + pub const SERVO_PREF_ENABLED_flood_opacity: bool = false; + pub const SERVO_PREF_ENABLED_font: bool = false; + pub const SERVO_PREF_ENABLED_font_family: bool = false; + pub const SERVO_PREF_ENABLED_font_feature_settings: bool = false; + pub const SERVO_PREF_ENABLED_font_kerning: bool = false; + pub const SERVO_PREF_ENABLED_font_language_override: bool = false; + pub const SERVO_PREF_ENABLED_font_size: bool = false; + pub const SERVO_PREF_ENABLED_font_size_adjust: bool = false; + pub const SERVO_PREF_ENABLED__moz_font_smoothing_background_color: bool = false; + pub const SERVO_PREF_ENABLED_font_stretch: bool = false; + pub const SERVO_PREF_ENABLED_font_style: bool = false; + pub const SERVO_PREF_ENABLED_font_synthesis: bool = false; + pub const SERVO_PREF_ENABLED_font_variant: bool = false; + pub const SERVO_PREF_ENABLED_font_variant_alternates: bool = false; + pub const SERVO_PREF_ENABLED_font_variant_caps: bool = false; + pub const SERVO_PREF_ENABLED_font_variant_east_asian: bool = false; + pub const SERVO_PREF_ENABLED_font_variant_ligatures: bool = false; + pub const SERVO_PREF_ENABLED_font_variant_numeric: bool = false; + pub const SERVO_PREF_ENABLED_font_variant_position: bool = false; + pub const SERVO_PREF_ENABLED_font_variation_settings: bool = true; + pub const SERVO_PREF_ENABLED_font_weight: bool = false; + pub const SERVO_PREF_ENABLED__moz_force_broken_image_icon: bool = false; + pub const SERVO_PREF_ENABLED_grid: bool = false; + pub const SERVO_PREF_ENABLED_grid_area: bool = false; + pub const SERVO_PREF_ENABLED_grid_auto_columns: bool = false; + pub const SERVO_PREF_ENABLED_grid_auto_flow: bool = false; + pub const SERVO_PREF_ENABLED_grid_auto_rows: bool = false; + pub const SERVO_PREF_ENABLED_grid_column: bool = false; + pub const SERVO_PREF_ENABLED_grid_column_end: bool = false; + pub const SERVO_PREF_ENABLED_grid_column_gap: bool = false; + pub const SERVO_PREF_ENABLED_grid_column_start: bool = false; + pub const SERVO_PREF_ENABLED_grid_gap: bool = false; + pub const SERVO_PREF_ENABLED_grid_row: bool = false; + pub const SERVO_PREF_ENABLED_grid_row_end: bool = false; + pub const SERVO_PREF_ENABLED_grid_row_gap: bool = false; + pub const SERVO_PREF_ENABLED_grid_row_start: bool = false; + pub const SERVO_PREF_ENABLED_grid_template: bool = false; + pub const SERVO_PREF_ENABLED_grid_template_areas: bool = false; + pub const SERVO_PREF_ENABLED_grid_template_columns: bool = false; + pub const SERVO_PREF_ENABLED_grid_template_rows: bool = false; + pub const SERVO_PREF_ENABLED_height: bool = false; + pub const SERVO_PREF_ENABLED_hyphens: bool = false; + pub const SERVO_PREF_ENABLED_initial_letter: bool = true; + pub const SERVO_PREF_ENABLED_image_orientation: bool = true; + pub const SERVO_PREF_ENABLED__moz_image_region: bool = false; + pub const SERVO_PREF_ENABLED_image_rendering: bool = false; + pub const SERVO_PREF_ENABLED_ime_mode: bool = false; + pub const SERVO_PREF_ENABLED_inline_size: bool = false; + pub const SERVO_PREF_ENABLED_isolation: bool = true; + pub const SERVO_PREF_ENABLED_justify_content: bool = false; + pub const SERVO_PREF_ENABLED_justify_items: bool = false; + pub const SERVO_PREF_ENABLED_justify_self: bool = false; + pub const SERVO_PREF_ENABLED__x_lang: bool = false; + pub const SERVO_PREF_ENABLED_left: bool = false; + pub const SERVO_PREF_ENABLED_letter_spacing: bool = false; + pub const SERVO_PREF_ENABLED_lighting_color: bool = false; + pub const SERVO_PREF_ENABLED_line_height: bool = false; + pub const SERVO_PREF_ENABLED_list_style: bool = false; + pub const SERVO_PREF_ENABLED_list_style_image: bool = false; + pub const SERVO_PREF_ENABLED_list_style_position: bool = false; + pub const SERVO_PREF_ENABLED_list_style_type: bool = false; + pub const SERVO_PREF_ENABLED_margin: bool = false; + pub const SERVO_PREF_ENABLED_margin_block_end: bool = false; + pub const SERVO_PREF_ENABLED_margin_block_start: bool = false; + pub const SERVO_PREF_ENABLED_margin_bottom: bool = false; + pub const SERVO_PREF_ENABLED_margin_inline_end: bool = false; + pub const SERVO_PREF_ENABLED_margin_inline_start: bool = false; + pub const SERVO_PREF_ENABLED_margin_left: bool = false; + pub const SERVO_PREF_ENABLED_margin_right: bool = false; + pub const SERVO_PREF_ENABLED_margin_top: bool = false; + pub const SERVO_PREF_ENABLED_marker: bool = false; + pub const SERVO_PREF_ENABLED_marker_end: bool = false; + pub const SERVO_PREF_ENABLED_marker_mid: bool = false; + pub const SERVO_PREF_ENABLED_marker_start: bool = false; + pub const SERVO_PREF_ENABLED_mask: bool = false; + pub const SERVO_PREF_ENABLED_mask_clip: bool = false; + pub const SERVO_PREF_ENABLED_mask_composite: bool = false; + pub const SERVO_PREF_ENABLED_mask_image: bool = false; + pub const SERVO_PREF_ENABLED_mask_mode: bool = false; + pub const SERVO_PREF_ENABLED_mask_origin: bool = false; + pub const SERVO_PREF_ENABLED_mask_position: bool = false; + pub const SERVO_PREF_ENABLED_mask_position_x: bool = false; + pub const SERVO_PREF_ENABLED_mask_position_y: bool = false; + pub const SERVO_PREF_ENABLED_mask_repeat: bool = false; + pub const SERVO_PREF_ENABLED_mask_size: bool = false; + pub const SERVO_PREF_ENABLED_mask_type: bool = false; + pub const SERVO_PREF_ENABLED__moz_math_display: bool = false; + pub const SERVO_PREF_ENABLED__moz_math_variant: bool = false; + pub const SERVO_PREF_ENABLED_max_block_size: bool = false; + pub const SERVO_PREF_ENABLED_max_height: bool = false; + pub const SERVO_PREF_ENABLED_max_inline_size: bool = false; + pub const SERVO_PREF_ENABLED_max_width: bool = false; + pub const SERVO_PREF_ENABLED_min_block_size: bool = false; + pub const SERVO_PREF_ENABLED__moz_min_font_size_ratio: bool = false; + pub const SERVO_PREF_ENABLED_min_height: bool = false; + pub const SERVO_PREF_ENABLED_min_inline_size: bool = false; + pub const SERVO_PREF_ENABLED_min_width: bool = false; + pub const SERVO_PREF_ENABLED_mix_blend_mode: bool = true; + pub const SERVO_PREF_ENABLED_object_fit: bool = false; + pub const SERVO_PREF_ENABLED_object_position: bool = false; + pub const SERVO_PREF_ENABLED_offset_block_end: bool = false; + pub const SERVO_PREF_ENABLED_offset_block_start: bool = false; + pub const SERVO_PREF_ENABLED_offset_inline_end: bool = false; + pub const SERVO_PREF_ENABLED_offset_inline_start: bool = false; + pub const SERVO_PREF_ENABLED_opacity: bool = false; + pub const SERVO_PREF_ENABLED_order: bool = false; + pub const SERVO_PREF_ENABLED__moz_orient: bool = false; + pub const SERVO_PREF_ENABLED__moz_osx_font_smoothing: bool = true; + pub const SERVO_PREF_ENABLED_outline: bool = false; + pub const SERVO_PREF_ENABLED_outline_color: bool = false; + pub const SERVO_PREF_ENABLED_outline_offset: bool = false; + pub const SERVO_PREF_ENABLED__moz_outline_radius: bool = false; + pub const SERVO_PREF_ENABLED__moz_outline_radius_bottomleft: bool = false; + pub const SERVO_PREF_ENABLED__moz_outline_radius_bottomright: bool = false; + pub const SERVO_PREF_ENABLED__moz_outline_radius_topleft: bool = false; + pub const SERVO_PREF_ENABLED__moz_outline_radius_topright: bool = false; + pub const SERVO_PREF_ENABLED_outline_style: bool = false; + pub const SERVO_PREF_ENABLED_outline_width: bool = false; + pub const SERVO_PREF_ENABLED_overflow: bool = false; + pub const SERVO_PREF_ENABLED_overflow_clip_box: bool = true; + pub const SERVO_PREF_ENABLED_overflow_clip_box_block: bool = true; + pub const SERVO_PREF_ENABLED_overflow_clip_box_inline: bool = true; + pub const SERVO_PREF_ENABLED_overflow_x: bool = false; + pub const SERVO_PREF_ENABLED_overflow_y: bool = false; + pub const SERVO_PREF_ENABLED_padding: bool = false; + pub const SERVO_PREF_ENABLED_padding_block_end: bool = false; + pub const SERVO_PREF_ENABLED_padding_block_start: bool = false; + pub const SERVO_PREF_ENABLED_padding_bottom: bool = false; + pub const SERVO_PREF_ENABLED_padding_inline_end: bool = false; + pub const SERVO_PREF_ENABLED_padding_inline_start: bool = false; + pub const SERVO_PREF_ENABLED_padding_left: bool = false; + pub const SERVO_PREF_ENABLED_padding_right: bool = false; + pub const SERVO_PREF_ENABLED_padding_top: bool = false; + pub const SERVO_PREF_ENABLED_page_break_after: bool = false; + pub const SERVO_PREF_ENABLED_page_break_before: bool = false; + pub const SERVO_PREF_ENABLED_page_break_inside: bool = false; + pub const SERVO_PREF_ENABLED_paint_order: bool = true; + pub const SERVO_PREF_ENABLED_perspective: bool = false; + pub const SERVO_PREF_ENABLED_perspective_origin: bool = false; + pub const SERVO_PREF_ENABLED_place_content: bool = false; + pub const SERVO_PREF_ENABLED_place_items: bool = false; + pub const SERVO_PREF_ENABLED_place_self: bool = false; + pub const SERVO_PREF_ENABLED_pointer_events: bool = false; + pub const SERVO_PREF_ENABLED_position: bool = false; + pub const SERVO_PREF_ENABLED_quotes: bool = false; + pub const SERVO_PREF_ENABLED_resize: bool = false; + pub const SERVO_PREF_ENABLED_right: bool = false; + pub const SERVO_PREF_ENABLED_ruby_align: bool = false; + pub const SERVO_PREF_ENABLED_ruby_position: bool = false; + pub const SERVO_PREF_ENABLED__moz_script_level: bool = false; + pub const SERVO_PREF_ENABLED__moz_script_min_size: bool = false; + pub const SERVO_PREF_ENABLED__moz_script_size_multiplier: bool = false; + pub const SERVO_PREF_ENABLED_scroll_behavior: bool = true; + pub const SERVO_PREF_ENABLED_overscroll_behavior: bool = true; + pub const SERVO_PREF_ENABLED_overscroll_behavior_x: bool = true; + pub const SERVO_PREF_ENABLED_overscroll_behavior_y: bool = true; + pub const SERVO_PREF_ENABLED_scroll_snap_coordinate: bool = true; + pub const SERVO_PREF_ENABLED_scroll_snap_destination: bool = true; + pub const SERVO_PREF_ENABLED_scroll_snap_points_x: bool = true; + pub const SERVO_PREF_ENABLED_scroll_snap_points_y: bool = true; + pub const SERVO_PREF_ENABLED_scroll_snap_type: bool = true; + pub const SERVO_PREF_ENABLED_scroll_snap_type_x: bool = true; + pub const SERVO_PREF_ENABLED_scroll_snap_type_y: bool = true; + pub const SERVO_PREF_ENABLED_shape_image_threshold: bool = true; + pub const SERVO_PREF_ENABLED_shape_outside: bool = true; + pub const SERVO_PREF_ENABLED_shape_rendering: bool = false; + pub const SERVO_PREF_ENABLED__x_span: bool = false; + pub const SERVO_PREF_ENABLED__moz_stack_sizing: bool = false; + pub const SERVO_PREF_ENABLED_stop_color: bool = false; + pub const SERVO_PREF_ENABLED_stop_opacity: bool = false; + pub const SERVO_PREF_ENABLED_stroke: bool = false; + pub const SERVO_PREF_ENABLED_stroke_dasharray: bool = false; + pub const SERVO_PREF_ENABLED_stroke_dashoffset: bool = false; + pub const SERVO_PREF_ENABLED_stroke_linecap: bool = false; + pub const SERVO_PREF_ENABLED_stroke_linejoin: bool = false; + pub const SERVO_PREF_ENABLED_stroke_miterlimit: bool = false; + pub const SERVO_PREF_ENABLED_stroke_opacity: bool = false; + pub const SERVO_PREF_ENABLED_stroke_width: bool = false; + pub const SERVO_PREF_ENABLED__x_system_font: bool = false; + pub const SERVO_PREF_ENABLED__moz_tab_size: bool = false; + pub const SERVO_PREF_ENABLED_table_layout: bool = false; + pub const SERVO_PREF_ENABLED_text_align: bool = false; + pub const SERVO_PREF_ENABLED_text_align_last: bool = false; + pub const SERVO_PREF_ENABLED_text_anchor: bool = false; + pub const SERVO_PREF_ENABLED_text_combine_upright: bool = true; + pub const SERVO_PREF_ENABLED_text_decoration: bool = false; + pub const SERVO_PREF_ENABLED_text_decoration_color: bool = false; + pub const SERVO_PREF_ENABLED_text_decoration_line: bool = false; + pub const SERVO_PREF_ENABLED_text_decoration_style: bool = false; + pub const SERVO_PREF_ENABLED_text_emphasis: bool = false; + pub const SERVO_PREF_ENABLED_text_emphasis_color: bool = false; + pub const SERVO_PREF_ENABLED_text_emphasis_position: bool = false; + pub const SERVO_PREF_ENABLED_text_emphasis_style: bool = false; + pub const SERVO_PREF_ENABLED__webkit_text_fill_color: bool = true; + pub const SERVO_PREF_ENABLED_text_indent: bool = false; + pub const SERVO_PREF_ENABLED_text_justify: bool = true; + pub const SERVO_PREF_ENABLED_text_orientation: bool = false; + pub const SERVO_PREF_ENABLED_text_overflow: bool = false; + pub const SERVO_PREF_ENABLED_text_rendering: bool = false; + pub const SERVO_PREF_ENABLED_text_shadow: bool = false; + pub const SERVO_PREF_ENABLED__moz_text_size_adjust: bool = false; + pub const SERVO_PREF_ENABLED__webkit_text_stroke: bool = true; + pub const SERVO_PREF_ENABLED__webkit_text_stroke_color: bool = true; + pub const SERVO_PREF_ENABLED__webkit_text_stroke_width: bool = true; + pub const SERVO_PREF_ENABLED_text_transform: bool = false; + pub const SERVO_PREF_ENABLED__x_text_zoom: bool = false; + pub const SERVO_PREF_ENABLED_top: bool = false; + pub const SERVO_PREF_ENABLED__moz_top_layer: bool = false; + pub const SERVO_PREF_ENABLED_touch_action: bool = true; + pub const SERVO_PREF_ENABLED_transform: bool = false; + pub const SERVO_PREF_ENABLED__moz_transform: bool = true; + pub const SERVO_PREF_ENABLED_transform_box: bool = true; + pub const SERVO_PREF_ENABLED_transform_origin: bool = false; + pub const SERVO_PREF_ENABLED_transform_style: bool = false; + pub const SERVO_PREF_ENABLED_transition: bool = false; + pub const SERVO_PREF_ENABLED_transition_delay: bool = false; + pub const SERVO_PREF_ENABLED_transition_duration: bool = false; + pub const SERVO_PREF_ENABLED_transition_property: bool = false; + pub const SERVO_PREF_ENABLED_transition_timing_function: bool = false; + pub const SERVO_PREF_ENABLED_unicode_bidi: bool = false; + pub const SERVO_PREF_ENABLED__moz_user_focus: bool = false; + pub const SERVO_PREF_ENABLED__moz_user_input: bool = false; + pub const SERVO_PREF_ENABLED__moz_user_modify: bool = false; + pub const SERVO_PREF_ENABLED__moz_user_select: bool = false; + pub const SERVO_PREF_ENABLED_vector_effect: bool = false; + pub const SERVO_PREF_ENABLED_vertical_align: bool = false; + pub const SERVO_PREF_ENABLED_visibility: bool = false; + pub const SERVO_PREF_ENABLED_white_space: bool = false; + pub const SERVO_PREF_ENABLED_width: bool = false; + pub const SERVO_PREF_ENABLED_will_change: bool = false; + pub const SERVO_PREF_ENABLED__moz_window_dragging: bool = false; + pub const SERVO_PREF_ENABLED__moz_window_shadow: bool = false; + pub const SERVO_PREF_ENABLED__moz_window_opacity: bool = false; + pub const SERVO_PREF_ENABLED__moz_window_transform: bool = false; + pub const SERVO_PREF_ENABLED__moz_window_transform_origin: bool = false; + pub const SERVO_PREF_ENABLED_word_break: bool = false; + pub const SERVO_PREF_ENABLED_word_spacing: bool = false; + pub const SERVO_PREF_ENABLED_overflow_wrap: bool = false; + pub const SERVO_PREF_ENABLED_writing_mode: bool = false; + pub const SERVO_PREF_ENABLED_z_index: bool = false; + pub const SERVO_PREF_ENABLED_word_wrap: bool = false; + pub const SERVO_PREF_ENABLED__moz_transform_origin: bool = true; + pub const SERVO_PREF_ENABLED__moz_perspective_origin: bool = true; + pub const SERVO_PREF_ENABLED__moz_perspective: bool = true; + pub const SERVO_PREF_ENABLED__moz_transform_style: bool = true; + pub const SERVO_PREF_ENABLED__moz_backface_visibility: bool = true; + pub const SERVO_PREF_ENABLED__moz_border_image: bool = true; + pub const SERVO_PREF_ENABLED__moz_transition: bool = true; + pub const SERVO_PREF_ENABLED__moz_transition_delay: bool = true; + pub const SERVO_PREF_ENABLED__moz_transition_duration: bool = true; + pub const SERVO_PREF_ENABLED__moz_transition_property: bool = true; + pub const SERVO_PREF_ENABLED__moz_transition_timing_function: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation_delay: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation_direction: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation_duration: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation_fill_mode: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation_iteration_count: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation_name: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation_play_state: bool = true; + pub const SERVO_PREF_ENABLED__moz_animation_timing_function: bool = true; + pub const SERVO_PREF_ENABLED__moz_box_sizing: bool = true; + pub const SERVO_PREF_ENABLED__moz_font_feature_settings: bool = true; + pub const SERVO_PREF_ENABLED__moz_font_language_override: bool = true; + pub const SERVO_PREF_ENABLED__moz_padding_end: bool = false; + pub const SERVO_PREF_ENABLED__moz_padding_start: bool = false; + pub const SERVO_PREF_ENABLED__moz_margin_end: bool = false; + pub const SERVO_PREF_ENABLED__moz_margin_start: bool = false; + pub const SERVO_PREF_ENABLED__moz_border_end: bool = false; + pub const SERVO_PREF_ENABLED__moz_border_end_color: bool = false; + pub const SERVO_PREF_ENABLED__moz_border_end_style: bool = false; + pub const SERVO_PREF_ENABLED__moz_border_end_width: bool = false; + pub const SERVO_PREF_ENABLED__moz_border_start: bool = false; + pub const SERVO_PREF_ENABLED__moz_border_start_color: bool = false; + pub const SERVO_PREF_ENABLED__moz_border_start_style: bool = false; + pub const SERVO_PREF_ENABLED__moz_border_start_width: bool = false; + pub const SERVO_PREF_ENABLED__moz_hyphens: bool = false; + pub const SERVO_PREF_ENABLED__moz_column_count: bool = false; + pub const SERVO_PREF_ENABLED__moz_column_fill: bool = false; + pub const SERVO_PREF_ENABLED__moz_column_gap: bool = false; + pub const SERVO_PREF_ENABLED__moz_column_rule: bool = false; + pub const SERVO_PREF_ENABLED__moz_column_rule_color: bool = false; + pub const SERVO_PREF_ENABLED__moz_column_rule_style: bool = false; + pub const SERVO_PREF_ENABLED__moz_column_rule_width: bool = false; + pub const SERVO_PREF_ENABLED__moz_column_span: bool = true; + pub const SERVO_PREF_ENABLED__moz_column_width: bool = false; + pub const SERVO_PREF_ENABLED__moz_columns: bool = false; + pub const SERVO_PREF_ENABLED__webkit_animation: bool = true; + pub const SERVO_PREF_ENABLED__webkit_animation_delay: bool = true; + pub const SERVO_PREF_ENABLED__webkit_animation_direction: bool = true; + pub const SERVO_PREF_ENABLED__webkit_animation_duration: bool = true; + pub const SERVO_PREF_ENABLED__webkit_animation_fill_mode: bool = true; + pub const SERVO_PREF_ENABLED__webkit_animation_iteration_count: bool = true; + pub const SERVO_PREF_ENABLED__webkit_animation_name: bool = true; + pub const SERVO_PREF_ENABLED__webkit_animation_play_state: bool = true; + pub const SERVO_PREF_ENABLED__webkit_animation_timing_function: bool = true; + pub const SERVO_PREF_ENABLED__webkit_filter: bool = true; + pub const SERVO_PREF_ENABLED__webkit_text_size_adjust: bool = true; + pub const SERVO_PREF_ENABLED__webkit_transform: bool = true; + pub const SERVO_PREF_ENABLED__webkit_transform_origin: bool = true; + pub const SERVO_PREF_ENABLED__webkit_transform_style: bool = true; + pub const SERVO_PREF_ENABLED__webkit_backface_visibility: bool = true; + pub const SERVO_PREF_ENABLED__webkit_perspective: bool = true; + pub const SERVO_PREF_ENABLED__webkit_perspective_origin: bool = true; + pub const SERVO_PREF_ENABLED__webkit_transition: bool = true; + pub const SERVO_PREF_ENABLED__webkit_transition_delay: bool = true; + pub const SERVO_PREF_ENABLED__webkit_transition_duration: bool = true; + pub const SERVO_PREF_ENABLED__webkit_transition_property: bool = true; + pub const SERVO_PREF_ENABLED__webkit_transition_timing_function: bool = true; + pub const SERVO_PREF_ENABLED__webkit_border_radius: bool = true; + pub const SERVO_PREF_ENABLED__webkit_border_top_left_radius: bool = true; + pub const SERVO_PREF_ENABLED__webkit_border_top_right_radius: bool = true; + pub const SERVO_PREF_ENABLED__webkit_border_bottom_left_radius: bool = true; + pub const SERVO_PREF_ENABLED__webkit_border_bottom_right_radius: bool = true; + pub const SERVO_PREF_ENABLED__webkit_background_clip: bool = true; + pub const SERVO_PREF_ENABLED__webkit_background_origin: bool = true; + pub const SERVO_PREF_ENABLED__webkit_background_size: bool = true; + pub const SERVO_PREF_ENABLED__webkit_border_image: bool = true; + pub const SERVO_PREF_ENABLED__webkit_box_shadow: bool = true; + pub const SERVO_PREF_ENABLED__webkit_box_sizing: bool = true; + pub const SERVO_PREF_ENABLED__webkit_box_flex: bool = true; + pub const SERVO_PREF_ENABLED__webkit_box_ordinal_group: bool = true; + pub const SERVO_PREF_ENABLED__webkit_box_orient: bool = true; + pub const SERVO_PREF_ENABLED__webkit_box_direction: bool = true; + pub const SERVO_PREF_ENABLED__webkit_box_align: bool = true; + pub const SERVO_PREF_ENABLED__webkit_box_pack: bool = true; + pub const SERVO_PREF_ENABLED__webkit_flex_direction: bool = true; + pub const SERVO_PREF_ENABLED__webkit_flex_wrap: bool = true; + pub const SERVO_PREF_ENABLED__webkit_flex_flow: bool = true; + pub const SERVO_PREF_ENABLED__webkit_order: bool = true; + pub const SERVO_PREF_ENABLED__webkit_flex: bool = true; + pub const SERVO_PREF_ENABLED__webkit_flex_grow: bool = true; + pub const SERVO_PREF_ENABLED__webkit_flex_shrink: bool = true; + pub const SERVO_PREF_ENABLED__webkit_flex_basis: bool = true; + pub const SERVO_PREF_ENABLED__webkit_justify_content: bool = true; + pub const SERVO_PREF_ENABLED__webkit_align_items: bool = true; + pub const SERVO_PREF_ENABLED__webkit_align_self: bool = true; + pub const SERVO_PREF_ENABLED__webkit_align_content: bool = true; + pub const SERVO_PREF_ENABLED__webkit_user_select: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_clip: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_composite: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_image: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_origin: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_position: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_position_x: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_position_y: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_repeat: bool = true; + pub const SERVO_PREF_ENABLED__webkit_mask_size: bool = true; + /// Utility class to handle animated style values + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StyleAnimationValue { + pub _bindgen_opaque_blob: [u64; 2usize], + } + pub const StyleAnimationValue_Unit_eUnit_Null: root::mozilla::StyleAnimationValue_Unit = 0; + pub const StyleAnimationValue_Unit_eUnit_Normal: root::mozilla::StyleAnimationValue_Unit = + 1; + pub const StyleAnimationValue_Unit_eUnit_Auto: root::mozilla::StyleAnimationValue_Unit = 2; + pub const StyleAnimationValue_Unit_eUnit_None: root::mozilla::StyleAnimationValue_Unit = 3; + pub const StyleAnimationValue_Unit_eUnit_Enumerated: + root::mozilla::StyleAnimationValue_Unit = 4; + pub const StyleAnimationValue_Unit_eUnit_Visibility: + root::mozilla::StyleAnimationValue_Unit = 5; + pub const StyleAnimationValue_Unit_eUnit_Integer: root::mozilla::StyleAnimationValue_Unit = + 6; + pub const StyleAnimationValue_Unit_eUnit_Coord: root::mozilla::StyleAnimationValue_Unit = 7; + pub const StyleAnimationValue_Unit_eUnit_Percent: root::mozilla::StyleAnimationValue_Unit = + 8; + pub const StyleAnimationValue_Unit_eUnit_Float: root::mozilla::StyleAnimationValue_Unit = 9; + pub const StyleAnimationValue_Unit_eUnit_Color: root::mozilla::StyleAnimationValue_Unit = + 10; + pub const StyleAnimationValue_Unit_eUnit_CurrentColor: + root::mozilla::StyleAnimationValue_Unit = 11; + pub const StyleAnimationValue_Unit_eUnit_ComplexColor: + root::mozilla::StyleAnimationValue_Unit = 12; + pub const StyleAnimationValue_Unit_eUnit_Calc: root::mozilla::StyleAnimationValue_Unit = 13; + pub const StyleAnimationValue_Unit_eUnit_ObjectPosition: + root::mozilla::StyleAnimationValue_Unit = 14; + pub const StyleAnimationValue_Unit_eUnit_URL: root::mozilla::StyleAnimationValue_Unit = 15; + pub const StyleAnimationValue_Unit_eUnit_DiscreteCSSValue: + root::mozilla::StyleAnimationValue_Unit = 16; + pub const StyleAnimationValue_Unit_eUnit_CSSValuePair: + root::mozilla::StyleAnimationValue_Unit = 17; + pub const StyleAnimationValue_Unit_eUnit_CSSValueTriplet: + root::mozilla::StyleAnimationValue_Unit = 18; + pub const StyleAnimationValue_Unit_eUnit_CSSRect: root::mozilla::StyleAnimationValue_Unit = + 19; + pub const StyleAnimationValue_Unit_eUnit_Dasharray: + root::mozilla::StyleAnimationValue_Unit = 20; + pub const StyleAnimationValue_Unit_eUnit_Shadow: root::mozilla::StyleAnimationValue_Unit = + 21; + pub const StyleAnimationValue_Unit_eUnit_Shape: root::mozilla::StyleAnimationValue_Unit = + 22; + pub const StyleAnimationValue_Unit_eUnit_Filter: root::mozilla::StyleAnimationValue_Unit = + 23; + pub const StyleAnimationValue_Unit_eUnit_Transform: + root::mozilla::StyleAnimationValue_Unit = 24; + pub const StyleAnimationValue_Unit_eUnit_BackgroundPositionCoord: + root::mozilla::StyleAnimationValue_Unit = 25; + pub const StyleAnimationValue_Unit_eUnit_CSSValuePairList: + root::mozilla::StyleAnimationValue_Unit = 26; + pub const StyleAnimationValue_Unit_eUnit_UnparsedString: + root::mozilla::StyleAnimationValue_Unit = 27; + pub type StyleAnimationValue_Unit = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StyleAnimationValue__bindgen_ty_1 { + pub mInt: root::__BindgenUnionField<i32>, + pub mCoord: root::__BindgenUnionField<root::nscoord>, + pub mFloat: root::__BindgenUnionField<f32>, + pub mCSSValue: root::__BindgenUnionField<*mut root::nsCSSValue>, + pub mCSSValuePair: root::__BindgenUnionField<*mut root::nsCSSValuePair>, + pub mCSSValueTriplet: root::__BindgenUnionField<*mut root::nsCSSValueTriplet>, + pub mCSSRect: root::__BindgenUnionField<*mut root::nsCSSRect>, + pub mCSSValueArray: root::__BindgenUnionField<*mut root::nsCSSValue_Array>, + pub mCSSValueList: root::__BindgenUnionField<*mut root::nsCSSValueList>, + pub mCSSValueSharedList: root::__BindgenUnionField<*mut root::nsCSSValueSharedList>, + pub mCSSValuePairList: root::__BindgenUnionField<*mut root::nsCSSValuePairList>, + pub mString: root::__BindgenUnionField<*mut root::nsStringBuffer>, + pub mComplexColor: + root::__BindgenUnionField<*mut root::mozilla::css::ComplexColorValue>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_StyleAnimationValue__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<StyleAnimationValue__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(StyleAnimationValue__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<StyleAnimationValue__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(StyleAnimationValue__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mInt as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mInt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mCoord as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCoord) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mFloat as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mFloat) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mCSSValue + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCSSValue) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mCSSValuePair + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCSSValuePair) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mCSSValueTriplet + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCSSValueTriplet) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mCSSRect + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCSSRect) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mCSSValueArray + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCSSValueArray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mCSSValueList + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCSSValueList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())) + .mCSSValueSharedList as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCSSValueSharedList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mCSSValuePairList + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mCSSValuePairList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mString + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleAnimationValue__bindgen_ty_1>())).mComplexColor + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(StyleAnimationValue__bindgen_ty_1), + "::", + stringify!(mComplexColor) + ) + ); + } + impl Clone for StyleAnimationValue__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + pub const StyleAnimationValue_IntegerConstructorType_IntegerConstructor: + root::mozilla::StyleAnimationValue_IntegerConstructorType = 0; + pub type StyleAnimationValue_IntegerConstructorType = u32; + pub const StyleAnimationValue_CoordConstructorType_CoordConstructor: + root::mozilla::StyleAnimationValue_CoordConstructorType = 0; + pub type StyleAnimationValue_CoordConstructorType = u32; + pub const StyleAnimationValue_PercentConstructorType_PercentConstructor: + root::mozilla::StyleAnimationValue_PercentConstructorType = 0; + pub type StyleAnimationValue_PercentConstructorType = u32; + pub const StyleAnimationValue_FloatConstructorType_FloatConstructor: + root::mozilla::StyleAnimationValue_FloatConstructorType = 0; + pub type StyleAnimationValue_FloatConstructorType = u32; + pub const StyleAnimationValue_ColorConstructorType_ColorConstructor: + root::mozilla::StyleAnimationValue_ColorConstructorType = 0; + pub type StyleAnimationValue_ColorConstructorType = u32; + #[test] + fn bindgen_test_layout_StyleAnimationValue() { + assert_eq!( + ::std::mem::size_of::<StyleAnimationValue>(), + 16usize, + concat!("Size of: ", stringify!(StyleAnimationValue)) + ); + assert_eq!( + ::std::mem::align_of::<StyleAnimationValue>(), + 8usize, + concat!("Alignment of ", stringify!(StyleAnimationValue)) + ); + } + impl Clone for StyleAnimationValue { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct AnimationValue { + pub mGecko: root::mozilla::StyleAnimationValue, + pub mServo: root::RefPtr<root::RawServoAnimationValue>, + } + #[test] + fn bindgen_test_layout_AnimationValue() { + assert_eq!( + ::std::mem::size_of::<AnimationValue>(), + 24usize, + concat!("Size of: ", stringify!(AnimationValue)) + ); + assert_eq!( + ::std::mem::align_of::<AnimationValue>(), + 8usize, + concat!("Alignment of ", stringify!(AnimationValue)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<AnimationValue>())).mGecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(AnimationValue), + "::", + stringify!(mGecko) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<AnimationValue>())).mServo as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(AnimationValue), + "::", + stringify!(mServo) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct PropertyStyleAnimationValuePair { + pub mProperty: root::nsCSSPropertyID, + pub mValue: root::mozilla::AnimationValue, + } + #[test] + fn bindgen_test_layout_PropertyStyleAnimationValuePair() { + assert_eq!( + ::std::mem::size_of::<PropertyStyleAnimationValuePair>(), + 32usize, + concat!("Size of: ", stringify!(PropertyStyleAnimationValuePair)) + ); + assert_eq!( + ::std::mem::align_of::<PropertyStyleAnimationValuePair>(), + 8usize, + concat!("Alignment of ", stringify!(PropertyStyleAnimationValuePair)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PropertyStyleAnimationValuePair>())).mProperty + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PropertyStyleAnimationValuePair), + "::", + stringify!(mProperty) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PropertyStyleAnimationValuePair>())).mValue as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PropertyStyleAnimationValuePair), + "::", + stringify!(mValue) + ) + ); + } + #[repr(C)] + pub struct StyleSheetInfo__bindgen_vtable(::std::os::raw::c_void); + /// Struct for data common to CSSStyleSheetInner and ServoStyleSheet. + #[repr(C)] + pub struct StyleSheetInfo { + pub vtable_: *const StyleSheetInfo__bindgen_vtable, + pub mSheetURI: root::nsCOMPtr, + pub mOriginalSheetURI: root::nsCOMPtr, + pub mBaseURI: root::nsCOMPtr, + pub mPrincipal: root::nsCOMPtr, + pub mCORSMode: root::mozilla::CORSMode, + pub mReferrerPolicy: root::mozilla::StyleSheetInfo_ReferrerPolicy, + pub mIntegrity: root::mozilla::dom::SRIMetadata, + pub mComplete: bool, + pub mFirstChild: root::RefPtr<root::mozilla::StyleSheet>, + pub mSheets: [u64; 10usize], + pub mSourceMapURL: ::nsstring::nsStringRepr, + pub mSourceMapURLFromComment: ::nsstring::nsStringRepr, + pub mSourceURL: ::nsstring::nsStringRepr, + } + pub use self :: super :: super :: root :: mozilla :: net :: ReferrerPolicy as StyleSheetInfo_ReferrerPolicy; + #[test] + fn bindgen_test_layout_StyleSheetInfo() { + assert_eq!( + ::std::mem::size_of::<StyleSheetInfo>(), + 240usize, + concat!("Size of: ", stringify!(StyleSheetInfo)) + ); + assert_eq!( + ::std::mem::align_of::<StyleSheetInfo>(), + 8usize, + concat!("Alignment of ", stringify!(StyleSheetInfo)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mSheetURI as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mSheetURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mOriginalSheetURI as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mOriginalSheetURI) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleSheetInfo>())).mBaseURI as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mBaseURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mPrincipal as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mPrincipal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mCORSMode as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mCORSMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mReferrerPolicy as *const _ as usize + }, + 44usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mReferrerPolicy) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mIntegrity as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mIntegrity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mComplete as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mComplete) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mFirstChild as *const _ as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mFirstChild) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<StyleSheetInfo>())).mSheets as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mSheets) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mSourceMapURL as *const _ as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mSourceMapURL) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mSourceMapURLFromComment as *const _ + as usize + }, + 208usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mSourceMapURLFromComment) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<StyleSheetInfo>())).mSourceURL as *const _ as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(StyleSheetInfo), + "::", + stringify!(mSourceURL) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ServoCSSRuleList { + _unused: [u8; 0], + } + #[repr(C)] + pub struct ServoStyleSheetInner { + pub _base: root::mozilla::StyleSheetInfo, + pub mContents: root::RefPtr<root::RawServoStyleSheetContents>, + pub mURLData: root::RefPtr<root::mozilla::URLExtraData>, + } + #[test] + fn bindgen_test_layout_ServoStyleSheetInner() { + assert_eq!( + ::std::mem::size_of::<ServoStyleSheetInner>(), + 256usize, + concat!("Size of: ", stringify!(ServoStyleSheetInner)) + ); + assert_eq!( + ::std::mem::align_of::<ServoStyleSheetInner>(), + 8usize, + concat!("Alignment of ", stringify!(ServoStyleSheetInner)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSheetInner>())).mContents as *const _ as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSheetInner), + "::", + stringify!(mContents) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSheetInner>())).mURLData as *const _ as usize + }, + 248usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSheetInner), + "::", + stringify!(mURLData) + ) + ); + } + #[repr(C)] + pub struct ServoStyleSheet { + pub _base: root::mozilla::StyleSheet, + pub mRuleList: root::RefPtr<root::mozilla::ServoCSSRuleList>, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ServoStyleSheet_cycleCollection { + pub _base: root::mozilla::StyleSheet_cycleCollection, + } + #[test] + fn bindgen_test_layout_ServoStyleSheet_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<ServoStyleSheet_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(ServoStyleSheet_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<ServoStyleSheet_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(ServoStyleSheet_cycleCollection)) + ); + } + impl Clone for ServoStyleSheet_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ServoStyleSheet_COMTypeInfo { + pub _address: u8, + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla15ServoStyleSheet21_cycleCollectorGlobalE"] + pub static mut ServoStyleSheet__cycleCollectorGlobal: + root::mozilla::ServoStyleSheet_cycleCollection; + } + #[test] + fn bindgen_test_layout_ServoStyleSheet() { + assert_eq!( + ::std::mem::size_of::<ServoStyleSheet>(), + 136usize, + concat!("Size of: ", stringify!(ServoStyleSheet)) + ); + assert_eq!( + ::std::mem::align_of::<ServoStyleSheet>(), + 8usize, + concat!("Alignment of ", stringify!(ServoStyleSheet)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSheet>())).mRuleList as *const _ as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSheet), + "::", + stringify!(mRuleList) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct URIPrincipalReferrerPolicyAndCORSModeHashKey { + pub _base: root::nsURIHashKey, + pub mPrincipal: root::nsCOMPtr, + pub mCORSMode: root::mozilla::CORSMode, + pub mReferrerPolicy: + root::mozilla::URIPrincipalReferrerPolicyAndCORSModeHashKey_ReferrerPolicy, + } + pub type URIPrincipalReferrerPolicyAndCORSModeHashKey_KeyType = + *mut root::mozilla::URIPrincipalReferrerPolicyAndCORSModeHashKey; + pub type URIPrincipalReferrerPolicyAndCORSModeHashKey_KeyTypePointer = + *const root::mozilla::URIPrincipalReferrerPolicyAndCORSModeHashKey; + pub use self :: super :: super :: root :: mozilla :: net :: ReferrerPolicy as URIPrincipalReferrerPolicyAndCORSModeHashKey_ReferrerPolicy; + pub const URIPrincipalReferrerPolicyAndCORSModeHashKey_ALLOW_MEMMOVE: + root::mozilla::URIPrincipalReferrerPolicyAndCORSModeHashKey__bindgen_ty_1 = 1; + pub type URIPrincipalReferrerPolicyAndCORSModeHashKey__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_URIPrincipalReferrerPolicyAndCORSModeHashKey() { + assert_eq!( + ::std::mem::size_of::<URIPrincipalReferrerPolicyAndCORSModeHashKey>(), + 32usize, + concat!( + "Size of: ", + stringify!(URIPrincipalReferrerPolicyAndCORSModeHashKey) + ) + ); + assert_eq!( + ::std::mem::align_of::<URIPrincipalReferrerPolicyAndCORSModeHashKey>(), + 8usize, + concat!( + "Alignment of ", + stringify!(URIPrincipalReferrerPolicyAndCORSModeHashKey) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URIPrincipalReferrerPolicyAndCORSModeHashKey>())) + .mPrincipal as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(URIPrincipalReferrerPolicyAndCORSModeHashKey), + "::", + stringify!(mPrincipal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URIPrincipalReferrerPolicyAndCORSModeHashKey>())) + .mCORSMode as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(URIPrincipalReferrerPolicyAndCORSModeHashKey), + "::", + stringify!(mCORSMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<URIPrincipalReferrerPolicyAndCORSModeHashKey>())) + .mReferrerPolicy as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(URIPrincipalReferrerPolicyAndCORSModeHashKey), + "::", + stringify!(mReferrerPolicy) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ComputedTimingFunction { + pub mType: root::nsTimingFunction_Type, + pub mTimingFunction: root::nsSMILKeySpline, + pub mStepsOrFrames: u32, + } + pub const ComputedTimingFunction_BeforeFlag_Unset: + root::mozilla::ComputedTimingFunction_BeforeFlag = 0; + pub const ComputedTimingFunction_BeforeFlag_Set: + root::mozilla::ComputedTimingFunction_BeforeFlag = 1; + pub type ComputedTimingFunction_BeforeFlag = i32; + #[test] + fn bindgen_test_layout_ComputedTimingFunction() { + assert_eq!( + ::std::mem::size_of::<ComputedTimingFunction>(), + 136usize, + concat!("Size of: ", stringify!(ComputedTimingFunction)) + ); + assert_eq!( + ::std::mem::align_of::<ComputedTimingFunction>(), + 8usize, + concat!("Alignment of ", stringify!(ComputedTimingFunction)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTimingFunction>())).mType as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ComputedTimingFunction), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTimingFunction>())).mTimingFunction as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ComputedTimingFunction), + "::", + stringify!(mTimingFunction) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTimingFunction>())).mStepsOrFrames as *const _ + as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(ComputedTimingFunction), + "::", + stringify!(mStepsOrFrames) + ) + ); + } + impl Clone for ComputedTimingFunction { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct AnimationPropertySegment { + pub mFromKey: f32, + pub mToKey: f32, + pub mFromValue: root::mozilla::AnimationValue, + pub mToValue: root::mozilla::AnimationValue, + pub mTimingFunction: [u64; 18usize], + pub mFromComposite: root::mozilla::dom::CompositeOperation, + pub mToComposite: root::mozilla::dom::CompositeOperation, + } + #[test] + fn bindgen_test_layout_AnimationPropertySegment() { + assert_eq!( + ::std::mem::size_of::<AnimationPropertySegment>(), + 208usize, + concat!("Size of: ", stringify!(AnimationPropertySegment)) + ); + assert_eq!( + ::std::mem::align_of::<AnimationPropertySegment>(), + 8usize, + concat!("Alignment of ", stringify!(AnimationPropertySegment)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnimationPropertySegment>())).mFromKey as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(AnimationPropertySegment), + "::", + stringify!(mFromKey) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnimationPropertySegment>())).mToKey as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(AnimationPropertySegment), + "::", + stringify!(mToKey) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnimationPropertySegment>())).mFromValue as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(AnimationPropertySegment), + "::", + stringify!(mFromValue) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnimationPropertySegment>())).mToValue as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(AnimationPropertySegment), + "::", + stringify!(mToValue) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnimationPropertySegment>())).mTimingFunction as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(AnimationPropertySegment), + "::", + stringify!(mTimingFunction) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnimationPropertySegment>())).mFromComposite as *const _ + as usize + }, + 200usize, + concat!( + "Offset of field: ", + stringify!(AnimationPropertySegment), + "::", + stringify!(mFromComposite) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<AnimationPropertySegment>())).mToComposite as *const _ + as usize + }, + 201usize, + concat!( + "Offset of field: ", + stringify!(AnimationPropertySegment), + "::", + stringify!(mToComposite) + ) + ); + } + /// A ValueCalculator class that performs additional checks before performing /// arithmetic operations such that if either operand is Forever (or the /// negative equivalent) the result remains Forever (or the negative equivalent /// as appropriate). @@ -381,22 +9120,271 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// We currently don't check for that case since we don't expect that to /// happen often except under test conditions in which case the wrapping - /// behavior is probably acceptable. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StickyTimeDurationValueCalculator { pub _address : u8 , } # [ test ] fn bindgen_test_layout_StickyTimeDurationValueCalculator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StickyTimeDurationValueCalculator > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( StickyTimeDurationValueCalculator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StickyTimeDurationValueCalculator > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( StickyTimeDurationValueCalculator ) ) ) ; } impl Clone for StickyTimeDurationValueCalculator { fn clone ( & self ) -> Self { * self } } - /// Specialization of BaseTimeDuration that uses + /// behavior is probably acceptable. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StickyTimeDurationValueCalculator { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_StickyTimeDurationValueCalculator() { + assert_eq!( + ::std::mem::size_of::<StickyTimeDurationValueCalculator>(), + 1usize, + concat!("Size of: ", stringify!(StickyTimeDurationValueCalculator)) + ); + assert_eq!( + ::std::mem::align_of::<StickyTimeDurationValueCalculator>(), + 1usize, + concat!( + "Alignment of ", + stringify!(StickyTimeDurationValueCalculator) + ) + ); + } + impl Clone for StickyTimeDurationValueCalculator { + fn clone(&self) -> Self { + *self + } + } + /// Specialization of BaseTimeDuration that uses /// StickyTimeDurationValueCalculator for arithmetic on the mValue member. /// /// Use this class when you need a time duration that is expected to hold values /// of Forever (or the negative equivalent) *and* when you expect that /// time duration to be used in arithmetic operations (and not just value - /// comparisons). - pub type StickyTimeDuration = root :: mozilla :: BaseTimeDuration ; - /// Stores the results of calculating the timing properties of an animation - /// at a given sample time. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ComputedTiming { pub mActiveDuration : root :: mozilla :: StickyTimeDuration , pub mActiveTime : root :: mozilla :: StickyTimeDuration , pub mEndTime : root :: mozilla :: StickyTimeDuration , pub mProgress : [ u64 ; 2usize ] , pub mCurrentIteration : u64 , pub mIterations : f64 , pub mIterationStart : f64 , pub mDuration : root :: mozilla :: StickyTimeDuration , pub mFill : root :: mozilla :: dom :: FillMode , pub mPhase : root :: mozilla :: ComputedTiming_AnimationPhase , pub mBeforeFlag : root :: mozilla :: ComputedTimingFunction_BeforeFlag , } pub const ComputedTiming_AnimationPhase_Idle : root :: mozilla :: ComputedTiming_AnimationPhase = 0 ; pub const ComputedTiming_AnimationPhase_Before : root :: mozilla :: ComputedTiming_AnimationPhase = 1 ; pub const ComputedTiming_AnimationPhase_Active : root :: mozilla :: ComputedTiming_AnimationPhase = 2 ; pub const ComputedTiming_AnimationPhase_After : root :: mozilla :: ComputedTiming_AnimationPhase = 3 ; pub type ComputedTiming_AnimationPhase = :: std :: os :: raw :: c_int ; # [ test ] fn bindgen_test_layout_ComputedTiming ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ComputedTiming > ( ) , 88usize , concat ! ( "Size of: " , stringify ! ( ComputedTiming ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ComputedTiming > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ComputedTiming ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mActiveDuration as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mActiveDuration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mActiveTime as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mActiveTime ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mEndTime as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mEndTime ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mProgress as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mProgress ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mCurrentIteration as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mCurrentIteration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mIterations as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mIterations ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mIterationStart as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mIterationStart ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mDuration as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mDuration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mFill as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mFill ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mPhase as * const _ as usize } , 76usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mPhase ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ComputedTiming ) ) . mBeforeFlag as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( ComputedTiming ) , "::" , stringify ! ( mBeforeFlag ) ) ) ; } impl Clone for ComputedTiming { fn clone ( & self ) -> Self { * self } } - /// A property-value pair specified on a keyframe. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct PropertyValuePair { pub mProperty : root :: nsCSSPropertyID , pub mValue : root :: nsCSSValue , pub mServoDeclarationBlock : root :: RefPtr < root :: RawServoDeclarationBlock > , } # [ test ] fn bindgen_test_layout_PropertyValuePair ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PropertyValuePair > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( PropertyValuePair ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PropertyValuePair > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PropertyValuePair ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PropertyValuePair ) ) . mProperty as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PropertyValuePair ) , "::" , stringify ! ( mProperty ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PropertyValuePair ) ) . mValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PropertyValuePair ) , "::" , stringify ! ( mValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PropertyValuePair ) ) . mServoDeclarationBlock as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( PropertyValuePair ) , "::" , stringify ! ( mServoDeclarationBlock ) ) ) ; } - /// A single keyframe. + /// comparisons). + pub type StickyTimeDuration = root::mozilla::BaseTimeDuration; + /// Stores the results of calculating the timing properties of an animation + /// at a given sample time. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ComputedTiming { + pub mActiveDuration: root::mozilla::StickyTimeDuration, + pub mActiveTime: root::mozilla::StickyTimeDuration, + pub mEndTime: root::mozilla::StickyTimeDuration, + pub mProgress: [u64; 2usize], + pub mCurrentIteration: u64, + pub mIterations: f64, + pub mIterationStart: f64, + pub mDuration: root::mozilla::StickyTimeDuration, + pub mFill: root::mozilla::dom::FillMode, + pub mPhase: root::mozilla::ComputedTiming_AnimationPhase, + pub mBeforeFlag: root::mozilla::ComputedTimingFunction_BeforeFlag, + } + pub const ComputedTiming_AnimationPhase_Idle: root::mozilla::ComputedTiming_AnimationPhase = + 0; + pub const ComputedTiming_AnimationPhase_Before: + root::mozilla::ComputedTiming_AnimationPhase = 1; + pub const ComputedTiming_AnimationPhase_Active: + root::mozilla::ComputedTiming_AnimationPhase = 2; + pub const ComputedTiming_AnimationPhase_After: + root::mozilla::ComputedTiming_AnimationPhase = 3; + pub type ComputedTiming_AnimationPhase = i32; + #[test] + fn bindgen_test_layout_ComputedTiming() { + assert_eq!( + ::std::mem::size_of::<ComputedTiming>(), + 88usize, + concat!("Size of: ", stringify!(ComputedTiming)) + ); + assert_eq!( + ::std::mem::align_of::<ComputedTiming>(), + 8usize, + concat!("Alignment of ", stringify!(ComputedTiming)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTiming>())).mActiveDuration as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mActiveDuration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTiming>())).mActiveTime as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mActiveTime) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ComputedTiming>())).mEndTime as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mEndTime) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTiming>())).mProgress as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mProgress) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTiming>())).mCurrentIteration as *const _ + as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mCurrentIteration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTiming>())).mIterations as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mIterations) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTiming>())).mIterationStart as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mIterationStart) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTiming>())).mDuration as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mDuration) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ComputedTiming>())).mFill as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mFill) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ComputedTiming>())).mPhase as *const _ as usize }, + 76usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mPhase) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ComputedTiming>())).mBeforeFlag as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(ComputedTiming), + "::", + stringify!(mBeforeFlag) + ) + ); + } + impl Clone for ComputedTiming { + fn clone(&self) -> Self { + *self + } + } + /// A property-value pair specified on a keyframe. + #[repr(C)] + #[derive(Debug)] + pub struct PropertyValuePair { + pub mProperty: root::nsCSSPropertyID, + pub mValue: root::nsCSSValue, + pub mServoDeclarationBlock: root::RefPtr<root::RawServoDeclarationBlock>, + } + #[test] + fn bindgen_test_layout_PropertyValuePair() { + assert_eq!( + ::std::mem::size_of::<PropertyValuePair>(), + 32usize, + concat!("Size of: ", stringify!(PropertyValuePair)) + ); + assert_eq!( + ::std::mem::align_of::<PropertyValuePair>(), + 8usize, + concat!("Alignment of ", stringify!(PropertyValuePair)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PropertyValuePair>())).mProperty as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PropertyValuePair), + "::", + stringify!(mProperty) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PropertyValuePair>())).mValue as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PropertyValuePair), + "::", + stringify!(mValue) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PropertyValuePair>())).mServoDeclarationBlock as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(PropertyValuePair), + "::", + stringify!(mServoDeclarationBlock) + ) + ); + } + /// A single keyframe. /// /// This is the canonical form in which keyframe effects are stored and /// corresponds closely to the type of objects returned via the getKeyframes() @@ -409,90 +9397,3205 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// When the target element or style context changes, however, we rebuild these /// per-property arrays from the original list of keyframes objects. As a result, - /// these objects represent the master definition of the effect's values. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct Keyframe { pub mOffset : [ u64 ; 2usize ] , pub mComputedOffset : f64 , pub mTimingFunction : [ u64 ; 18usize ] , pub mComposite : [ u8 ; 2usize ] , pub mPropertyValues : root :: nsTArray < root :: mozilla :: PropertyValuePair > , } pub const Keyframe_kComputedOffsetNotSet : f64 = -1. ; # [ test ] fn bindgen_test_layout_Keyframe ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Keyframe > ( ) , 184usize , concat ! ( "Size of: " , stringify ! ( Keyframe ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Keyframe > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Keyframe ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Keyframe ) ) . mOffset as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Keyframe ) , "::" , stringify ! ( mOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Keyframe ) ) . mComputedOffset as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( Keyframe ) , "::" , stringify ! ( mComputedOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Keyframe ) ) . mTimingFunction as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( Keyframe ) , "::" , stringify ! ( mTimingFunction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Keyframe ) ) . mComposite as * const _ as usize } , 168usize , concat ! ( "Alignment of field: " , stringify ! ( Keyframe ) , "::" , stringify ! ( mComposite ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Keyframe ) ) . mPropertyValues as * const _ as usize } , 176usize , concat ! ( "Alignment of field: " , stringify ! ( Keyframe ) , "::" , stringify ! ( mPropertyValues ) ) ) ; } - /// A structure representing a single attribute name and value. + /// these objects represent the master definition of the effect's values. + #[repr(C)] + #[derive(Debug)] + pub struct Keyframe { + pub mOffset: [u64; 2usize], + pub mComputedOffset: f64, + pub mTimingFunction: [u64; 18usize], + pub mComposite: [u8; 2usize], + pub mPropertyValues: root::nsTArray<root::mozilla::PropertyValuePair>, + } + pub const Keyframe_kComputedOffsetNotSet: f64 = -1.; + #[test] + fn bindgen_test_layout_Keyframe() { + assert_eq!( + ::std::mem::size_of::<Keyframe>(), + 184usize, + concat!("Size of: ", stringify!(Keyframe)) + ); + assert_eq!( + ::std::mem::align_of::<Keyframe>(), + 8usize, + concat!("Alignment of ", stringify!(Keyframe)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Keyframe>())).mOffset as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Keyframe), + "::", + stringify!(mOffset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Keyframe>())).mComputedOffset as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(Keyframe), + "::", + stringify!(mComputedOffset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Keyframe>())).mTimingFunction as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(Keyframe), + "::", + stringify!(mTimingFunction) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Keyframe>())).mComposite as *const _ as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(Keyframe), + "::", + stringify!(mComposite) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Keyframe>())).mPropertyValues as *const _ as usize + }, + 176usize, + concat!( + "Offset of field: ", + stringify!(Keyframe), + "::", + stringify!(mPropertyValues) + ) + ); + } + /// A structure representing a single attribute name and value. /// - /// This is pretty similar to the private nsAttrAndChildArray::InternalAttr. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ServoAttrSnapshot { pub mName : root :: nsAttrName , pub mValue : root :: nsAttrValue , } # [ test ] fn bindgen_test_layout_ServoAttrSnapshot ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoAttrSnapshot > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( ServoAttrSnapshot ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoAttrSnapshot > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoAttrSnapshot ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoAttrSnapshot ) ) . mName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ServoAttrSnapshot ) , "::" , stringify ! ( mName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoAttrSnapshot ) ) . mValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ServoAttrSnapshot ) , "::" , stringify ! ( mValue ) ) ) ; } # [ repr ( u8 ) ] - /// A bitflags enum class used to determine what data does a ServoElementSnapshot - /// contains. - # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum ServoElementSnapshotFlags { State = 1 , Attributes = 2 , Id = 4 , MaybeClass = 8 , OtherPseudoClassState = 16 , } - /// This class holds all non-tree-structural state of an element that might be + /// This is pretty similar to the private nsAttrAndChildArray::InternalAttr. + #[repr(C)] + #[derive(Debug)] + pub struct ServoAttrSnapshot { + pub mName: root::nsAttrName, + pub mValue: root::nsAttrValue, + } + #[test] + fn bindgen_test_layout_ServoAttrSnapshot() { + assert_eq!( + ::std::mem::size_of::<ServoAttrSnapshot>(), + 16usize, + concat!("Size of: ", stringify!(ServoAttrSnapshot)) + ); + assert_eq!( + ::std::mem::align_of::<ServoAttrSnapshot>(), + 8usize, + concat!("Alignment of ", stringify!(ServoAttrSnapshot)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoAttrSnapshot>())).mName as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ServoAttrSnapshot), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoAttrSnapshot>())).mValue as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ServoAttrSnapshot), + "::", + stringify!(mValue) + ) + ); + } + #[repr(u8)] + /// A bitflags enum class used to determine what data does a ServoElementSnapshot + /// contains. + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum ServoElementSnapshotFlags { + State = 1, + Attributes = 2, + Id = 4, + MaybeClass = 8, + OtherPseudoClassState = 16, + } + /// This class holds all non-tree-structural state of an element that might be /// used for selector matching eventually. /// /// This means the attributes, and the element state, such as :hover, :active, - /// etc... - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ServoElementSnapshot { pub mAttrs : root :: nsTArray < root :: mozilla :: ServoAttrSnapshot > , pub mClass : root :: nsAttrValue , pub mState : root :: mozilla :: ServoElementSnapshot_ServoStateType , pub mContains : root :: mozilla :: ServoElementSnapshot_Flags , pub _bitfield_1 : u8 , pub __bindgen_padding_0 : [ u16 ; 3usize ] , } pub type ServoElementSnapshot_BorrowedAttrInfo = root :: mozilla :: dom :: BorrowedAttrInfo ; pub type ServoElementSnapshot_Element = root :: mozilla :: dom :: Element ; pub type ServoElementSnapshot_ServoStateType = root :: mozilla :: EventStates_ServoType ; pub use self :: super :: super :: root :: mozilla :: ServoElementSnapshotFlags as ServoElementSnapshot_Flags ; # [ test ] fn bindgen_test_layout_ServoElementSnapshot ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoElementSnapshot > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( ServoElementSnapshot ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoElementSnapshot > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoElementSnapshot ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoElementSnapshot ) ) . mAttrs as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ServoElementSnapshot ) , "::" , stringify ! ( mAttrs ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoElementSnapshot ) ) . mClass as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ServoElementSnapshot ) , "::" , stringify ! ( mClass ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoElementSnapshot ) ) . mState as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ServoElementSnapshot ) , "::" , stringify ! ( mState ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoElementSnapshot ) ) . mContains as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ServoElementSnapshot ) , "::" , stringify ! ( mContains ) ) ) ; } impl ServoElementSnapshot { # [ inline ] pub fn mIsHTMLElementInHTMLDocument ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x1 as u8 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsHTMLElementInHTMLDocument ( & mut self , val : bool ) { let mask = 0x1 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mIsInChromeDocument ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x2 as u8 ; let val = ( unit_field_val & mask ) >> 1usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsInChromeDocument ( & mut self , val : bool ) { let mask = 0x2 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 1usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mSupportsLangAttr ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x4 as u8 ; let val = ( unit_field_val & mask ) >> 2usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mSupportsLangAttr ( & mut self , val : bool ) { let mask = 0x4 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 2usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mIsTableBorderNonzero ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x8 as u8 ; let val = ( unit_field_val & mask ) >> 3usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsTableBorderNonzero ( & mut self , val : bool ) { let mask = 0x8 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 3usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mIsMozBrowserFrame ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x10 as u8 ; let val = ( unit_field_val & mask ) >> 4usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsMozBrowserFrame ( & mut self , val : bool ) { let mask = 0x10 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 4usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mClassAttributeChanged ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x20 as u8 ; let val = ( unit_field_val & mask ) >> 5usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mClassAttributeChanged ( & mut self , val : bool ) { let mask = 0x20 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 5usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mIdAttributeChanged ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x40 as u8 ; let val = ( unit_field_val & mask ) >> 6usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIdAttributeChanged ( & mut self , val : bool ) { let mask = 0x40 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 6usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mOtherAttributeChanged ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x80 as u8 ; let val = ( unit_field_val & mask ) >> 7usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mOtherAttributeChanged ( & mut self , val : bool ) { let mask = 0x80 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 7usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mIsHTMLElementInHTMLDocument : bool , mIsInChromeDocument : bool , mSupportsLangAttr : bool , mIsTableBorderNonzero : bool , mIsMozBrowserFrame : bool , mClassAttributeChanged : bool , mIdAttributeChanged : bool , mOtherAttributeChanged : bool ) -> u8 { ( ( ( ( ( ( ( ( 0 | ( ( mIsHTMLElementInHTMLDocument as u8 as u8 ) << 0usize ) & ( 0x1 as u8 ) ) | ( ( mIsInChromeDocument as u8 as u8 ) << 1usize ) & ( 0x2 as u8 ) ) | ( ( mSupportsLangAttr as u8 as u8 ) << 2usize ) & ( 0x4 as u8 ) ) | ( ( mIsTableBorderNonzero as u8 as u8 ) << 3usize ) & ( 0x8 as u8 ) ) | ( ( mIsMozBrowserFrame as u8 as u8 ) << 4usize ) & ( 0x10 as u8 ) ) | ( ( mClassAttributeChanged as u8 as u8 ) << 5usize ) & ( 0x20 as u8 ) ) | ( ( mIdAttributeChanged as u8 as u8 ) << 6usize ) & ( 0x40 as u8 ) ) | ( ( mOtherAttributeChanged as u8 as u8 ) << 7usize ) & ( 0x80 as u8 ) ) } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ServoElementSnapshotTable { pub _base : [ u64 ; 4usize ] , } # [ test ] fn bindgen_test_layout_ServoElementSnapshotTable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoElementSnapshotTable > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( ServoElementSnapshotTable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoElementSnapshotTable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoElementSnapshotTable ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct LookAndFeel { pub _address : u8 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum LookAndFeel_ColorID { eColorID_WindowBackground = 0 , eColorID_WindowForeground = 1 , eColorID_WidgetBackground = 2 , eColorID_WidgetForeground = 3 , eColorID_WidgetSelectBackground = 4 , eColorID_WidgetSelectForeground = 5 , eColorID_Widget3DHighlight = 6 , eColorID_Widget3DShadow = 7 , eColorID_TextBackground = 8 , eColorID_TextForeground = 9 , eColorID_TextSelectBackground = 10 , eColorID_TextSelectForeground = 11 , eColorID_TextSelectForegroundCustom = 12 , eColorID_TextSelectBackgroundDisabled = 13 , eColorID_TextSelectBackgroundAttention = 14 , eColorID_TextHighlightBackground = 15 , eColorID_TextHighlightForeground = 16 , eColorID_IMERawInputBackground = 17 , eColorID_IMERawInputForeground = 18 , eColorID_IMERawInputUnderline = 19 , eColorID_IMESelectedRawTextBackground = 20 , eColorID_IMESelectedRawTextForeground = 21 , eColorID_IMESelectedRawTextUnderline = 22 , eColorID_IMEConvertedTextBackground = 23 , eColorID_IMEConvertedTextForeground = 24 , eColorID_IMEConvertedTextUnderline = 25 , eColorID_IMESelectedConvertedTextBackground = 26 , eColorID_IMESelectedConvertedTextForeground = 27 , eColorID_IMESelectedConvertedTextUnderline = 28 , eColorID_SpellCheckerUnderline = 29 , eColorID_activeborder = 30 , eColorID_activecaption = 31 , eColorID_appworkspace = 32 , eColorID_background = 33 , eColorID_buttonface = 34 , eColorID_buttonhighlight = 35 , eColorID_buttonshadow = 36 , eColorID_buttontext = 37 , eColorID_captiontext = 38 , eColorID_graytext = 39 , eColorID_highlight = 40 , eColorID_highlighttext = 41 , eColorID_inactiveborder = 42 , eColorID_inactivecaption = 43 , eColorID_inactivecaptiontext = 44 , eColorID_infobackground = 45 , eColorID_infotext = 46 , eColorID_menu = 47 , eColorID_menutext = 48 , eColorID_scrollbar = 49 , eColorID_threeddarkshadow = 50 , eColorID_threedface = 51 , eColorID_threedhighlight = 52 , eColorID_threedlightshadow = 53 , eColorID_threedshadow = 54 , eColorID_window = 55 , eColorID_windowframe = 56 , eColorID_windowtext = 57 , eColorID__moz_buttondefault = 58 , eColorID__moz_field = 59 , eColorID__moz_fieldtext = 60 , eColorID__moz_dialog = 61 , eColorID__moz_dialogtext = 62 , eColorID__moz_dragtargetzone = 63 , eColorID__moz_cellhighlight = 64 , eColorID__moz_cellhighlighttext = 65 , eColorID__moz_html_cellhighlight = 66 , eColorID__moz_html_cellhighlighttext = 67 , eColorID__moz_buttonhoverface = 68 , eColorID__moz_buttonhovertext = 69 , eColorID__moz_menuhover = 70 , eColorID__moz_menuhovertext = 71 , eColorID__moz_menubartext = 72 , eColorID__moz_menubarhovertext = 73 , eColorID__moz_eventreerow = 74 , eColorID__moz_oddtreerow = 75 , eColorID__moz_mac_buttonactivetext = 76 , eColorID__moz_mac_chrome_active = 77 , eColorID__moz_mac_chrome_inactive = 78 , eColorID__moz_mac_defaultbuttontext = 79 , eColorID__moz_mac_focusring = 80 , eColorID__moz_mac_menuselect = 81 , eColorID__moz_mac_menushadow = 82 , eColorID__moz_mac_menutextdisable = 83 , eColorID__moz_mac_menutextselect = 84 , eColorID__moz_mac_disabledtoolbartext = 85 , eColorID__moz_mac_secondaryhighlight = 86 , eColorID__moz_mac_vibrancy_light = 87 , eColorID__moz_mac_vibrancy_dark = 88 , eColorID__moz_mac_vibrant_titlebar_light = 89 , eColorID__moz_mac_vibrant_titlebar_dark = 90 , eColorID__moz_mac_menupopup = 91 , eColorID__moz_mac_menuitem = 92 , eColorID__moz_mac_active_menuitem = 93 , eColorID__moz_mac_source_list = 94 , eColorID__moz_mac_source_list_selection = 95 , eColorID__moz_mac_active_source_list_selection = 96 , eColorID__moz_mac_tooltip = 97 , eColorID__moz_win_accentcolor = 98 , eColorID__moz_win_accentcolortext = 99 , eColorID__moz_win_mediatext = 100 , eColorID__moz_win_communicationstext = 101 , eColorID__moz_nativehyperlinktext = 102 , eColorID__moz_comboboxtext = 103 , eColorID__moz_combobox = 104 , eColorID__moz_gtk_info_bar_text = 105 , eColorID_LAST_COLOR = 106 , } pub const LookAndFeel_IntID_eIntID_CaretBlinkTime : root :: mozilla :: LookAndFeel_IntID = 0 ; pub const LookAndFeel_IntID_eIntID_CaretWidth : root :: mozilla :: LookAndFeel_IntID = 1 ; pub const LookAndFeel_IntID_eIntID_ShowCaretDuringSelection : root :: mozilla :: LookAndFeel_IntID = 2 ; pub const LookAndFeel_IntID_eIntID_SelectTextfieldsOnKeyFocus : root :: mozilla :: LookAndFeel_IntID = 3 ; pub const LookAndFeel_IntID_eIntID_SubmenuDelay : root :: mozilla :: LookAndFeel_IntID = 4 ; pub const LookAndFeel_IntID_eIntID_MenusCanOverlapOSBar : root :: mozilla :: LookAndFeel_IntID = 5 ; pub const LookAndFeel_IntID_eIntID_UseOverlayScrollbars : root :: mozilla :: LookAndFeel_IntID = 6 ; pub const LookAndFeel_IntID_eIntID_AllowOverlayScrollbarsOverlap : root :: mozilla :: LookAndFeel_IntID = 7 ; pub const LookAndFeel_IntID_eIntID_ShowHideScrollbars : root :: mozilla :: LookAndFeel_IntID = 8 ; pub const LookAndFeel_IntID_eIntID_SkipNavigatingDisabledMenuItem : root :: mozilla :: LookAndFeel_IntID = 9 ; pub const LookAndFeel_IntID_eIntID_DragThresholdX : root :: mozilla :: LookAndFeel_IntID = 10 ; pub const LookAndFeel_IntID_eIntID_DragThresholdY : root :: mozilla :: LookAndFeel_IntID = 11 ; pub const LookAndFeel_IntID_eIntID_UseAccessibilityTheme : root :: mozilla :: LookAndFeel_IntID = 12 ; pub const LookAndFeel_IntID_eIntID_ScrollArrowStyle : root :: mozilla :: LookAndFeel_IntID = 13 ; pub const LookAndFeel_IntID_eIntID_ScrollSliderStyle : root :: mozilla :: LookAndFeel_IntID = 14 ; pub const LookAndFeel_IntID_eIntID_ScrollButtonLeftMouseButtonAction : root :: mozilla :: LookAndFeel_IntID = 15 ; pub const LookAndFeel_IntID_eIntID_ScrollButtonMiddleMouseButtonAction : root :: mozilla :: LookAndFeel_IntID = 16 ; pub const LookAndFeel_IntID_eIntID_ScrollButtonRightMouseButtonAction : root :: mozilla :: LookAndFeel_IntID = 17 ; pub const LookAndFeel_IntID_eIntID_TreeOpenDelay : root :: mozilla :: LookAndFeel_IntID = 18 ; pub const LookAndFeel_IntID_eIntID_TreeCloseDelay : root :: mozilla :: LookAndFeel_IntID = 19 ; pub const LookAndFeel_IntID_eIntID_TreeLazyScrollDelay : root :: mozilla :: LookAndFeel_IntID = 20 ; pub const LookAndFeel_IntID_eIntID_TreeScrollDelay : root :: mozilla :: LookAndFeel_IntID = 21 ; pub const LookAndFeel_IntID_eIntID_TreeScrollLinesMax : root :: mozilla :: LookAndFeel_IntID = 22 ; pub const LookAndFeel_IntID_eIntID_TabFocusModel : root :: mozilla :: LookAndFeel_IntID = 23 ; pub const LookAndFeel_IntID_eIntID_ChosenMenuItemsShouldBlink : root :: mozilla :: LookAndFeel_IntID = 24 ; pub const LookAndFeel_IntID_eIntID_WindowsAccentColorInTitlebar : root :: mozilla :: LookAndFeel_IntID = 25 ; pub const LookAndFeel_IntID_eIntID_WindowsDefaultTheme : root :: mozilla :: LookAndFeel_IntID = 26 ; pub const LookAndFeel_IntID_eIntID_DWMCompositor : root :: mozilla :: LookAndFeel_IntID = 27 ; pub const LookAndFeel_IntID_eIntID_WindowsClassic : root :: mozilla :: LookAndFeel_IntID = 28 ; pub const LookAndFeel_IntID_eIntID_WindowsGlass : root :: mozilla :: LookAndFeel_IntID = 29 ; pub const LookAndFeel_IntID_eIntID_TouchEnabled : root :: mozilla :: LookAndFeel_IntID = 30 ; pub const LookAndFeel_IntID_eIntID_MacGraphiteTheme : root :: mozilla :: LookAndFeel_IntID = 31 ; pub const LookAndFeel_IntID_eIntID_MacYosemiteTheme : root :: mozilla :: LookAndFeel_IntID = 32 ; pub const LookAndFeel_IntID_eIntID_AlertNotificationOrigin : root :: mozilla :: LookAndFeel_IntID = 33 ; pub const LookAndFeel_IntID_eIntID_ScrollToClick : root :: mozilla :: LookAndFeel_IntID = 34 ; pub const LookAndFeel_IntID_eIntID_IMERawInputUnderlineStyle : root :: mozilla :: LookAndFeel_IntID = 35 ; pub const LookAndFeel_IntID_eIntID_IMESelectedRawTextUnderlineStyle : root :: mozilla :: LookAndFeel_IntID = 36 ; pub const LookAndFeel_IntID_eIntID_IMEConvertedTextUnderlineStyle : root :: mozilla :: LookAndFeel_IntID = 37 ; pub const LookAndFeel_IntID_eIntID_IMESelectedConvertedTextUnderline : root :: mozilla :: LookAndFeel_IntID = 38 ; pub const LookAndFeel_IntID_eIntID_SpellCheckerUnderlineStyle : root :: mozilla :: LookAndFeel_IntID = 39 ; pub const LookAndFeel_IntID_eIntID_MenuBarDrag : root :: mozilla :: LookAndFeel_IntID = 40 ; pub const LookAndFeel_IntID_eIntID_WindowsThemeIdentifier : root :: mozilla :: LookAndFeel_IntID = 41 ; pub const LookAndFeel_IntID_eIntID_OperatingSystemVersionIdentifier : root :: mozilla :: LookAndFeel_IntID = 42 ; pub const LookAndFeel_IntID_eIntID_ScrollbarButtonAutoRepeatBehavior : root :: mozilla :: LookAndFeel_IntID = 43 ; pub const LookAndFeel_IntID_eIntID_TooltipDelay : root :: mozilla :: LookAndFeel_IntID = 44 ; pub const LookAndFeel_IntID_eIntID_SwipeAnimationEnabled : root :: mozilla :: LookAndFeel_IntID = 45 ; pub const LookAndFeel_IntID_eIntID_ScrollbarDisplayOnMouseMove : root :: mozilla :: LookAndFeel_IntID = 46 ; pub const LookAndFeel_IntID_eIntID_ScrollbarFadeBeginDelay : root :: mozilla :: LookAndFeel_IntID = 47 ; pub const LookAndFeel_IntID_eIntID_ScrollbarFadeDuration : root :: mozilla :: LookAndFeel_IntID = 48 ; pub const LookAndFeel_IntID_eIntID_ContextMenuOffsetVertical : root :: mozilla :: LookAndFeel_IntID = 49 ; pub const LookAndFeel_IntID_eIntID_ContextMenuOffsetHorizontal : root :: mozilla :: LookAndFeel_IntID = 50 ; pub const LookAndFeel_IntID_eIntID_GTKCSDAvailable : root :: mozilla :: LookAndFeel_IntID = 51 ; pub const LookAndFeel_IntID_eIntID_GTKCSDMinimizeButton : root :: mozilla :: LookAndFeel_IntID = 52 ; pub const LookAndFeel_IntID_eIntID_GTKCSDMaximizeButton : root :: mozilla :: LookAndFeel_IntID = 53 ; pub const LookAndFeel_IntID_eIntID_GTKCSDCloseButton : root :: mozilla :: LookAndFeel_IntID = 54 ; pub type LookAndFeel_IntID = :: std :: os :: raw :: c_uint ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_Generic : root :: mozilla :: LookAndFeel_WindowsTheme = 0 ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_Classic : root :: mozilla :: LookAndFeel_WindowsTheme = 1 ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_Aero : root :: mozilla :: LookAndFeel_WindowsTheme = 2 ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_LunaBlue : root :: mozilla :: LookAndFeel_WindowsTheme = 3 ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_LunaOlive : root :: mozilla :: LookAndFeel_WindowsTheme = 4 ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_LunaSilver : root :: mozilla :: LookAndFeel_WindowsTheme = 5 ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_Royale : root :: mozilla :: LookAndFeel_WindowsTheme = 6 ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_Zune : root :: mozilla :: LookAndFeel_WindowsTheme = 7 ; pub const LookAndFeel_WindowsTheme_eWindowsTheme_AeroLite : root :: mozilla :: LookAndFeel_WindowsTheme = 8 ; pub type LookAndFeel_WindowsTheme = :: std :: os :: raw :: c_uint ; pub const LookAndFeel_OperatingSystemVersion_eOperatingSystemVersion_Windows7 : root :: mozilla :: LookAndFeel_OperatingSystemVersion = 2 ; pub const LookAndFeel_OperatingSystemVersion_eOperatingSystemVersion_Windows8 : root :: mozilla :: LookAndFeel_OperatingSystemVersion = 3 ; pub const LookAndFeel_OperatingSystemVersion_eOperatingSystemVersion_Windows10 : root :: mozilla :: LookAndFeel_OperatingSystemVersion = 4 ; pub const LookAndFeel_OperatingSystemVersion_eOperatingSystemVersion_Unknown : root :: mozilla :: LookAndFeel_OperatingSystemVersion = 5 ; pub type LookAndFeel_OperatingSystemVersion = :: std :: os :: raw :: c_uint ; pub const LookAndFeel_eScrollArrow_None : root :: mozilla :: LookAndFeel__bindgen_ty_1 = 0 ; pub const LookAndFeel_eScrollArrow_StartBackward : root :: mozilla :: LookAndFeel__bindgen_ty_1 = 4096 ; pub const LookAndFeel_eScrollArrow_StartForward : root :: mozilla :: LookAndFeel__bindgen_ty_1 = 256 ; pub const LookAndFeel_eScrollArrow_EndBackward : root :: mozilla :: LookAndFeel__bindgen_ty_1 = 16 ; pub const LookAndFeel_eScrollArrow_EndForward : root :: mozilla :: LookAndFeel__bindgen_ty_1 = 1 ; pub type LookAndFeel__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; pub const LookAndFeel_eScrollArrowStyle_Single : root :: mozilla :: LookAndFeel__bindgen_ty_2 = 4097 ; pub const LookAndFeel_eScrollArrowStyle_BothAtBottom : root :: mozilla :: LookAndFeel__bindgen_ty_2 = 17 ; pub const LookAndFeel_eScrollArrowStyle_BothAtEachEnd : root :: mozilla :: LookAndFeel__bindgen_ty_2 = 4369 ; pub const LookAndFeel_eScrollArrowStyle_BothAtTop : root :: mozilla :: LookAndFeel__bindgen_ty_2 = 4352 ; pub type LookAndFeel__bindgen_ty_2 = :: std :: os :: raw :: c_uint ; pub const LookAndFeel_eScrollThumbStyle_Normal : root :: mozilla :: LookAndFeel__bindgen_ty_3 = 0 ; pub const LookAndFeel_eScrollThumbStyle_Proportional : root :: mozilla :: LookAndFeel__bindgen_ty_3 = 1 ; pub type LookAndFeel__bindgen_ty_3 = :: std :: os :: raw :: c_uint ; pub const LookAndFeel_FloatID_eFloatID_IMEUnderlineRelativeSize : root :: mozilla :: LookAndFeel_FloatID = 0 ; pub const LookAndFeel_FloatID_eFloatID_SpellCheckerUnderlineRelativeSize : root :: mozilla :: LookAndFeel_FloatID = 1 ; pub const LookAndFeel_FloatID_eFloatID_CaretAspectRatio : root :: mozilla :: LookAndFeel_FloatID = 2 ; pub type LookAndFeel_FloatID = :: std :: os :: raw :: c_uint ; pub const LookAndFeel_FontID_FontID_MINIMUM : root :: mozilla :: LookAndFeel_FontID = LookAndFeel_FontID :: eFont_Caption ; pub const LookAndFeel_FontID_FontID_MAXIMUM : root :: mozilla :: LookAndFeel_FontID = LookAndFeel_FontID :: eFont_Widget ; # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum LookAndFeel_FontID { eFont_Caption = 1 , eFont_Icon = 2 , eFont_Menu = 3 , eFont_MessageBox = 4 , eFont_SmallCaption = 5 , eFont_StatusBar = 6 , eFont_Window = 7 , eFont_Document = 8 , eFont_Workspace = 9 , eFont_Desktop = 10 , eFont_Info = 11 , eFont_Dialog = 12 , eFont_Button = 13 , eFont_PullDownMenu = 14 , eFont_List = 15 , eFont_Field = 16 , eFont_Tooltips = 17 , eFont_Widget = 18 , } # [ test ] fn bindgen_test_layout_LookAndFeel ( ) { assert_eq ! ( :: std :: mem :: size_of :: < LookAndFeel > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( LookAndFeel ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < LookAndFeel > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( LookAndFeel ) ) ) ; } impl Clone for LookAndFeel { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct StylePrefs { pub _address : u8 , } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs19sFontDisplayEnabledE" ] - pub static mut StylePrefs_sFontDisplayEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs19sOpentypeSVGEnabledE" ] - pub static mut StylePrefs_sOpentypeSVGEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs29sWebkitPrefixedAliasesEnabledE" ] - pub static mut StylePrefs_sWebkitPrefixedAliasesEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs30sWebkitDevicePixelRatioEnabledE" ] - pub static mut StylePrefs_sWebkitDevicePixelRatioEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs20sMozGradientsEnabledE" ] - pub static mut StylePrefs_sMozGradientsEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs22sControlCharVisibilityE" ] - pub static mut StylePrefs_sControlCharVisibility : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs28sFramesTimingFunctionEnabledE" ] - pub static mut StylePrefs_sFramesTimingFunctionEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs31sUnprefixedFullscreenApiEnabledE" ] - pub static mut StylePrefs_sUnprefixedFullscreenApiEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs20sVisitedLinksEnabledE" ] - pub static mut StylePrefs_sVisitedLinksEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs28sMozDocumentEnabledInContentE" ] - pub static mut StylePrefs_sMozDocumentEnabledInContent : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs32sGridTemplateSubgridValueEnabledE" ] - pub static mut StylePrefs_sGridTemplateSubgridValueEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN7mozilla10StylePrefs22sEmulateMozBoxWithFlexE" ] - pub static mut StylePrefs_sEmulateMozBoxWithFlex : bool ; -} # [ test ] fn bindgen_test_layout_StylePrefs ( ) { assert_eq ! ( :: std :: mem :: size_of :: < StylePrefs > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( StylePrefs ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < StylePrefs > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( StylePrefs ) ) ) ; } impl Clone for StylePrefs { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct NonOwningAnimationTarget { pub mElement : * mut root :: mozilla :: dom :: Element , pub mPseudoType : root :: mozilla :: CSSPseudoElementType , } # [ test ] fn bindgen_test_layout_NonOwningAnimationTarget ( ) { assert_eq ! ( :: std :: mem :: size_of :: < NonOwningAnimationTarget > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( NonOwningAnimationTarget ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < NonOwningAnimationTarget > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( NonOwningAnimationTarget ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NonOwningAnimationTarget ) ) . mElement as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( NonOwningAnimationTarget ) , "::" , stringify ! ( mElement ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const NonOwningAnimationTarget ) ) . mPseudoType as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( NonOwningAnimationTarget ) , "::" , stringify ! ( mPseudoType ) ) ) ; } impl Clone for NonOwningAnimationTarget { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct PseudoElementHashEntry { pub _base : root :: PLDHashEntryHdr , pub mElement : root :: RefPtr < root :: mozilla :: dom :: Element > , pub mPseudoType : root :: mozilla :: CSSPseudoElementType , } pub type PseudoElementHashEntry_KeyType = root :: mozilla :: NonOwningAnimationTarget ; pub type PseudoElementHashEntry_KeyTypePointer = * const root :: mozilla :: NonOwningAnimationTarget ; pub const PseudoElementHashEntry_ALLOW_MEMMOVE : root :: mozilla :: PseudoElementHashEntry__bindgen_ty_1 = 1 ; pub type PseudoElementHashEntry__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_PseudoElementHashEntry ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PseudoElementHashEntry > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( PseudoElementHashEntry ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PseudoElementHashEntry > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PseudoElementHashEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PseudoElementHashEntry ) ) . mElement as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PseudoElementHashEntry ) , "::" , stringify ! ( mElement ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PseudoElementHashEntry ) ) . mPseudoType as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( PseudoElementHashEntry ) , "::" , stringify ! ( mPseudoType ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct EffectCompositor { pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mPresContext : * mut root :: nsPresContext , pub mElementsToRestyle : [ u64 ; 8usize ] , pub mIsInPreTraverse : bool , pub mRuleProcessors : [ u64 ; 2usize ] , } pub type EffectCompositor_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct EffectCompositor_cycleCollection { pub _base : root :: nsCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_EffectCompositor_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < EffectCompositor_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( EffectCompositor_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < EffectCompositor_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( EffectCompositor_cycleCollection ) ) ) ; } impl Clone for EffectCompositor_cycleCollection { fn clone ( & self ) -> Self { * self } } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum EffectCompositor_CascadeLevel { Animations = 0 , Transitions = 1 , } pub const EffectCompositor_RestyleType_Throttled : root :: mozilla :: EffectCompositor_RestyleType = 0 ; pub const EffectCompositor_RestyleType_Standard : root :: mozilla :: EffectCompositor_RestyleType = 1 ; pub const EffectCompositor_RestyleType_Layer : root :: mozilla :: EffectCompositor_RestyleType = 2 ; pub type EffectCompositor_RestyleType = :: std :: os :: raw :: c_int ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct EffectCompositor_AnimationStyleRuleProcessor { pub _base : root :: nsIStyleRuleProcessor , pub mRefCnt : root :: nsAutoRefCnt , pub mCompositor : * mut root :: mozilla :: EffectCompositor , pub mCascadeLevel : root :: mozilla :: EffectCompositor_CascadeLevel , } pub type EffectCompositor_AnimationStyleRuleProcessor_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_EffectCompositor_AnimationStyleRuleProcessor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < EffectCompositor_AnimationStyleRuleProcessor > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( EffectCompositor_AnimationStyleRuleProcessor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < EffectCompositor_AnimationStyleRuleProcessor > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( EffectCompositor_AnimationStyleRuleProcessor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EffectCompositor_AnimationStyleRuleProcessor ) ) . mRefCnt as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( EffectCompositor_AnimationStyleRuleProcessor ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EffectCompositor_AnimationStyleRuleProcessor ) ) . mCompositor as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( EffectCompositor_AnimationStyleRuleProcessor ) , "::" , stringify ! ( mCompositor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EffectCompositor_AnimationStyleRuleProcessor ) ) . mCascadeLevel as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( EffectCompositor_AnimationStyleRuleProcessor ) , "::" , stringify ! ( mCascadeLevel ) ) ) ; } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla16EffectCompositor21_cycleCollectorGlobalE" ] - pub static mut EffectCompositor__cycleCollectorGlobal : root :: mozilla :: EffectCompositor_cycleCollection ; -} pub const EffectCompositor_kCascadeLevelCount : usize = 2 ; # [ test ] fn bindgen_test_layout_EffectCompositor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < EffectCompositor > ( ) , 104usize , concat ! ( "Size of: " , stringify ! ( EffectCompositor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < EffectCompositor > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( EffectCompositor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EffectCompositor ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( EffectCompositor ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EffectCompositor ) ) . mPresContext as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( EffectCompositor ) , "::" , stringify ! ( mPresContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EffectCompositor ) ) . mElementsToRestyle as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( EffectCompositor ) , "::" , stringify ! ( mElementsToRestyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EffectCompositor ) ) . mIsInPreTraverse as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( EffectCompositor ) , "::" , stringify ! ( mIsInPreTraverse ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EffectCompositor ) ) . mRuleProcessors as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( EffectCompositor ) , "::" , stringify ! ( mRuleProcessors ) ) ) ; } pub type CSSPseudoClassTypeBase = u8 ; # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum CSSPseudoClassType { empty = 0 , mozOnlyWhitespace = 1 , lang = 2 , root = 3 , any = 4 , firstChild = 5 , firstNode = 6 , lastChild = 7 , lastNode = 8 , onlyChild = 9 , firstOfType = 10 , lastOfType = 11 , onlyOfType = 12 , nthChild = 13 , nthLastChild = 14 , nthOfType = 15 , nthLastOfType = 16 , mozIsHTML = 17 , unresolved = 18 , mozNativeAnonymous = 19 , mozUseShadowTreeRoot = 20 , mozLocaleDir = 21 , mozLWTheme = 22 , mozLWThemeBrightText = 23 , mozLWThemeDarkText = 24 , mozWindowInactive = 25 , mozTableBorderNonzero = 26 , mozBrowserFrame = 27 , scope = 28 , negation = 29 , dir = 30 , link = 31 , mozAnyLink = 32 , anyLink = 33 , visited = 34 , active = 35 , checked = 36 , disabled = 37 , enabled = 38 , focus = 39 , focusWithin = 40 , hover = 41 , mozDragOver = 42 , target = 43 , indeterminate = 44 , mozDevtoolsHighlighted = 45 , mozStyleeditorTransitioning = 46 , fullscreen = 47 , mozFullScreen = 48 , mozFocusRing = 49 , mozBroken = 50 , mozLoading = 51 , mozUserDisabled = 52 , mozSuppressed = 53 , mozHandlerClickToPlay = 54 , mozHandlerVulnerableUpdatable = 55 , mozHandlerVulnerableNoUpdate = 56 , mozHandlerDisabled = 57 , mozHandlerBlocked = 58 , mozHandlerCrashed = 59 , mozMathIncrementScriptLevel = 60 , mozHasDirAttr = 61 , mozDirAttrLTR = 62 , mozDirAttrRTL = 63 , mozDirAttrLikeAuto = 64 , mozAutofill = 65 , mozAutofillPreview = 66 , required = 67 , optional = 68 , valid = 69 , invalid = 70 , inRange = 71 , outOfRange = 72 , defaultPseudo = 73 , placeholderShown = 74 , mozReadOnly = 75 , mozReadWrite = 76 , mozSubmitInvalid = 77 , mozUIInvalid = 78 , mozUIValid = 79 , mozMeterOptimum = 80 , mozMeterSubOptimum = 81 , mozMeterSubSubOptimum = 82 , mozPlaceholder = 83 , Count = 84 , NotPseudo = 85 , MAX = 86 , } # [ repr ( C ) ] pub struct GeckoFont { pub gecko : root :: nsStyleFont , } # [ test ] fn bindgen_test_layout_GeckoFont ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoFont > ( ) , 136usize , concat ! ( "Size of: " , stringify ! ( GeckoFont ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoFont > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoFont ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoFont ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoColor { pub gecko : root :: nsStyleColor , } # [ test ] fn bindgen_test_layout_GeckoColor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoColor > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( GeckoColor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoColor > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( GeckoColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoColor ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoColor ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] pub struct GeckoList { pub gecko : root :: nsStyleList , } # [ test ] fn bindgen_test_layout_GeckoList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoList > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( GeckoList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoList ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoList ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] pub struct GeckoText { pub gecko : root :: nsStyleText , } # [ test ] fn bindgen_test_layout_GeckoText ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoText > ( ) , 160usize , concat ! ( "Size of: " , stringify ! ( GeckoText ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoText > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoText ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoText ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoText ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoVisibility { pub gecko : root :: nsStyleVisibility , } # [ test ] fn bindgen_test_layout_GeckoVisibility ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoVisibility > ( ) , 7usize , concat ! ( "Size of: " , stringify ! ( GeckoVisibility ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoVisibility > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( GeckoVisibility ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoVisibility ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoVisibility ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoUserInterface { pub gecko : root :: nsStyleUserInterface , } # [ test ] fn bindgen_test_layout_GeckoUserInterface ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoUserInterface > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( GeckoUserInterface ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoUserInterface > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoUserInterface ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoUserInterface ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoUserInterface ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoTableBorder { pub gecko : root :: nsStyleTableBorder , } # [ test ] fn bindgen_test_layout_GeckoTableBorder ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoTableBorder > ( ) , 12usize , concat ! ( "Size of: " , stringify ! ( GeckoTableBorder ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoTableBorder > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( GeckoTableBorder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoTableBorder ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoTableBorder ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoSVG { pub gecko : root :: nsStyleSVG , } # [ test ] fn bindgen_test_layout_GeckoSVG ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoSVG > ( ) , 128usize , concat ! ( "Size of: " , stringify ! ( GeckoSVG ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoSVG > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoSVG ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoSVG ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoSVG ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoBackground { pub gecko : root :: nsStyleBackground , } # [ test ] fn bindgen_test_layout_GeckoBackground ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoBackground > ( ) , 160usize , concat ! ( "Size of: " , stringify ! ( GeckoBackground ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoBackground > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoBackground ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoBackground ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoBackground ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] pub struct GeckoPosition { pub gecko : root :: nsStylePosition , } # [ test ] fn bindgen_test_layout_GeckoPosition ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoPosition > ( ) , 440usize , concat ! ( "Size of: " , stringify ! ( GeckoPosition ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoPosition > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoPosition ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoPosition ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] pub struct GeckoTextReset { pub gecko : root :: nsStyleTextReset , } # [ test ] fn bindgen_test_layout_GeckoTextReset ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoTextReset > ( ) , 80usize , concat ! ( "Size of: " , stringify ! ( GeckoTextReset ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoTextReset > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoTextReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoTextReset ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoTextReset ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoDisplay { pub gecko : root :: nsStyleDisplay , } # [ test ] fn bindgen_test_layout_GeckoDisplay ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoDisplay > ( ) , 424usize , concat ! ( "Size of: " , stringify ! ( GeckoDisplay ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoDisplay > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoDisplay ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoDisplay ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoDisplay ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] pub struct GeckoContent { pub gecko : root :: nsStyleContent , } # [ test ] fn bindgen_test_layout_GeckoContent ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoContent > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( GeckoContent ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoContent > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoContent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoContent ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoContent ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoUIReset { pub gecko : root :: nsStyleUIReset , } # [ test ] fn bindgen_test_layout_GeckoUIReset ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoUIReset > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( GeckoUIReset ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoUIReset > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoUIReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoUIReset ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoUIReset ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoTable { pub gecko : root :: nsStyleTable , } # [ test ] fn bindgen_test_layout_GeckoTable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoTable > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( GeckoTable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoTable > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( GeckoTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoTable ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoTable ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoMargin { pub gecko : root :: nsStyleMargin , } # [ test ] fn bindgen_test_layout_GeckoMargin ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoMargin > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( GeckoMargin ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoMargin > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoMargin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoMargin ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoMargin ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoPadding { pub gecko : root :: nsStylePadding , } # [ test ] fn bindgen_test_layout_GeckoPadding ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoPadding > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( GeckoPadding ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoPadding > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoPadding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoPadding ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoPadding ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoBorder { pub gecko : root :: nsStyleBorder , } # [ test ] fn bindgen_test_layout_GeckoBorder ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoBorder > ( ) , 312usize , concat ! ( "Size of: " , stringify ! ( GeckoBorder ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoBorder > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoBorder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoBorder ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoBorder ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoOutline { pub gecko : root :: nsStyleOutline , } # [ test ] fn bindgen_test_layout_GeckoOutline ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoOutline > ( ) , 104usize , concat ! ( "Size of: " , stringify ! ( GeckoOutline ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoOutline > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoOutline ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoOutline ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoOutline ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoXUL { pub gecko : root :: nsStyleXUL , } # [ test ] fn bindgen_test_layout_GeckoXUL ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoXUL > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( GeckoXUL ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoXUL > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( GeckoXUL ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoXUL ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoXUL ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoSVGReset { pub gecko : root :: nsStyleSVGReset , } # [ test ] fn bindgen_test_layout_GeckoSVGReset ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoSVGReset > ( ) , 200usize , concat ! ( "Size of: " , stringify ! ( GeckoSVGReset ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoSVGReset > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoSVGReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoSVGReset ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoSVGReset ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoColumn { pub gecko : root :: nsStyleColumn , } # [ test ] fn bindgen_test_layout_GeckoColumn ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoColumn > ( ) , 64usize , concat ! ( "Size of: " , stringify ! ( GeckoColumn ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoColumn > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoColumn ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoColumn ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoColumn ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GeckoEffects { pub gecko : root :: nsStyleEffects , } # [ test ] fn bindgen_test_layout_GeckoEffects ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoEffects > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( GeckoEffects ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoEffects > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GeckoEffects ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoEffects ) ) . gecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoEffects ) , "::" , stringify ! ( gecko ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ServoMediaList { pub _base : root :: mozilla :: dom :: MediaList , pub mRawList : root :: RefPtr < root :: RawServoMediaList > , } # [ test ] fn bindgen_test_layout_ServoMediaList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoMediaList > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( ServoMediaList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoMediaList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoMediaList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoMediaList ) ) . mRawList as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( ServoMediaList ) , "::" , stringify ! ( mRawList ) ) ) ; } - /// A PostTraversalTask is a task to be performed immediately after a Servo + /// etc... + #[repr(C)] + #[derive(Debug)] + pub struct ServoElementSnapshot { + pub mAttrs: root::nsTArray<root::mozilla::ServoAttrSnapshot>, + pub mClass: root::nsAttrValue, + pub mState: root::mozilla::ServoElementSnapshot_ServoStateType, + pub mContains: root::mozilla::ServoElementSnapshot_Flags, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 1usize], u8>, + pub __bindgen_padding_0: [u16; 3usize], + } + pub type ServoElementSnapshot_BorrowedAttrInfo = root::mozilla::dom::BorrowedAttrInfo; + pub type ServoElementSnapshot_Element = root::mozilla::dom::Element; + pub type ServoElementSnapshot_ServoStateType = root::mozilla::EventStates_ServoType; + pub use self :: super :: super :: root :: mozilla :: ServoElementSnapshotFlags as ServoElementSnapshot_Flags; + #[test] + fn bindgen_test_layout_ServoElementSnapshot() { + assert_eq!( + ::std::mem::size_of::<ServoElementSnapshot>(), + 32usize, + concat!("Size of: ", stringify!(ServoElementSnapshot)) + ); + assert_eq!( + ::std::mem::align_of::<ServoElementSnapshot>(), + 8usize, + concat!("Alignment of ", stringify!(ServoElementSnapshot)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoElementSnapshot>())).mAttrs as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ServoElementSnapshot), + "::", + stringify!(mAttrs) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoElementSnapshot>())).mClass as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ServoElementSnapshot), + "::", + stringify!(mClass) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoElementSnapshot>())).mState as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ServoElementSnapshot), + "::", + stringify!(mState) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoElementSnapshot>())).mContains as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ServoElementSnapshot), + "::", + stringify!(mContains) + ) + ); + } + impl ServoElementSnapshot { + #[inline] + pub fn mIsHTMLElementInHTMLDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsHTMLElementInHTMLDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsInChromeDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsInChromeDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(1usize, 1u8, val as u64) + } + } + #[inline] + pub fn mSupportsLangAttr(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) } + } + #[inline] + pub fn set_mSupportsLangAttr(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(2usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsTableBorderNonzero(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsTableBorderNonzero(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(3usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsMozBrowserFrame(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsMozBrowserFrame(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(4usize, 1u8, val as u64) + } + } + #[inline] + pub fn mClassAttributeChanged(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) } + } + #[inline] + pub fn set_mClassAttributeChanged(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(5usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIdAttributeChanged(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIdAttributeChanged(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(6usize, 1u8, val as u64) + } + } + #[inline] + pub fn mOtherAttributeChanged(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) } + } + #[inline] + pub fn set_mOtherAttributeChanged(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(7usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mIsHTMLElementInHTMLDocument: bool, + mIsInChromeDocument: bool, + mSupportsLangAttr: bool, + mIsTableBorderNonzero: bool, + mIsMozBrowserFrame: bool, + mClassAttributeChanged: bool, + mIdAttributeChanged: bool, + mOtherAttributeChanged: bool, + ) -> root::__BindgenBitfieldUnit<[u8; 1usize], u8> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 1usize], + u8, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let mIsHTMLElementInHTMLDocument: u8 = + unsafe { ::std::mem::transmute(mIsHTMLElementInHTMLDocument) }; + mIsHTMLElementInHTMLDocument as u64 + }); + __bindgen_bitfield_unit.set(1usize, 1u8, { + let mIsInChromeDocument: u8 = + unsafe { ::std::mem::transmute(mIsInChromeDocument) }; + mIsInChromeDocument as u64 + }); + __bindgen_bitfield_unit.set(2usize, 1u8, { + let mSupportsLangAttr: u8 = unsafe { ::std::mem::transmute(mSupportsLangAttr) }; + mSupportsLangAttr as u64 + }); + __bindgen_bitfield_unit.set(3usize, 1u8, { + let mIsTableBorderNonzero: u8 = + unsafe { ::std::mem::transmute(mIsTableBorderNonzero) }; + mIsTableBorderNonzero as u64 + }); + __bindgen_bitfield_unit.set(4usize, 1u8, { + let mIsMozBrowserFrame: u8 = + unsafe { ::std::mem::transmute(mIsMozBrowserFrame) }; + mIsMozBrowserFrame as u64 + }); + __bindgen_bitfield_unit.set(5usize, 1u8, { + let mClassAttributeChanged: u8 = + unsafe { ::std::mem::transmute(mClassAttributeChanged) }; + mClassAttributeChanged as u64 + }); + __bindgen_bitfield_unit.set(6usize, 1u8, { + let mIdAttributeChanged: u8 = + unsafe { ::std::mem::transmute(mIdAttributeChanged) }; + mIdAttributeChanged as u64 + }); + __bindgen_bitfield_unit.set(7usize, 1u8, { + let mOtherAttributeChanged: u8 = + unsafe { ::std::mem::transmute(mOtherAttributeChanged) }; + mOtherAttributeChanged as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(C)] + #[derive(Debug)] + pub struct ServoElementSnapshotTable { + pub _base: [u64; 4usize], + } + #[test] + fn bindgen_test_layout_ServoElementSnapshotTable() { + assert_eq!( + ::std::mem::size_of::<ServoElementSnapshotTable>(), + 32usize, + concat!("Size of: ", stringify!(ServoElementSnapshotTable)) + ); + assert_eq!( + ::std::mem::align_of::<ServoElementSnapshotTable>(), + 8usize, + concat!("Alignment of ", stringify!(ServoElementSnapshotTable)) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct LookAndFeel { + pub _address: u8, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum LookAndFeel_ColorID { + eColorID_WindowBackground = 0, + eColorID_WindowForeground = 1, + eColorID_WidgetBackground = 2, + eColorID_WidgetForeground = 3, + eColorID_WidgetSelectBackground = 4, + eColorID_WidgetSelectForeground = 5, + eColorID_Widget3DHighlight = 6, + eColorID_Widget3DShadow = 7, + eColorID_TextBackground = 8, + eColorID_TextForeground = 9, + eColorID_TextSelectBackground = 10, + eColorID_TextSelectForeground = 11, + eColorID_TextSelectForegroundCustom = 12, + eColorID_TextSelectBackgroundDisabled = 13, + eColorID_TextSelectBackgroundAttention = 14, + eColorID_TextHighlightBackground = 15, + eColorID_TextHighlightForeground = 16, + eColorID_IMERawInputBackground = 17, + eColorID_IMERawInputForeground = 18, + eColorID_IMERawInputUnderline = 19, + eColorID_IMESelectedRawTextBackground = 20, + eColorID_IMESelectedRawTextForeground = 21, + eColorID_IMESelectedRawTextUnderline = 22, + eColorID_IMEConvertedTextBackground = 23, + eColorID_IMEConvertedTextForeground = 24, + eColorID_IMEConvertedTextUnderline = 25, + eColorID_IMESelectedConvertedTextBackground = 26, + eColorID_IMESelectedConvertedTextForeground = 27, + eColorID_IMESelectedConvertedTextUnderline = 28, + eColorID_SpellCheckerUnderline = 29, + eColorID_activeborder = 30, + eColorID_activecaption = 31, + eColorID_appworkspace = 32, + eColorID_background = 33, + eColorID_buttonface = 34, + eColorID_buttonhighlight = 35, + eColorID_buttonshadow = 36, + eColorID_buttontext = 37, + eColorID_captiontext = 38, + eColorID_graytext = 39, + eColorID_highlight = 40, + eColorID_highlighttext = 41, + eColorID_inactiveborder = 42, + eColorID_inactivecaption = 43, + eColorID_inactivecaptiontext = 44, + eColorID_infobackground = 45, + eColorID_infotext = 46, + eColorID_menu = 47, + eColorID_menutext = 48, + eColorID_scrollbar = 49, + eColorID_threeddarkshadow = 50, + eColorID_threedface = 51, + eColorID_threedhighlight = 52, + eColorID_threedlightshadow = 53, + eColorID_threedshadow = 54, + eColorID_window = 55, + eColorID_windowframe = 56, + eColorID_windowtext = 57, + eColorID__moz_buttondefault = 58, + eColorID__moz_field = 59, + eColorID__moz_fieldtext = 60, + eColorID__moz_dialog = 61, + eColorID__moz_dialogtext = 62, + eColorID__moz_dragtargetzone = 63, + eColorID__moz_cellhighlight = 64, + eColorID__moz_cellhighlighttext = 65, + eColorID__moz_html_cellhighlight = 66, + eColorID__moz_html_cellhighlighttext = 67, + eColorID__moz_buttonhoverface = 68, + eColorID__moz_buttonhovertext = 69, + eColorID__moz_menuhover = 70, + eColorID__moz_menuhovertext = 71, + eColorID__moz_menubartext = 72, + eColorID__moz_menubarhovertext = 73, + eColorID__moz_eventreerow = 74, + eColorID__moz_oddtreerow = 75, + eColorID__moz_mac_buttonactivetext = 76, + eColorID__moz_mac_chrome_active = 77, + eColorID__moz_mac_chrome_inactive = 78, + eColorID__moz_mac_defaultbuttontext = 79, + eColorID__moz_mac_focusring = 80, + eColorID__moz_mac_menuselect = 81, + eColorID__moz_mac_menushadow = 82, + eColorID__moz_mac_menutextdisable = 83, + eColorID__moz_mac_menutextselect = 84, + eColorID__moz_mac_disabledtoolbartext = 85, + eColorID__moz_mac_secondaryhighlight = 86, + eColorID__moz_mac_vibrancy_light = 87, + eColorID__moz_mac_vibrancy_dark = 88, + eColorID__moz_mac_vibrant_titlebar_light = 89, + eColorID__moz_mac_vibrant_titlebar_dark = 90, + eColorID__moz_mac_menupopup = 91, + eColorID__moz_mac_menuitem = 92, + eColorID__moz_mac_active_menuitem = 93, + eColorID__moz_mac_source_list = 94, + eColorID__moz_mac_source_list_selection = 95, + eColorID__moz_mac_active_source_list_selection = 96, + eColorID__moz_mac_tooltip = 97, + eColorID__moz_win_accentcolor = 98, + eColorID__moz_win_accentcolortext = 99, + eColorID__moz_win_mediatext = 100, + eColorID__moz_win_communicationstext = 101, + eColorID__moz_nativehyperlinktext = 102, + eColorID__moz_comboboxtext = 103, + eColorID__moz_combobox = 104, + eColorID__moz_gtk_info_bar_text = 105, + eColorID_LAST_COLOR = 106, + } + pub const LookAndFeel_IntID_eIntID_CaretBlinkTime: root::mozilla::LookAndFeel_IntID = 0; + pub const LookAndFeel_IntID_eIntID_CaretWidth: root::mozilla::LookAndFeel_IntID = 1; + pub const LookAndFeel_IntID_eIntID_ShowCaretDuringSelection: + root::mozilla::LookAndFeel_IntID = 2; + pub const LookAndFeel_IntID_eIntID_SelectTextfieldsOnKeyFocus: + root::mozilla::LookAndFeel_IntID = 3; + pub const LookAndFeel_IntID_eIntID_SubmenuDelay: root::mozilla::LookAndFeel_IntID = 4; + pub const LookAndFeel_IntID_eIntID_MenusCanOverlapOSBar: root::mozilla::LookAndFeel_IntID = + 5; + pub const LookAndFeel_IntID_eIntID_UseOverlayScrollbars: root::mozilla::LookAndFeel_IntID = + 6; + pub const LookAndFeel_IntID_eIntID_AllowOverlayScrollbarsOverlap: + root::mozilla::LookAndFeel_IntID = 7; + pub const LookAndFeel_IntID_eIntID_ShowHideScrollbars: root::mozilla::LookAndFeel_IntID = 8; + pub const LookAndFeel_IntID_eIntID_SkipNavigatingDisabledMenuItem: + root::mozilla::LookAndFeel_IntID = 9; + pub const LookAndFeel_IntID_eIntID_DragThresholdX: root::mozilla::LookAndFeel_IntID = 10; + pub const LookAndFeel_IntID_eIntID_DragThresholdY: root::mozilla::LookAndFeel_IntID = 11; + pub const LookAndFeel_IntID_eIntID_UseAccessibilityTheme: root::mozilla::LookAndFeel_IntID = + 12; + pub const LookAndFeel_IntID_eIntID_ScrollArrowStyle: root::mozilla::LookAndFeel_IntID = 13; + pub const LookAndFeel_IntID_eIntID_ScrollSliderStyle: root::mozilla::LookAndFeel_IntID = 14; + pub const LookAndFeel_IntID_eIntID_ScrollButtonLeftMouseButtonAction: + root::mozilla::LookAndFeel_IntID = 15; + pub const LookAndFeel_IntID_eIntID_ScrollButtonMiddleMouseButtonAction: + root::mozilla::LookAndFeel_IntID = 16; + pub const LookAndFeel_IntID_eIntID_ScrollButtonRightMouseButtonAction: + root::mozilla::LookAndFeel_IntID = 17; + pub const LookAndFeel_IntID_eIntID_TreeOpenDelay: root::mozilla::LookAndFeel_IntID = 18; + pub const LookAndFeel_IntID_eIntID_TreeCloseDelay: root::mozilla::LookAndFeel_IntID = 19; + pub const LookAndFeel_IntID_eIntID_TreeLazyScrollDelay: root::mozilla::LookAndFeel_IntID = + 20; + pub const LookAndFeel_IntID_eIntID_TreeScrollDelay: root::mozilla::LookAndFeel_IntID = 21; + pub const LookAndFeel_IntID_eIntID_TreeScrollLinesMax: root::mozilla::LookAndFeel_IntID = + 22; + pub const LookAndFeel_IntID_eIntID_TabFocusModel: root::mozilla::LookAndFeel_IntID = 23; + pub const LookAndFeel_IntID_eIntID_ChosenMenuItemsShouldBlink: + root::mozilla::LookAndFeel_IntID = 24; + pub const LookAndFeel_IntID_eIntID_WindowsAccentColorInTitlebar: + root::mozilla::LookAndFeel_IntID = 25; + pub const LookAndFeel_IntID_eIntID_WindowsDefaultTheme: root::mozilla::LookAndFeel_IntID = + 26; + pub const LookAndFeel_IntID_eIntID_DWMCompositor: root::mozilla::LookAndFeel_IntID = 27; + pub const LookAndFeel_IntID_eIntID_WindowsClassic: root::mozilla::LookAndFeel_IntID = 28; + pub const LookAndFeel_IntID_eIntID_WindowsGlass: root::mozilla::LookAndFeel_IntID = 29; + pub const LookAndFeel_IntID_eIntID_TouchEnabled: root::mozilla::LookAndFeel_IntID = 30; + pub const LookAndFeel_IntID_eIntID_MacGraphiteTheme: root::mozilla::LookAndFeel_IntID = 31; + pub const LookAndFeel_IntID_eIntID_MacYosemiteTheme: root::mozilla::LookAndFeel_IntID = 32; + pub const LookAndFeel_IntID_eIntID_AlertNotificationOrigin: + root::mozilla::LookAndFeel_IntID = 33; + pub const LookAndFeel_IntID_eIntID_ScrollToClick: root::mozilla::LookAndFeel_IntID = 34; + pub const LookAndFeel_IntID_eIntID_IMERawInputUnderlineStyle: + root::mozilla::LookAndFeel_IntID = 35; + pub const LookAndFeel_IntID_eIntID_IMESelectedRawTextUnderlineStyle: + root::mozilla::LookAndFeel_IntID = 36; + pub const LookAndFeel_IntID_eIntID_IMEConvertedTextUnderlineStyle: + root::mozilla::LookAndFeel_IntID = 37; + pub const LookAndFeel_IntID_eIntID_IMESelectedConvertedTextUnderline: + root::mozilla::LookAndFeel_IntID = 38; + pub const LookAndFeel_IntID_eIntID_SpellCheckerUnderlineStyle: + root::mozilla::LookAndFeel_IntID = 39; + pub const LookAndFeel_IntID_eIntID_MenuBarDrag: root::mozilla::LookAndFeel_IntID = 40; + pub const LookAndFeel_IntID_eIntID_WindowsThemeIdentifier: + root::mozilla::LookAndFeel_IntID = 41; + pub const LookAndFeel_IntID_eIntID_OperatingSystemVersionIdentifier: + root::mozilla::LookAndFeel_IntID = 42; + pub const LookAndFeel_IntID_eIntID_ScrollbarButtonAutoRepeatBehavior: + root::mozilla::LookAndFeel_IntID = 43; + pub const LookAndFeel_IntID_eIntID_TooltipDelay: root::mozilla::LookAndFeel_IntID = 44; + pub const LookAndFeel_IntID_eIntID_SwipeAnimationEnabled: root::mozilla::LookAndFeel_IntID = + 45; + pub const LookAndFeel_IntID_eIntID_ScrollbarDisplayOnMouseMove: + root::mozilla::LookAndFeel_IntID = 46; + pub const LookAndFeel_IntID_eIntID_ScrollbarFadeBeginDelay: + root::mozilla::LookAndFeel_IntID = 47; + pub const LookAndFeel_IntID_eIntID_ScrollbarFadeDuration: root::mozilla::LookAndFeel_IntID = + 48; + pub const LookAndFeel_IntID_eIntID_ContextMenuOffsetVertical: + root::mozilla::LookAndFeel_IntID = 49; + pub const LookAndFeel_IntID_eIntID_ContextMenuOffsetHorizontal: + root::mozilla::LookAndFeel_IntID = 50; + pub const LookAndFeel_IntID_eIntID_GTKCSDAvailable: root::mozilla::LookAndFeel_IntID = 51; + pub const LookAndFeel_IntID_eIntID_GTKCSDMinimizeButton: root::mozilla::LookAndFeel_IntID = + 52; + pub const LookAndFeel_IntID_eIntID_GTKCSDMaximizeButton: root::mozilla::LookAndFeel_IntID = + 53; + pub const LookAndFeel_IntID_eIntID_GTKCSDCloseButton: root::mozilla::LookAndFeel_IntID = 54; + pub type LookAndFeel_IntID = u32; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_Generic: + root::mozilla::LookAndFeel_WindowsTheme = 0; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_Classic: + root::mozilla::LookAndFeel_WindowsTheme = 1; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_Aero: + root::mozilla::LookAndFeel_WindowsTheme = 2; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_LunaBlue: + root::mozilla::LookAndFeel_WindowsTheme = 3; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_LunaOlive: + root::mozilla::LookAndFeel_WindowsTheme = 4; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_LunaSilver: + root::mozilla::LookAndFeel_WindowsTheme = 5; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_Royale: + root::mozilla::LookAndFeel_WindowsTheme = 6; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_Zune: + root::mozilla::LookAndFeel_WindowsTheme = 7; + pub const LookAndFeel_WindowsTheme_eWindowsTheme_AeroLite: + root::mozilla::LookAndFeel_WindowsTheme = 8; + pub type LookAndFeel_WindowsTheme = u32; + pub const LookAndFeel_OperatingSystemVersion_eOperatingSystemVersion_Windows7: + root::mozilla::LookAndFeel_OperatingSystemVersion = 2; + pub const LookAndFeel_OperatingSystemVersion_eOperatingSystemVersion_Windows8: + root::mozilla::LookAndFeel_OperatingSystemVersion = 3; + pub const LookAndFeel_OperatingSystemVersion_eOperatingSystemVersion_Windows10: + root::mozilla::LookAndFeel_OperatingSystemVersion = 4; + pub const LookAndFeel_OperatingSystemVersion_eOperatingSystemVersion_Unknown: + root::mozilla::LookAndFeel_OperatingSystemVersion = 5; + pub type LookAndFeel_OperatingSystemVersion = u32; + pub const LookAndFeel_eScrollArrow_None: root::mozilla::LookAndFeel__bindgen_ty_1 = 0; + pub const LookAndFeel_eScrollArrow_StartBackward: root::mozilla::LookAndFeel__bindgen_ty_1 = + 4096; + pub const LookAndFeel_eScrollArrow_StartForward: root::mozilla::LookAndFeel__bindgen_ty_1 = + 256; + pub const LookAndFeel_eScrollArrow_EndBackward: root::mozilla::LookAndFeel__bindgen_ty_1 = + 16; + pub const LookAndFeel_eScrollArrow_EndForward: root::mozilla::LookAndFeel__bindgen_ty_1 = 1; + pub type LookAndFeel__bindgen_ty_1 = u32; + pub const LookAndFeel_eScrollArrowStyle_Single: root::mozilla::LookAndFeel__bindgen_ty_2 = + 4097; + pub const LookAndFeel_eScrollArrowStyle_BothAtBottom: + root::mozilla::LookAndFeel__bindgen_ty_2 = 17; + pub const LookAndFeel_eScrollArrowStyle_BothAtEachEnd: + root::mozilla::LookAndFeel__bindgen_ty_2 = 4369; + pub const LookAndFeel_eScrollArrowStyle_BothAtTop: + root::mozilla::LookAndFeel__bindgen_ty_2 = 4352; + pub type LookAndFeel__bindgen_ty_2 = u32; + pub const LookAndFeel_eScrollThumbStyle_Normal: root::mozilla::LookAndFeel__bindgen_ty_3 = + 0; + pub const LookAndFeel_eScrollThumbStyle_Proportional: + root::mozilla::LookAndFeel__bindgen_ty_3 = 1; + pub type LookAndFeel__bindgen_ty_3 = u32; + pub const LookAndFeel_FloatID_eFloatID_IMEUnderlineRelativeSize: + root::mozilla::LookAndFeel_FloatID = 0; + pub const LookAndFeel_FloatID_eFloatID_SpellCheckerUnderlineRelativeSize: + root::mozilla::LookAndFeel_FloatID = 1; + pub const LookAndFeel_FloatID_eFloatID_CaretAspectRatio: + root::mozilla::LookAndFeel_FloatID = 2; + pub type LookAndFeel_FloatID = u32; + pub const LookAndFeel_FontID_FontID_MINIMUM: root::mozilla::LookAndFeel_FontID = + LookAndFeel_FontID::eFont_Caption; + pub const LookAndFeel_FontID_FontID_MAXIMUM: root::mozilla::LookAndFeel_FontID = + LookAndFeel_FontID::eFont_Widget; + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum LookAndFeel_FontID { + eFont_Caption = 1, + eFont_Icon = 2, + eFont_Menu = 3, + eFont_MessageBox = 4, + eFont_SmallCaption = 5, + eFont_StatusBar = 6, + eFont_Window = 7, + eFont_Document = 8, + eFont_Workspace = 9, + eFont_Desktop = 10, + eFont_Info = 11, + eFont_Dialog = 12, + eFont_Button = 13, + eFont_PullDownMenu = 14, + eFont_List = 15, + eFont_Field = 16, + eFont_Tooltips = 17, + eFont_Widget = 18, + } + #[test] + fn bindgen_test_layout_LookAndFeel() { + assert_eq!( + ::std::mem::size_of::<LookAndFeel>(), + 1usize, + concat!("Size of: ", stringify!(LookAndFeel)) + ); + assert_eq!( + ::std::mem::align_of::<LookAndFeel>(), + 1usize, + concat!("Alignment of ", stringify!(LookAndFeel)) + ); + } + impl Clone for LookAndFeel { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct StylePrefs { + pub _address: u8, + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs19sFontDisplayEnabledE"] + pub static mut StylePrefs_sFontDisplayEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs19sOpentypeSVGEnabledE"] + pub static mut StylePrefs_sOpentypeSVGEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs29sWebkitPrefixedAliasesEnabledE"] + pub static mut StylePrefs_sWebkitPrefixedAliasesEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs30sWebkitDevicePixelRatioEnabledE"] + pub static mut StylePrefs_sWebkitDevicePixelRatioEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs20sMozGradientsEnabledE"] + pub static mut StylePrefs_sMozGradientsEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs22sControlCharVisibilityE"] + pub static mut StylePrefs_sControlCharVisibility: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs28sFramesTimingFunctionEnabledE"] + pub static mut StylePrefs_sFramesTimingFunctionEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs31sUnprefixedFullscreenApiEnabledE"] + pub static mut StylePrefs_sUnprefixedFullscreenApiEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs20sVisitedLinksEnabledE"] + pub static mut StylePrefs_sVisitedLinksEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs28sMozDocumentEnabledInContentE"] + pub static mut StylePrefs_sMozDocumentEnabledInContent: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs32sGridTemplateSubgridValueEnabledE"] + pub static mut StylePrefs_sGridTemplateSubgridValueEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla10StylePrefs22sEmulateMozBoxWithFlexE"] + pub static mut StylePrefs_sEmulateMozBoxWithFlex: bool; + } + #[test] + fn bindgen_test_layout_StylePrefs() { + assert_eq!( + ::std::mem::size_of::<StylePrefs>(), + 1usize, + concat!("Size of: ", stringify!(StylePrefs)) + ); + assert_eq!( + ::std::mem::align_of::<StylePrefs>(), + 1usize, + concat!("Alignment of ", stringify!(StylePrefs)) + ); + } + impl Clone for StylePrefs { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct NonOwningAnimationTarget { + pub mElement: *mut root::mozilla::dom::Element, + pub mPseudoType: root::mozilla::CSSPseudoElementType, + } + #[test] + fn bindgen_test_layout_NonOwningAnimationTarget() { + assert_eq!( + ::std::mem::size_of::<NonOwningAnimationTarget>(), + 16usize, + concat!("Size of: ", stringify!(NonOwningAnimationTarget)) + ); + assert_eq!( + ::std::mem::align_of::<NonOwningAnimationTarget>(), + 8usize, + concat!("Alignment of ", stringify!(NonOwningAnimationTarget)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NonOwningAnimationTarget>())).mElement as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(NonOwningAnimationTarget), + "::", + stringify!(mElement) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<NonOwningAnimationTarget>())).mPseudoType as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(NonOwningAnimationTarget), + "::", + stringify!(mPseudoType) + ) + ); + } + impl Clone for NonOwningAnimationTarget { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct PseudoElementHashEntry { + pub _base: root::PLDHashEntryHdr, + pub mElement: root::RefPtr<root::mozilla::dom::Element>, + pub mPseudoType: root::mozilla::CSSPseudoElementType, + } + pub type PseudoElementHashEntry_KeyType = root::mozilla::NonOwningAnimationTarget; + pub type PseudoElementHashEntry_KeyTypePointer = + *const root::mozilla::NonOwningAnimationTarget; + pub const PseudoElementHashEntry_ALLOW_MEMMOVE: + root::mozilla::PseudoElementHashEntry__bindgen_ty_1 = 1; + pub type PseudoElementHashEntry__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_PseudoElementHashEntry() { + assert_eq!( + ::std::mem::size_of::<PseudoElementHashEntry>(), + 24usize, + concat!("Size of: ", stringify!(PseudoElementHashEntry)) + ); + assert_eq!( + ::std::mem::align_of::<PseudoElementHashEntry>(), + 8usize, + concat!("Alignment of ", stringify!(PseudoElementHashEntry)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PseudoElementHashEntry>())).mElement as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PseudoElementHashEntry), + "::", + stringify!(mElement) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PseudoElementHashEntry>())).mPseudoType as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(PseudoElementHashEntry), + "::", + stringify!(mPseudoType) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct EffectCompositor { + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mPresContext: *mut root::nsPresContext, + pub mElementsToRestyle: [u64; 8usize], + pub mIsInPreTraverse: bool, + pub mRuleProcessors: [u64; 2usize], + } + pub type EffectCompositor_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct EffectCompositor_cycleCollection { + pub _base: root::nsCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_EffectCompositor_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<EffectCompositor_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(EffectCompositor_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<EffectCompositor_cycleCollection>(), + 8usize, + concat!( + "Alignment of ", + stringify!(EffectCompositor_cycleCollection) + ) + ); + } + impl Clone for EffectCompositor_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum EffectCompositor_CascadeLevel { + Animations = 0, + Transitions = 1, + } + pub const EffectCompositor_RestyleType_Throttled: + root::mozilla::EffectCompositor_RestyleType = 0; + pub const EffectCompositor_RestyleType_Standard: + root::mozilla::EffectCompositor_RestyleType = 1; + pub const EffectCompositor_RestyleType_Layer: root::mozilla::EffectCompositor_RestyleType = + 2; + pub type EffectCompositor_RestyleType = i32; + #[repr(C)] + #[derive(Debug)] + pub struct EffectCompositor_AnimationStyleRuleProcessor { + pub _base: root::nsIStyleRuleProcessor, + pub mRefCnt: root::nsAutoRefCnt, + pub mCompositor: *mut root::mozilla::EffectCompositor, + pub mCascadeLevel: root::mozilla::EffectCompositor_CascadeLevel, + } + pub type EffectCompositor_AnimationStyleRuleProcessor_HasThreadSafeRefCnt = + root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_EffectCompositor_AnimationStyleRuleProcessor() { + assert_eq!( + ::std::mem::size_of::<EffectCompositor_AnimationStyleRuleProcessor>(), + 32usize, + concat!( + "Size of: ", + stringify!(EffectCompositor_AnimationStyleRuleProcessor) + ) + ); + assert_eq!( + ::std::mem::align_of::<EffectCompositor_AnimationStyleRuleProcessor>(), + 8usize, + concat!( + "Alignment of ", + stringify!(EffectCompositor_AnimationStyleRuleProcessor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EffectCompositor_AnimationStyleRuleProcessor>())).mRefCnt + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(EffectCompositor_AnimationStyleRuleProcessor), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EffectCompositor_AnimationStyleRuleProcessor>())) + .mCompositor as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(EffectCompositor_AnimationStyleRuleProcessor), + "::", + stringify!(mCompositor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EffectCompositor_AnimationStyleRuleProcessor>())) + .mCascadeLevel as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(EffectCompositor_AnimationStyleRuleProcessor), + "::", + stringify!(mCascadeLevel) + ) + ); + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla16EffectCompositor21_cycleCollectorGlobalE"] + pub static mut EffectCompositor__cycleCollectorGlobal: + root::mozilla::EffectCompositor_cycleCollection; + } + pub const EffectCompositor_kCascadeLevelCount: usize = 2; + #[test] + fn bindgen_test_layout_EffectCompositor() { + assert_eq!( + ::std::mem::size_of::<EffectCompositor>(), + 104usize, + concat!("Size of: ", stringify!(EffectCompositor)) + ); + assert_eq!( + ::std::mem::align_of::<EffectCompositor>(), + 8usize, + concat!("Alignment of ", stringify!(EffectCompositor)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EffectCompositor>())).mRefCnt as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(EffectCompositor), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EffectCompositor>())).mPresContext as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(EffectCompositor), + "::", + stringify!(mPresContext) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EffectCompositor>())).mElementsToRestyle as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(EffectCompositor), + "::", + stringify!(mElementsToRestyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EffectCompositor>())).mIsInPreTraverse as *const _ + as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(EffectCompositor), + "::", + stringify!(mIsInPreTraverse) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EffectCompositor>())).mRuleProcessors as *const _ + as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(EffectCompositor), + "::", + stringify!(mRuleProcessors) + ) + ); + } + pub type CSSPseudoClassTypeBase = u8; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum CSSPseudoClassType { + empty = 0, + mozOnlyWhitespace = 1, + lang = 2, + root = 3, + any = 4, + firstChild = 5, + firstNode = 6, + lastChild = 7, + lastNode = 8, + onlyChild = 9, + firstOfType = 10, + lastOfType = 11, + onlyOfType = 12, + nthChild = 13, + nthLastChild = 14, + nthOfType = 15, + nthLastOfType = 16, + mozIsHTML = 17, + mozNativeAnonymous = 18, + mozUseShadowTreeRoot = 19, + mozLocaleDir = 20, + mozLWTheme = 21, + mozLWThemeBrightText = 22, + mozLWThemeDarkText = 23, + mozWindowInactive = 24, + mozTableBorderNonzero = 25, + mozBrowserFrame = 26, + scope = 27, + negation = 28, + dir = 29, + link = 30, + mozAnyLink = 31, + anyLink = 32, + visited = 33, + active = 34, + checked = 35, + disabled = 36, + enabled = 37, + focus = 38, + focusWithin = 39, + hover = 40, + mozDragOver = 41, + target = 42, + indeterminate = 43, + mozDevtoolsHighlighted = 44, + mozStyleeditorTransitioning = 45, + fullscreen = 46, + mozFullScreen = 47, + mozFocusRing = 48, + mozBroken = 49, + mozLoading = 50, + mozUserDisabled = 51, + mozSuppressed = 52, + mozHandlerClickToPlay = 53, + mozHandlerVulnerableUpdatable = 54, + mozHandlerVulnerableNoUpdate = 55, + mozHandlerDisabled = 56, + mozHandlerBlocked = 57, + mozHandlerCrashed = 58, + mozMathIncrementScriptLevel = 59, + mozHasDirAttr = 60, + mozDirAttrLTR = 61, + mozDirAttrRTL = 62, + mozDirAttrLikeAuto = 63, + mozAutofill = 64, + mozAutofillPreview = 65, + required = 66, + optional = 67, + valid = 68, + invalid = 69, + inRange = 70, + outOfRange = 71, + defaultPseudo = 72, + placeholderShown = 73, + mozReadOnly = 74, + mozReadWrite = 75, + mozSubmitInvalid = 76, + mozUIInvalid = 77, + mozUIValid = 78, + mozMeterOptimum = 79, + mozMeterSubOptimum = 80, + mozMeterSubSubOptimum = 81, + mozPlaceholder = 82, + Count = 83, + NotPseudo = 84, + MAX = 85, + } + #[repr(C)] + pub struct GeckoFont { + pub gecko: root::nsStyleFont, + } + #[test] + fn bindgen_test_layout_GeckoFont() { + assert_eq!( + ::std::mem::size_of::<GeckoFont>(), + 136usize, + concat!("Size of: ", stringify!(GeckoFont)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoFont>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoFont)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoFont>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoFont), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoColor { + pub gecko: root::nsStyleColor, + } + #[test] + fn bindgen_test_layout_GeckoColor() { + assert_eq!( + ::std::mem::size_of::<GeckoColor>(), + 4usize, + concat!("Size of: ", stringify!(GeckoColor)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoColor>(), + 4usize, + concat!("Alignment of ", stringify!(GeckoColor)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoColor>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoColor), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + pub struct GeckoList { + pub gecko: root::nsStyleList, + } + #[test] + fn bindgen_test_layout_GeckoList() { + assert_eq!( + ::std::mem::size_of::<GeckoList>(), + 48usize, + concat!("Size of: ", stringify!(GeckoList)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoList>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoList)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoList>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoList), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + pub struct GeckoText { + pub gecko: root::nsStyleText, + } + #[test] + fn bindgen_test_layout_GeckoText() { + assert_eq!( + ::std::mem::size_of::<GeckoText>(), + 160usize, + concat!("Size of: ", stringify!(GeckoText)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoText>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoText)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoText>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoText), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoVisibility { + pub gecko: root::nsStyleVisibility, + } + #[test] + fn bindgen_test_layout_GeckoVisibility() { + assert_eq!( + ::std::mem::size_of::<GeckoVisibility>(), + 7usize, + concat!("Size of: ", stringify!(GeckoVisibility)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoVisibility>(), + 1usize, + concat!("Alignment of ", stringify!(GeckoVisibility)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoVisibility>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoVisibility), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoUserInterface { + pub gecko: root::nsStyleUserInterface, + } + #[test] + fn bindgen_test_layout_GeckoUserInterface() { + assert_eq!( + ::std::mem::size_of::<GeckoUserInterface>(), + 24usize, + concat!("Size of: ", stringify!(GeckoUserInterface)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoUserInterface>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoUserInterface)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GeckoUserInterface>())).gecko as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoUserInterface), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoTableBorder { + pub gecko: root::nsStyleTableBorder, + } + #[test] + fn bindgen_test_layout_GeckoTableBorder() { + assert_eq!( + ::std::mem::size_of::<GeckoTableBorder>(), + 12usize, + concat!("Size of: ", stringify!(GeckoTableBorder)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoTableBorder>(), + 4usize, + concat!("Alignment of ", stringify!(GeckoTableBorder)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoTableBorder>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoTableBorder), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoSVG { + pub gecko: root::nsStyleSVG, + } + #[test] + fn bindgen_test_layout_GeckoSVG() { + assert_eq!( + ::std::mem::size_of::<GeckoSVG>(), + 128usize, + concat!("Size of: ", stringify!(GeckoSVG)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoSVG>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoSVG)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoSVG>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoSVG), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoBackground { + pub gecko: root::nsStyleBackground, + } + #[test] + fn bindgen_test_layout_GeckoBackground() { + assert_eq!( + ::std::mem::size_of::<GeckoBackground>(), + 160usize, + concat!("Size of: ", stringify!(GeckoBackground)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoBackground>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoBackground)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoBackground>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoBackground), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + pub struct GeckoPosition { + pub gecko: root::nsStylePosition, + } + #[test] + fn bindgen_test_layout_GeckoPosition() { + assert_eq!( + ::std::mem::size_of::<GeckoPosition>(), + 440usize, + concat!("Size of: ", stringify!(GeckoPosition)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoPosition>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoPosition)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoPosition>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoPosition), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + pub struct GeckoTextReset { + pub gecko: root::nsStyleTextReset, + } + #[test] + fn bindgen_test_layout_GeckoTextReset() { + assert_eq!( + ::std::mem::size_of::<GeckoTextReset>(), + 80usize, + concat!("Size of: ", stringify!(GeckoTextReset)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoTextReset>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoTextReset)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoTextReset>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoTextReset), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoDisplay { + pub gecko: root::nsStyleDisplay, + } + #[test] + fn bindgen_test_layout_GeckoDisplay() { + assert_eq!( + ::std::mem::size_of::<GeckoDisplay>(), + 424usize, + concat!("Size of: ", stringify!(GeckoDisplay)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoDisplay>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoDisplay)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoDisplay>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoDisplay), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + pub struct GeckoContent { + pub gecko: root::nsStyleContent, + } + #[test] + fn bindgen_test_layout_GeckoContent() { + assert_eq!( + ::std::mem::size_of::<GeckoContent>(), + 24usize, + concat!("Size of: ", stringify!(GeckoContent)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoContent>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoContent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoContent>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoContent), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoUIReset { + pub gecko: root::nsStyleUIReset, + } + #[test] + fn bindgen_test_layout_GeckoUIReset() { + assert_eq!( + ::std::mem::size_of::<GeckoUIReset>(), + 56usize, + concat!("Size of: ", stringify!(GeckoUIReset)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoUIReset>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoUIReset)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoUIReset>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoUIReset), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoTable { + pub gecko: root::nsStyleTable, + } + #[test] + fn bindgen_test_layout_GeckoTable() { + assert_eq!( + ::std::mem::size_of::<GeckoTable>(), + 8usize, + concat!("Size of: ", stringify!(GeckoTable)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoTable>(), + 4usize, + concat!("Alignment of ", stringify!(GeckoTable)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoTable>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoTable), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoMargin { + pub gecko: root::nsStyleMargin, + } + #[test] + fn bindgen_test_layout_GeckoMargin() { + assert_eq!( + ::std::mem::size_of::<GeckoMargin>(), + 40usize, + concat!("Size of: ", stringify!(GeckoMargin)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoMargin>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoMargin)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoMargin>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoMargin), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoPadding { + pub gecko: root::nsStylePadding, + } + #[test] + fn bindgen_test_layout_GeckoPadding() { + assert_eq!( + ::std::mem::size_of::<GeckoPadding>(), + 40usize, + concat!("Size of: ", stringify!(GeckoPadding)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoPadding>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoPadding)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoPadding>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoPadding), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoBorder { + pub gecko: root::nsStyleBorder, + } + #[test] + fn bindgen_test_layout_GeckoBorder() { + assert_eq!( + ::std::mem::size_of::<GeckoBorder>(), + 304usize, + concat!("Size of: ", stringify!(GeckoBorder)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoBorder>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoBorder)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoBorder>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoBorder), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoOutline { + pub gecko: root::nsStyleOutline, + } + #[test] + fn bindgen_test_layout_GeckoOutline() { + assert_eq!( + ::std::mem::size_of::<GeckoOutline>(), + 104usize, + concat!("Size of: ", stringify!(GeckoOutline)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoOutline>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoOutline)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoOutline>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoOutline), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoXUL { + pub gecko: root::nsStyleXUL, + } + #[test] + fn bindgen_test_layout_GeckoXUL() { + assert_eq!( + ::std::mem::size_of::<GeckoXUL>(), + 16usize, + concat!("Size of: ", stringify!(GeckoXUL)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoXUL>(), + 4usize, + concat!("Alignment of ", stringify!(GeckoXUL)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoXUL>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoXUL), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoSVGReset { + pub gecko: root::nsStyleSVGReset, + } + #[test] + fn bindgen_test_layout_GeckoSVGReset() { + assert_eq!( + ::std::mem::size_of::<GeckoSVGReset>(), + 200usize, + concat!("Size of: ", stringify!(GeckoSVGReset)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoSVGReset>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoSVGReset)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoSVGReset>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoSVGReset), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoColumn { + pub gecko: root::nsStyleColumn, + } + #[test] + fn bindgen_test_layout_GeckoColumn() { + assert_eq!( + ::std::mem::size_of::<GeckoColumn>(), + 64usize, + concat!("Size of: ", stringify!(GeckoColumn)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoColumn>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoColumn)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoColumn>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoColumn), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct GeckoEffects { + pub gecko: root::nsStyleEffects, + } + #[test] + fn bindgen_test_layout_GeckoEffects() { + assert_eq!( + ::std::mem::size_of::<GeckoEffects>(), + 40usize, + concat!("Size of: ", stringify!(GeckoEffects)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoEffects>(), + 8usize, + concat!("Alignment of ", stringify!(GeckoEffects)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoEffects>())).gecko as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoEffects), + "::", + stringify!(gecko) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct ServoMediaList { + pub _base: root::mozilla::dom::MediaList, + pub mRawList: root::RefPtr<root::RawServoMediaList>, + } + #[test] + fn bindgen_test_layout_ServoMediaList() { + assert_eq!( + ::std::mem::size_of::<ServoMediaList>(), + 56usize, + concat!("Size of: ", stringify!(ServoMediaList)) + ); + assert_eq!( + ::std::mem::align_of::<ServoMediaList>(), + 8usize, + concat!("Alignment of ", stringify!(ServoMediaList)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoMediaList>())).mRawList as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(ServoMediaList), + "::", + stringify!(mRawList) + ) + ); + } + /// A PostTraversalTask is a task to be performed immediately after a Servo /// traversal. There are just a few tasks we need to perform, so we use this /// class rather than Runnables, to avoid virtual calls and some allocations. /// /// A PostTraversalTask is only safe to run immediately after the Servo - /// traversal, since it can hold raw pointers to DOM objects. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct PostTraversalTask { pub mType : root :: mozilla :: PostTraversalTask_Type , pub mTarget : * mut :: std :: os :: raw :: c_void , pub mResult : root :: nsresult , } pub const PostTraversalTask_Type_ResolveFontFaceLoadedPromise : root :: mozilla :: PostTraversalTask_Type = 0 ; pub const PostTraversalTask_Type_RejectFontFaceLoadedPromise : root :: mozilla :: PostTraversalTask_Type = 1 ; pub const PostTraversalTask_Type_DispatchLoadingEventAndReplaceReadyPromise : root :: mozilla :: PostTraversalTask_Type = 2 ; pub const PostTraversalTask_Type_DispatchFontFaceSetCheckLoadingFinishedAfterDelay : root :: mozilla :: PostTraversalTask_Type = 3 ; pub const PostTraversalTask_Type_LoadFontEntry : root :: mozilla :: PostTraversalTask_Type = 4 ; pub type PostTraversalTask_Type = :: std :: os :: raw :: c_int ; # [ test ] fn bindgen_test_layout_PostTraversalTask ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PostTraversalTask > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( PostTraversalTask ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PostTraversalTask > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PostTraversalTask ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PostTraversalTask ) ) . mType as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PostTraversalTask ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PostTraversalTask ) ) . mTarget as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PostTraversalTask ) , "::" , stringify ! ( mTarget ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PostTraversalTask ) ) . mResult as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( PostTraversalTask ) , "::" , stringify ! ( mResult ) ) ) ; } impl Clone for PostTraversalTask { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ServoStyleRuleMap { _unused : [ u8 ; 0 ] } pub const StylistState_NotDirty : root :: mozilla :: StylistState = 0 ; pub const StylistState_StyleSheetsDirty : root :: mozilla :: StylistState = 1 ; pub const StylistState_XBLStyleSheetsDirty : root :: mozilla :: StylistState = 2 ; pub type StylistState = u8 ; pub const OriginFlags_UserAgent : root :: mozilla :: OriginFlags = root :: mozilla :: OriginFlags ( 1 ) ; pub const OriginFlags_User : root :: mozilla :: OriginFlags = root :: mozilla :: OriginFlags ( 2 ) ; pub const OriginFlags_Author : root :: mozilla :: OriginFlags = root :: mozilla :: OriginFlags ( 4 ) ; pub const OriginFlags_All : root :: mozilla :: OriginFlags = root :: mozilla :: OriginFlags ( 7 ) ; impl :: std :: ops :: BitOr < root :: mozilla :: OriginFlags > for root :: mozilla :: OriginFlags { type Output = Self ; # [ inline ] fn bitor ( self , other : Self ) -> Self { OriginFlags ( self . 0 | other . 0 ) } } impl :: std :: ops :: BitOrAssign for root :: mozilla :: OriginFlags { # [ inline ] fn bitor_assign ( & mut self , rhs : root :: mozilla :: OriginFlags ) { self . 0 |= rhs . 0 ; } } impl :: std :: ops :: BitAnd < root :: mozilla :: OriginFlags > for root :: mozilla :: OriginFlags { type Output = Self ; # [ inline ] fn bitand ( self , other : Self ) -> Self { OriginFlags ( self . 0 & other . 0 ) } } impl :: std :: ops :: BitAndAssign for root :: mozilla :: OriginFlags { # [ inline ] fn bitand_assign ( & mut self , rhs : root :: mozilla :: OriginFlags ) { self . 0 &= rhs . 0 ; } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub struct OriginFlags ( pub u8 ) ; - /// The set of style sheets that apply to a document, backed by a Servo - /// Stylist. A ServoStyleSet contains ServoStyleSheets. - # [ repr ( C ) ] pub struct ServoStyleSet { pub mKind : root :: mozilla :: ServoStyleSet_Kind , pub mPresContext : * mut root :: nsPresContext , pub mLastPresContextUsesXBLStyleSet : * mut :: std :: os :: raw :: c_void , pub mRawSet : root :: mozilla :: UniquePtr < root :: RawServoStyleSet > , pub mSheets : [ u64 ; 9usize ] , pub mAuthorStyleDisabled : bool , pub mStylistState : root :: mozilla :: StylistState , pub mUserFontSetUpdateGeneration : u64 , pub mUserFontCacheUpdateGeneration : u32 , pub mNeedsRestyleAfterEnsureUniqueInner : bool , pub mNonInheritingStyleContexts : [ u64 ; 7usize ] , pub mPostTraversalTasks : root :: nsTArray < root :: mozilla :: PostTraversalTask > , pub mStyleRuleMap : root :: mozilla :: UniquePtr < root :: mozilla :: ServoStyleRuleMap > , pub mBindingManager : root :: RefPtr < root :: nsBindingManager > , } pub type ServoStyleSet_SnapshotTable = root :: mozilla :: ServoElementSnapshotTable ; pub const ServoStyleSet_Kind_Master : root :: mozilla :: ServoStyleSet_Kind = 0 ; pub const ServoStyleSet_Kind_ForXBL : root :: mozilla :: ServoStyleSet_Kind = 1 ; pub type ServoStyleSet_Kind = u8 ; extern "C" { - # [ link_name = "\u{1}_ZN7mozilla13ServoStyleSet17sInServoTraversalE" ] - pub static mut ServoStyleSet_sInServoTraversal : * mut root :: mozilla :: ServoStyleSet ; -} # [ test ] fn bindgen_test_layout_ServoStyleSet ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoStyleSet > ( ) , 208usize , concat ! ( "Size of: " , stringify ! ( ServoStyleSet ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoStyleSet > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoStyleSet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mKind as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mKind ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mPresContext as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mPresContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mLastPresContextUsesXBLStyleSet as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mLastPresContextUsesXBLStyleSet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mRawSet as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mRawSet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mSheets as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mSheets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mAuthorStyleDisabled as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mAuthorStyleDisabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mStylistState as * const _ as usize } , 105usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mStylistState ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mUserFontSetUpdateGeneration as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mUserFontSetUpdateGeneration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mUserFontCacheUpdateGeneration as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mUserFontCacheUpdateGeneration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mNeedsRestyleAfterEnsureUniqueInner as * const _ as usize } , 124usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mNeedsRestyleAfterEnsureUniqueInner ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mNonInheritingStyleContexts as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mNonInheritingStyleContexts ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mPostTraversalTasks as * const _ as usize } , 184usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mPostTraversalTasks ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mStyleRuleMap as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mStyleRuleMap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleSet ) ) . mBindingManager as * const _ as usize } , 200usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSet ) , "::" , stringify ! ( mBindingManager ) ) ) ; } # [ repr ( C ) ] pub struct ServoStyleContext { pub _base : root :: nsStyleContext , pub mPresContext : * mut root :: nsPresContext , pub mSource : root :: ServoComputedData , pub mNextInheritingAnonBoxStyle : root :: RefPtr < root :: mozilla :: ServoStyleContext > , } # [ test ] fn bindgen_test_layout_ServoStyleContext ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoStyleContext > ( ) , 248usize , concat ! ( "Size of: " , stringify ! ( ServoStyleContext ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoStyleContext > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoStyleContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleContext ) ) . mPresContext as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleContext ) , "::" , stringify ! ( mPresContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleContext ) ) . mSource as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleContext ) , "::" , stringify ! ( mSource ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoStyleContext ) ) . mNextInheritingAnonBoxStyle as * const _ as usize } , 240usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleContext ) , "::" , stringify ! ( mNextInheritingAnonBoxStyle ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct DeclarationBlock { pub mContainer : root :: mozilla :: DeclarationBlock__bindgen_ty_1 , pub mImmutable : bool , pub mType : root :: mozilla :: StyleBackendType , pub mIsDirty : u32 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct DeclarationBlock__bindgen_ty_1 { pub mRaw : root :: __BindgenUnionField < usize > , pub mOwningRule : root :: __BindgenUnionField < * mut root :: mozilla :: css :: Rule > , pub mHTMLCSSStyleSheet : root :: __BindgenUnionField < * mut root :: nsHTMLCSSStyleSheet > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_DeclarationBlock__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < DeclarationBlock__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( DeclarationBlock__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < DeclarationBlock__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( DeclarationBlock__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DeclarationBlock__bindgen_ty_1 ) ) . mRaw as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( DeclarationBlock__bindgen_ty_1 ) , "::" , stringify ! ( mRaw ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DeclarationBlock__bindgen_ty_1 ) ) . mOwningRule as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( DeclarationBlock__bindgen_ty_1 ) , "::" , stringify ! ( mOwningRule ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DeclarationBlock__bindgen_ty_1 ) ) . mHTMLCSSStyleSheet as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( DeclarationBlock__bindgen_ty_1 ) , "::" , stringify ! ( mHTMLCSSStyleSheet ) ) ) ; } impl Clone for DeclarationBlock__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_DeclarationBlock ( ) { assert_eq ! ( :: std :: mem :: size_of :: < DeclarationBlock > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( DeclarationBlock ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < DeclarationBlock > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( DeclarationBlock ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DeclarationBlock ) ) . mContainer as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( DeclarationBlock ) , "::" , stringify ! ( mContainer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DeclarationBlock ) ) . mImmutable as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( DeclarationBlock ) , "::" , stringify ! ( mImmutable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DeclarationBlock ) ) . mType as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( DeclarationBlock ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const DeclarationBlock ) ) . mIsDirty as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( DeclarationBlock ) , "::" , stringify ! ( mIsDirty ) ) ) ; } impl Clone for DeclarationBlock { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct ServoDeclarationBlock { pub _base : root :: mozilla :: DeclarationBlock , pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mRaw : root :: RefPtr < root :: RawServoDeclarationBlock > , } pub type ServoDeclarationBlock_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_ServoDeclarationBlock ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoDeclarationBlock > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( ServoDeclarationBlock ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoDeclarationBlock > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoDeclarationBlock ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoDeclarationBlock ) ) . mRefCnt as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ServoDeclarationBlock ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoDeclarationBlock ) ) . mRaw as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ServoDeclarationBlock ) , "::" , stringify ! ( mRaw ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct CSSFontFaceDescriptors { pub mFamily : root :: nsCSSValue , pub mStyle : root :: nsCSSValue , pub mWeight : root :: nsCSSValue , pub mStretch : root :: nsCSSValue , pub mSrc : root :: nsCSSValue , pub mUnicodeRange : root :: nsCSSValue , pub mFontFeatureSettings : root :: nsCSSValue , pub mFontLanguageOverride : root :: nsCSSValue , pub mDisplay : root :: nsCSSValue , } extern "C" { - # [ link_name = "\u{1}_ZN7mozilla22CSSFontFaceDescriptors6FieldsE" ] - pub static mut CSSFontFaceDescriptors_Fields : [ * const root :: nsCSSValue ; 0usize ] ; -} # [ test ] fn bindgen_test_layout_CSSFontFaceDescriptors ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CSSFontFaceDescriptors > ( ) , 144usize , concat ! ( "Size of: " , stringify ! ( CSSFontFaceDescriptors ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CSSFontFaceDescriptors > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CSSFontFaceDescriptors ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mFamily as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mFamily ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mStyle as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mWeight as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mWeight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mStretch as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mStretch ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mSrc as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mSrc ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mUnicodeRange as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mUnicodeRange ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mFontFeatureSettings as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mFontFeatureSettings ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mFontLanguageOverride as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mFontLanguageOverride ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CSSFontFaceDescriptors ) ) . mDisplay as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( CSSFontFaceDescriptors ) , "::" , stringify ! ( mDisplay ) ) ) ; } pub mod intl { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct LineBreaker { pub mRefCnt : root :: nsAutoRefCnt , } pub type LineBreaker_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; pub const LineBreaker_kWordBreak_Normal : root :: mozilla :: intl :: LineBreaker__bindgen_ty_1 = 0 ; pub const LineBreaker_kWordBreak_BreakAll : root :: mozilla :: intl :: LineBreaker__bindgen_ty_1 = 1 ; pub const LineBreaker_kWordBreak_KeepAll : root :: mozilla :: intl :: LineBreaker__bindgen_ty_1 = 2 ; pub type LineBreaker__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_LineBreaker ( ) { assert_eq ! ( :: std :: mem :: size_of :: < LineBreaker > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( LineBreaker ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < LineBreaker > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( LineBreaker ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const LineBreaker ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( LineBreaker ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct WordBreaker { pub mRefCnt : root :: nsAutoRefCnt , } pub type WordBreaker_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_WordBreaker ( ) { assert_eq ! ( :: std :: mem :: size_of :: < WordBreaker > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( WordBreaker ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < WordBreaker > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( WordBreaker ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const WordBreaker ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( WordBreaker ) , "::" , stringify ! ( mRefCnt ) ) ) ; } } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct InfallibleAllocPolicy { pub _address : u8 , } # [ test ] fn bindgen_test_layout_InfallibleAllocPolicy ( ) { assert_eq ! ( :: std :: mem :: size_of :: < InfallibleAllocPolicy > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( InfallibleAllocPolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < InfallibleAllocPolicy > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( InfallibleAllocPolicy ) ) ) ; } impl Clone for InfallibleAllocPolicy { fn clone ( & self ) -> Self { * self } } - /// MozRefCountType is Mozilla's reference count type. + /// traversal, since it can hold raw pointers to DOM objects. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct PostTraversalTask { + pub mType: root::mozilla::PostTraversalTask_Type, + pub mTarget: *mut ::std::os::raw::c_void, + pub mResult: root::nsresult, + } + pub const PostTraversalTask_Type_ResolveFontFaceLoadedPromise: + root::mozilla::PostTraversalTask_Type = 0; + pub const PostTraversalTask_Type_RejectFontFaceLoadedPromise: + root::mozilla::PostTraversalTask_Type = 1; + pub const PostTraversalTask_Type_DispatchLoadingEventAndReplaceReadyPromise: + root::mozilla::PostTraversalTask_Type = 2; + pub const PostTraversalTask_Type_DispatchFontFaceSetCheckLoadingFinishedAfterDelay: + root::mozilla::PostTraversalTask_Type = 3; + pub const PostTraversalTask_Type_LoadFontEntry: root::mozilla::PostTraversalTask_Type = 4; + pub type PostTraversalTask_Type = i32; + #[test] + fn bindgen_test_layout_PostTraversalTask() { + assert_eq!( + ::std::mem::size_of::<PostTraversalTask>(), + 24usize, + concat!("Size of: ", stringify!(PostTraversalTask)) + ); + assert_eq!( + ::std::mem::align_of::<PostTraversalTask>(), + 8usize, + concat!("Alignment of ", stringify!(PostTraversalTask)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PostTraversalTask>())).mType as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PostTraversalTask), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PostTraversalTask>())).mTarget as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PostTraversalTask), + "::", + stringify!(mTarget) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PostTraversalTask>())).mResult as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(PostTraversalTask), + "::", + stringify!(mResult) + ) + ); + } + impl Clone for PostTraversalTask { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ServoStyleRuleMap { + _unused: [u8; 0], + } + pub const StylistState_NotDirty: root::mozilla::StylistState = 0; + pub const StylistState_StyleSheetsDirty: root::mozilla::StylistState = 1; + pub const StylistState_XBLStyleSheetsDirty: root::mozilla::StylistState = 2; + pub type StylistState = u8; + pub const OriginFlags_UserAgent: root::mozilla::OriginFlags = root::mozilla::OriginFlags(1); + pub const OriginFlags_User: root::mozilla::OriginFlags = root::mozilla::OriginFlags(2); + pub const OriginFlags_Author: root::mozilla::OriginFlags = root::mozilla::OriginFlags(4); + pub const OriginFlags_All: root::mozilla::OriginFlags = root::mozilla::OriginFlags(7); + impl ::std::ops::BitOr<root::mozilla::OriginFlags> for root::mozilla::OriginFlags { + type Output = Self; + #[inline] + fn bitor(self, other: Self) -> Self { + OriginFlags(self.0 | other.0) + } + } + impl ::std::ops::BitOrAssign for root::mozilla::OriginFlags { + #[inline] + fn bitor_assign(&mut self, rhs: root::mozilla::OriginFlags) { + self.0 |= rhs.0; + } + } + impl ::std::ops::BitAnd<root::mozilla::OriginFlags> for root::mozilla::OriginFlags { + type Output = Self; + #[inline] + fn bitand(self, other: Self) -> Self { + OriginFlags(self.0 & other.0) + } + } + impl ::std::ops::BitAndAssign for root::mozilla::OriginFlags { + #[inline] + fn bitand_assign(&mut self, rhs: root::mozilla::OriginFlags) { + self.0 &= rhs.0; + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub struct OriginFlags(pub u8); + /// The set of style sheets that apply to a document, backed by a Servo + /// Stylist. A ServoStyleSet contains ServoStyleSheets. + #[repr(C)] + #[derive(Debug)] + pub struct ServoStyleSet { + pub mKind: root::mozilla::ServoStyleSet_Kind, + pub mDocument: *mut root::nsIDocument, + pub mLastPresContextUsesXBLStyleSet: *mut ::std::os::raw::c_void, + pub mRawSet: root::mozilla::UniquePtr<root::RawServoStyleSet>, + pub mSheets: [u64; 9usize], + pub mAuthorStyleDisabled: bool, + pub mStylistState: root::mozilla::StylistState, + pub mUserFontSetUpdateGeneration: u64, + pub mUserFontCacheUpdateGeneration: u32, + pub mNeedsRestyleAfterEnsureUniqueInner: bool, + pub mNonInheritingStyleContexts: [u64; 7usize], + pub mPostTraversalTasks: root::nsTArray<root::mozilla::PostTraversalTask>, + pub mStyleRuleMap: root::mozilla::UniquePtr<root::mozilla::ServoStyleRuleMap>, + } + pub type ServoStyleSet_SnapshotTable = root::mozilla::ServoElementSnapshotTable; + pub const ServoStyleSet_Kind_Master: root::mozilla::ServoStyleSet_Kind = 0; + pub const ServoStyleSet_Kind_ForXBL: root::mozilla::ServoStyleSet_Kind = 1; + pub type ServoStyleSet_Kind = u8; + extern "C" { + #[link_name = "\u{1}_ZN7mozilla13ServoStyleSet17sInServoTraversalE"] + pub static mut ServoStyleSet_sInServoTraversal: *mut root::mozilla::ServoStyleSet; + } + #[test] + fn bindgen_test_layout_ServoStyleSet() { + assert_eq!( + ::std::mem::size_of::<ServoStyleSet>(), + 200usize, + concat!("Size of: ", stringify!(ServoStyleSet)) + ); + assert_eq!( + ::std::mem::align_of::<ServoStyleSet>(), + 8usize, + concat!("Alignment of ", stringify!(ServoStyleSet)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoStyleSet>())).mKind as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mKind) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoStyleSet>())).mDocument as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mDocument) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mLastPresContextUsesXBLStyleSet + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mLastPresContextUsesXBLStyleSet) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoStyleSet>())).mRawSet as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mRawSet) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoStyleSet>())).mSheets as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mSheets) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mAuthorStyleDisabled as *const _ + as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mAuthorStyleDisabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mStylistState as *const _ as usize + }, + 105usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mStylistState) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mUserFontSetUpdateGeneration + as *const _ as usize + }, + 112usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mUserFontSetUpdateGeneration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mUserFontCacheUpdateGeneration + as *const _ as usize + }, + 120usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mUserFontCacheUpdateGeneration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mNeedsRestyleAfterEnsureUniqueInner + as *const _ as usize + }, + 124usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mNeedsRestyleAfterEnsureUniqueInner) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mNonInheritingStyleContexts + as *const _ as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mNonInheritingStyleContexts) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mPostTraversalTasks as *const _ + as usize + }, + 184usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mPostTraversalTasks) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleSet>())).mStyleRuleMap as *const _ as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleSet), + "::", + stringify!(mStyleRuleMap) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct CachedInheritingStyles { + pub mBits: usize, + } + pub type CachedInheritingStyles_IndirectCache = [u64; 6usize]; + #[test] + fn bindgen_test_layout_CachedInheritingStyles() { + assert_eq!( + ::std::mem::size_of::<CachedInheritingStyles>(), + 8usize, + concat!("Size of: ", stringify!(CachedInheritingStyles)) + ); + assert_eq!( + ::std::mem::align_of::<CachedInheritingStyles>(), + 8usize, + concat!("Alignment of ", stringify!(CachedInheritingStyles)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CachedInheritingStyles>())).mBits as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CachedInheritingStyles), + "::", + stringify!(mBits) + ) + ); + } + #[repr(C)] + pub struct ServoStyleContext { + pub _base: root::nsStyleContext, + pub mPresContext: *mut root::nsPresContext, + pub mSource: root::ServoComputedData, + pub mCachedInheritingStyles: root::mozilla::CachedInheritingStyles, + } + #[test] + fn bindgen_test_layout_ServoStyleContext() { + assert_eq!( + ::std::mem::size_of::<ServoStyleContext>(), + 248usize, + concat!("Size of: ", stringify!(ServoStyleContext)) + ); + assert_eq!( + ::std::mem::align_of::<ServoStyleContext>(), + 8usize, + concat!("Alignment of ", stringify!(ServoStyleContext)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleContext>())).mPresContext as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleContext), + "::", + stringify!(mPresContext) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleContext>())).mSource as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleContext), + "::", + stringify!(mSource) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoStyleContext>())).mCachedInheritingStyles + as *const _ as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(ServoStyleContext), + "::", + stringify!(mCachedInheritingStyles) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct DeclarationBlock { + pub mContainer: root::mozilla::DeclarationBlock__bindgen_ty_1, + pub mImmutable: bool, + pub mType: root::mozilla::StyleBackendType, + pub mIsDirty: u32, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct DeclarationBlock__bindgen_ty_1 { + pub mRaw: root::__BindgenUnionField<usize>, + pub mOwningRule: root::__BindgenUnionField<*mut root::mozilla::css::Rule>, + pub mHTMLCSSStyleSheet: root::__BindgenUnionField<*mut root::nsHTMLCSSStyleSheet>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_DeclarationBlock__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<DeclarationBlock__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(DeclarationBlock__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<DeclarationBlock__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(DeclarationBlock__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DeclarationBlock__bindgen_ty_1>())).mRaw as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(DeclarationBlock__bindgen_ty_1), + "::", + stringify!(mRaw) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DeclarationBlock__bindgen_ty_1>())).mOwningRule + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(DeclarationBlock__bindgen_ty_1), + "::", + stringify!(mOwningRule) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DeclarationBlock__bindgen_ty_1>())).mHTMLCSSStyleSheet + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(DeclarationBlock__bindgen_ty_1), + "::", + stringify!(mHTMLCSSStyleSheet) + ) + ); + } + impl Clone for DeclarationBlock__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_DeclarationBlock() { + assert_eq!( + ::std::mem::size_of::<DeclarationBlock>(), + 16usize, + concat!("Size of: ", stringify!(DeclarationBlock)) + ); + assert_eq!( + ::std::mem::align_of::<DeclarationBlock>(), + 8usize, + concat!("Alignment of ", stringify!(DeclarationBlock)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DeclarationBlock>())).mContainer as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(DeclarationBlock), + "::", + stringify!(mContainer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DeclarationBlock>())).mImmutable as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(DeclarationBlock), + "::", + stringify!(mImmutable) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<DeclarationBlock>())).mType as *const _ as usize }, + 9usize, + concat!( + "Offset of field: ", + stringify!(DeclarationBlock), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<DeclarationBlock>())).mIsDirty as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(DeclarationBlock), + "::", + stringify!(mIsDirty) + ) + ); + } + impl Clone for DeclarationBlock { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct ServoDeclarationBlock { + pub _base: root::mozilla::DeclarationBlock, + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mRaw: root::RefPtr<root::RawServoDeclarationBlock>, + } + pub type ServoDeclarationBlock_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_ServoDeclarationBlock() { + assert_eq!( + ::std::mem::size_of::<ServoDeclarationBlock>(), + 32usize, + concat!("Size of: ", stringify!(ServoDeclarationBlock)) + ); + assert_eq!( + ::std::mem::align_of::<ServoDeclarationBlock>(), + 8usize, + concat!("Alignment of ", stringify!(ServoDeclarationBlock)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoDeclarationBlock>())).mRefCnt as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ServoDeclarationBlock), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoDeclarationBlock>())).mRaw as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ServoDeclarationBlock), + "::", + stringify!(mRaw) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct CSSFontFaceDescriptors { + pub mFamily: root::nsCSSValue, + pub mStyle: root::nsCSSValue, + pub mWeight: root::nsCSSValue, + pub mStretch: root::nsCSSValue, + pub mSrc: root::nsCSSValue, + pub mUnicodeRange: root::nsCSSValue, + pub mFontFeatureSettings: root::nsCSSValue, + pub mFontLanguageOverride: root::nsCSSValue, + pub mDisplay: root::nsCSSValue, + } + extern "C" { + #[link_name = "\u{1}_ZN7mozilla22CSSFontFaceDescriptors6FieldsE"] + pub static mut CSSFontFaceDescriptors_Fields: [*const root::nsCSSValue; 0usize]; + } + #[test] + fn bindgen_test_layout_CSSFontFaceDescriptors() { + assert_eq!( + ::std::mem::size_of::<CSSFontFaceDescriptors>(), + 144usize, + concat!("Size of: ", stringify!(CSSFontFaceDescriptors)) + ); + assert_eq!( + ::std::mem::align_of::<CSSFontFaceDescriptors>(), + 8usize, + concat!("Alignment of ", stringify!(CSSFontFaceDescriptors)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mFamily as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mFamily) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mStyle as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mStyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mWeight as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mWeight) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mStretch as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mStretch) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mSrc as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mSrc) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mUnicodeRange as *const _ + as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mUnicodeRange) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mFontFeatureSettings + as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mFontFeatureSettings) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mFontLanguageOverride + as *const _ as usize + }, + 112usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mFontLanguageOverride) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CSSFontFaceDescriptors>())).mDisplay as *const _ as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(CSSFontFaceDescriptors), + "::", + stringify!(mDisplay) + ) + ); + } + pub mod intl { + #[allow(unused_imports)] + use self::super::super::super::root; + #[repr(C)] + #[derive(Debug)] + pub struct LineBreaker { + pub mRefCnt: root::nsAutoRefCnt, + } + pub type LineBreaker_HasThreadSafeRefCnt = root::mozilla::FalseType; + pub const LineBreaker_kWordBreak_Normal: + root::mozilla::intl::LineBreaker__bindgen_ty_1 = 0; + pub const LineBreaker_kWordBreak_BreakAll: + root::mozilla::intl::LineBreaker__bindgen_ty_1 = 1; + pub const LineBreaker_kWordBreak_KeepAll: + root::mozilla::intl::LineBreaker__bindgen_ty_1 = 2; + pub type LineBreaker__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_LineBreaker() { + assert_eq!( + ::std::mem::size_of::<LineBreaker>(), + 8usize, + concat!("Size of: ", stringify!(LineBreaker)) + ); + assert_eq!( + ::std::mem::align_of::<LineBreaker>(), + 8usize, + concat!("Alignment of ", stringify!(LineBreaker)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<LineBreaker>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(LineBreaker), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct WordBreaker { + pub mRefCnt: root::nsAutoRefCnt, + } + pub type WordBreaker_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_WordBreaker() { + assert_eq!( + ::std::mem::size_of::<WordBreaker>(), + 8usize, + concat!("Size of: ", stringify!(WordBreaker)) + ); + assert_eq!( + ::std::mem::align_of::<WordBreaker>(), + 8usize, + concat!("Alignment of ", stringify!(WordBreaker)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<WordBreaker>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(WordBreaker), + "::", + stringify!(mRefCnt) + ) + ); + } + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct InfallibleAllocPolicy { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_InfallibleAllocPolicy() { + assert_eq!( + ::std::mem::size_of::<InfallibleAllocPolicy>(), + 1usize, + concat!("Size of: ", stringify!(InfallibleAllocPolicy)) + ); + assert_eq!( + ::std::mem::align_of::<InfallibleAllocPolicy>(), + 1usize, + concat!("Alignment of ", stringify!(InfallibleAllocPolicy)) + ); + } + impl Clone for InfallibleAllocPolicy { + fn clone(&self) -> Self { + *self + } + } + /// MozRefCountType is Mozilla's reference count type. /// /// We use the same type to represent the refcount of RefCounted objects /// as well, in order to be able to use the leak detection facilities /// that are implemented by XPCOM. /// /// Note that this type is not in the mozilla namespace so that it is - /// usable for both C and C++ code. - pub type MozRefCountType = usize ; pub const nsresult_NS_ERROR_NO_INTERFACE : root :: nsresult = nsresult :: NS_NOINTERFACE ; pub const nsresult_NS_ERROR_INVALID_ARG : root :: nsresult = nsresult :: NS_ERROR_ILLEGAL_VALUE ; pub const nsresult_NS_ERROR_INVALID_POINTER : root :: nsresult = nsresult :: NS_ERROR_ILLEGAL_VALUE ; pub const nsresult_NS_ERROR_NULL_POINTER : root :: nsresult = nsresult :: NS_ERROR_ILLEGAL_VALUE ; pub const nsresult_NS_BINDING_SUCCEEDED : root :: nsresult = nsresult :: NS_OK ; pub const nsresult_NS_NET_STATUS_RESOLVING_HOST : root :: nsresult = nsresult :: NS_BINDING_REDIRECTED ; pub const nsresult_NS_NET_STATUS_RESOLVED_HOST : root :: nsresult = nsresult :: NS_ERROR_ALREADY_CONNECTED ; pub const nsresult_NS_NET_STATUS_CONNECTED_TO : root :: nsresult = nsresult :: NS_BINDING_RETARGETED ; pub const nsresult_NS_NET_STATUS_TLS_HANDSHAKE_STARTING : root :: nsresult = nsresult :: NS_ERROR_NOT_CONNECTED ; pub const nsresult_NS_NET_STATUS_TLS_HANDSHAKE_ENDED : root :: nsresult = nsresult :: NS_ERROR_CONNECTION_REFUSED ; pub const nsresult_NS_NET_STATUS_WAITING_FOR : root :: nsresult = nsresult :: NS_ERROR_MALFORMED_URI ; pub const nsresult_NS_STATE_PROPERTY_EXISTS : root :: nsresult = nsresult :: NS_OK ; pub const nsresult_NS_ERROR_HTMLPARSER_CONTINUE : root :: nsresult = nsresult :: NS_OK ; pub const nsresult_NS_RDF_ASSERTION_ACCEPTED : root :: nsresult = nsresult :: NS_OK ; pub const nsresult_NS_EXACT_LENGTH : root :: nsresult = nsresult :: NS_OK_UDEC_EXACTLENGTH ; pub const nsresult_NS_PARTIAL_MORE_INPUT : root :: nsresult = nsresult :: NS_OK_UDEC_MOREINPUT ; pub const nsresult_NS_PARTIAL_MORE_OUTPUT : root :: nsresult = nsresult :: NS_OK_UDEC_MOREOUTPUT ; pub const nsresult_NS_ERROR_ILLEGAL_INPUT : root :: nsresult = nsresult :: NS_ERROR_UDEC_ILLEGALINPUT ; pub const nsresult_NS_ERROR_XPATH_INVALID_ARG : root :: nsresult = nsresult :: NS_ERROR_ILLEGAL_VALUE ; pub const nsresult_NS_SUCCESS_RESTART_APP : root :: nsresult = nsresult :: NS_SUCCESS_DONT_FIXUP ; # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsresult { NS_OK = 0 , NS_ERROR_BASE = 3253927936 , NS_ERROR_NOT_INITIALIZED = 3253927937 , NS_ERROR_ALREADY_INITIALIZED = 3253927938 , NS_ERROR_NOT_IMPLEMENTED = 2147500033 , NS_NOINTERFACE = 2147500034 , NS_ERROR_ABORT = 2147500036 , NS_ERROR_FAILURE = 2147500037 , NS_ERROR_UNEXPECTED = 2147549183 , NS_ERROR_OUT_OF_MEMORY = 2147942414 , NS_ERROR_ILLEGAL_VALUE = 2147942487 , NS_ERROR_NO_AGGREGATION = 2147746064 , NS_ERROR_NOT_AVAILABLE = 2147746065 , NS_ERROR_FACTORY_NOT_REGISTERED = 2147746132 , NS_ERROR_FACTORY_REGISTER_AGAIN = 2147746133 , NS_ERROR_FACTORY_NOT_LOADED = 2147746296 , NS_ERROR_FACTORY_NO_SIGNATURE_SUPPORT = 3253928193 , NS_ERROR_FACTORY_EXISTS = 3253928192 , NS_ERROR_CANNOT_CONVERT_DATA = 2152071169 , NS_ERROR_OBJECT_IS_IMMUTABLE = 2152071170 , NS_ERROR_LOSS_OF_SIGNIFICANT_DATA = 2152071171 , NS_ERROR_NOT_SAME_THREAD = 2152071172 , NS_ERROR_ILLEGAL_DURING_SHUTDOWN = 2152071198 , NS_ERROR_SERVICE_NOT_AVAILABLE = 2152071190 , NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA = 4587521 , NS_SUCCESS_INTERRUPTED_TRAVERSE = 4587522 , NS_ERROR_SERVICE_NOT_FOUND = 4587542 , NS_ERROR_SERVICE_IN_USE = 4587543 , NS_BASE_STREAM_CLOSED = 2152136706 , NS_BASE_STREAM_OSERROR = 2152136707 , NS_BASE_STREAM_ILLEGAL_ARGS = 2152136708 , NS_BASE_STREAM_NO_CONVERTER = 2152136709 , NS_BASE_STREAM_BAD_CONVERSION = 2152136710 , NS_BASE_STREAM_WOULD_BLOCK = 2152136711 , NS_ERROR_GFX_PRINTER_NO_PRINTER_AVAILABLE = 2152202241 , NS_ERROR_GFX_PRINTER_NAME_NOT_FOUND = 2152202242 , NS_ERROR_GFX_PRINTER_COULD_NOT_OPEN_FILE = 2152202243 , NS_ERROR_GFX_PRINTER_STARTDOC = 2152202244 , NS_ERROR_GFX_PRINTER_ENDDOC = 2152202245 , NS_ERROR_GFX_PRINTER_STARTPAGE = 2152202246 , NS_ERROR_GFX_PRINTER_DOC_IS_BUSY = 2152202247 , NS_ERROR_GFX_CMAP_MALFORMED = 2152202291 , NS_SUCCESS_EVENT_CONSUMED = 4784129 , NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY = 4784130 , NS_BINDING_FAILED = 2152398849 , NS_BINDING_ABORTED = 2152398850 , NS_BINDING_REDIRECTED = 2152398851 , NS_BINDING_RETARGETED = 2152398852 , NS_ERROR_MALFORMED_URI = 2152398858 , NS_ERROR_IN_PROGRESS = 2152398863 , NS_ERROR_NO_CONTENT = 2152398865 , NS_ERROR_UNKNOWN_PROTOCOL = 2152398866 , NS_ERROR_INVALID_CONTENT_ENCODING = 2152398875 , NS_ERROR_CORRUPTED_CONTENT = 2152398877 , NS_ERROR_INVALID_SIGNATURE = 2152398906 , NS_ERROR_FIRST_HEADER_FIELD_COMPONENT_EMPTY = 2152398882 , NS_ERROR_ALREADY_OPENED = 2152398921 , NS_ERROR_ALREADY_CONNECTED = 2152398859 , NS_ERROR_NOT_CONNECTED = 2152398860 , NS_ERROR_CONNECTION_REFUSED = 2152398861 , NS_ERROR_NET_TIMEOUT = 2152398862 , NS_ERROR_OFFLINE = 2152398864 , NS_ERROR_PORT_ACCESS_NOT_ALLOWED = 2152398867 , NS_ERROR_NET_RESET = 2152398868 , NS_ERROR_NET_INTERRUPT = 2152398919 , NS_ERROR_PROXY_CONNECTION_REFUSED = 2152398920 , NS_ERROR_NET_PARTIAL_TRANSFER = 2152398924 , NS_ERROR_NET_INADEQUATE_SECURITY = 2152398930 , NS_ERROR_NOT_RESUMABLE = 2152398873 , NS_ERROR_REDIRECT_LOOP = 2152398879 , NS_ERROR_ENTITY_CHANGED = 2152398880 , NS_ERROR_UNSAFE_CONTENT_TYPE = 2152398922 , NS_ERROR_REMOTE_XUL = 2152398923 , NS_ERROR_LOAD_SHOWED_ERRORPAGE = 2152398925 , NS_ERROR_DOCSHELL_DYING = 2152398926 , NS_ERROR_FTP_LOGIN = 2152398869 , NS_ERROR_FTP_CWD = 2152398870 , NS_ERROR_FTP_PASV = 2152398871 , NS_ERROR_FTP_PWD = 2152398872 , NS_ERROR_FTP_LIST = 2152398876 , NS_ERROR_UNKNOWN_HOST = 2152398878 , NS_ERROR_DNS_LOOKUP_QUEUE_FULL = 2152398881 , NS_ERROR_UNKNOWN_PROXY_HOST = 2152398890 , NS_ERROR_UNKNOWN_SOCKET_TYPE = 2152398899 , NS_ERROR_SOCKET_CREATE_FAILED = 2152398900 , NS_ERROR_SOCKET_ADDRESS_NOT_SUPPORTED = 2152398901 , NS_ERROR_SOCKET_ADDRESS_IN_USE = 2152398902 , NS_ERROR_CACHE_KEY_NOT_FOUND = 2152398909 , NS_ERROR_CACHE_DATA_IS_STREAM = 2152398910 , NS_ERROR_CACHE_DATA_IS_NOT_STREAM = 2152398911 , NS_ERROR_CACHE_WAIT_FOR_VALIDATION = 2152398912 , NS_ERROR_CACHE_ENTRY_DOOMED = 2152398913 , NS_ERROR_CACHE_READ_ACCESS_DENIED = 2152398914 , NS_ERROR_CACHE_WRITE_ACCESS_DENIED = 2152398915 , NS_ERROR_CACHE_IN_USE = 2152398916 , NS_ERROR_DOCUMENT_NOT_CACHED = 2152398918 , NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS = 2152398928 , NS_ERROR_HOST_IS_IP_ADDRESS = 2152398929 , NS_SUCCESS_ADOPTED_DATA = 4915290 , NS_NET_STATUS_BEGIN_FTP_TRANSACTION = 4915227 , NS_NET_STATUS_END_FTP_TRANSACTION = 4915228 , NS_SUCCESS_AUTH_FINISHED = 4915240 , NS_NET_STATUS_READING = 2152398856 , NS_NET_STATUS_WRITING = 2152398857 , NS_NET_STATUS_CONNECTING_TO = 2152398855 , NS_NET_STATUS_SENDING_TO = 2152398853 , NS_NET_STATUS_RECEIVING_FROM = 2152398854 , NS_ERROR_INTERCEPTION_FAILED = 2152398948 , NS_ERROR_HSTS_PRIMING_TIMEOUT = 2152398958 , NS_ERROR_PLUGINS_PLUGINSNOTCHANGED = 2152465384 , NS_ERROR_PLUGIN_DISABLED = 2152465385 , NS_ERROR_PLUGIN_BLOCKLISTED = 2152465386 , NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED = 2152465387 , NS_ERROR_PLUGIN_CLICKTOPLAY = 2152465388 , NS_TABLELAYOUT_CELL_NOT_FOUND = 5046272 , NS_OK_PARSE_SHEET = 5046273 , NS_POSITION_BEFORE_TABLE = 5046275 , NS_STATE_PROPERTY_NOT_THERE = 5046277 , NS_ERROR_HTMLPARSER_EOF = 2152596456 , NS_ERROR_HTMLPARSER_UNKNOWN = 2152596457 , NS_ERROR_HTMLPARSER_CANTPROPAGATE = 2152596458 , NS_ERROR_HTMLPARSER_CONTEXTMISMATCH = 2152596459 , NS_ERROR_HTMLPARSER_BADFILENAME = 2152596460 , NS_ERROR_HTMLPARSER_BADURL = 2152596461 , NS_ERROR_HTMLPARSER_INVALIDPARSERCONTEXT = 2152596462 , NS_ERROR_HTMLPARSER_INTERRUPTED = 2152596463 , NS_ERROR_HTMLPARSER_BLOCK = 2152596464 , NS_ERROR_HTMLPARSER_BADTOKENIZER = 2152596465 , NS_ERROR_HTMLPARSER_BADATTRIBUTE = 2152596466 , NS_ERROR_HTMLPARSER_UNRESOLVEDDTD = 2152596467 , NS_ERROR_HTMLPARSER_MISPLACEDTABLECONTENT = 2152596468 , NS_ERROR_HTMLPARSER_BADDTD = 2152596469 , NS_ERROR_HTMLPARSER_BADCONTEXT = 2152596470 , NS_ERROR_HTMLPARSER_STOPPARSING = 2152596471 , NS_ERROR_HTMLPARSER_UNTERMINATEDSTRINGLITERAL = 2152596472 , NS_ERROR_HTMLPARSER_HIERARCHYTOODEEP = 2152596473 , NS_ERROR_HTMLPARSER_FAKE_ENDTAG = 2152596474 , NS_ERROR_HTMLPARSER_INVALID_COMMENT = 2152596475 , NS_HTMLTOKENS_NOT_AN_ENTITY = 5113808 , NS_HTMLPARSER_VALID_META_CHARSET = 5114808 , NS_RDF_CURSOR_EMPTY = 5177345 , NS_RDF_NO_VALUE = 5177346 , NS_RDF_ASSERTION_REJECTED = 5177347 , NS_RDF_STOP_VISIT = 5177348 , NS_ERROR_UCONV_NOCONV = 2152726529 , NS_ERROR_UDEC_ILLEGALINPUT = 2152726542 , NS_OK_HAD_REPLACEMENTS = 5242883 , NS_SUCCESS_USING_FALLBACK_LOCALE = 5242882 , NS_OK_UDEC_EXACTLENGTH = 5242891 , NS_OK_UDEC_MOREINPUT = 5242892 , NS_OK_UDEC_MOREOUTPUT = 5242893 , NS_OK_UDEC_NOBOMFOUND = 5242894 , NS_OK_UENC_EXACTLENGTH = 5242913 , NS_OK_UENC_MOREOUTPUT = 5242914 , NS_ERROR_UENC_NOMAPPING = 5242915 , NS_OK_UENC_MOREINPUT = 5242916 , NS_ERROR_FILE_UNRECOGNIZED_PATH = 2152857601 , NS_ERROR_FILE_UNRESOLVABLE_SYMLINK = 2152857602 , NS_ERROR_FILE_EXECUTION_FAILED = 2152857603 , NS_ERROR_FILE_UNKNOWN_TYPE = 2152857604 , NS_ERROR_FILE_DESTINATION_NOT_DIR = 2152857605 , NS_ERROR_FILE_TARGET_DOES_NOT_EXIST = 2152857606 , NS_ERROR_FILE_COPY_OR_MOVE_FAILED = 2152857607 , NS_ERROR_FILE_ALREADY_EXISTS = 2152857608 , NS_ERROR_FILE_INVALID_PATH = 2152857609 , NS_ERROR_FILE_DISK_FULL = 2152857610 , NS_ERROR_FILE_CORRUPTED = 2152857611 , NS_ERROR_FILE_NOT_DIRECTORY = 2152857612 , NS_ERROR_FILE_IS_DIRECTORY = 2152857613 , NS_ERROR_FILE_IS_LOCKED = 2152857614 , NS_ERROR_FILE_TOO_BIG = 2152857615 , NS_ERROR_FILE_NO_DEVICE_SPACE = 2152857616 , NS_ERROR_FILE_NAME_TOO_LONG = 2152857617 , NS_ERROR_FILE_NOT_FOUND = 2152857618 , NS_ERROR_FILE_READ_ONLY = 2152857619 , NS_ERROR_FILE_DIR_NOT_EMPTY = 2152857620 , NS_ERROR_FILE_ACCESS_DENIED = 2152857621 , NS_SUCCESS_FILE_DIRECTORY_EMPTY = 5373953 , NS_SUCCESS_AGGREGATE_RESULT = 5373954 , NS_ERROR_DOM_INDEX_SIZE_ERR = 2152923137 , NS_ERROR_DOM_HIERARCHY_REQUEST_ERR = 2152923139 , NS_ERROR_DOM_WRONG_DOCUMENT_ERR = 2152923140 , NS_ERROR_DOM_INVALID_CHARACTER_ERR = 2152923141 , NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR = 2152923143 , NS_ERROR_DOM_NOT_FOUND_ERR = 2152923144 , NS_ERROR_DOM_NOT_SUPPORTED_ERR = 2152923145 , NS_ERROR_DOM_INUSE_ATTRIBUTE_ERR = 2152923146 , NS_ERROR_DOM_INVALID_STATE_ERR = 2152923147 , NS_ERROR_DOM_SYNTAX_ERR = 2152923148 , NS_ERROR_DOM_INVALID_MODIFICATION_ERR = 2152923149 , NS_ERROR_DOM_NAMESPACE_ERR = 2152923150 , NS_ERROR_DOM_INVALID_ACCESS_ERR = 2152923151 , NS_ERROR_DOM_TYPE_MISMATCH_ERR = 2152923153 , NS_ERROR_DOM_SECURITY_ERR = 2152923154 , NS_ERROR_DOM_NETWORK_ERR = 2152923155 , NS_ERROR_DOM_ABORT_ERR = 2152923156 , NS_ERROR_DOM_URL_MISMATCH_ERR = 2152923157 , NS_ERROR_DOM_QUOTA_EXCEEDED_ERR = 2152923158 , NS_ERROR_DOM_TIMEOUT_ERR = 2152923159 , NS_ERROR_DOM_INVALID_NODE_TYPE_ERR = 2152923160 , NS_ERROR_DOM_DATA_CLONE_ERR = 2152923161 , NS_ERROR_TYPE_ERR = 2152923162 , NS_ERROR_RANGE_ERR = 2152923163 , NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR = 2152923164 , NS_ERROR_DOM_INVALID_POINTER_ERR = 2152923165 , NS_ERROR_DOM_UNKNOWN_ERR = 2152923166 , NS_ERROR_DOM_DATA_ERR = 2152923167 , NS_ERROR_DOM_OPERATION_ERR = 2152923168 , NS_ERROR_DOM_NOT_ALLOWED_ERR = 2152923169 , NS_ERROR_DOM_SECMAN_ERR = 2152924137 , NS_ERROR_DOM_WRONG_TYPE_ERR = 2152924138 , NS_ERROR_DOM_NOT_OBJECT_ERR = 2152924139 , NS_ERROR_DOM_NOT_XPC_OBJECT_ERR = 2152924140 , NS_ERROR_DOM_NOT_NUMBER_ERR = 2152924141 , NS_ERROR_DOM_NOT_BOOLEAN_ERR = 2152924142 , NS_ERROR_DOM_NOT_FUNCTION_ERR = 2152924143 , NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR = 2152924144 , NS_ERROR_DOM_BAD_DOCUMENT_DOMAIN = 2152924145 , NS_ERROR_DOM_PROP_ACCESS_DENIED = 2152924146 , NS_ERROR_DOM_XPCONNECT_ACCESS_DENIED = 2152924147 , NS_ERROR_DOM_BAD_URI = 2152924148 , NS_ERROR_DOM_RETVAL_UNDEFINED = 2152924149 , NS_ERROR_DOM_QUOTA_REACHED = 2152924150 , NS_ERROR_UNCATCHABLE_EXCEPTION = 2152924151 , NS_ERROR_DOM_MALFORMED_URI = 2152924152 , NS_ERROR_DOM_INVALID_HEADER_NAME = 2152924153 , NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT = 2152924154 , NS_ERROR_DOM_INVALID_STATE_XHR_MUST_BE_OPENED = 2152924155 , NS_ERROR_DOM_INVALID_STATE_XHR_MUST_NOT_BE_SENDING = 2152924156 , NS_ERROR_DOM_INVALID_STATE_XHR_MUST_NOT_BE_LOADING_OR_DONE = 2152924157 , NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSEXML = 2152924158 , NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSETEXT = 2152924159 , NS_ERROR_DOM_INVALID_STATE_XHR_CHUNKED_RESPONSETYPES_UNSUPPORTED_FOR_SYNC = 2152924160 , NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC = 2152924161 , NS_ERROR_DOM_JS_DECODING_ERROR = 2152924162 , NS_SUCCESS_DOM_NO_OPERATION = 5439489 , NS_SUCCESS_DOM_SCRIPT_EVALUATION_THREW = 5439490 , NS_SUCCESS_DOM_SCRIPT_EVALUATION_THREW_UNCATCHABLE = 5439491 , NS_IMAGELIB_SUCCESS_LOAD_FINISHED = 5505024 , NS_IMAGELIB_ERROR_FAILURE = 2152988677 , NS_IMAGELIB_ERROR_NO_DECODER = 2152988678 , NS_IMAGELIB_ERROR_NOT_FINISHED = 2152988679 , NS_IMAGELIB_ERROR_NO_ENCODER = 2152988681 , NS_SUCCESS_EDITOR_ELEMENT_NOT_FOUND = 5636097 , NS_SUCCESS_EDITOR_FOUND_TARGET = 5636098 , NS_ERROR_XPC_NOT_ENOUGH_ARGS = 2153185281 , NS_ERROR_XPC_NEED_OUT_OBJECT = 2153185282 , NS_ERROR_XPC_CANT_SET_OUT_VAL = 2153185283 , NS_ERROR_XPC_NATIVE_RETURNED_FAILURE = 2153185284 , NS_ERROR_XPC_CANT_GET_INTERFACE_INFO = 2153185285 , NS_ERROR_XPC_CANT_GET_PARAM_IFACE_INFO = 2153185286 , NS_ERROR_XPC_CANT_GET_METHOD_INFO = 2153185287 , NS_ERROR_XPC_UNEXPECTED = 2153185288 , NS_ERROR_XPC_BAD_CONVERT_JS = 2153185289 , NS_ERROR_XPC_BAD_CONVERT_NATIVE = 2153185290 , NS_ERROR_XPC_BAD_CONVERT_JS_NULL_REF = 2153185291 , NS_ERROR_XPC_BAD_OP_ON_WN_PROTO = 2153185292 , NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN = 2153185293 , NS_ERROR_XPC_CANT_DEFINE_PROP_ON_WN = 2153185294 , NS_ERROR_XPC_CANT_WATCH_WN_STATIC = 2153185295 , NS_ERROR_XPC_CANT_EXPORT_WN_STATIC = 2153185296 , NS_ERROR_XPC_SCRIPTABLE_CALL_FAILED = 2153185297 , NS_ERROR_XPC_SCRIPTABLE_CTOR_FAILED = 2153185298 , NS_ERROR_XPC_CANT_CALL_WO_SCRIPTABLE = 2153185299 , NS_ERROR_XPC_CANT_CTOR_WO_SCRIPTABLE = 2153185300 , NS_ERROR_XPC_CI_RETURNED_FAILURE = 2153185301 , NS_ERROR_XPC_GS_RETURNED_FAILURE = 2153185302 , NS_ERROR_XPC_BAD_CID = 2153185303 , NS_ERROR_XPC_BAD_IID = 2153185304 , NS_ERROR_XPC_CANT_CREATE_WN = 2153185305 , NS_ERROR_XPC_JS_THREW_EXCEPTION = 2153185306 , NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT = 2153185307 , NS_ERROR_XPC_JS_THREW_JS_OBJECT = 2153185308 , NS_ERROR_XPC_JS_THREW_NULL = 2153185309 , NS_ERROR_XPC_JS_THREW_STRING = 2153185310 , NS_ERROR_XPC_JS_THREW_NUMBER = 2153185311 , NS_ERROR_XPC_JAVASCRIPT_ERROR = 2153185312 , NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS = 2153185313 , NS_ERROR_XPC_CANT_CONVERT_PRIMITIVE_TO_ARRAY = 2153185314 , NS_ERROR_XPC_CANT_CONVERT_OBJECT_TO_ARRAY = 2153185315 , NS_ERROR_XPC_NOT_ENOUGH_ELEMENTS_IN_ARRAY = 2153185316 , NS_ERROR_XPC_CANT_GET_ARRAY_INFO = 2153185317 , NS_ERROR_XPC_NOT_ENOUGH_CHARS_IN_STRING = 2153185318 , NS_ERROR_XPC_SECURITY_MANAGER_VETO = 2153185319 , NS_ERROR_XPC_INTERFACE_NOT_SCRIPTABLE = 2153185320 , NS_ERROR_XPC_INTERFACE_NOT_FROM_NSISUPPORTS = 2153185321 , NS_ERROR_XPC_CANT_GET_JSOBJECT_OF_DOM_OBJECT = 2153185322 , NS_ERROR_XPC_CANT_SET_READ_ONLY_CONSTANT = 2153185323 , NS_ERROR_XPC_CANT_SET_READ_ONLY_ATTRIBUTE = 2153185324 , NS_ERROR_XPC_CANT_SET_READ_ONLY_METHOD = 2153185325 , NS_ERROR_XPC_CANT_ADD_PROP_TO_WRAPPED_NATIVE = 2153185326 , NS_ERROR_XPC_CALL_TO_SCRIPTABLE_FAILED = 2153185327 , NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED = 2153185328 , NS_ERROR_XPC_BAD_ID_STRING = 2153185329 , NS_ERROR_XPC_BAD_INITIALIZER_NAME = 2153185330 , NS_ERROR_XPC_HAS_BEEN_SHUTDOWN = 2153185331 , NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN = 2153185332 , NS_ERROR_XPC_BAD_CONVERT_JS_ZERO_ISNOT_NULL = 2153185333 , NS_ERROR_XPC_CANT_PASS_CPOW_TO_NATIVE = 2153185334 , NS_ERROR_LAUNCHED_CHILD_PROCESS = 2153251016 , NS_ERROR_CSP_FORM_ACTION_VIOLATION = 2153381986 , NS_ERROR_CSP_FRAME_ANCESTOR_VIOLATION = 2153381987 , NS_ERROR_SRI_CORRUPT = 2153382088 , NS_ERROR_SRI_DISABLED = 2153382089 , NS_ERROR_SRI_NOT_ELIGIBLE = 2153382090 , NS_ERROR_SRI_UNEXPECTED_HASH_TYPE = 2153382091 , NS_ERROR_SRI_IMPORT = 2153382092 , NS_ERROR_CMS_VERIFY_NOT_SIGNED = 2153382912 , NS_ERROR_CMS_VERIFY_NO_CONTENT_INFO = 2153382913 , NS_ERROR_CMS_VERIFY_BAD_DIGEST = 2153382914 , NS_ERROR_CMS_VERIFY_NOCERT = 2153382916 , NS_ERROR_CMS_VERIFY_UNTRUSTED = 2153382917 , NS_ERROR_CMS_VERIFY_ERROR_UNVERIFIED = 2153382919 , NS_ERROR_CMS_VERIFY_ERROR_PROCESSING = 2153382920 , NS_ERROR_CMS_VERIFY_BAD_SIGNATURE = 2153382921 , NS_ERROR_CMS_VERIFY_DIGEST_MISMATCH = 2153382922 , NS_ERROR_CMS_VERIFY_UNKNOWN_ALGO = 2153382923 , NS_ERROR_CMS_VERIFY_UNSUPPORTED_ALGO = 2153382924 , NS_ERROR_CMS_VERIFY_MALFORMED_SIGNATURE = 2153382925 , NS_ERROR_CMS_VERIFY_HEADER_MISMATCH = 2153382926 , NS_ERROR_CMS_VERIFY_NOT_YET_ATTEMPTED = 2153382927 , NS_ERROR_CMS_VERIFY_CERT_WITHOUT_ADDRESS = 2153382928 , NS_ERROR_CMS_ENCRYPT_NO_BULK_ALG = 2153382944 , NS_ERROR_CMS_ENCRYPT_INCOMPLETE = 2153382945 , NS_ERROR_DOM_INVALID_EXPRESSION_ERR = 2153447475 , NS_ERROR_DOM_TYPE_ERR = 2153447476 , NS_ERROR_WONT_HANDLE_CONTENT = 2153578497 , NS_ERROR_MALWARE_URI = 2153578526 , NS_ERROR_PHISHING_URI = 2153578527 , NS_ERROR_TRACKING_URI = 2153578530 , NS_ERROR_UNWANTED_URI = 2153578531 , NS_ERROR_BLOCKED_URI = 2153578533 , NS_ERROR_HARMFUL_URI = 2153578534 , NS_ERROR_SAVE_LINK_AS_TIMEOUT = 2153578528 , NS_ERROR_PARSED_DATA_CACHED = 2153578529 , NS_REFRESHURI_HEADER_FOUND = 6094850 , NS_ERROR_CONTENT_BLOCKED = 2153644038 , NS_ERROR_CONTENT_BLOCKED_SHOW_ALT = 2153644039 , NS_PROPTABLE_PROP_NOT_THERE = 2153644042 , NS_ERROR_XBL_BLOCKED = 2153644047 , NS_ERROR_CONTENT_CRASHED = 2153644048 , NS_HTML_STYLE_PROPERTY_NOT_THERE = 6160386 , NS_CONTENT_BLOCKED = 6160392 , NS_CONTENT_BLOCKED_SHOW_ALT = 6160393 , NS_PROPTABLE_PROP_OVERWRITTEN = 6160395 , NS_FINDBROADCASTER_NOT_FOUND = 6160396 , NS_FINDBROADCASTER_FOUND = 6160397 , NS_FINDBROADCASTER_AWAIT_OVERLAYS = 6160398 , NS_ERROR_XSLT_PARSE_FAILURE = 2153775105 , NS_ERROR_XPATH_PARSE_FAILURE = 2153775106 , NS_ERROR_XSLT_ALREADY_SET = 2153775107 , NS_ERROR_XSLT_EXECUTION_FAILURE = 2153775108 , NS_ERROR_XPATH_UNKNOWN_FUNCTION = 2153775109 , NS_ERROR_XSLT_BAD_RECURSION = 2153775110 , NS_ERROR_XSLT_BAD_VALUE = 2153775111 , NS_ERROR_XSLT_NODESET_EXPECTED = 2153775112 , NS_ERROR_XSLT_ABORTED = 2153775113 , NS_ERROR_XSLT_NETWORK_ERROR = 2153775114 , NS_ERROR_XSLT_WRONG_MIME_TYPE = 2153775115 , NS_ERROR_XSLT_LOAD_RECURSION = 2153775116 , NS_ERROR_XPATH_BAD_ARGUMENT_COUNT = 2153775117 , NS_ERROR_XPATH_BAD_EXTENSION_FUNCTION = 2153775118 , NS_ERROR_XPATH_PAREN_EXPECTED = 2153775119 , NS_ERROR_XPATH_INVALID_AXIS = 2153775120 , NS_ERROR_XPATH_NO_NODE_TYPE_TEST = 2153775121 , NS_ERROR_XPATH_BRACKET_EXPECTED = 2153775122 , NS_ERROR_XPATH_INVALID_VAR_NAME = 2153775123 , NS_ERROR_XPATH_UNEXPECTED_END = 2153775124 , NS_ERROR_XPATH_OPERATOR_EXPECTED = 2153775125 , NS_ERROR_XPATH_UNCLOSED_LITERAL = 2153775126 , NS_ERROR_XPATH_BAD_COLON = 2153775127 , NS_ERROR_XPATH_BAD_BANG = 2153775128 , NS_ERROR_XPATH_ILLEGAL_CHAR = 2153775129 , NS_ERROR_XPATH_BINARY_EXPECTED = 2153775130 , NS_ERROR_XSLT_LOAD_BLOCKED_ERROR = 2153775131 , NS_ERROR_XPATH_INVALID_EXPRESSION_EVALUATED = 2153775132 , NS_ERROR_XPATH_UNBALANCED_CURLY_BRACE = 2153775133 , NS_ERROR_XSLT_BAD_NODE_NAME = 2153775134 , NS_ERROR_XSLT_VAR_ALREADY_SET = 2153775135 , NS_ERROR_XSLT_CALL_TO_KEY_NOT_ALLOWED = 2153775136 , NS_XSLT_GET_NEW_HANDLER = 6291457 , NS_ERROR_TRANSPORT_INIT = 2153840641 , NS_ERROR_DUPLICATE_HANDLE = 2153840642 , NS_ERROR_BRIDGE_OPEN_PARENT = 2153840643 , NS_ERROR_BRIDGE_OPEN_CHILD = 2153840644 , NS_ERROR_DOM_SVG_WRONG_TYPE_ERR = 2153906176 , NS_ERROR_DOM_SVG_MATRIX_NOT_INVERTABLE = 2153906178 , NS_ERROR_STORAGE_BUSY = 2153971713 , NS_ERROR_STORAGE_IOERR = 2153971714 , NS_ERROR_STORAGE_CONSTRAINT = 2153971715 , NS_ERROR_DOM_FILE_NOT_FOUND_ERR = 2154102784 , NS_ERROR_DOM_FILE_NOT_READABLE_ERR = 2154102785 , NS_ERROR_DOM_FILE_ABORT_ERR = 2154102786 , NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR = 2154168321 , NS_ERROR_DOM_INDEXEDDB_NOT_FOUND_ERR = 2154168323 , NS_ERROR_DOM_INDEXEDDB_CONSTRAINT_ERR = 2154168324 , NS_ERROR_DOM_INDEXEDDB_DATA_ERR = 2154168325 , NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR = 2154168326 , NS_ERROR_DOM_INDEXEDDB_TRANSACTION_INACTIVE_ERR = 2154168327 , NS_ERROR_DOM_INDEXEDDB_ABORT_ERR = 2154168328 , NS_ERROR_DOM_INDEXEDDB_READ_ONLY_ERR = 2154168329 , NS_ERROR_DOM_INDEXEDDB_TIMEOUT_ERR = 2154168330 , NS_ERROR_DOM_INDEXEDDB_QUOTA_ERR = 2154168331 , NS_ERROR_DOM_INDEXEDDB_VERSION_ERR = 2154168332 , NS_ERROR_DOM_INDEXEDDB_RECOVERABLE_ERR = 2154169321 , NS_ERROR_DOM_FILEHANDLE_UNKNOWN_ERR = 2154233857 , NS_ERROR_DOM_FILEHANDLE_NOT_ALLOWED_ERR = 2154233858 , NS_ERROR_DOM_FILEHANDLE_INACTIVE_ERR = 2154233859 , NS_ERROR_DOM_FILEHANDLE_ABORT_ERR = 2154233860 , NS_ERROR_DOM_FILEHANDLE_READ_ONLY_ERR = 2154233861 , NS_ERROR_DOM_FILEHANDLE_QUOTA_ERR = 2154233862 , NS_ERROR_SIGNED_JAR_NOT_SIGNED = 2154299393 , NS_ERROR_SIGNED_JAR_MODIFIED_ENTRY = 2154299394 , NS_ERROR_SIGNED_JAR_UNSIGNED_ENTRY = 2154299395 , NS_ERROR_SIGNED_JAR_ENTRY_MISSING = 2154299396 , NS_ERROR_SIGNED_JAR_WRONG_SIGNATURE = 2154299397 , NS_ERROR_SIGNED_JAR_ENTRY_TOO_LARGE = 2154299398 , NS_ERROR_SIGNED_JAR_ENTRY_INVALID = 2154299399 , NS_ERROR_SIGNED_JAR_MANIFEST_INVALID = 2154299400 , NS_ERROR_DOM_FILESYSTEM_INVALID_PATH_ERR = 2154364929 , NS_ERROR_DOM_FILESYSTEM_INVALID_MODIFICATION_ERR = 2154364930 , NS_ERROR_DOM_FILESYSTEM_NO_MODIFICATION_ALLOWED_ERR = 2154364931 , NS_ERROR_DOM_FILESYSTEM_PATH_EXISTS_ERR = 2154364932 , NS_ERROR_DOM_FILESYSTEM_TYPE_MISMATCH_ERR = 2154364933 , NS_ERROR_DOM_FILESYSTEM_UNKNOWN_ERR = 2154364934 , NS_ERROR_SIGNED_APP_MANIFEST_INVALID = 2154496001 , NS_ERROR_DOM_ANIM_MISSING_PROPS_ERR = 2154561537 , NS_ERROR_DOM_PUSH_INVALID_REGISTRATION_ERR = 2154627073 , NS_ERROR_DOM_PUSH_DENIED_ERR = 2154627074 , NS_ERROR_DOM_PUSH_ABORT_ERR = 2154627075 , NS_ERROR_DOM_PUSH_SERVICE_UNREACHABLE = 2154627076 , NS_ERROR_DOM_PUSH_INVALID_KEY_ERR = 2154627077 , NS_ERROR_DOM_PUSH_MISMATCHED_KEY_ERR = 2154627078 , NS_ERROR_DOM_PUSH_GCM_DISABLED = 2154627079 , NS_ERROR_DOM_MEDIA_ABORT_ERR = 2154692609 , NS_ERROR_DOM_MEDIA_NOT_ALLOWED_ERR = 2154692610 , NS_ERROR_DOM_MEDIA_NOT_SUPPORTED_ERR = 2154692611 , NS_ERROR_DOM_MEDIA_DECODE_ERR = 2154692612 , NS_ERROR_DOM_MEDIA_FATAL_ERR = 2154692613 , NS_ERROR_DOM_MEDIA_METADATA_ERR = 2154692614 , NS_ERROR_DOM_MEDIA_OVERFLOW_ERR = 2154692615 , NS_ERROR_DOM_MEDIA_END_OF_STREAM = 2154692616 , NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA = 2154692617 , NS_ERROR_DOM_MEDIA_CANCELED = 2154692618 , NS_ERROR_DOM_MEDIA_MEDIASINK_ERR = 2154692619 , NS_ERROR_DOM_MEDIA_DEMUXER_ERR = 2154692620 , NS_ERROR_DOM_MEDIA_CDM_ERR = 2154692621 , NS_ERROR_DOM_MEDIA_NEED_NEW_DECODER = 2154692622 , NS_ERROR_DOM_MEDIA_INITIALIZING_DECODER = 2154692623 , NS_ERROR_DOM_MEDIA_CUBEB_INITIALIZATION_ERR = 2154692709 , NS_ERROR_UC_UPDATE_UNKNOWN = 2154758145 , NS_ERROR_UC_UPDATE_DUPLICATE_PREFIX = 2154758146 , NS_ERROR_UC_UPDATE_INFINITE_LOOP = 2154758147 , NS_ERROR_UC_UPDATE_WRONG_REMOVAL_INDICES = 2154758148 , NS_ERROR_UC_UPDATE_CHECKSUM_MISMATCH = 2154758149 , NS_ERROR_UC_UPDATE_MISSING_CHECKSUM = 2154758150 , NS_ERROR_UC_UPDATE_SHUTDOWNING = 2154758151 , NS_ERROR_UC_UPDATE_TABLE_NOT_FOUND = 2154758152 , NS_ERROR_UC_UPDATE_BUILD_PREFIX_FAILURE = 2154758153 , NS_ERROR_UC_UPDATE_FAIL_TO_WRITE_DISK = 2154758154 , NS_ERROR_UC_UPDATE_PROTOCOL_PARSER_ERROR = 2154758155 , NS_ERROR_INTERNAL_ERRORRESULT_JS_EXCEPTION = 2154823681 , NS_ERROR_INTERNAL_ERRORRESULT_DOMEXCEPTION = 2154823682 , NS_ERROR_INTERNAL_ERRORRESULT_EXCEPTION_ON_JSCONTEXT = 2154823683 , NS_ERROR_INTERNAL_ERRORRESULT_TYPEERROR = 2154823684 , NS_ERROR_INTERNAL_ERRORRESULT_RANGEERROR = 2154823685 , NS_ERROR_DOWNLOAD_COMPLETE = 2155347969 , NS_ERROR_DOWNLOAD_NOT_PARTIAL = 2155347970 , NS_ERROR_UNORM_MOREOUTPUT = 2155348001 , NS_ERROR_DOCSHELL_REQUEST_REJECTED = 2155348969 , NS_ERROR_DOCUMENT_IS_PRINTMODE = 2155349969 , NS_SUCCESS_DONT_FIXUP = 7864321 , NS_SUCCESS_RESTART_APP_NOT_SAME_PROFILE = 7864323 , NS_SUCCESS_UNORM_NOTFOUND = 7864337 , NS_ERROR_NOT_IN_TREE = 2155348006 , NS_OK_NO_NAME_CLAUSE_HANDLED = 7864354 , } pub type nsrefcnt = root :: MozRefCountType ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIFrame { _unused : [ u8 ; 0 ] } pub type nsAString = root :: nsTSubstring < u16 > ; pub type nsAutoString = [ u64 ; 19usize ] ; pub type nsACString = root :: nsTSubstring < :: std :: os :: raw :: c_char > ; pub type nsCString = root :: nsTString < :: std :: os :: raw :: c_char > ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsCharTraits { pub _address : u8 , } - /// @see nsTAString - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsReadingIterator < CharT > { pub mStart : * mut CharT , pub mEnd : * mut CharT , pub mPosition : * mut CharT , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < CharT > > , } pub type nsReadingIterator_self_type < CharT > = root :: nsReadingIterator < CharT > ; pub type nsReadingIterator_difference_type = isize ; pub type nsReadingIterator_size_type = usize ; pub type nsReadingIterator_value_type < CharT > = CharT ; pub type nsReadingIterator_pointer < CharT > = * mut CharT ; pub type nsReadingIterator_reference = u8 ; - /// @see nsTAString - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsWritingIterator < CharT > { pub mStart : * mut CharT , pub mEnd : * mut CharT , pub mPosition : * mut CharT , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < CharT > > , } pub type nsWritingIterator_self_type < CharT > = root :: nsWritingIterator < CharT > ; pub type nsWritingIterator_difference_type = isize ; pub type nsWritingIterator_size_type = usize ; pub type nsWritingIterator_value_type < CharT > = CharT ; pub type nsWritingIterator_pointer < CharT > = * mut CharT ; pub type nsWritingIterator_reference = u8 ; # [ repr ( C ) ] pub struct nsTStringComparator__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTStringComparator { pub vtable_ : * const nsTStringComparator__bindgen_vtable , } pub type nsTStringComparator_char_type < T > = T ; - /// nsTSubstring is an abstract string class. From an API perspective, this + /// usable for both C and C++ code. + pub type MozRefCountType = usize; + pub const nsresult_NS_ERROR_NO_INTERFACE: root::nsresult = nsresult::NS_NOINTERFACE; + pub const nsresult_NS_ERROR_INVALID_ARG: root::nsresult = nsresult::NS_ERROR_ILLEGAL_VALUE; + pub const nsresult_NS_ERROR_INVALID_POINTER: root::nsresult = nsresult::NS_ERROR_ILLEGAL_VALUE; + pub const nsresult_NS_ERROR_NULL_POINTER: root::nsresult = nsresult::NS_ERROR_ILLEGAL_VALUE; + pub const nsresult_NS_BINDING_SUCCEEDED: root::nsresult = nsresult::NS_OK; + pub const nsresult_NS_NET_STATUS_RESOLVING_HOST: root::nsresult = + nsresult::NS_BINDING_REDIRECTED; + pub const nsresult_NS_NET_STATUS_RESOLVED_HOST: root::nsresult = + nsresult::NS_ERROR_ALREADY_CONNECTED; + pub const nsresult_NS_NET_STATUS_CONNECTED_TO: root::nsresult = nsresult::NS_BINDING_RETARGETED; + pub const nsresult_NS_NET_STATUS_TLS_HANDSHAKE_STARTING: root::nsresult = + nsresult::NS_ERROR_NOT_CONNECTED; + pub const nsresult_NS_NET_STATUS_TLS_HANDSHAKE_ENDED: root::nsresult = + nsresult::NS_ERROR_CONNECTION_REFUSED; + pub const nsresult_NS_NET_STATUS_WAITING_FOR: root::nsresult = nsresult::NS_ERROR_MALFORMED_URI; + pub const nsresult_NS_STATE_PROPERTY_EXISTS: root::nsresult = nsresult::NS_OK; + pub const nsresult_NS_ERROR_HTMLPARSER_CONTINUE: root::nsresult = nsresult::NS_OK; + pub const nsresult_NS_RDF_ASSERTION_ACCEPTED: root::nsresult = nsresult::NS_OK; + pub const nsresult_NS_EXACT_LENGTH: root::nsresult = nsresult::NS_OK_UDEC_EXACTLENGTH; + pub const nsresult_NS_PARTIAL_MORE_INPUT: root::nsresult = nsresult::NS_OK_UDEC_MOREINPUT; + pub const nsresult_NS_PARTIAL_MORE_OUTPUT: root::nsresult = nsresult::NS_OK_UDEC_MOREOUTPUT; + pub const nsresult_NS_ERROR_ILLEGAL_INPUT: root::nsresult = + nsresult::NS_ERROR_UDEC_ILLEGALINPUT; + pub const nsresult_NS_ERROR_XPATH_INVALID_ARG: root::nsresult = + nsresult::NS_ERROR_ILLEGAL_VALUE; + pub const nsresult_NS_SUCCESS_RESTART_APP: root::nsresult = nsresult::NS_SUCCESS_DONT_FIXUP; + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsresult { + NS_OK = 0, + NS_ERROR_BASE = 3253927936, + NS_ERROR_NOT_INITIALIZED = 3253927937, + NS_ERROR_ALREADY_INITIALIZED = 3253927938, + NS_ERROR_NOT_IMPLEMENTED = 2147500033, + NS_NOINTERFACE = 2147500034, + NS_ERROR_ABORT = 2147500036, + NS_ERROR_FAILURE = 2147500037, + NS_ERROR_UNEXPECTED = 2147549183, + NS_ERROR_OUT_OF_MEMORY = 2147942414, + NS_ERROR_ILLEGAL_VALUE = 2147942487, + NS_ERROR_NO_AGGREGATION = 2147746064, + NS_ERROR_NOT_AVAILABLE = 2147746065, + NS_ERROR_FACTORY_NOT_REGISTERED = 2147746132, + NS_ERROR_FACTORY_REGISTER_AGAIN = 2147746133, + NS_ERROR_FACTORY_NOT_LOADED = 2147746296, + NS_ERROR_FACTORY_NO_SIGNATURE_SUPPORT = 3253928193, + NS_ERROR_FACTORY_EXISTS = 3253928192, + NS_ERROR_CANNOT_CONVERT_DATA = 2152071169, + NS_ERROR_OBJECT_IS_IMMUTABLE = 2152071170, + NS_ERROR_LOSS_OF_SIGNIFICANT_DATA = 2152071171, + NS_ERROR_NOT_SAME_THREAD = 2152071172, + NS_ERROR_ILLEGAL_DURING_SHUTDOWN = 2152071198, + NS_ERROR_SERVICE_NOT_AVAILABLE = 2152071190, + NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA = 4587521, + NS_SUCCESS_INTERRUPTED_TRAVERSE = 4587522, + NS_ERROR_SERVICE_NOT_FOUND = 4587542, + NS_ERROR_SERVICE_IN_USE = 4587543, + NS_BASE_STREAM_CLOSED = 2152136706, + NS_BASE_STREAM_OSERROR = 2152136707, + NS_BASE_STREAM_ILLEGAL_ARGS = 2152136708, + NS_BASE_STREAM_NO_CONVERTER = 2152136709, + NS_BASE_STREAM_BAD_CONVERSION = 2152136710, + NS_BASE_STREAM_WOULD_BLOCK = 2152136711, + NS_ERROR_GFX_PRINTER_NO_PRINTER_AVAILABLE = 2152202241, + NS_ERROR_GFX_PRINTER_NAME_NOT_FOUND = 2152202242, + NS_ERROR_GFX_PRINTER_COULD_NOT_OPEN_FILE = 2152202243, + NS_ERROR_GFX_PRINTER_STARTDOC = 2152202244, + NS_ERROR_GFX_PRINTER_ENDDOC = 2152202245, + NS_ERROR_GFX_PRINTER_STARTPAGE = 2152202246, + NS_ERROR_GFX_PRINTER_DOC_IS_BUSY = 2152202247, + NS_ERROR_GFX_CMAP_MALFORMED = 2152202291, + NS_SUCCESS_EVENT_CONSUMED = 4784129, + NS_SUCCESS_EVENT_HANDLED_ASYNCHRONOUSLY = 4784130, + NS_BINDING_FAILED = 2152398849, + NS_BINDING_ABORTED = 2152398850, + NS_BINDING_REDIRECTED = 2152398851, + NS_BINDING_RETARGETED = 2152398852, + NS_ERROR_MALFORMED_URI = 2152398858, + NS_ERROR_IN_PROGRESS = 2152398863, + NS_ERROR_NO_CONTENT = 2152398865, + NS_ERROR_UNKNOWN_PROTOCOL = 2152398866, + NS_ERROR_INVALID_CONTENT_ENCODING = 2152398875, + NS_ERROR_CORRUPTED_CONTENT = 2152398877, + NS_ERROR_INVALID_SIGNATURE = 2152398906, + NS_ERROR_FIRST_HEADER_FIELD_COMPONENT_EMPTY = 2152398882, + NS_ERROR_ALREADY_OPENED = 2152398921, + NS_ERROR_ALREADY_CONNECTED = 2152398859, + NS_ERROR_NOT_CONNECTED = 2152398860, + NS_ERROR_CONNECTION_REFUSED = 2152398861, + NS_ERROR_NET_TIMEOUT = 2152398862, + NS_ERROR_OFFLINE = 2152398864, + NS_ERROR_PORT_ACCESS_NOT_ALLOWED = 2152398867, + NS_ERROR_NET_RESET = 2152398868, + NS_ERROR_NET_INTERRUPT = 2152398919, + NS_ERROR_PROXY_CONNECTION_REFUSED = 2152398920, + NS_ERROR_NET_PARTIAL_TRANSFER = 2152398924, + NS_ERROR_NET_INADEQUATE_SECURITY = 2152398930, + NS_ERROR_NOT_RESUMABLE = 2152398873, + NS_ERROR_REDIRECT_LOOP = 2152398879, + NS_ERROR_ENTITY_CHANGED = 2152398880, + NS_ERROR_UNSAFE_CONTENT_TYPE = 2152398922, + NS_ERROR_REMOTE_XUL = 2152398923, + NS_ERROR_LOAD_SHOWED_ERRORPAGE = 2152398925, + NS_ERROR_DOCSHELL_DYING = 2152398926, + NS_ERROR_FTP_LOGIN = 2152398869, + NS_ERROR_FTP_CWD = 2152398870, + NS_ERROR_FTP_PASV = 2152398871, + NS_ERROR_FTP_PWD = 2152398872, + NS_ERROR_FTP_LIST = 2152398876, + NS_ERROR_UNKNOWN_HOST = 2152398878, + NS_ERROR_DNS_LOOKUP_QUEUE_FULL = 2152398881, + NS_ERROR_UNKNOWN_PROXY_HOST = 2152398890, + NS_ERROR_UNKNOWN_SOCKET_TYPE = 2152398899, + NS_ERROR_SOCKET_CREATE_FAILED = 2152398900, + NS_ERROR_SOCKET_ADDRESS_NOT_SUPPORTED = 2152398901, + NS_ERROR_SOCKET_ADDRESS_IN_USE = 2152398902, + NS_ERROR_CACHE_KEY_NOT_FOUND = 2152398909, + NS_ERROR_CACHE_DATA_IS_STREAM = 2152398910, + NS_ERROR_CACHE_DATA_IS_NOT_STREAM = 2152398911, + NS_ERROR_CACHE_WAIT_FOR_VALIDATION = 2152398912, + NS_ERROR_CACHE_ENTRY_DOOMED = 2152398913, + NS_ERROR_CACHE_READ_ACCESS_DENIED = 2152398914, + NS_ERROR_CACHE_WRITE_ACCESS_DENIED = 2152398915, + NS_ERROR_CACHE_IN_USE = 2152398916, + NS_ERROR_DOCUMENT_NOT_CACHED = 2152398918, + NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS = 2152398928, + NS_ERROR_HOST_IS_IP_ADDRESS = 2152398929, + NS_SUCCESS_ADOPTED_DATA = 4915290, + NS_NET_STATUS_BEGIN_FTP_TRANSACTION = 4915227, + NS_NET_STATUS_END_FTP_TRANSACTION = 4915228, + NS_SUCCESS_AUTH_FINISHED = 4915240, + NS_NET_STATUS_READING = 2152398856, + NS_NET_STATUS_WRITING = 2152398857, + NS_NET_STATUS_CONNECTING_TO = 2152398855, + NS_NET_STATUS_SENDING_TO = 2152398853, + NS_NET_STATUS_RECEIVING_FROM = 2152398854, + NS_ERROR_INTERCEPTION_FAILED = 2152398948, + NS_ERROR_PLUGINS_PLUGINSNOTCHANGED = 2152465384, + NS_ERROR_PLUGIN_DISABLED = 2152465385, + NS_ERROR_PLUGIN_BLOCKLISTED = 2152465386, + NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED = 2152465387, + NS_ERROR_PLUGIN_CLICKTOPLAY = 2152465388, + NS_TABLELAYOUT_CELL_NOT_FOUND = 5046272, + NS_OK_PARSE_SHEET = 5046273, + NS_POSITION_BEFORE_TABLE = 5046275, + NS_STATE_PROPERTY_NOT_THERE = 5046277, + NS_ERROR_HTMLPARSER_EOF = 2152596456, + NS_ERROR_HTMLPARSER_UNKNOWN = 2152596457, + NS_ERROR_HTMLPARSER_CANTPROPAGATE = 2152596458, + NS_ERROR_HTMLPARSER_CONTEXTMISMATCH = 2152596459, + NS_ERROR_HTMLPARSER_BADFILENAME = 2152596460, + NS_ERROR_HTMLPARSER_BADURL = 2152596461, + NS_ERROR_HTMLPARSER_INVALIDPARSERCONTEXT = 2152596462, + NS_ERROR_HTMLPARSER_INTERRUPTED = 2152596463, + NS_ERROR_HTMLPARSER_BLOCK = 2152596464, + NS_ERROR_HTMLPARSER_BADTOKENIZER = 2152596465, + NS_ERROR_HTMLPARSER_BADATTRIBUTE = 2152596466, + NS_ERROR_HTMLPARSER_UNRESOLVEDDTD = 2152596467, + NS_ERROR_HTMLPARSER_MISPLACEDTABLECONTENT = 2152596468, + NS_ERROR_HTMLPARSER_BADDTD = 2152596469, + NS_ERROR_HTMLPARSER_BADCONTEXT = 2152596470, + NS_ERROR_HTMLPARSER_STOPPARSING = 2152596471, + NS_ERROR_HTMLPARSER_UNTERMINATEDSTRINGLITERAL = 2152596472, + NS_ERROR_HTMLPARSER_HIERARCHYTOODEEP = 2152596473, + NS_ERROR_HTMLPARSER_FAKE_ENDTAG = 2152596474, + NS_ERROR_HTMLPARSER_INVALID_COMMENT = 2152596475, + NS_HTMLTOKENS_NOT_AN_ENTITY = 5113808, + NS_HTMLPARSER_VALID_META_CHARSET = 5114808, + NS_RDF_CURSOR_EMPTY = 5177345, + NS_RDF_NO_VALUE = 5177346, + NS_RDF_ASSERTION_REJECTED = 5177347, + NS_RDF_STOP_VISIT = 5177348, + NS_ERROR_UCONV_NOCONV = 2152726529, + NS_ERROR_UDEC_ILLEGALINPUT = 2152726542, + NS_OK_HAD_REPLACEMENTS = 5242883, + NS_SUCCESS_USING_FALLBACK_LOCALE = 5242882, + NS_OK_UDEC_EXACTLENGTH = 5242891, + NS_OK_UDEC_MOREINPUT = 5242892, + NS_OK_UDEC_MOREOUTPUT = 5242893, + NS_OK_UDEC_NOBOMFOUND = 5242894, + NS_OK_UENC_EXACTLENGTH = 5242913, + NS_OK_UENC_MOREOUTPUT = 5242914, + NS_ERROR_UENC_NOMAPPING = 5242915, + NS_OK_UENC_MOREINPUT = 5242916, + NS_ERROR_FILE_UNRECOGNIZED_PATH = 2152857601, + NS_ERROR_FILE_UNRESOLVABLE_SYMLINK = 2152857602, + NS_ERROR_FILE_EXECUTION_FAILED = 2152857603, + NS_ERROR_FILE_UNKNOWN_TYPE = 2152857604, + NS_ERROR_FILE_DESTINATION_NOT_DIR = 2152857605, + NS_ERROR_FILE_TARGET_DOES_NOT_EXIST = 2152857606, + NS_ERROR_FILE_COPY_OR_MOVE_FAILED = 2152857607, + NS_ERROR_FILE_ALREADY_EXISTS = 2152857608, + NS_ERROR_FILE_INVALID_PATH = 2152857609, + NS_ERROR_FILE_DISK_FULL = 2152857610, + NS_ERROR_FILE_CORRUPTED = 2152857611, + NS_ERROR_FILE_NOT_DIRECTORY = 2152857612, + NS_ERROR_FILE_IS_DIRECTORY = 2152857613, + NS_ERROR_FILE_IS_LOCKED = 2152857614, + NS_ERROR_FILE_TOO_BIG = 2152857615, + NS_ERROR_FILE_NO_DEVICE_SPACE = 2152857616, + NS_ERROR_FILE_NAME_TOO_LONG = 2152857617, + NS_ERROR_FILE_NOT_FOUND = 2152857618, + NS_ERROR_FILE_READ_ONLY = 2152857619, + NS_ERROR_FILE_DIR_NOT_EMPTY = 2152857620, + NS_ERROR_FILE_ACCESS_DENIED = 2152857621, + NS_SUCCESS_FILE_DIRECTORY_EMPTY = 5373953, + NS_SUCCESS_AGGREGATE_RESULT = 5373954, + NS_ERROR_DOM_INDEX_SIZE_ERR = 2152923137, + NS_ERROR_DOM_HIERARCHY_REQUEST_ERR = 2152923139, + NS_ERROR_DOM_WRONG_DOCUMENT_ERR = 2152923140, + NS_ERROR_DOM_INVALID_CHARACTER_ERR = 2152923141, + NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR = 2152923143, + NS_ERROR_DOM_NOT_FOUND_ERR = 2152923144, + NS_ERROR_DOM_NOT_SUPPORTED_ERR = 2152923145, + NS_ERROR_DOM_INUSE_ATTRIBUTE_ERR = 2152923146, + NS_ERROR_DOM_INVALID_STATE_ERR = 2152923147, + NS_ERROR_DOM_SYNTAX_ERR = 2152923148, + NS_ERROR_DOM_INVALID_MODIFICATION_ERR = 2152923149, + NS_ERROR_DOM_NAMESPACE_ERR = 2152923150, + NS_ERROR_DOM_INVALID_ACCESS_ERR = 2152923151, + NS_ERROR_DOM_TYPE_MISMATCH_ERR = 2152923153, + NS_ERROR_DOM_SECURITY_ERR = 2152923154, + NS_ERROR_DOM_NETWORK_ERR = 2152923155, + NS_ERROR_DOM_ABORT_ERR = 2152923156, + NS_ERROR_DOM_URL_MISMATCH_ERR = 2152923157, + NS_ERROR_DOM_QUOTA_EXCEEDED_ERR = 2152923158, + NS_ERROR_DOM_TIMEOUT_ERR = 2152923159, + NS_ERROR_DOM_INVALID_NODE_TYPE_ERR = 2152923160, + NS_ERROR_DOM_DATA_CLONE_ERR = 2152923161, + NS_ERROR_TYPE_ERR = 2152923162, + NS_ERROR_RANGE_ERR = 2152923163, + NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR = 2152923164, + NS_ERROR_DOM_INVALID_POINTER_ERR = 2152923165, + NS_ERROR_DOM_UNKNOWN_ERR = 2152923166, + NS_ERROR_DOM_DATA_ERR = 2152923167, + NS_ERROR_DOM_OPERATION_ERR = 2152923168, + NS_ERROR_DOM_NOT_ALLOWED_ERR = 2152923169, + NS_ERROR_DOM_SECMAN_ERR = 2152924137, + NS_ERROR_DOM_WRONG_TYPE_ERR = 2152924138, + NS_ERROR_DOM_NOT_OBJECT_ERR = 2152924139, + NS_ERROR_DOM_NOT_XPC_OBJECT_ERR = 2152924140, + NS_ERROR_DOM_NOT_NUMBER_ERR = 2152924141, + NS_ERROR_DOM_NOT_BOOLEAN_ERR = 2152924142, + NS_ERROR_DOM_NOT_FUNCTION_ERR = 2152924143, + NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR = 2152924144, + NS_ERROR_DOM_BAD_DOCUMENT_DOMAIN = 2152924145, + NS_ERROR_DOM_PROP_ACCESS_DENIED = 2152924146, + NS_ERROR_DOM_XPCONNECT_ACCESS_DENIED = 2152924147, + NS_ERROR_DOM_BAD_URI = 2152924148, + NS_ERROR_DOM_RETVAL_UNDEFINED = 2152924149, + NS_ERROR_DOM_QUOTA_REACHED = 2152924150, + NS_ERROR_UNCATCHABLE_EXCEPTION = 2152924151, + NS_ERROR_DOM_MALFORMED_URI = 2152924152, + NS_ERROR_DOM_INVALID_HEADER_NAME = 2152924153, + NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT = 2152924154, + NS_ERROR_DOM_INVALID_STATE_XHR_MUST_BE_OPENED = 2152924155, + NS_ERROR_DOM_INVALID_STATE_XHR_MUST_NOT_BE_SENDING = 2152924156, + NS_ERROR_DOM_INVALID_STATE_XHR_MUST_NOT_BE_LOADING_OR_DONE = 2152924157, + NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSEXML = 2152924158, + NS_ERROR_DOM_INVALID_STATE_XHR_HAS_WRONG_RESPONSETYPE_FOR_RESPONSETEXT = 2152924159, + NS_ERROR_DOM_INVALID_STATE_XHR_CHUNKED_RESPONSETYPES_UNSUPPORTED_FOR_SYNC = 2152924160, + NS_ERROR_DOM_INVALID_ACCESS_XHR_TIMEOUT_AND_RESPONSETYPE_UNSUPPORTED_FOR_SYNC = 2152924161, + NS_ERROR_DOM_JS_DECODING_ERROR = 2152924162, + NS_SUCCESS_DOM_NO_OPERATION = 5439489, + NS_SUCCESS_DOM_SCRIPT_EVALUATION_THREW = 5439490, + NS_SUCCESS_DOM_SCRIPT_EVALUATION_THREW_UNCATCHABLE = 5439491, + NS_IMAGELIB_SUCCESS_LOAD_FINISHED = 5505024, + NS_IMAGELIB_ERROR_FAILURE = 2152988677, + NS_IMAGELIB_ERROR_NO_DECODER = 2152988678, + NS_IMAGELIB_ERROR_NOT_FINISHED = 2152988679, + NS_IMAGELIB_ERROR_NO_ENCODER = 2152988681, + NS_SUCCESS_EDITOR_ELEMENT_NOT_FOUND = 5636097, + NS_SUCCESS_EDITOR_FOUND_TARGET = 5636098, + NS_ERROR_XPC_NOT_ENOUGH_ARGS = 2153185281, + NS_ERROR_XPC_NEED_OUT_OBJECT = 2153185282, + NS_ERROR_XPC_CANT_SET_OUT_VAL = 2153185283, + NS_ERROR_XPC_NATIVE_RETURNED_FAILURE = 2153185284, + NS_ERROR_XPC_CANT_GET_INTERFACE_INFO = 2153185285, + NS_ERROR_XPC_CANT_GET_PARAM_IFACE_INFO = 2153185286, + NS_ERROR_XPC_CANT_GET_METHOD_INFO = 2153185287, + NS_ERROR_XPC_UNEXPECTED = 2153185288, + NS_ERROR_XPC_BAD_CONVERT_JS = 2153185289, + NS_ERROR_XPC_BAD_CONVERT_NATIVE = 2153185290, + NS_ERROR_XPC_BAD_CONVERT_JS_NULL_REF = 2153185291, + NS_ERROR_XPC_BAD_OP_ON_WN_PROTO = 2153185292, + NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN = 2153185293, + NS_ERROR_XPC_CANT_DEFINE_PROP_ON_WN = 2153185294, + NS_ERROR_XPC_CANT_WATCH_WN_STATIC = 2153185295, + NS_ERROR_XPC_CANT_EXPORT_WN_STATIC = 2153185296, + NS_ERROR_XPC_SCRIPTABLE_CALL_FAILED = 2153185297, + NS_ERROR_XPC_SCRIPTABLE_CTOR_FAILED = 2153185298, + NS_ERROR_XPC_CANT_CALL_WO_SCRIPTABLE = 2153185299, + NS_ERROR_XPC_CANT_CTOR_WO_SCRIPTABLE = 2153185300, + NS_ERROR_XPC_CI_RETURNED_FAILURE = 2153185301, + NS_ERROR_XPC_GS_RETURNED_FAILURE = 2153185302, + NS_ERROR_XPC_BAD_CID = 2153185303, + NS_ERROR_XPC_BAD_IID = 2153185304, + NS_ERROR_XPC_CANT_CREATE_WN = 2153185305, + NS_ERROR_XPC_JS_THREW_EXCEPTION = 2153185306, + NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT = 2153185307, + NS_ERROR_XPC_JS_THREW_JS_OBJECT = 2153185308, + NS_ERROR_XPC_JS_THREW_NULL = 2153185309, + NS_ERROR_XPC_JS_THREW_STRING = 2153185310, + NS_ERROR_XPC_JS_THREW_NUMBER = 2153185311, + NS_ERROR_XPC_JAVASCRIPT_ERROR = 2153185312, + NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS = 2153185313, + NS_ERROR_XPC_CANT_CONVERT_PRIMITIVE_TO_ARRAY = 2153185314, + NS_ERROR_XPC_CANT_CONVERT_OBJECT_TO_ARRAY = 2153185315, + NS_ERROR_XPC_NOT_ENOUGH_ELEMENTS_IN_ARRAY = 2153185316, + NS_ERROR_XPC_CANT_GET_ARRAY_INFO = 2153185317, + NS_ERROR_XPC_NOT_ENOUGH_CHARS_IN_STRING = 2153185318, + NS_ERROR_XPC_SECURITY_MANAGER_VETO = 2153185319, + NS_ERROR_XPC_INTERFACE_NOT_SCRIPTABLE = 2153185320, + NS_ERROR_XPC_INTERFACE_NOT_FROM_NSISUPPORTS = 2153185321, + NS_ERROR_XPC_CANT_GET_JSOBJECT_OF_DOM_OBJECT = 2153185322, + NS_ERROR_XPC_CANT_SET_READ_ONLY_CONSTANT = 2153185323, + NS_ERROR_XPC_CANT_SET_READ_ONLY_ATTRIBUTE = 2153185324, + NS_ERROR_XPC_CANT_SET_READ_ONLY_METHOD = 2153185325, + NS_ERROR_XPC_CANT_ADD_PROP_TO_WRAPPED_NATIVE = 2153185326, + NS_ERROR_XPC_CALL_TO_SCRIPTABLE_FAILED = 2153185327, + NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED = 2153185328, + NS_ERROR_XPC_BAD_ID_STRING = 2153185329, + NS_ERROR_XPC_BAD_INITIALIZER_NAME = 2153185330, + NS_ERROR_XPC_HAS_BEEN_SHUTDOWN = 2153185331, + NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN = 2153185332, + NS_ERROR_XPC_BAD_CONVERT_JS_ZERO_ISNOT_NULL = 2153185333, + NS_ERROR_XPC_CANT_PASS_CPOW_TO_NATIVE = 2153185334, + NS_ERROR_LAUNCHED_CHILD_PROCESS = 2153251016, + NS_ERROR_CSP_FORM_ACTION_VIOLATION = 2153381986, + NS_ERROR_CSP_FRAME_ANCESTOR_VIOLATION = 2153381987, + NS_ERROR_SRI_CORRUPT = 2153382088, + NS_ERROR_SRI_DISABLED = 2153382089, + NS_ERROR_SRI_NOT_ELIGIBLE = 2153382090, + NS_ERROR_SRI_UNEXPECTED_HASH_TYPE = 2153382091, + NS_ERROR_SRI_IMPORT = 2153382092, + NS_ERROR_CMS_VERIFY_NOT_SIGNED = 2153382912, + NS_ERROR_CMS_VERIFY_NO_CONTENT_INFO = 2153382913, + NS_ERROR_CMS_VERIFY_BAD_DIGEST = 2153382914, + NS_ERROR_CMS_VERIFY_NOCERT = 2153382916, + NS_ERROR_CMS_VERIFY_UNTRUSTED = 2153382917, + NS_ERROR_CMS_VERIFY_ERROR_UNVERIFIED = 2153382919, + NS_ERROR_CMS_VERIFY_ERROR_PROCESSING = 2153382920, + NS_ERROR_CMS_VERIFY_BAD_SIGNATURE = 2153382921, + NS_ERROR_CMS_VERIFY_DIGEST_MISMATCH = 2153382922, + NS_ERROR_CMS_VERIFY_UNKNOWN_ALGO = 2153382923, + NS_ERROR_CMS_VERIFY_UNSUPPORTED_ALGO = 2153382924, + NS_ERROR_CMS_VERIFY_MALFORMED_SIGNATURE = 2153382925, + NS_ERROR_CMS_VERIFY_HEADER_MISMATCH = 2153382926, + NS_ERROR_CMS_VERIFY_NOT_YET_ATTEMPTED = 2153382927, + NS_ERROR_CMS_VERIFY_CERT_WITHOUT_ADDRESS = 2153382928, + NS_ERROR_CMS_ENCRYPT_NO_BULK_ALG = 2153382944, + NS_ERROR_CMS_ENCRYPT_INCOMPLETE = 2153382945, + NS_ERROR_DOM_INVALID_EXPRESSION_ERR = 2153447475, + NS_ERROR_DOM_TYPE_ERR = 2153447476, + NS_ERROR_WONT_HANDLE_CONTENT = 2153578497, + NS_ERROR_MALWARE_URI = 2153578526, + NS_ERROR_PHISHING_URI = 2153578527, + NS_ERROR_TRACKING_URI = 2153578530, + NS_ERROR_UNWANTED_URI = 2153578531, + NS_ERROR_BLOCKED_URI = 2153578533, + NS_ERROR_HARMFUL_URI = 2153578534, + NS_ERROR_SAVE_LINK_AS_TIMEOUT = 2153578528, + NS_ERROR_PARSED_DATA_CACHED = 2153578529, + NS_REFRESHURI_HEADER_FOUND = 6094850, + NS_ERROR_CONTENT_BLOCKED = 2153644038, + NS_ERROR_CONTENT_BLOCKED_SHOW_ALT = 2153644039, + NS_PROPTABLE_PROP_NOT_THERE = 2153644042, + NS_ERROR_XBL_BLOCKED = 2153644047, + NS_ERROR_CONTENT_CRASHED = 2153644048, + NS_HTML_STYLE_PROPERTY_NOT_THERE = 6160386, + NS_CONTENT_BLOCKED = 6160392, + NS_CONTENT_BLOCKED_SHOW_ALT = 6160393, + NS_PROPTABLE_PROP_OVERWRITTEN = 6160395, + NS_FINDBROADCASTER_NOT_FOUND = 6160396, + NS_FINDBROADCASTER_FOUND = 6160397, + NS_FINDBROADCASTER_AWAIT_OVERLAYS = 6160398, + NS_ERROR_XSLT_PARSE_FAILURE = 2153775105, + NS_ERROR_XPATH_PARSE_FAILURE = 2153775106, + NS_ERROR_XSLT_ALREADY_SET = 2153775107, + NS_ERROR_XSLT_EXECUTION_FAILURE = 2153775108, + NS_ERROR_XPATH_UNKNOWN_FUNCTION = 2153775109, + NS_ERROR_XSLT_BAD_RECURSION = 2153775110, + NS_ERROR_XSLT_BAD_VALUE = 2153775111, + NS_ERROR_XSLT_NODESET_EXPECTED = 2153775112, + NS_ERROR_XSLT_ABORTED = 2153775113, + NS_ERROR_XSLT_NETWORK_ERROR = 2153775114, + NS_ERROR_XSLT_WRONG_MIME_TYPE = 2153775115, + NS_ERROR_XSLT_LOAD_RECURSION = 2153775116, + NS_ERROR_XPATH_BAD_ARGUMENT_COUNT = 2153775117, + NS_ERROR_XPATH_BAD_EXTENSION_FUNCTION = 2153775118, + NS_ERROR_XPATH_PAREN_EXPECTED = 2153775119, + NS_ERROR_XPATH_INVALID_AXIS = 2153775120, + NS_ERROR_XPATH_NO_NODE_TYPE_TEST = 2153775121, + NS_ERROR_XPATH_BRACKET_EXPECTED = 2153775122, + NS_ERROR_XPATH_INVALID_VAR_NAME = 2153775123, + NS_ERROR_XPATH_UNEXPECTED_END = 2153775124, + NS_ERROR_XPATH_OPERATOR_EXPECTED = 2153775125, + NS_ERROR_XPATH_UNCLOSED_LITERAL = 2153775126, + NS_ERROR_XPATH_BAD_COLON = 2153775127, + NS_ERROR_XPATH_BAD_BANG = 2153775128, + NS_ERROR_XPATH_ILLEGAL_CHAR = 2153775129, + NS_ERROR_XPATH_BINARY_EXPECTED = 2153775130, + NS_ERROR_XSLT_LOAD_BLOCKED_ERROR = 2153775131, + NS_ERROR_XPATH_INVALID_EXPRESSION_EVALUATED = 2153775132, + NS_ERROR_XPATH_UNBALANCED_CURLY_BRACE = 2153775133, + NS_ERROR_XSLT_BAD_NODE_NAME = 2153775134, + NS_ERROR_XSLT_VAR_ALREADY_SET = 2153775135, + NS_ERROR_XSLT_CALL_TO_KEY_NOT_ALLOWED = 2153775136, + NS_XSLT_GET_NEW_HANDLER = 6291457, + NS_ERROR_TRANSPORT_INIT = 2153840641, + NS_ERROR_DUPLICATE_HANDLE = 2153840642, + NS_ERROR_BRIDGE_OPEN_PARENT = 2153840643, + NS_ERROR_BRIDGE_OPEN_CHILD = 2153840644, + NS_ERROR_DOM_SVG_WRONG_TYPE_ERR = 2153906176, + NS_ERROR_DOM_SVG_MATRIX_NOT_INVERTABLE = 2153906178, + NS_ERROR_STORAGE_BUSY = 2153971713, + NS_ERROR_STORAGE_IOERR = 2153971714, + NS_ERROR_STORAGE_CONSTRAINT = 2153971715, + NS_ERROR_DOM_FILE_NOT_FOUND_ERR = 2154102784, + NS_ERROR_DOM_FILE_NOT_READABLE_ERR = 2154102785, + NS_ERROR_DOM_FILE_ABORT_ERR = 2154102786, + NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR = 2154168321, + NS_ERROR_DOM_INDEXEDDB_NOT_FOUND_ERR = 2154168323, + NS_ERROR_DOM_INDEXEDDB_CONSTRAINT_ERR = 2154168324, + NS_ERROR_DOM_INDEXEDDB_DATA_ERR = 2154168325, + NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR = 2154168326, + NS_ERROR_DOM_INDEXEDDB_TRANSACTION_INACTIVE_ERR = 2154168327, + NS_ERROR_DOM_INDEXEDDB_ABORT_ERR = 2154168328, + NS_ERROR_DOM_INDEXEDDB_READ_ONLY_ERR = 2154168329, + NS_ERROR_DOM_INDEXEDDB_TIMEOUT_ERR = 2154168330, + NS_ERROR_DOM_INDEXEDDB_QUOTA_ERR = 2154168331, + NS_ERROR_DOM_INDEXEDDB_VERSION_ERR = 2154168332, + NS_ERROR_DOM_INDEXEDDB_RECOVERABLE_ERR = 2154169321, + NS_ERROR_DOM_FILEHANDLE_UNKNOWN_ERR = 2154233857, + NS_ERROR_DOM_FILEHANDLE_NOT_ALLOWED_ERR = 2154233858, + NS_ERROR_DOM_FILEHANDLE_INACTIVE_ERR = 2154233859, + NS_ERROR_DOM_FILEHANDLE_ABORT_ERR = 2154233860, + NS_ERROR_DOM_FILEHANDLE_READ_ONLY_ERR = 2154233861, + NS_ERROR_DOM_FILEHANDLE_QUOTA_ERR = 2154233862, + NS_ERROR_SIGNED_JAR_NOT_SIGNED = 2154299393, + NS_ERROR_SIGNED_JAR_MODIFIED_ENTRY = 2154299394, + NS_ERROR_SIGNED_JAR_UNSIGNED_ENTRY = 2154299395, + NS_ERROR_SIGNED_JAR_ENTRY_MISSING = 2154299396, + NS_ERROR_SIGNED_JAR_WRONG_SIGNATURE = 2154299397, + NS_ERROR_SIGNED_JAR_ENTRY_TOO_LARGE = 2154299398, + NS_ERROR_SIGNED_JAR_ENTRY_INVALID = 2154299399, + NS_ERROR_SIGNED_JAR_MANIFEST_INVALID = 2154299400, + NS_ERROR_DOM_FILESYSTEM_INVALID_PATH_ERR = 2154364929, + NS_ERROR_DOM_FILESYSTEM_INVALID_MODIFICATION_ERR = 2154364930, + NS_ERROR_DOM_FILESYSTEM_NO_MODIFICATION_ALLOWED_ERR = 2154364931, + NS_ERROR_DOM_FILESYSTEM_PATH_EXISTS_ERR = 2154364932, + NS_ERROR_DOM_FILESYSTEM_TYPE_MISMATCH_ERR = 2154364933, + NS_ERROR_DOM_FILESYSTEM_UNKNOWN_ERR = 2154364934, + NS_ERROR_SIGNED_APP_MANIFEST_INVALID = 2154496001, + NS_ERROR_DOM_ANIM_MISSING_PROPS_ERR = 2154561537, + NS_ERROR_DOM_PUSH_INVALID_REGISTRATION_ERR = 2154627073, + NS_ERROR_DOM_PUSH_DENIED_ERR = 2154627074, + NS_ERROR_DOM_PUSH_ABORT_ERR = 2154627075, + NS_ERROR_DOM_PUSH_SERVICE_UNREACHABLE = 2154627076, + NS_ERROR_DOM_PUSH_INVALID_KEY_ERR = 2154627077, + NS_ERROR_DOM_PUSH_MISMATCHED_KEY_ERR = 2154627078, + NS_ERROR_DOM_PUSH_GCM_DISABLED = 2154627079, + NS_ERROR_DOM_MEDIA_ABORT_ERR = 2154692609, + NS_ERROR_DOM_MEDIA_NOT_ALLOWED_ERR = 2154692610, + NS_ERROR_DOM_MEDIA_NOT_SUPPORTED_ERR = 2154692611, + NS_ERROR_DOM_MEDIA_DECODE_ERR = 2154692612, + NS_ERROR_DOM_MEDIA_FATAL_ERR = 2154692613, + NS_ERROR_DOM_MEDIA_METADATA_ERR = 2154692614, + NS_ERROR_DOM_MEDIA_OVERFLOW_ERR = 2154692615, + NS_ERROR_DOM_MEDIA_END_OF_STREAM = 2154692616, + NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA = 2154692617, + NS_ERROR_DOM_MEDIA_CANCELED = 2154692618, + NS_ERROR_DOM_MEDIA_MEDIASINK_ERR = 2154692619, + NS_ERROR_DOM_MEDIA_DEMUXER_ERR = 2154692620, + NS_ERROR_DOM_MEDIA_CDM_ERR = 2154692621, + NS_ERROR_DOM_MEDIA_NEED_NEW_DECODER = 2154692622, + NS_ERROR_DOM_MEDIA_INITIALIZING_DECODER = 2154692623, + NS_ERROR_DOM_MEDIA_CUBEB_INITIALIZATION_ERR = 2154692709, + NS_ERROR_UC_UPDATE_UNKNOWN = 2154758145, + NS_ERROR_UC_UPDATE_DUPLICATE_PREFIX = 2154758146, + NS_ERROR_UC_UPDATE_INFINITE_LOOP = 2154758147, + NS_ERROR_UC_UPDATE_WRONG_REMOVAL_INDICES = 2154758148, + NS_ERROR_UC_UPDATE_CHECKSUM_MISMATCH = 2154758149, + NS_ERROR_UC_UPDATE_MISSING_CHECKSUM = 2154758150, + NS_ERROR_UC_UPDATE_SHUTDOWNING = 2154758151, + NS_ERROR_UC_UPDATE_TABLE_NOT_FOUND = 2154758152, + NS_ERROR_UC_UPDATE_BUILD_PREFIX_FAILURE = 2154758153, + NS_ERROR_UC_UPDATE_FAIL_TO_WRITE_DISK = 2154758154, + NS_ERROR_UC_UPDATE_PROTOCOL_PARSER_ERROR = 2154758155, + NS_ERROR_INTERNAL_ERRORRESULT_JS_EXCEPTION = 2154823681, + NS_ERROR_INTERNAL_ERRORRESULT_DOMEXCEPTION = 2154823682, + NS_ERROR_INTERNAL_ERRORRESULT_EXCEPTION_ON_JSCONTEXT = 2154823683, + NS_ERROR_INTERNAL_ERRORRESULT_TYPEERROR = 2154823684, + NS_ERROR_INTERNAL_ERRORRESULT_RANGEERROR = 2154823685, + NS_ERROR_DOWNLOAD_COMPLETE = 2155347969, + NS_ERROR_DOWNLOAD_NOT_PARTIAL = 2155347970, + NS_ERROR_UNORM_MOREOUTPUT = 2155348001, + NS_ERROR_DOCSHELL_REQUEST_REJECTED = 2155348969, + NS_ERROR_DOCUMENT_IS_PRINTMODE = 2155349969, + NS_SUCCESS_DONT_FIXUP = 7864321, + NS_SUCCESS_RESTART_APP_NOT_SAME_PROFILE = 7864323, + NS_SUCCESS_UNORM_NOTFOUND = 7864337, + NS_ERROR_NOT_IN_TREE = 2155348006, + NS_OK_NO_NAME_CLAUSE_HANDLED = 7864354, + } + pub type nsrefcnt = root::MozRefCountType; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIFrame { + _unused: [u8; 0], + } + pub type nsAString = root::nsTSubstring<u16>; + pub type nsAutoString = [u64; 19usize]; + pub type nsACString = root::nsTSubstring<::std::os::raw::c_char>; + pub type nsCString = root::nsTString<::std::os::raw::c_char>; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsCharTraits { + pub _address: u8, + } + /// @see nsTAString + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsReadingIterator<CharT> { + pub mStart: *mut CharT, + pub mEnd: *mut CharT, + pub mPosition: *mut CharT, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<CharT>>, + } + pub type nsReadingIterator_self_type<CharT> = root::nsReadingIterator<CharT>; + pub type nsReadingIterator_difference_type = isize; + pub type nsReadingIterator_size_type = usize; + pub type nsReadingIterator_value_type<CharT> = CharT; + pub type nsReadingIterator_pointer<CharT> = *mut CharT; + pub type nsReadingIterator_reference = u8; + /// @see nsTAString + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsWritingIterator<CharT> { + pub mStart: *mut CharT, + pub mEnd: *mut CharT, + pub mPosition: *mut CharT, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<CharT>>, + } + pub type nsWritingIterator_self_type<CharT> = root::nsWritingIterator<CharT>; + pub type nsWritingIterator_difference_type = isize; + pub type nsWritingIterator_size_type = usize; + pub type nsWritingIterator_value_type<CharT> = CharT; + pub type nsWritingIterator_pointer<CharT> = *mut CharT; + pub type nsWritingIterator_reference = u8; + #[repr(C)] + pub struct nsTStringComparator__bindgen_vtable(::std::os::raw::c_void); + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTStringComparator { + pub vtable_: *const nsTStringComparator__bindgen_vtable, + } + pub type nsTStringComparator_char_type<T> = T; + /// nsTSubstring is an abstract string class. From an API perspective, this /// class is the root of the string class hierarchy. It represents a single /// contiguous array of characters, which may or may not be null-terminated. /// This type is not instantiated directly. A sub-class is instantiated @@ -501,17 +12604,51 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// NAMES: /// nsAString for wide characters /// nsACString for narrow characters - /// - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsTSubstring < T > { pub _base : root :: mozilla :: detail :: nsTStringRepr < T > , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsTSubstring_self_type < T > = root :: nsTSubstring < T > ; pub type nsTSubstring_string_type < T > = root :: nsTString < T > ; pub type nsTSubstring_base_string_type < T > = root :: mozilla :: detail :: nsTStringRepr < T > ; pub type nsTSubstring_substring_type < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_literalstring_type < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_fallible_t < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_char_type < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_substring_tuple_type < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_const_iterator < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_iterator < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_comparator_type < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_char_iterator < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_const_char_iterator < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_index_type < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_size_type < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_DataFlags < T > = root :: nsTSubstring_base_string_type < T > ; pub type nsTSubstring_ClassFlags < T > = root :: nsTSubstring_base_string_type < T > ; - /// nsTSubstringTuple + /// + #[repr(C)] + #[derive(Debug)] + pub struct nsTSubstring<T> { + pub _base: root::mozilla::detail::nsTStringRepr<T>, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsTSubstring_self_type<T> = root::nsTSubstring<T>; + pub type nsTSubstring_string_type<T> = root::nsTString<T>; + pub type nsTSubstring_base_string_type<T> = root::mozilla::detail::nsTStringRepr<T>; + pub type nsTSubstring_substring_type<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_literalstring_type<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_fallible_t<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_char_type<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_substring_tuple_type<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_const_iterator<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_iterator<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_comparator_type<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_char_iterator<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_const_char_iterator<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_index_type<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_size_type<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_DataFlags<T> = root::nsTSubstring_base_string_type<T>; + pub type nsTSubstring_ClassFlags<T> = root::nsTSubstring_base_string_type<T>; + /// nsTSubstringTuple /// /// Represents a tuple of string fragments. Built as a recursive binary tree. /// It is used to implement the concatenation of two or more string objects. /// /// NOTE: This class is a private implementation detail and should never be - /// referenced outside the string code. - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTSubstringTuple < T > { pub mHead : * const root :: nsTSubstringTuple_self_type < T > , pub mFragA : * const root :: nsTSubstringTuple_base_string_type < T > , pub mFragB : * const root :: nsTSubstringTuple_base_string_type < T > , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsTSubstringTuple_char_type < T > = T ; pub type nsTSubstringTuple_self_type < T > = root :: nsTSubstringTuple < T > ; pub type nsTSubstringTuple_base_string_type < T > = root :: mozilla :: detail :: nsTStringRepr < root :: nsTSubstringTuple_char_type < T > > ; pub type nsTSubstringTuple_size_type = u32 ; - /// nsTLiteralString_CharT + /// referenced outside the string code. + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTSubstringTuple<T> { + pub mHead: *const root::nsTSubstringTuple_self_type<T>, + pub mFragA: *const root::nsTSubstringTuple_base_string_type<T>, + pub mFragB: *const root::nsTSubstringTuple_base_string_type<T>, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsTSubstringTuple_char_type<T> = T; + pub type nsTSubstringTuple_self_type<T> = root::nsTSubstringTuple<T>; + pub type nsTSubstringTuple_base_string_type<T> = + root::mozilla::detail::nsTStringRepr<root::nsTSubstringTuple_char_type<T>>; + pub type nsTSubstringTuple_size_type = u32; + /// nsTLiteralString_CharT /// /// Stores a null-terminated, immutable sequence of characters. /// @@ -519,9 +12656,25 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// sequence. Can be implicitly cast to const nsTString& (the const is /// essential, since this class's data are not writable). The data are assumed /// to be static (permanent) and therefore, as an optimization, this class - /// does not have a destructor. - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTLiteralString < T > { pub _base : root :: mozilla :: detail :: nsTStringRepr < T > , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsTLiteralString_self_type < T > = root :: nsTLiteralString < T > ; pub type nsTLiteralString_char_type = [ u8 ; 0usize ] ; pub type nsTLiteralString_size_type = [ u8 ; 0usize ] ; pub type nsTLiteralString_DataFlags = [ u8 ; 0usize ] ; pub type nsTLiteralString_ClassFlags = [ u8 ; 0usize ] ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTLiteralString_raw_type { pub _address : u8 , } pub type nsTLiteralString_raw_type_type < N > = * mut N ; - /// This is the canonical null-terminated string class. All subclasses + /// does not have a destructor. + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTLiteralString<T> { + pub _base: root::mozilla::detail::nsTStringRepr<T>, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsTLiteralString_self_type<T> = root::nsTLiteralString<T>; + pub type nsTLiteralString_char_type = [u8; 0usize]; + pub type nsTLiteralString_size_type = [u8; 0usize]; + pub type nsTLiteralString_DataFlags = [u8; 0usize]; + pub type nsTLiteralString_ClassFlags = [u8; 0usize]; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTLiteralString_raw_type { + pub _address: u8, + } + pub type nsTLiteralString_raw_type_type<N> = *mut N; + /// This is the canonical null-terminated string class. All subclasses /// promise null-terminated storage. Instances of this class allocate /// strings on the heap. /// @@ -530,27 +12683,986 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// nsCString for narrow characters /// /// This class is also known as nsAFlat[C]String, where "flat" is used - /// to denote a null-terminated string. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsTString < T > { pub _base : root :: nsTSubstring < T > , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsTString_self_type < T > = root :: nsTString < T > ; pub type nsTString_literalstring_type = [ u8 ; 0usize ] ; pub type nsTString_fallible_t = [ u8 ; 0usize ] ; pub type nsTString_char_type = [ u8 ; 0usize ] ; pub type nsTString_substring_tuple_type = [ u8 ; 0usize ] ; pub type nsTString_const_iterator = [ u8 ; 0usize ] ; pub type nsTString_iterator = [ u8 ; 0usize ] ; pub type nsTString_comparator_type = [ u8 ; 0usize ] ; pub type nsTString_char_iterator = [ u8 ; 0usize ] ; pub type nsTString_const_char_iterator = [ u8 ; 0usize ] ; pub type nsTString_index_type = [ u8 ; 0usize ] ; pub type nsTString_size_type = [ u8 ; 0usize ] ; pub type nsTString_DataFlags = [ u8 ; 0usize ] ; pub type nsTString_ClassFlags = [ u8 ; 0usize ] ; - /// returns the null-terminated string - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTString_raw_type { pub _address : u8 , } pub type nsTString_raw_type_type < U > = * mut U ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTString_Segment { pub mBegin : u32 , pub mLength : u32 , } pub type nsTAutoStringN_self_type = u8 ; pub type nsTAutoStringN_base_string_type < T > = root :: nsTString < T > ; pub type nsTAutoStringN_string_type < T > = root :: nsTAutoStringN_base_string_type < T > ; pub type nsTAutoStringN_char_type < T > = root :: nsTAutoStringN_base_string_type < T > ; pub type nsTAutoStringN_substring_type < T > = root :: nsTAutoStringN_base_string_type < T > ; pub type nsTAutoStringN_size_type < T > = root :: nsTAutoStringN_base_string_type < T > ; pub type nsTAutoStringN_substring_tuple_type < T > = root :: nsTAutoStringN_base_string_type < T > ; pub type nsTAutoStringN_literalstring_type < T > = root :: nsTAutoStringN_base_string_type < T > ; pub type nsTAutoStringN_DataFlags < T > = root :: nsTAutoStringN_base_string_type < T > ; pub type nsTAutoStringN_ClassFlags < T > = root :: nsTAutoStringN_base_string_type < T > ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Nothing : root :: nsCSSTokenSerializationType = 0 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Whitespace : root :: nsCSSTokenSerializationType = 1 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_AtKeyword_or_Hash : root :: nsCSSTokenSerializationType = 2 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Number : root :: nsCSSTokenSerializationType = 3 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Dimension : root :: nsCSSTokenSerializationType = 4 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Percentage : root :: nsCSSTokenSerializationType = 5 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_URange : root :: nsCSSTokenSerializationType = 6 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_URL_or_BadURL : root :: nsCSSTokenSerializationType = 7 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Function : root :: nsCSSTokenSerializationType = 8 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Ident : root :: nsCSSTokenSerializationType = 9 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_CDC : root :: nsCSSTokenSerializationType = 10 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_DashMatch : root :: nsCSSTokenSerializationType = 11 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_ContainsMatch : root :: nsCSSTokenSerializationType = 12 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Hash : root :: nsCSSTokenSerializationType = 13 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_At : root :: nsCSSTokenSerializationType = 14 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Dot_or_Plus : root :: nsCSSTokenSerializationType = 15 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Minus : root :: nsCSSTokenSerializationType = 16 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_OpenParen : root :: nsCSSTokenSerializationType = 17 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Question : root :: nsCSSTokenSerializationType = 18 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Assorted : root :: nsCSSTokenSerializationType = 19 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Equals : root :: nsCSSTokenSerializationType = 20 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Bar : root :: nsCSSTokenSerializationType = 21 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Slash : root :: nsCSSTokenSerializationType = 22 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Asterisk : root :: nsCSSTokenSerializationType = 23 ; pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Other : root :: nsCSSTokenSerializationType = 24 ; pub type nsCSSTokenSerializationType = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] pub struct nsCSSScanner { pub mBuffer : * const u16 , pub mOffset : u32 , pub mCount : u32 , pub mLineNumber : u32 , pub mLineOffset : u32 , pub mTokenLineNumber : u32 , pub mTokenLineOffset : u32 , pub mTokenOffset : u32 , pub mRecordStartOffset : u32 , pub mEOFCharacters : root :: nsCSSScanner_EOFCharacters , pub mReporter : * mut root :: mozilla :: css :: ErrorReporter , pub mRecording : bool , pub mSeenBadToken : bool , pub mSeenVariableReference : bool , pub mSourceMapURL : ::nsstring::nsStringRepr , pub mSourceURL : ::nsstring::nsStringRepr , } pub const nsCSSScanner_EOFCharacters_eEOFCharacters_None : root :: nsCSSScanner_EOFCharacters = 0 ; pub const nsCSSScanner_EOFCharacters_eEOFCharacters_DropBackslash : root :: nsCSSScanner_EOFCharacters = 1 ; pub const nsCSSScanner_EOFCharacters_eEOFCharacters_ReplacementChar : root :: nsCSSScanner_EOFCharacters = 2 ; pub const nsCSSScanner_EOFCharacters_eEOFCharacters_Asterisk : root :: nsCSSScanner_EOFCharacters = 4 ; pub const nsCSSScanner_EOFCharacters_eEOFCharacters_Slash : root :: nsCSSScanner_EOFCharacters = 8 ; pub const nsCSSScanner_EOFCharacters_eEOFCharacters_DoubleQuote : root :: nsCSSScanner_EOFCharacters = 16 ; pub const nsCSSScanner_EOFCharacters_eEOFCharacters_SingleQuote : root :: nsCSSScanner_EOFCharacters = 32 ; pub const nsCSSScanner_EOFCharacters_eEOFCharacters_CloseParen : root :: nsCSSScanner_EOFCharacters = 64 ; pub type nsCSSScanner_EOFCharacters = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsCSSScanner ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSScanner > ( ) , 96usize , concat ! ( "Size of: " , stringify ! ( nsCSSScanner ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSScanner > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSScanner ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mBuffer as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mBuffer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mOffset as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mCount as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mLineNumber as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mLineNumber ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mLineOffset as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mLineOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mTokenLineNumber as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mTokenLineNumber ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mTokenLineOffset as * const _ as usize } , 28usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mTokenLineOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mTokenOffset as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mTokenOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mRecordStartOffset as * const _ as usize } , 36usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mRecordStartOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mEOFCharacters as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mEOFCharacters ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mReporter as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mReporter ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mRecording as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mRecording ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mSeenBadToken as * const _ as usize } , 57usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mSeenBadToken ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mSeenVariableReference as * const _ as usize } , 58usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mSeenVariableReference ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mSourceMapURL as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mSourceMapURL ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSScanner ) ) . mSourceURL as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mSourceURL ) ) ) ; } # [ repr ( C ) ] pub struct nsISupports__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; - /// Basic component object model interface. Objects which implement + /// to denote a null-terminated string. + #[repr(C)] + #[derive(Debug)] + pub struct nsTString<T> { + pub _base: root::nsTSubstring<T>, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsTString_self_type<T> = root::nsTString<T>; + pub type nsTString_literalstring_type = [u8; 0usize]; + pub type nsTString_fallible_t = [u8; 0usize]; + pub type nsTString_char_type = [u8; 0usize]; + pub type nsTString_substring_tuple_type = [u8; 0usize]; + pub type nsTString_const_iterator = [u8; 0usize]; + pub type nsTString_iterator = [u8; 0usize]; + pub type nsTString_comparator_type = [u8; 0usize]; + pub type nsTString_char_iterator = [u8; 0usize]; + pub type nsTString_const_char_iterator = [u8; 0usize]; + pub type nsTString_index_type = [u8; 0usize]; + pub type nsTString_size_type = [u8; 0usize]; + pub type nsTString_DataFlags = [u8; 0usize]; + pub type nsTString_ClassFlags = [u8; 0usize]; + /// returns the null-terminated string + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTString_raw_type { + pub _address: u8, + } + pub type nsTString_raw_type_type<U> = *mut U; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTString_Segment { + pub mBegin: u32, + pub mLength: u32, + } + pub type nsTAutoStringN_self_type = u8; + pub type nsTAutoStringN_base_string_type<T> = root::nsTString<T>; + pub type nsTAutoStringN_string_type<T> = root::nsTAutoStringN_base_string_type<T>; + pub type nsTAutoStringN_char_type<T> = root::nsTAutoStringN_base_string_type<T>; + pub type nsTAutoStringN_substring_type<T> = root::nsTAutoStringN_base_string_type<T>; + pub type nsTAutoStringN_size_type<T> = root::nsTAutoStringN_base_string_type<T>; + pub type nsTAutoStringN_substring_tuple_type<T> = root::nsTAutoStringN_base_string_type<T>; + pub type nsTAutoStringN_literalstring_type<T> = root::nsTAutoStringN_base_string_type<T>; + pub type nsTAutoStringN_DataFlags<T> = root::nsTAutoStringN_base_string_type<T>; + pub type nsTAutoStringN_ClassFlags<T> = root::nsTAutoStringN_base_string_type<T>; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Nothing: + root::nsCSSTokenSerializationType = 0; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Whitespace: + root::nsCSSTokenSerializationType = 1; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_AtKeyword_or_Hash: + root::nsCSSTokenSerializationType = 2; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Number: + root::nsCSSTokenSerializationType = 3; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Dimension: + root::nsCSSTokenSerializationType = 4; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Percentage: + root::nsCSSTokenSerializationType = 5; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_URange: + root::nsCSSTokenSerializationType = 6; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_URL_or_BadURL: + root::nsCSSTokenSerializationType = 7; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Function: + root::nsCSSTokenSerializationType = 8; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Ident: + root::nsCSSTokenSerializationType = 9; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_CDC: + root::nsCSSTokenSerializationType = 10; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_DashMatch: + root::nsCSSTokenSerializationType = 11; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_ContainsMatch: + root::nsCSSTokenSerializationType = 12; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Hash: + root::nsCSSTokenSerializationType = 13; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_At: + root::nsCSSTokenSerializationType = 14; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Dot_or_Plus: + root::nsCSSTokenSerializationType = 15; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Minus: + root::nsCSSTokenSerializationType = 16; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_OpenParen: + root::nsCSSTokenSerializationType = 17; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Question: + root::nsCSSTokenSerializationType = 18; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Assorted: + root::nsCSSTokenSerializationType = 19; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Equals: + root::nsCSSTokenSerializationType = 20; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Bar: + root::nsCSSTokenSerializationType = 21; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Slash: + root::nsCSSTokenSerializationType = 22; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Symbol_Asterisk: + root::nsCSSTokenSerializationType = 23; + pub const nsCSSTokenSerializationType_eCSSTokenSerialization_Other: + root::nsCSSTokenSerializationType = 24; + pub type nsCSSTokenSerializationType = u32; + #[repr(C)] + pub struct nsCSSScanner { + pub mBuffer: *const u16, + pub mOffset: u32, + pub mCount: u32, + pub mLineNumber: u32, + pub mLineOffset: u32, + pub mTokenLineNumber: u32, + pub mTokenLineOffset: u32, + pub mTokenOffset: u32, + pub mRecordStartOffset: u32, + pub mEOFCharacters: root::nsCSSScanner_EOFCharacters, + pub mReporter: *mut root::mozilla::css::ErrorReporter, + pub mRecording: bool, + pub mSeenBadToken: bool, + pub mSeenVariableReference: bool, + pub mSourceMapURL: ::nsstring::nsStringRepr, + pub mSourceURL: ::nsstring::nsStringRepr, + } + pub const nsCSSScanner_EOFCharacters_eEOFCharacters_None: root::nsCSSScanner_EOFCharacters = 0; + pub const nsCSSScanner_EOFCharacters_eEOFCharacters_DropBackslash: + root::nsCSSScanner_EOFCharacters = 1; + pub const nsCSSScanner_EOFCharacters_eEOFCharacters_ReplacementChar: + root::nsCSSScanner_EOFCharacters = 2; + pub const nsCSSScanner_EOFCharacters_eEOFCharacters_Asterisk: root::nsCSSScanner_EOFCharacters = + 4; + pub const nsCSSScanner_EOFCharacters_eEOFCharacters_Slash: root::nsCSSScanner_EOFCharacters = 8; + pub const nsCSSScanner_EOFCharacters_eEOFCharacters_DoubleQuote: + root::nsCSSScanner_EOFCharacters = 16; + pub const nsCSSScanner_EOFCharacters_eEOFCharacters_SingleQuote: + root::nsCSSScanner_EOFCharacters = 32; + pub const nsCSSScanner_EOFCharacters_eEOFCharacters_CloseParen: + root::nsCSSScanner_EOFCharacters = 64; + pub type nsCSSScanner_EOFCharacters = u32; + #[test] + fn bindgen_test_layout_nsCSSScanner() { + assert_eq!( + ::std::mem::size_of::<nsCSSScanner>(), + 96usize, + concat!("Size of: ", stringify!(nsCSSScanner)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSScanner>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSScanner)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mBuffer as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mBuffer) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mOffset as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mOffset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mCount as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mCount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mLineNumber as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mLineNumber) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mLineOffset as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mLineOffset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSScanner>())).mTokenLineNumber as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mTokenLineNumber) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSScanner>())).mTokenLineOffset as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mTokenLineOffset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mTokenOffset as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mTokenOffset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSScanner>())).mRecordStartOffset as *const _ as usize + }, + 36usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mRecordStartOffset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mEOFCharacters as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mEOFCharacters) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mReporter as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mReporter) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mRecording as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mRecording) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mSeenBadToken as *const _ as usize }, + 57usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mSeenBadToken) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSScanner>())).mSeenVariableReference as *const _ as usize + }, + 58usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mSeenVariableReference) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mSourceMapURL as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mSourceMapURL) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSScanner>())).mSourceURL as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsCSSScanner), + "::", + stringify!(mSourceURL) + ) + ); + } + #[repr(C)] + pub struct nsISupports__bindgen_vtable(::std::os::raw::c_void); + /// Basic component object model interface. Objects which implement /// this interface support runtime interface discovery (QueryInterface) /// and a reference counted memory model (AddRef/Release). This is - /// modelled after the win32 IUnknown API. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsISupports { pub vtable_ : * const nsISupports__bindgen_vtable , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsISupports_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsISupports ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsISupports > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsISupports ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsISupports > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsISupports ) ) ) ; } impl Clone for nsISupports { fn clone ( & self ) -> Self { * self } } pub type PRUint32 = :: std :: os :: raw :: c_uint ; pub type PRIntn = :: std :: os :: raw :: c_int ; pub type PRUintn = :: std :: os :: raw :: c_uint ; - /// TYPES: PRSize + /// modelled after the win32 IUnknown API. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsISupports { + pub vtable_: *const nsISupports__bindgen_vtable, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsISupports_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsISupports() { + assert_eq!( + ::std::mem::size_of::<nsISupports>(), + 8usize, + concat!("Size of: ", stringify!(nsISupports)) + ); + assert_eq!( + ::std::mem::align_of::<nsISupports>(), + 8usize, + concat!("Alignment of ", stringify!(nsISupports)) + ); + } + impl Clone for nsISupports { + fn clone(&self) -> Self { + *self + } + } + pub type PRUint32 = ::std::os::raw::c_uint; + pub type PRIntn = ::std::os::raw::c_int; + pub type PRUintn = ::std::os::raw::c_uint; + /// TYPES: PRSize /// DESCRIPTION: - /// A type for representing the size of objects. - pub type PRSize = usize ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct PRThread { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsCycleCollectingAutoRefCnt { pub mRefCntAndFlags : usize , } pub type nsCycleCollectingAutoRefCnt_Suspect = :: std :: option :: Option < unsafe extern "C" fn ( aPtr : * mut :: std :: os :: raw :: c_void , aCp : * mut root :: nsCycleCollectionParticipant , aRefCnt : * mut root :: nsCycleCollectingAutoRefCnt , aShouldDelete : * mut bool ) > ; # [ test ] fn bindgen_test_layout_nsCycleCollectingAutoRefCnt ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCycleCollectingAutoRefCnt > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsCycleCollectingAutoRefCnt ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCycleCollectingAutoRefCnt > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCycleCollectingAutoRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCycleCollectingAutoRefCnt ) ) . mRefCntAndFlags as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCycleCollectingAutoRefCnt ) , "::" , stringify ! ( mRefCntAndFlags ) ) ) ; } impl Clone for nsCycleCollectingAutoRefCnt { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsAutoRefCnt { pub mValue : root :: nsrefcnt , } pub const nsAutoRefCnt_isThreadSafe : bool = false ; # [ test ] fn bindgen_test_layout_nsAutoRefCnt ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAutoRefCnt > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsAutoRefCnt ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAutoRefCnt > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAutoRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAutoRefCnt ) ) . mValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAutoRefCnt ) , "::" , stringify ! ( mValue ) ) ) ; } impl Clone for nsAutoRefCnt { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct RefPtr < T > { pub mRawPtr : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type RefPtr_element_type < T > = T ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RefPtr_Proxy { pub _address : u8 , } pub type RefPtr_Proxy_member_function = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RefPtr_ConstRemovingRefPtrTraits { pub _address : u8 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct JSContext { _unused : [ u8 ; 0 ] } pub mod JS { # [ allow ( unused_imports ) ] use self :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct DeletePolicy { pub _address : u8 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct FreePolicy { pub _address : u8 , } # [ test ] fn bindgen_test_layout_FreePolicy ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FreePolicy > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( FreePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FreePolicy > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( FreePolicy ) ) ) ; } impl Clone for FreePolicy { fn clone ( & self ) -> Self { * self } } - /// Local variable of type T whose value is always rooted. This is typically + /// A type for representing the size of objects. + pub type PRSize = usize; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct PRThread { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsCycleCollectingAutoRefCnt { + pub mRefCntAndFlags: usize, + } + pub type nsCycleCollectingAutoRefCnt_Suspect = ::std::option::Option< + unsafe extern "C" fn( + aPtr: *mut ::std::os::raw::c_void, + aCp: *mut root::nsCycleCollectionParticipant, + aRefCnt: *mut root::nsCycleCollectingAutoRefCnt, + aShouldDelete: *mut bool, + ), + >; + #[test] + fn bindgen_test_layout_nsCycleCollectingAutoRefCnt() { + assert_eq!( + ::std::mem::size_of::<nsCycleCollectingAutoRefCnt>(), + 8usize, + concat!("Size of: ", stringify!(nsCycleCollectingAutoRefCnt)) + ); + assert_eq!( + ::std::mem::align_of::<nsCycleCollectingAutoRefCnt>(), + 8usize, + concat!("Alignment of ", stringify!(nsCycleCollectingAutoRefCnt)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCycleCollectingAutoRefCnt>())).mRefCntAndFlags as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCycleCollectingAutoRefCnt), + "::", + stringify!(mRefCntAndFlags) + ) + ); + } + impl Clone for nsCycleCollectingAutoRefCnt { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsAutoRefCnt { + pub mValue: root::nsrefcnt, + } + pub const nsAutoRefCnt_isThreadSafe: bool = false; + #[test] + fn bindgen_test_layout_nsAutoRefCnt() { + assert_eq!( + ::std::mem::size_of::<nsAutoRefCnt>(), + 8usize, + concat!("Size of: ", stringify!(nsAutoRefCnt)) + ); + assert_eq!( + ::std::mem::align_of::<nsAutoRefCnt>(), + 8usize, + concat!("Alignment of ", stringify!(nsAutoRefCnt)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAutoRefCnt>())).mValue as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAutoRefCnt), + "::", + stringify!(mValue) + ) + ); + } + impl Clone for nsAutoRefCnt { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct RefPtr<T> { + pub mRawPtr: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type RefPtr_element_type<T> = T; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RefPtr_Proxy { + pub _address: u8, + } + pub type RefPtr_Proxy_member_function = u8; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RefPtr_ConstRemovingRefPtrTraits { + pub _address: u8, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct JSContext { + _unused: [u8; 0], + } + pub mod JS { + #[allow(unused_imports)] + use self::super::super::root; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct DeletePolicy { + pub _address: u8, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct FreePolicy { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_FreePolicy() { + assert_eq!( + ::std::mem::size_of::<FreePolicy>(), + 1usize, + concat!("Size of: ", stringify!(FreePolicy)) + ); + assert_eq!( + ::std::mem::align_of::<FreePolicy>(), + 1usize, + concat!("Alignment of ", stringify!(FreePolicy)) + ); + } + impl Clone for FreePolicy { + fn clone(&self) -> Self { + *self + } + } + /// Local variable of type T whose value is always rooted. This is typically /// used for local variables, or for non-rooted values being passed to a /// function that requires a handle, e.g. Foo(Root<T>(cx, x)). /// /// If you want to add additional methods to Rooted for a specific - /// specialization, define a RootedBase<T> specialization containing them. - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct Rooted { pub _address : u8 , } pub type Rooted_ElementType < T > = T ; pub mod dbg { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct GarbageCollectionEvent { pub majorGCNumber_ : u64 , pub reason : * const :: std :: os :: raw :: c_char , pub nonincrementalReason : * const :: std :: os :: raw :: c_char , pub collections : [ u64 ; 3usize ] , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct GarbageCollectionEvent_Collection { pub startTimestamp : root :: mozilla :: TimeStamp , pub endTimestamp : root :: mozilla :: TimeStamp , } # [ test ] fn bindgen_test_layout_GarbageCollectionEvent_Collection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GarbageCollectionEvent_Collection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( GarbageCollectionEvent_Collection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GarbageCollectionEvent_Collection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GarbageCollectionEvent_Collection ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GarbageCollectionEvent_Collection ) ) . startTimestamp as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GarbageCollectionEvent_Collection ) , "::" , stringify ! ( startTimestamp ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GarbageCollectionEvent_Collection ) ) . endTimestamp as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( GarbageCollectionEvent_Collection ) , "::" , stringify ! ( endTimestamp ) ) ) ; } impl Clone for GarbageCollectionEvent_Collection { fn clone ( & self ) -> Self { * self } } pub type GarbageCollectionEvent_Ptr = root :: mozilla :: UniquePtr < root :: JS :: dbg :: GarbageCollectionEvent > ; # [ test ] fn bindgen_test_layout_GarbageCollectionEvent ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GarbageCollectionEvent > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( GarbageCollectionEvent ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GarbageCollectionEvent > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( GarbageCollectionEvent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GarbageCollectionEvent ) ) . majorGCNumber_ as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GarbageCollectionEvent ) , "::" , stringify ! ( majorGCNumber_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GarbageCollectionEvent ) ) . reason as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( GarbageCollectionEvent ) , "::" , stringify ! ( reason ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GarbageCollectionEvent ) ) . nonincrementalReason as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( GarbageCollectionEvent ) , "::" , stringify ! ( nonincrementalReason ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GarbageCollectionEvent ) ) . collections as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( GarbageCollectionEvent ) , "::" , stringify ! ( collections ) ) ) ; } } pub type Value_PayloadType = u64 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Value_layout { pub asBits : root :: __BindgenUnionField < u64 > , pub debugView : root :: __BindgenUnionField < root :: JS :: Value_layout__bindgen_ty_1 > , pub s : root :: __BindgenUnionField < root :: JS :: Value_layout__bindgen_ty_2 > , pub asDouble : root :: __BindgenUnionField < f64 > , pub asPtr : root :: __BindgenUnionField < * mut :: std :: os :: raw :: c_void > , pub asWord : root :: __BindgenUnionField < usize > , pub asUIntPtr : root :: __BindgenUnionField < usize > , pub bindgen_union_field : u64 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Value_layout__bindgen_ty_1 { pub _bitfield_1 : u64 , pub __bindgen_align : [ u64 ; 0usize ] , } # [ test ] fn bindgen_test_layout_Value_layout__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Value_layout__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( Value_layout__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Value_layout__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Value_layout__bindgen_ty_1 ) ) ) ; } impl Clone for Value_layout__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } impl Value_layout__bindgen_ty_1 { # [ inline ] pub fn payload47 ( & self ) -> u64 { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x7fffffffffff as u64 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u64 ) } } # [ inline ] pub fn set_payload47 ( & mut self , val : u64 ) { let mask = 0x7fffffffffff as u64 ; let val = val as u64 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn tag ( & self ) -> root :: JSValueTag { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0xffff800000000000 as u64 ; let val = ( unit_field_val & mask ) >> 47usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_tag ( & mut self , val : root :: JSValueTag ) { let mask = 0xffff800000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 47usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( payload47 : u64 , tag : root :: JSValueTag ) -> u64 { ( ( 0 | ( ( payload47 as u64 as u64 ) << 0usize ) & ( 0x7fffffffffff as u64 ) ) | ( ( tag as u32 as u64 ) << 47usize ) & ( 0xffff800000000000 as u64 ) ) } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Value_layout__bindgen_ty_2 { pub payload : root :: JS :: Value_layout__bindgen_ty_2__bindgen_ty_1 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct Value_layout__bindgen_ty_2__bindgen_ty_1 { pub i32 : root :: __BindgenUnionField < i32 > , pub u32 : root :: __BindgenUnionField < u32 > , pub why : root :: __BindgenUnionField < root :: JSWhyMagic > , pub bindgen_union_field : u32 , } # [ test ] fn bindgen_test_layout_Value_layout__bindgen_ty_2__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Value_layout__bindgen_ty_2__bindgen_ty_1 > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( Value_layout__bindgen_ty_2__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Value_layout__bindgen_ty_2__bindgen_ty_1 > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( Value_layout__bindgen_ty_2__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout__bindgen_ty_2__bindgen_ty_1 ) ) . i32 as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout__bindgen_ty_2__bindgen_ty_1 ) , "::" , stringify ! ( i32 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout__bindgen_ty_2__bindgen_ty_1 ) ) . u32 as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout__bindgen_ty_2__bindgen_ty_1 ) , "::" , stringify ! ( u32 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout__bindgen_ty_2__bindgen_ty_1 ) ) . why as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout__bindgen_ty_2__bindgen_ty_1 ) , "::" , stringify ! ( why ) ) ) ; } impl Clone for Value_layout__bindgen_ty_2__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_Value_layout__bindgen_ty_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Value_layout__bindgen_ty_2 > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( Value_layout__bindgen_ty_2 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Value_layout__bindgen_ty_2 > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( Value_layout__bindgen_ty_2 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout__bindgen_ty_2 ) ) . payload as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout__bindgen_ty_2 ) , "::" , stringify ! ( payload ) ) ) ; } impl Clone for Value_layout__bindgen_ty_2 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_Value_layout ( ) { assert_eq ! ( :: std :: mem :: size_of :: < Value_layout > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( Value_layout ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < Value_layout > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( Value_layout ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout ) ) . asBits as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout ) , "::" , stringify ! ( asBits ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout ) ) . debugView as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout ) , "::" , stringify ! ( debugView ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout ) ) . s as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout ) , "::" , stringify ! ( s ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout ) ) . asDouble as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout ) , "::" , stringify ! ( asDouble ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout ) ) . asPtr as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout ) , "::" , stringify ! ( asPtr ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout ) ) . asWord as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout ) , "::" , stringify ! ( asWord ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const Value_layout ) ) . asUIntPtr as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( Value_layout ) , "::" , stringify ! ( asUIntPtr ) ) ) ; } impl Clone for Value_layout { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ConstUTF8CharsZ { pub data_ : * const :: std :: os :: raw :: c_char , } pub type ConstUTF8CharsZ_CharT = :: std :: os :: raw :: c_uchar ; # [ test ] fn bindgen_test_layout_ConstUTF8CharsZ ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ConstUTF8CharsZ > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( ConstUTF8CharsZ ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ConstUTF8CharsZ > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ConstUTF8CharsZ ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ConstUTF8CharsZ ) ) . data_ as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ConstUTF8CharsZ ) , "::" , stringify ! ( data_ ) ) ) ; } impl Clone for ConstUTF8CharsZ { fn clone ( & self ) -> Self { * self } } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct JSObject { _unused : [ u8 ; 0 ] } pub mod js { # [ allow ( unused_imports ) ] use self :: super :: super :: root ; pub mod gc { # [ allow ( unused_imports ) ] use self :: super :: super :: super :: root ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct SystemAllocPolicy { pub _address : u8 , } # [ test ] fn bindgen_test_layout_SystemAllocPolicy ( ) { assert_eq ! ( :: std :: mem :: size_of :: < SystemAllocPolicy > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( SystemAllocPolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < SystemAllocPolicy > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( SystemAllocPolicy ) ) ) ; } impl Clone for SystemAllocPolicy { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct SourceHook__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; - /// A class of objects that return source code on demand. + /// specialization, define a RootedBase<T> specialization containing them. + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct Rooted { + pub _address: u8, + } + pub type Rooted_ElementType<T> = T; + pub mod dbg { + #[allow(unused_imports)] + use self::super::super::super::root; + #[repr(C)] + #[derive(Debug)] + pub struct GarbageCollectionEvent { + pub majorGCNumber_: u64, + pub reason: *const ::std::os::raw::c_char, + pub nonincrementalReason: *const ::std::os::raw::c_char, + pub collections: [u64; 3usize], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct GarbageCollectionEvent_Collection { + pub startTimestamp: root::mozilla::TimeStamp, + pub endTimestamp: root::mozilla::TimeStamp, + } + #[test] + fn bindgen_test_layout_GarbageCollectionEvent_Collection() { + assert_eq!( + ::std::mem::size_of::<GarbageCollectionEvent_Collection>(), + 16usize, + concat!("Size of: ", stringify!(GarbageCollectionEvent_Collection)) + ); + assert_eq!( + ::std::mem::align_of::<GarbageCollectionEvent_Collection>(), + 8usize, + concat!( + "Alignment of ", + stringify!(GarbageCollectionEvent_Collection) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GarbageCollectionEvent_Collection>())).startTimestamp + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GarbageCollectionEvent_Collection), + "::", + stringify!(startTimestamp) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GarbageCollectionEvent_Collection>())).endTimestamp + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(GarbageCollectionEvent_Collection), + "::", + stringify!(endTimestamp) + ) + ); + } + impl Clone for GarbageCollectionEvent_Collection { + fn clone(&self) -> Self { + *self + } + } + pub type GarbageCollectionEvent_Ptr = + root::mozilla::UniquePtr<root::JS::dbg::GarbageCollectionEvent>; + #[test] + fn bindgen_test_layout_GarbageCollectionEvent() { + assert_eq!( + ::std::mem::size_of::<GarbageCollectionEvent>(), + 48usize, + concat!("Size of: ", stringify!(GarbageCollectionEvent)) + ); + assert_eq!( + ::std::mem::align_of::<GarbageCollectionEvent>(), + 8usize, + concat!("Alignment of ", stringify!(GarbageCollectionEvent)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GarbageCollectionEvent>())).majorGCNumber_ + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GarbageCollectionEvent), + "::", + stringify!(majorGCNumber_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GarbageCollectionEvent>())).reason as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(GarbageCollectionEvent), + "::", + stringify!(reason) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GarbageCollectionEvent>())).nonincrementalReason + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(GarbageCollectionEvent), + "::", + stringify!(nonincrementalReason) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<GarbageCollectionEvent>())).collections as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(GarbageCollectionEvent), + "::", + stringify!(collections) + ) + ); + } + } + pub type Value_PayloadType = u64; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Value_layout { + pub asBits: root::__BindgenUnionField<u64>, + pub debugView: root::__BindgenUnionField<root::JS::Value_layout__bindgen_ty_1>, + pub s: root::__BindgenUnionField<root::JS::Value_layout__bindgen_ty_2>, + pub asDouble: root::__BindgenUnionField<f64>, + pub asPtr: root::__BindgenUnionField<*mut ::std::os::raw::c_void>, + pub asWord: root::__BindgenUnionField<usize>, + pub asUIntPtr: root::__BindgenUnionField<usize>, + pub bindgen_union_field: u64, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Value_layout__bindgen_ty_1 { + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 8usize], u64>, + pub __bindgen_align: [u64; 0usize], + } + #[test] + fn bindgen_test_layout_Value_layout__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<Value_layout__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(Value_layout__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<Value_layout__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(Value_layout__bindgen_ty_1)) + ); + } + impl Clone for Value_layout__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + impl Value_layout__bindgen_ty_1 { + #[inline] + pub fn payload47(&self) -> u64 { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 47u8) as u64) } + } + #[inline] + pub fn set_payload47(&mut self, val: u64) { + unsafe { + let val: u64 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 47u8, val as u64) + } + } + #[inline] + pub fn tag(&self) -> root::JSValueTag { + unsafe { ::std::mem::transmute(self._bitfield_1.get(47usize, 17u8) as u32) } + } + #[inline] + pub fn set_tag(&mut self, val: root::JSValueTag) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(47usize, 17u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + payload47: u64, + tag: root::JSValueTag, + ) -> root::__BindgenBitfieldUnit<[u8; 8usize], u64> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 8usize], + u64, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 47u8, { + let payload47: u64 = unsafe { ::std::mem::transmute(payload47) }; + payload47 as u64 + }); + __bindgen_bitfield_unit.set(47usize, 17u8, { + let tag: u32 = unsafe { ::std::mem::transmute(tag) }; + tag as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Value_layout__bindgen_ty_2 { + pub payload: root::JS::Value_layout__bindgen_ty_2__bindgen_ty_1, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct Value_layout__bindgen_ty_2__bindgen_ty_1 { + pub i32: root::__BindgenUnionField<i32>, + pub u32: root::__BindgenUnionField<u32>, + pub why: root::__BindgenUnionField<root::JSWhyMagic>, + pub bindgen_union_field: u32, + } + #[test] + fn bindgen_test_layout_Value_layout__bindgen_ty_2__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<Value_layout__bindgen_ty_2__bindgen_ty_1>(), + 4usize, + concat!( + "Size of: ", + stringify!(Value_layout__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<Value_layout__bindgen_ty_2__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(Value_layout__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Value_layout__bindgen_ty_2__bindgen_ty_1>())).i32 + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(i32) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Value_layout__bindgen_ty_2__bindgen_ty_1>())).u32 + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(u32) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Value_layout__bindgen_ty_2__bindgen_ty_1>())).why + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(why) + ) + ); + } + impl Clone for Value_layout__bindgen_ty_2__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_Value_layout__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::<Value_layout__bindgen_ty_2>(), + 4usize, + concat!("Size of: ", stringify!(Value_layout__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::<Value_layout__bindgen_ty_2>(), + 4usize, + concat!("Alignment of ", stringify!(Value_layout__bindgen_ty_2)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<Value_layout__bindgen_ty_2>())).payload as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout__bindgen_ty_2), + "::", + stringify!(payload) + ) + ); + } + impl Clone for Value_layout__bindgen_ty_2 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_Value_layout() { + assert_eq!( + ::std::mem::size_of::<Value_layout>(), + 8usize, + concat!("Size of: ", stringify!(Value_layout)) + ); + assert_eq!( + ::std::mem::align_of::<Value_layout>(), + 8usize, + concat!("Alignment of ", stringify!(Value_layout)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Value_layout>())).asBits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout), + "::", + stringify!(asBits) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Value_layout>())).debugView as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout), + "::", + stringify!(debugView) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Value_layout>())).s as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout), + "::", + stringify!(s) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Value_layout>())).asDouble as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout), + "::", + stringify!(asDouble) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Value_layout>())).asPtr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout), + "::", + stringify!(asPtr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Value_layout>())).asWord as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout), + "::", + stringify!(asWord) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<Value_layout>())).asUIntPtr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Value_layout), + "::", + stringify!(asUIntPtr) + ) + ); + } + impl Clone for Value_layout { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ConstUTF8CharsZ { + pub data_: *const ::std::os::raw::c_char, + } + pub type ConstUTF8CharsZ_CharT = ::std::os::raw::c_uchar; + #[test] + fn bindgen_test_layout_ConstUTF8CharsZ() { + assert_eq!( + ::std::mem::size_of::<ConstUTF8CharsZ>(), + 8usize, + concat!("Size of: ", stringify!(ConstUTF8CharsZ)) + ); + assert_eq!( + ::std::mem::align_of::<ConstUTF8CharsZ>(), + 8usize, + concat!("Alignment of ", stringify!(ConstUTF8CharsZ)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ConstUTF8CharsZ>())).data_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ConstUTF8CharsZ), + "::", + stringify!(data_) + ) + ); + } + impl Clone for ConstUTF8CharsZ { + fn clone(&self) -> Self { + *self + } + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct JSObject { + _unused: [u8; 0], + } + pub mod js { + #[allow(unused_imports)] + use self::super::super::root; + pub mod gc { + #[allow(unused_imports)] + use self::super::super::super::root; + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct SystemAllocPolicy { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_SystemAllocPolicy() { + assert_eq!( + ::std::mem::size_of::<SystemAllocPolicy>(), + 1usize, + concat!("Size of: ", stringify!(SystemAllocPolicy)) + ); + assert_eq!( + ::std::mem::align_of::<SystemAllocPolicy>(), + 1usize, + concat!("Alignment of ", stringify!(SystemAllocPolicy)) + ); + } + impl Clone for SystemAllocPolicy { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct SourceHook__bindgen_vtable(::std::os::raw::c_void); + /// A class of objects that return source code on demand. /// /// When code is compiled with setSourceIsLazy(true), SpiderMonkey doesn't /// retain the source code (and doesn't do lazy bytecode generation). If we ever @@ -558,37 +13670,602 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// toSource or Debugger.Source.prototype.text, then we call the 'load' member /// function of the instance of this class that has hopefully been registered /// with the runtime, passing the code's URL, and hope that it will be able to - /// find the source. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct SourceHook { pub vtable_ : * const SourceHook__bindgen_vtable , } # [ test ] fn bindgen_test_layout_SourceHook ( ) { assert_eq ! ( :: std :: mem :: size_of :: < SourceHook > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( SourceHook ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < SourceHook > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( SourceHook ) ) ) ; } } - /// Factors implementation for all template versions of nsCOMPtr. + /// find the source. + #[repr(C)] + #[derive(Debug)] + pub struct SourceHook { + pub vtable_: *const SourceHook__bindgen_vtable, + } + #[test] + fn bindgen_test_layout_SourceHook() { + assert_eq!( + ::std::mem::size_of::<SourceHook>(), + 8usize, + concat!("Size of: ", stringify!(SourceHook)) + ); + assert_eq!( + ::std::mem::align_of::<SourceHook>(), + 8usize, + concat!("Alignment of ", stringify!(SourceHook)) + ); + } + } + /// Factors implementation for all template versions of nsCOMPtr. /// /// Here's the way people normally do things like this: /// /// template<class T> class Foo { ... }; /// template<> class Foo<void*> { ... }; - /// template<class T> class Foo<T*> : private Foo<void*> { ... }; - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCOMPtr_base { pub mRawPtr : * mut root :: nsISupports , } # [ test ] fn bindgen_test_layout_nsCOMPtr_base ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCOMPtr_base > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsCOMPtr_base ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCOMPtr_base > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCOMPtr_base ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCOMPtr_base ) ) . mRawPtr as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCOMPtr_base ) , "::" , stringify ! ( mRawPtr ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCOMPtr { pub _base : root :: nsCOMPtr_base , } pub type nsCOMPtr_element_type < T > = T ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAutoPtr < T > { pub mRawPtr : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsAutoPtr_Ptr < T > { pub mPtr : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsAutoPtr_element_type < T > = T ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsAutoPtr_Proxy { pub _address : u8 , } pub type nsAutoPtr_Proxy_member_function = u8 ; pub type PLDHashNumber = u32 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct PLDHashEntryHdr { pub mKeyHash : root :: PLDHashNumber , } # [ test ] fn bindgen_test_layout_PLDHashEntryHdr ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PLDHashEntryHdr > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( PLDHashEntryHdr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PLDHashEntryHdr > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( PLDHashEntryHdr ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashEntryHdr ) ) . mKeyHash as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashEntryHdr ) , "::" , stringify ! ( mKeyHash ) ) ) ; } impl Clone for PLDHashEntryHdr { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct PLDHashTable { pub mOps : * const root :: PLDHashTableOps , pub mEntryStore : root :: PLDHashTable_EntryStore , pub mGeneration : u16 , pub mHashShift : u8 , pub mEntrySize : u8 , pub mEntryCount : u32 , pub mRemovedCount : u32 , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct PLDHashTable_EntryStore { pub mEntryStore : * mut :: std :: os :: raw :: c_char , } # [ test ] fn bindgen_test_layout_PLDHashTable_EntryStore ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PLDHashTable_EntryStore > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( PLDHashTable_EntryStore ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PLDHashTable_EntryStore > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PLDHashTable_EntryStore ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable_EntryStore ) ) . mEntryStore as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable_EntryStore ) , "::" , stringify ! ( mEntryStore ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct PLDHashTable_Iterator { pub mTable : * mut root :: PLDHashTable , pub mStart : * mut :: std :: os :: raw :: c_char , pub mLimit : * mut :: std :: os :: raw :: c_char , pub mCurrent : * mut :: std :: os :: raw :: c_char , pub mNexts : u32 , pub mNextsLimit : u32 , pub mHaveRemoved : bool , } # [ test ] fn bindgen_test_layout_PLDHashTable_Iterator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PLDHashTable_Iterator > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( PLDHashTable_Iterator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PLDHashTable_Iterator > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PLDHashTable_Iterator ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable_Iterator ) ) . mTable as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable_Iterator ) , "::" , stringify ! ( mTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable_Iterator ) ) . mStart as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable_Iterator ) , "::" , stringify ! ( mStart ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable_Iterator ) ) . mLimit as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable_Iterator ) , "::" , stringify ! ( mLimit ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable_Iterator ) ) . mCurrent as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable_Iterator ) , "::" , stringify ! ( mCurrent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable_Iterator ) ) . mNexts as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable_Iterator ) , "::" , stringify ! ( mNexts ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable_Iterator ) ) . mNextsLimit as * const _ as usize } , 36usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable_Iterator ) , "::" , stringify ! ( mNextsLimit ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable_Iterator ) ) . mHaveRemoved as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable_Iterator ) , "::" , stringify ! ( mHaveRemoved ) ) ) ; } pub const PLDHashTable_SearchReason_ForSearchOrRemove : root :: PLDHashTable_SearchReason = 0 ; pub const PLDHashTable_SearchReason_ForAdd : root :: PLDHashTable_SearchReason = 1 ; pub type PLDHashTable_SearchReason = :: std :: os :: raw :: c_uint ; pub const PLDHashTable_kMaxCapacity : u32 = 67108864 ; pub const PLDHashTable_kMinCapacity : u32 = 8 ; pub const PLDHashTable_kMaxInitialLength : u32 = 33554432 ; pub const PLDHashTable_kDefaultInitialLength : u32 = 4 ; pub const PLDHashTable_kHashBits : u32 = 32 ; pub const PLDHashTable_kGoldenRatio : u32 = 2654435769 ; pub const PLDHashTable_kCollisionFlag : root :: PLDHashNumber = 1 ; # [ test ] fn bindgen_test_layout_PLDHashTable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PLDHashTable > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( PLDHashTable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PLDHashTable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PLDHashTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable ) ) . mOps as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable ) , "::" , stringify ! ( mOps ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable ) ) . mEntryStore as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable ) , "::" , stringify ! ( mEntryStore ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable ) ) . mGeneration as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable ) , "::" , stringify ! ( mGeneration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable ) ) . mHashShift as * const _ as usize } , 18usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable ) , "::" , stringify ! ( mHashShift ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable ) ) . mEntrySize as * const _ as usize } , 19usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable ) , "::" , stringify ! ( mEntrySize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable ) ) . mEntryCount as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable ) , "::" , stringify ! ( mEntryCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTable ) ) . mRemovedCount as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTable ) , "::" , stringify ! ( mRemovedCount ) ) ) ; } pub type PLDHashHashKey = :: std :: option :: Option < unsafe extern "C" fn ( aKey : * const :: std :: os :: raw :: c_void ) -> root :: PLDHashNumber > ; pub type PLDHashMatchEntry = :: std :: option :: Option < unsafe extern "C" fn ( aEntry : * const root :: PLDHashEntryHdr , aKey : * const :: std :: os :: raw :: c_void ) -> bool > ; pub type PLDHashMoveEntry = :: std :: option :: Option < unsafe extern "C" fn ( aTable : * mut root :: PLDHashTable , aFrom : * const root :: PLDHashEntryHdr , aTo : * mut root :: PLDHashEntryHdr ) > ; pub type PLDHashClearEntry = :: std :: option :: Option < unsafe extern "C" fn ( aTable : * mut root :: PLDHashTable , aEntry : * mut root :: PLDHashEntryHdr ) > ; pub type PLDHashInitEntry = :: std :: option :: Option < unsafe extern "C" fn ( aEntry : * mut root :: PLDHashEntryHdr , aKey : * const :: std :: os :: raw :: c_void ) > ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct PLDHashTableOps { pub hashKey : root :: PLDHashHashKey , pub matchEntry : root :: PLDHashMatchEntry , pub moveEntry : root :: PLDHashMoveEntry , pub clearEntry : root :: PLDHashClearEntry , pub initEntry : root :: PLDHashInitEntry , } # [ test ] fn bindgen_test_layout_PLDHashTableOps ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PLDHashTableOps > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( PLDHashTableOps ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PLDHashTableOps > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PLDHashTableOps ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTableOps ) ) . hashKey as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTableOps ) , "::" , stringify ! ( hashKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTableOps ) ) . matchEntry as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTableOps ) , "::" , stringify ! ( matchEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTableOps ) ) . moveEntry as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTableOps ) , "::" , stringify ! ( moveEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTableOps ) ) . clearEntry as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTableOps ) , "::" , stringify ! ( clearEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLDHashTableOps ) ) . initEntry as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( PLDHashTableOps ) , "::" , stringify ! ( initEntry ) ) ) ; } impl Clone for PLDHashTableOps { fn clone ( & self ) -> Self { * self } } - /// hashkey wrapper using T* KeyType + /// template<class T> class Foo<T*> : private Foo<void*> { ... }; + #[repr(C)] + #[derive(Debug)] + pub struct nsCOMPtr_base { + pub mRawPtr: *mut root::nsISupports, + } + #[test] + fn bindgen_test_layout_nsCOMPtr_base() { + assert_eq!( + ::std::mem::size_of::<nsCOMPtr_base>(), + 8usize, + concat!("Size of: ", stringify!(nsCOMPtr_base)) + ); + assert_eq!( + ::std::mem::align_of::<nsCOMPtr_base>(), + 8usize, + concat!("Alignment of ", stringify!(nsCOMPtr_base)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCOMPtr_base>())).mRawPtr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCOMPtr_base), + "::", + stringify!(mRawPtr) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCOMPtr { + pub _base: root::nsCOMPtr_base, + } + pub type nsCOMPtr_element_type<T> = T; + #[repr(C)] + #[derive(Debug)] + pub struct nsAutoPtr<T> { + pub mRawPtr: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsAutoPtr_Ptr<T> { + pub mPtr: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsAutoPtr_element_type<T> = T; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsAutoPtr_Proxy { + pub _address: u8, + } + pub type nsAutoPtr_Proxy_member_function = u8; + pub type PLDHashNumber = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct PLDHashEntryHdr { + pub mKeyHash: root::PLDHashNumber, + } + #[test] + fn bindgen_test_layout_PLDHashEntryHdr() { + assert_eq!( + ::std::mem::size_of::<PLDHashEntryHdr>(), + 4usize, + concat!("Size of: ", stringify!(PLDHashEntryHdr)) + ); + assert_eq!( + ::std::mem::align_of::<PLDHashEntryHdr>(), + 4usize, + concat!("Alignment of ", stringify!(PLDHashEntryHdr)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashEntryHdr>())).mKeyHash as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PLDHashEntryHdr), + "::", + stringify!(mKeyHash) + ) + ); + } + impl Clone for PLDHashEntryHdr { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct PLDHashTable { + pub mOps: *const root::PLDHashTableOps, + pub mEntryStore: root::PLDHashTable_EntryStore, + pub mGeneration: u16, + pub mHashShift: u8, + pub mEntrySize: u8, + pub mEntryCount: u32, + pub mRemovedCount: u32, + } + #[repr(C)] + #[derive(Debug)] + pub struct PLDHashTable_EntryStore { + pub mEntryStore: *mut ::std::os::raw::c_char, + } + #[test] + fn bindgen_test_layout_PLDHashTable_EntryStore() { + assert_eq!( + ::std::mem::size_of::<PLDHashTable_EntryStore>(), + 8usize, + concat!("Size of: ", stringify!(PLDHashTable_EntryStore)) + ); + assert_eq!( + ::std::mem::align_of::<PLDHashTable_EntryStore>(), + 8usize, + concat!("Alignment of ", stringify!(PLDHashTable_EntryStore)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PLDHashTable_EntryStore>())).mEntryStore as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable_EntryStore), + "::", + stringify!(mEntryStore) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct PLDHashTable_Iterator { + pub mTable: *mut root::PLDHashTable, + pub mStart: *mut ::std::os::raw::c_char, + pub mLimit: *mut ::std::os::raw::c_char, + pub mCurrent: *mut ::std::os::raw::c_char, + pub mNexts: u32, + pub mNextsLimit: u32, + pub mHaveRemoved: bool, + } + #[test] + fn bindgen_test_layout_PLDHashTable_Iterator() { + assert_eq!( + ::std::mem::size_of::<PLDHashTable_Iterator>(), + 48usize, + concat!("Size of: ", stringify!(PLDHashTable_Iterator)) + ); + assert_eq!( + ::std::mem::align_of::<PLDHashTable_Iterator>(), + 8usize, + concat!("Alignment of ", stringify!(PLDHashTable_Iterator)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PLDHashTable_Iterator>())).mTable as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable_Iterator), + "::", + stringify!(mTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PLDHashTable_Iterator>())).mStart as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable_Iterator), + "::", + stringify!(mStart) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PLDHashTable_Iterator>())).mLimit as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable_Iterator), + "::", + stringify!(mLimit) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PLDHashTable_Iterator>())).mCurrent as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable_Iterator), + "::", + stringify!(mCurrent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PLDHashTable_Iterator>())).mNexts as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable_Iterator), + "::", + stringify!(mNexts) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PLDHashTable_Iterator>())).mNextsLimit as *const _ as usize + }, + 36usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable_Iterator), + "::", + stringify!(mNextsLimit) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<PLDHashTable_Iterator>())).mHaveRemoved as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable_Iterator), + "::", + stringify!(mHaveRemoved) + ) + ); + } + pub const PLDHashTable_SearchReason_ForSearchOrRemove: root::PLDHashTable_SearchReason = 0; + pub const PLDHashTable_SearchReason_ForAdd: root::PLDHashTable_SearchReason = 1; + pub type PLDHashTable_SearchReason = u32; + pub const PLDHashTable_kMaxCapacity: u32 = 67108864; + pub const PLDHashTable_kMinCapacity: u32 = 8; + pub const PLDHashTable_kMaxInitialLength: u32 = 33554432; + pub const PLDHashTable_kDefaultInitialLength: u32 = 4; + pub const PLDHashTable_kHashBits: u32 = 32; + pub const PLDHashTable_kGoldenRatio: u32 = 2654435769; + pub const PLDHashTable_kCollisionFlag: root::PLDHashNumber = 1; + #[test] + fn bindgen_test_layout_PLDHashTable() { + assert_eq!( + ::std::mem::size_of::<PLDHashTable>(), + 32usize, + concat!("Size of: ", stringify!(PLDHashTable)) + ); + assert_eq!( + ::std::mem::align_of::<PLDHashTable>(), + 8usize, + concat!("Alignment of ", stringify!(PLDHashTable)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTable>())).mOps as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable), + "::", + stringify!(mOps) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTable>())).mEntryStore as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable), + "::", + stringify!(mEntryStore) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTable>())).mGeneration as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable), + "::", + stringify!(mGeneration) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTable>())).mHashShift as *const _ as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable), + "::", + stringify!(mHashShift) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTable>())).mEntrySize as *const _ as usize }, + 19usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable), + "::", + stringify!(mEntrySize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTable>())).mEntryCount as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable), + "::", + stringify!(mEntryCount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTable>())).mRemovedCount as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTable), + "::", + stringify!(mRemovedCount) + ) + ); + } + pub type PLDHashHashKey = ::std::option::Option< + unsafe extern "C" fn(aKey: *const ::std::os::raw::c_void) -> root::PLDHashNumber, + >; + pub type PLDHashMatchEntry = ::std::option::Option< + unsafe extern "C" fn( + aEntry: *const root::PLDHashEntryHdr, + aKey: *const ::std::os::raw::c_void, + ) -> bool, + >; + pub type PLDHashMoveEntry = ::std::option::Option< + unsafe extern "C" fn( + aTable: *mut root::PLDHashTable, + aFrom: *const root::PLDHashEntryHdr, + aTo: *mut root::PLDHashEntryHdr, + ), + >; + pub type PLDHashClearEntry = ::std::option::Option< + unsafe extern "C" fn(aTable: *mut root::PLDHashTable, aEntry: *mut root::PLDHashEntryHdr), + >; + pub type PLDHashInitEntry = ::std::option::Option< + unsafe extern "C" fn( + aEntry: *mut root::PLDHashEntryHdr, + aKey: *const ::std::os::raw::c_void, + ), + >; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct PLDHashTableOps { + pub hashKey: root::PLDHashHashKey, + pub matchEntry: root::PLDHashMatchEntry, + pub moveEntry: root::PLDHashMoveEntry, + pub clearEntry: root::PLDHashClearEntry, + pub initEntry: root::PLDHashInitEntry, + } + #[test] + fn bindgen_test_layout_PLDHashTableOps() { + assert_eq!( + ::std::mem::size_of::<PLDHashTableOps>(), + 40usize, + concat!("Size of: ", stringify!(PLDHashTableOps)) + ); + assert_eq!( + ::std::mem::align_of::<PLDHashTableOps>(), + 8usize, + concat!("Alignment of ", stringify!(PLDHashTableOps)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTableOps>())).hashKey as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTableOps), + "::", + stringify!(hashKey) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTableOps>())).matchEntry as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTableOps), + "::", + stringify!(matchEntry) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTableOps>())).moveEntry as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTableOps), + "::", + stringify!(moveEntry) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTableOps>())).clearEntry as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTableOps), + "::", + stringify!(clearEntry) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLDHashTableOps>())).initEntry as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(PLDHashTableOps), + "::", + stringify!(initEntry) + ) + ); + } + impl Clone for PLDHashTableOps { + fn clone(&self) -> Self { + *self + } + } + /// hashkey wrapper using T* KeyType /// - /// @see nsTHashtable::EntryType for specification - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsPtrHashKey < T > { pub _base : root :: PLDHashEntryHdr , pub mKey : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsPtrHashKey_KeyType < T > = * mut T ; pub type nsPtrHashKey_KeyTypePointer < T > = * mut T ; pub const nsPtrHashKey_ALLOW_MEMMOVE : root :: nsPtrHashKey__bindgen_ty_1 = 0 ; pub type nsPtrHashKey__bindgen_ty_1 = i32 ; - /// hashkey wrapper using nsAString KeyType + /// @see nsTHashtable::EntryType for specification + #[repr(C)] + #[derive(Debug)] + pub struct nsPtrHashKey<T> { + pub _base: root::PLDHashEntryHdr, + pub mKey: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsPtrHashKey_KeyType<T> = *mut T; + pub type nsPtrHashKey_KeyTypePointer<T> = *mut T; + pub const nsPtrHashKey_ALLOW_MEMMOVE: root::nsPtrHashKey__bindgen_ty_1 = 0; + pub type nsPtrHashKey__bindgen_ty_1 = i32; + /// hashkey wrapper using nsAString KeyType /// - /// @see nsTHashtable::EntryType for specification - # [ repr ( C ) ] pub struct nsStringHashKey { pub _base : root :: PLDHashEntryHdr , pub mStr : ::nsstring::nsStringRepr , } pub type nsStringHashKey_KeyType = * const root :: nsAString ; pub type nsStringHashKey_KeyTypePointer = * const root :: nsAString ; pub const nsStringHashKey_ALLOW_MEMMOVE : root :: nsStringHashKey__bindgen_ty_1 = 1 ; pub type nsStringHashKey__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsStringHashKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStringHashKey > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStringHashKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStringHashKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStringHashKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStringHashKey ) ) . mStr as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStringHashKey ) , "::" , stringify ! ( mStr ) ) ) ; } - /// hashkey wrapper using nsACString KeyType + /// @see nsTHashtable::EntryType for specification + #[repr(C)] + pub struct nsStringHashKey { + pub _base: root::PLDHashEntryHdr, + pub mStr: ::nsstring::nsStringRepr, + } + pub type nsStringHashKey_KeyType = *const root::nsAString; + pub type nsStringHashKey_KeyTypePointer = *const root::nsAString; + pub const nsStringHashKey_ALLOW_MEMMOVE: root::nsStringHashKey__bindgen_ty_1 = 1; + pub type nsStringHashKey__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsStringHashKey() { + assert_eq!( + ::std::mem::size_of::<nsStringHashKey>(), + 24usize, + concat!("Size of: ", stringify!(nsStringHashKey)) + ); + assert_eq!( + ::std::mem::align_of::<nsStringHashKey>(), + 8usize, + concat!("Alignment of ", stringify!(nsStringHashKey)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStringHashKey>())).mStr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStringHashKey), + "::", + stringify!(mStr) + ) + ); + } + /// hashkey wrapper using nsACString KeyType /// - /// @see nsTHashtable::EntryType for specification - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCStringHashKey { pub _base : root :: PLDHashEntryHdr , pub mStr : root :: nsCString , } pub type nsCStringHashKey_KeyType = * const root :: nsACString ; pub type nsCStringHashKey_KeyTypePointer = * const root :: nsACString ; pub const nsCStringHashKey_ALLOW_MEMMOVE : root :: nsCStringHashKey__bindgen_ty_1 = 1 ; pub type nsCStringHashKey__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsCStringHashKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCStringHashKey > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsCStringHashKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCStringHashKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCStringHashKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCStringHashKey ) ) . mStr as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCStringHashKey ) , "::" , stringify ! ( mStr ) ) ) ; } - /// hashkey wrapper using nsISupports* KeyType + /// @see nsTHashtable::EntryType for specification + #[repr(C)] + #[derive(Debug)] + pub struct nsCStringHashKey { + pub _base: root::PLDHashEntryHdr, + pub mStr: root::nsCString, + } + pub type nsCStringHashKey_KeyType = *const root::nsACString; + pub type nsCStringHashKey_KeyTypePointer = *const root::nsACString; + pub const nsCStringHashKey_ALLOW_MEMMOVE: root::nsCStringHashKey__bindgen_ty_1 = 1; + pub type nsCStringHashKey__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsCStringHashKey() { + assert_eq!( + ::std::mem::size_of::<nsCStringHashKey>(), + 24usize, + concat!("Size of: ", stringify!(nsCStringHashKey)) + ); + assert_eq!( + ::std::mem::align_of::<nsCStringHashKey>(), + 8usize, + concat!("Alignment of ", stringify!(nsCStringHashKey)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCStringHashKey>())).mStr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCStringHashKey), + "::", + stringify!(mStr) + ) + ); + } + /// hashkey wrapper using nsISupports* KeyType /// - /// @see nsTHashtable::EntryType for specification - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsISupportsHashKey { pub _base : root :: PLDHashEntryHdr , pub mSupports : root :: nsCOMPtr , } pub type nsISupportsHashKey_KeyType = * mut root :: nsISupports ; pub type nsISupportsHashKey_KeyTypePointer = * const root :: nsISupports ; pub const nsISupportsHashKey_ALLOW_MEMMOVE : root :: nsISupportsHashKey__bindgen_ty_1 = 1 ; pub type nsISupportsHashKey__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsISupportsHashKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsISupportsHashKey > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsISupportsHashKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsISupportsHashKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsISupportsHashKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsISupportsHashKey ) ) . mSupports as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsISupportsHashKey ) , "::" , stringify ! ( mSupports ) ) ) ; } - /// hashkey wrapper using refcounted * KeyType + /// @see nsTHashtable::EntryType for specification + #[repr(C)] + #[derive(Debug)] + pub struct nsISupportsHashKey { + pub _base: root::PLDHashEntryHdr, + pub mSupports: root::nsCOMPtr, + } + pub type nsISupportsHashKey_KeyType = *mut root::nsISupports; + pub type nsISupportsHashKey_KeyTypePointer = *const root::nsISupports; + pub const nsISupportsHashKey_ALLOW_MEMMOVE: root::nsISupportsHashKey__bindgen_ty_1 = 1; + pub type nsISupportsHashKey__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsISupportsHashKey() { + assert_eq!( + ::std::mem::size_of::<nsISupportsHashKey>(), + 16usize, + concat!("Size of: ", stringify!(nsISupportsHashKey)) + ); + assert_eq!( + ::std::mem::align_of::<nsISupportsHashKey>(), + 8usize, + concat!("Alignment of ", stringify!(nsISupportsHashKey)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsISupportsHashKey>())).mSupports as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsISupportsHashKey), + "::", + stringify!(mSupports) + ) + ); + } + /// hashkey wrapper using refcounted * KeyType /// - /// @see nsTHashtable::EntryType for specification - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsRefPtrHashKey < T > { pub _base : root :: PLDHashEntryHdr , pub mKey : root :: RefPtr < T > , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsRefPtrHashKey_KeyType < T > = * mut T ; pub type nsRefPtrHashKey_KeyTypePointer < T > = * mut T ; pub const nsRefPtrHashKey_ALLOW_MEMMOVE : root :: nsRefPtrHashKey__bindgen_ty_1 = 0 ; pub type nsRefPtrHashKey__bindgen_ty_1 = i32 ; - /// a base class for templated hashtables. + /// @see nsTHashtable::EntryType for specification + #[repr(C)] + #[derive(Debug)] + pub struct nsRefPtrHashKey<T> { + pub _base: root::PLDHashEntryHdr, + pub mKey: root::RefPtr<T>, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsRefPtrHashKey_KeyType<T> = *mut T; + pub type nsRefPtrHashKey_KeyTypePointer<T> = *mut T; + pub const nsRefPtrHashKey_ALLOW_MEMMOVE: root::nsRefPtrHashKey__bindgen_ty_1 = 0; + pub type nsRefPtrHashKey__bindgen_ty_1 = i32; + /// a base class for templated hashtables. /// /// Clients will rarely need to use this class directly. Check the derived /// classes first, to see if they will meet your needs. @@ -636,17 +14313,37 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// @see nsInterfaceHashtable /// @see nsDataHashtable /// @see nsClassHashtable - /// @author "Benjamin Smedberg <bsmedberg@covad.net>" - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTHashtable { pub _address : u8 , } pub type nsTHashtable_fallible_t = root :: mozilla :: fallible_t ; - /// KeyType is typedef'ed for ease of use. - pub type nsTHashtable_KeyType = [ u8 ; 0usize ] ; - /// KeyTypePointer is typedef'ed for ease of use. - pub type nsTHashtable_KeyTypePointer = [ u8 ; 0usize ] ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsTHashtable_Iterator { pub _base : root :: PLDHashTable_Iterator , } pub type nsTHashtable_Iterator_Base = root :: PLDHashTable_Iterator ; - /// the private nsTHashtable::EntryType class used by nsBaseHashtable + /// @author "Benjamin Smedberg <bsmedberg@covad.net>" + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTHashtable { + pub _address: u8, + } + pub type nsTHashtable_fallible_t = root::mozilla::fallible_t; + /// KeyType is typedef'ed for ease of use. + pub type nsTHashtable_KeyType = [u8; 0usize]; + /// KeyTypePointer is typedef'ed for ease of use. + pub type nsTHashtable_KeyTypePointer = [u8; 0usize]; + #[repr(C)] + #[derive(Debug)] + pub struct nsTHashtable_Iterator { + pub _base: root::PLDHashTable_Iterator, + } + pub type nsTHashtable_Iterator_Base = root::PLDHashTable_Iterator; + /// the private nsTHashtable::EntryType class used by nsBaseHashtable /// @see nsTHashtable for the specification of this class - /// @see nsBaseHashtable for template parameters - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsBaseHashtableET < KeyClass , DataType > { pub _base : KeyClass , pub mData : DataType , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < KeyClass > > , pub _phantom_1 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < DataType > > , } pub type nsBaseHashtableET_KeyType = [ u8 ; 0usize ] ; pub type nsBaseHashtableET_KeyTypePointer = [ u8 ; 0usize ] ; - /// templated hashtable for simple data types + /// @see nsBaseHashtable for template parameters + #[repr(C)] + #[derive(Debug)] + pub struct nsBaseHashtableET<KeyClass, DataType> { + pub _base: KeyClass, + pub mData: DataType, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<KeyClass>>, + pub _phantom_1: ::std::marker::PhantomData<::std::cell::UnsafeCell<DataType>>, + } + pub type nsBaseHashtableET_KeyType = [u8; 0usize]; + pub type nsBaseHashtableET_KeyTypePointer = [u8; 0usize]; + /// templated hashtable for simple data types /// This class manages simple data types that do not need construction or /// destruction. /// @@ -655,43 +14352,1278 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// @param DataType the datatype stored in the hashtable, /// for example, uint32_t or nsCOMPtr. If UserDataType is not the same, /// DataType must implicitly cast to UserDataType - /// @param UserDataType the user sees, for example uint32_t or nsISupports* - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsBaseHashtable { pub _address : u8 , } pub type nsBaseHashtable_fallible_t = root :: mozilla :: fallible_t ; pub type nsBaseHashtable_KeyType = [ u8 ; 0usize ] ; pub type nsBaseHashtable_EntryType < KeyClass , DataType > = root :: nsBaseHashtableET < KeyClass , DataType > ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsBaseHashtable_LookupResult < KeyClass , DataType > { pub mEntry : * mut root :: nsBaseHashtable_EntryType < KeyClass , DataType > , pub mTable : * mut u8 , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < KeyClass > > , pub _phantom_1 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < DataType > > , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsBaseHashtable_EntryPtr < KeyClass , DataType > { pub mEntry : * mut root :: nsBaseHashtable_EntryType < KeyClass , DataType > , pub mExistingEntry : bool , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < KeyClass > > , pub _phantom_1 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < DataType > > , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsBaseHashtable_Iterator { pub _base : root :: PLDHashTable_Iterator , } pub type nsBaseHashtable_Iterator_Base = root :: PLDHashTable_Iterator ; - /// templated hashtable class maps keys to simple datatypes. + /// @param UserDataType the user sees, for example uint32_t or nsISupports* + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsBaseHashtable { + pub _address: u8, + } + pub type nsBaseHashtable_fallible_t = root::mozilla::fallible_t; + pub type nsBaseHashtable_KeyType = [u8; 0usize]; + pub type nsBaseHashtable_EntryType<KeyClass, DataType> = + root::nsBaseHashtableET<KeyClass, DataType>; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsBaseHashtable_LookupResult<KeyClass, DataType> { + pub mEntry: *mut root::nsBaseHashtable_EntryType<KeyClass, DataType>, + pub mTable: *mut u8, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<KeyClass>>, + pub _phantom_1: ::std::marker::PhantomData<::std::cell::UnsafeCell<DataType>>, + } + #[repr(C)] + #[derive(Debug)] + pub struct nsBaseHashtable_EntryPtr<KeyClass, DataType> { + pub mEntry: *mut root::nsBaseHashtable_EntryType<KeyClass, DataType>, + pub mExistingEntry: bool, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<KeyClass>>, + pub _phantom_1: ::std::marker::PhantomData<::std::cell::UnsafeCell<DataType>>, + } + #[repr(C)] + #[derive(Debug)] + pub struct nsBaseHashtable_Iterator { + pub _base: root::PLDHashTable_Iterator, + } + pub type nsBaseHashtable_Iterator_Base = root::PLDHashTable_Iterator; + /// templated hashtable class maps keys to simple datatypes. /// See nsBaseHashtable for complete declaration /// @param KeyClass a wrapper-class for the hashtable key, see nsHashKeys.h /// for a complete specification. /// @param DataType the simple datatype being wrapped - /// @see nsInterfaceHashtable, nsClassHashtable - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsDataHashtable { pub _address : u8 , } pub type nsDataHashtable_BaseClass = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsTArrayHeader { pub mLength : u32 , pub _bitfield_1 : u32 , } extern "C" { - # [ link_name = "\u{1}_ZN14nsTArrayHeader9sEmptyHdrE" ] - pub static mut nsTArrayHeader_sEmptyHdr : root :: nsTArrayHeader ; -} # [ test ] fn bindgen_test_layout_nsTArrayHeader ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsTArrayHeader > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsTArrayHeader ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsTArrayHeader > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsTArrayHeader ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTArrayHeader ) ) . mLength as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsTArrayHeader ) , "::" , stringify ! ( mLength ) ) ) ; } impl Clone for nsTArrayHeader { fn clone ( & self ) -> Self { * self } } impl nsTArrayHeader { # [ inline ] pub fn mCapacity ( & self ) -> u32 { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x7fffffff as u32 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mCapacity ( & mut self , val : u32 ) { let mask = 0x7fffffff as u32 ; let val = val as u32 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mIsAutoArray ( & self ) -> u32 { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x80000000 as u32 ; let val = ( unit_field_val & mask ) >> 31usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsAutoArray ( & mut self , val : u32 ) { let mask = 0x80000000 as u32 ; let val = val as u32 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 31usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mCapacity : u32 , mIsAutoArray : u32 ) -> u32 { ( ( 0 | ( ( mCapacity as u32 as u32 ) << 0usize ) & ( 0x7fffffff as u32 ) ) | ( ( mIsAutoArray as u32 as u32 ) << 31usize ) & ( 0x80000000 as u32 ) ) } } pub type AutoTArray_self_type = u8 ; pub type AutoTArray_base_type < E > = root :: nsTArray < E > ; pub type AutoTArray_Header < E > = root :: AutoTArray_base_type < E > ; pub type AutoTArray_elem_type < E > = root :: AutoTArray_base_type < E > ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct AutoTArray__bindgen_ty_1 { pub mAutoBuf : root :: __BindgenUnionField < * mut :: std :: os :: raw :: c_char > , pub mAlign : root :: __BindgenUnionField < u8 > , pub bindgen_union_field : u64 , } pub type nscoord = i32 ; pub type nscolor = u32 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct gfxFontFeature { pub mTag : u32 , pub mValue : u32 , } # [ test ] fn bindgen_test_layout_gfxFontFeature ( ) { assert_eq ! ( :: std :: mem :: size_of :: < gfxFontFeature > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( gfxFontFeature ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < gfxFontFeature > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( gfxFontFeature ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeature ) ) . mTag as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeature ) , "::" , stringify ! ( mTag ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeature ) ) . mValue as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeature ) , "::" , stringify ! ( mValue ) ) ) ; } impl Clone for gfxFontFeature { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct gfxAlternateValue { pub alternate : u32 , pub value : ::nsstring::nsStringRepr , } # [ test ] fn bindgen_test_layout_gfxAlternateValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < gfxAlternateValue > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( gfxAlternateValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < gfxAlternateValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( gfxAlternateValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxAlternateValue ) ) . alternate as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( gfxAlternateValue ) , "::" , stringify ! ( alternate ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxAlternateValue ) ) . value as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( gfxAlternateValue ) , "::" , stringify ! ( value ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct gfxFontFeatureValueSet { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mFontFeatureValues : [ u64 ; 4usize ] , } pub type gfxFontFeatureValueSet_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ repr ( C ) ] pub struct gfxFontFeatureValueSet_ValueList { pub name : ::nsstring::nsStringRepr , pub featureSelectors : root :: nsTArray < u32 > , } # [ test ] fn bindgen_test_layout_gfxFontFeatureValueSet_ValueList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < gfxFontFeatureValueSet_ValueList > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( gfxFontFeatureValueSet_ValueList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < gfxFontFeatureValueSet_ValueList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( gfxFontFeatureValueSet_ValueList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_ValueList ) ) . name as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_ValueList ) , "::" , stringify ! ( name ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_ValueList ) ) . featureSelectors as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_ValueList ) , "::" , stringify ! ( featureSelectors ) ) ) ; } # [ repr ( C ) ] pub struct gfxFontFeatureValueSet_FeatureValues { pub alternate : u32 , pub valuelist : root :: nsTArray < root :: gfxFontFeatureValueSet_ValueList > , } # [ test ] fn bindgen_test_layout_gfxFontFeatureValueSet_FeatureValues ( ) { assert_eq ! ( :: std :: mem :: size_of :: < gfxFontFeatureValueSet_FeatureValues > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( gfxFontFeatureValueSet_FeatureValues ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < gfxFontFeatureValueSet_FeatureValues > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( gfxFontFeatureValueSet_FeatureValues ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_FeatureValues ) ) . alternate as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_FeatureValues ) , "::" , stringify ! ( alternate ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_FeatureValues ) ) . valuelist as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_FeatureValues ) , "::" , stringify ! ( valuelist ) ) ) ; } # [ repr ( C ) ] pub struct gfxFontFeatureValueSet_FeatureValueHashKey { pub mFamily : ::nsstring::nsStringRepr , pub mPropVal : u32 , pub mName : ::nsstring::nsStringRepr , } # [ test ] fn bindgen_test_layout_gfxFontFeatureValueSet_FeatureValueHashKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < gfxFontFeatureValueSet_FeatureValueHashKey > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < gfxFontFeatureValueSet_FeatureValueHashKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_FeatureValueHashKey ) ) . mFamily as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashKey ) , "::" , stringify ! ( mFamily ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_FeatureValueHashKey ) ) . mPropVal as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashKey ) , "::" , stringify ! ( mPropVal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_FeatureValueHashKey ) ) . mName as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashKey ) , "::" , stringify ! ( mName ) ) ) ; } # [ repr ( C ) ] pub struct gfxFontFeatureValueSet_FeatureValueHashEntry { pub _base : root :: PLDHashEntryHdr , pub mKey : root :: gfxFontFeatureValueSet_FeatureValueHashKey , pub mValues : root :: nsTArray < u32 > , } pub type gfxFontFeatureValueSet_FeatureValueHashEntry_KeyType = * const root :: gfxFontFeatureValueSet_FeatureValueHashKey ; pub type gfxFontFeatureValueSet_FeatureValueHashEntry_KeyTypePointer = * const root :: gfxFontFeatureValueSet_FeatureValueHashKey ; pub const gfxFontFeatureValueSet_FeatureValueHashEntry_ALLOW_MEMMOVE : root :: gfxFontFeatureValueSet_FeatureValueHashEntry__bindgen_ty_1 = 1 ; pub type gfxFontFeatureValueSet_FeatureValueHashEntry__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_gfxFontFeatureValueSet_FeatureValueHashEntry ( ) { assert_eq ! ( :: std :: mem :: size_of :: < gfxFontFeatureValueSet_FeatureValueHashEntry > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashEntry ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < gfxFontFeatureValueSet_FeatureValueHashEntry > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_FeatureValueHashEntry ) ) . mKey as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashEntry ) , "::" , stringify ! ( mKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet_FeatureValueHashEntry ) ) . mValues as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet_FeatureValueHashEntry ) , "::" , stringify ! ( mValues ) ) ) ; } # [ test ] fn bindgen_test_layout_gfxFontFeatureValueSet ( ) { assert_eq ! ( :: std :: mem :: size_of :: < gfxFontFeatureValueSet > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( gfxFontFeatureValueSet ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < gfxFontFeatureValueSet > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( gfxFontFeatureValueSet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const gfxFontFeatureValueSet ) ) . mFontFeatureValues as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( gfxFontFeatureValueSet ) , "::" , stringify ! ( mFontFeatureValues ) ) ) ; } pub type gfxFontVariation = root :: mozilla :: gfx :: FontVariation ; pub const kGenericFont_NONE : u8 = 0 ; pub const kGenericFont_moz_variable : u8 = 0 ; pub const kGenericFont_moz_fixed : u8 = 1 ; pub const kGenericFont_serif : u8 = 2 ; pub const kGenericFont_sans_serif : u8 = 4 ; pub const kGenericFont_monospace : u8 = 8 ; pub const kGenericFont_cursive : u8 = 16 ; pub const kGenericFont_fantasy : u8 = 32 ; # [ repr ( C ) ] pub struct nsFont { pub fontlist : root :: mozilla :: FontFamilyList , pub style : u8 , pub systemFont : bool , pub variantCaps : u8 , pub variantNumeric : u8 , pub variantPosition : u8 , pub variantWidth : u8 , pub variantLigatures : u16 , pub variantEastAsian : u16 , pub variantAlternates : u16 , pub smoothing : u8 , pub fontSmoothingBackgroundColor : root :: nscolor , pub weight : u16 , pub stretch : i16 , pub kerning : u8 , pub synthesis : u8 , pub size : root :: nscoord , pub sizeAdjust : f32 , pub alternateValues : root :: nsTArray < root :: gfxAlternateValue > , pub featureValueLookup : root :: RefPtr < root :: gfxFontFeatureValueSet > , pub fontFeatureSettings : root :: nsTArray < root :: gfxFontFeature > , pub fontVariationSettings : root :: nsTArray < root :: gfxFontVariation > , pub languageOverride : u32 , } pub const nsFont_MaxDifference_eNone : root :: nsFont_MaxDifference = 0 ; pub const nsFont_MaxDifference_eVisual : root :: nsFont_MaxDifference = 1 ; pub const nsFont_MaxDifference_eLayoutAffecting : root :: nsFont_MaxDifference = 2 ; pub type nsFont_MaxDifference = u8 ; # [ test ] fn bindgen_test_layout_nsFont ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsFont > ( ) , 96usize , concat ! ( "Size of: " , stringify ! ( nsFont ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsFont > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . fontlist as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( fontlist ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . style as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( style ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . systemFont as * const _ as usize } , 17usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( systemFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . variantCaps as * const _ as usize } , 18usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( variantCaps ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . variantNumeric as * const _ as usize } , 19usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( variantNumeric ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . variantPosition as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( variantPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . variantWidth as * const _ as usize } , 21usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( variantWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . variantLigatures as * const _ as usize } , 22usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( variantLigatures ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . variantEastAsian as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( variantEastAsian ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . variantAlternates as * const _ as usize } , 26usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( variantAlternates ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . smoothing as * const _ as usize } , 28usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( smoothing ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . fontSmoothingBackgroundColor as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( fontSmoothingBackgroundColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . weight as * const _ as usize } , 36usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( weight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . stretch as * const _ as usize } , 38usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( stretch ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . kerning as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( kerning ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . synthesis as * const _ as usize } , 41usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( synthesis ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . size as * const _ as usize } , 44usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( size ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . sizeAdjust as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( sizeAdjust ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . alternateValues as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( alternateValues ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . featureValueLookup as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( featureValueLookup ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . fontFeatureSettings as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( fontFeatureSettings ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . fontVariationSettings as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( fontVariationSettings ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFont ) ) . languageOverride as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsFont ) , "::" , stringify ! ( languageOverride ) ) ) ; } - /// An array of objects, similar to AutoTArray<T,1> but which is memmovable. It - /// always has length >= 1. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleAutoArray < T > { pub mFirstElement : T , pub mOtherElements : root :: nsTArray < T > , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub const nsStyleAutoArray_WithSingleInitialElement_WITH_SINGLE_INITIAL_ELEMENT : root :: nsStyleAutoArray_WithSingleInitialElement = 0 ; pub type nsStyleAutoArray_WithSingleInitialElement = i32 ; pub const nsStyleUnit_eStyleUnit_MAX : root :: nsStyleUnit = nsStyleUnit :: eStyleUnit_Calc ; # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleUnit { eStyleUnit_Null = 0 , eStyleUnit_Normal = 1 , eStyleUnit_Auto = 2 , eStyleUnit_None = 3 , eStyleUnit_Percent = 10 , eStyleUnit_Factor = 11 , eStyleUnit_Degree = 12 , eStyleUnit_Grad = 13 , eStyleUnit_Radian = 14 , eStyleUnit_Turn = 15 , eStyleUnit_FlexFraction = 16 , eStyleUnit_Coord = 20 , eStyleUnit_Integer = 30 , eStyleUnit_Enumerated = 32 , eStyleUnit_Calc = 40 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleUnion { pub mInt : root :: __BindgenUnionField < i32 > , pub mFloat : root :: __BindgenUnionField < f32 > , pub mPointer : root :: __BindgenUnionField < * mut :: std :: os :: raw :: c_void > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsStyleUnion ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleUnion > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsStyleUnion ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleUnion > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleUnion ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUnion ) ) . mInt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUnion ) , "::" , stringify ! ( mInt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUnion ) ) . mFloat as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUnion ) , "::" , stringify ! ( mFloat ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUnion ) ) . mPointer as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUnion ) , "::" , stringify ! ( mPointer ) ) ) ; } impl Clone for nsStyleUnion { fn clone ( & self ) -> Self { * self } } - /// Class that hold a single size specification used by the style + /// @see nsInterfaceHashtable, nsClassHashtable + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsDataHashtable { + pub _address: u8, + } + pub type nsDataHashtable_BaseClass = u8; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsTArrayHeader { + pub mLength: u32, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 4usize], u32>, + } + extern "C" { + #[link_name = "\u{1}_ZN14nsTArrayHeader9sEmptyHdrE"] + pub static mut nsTArrayHeader_sEmptyHdr: root::nsTArrayHeader; + } + #[test] + fn bindgen_test_layout_nsTArrayHeader() { + assert_eq!( + ::std::mem::size_of::<nsTArrayHeader>(), + 8usize, + concat!("Size of: ", stringify!(nsTArrayHeader)) + ); + assert_eq!( + ::std::mem::align_of::<nsTArrayHeader>(), + 4usize, + concat!("Alignment of ", stringify!(nsTArrayHeader)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsTArrayHeader>())).mLength as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsTArrayHeader), + "::", + stringify!(mLength) + ) + ); + } + impl Clone for nsTArrayHeader { + fn clone(&self) -> Self { + *self + } + } + impl nsTArrayHeader { + #[inline] + pub fn mCapacity(&self) -> u32 { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 31u8) as u32) } + } + #[inline] + pub fn set_mCapacity(&mut self, val: u32) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 31u8, val as u64) + } + } + #[inline] + pub fn mIsAutoArray(&self) -> u32 { + unsafe { ::std::mem::transmute(self._bitfield_1.get(31usize, 1u8) as u32) } + } + #[inline] + pub fn set_mIsAutoArray(&mut self, val: u32) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(31usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mCapacity: u32, + mIsAutoArray: u32, + ) -> root::__BindgenBitfieldUnit<[u8; 4usize], u32> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 4usize], + u32, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 31u8, { + let mCapacity: u32 = unsafe { ::std::mem::transmute(mCapacity) }; + mCapacity as u64 + }); + __bindgen_bitfield_unit.set(31usize, 1u8, { + let mIsAutoArray: u32 = unsafe { ::std::mem::transmute(mIsAutoArray) }; + mIsAutoArray as u64 + }); + __bindgen_bitfield_unit + } + } + pub type AutoTArray_self_type = u8; + pub type AutoTArray_base_type<E> = root::nsTArray<E>; + pub type AutoTArray_Header<E> = root::AutoTArray_base_type<E>; + pub type AutoTArray_elem_type<E> = root::AutoTArray_base_type<E>; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct AutoTArray__bindgen_ty_1 { + pub mAutoBuf: root::__BindgenUnionField<*mut ::std::os::raw::c_char>, + pub mAlign: root::__BindgenUnionField<u8>, + pub bindgen_union_field: u64, + } + pub type nscoord = i32; + pub type nscolor = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct gfxFontFeature { + pub mTag: u32, + pub mValue: u32, + } + #[test] + fn bindgen_test_layout_gfxFontFeature() { + assert_eq!( + ::std::mem::size_of::<gfxFontFeature>(), + 8usize, + concat!("Size of: ", stringify!(gfxFontFeature)) + ); + assert_eq!( + ::std::mem::align_of::<gfxFontFeature>(), + 4usize, + concat!("Alignment of ", stringify!(gfxFontFeature)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<gfxFontFeature>())).mTag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeature), + "::", + stringify!(mTag) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<gfxFontFeature>())).mValue as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeature), + "::", + stringify!(mValue) + ) + ); + } + impl Clone for gfxFontFeature { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct gfxAlternateValue { + pub alternate: u32, + pub value: ::nsstring::nsStringRepr, + } + #[test] + fn bindgen_test_layout_gfxAlternateValue() { + assert_eq!( + ::std::mem::size_of::<gfxAlternateValue>(), + 24usize, + concat!("Size of: ", stringify!(gfxAlternateValue)) + ); + assert_eq!( + ::std::mem::align_of::<gfxAlternateValue>(), + 8usize, + concat!("Alignment of ", stringify!(gfxAlternateValue)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<gfxAlternateValue>())).alternate as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(gfxAlternateValue), + "::", + stringify!(alternate) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<gfxAlternateValue>())).value as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(gfxAlternateValue), + "::", + stringify!(value) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct gfxFontFeatureValueSet { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mFontFeatureValues: [u64; 4usize], + } + pub type gfxFontFeatureValueSet_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[repr(C)] + pub struct gfxFontFeatureValueSet_ValueList { + pub name: ::nsstring::nsStringRepr, + pub featureSelectors: root::nsTArray<u32>, + } + #[test] + fn bindgen_test_layout_gfxFontFeatureValueSet_ValueList() { + assert_eq!( + ::std::mem::size_of::<gfxFontFeatureValueSet_ValueList>(), + 24usize, + concat!("Size of: ", stringify!(gfxFontFeatureValueSet_ValueList)) + ); + assert_eq!( + ::std::mem::align_of::<gfxFontFeatureValueSet_ValueList>(), + 8usize, + concat!( + "Alignment of ", + stringify!(gfxFontFeatureValueSet_ValueList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_ValueList>())).name as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_ValueList), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_ValueList>())).featureSelectors + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_ValueList), + "::", + stringify!(featureSelectors) + ) + ); + } + #[repr(C)] + pub struct gfxFontFeatureValueSet_FeatureValues { + pub alternate: u32, + pub valuelist: root::nsTArray<root::gfxFontFeatureValueSet_ValueList>, + } + #[test] + fn bindgen_test_layout_gfxFontFeatureValueSet_FeatureValues() { + assert_eq!( + ::std::mem::size_of::<gfxFontFeatureValueSet_FeatureValues>(), + 16usize, + concat!( + "Size of: ", + stringify!(gfxFontFeatureValueSet_FeatureValues) + ) + ); + assert_eq!( + ::std::mem::align_of::<gfxFontFeatureValueSet_FeatureValues>(), + 8usize, + concat!( + "Alignment of ", + stringify!(gfxFontFeatureValueSet_FeatureValues) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_FeatureValues>())).alternate + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_FeatureValues), + "::", + stringify!(alternate) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_FeatureValues>())).valuelist + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_FeatureValues), + "::", + stringify!(valuelist) + ) + ); + } + #[repr(C)] + pub struct gfxFontFeatureValueSet_FeatureValueHashKey { + pub mFamily: ::nsstring::nsStringRepr, + pub mPropVal: u32, + pub mName: ::nsstring::nsStringRepr, + } + #[test] + fn bindgen_test_layout_gfxFontFeatureValueSet_FeatureValueHashKey() { + assert_eq!( + ::std::mem::size_of::<gfxFontFeatureValueSet_FeatureValueHashKey>(), + 40usize, + concat!( + "Size of: ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashKey) + ) + ); + assert_eq!( + ::std::mem::align_of::<gfxFontFeatureValueSet_FeatureValueHashKey>(), + 8usize, + concat!( + "Alignment of ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashKey) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_FeatureValueHashKey>())).mFamily + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashKey), + "::", + stringify!(mFamily) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_FeatureValueHashKey>())).mPropVal + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashKey), + "::", + stringify!(mPropVal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_FeatureValueHashKey>())).mName + as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashKey), + "::", + stringify!(mName) + ) + ); + } + #[repr(C)] + pub struct gfxFontFeatureValueSet_FeatureValueHashEntry { + pub _base: root::PLDHashEntryHdr, + pub mKey: root::gfxFontFeatureValueSet_FeatureValueHashKey, + pub mValues: root::nsTArray<u32>, + } + pub type gfxFontFeatureValueSet_FeatureValueHashEntry_KeyType = + *const root::gfxFontFeatureValueSet_FeatureValueHashKey; + pub type gfxFontFeatureValueSet_FeatureValueHashEntry_KeyTypePointer = + *const root::gfxFontFeatureValueSet_FeatureValueHashKey; + pub const gfxFontFeatureValueSet_FeatureValueHashEntry_ALLOW_MEMMOVE: + root::gfxFontFeatureValueSet_FeatureValueHashEntry__bindgen_ty_1 = 1; + pub type gfxFontFeatureValueSet_FeatureValueHashEntry__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_gfxFontFeatureValueSet_FeatureValueHashEntry() { + assert_eq!( + ::std::mem::size_of::<gfxFontFeatureValueSet_FeatureValueHashEntry>(), + 56usize, + concat!( + "Size of: ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashEntry) + ) + ); + assert_eq!( + ::std::mem::align_of::<gfxFontFeatureValueSet_FeatureValueHashEntry>(), + 8usize, + concat!( + "Alignment of ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashEntry) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_FeatureValueHashEntry>())).mKey + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashEntry), + "::", + stringify!(mKey) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet_FeatureValueHashEntry>())).mValues + as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet_FeatureValueHashEntry), + "::", + stringify!(mValues) + ) + ); + } + #[test] + fn bindgen_test_layout_gfxFontFeatureValueSet() { + assert_eq!( + ::std::mem::size_of::<gfxFontFeatureValueSet>(), + 40usize, + concat!("Size of: ", stringify!(gfxFontFeatureValueSet)) + ); + assert_eq!( + ::std::mem::align_of::<gfxFontFeatureValueSet>(), + 8usize, + concat!("Alignment of ", stringify!(gfxFontFeatureValueSet)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet>())).mRefCnt as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<gfxFontFeatureValueSet>())).mFontFeatureValues as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(gfxFontFeatureValueSet), + "::", + stringify!(mFontFeatureValues) + ) + ); + } + pub type gfxFontVariation = root::mozilla::gfx::FontVariation; + pub const kGenericFont_NONE: u8 = 0; + pub const kGenericFont_moz_variable: u8 = 0; + pub const kGenericFont_moz_fixed: u8 = 1; + pub const kGenericFont_serif: u8 = 2; + pub const kGenericFont_sans_serif: u8 = 4; + pub const kGenericFont_monospace: u8 = 8; + pub const kGenericFont_cursive: u8 = 16; + pub const kGenericFont_fantasy: u8 = 32; + #[repr(C)] + pub struct nsFont { + pub fontlist: root::mozilla::FontFamilyList, + pub style: u8, + pub systemFont: bool, + pub variantCaps: u8, + pub variantNumeric: u8, + pub variantPosition: u8, + pub variantWidth: u8, + pub variantLigatures: u16, + pub variantEastAsian: u16, + pub variantAlternates: u16, + pub smoothing: u8, + pub fontSmoothingBackgroundColor: root::nscolor, + pub weight: u16, + pub stretch: i16, + pub kerning: u8, + pub synthesis: u8, + pub size: root::nscoord, + pub sizeAdjust: f32, + pub alternateValues: root::nsTArray<root::gfxAlternateValue>, + pub featureValueLookup: root::RefPtr<root::gfxFontFeatureValueSet>, + pub fontFeatureSettings: root::nsTArray<root::gfxFontFeature>, + pub fontVariationSettings: root::nsTArray<root::gfxFontVariation>, + pub languageOverride: u32, + } + pub const nsFont_MaxDifference_eNone: root::nsFont_MaxDifference = 0; + pub const nsFont_MaxDifference_eVisual: root::nsFont_MaxDifference = 1; + pub const nsFont_MaxDifference_eLayoutAffecting: root::nsFont_MaxDifference = 2; + pub type nsFont_MaxDifference = u8; + #[test] + fn bindgen_test_layout_nsFont() { + assert_eq!( + ::std::mem::size_of::<nsFont>(), + 96usize, + concat!("Size of: ", stringify!(nsFont)) + ); + assert_eq!( + ::std::mem::align_of::<nsFont>(), + 8usize, + concat!("Alignment of ", stringify!(nsFont)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).fontlist as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(fontlist) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).style as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(style) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).systemFont as *const _ as usize }, + 17usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(systemFont) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).variantCaps as *const _ as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(variantCaps) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).variantNumeric as *const _ as usize }, + 19usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(variantNumeric) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).variantPosition as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(variantPosition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).variantWidth as *const _ as usize }, + 21usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(variantWidth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).variantLigatures as *const _ as usize }, + 22usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(variantLigatures) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).variantEastAsian as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(variantEastAsian) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).variantAlternates as *const _ as usize }, + 26usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(variantAlternates) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).smoothing as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(smoothing) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFont>())).fontSmoothingBackgroundColor as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(fontSmoothingBackgroundColor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).weight as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(weight) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).stretch as *const _ as usize }, + 38usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(stretch) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).kerning as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(kerning) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).synthesis as *const _ as usize }, + 41usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(synthesis) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).size as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).sizeAdjust as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(sizeAdjust) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).alternateValues as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(alternateValues) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).featureValueLookup as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(featureValueLookup) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).fontFeatureSettings as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(fontFeatureSettings) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFont>())).fontVariationSettings as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(fontVariationSettings) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsFont>())).languageOverride as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsFont), + "::", + stringify!(languageOverride) + ) + ); + } + /// An array of objects, similar to AutoTArray<T,1> but which is memmovable. It + /// always has length >= 1. + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleAutoArray<T> { + pub mFirstElement: T, + pub mOtherElements: root::nsTArray<T>, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub const nsStyleAutoArray_WithSingleInitialElement_WITH_SINGLE_INITIAL_ELEMENT: + root::nsStyleAutoArray_WithSingleInitialElement = 0; + pub type nsStyleAutoArray_WithSingleInitialElement = i32; + pub const nsStyleUnit_eStyleUnit_MAX: root::nsStyleUnit = nsStyleUnit::eStyleUnit_Calc; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleUnit { + eStyleUnit_Null = 0, + eStyleUnit_Normal = 1, + eStyleUnit_Auto = 2, + eStyleUnit_None = 3, + eStyleUnit_Percent = 10, + eStyleUnit_Factor = 11, + eStyleUnit_Degree = 12, + eStyleUnit_Grad = 13, + eStyleUnit_Radian = 14, + eStyleUnit_Turn = 15, + eStyleUnit_FlexFraction = 16, + eStyleUnit_Coord = 20, + eStyleUnit_Integer = 30, + eStyleUnit_Enumerated = 32, + eStyleUnit_Calc = 40, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleUnion { + pub mInt: root::__BindgenUnionField<i32>, + pub mFloat: root::__BindgenUnionField<f32>, + pub mPointer: root::__BindgenUnionField<*mut ::std::os::raw::c_void>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsStyleUnion() { + assert_eq!( + ::std::mem::size_of::<nsStyleUnion>(), + 8usize, + concat!("Size of: ", stringify!(nsStyleUnion)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleUnion>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleUnion)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleUnion>())).mInt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUnion), + "::", + stringify!(mInt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleUnion>())).mFloat as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUnion), + "::", + stringify!(mFloat) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleUnion>())).mPointer as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUnion), + "::", + stringify!(mPointer) + ) + ); + } + impl Clone for nsStyleUnion { + fn clone(&self) -> Self { + *self + } + } + /// Class that hold a single size specification used by the style /// system. The size specification consists of two parts -- a number /// and a unit. The number is an integer, a floating point value, an /// nscoord, or undefined, and the unit is an nsStyleUnit. Checking /// the unit is a must before asking for the value in any particular /// form. /// / - /// /** <div rustbindgen private accessor="unsafe"></div> - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleCoord { mUnit : root :: nsStyleUnit , mValue : root :: nsStyleUnion , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleCoord_CalcValue { pub mLength : root :: nscoord , pub mPercent : f32 , pub mHasPercent : bool , } # [ test ] fn bindgen_test_layout_nsStyleCoord_CalcValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleCoord_CalcValue > ( ) , 12usize , concat ! ( "Size of: " , stringify ! ( nsStyleCoord_CalcValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleCoord_CalcValue > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleCoord_CalcValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCoord_CalcValue ) ) . mLength as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCoord_CalcValue ) , "::" , stringify ! ( mLength ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCoord_CalcValue ) ) . mPercent as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCoord_CalcValue ) , "::" , stringify ! ( mPercent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCoord_CalcValue ) ) . mHasPercent as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCoord_CalcValue ) , "::" , stringify ! ( mHasPercent ) ) ) ; } impl Clone for nsStyleCoord_CalcValue { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleCoord_Calc { pub _base : root :: nsStyleCoord_CalcValue , pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , } pub type nsStyleCoord_Calc_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsStyleCoord_Calc ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleCoord_Calc > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStyleCoord_Calc ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleCoord_Calc > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleCoord_Calc ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCoord_Calc ) ) . mRefCnt as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCoord_Calc ) , "::" , stringify ! ( mRefCnt ) ) ) ; } pub const nsStyleCoord_CoordConstructorType_CoordConstructor : root :: nsStyleCoord_CoordConstructorType = 0 ; pub type nsStyleCoord_CoordConstructorType = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsStyleCoord ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleCoord > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsStyleCoord ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleCoord > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleCoord ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCoord ) ) . mUnit as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCoord ) , "::" , stringify ! ( mUnit ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCoord ) ) . mValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCoord ) , "::" , stringify ! ( mValue ) ) ) ; } impl nsStyleCoord { # [ inline ] pub unsafe fn get_mUnit ( & self ) -> & root :: nsStyleUnit { & self . mUnit } # [ inline ] pub unsafe fn get_mUnit_mut ( & mut self ) -> & mut root :: nsStyleUnit { & mut self . mUnit } # [ inline ] pub unsafe fn get_mValue ( & self ) -> & root :: nsStyleUnion { & self . mValue } # [ inline ] pub unsafe fn get_mValue_mut ( & mut self ) -> & mut root :: nsStyleUnion { & mut self . mValue } } - /// Class that represents a set of top/right/bottom/left nsStyleCoords. + /// /** <div rustbindgen private accessor="unsafe"></div> + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleCoord { + mUnit: root::nsStyleUnit, + mValue: root::nsStyleUnion, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleCoord_CalcValue { + pub mLength: root::nscoord, + pub mPercent: f32, + pub mHasPercent: bool, + } + #[test] + fn bindgen_test_layout_nsStyleCoord_CalcValue() { + assert_eq!( + ::std::mem::size_of::<nsStyleCoord_CalcValue>(), + 12usize, + concat!("Size of: ", stringify!(nsStyleCoord_CalcValue)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleCoord_CalcValue>(), + 4usize, + concat!("Alignment of ", stringify!(nsStyleCoord_CalcValue)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleCoord_CalcValue>())).mLength as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCoord_CalcValue), + "::", + stringify!(mLength) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleCoord_CalcValue>())).mPercent as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCoord_CalcValue), + "::", + stringify!(mPercent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleCoord_CalcValue>())).mHasPercent as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCoord_CalcValue), + "::", + stringify!(mHasPercent) + ) + ); + } + impl Clone for nsStyleCoord_CalcValue { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleCoord_Calc { + pub _base: root::nsStyleCoord_CalcValue, + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + } + pub type nsStyleCoord_Calc_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsStyleCoord_Calc() { + assert_eq!( + ::std::mem::size_of::<nsStyleCoord_Calc>(), + 24usize, + concat!("Size of: ", stringify!(nsStyleCoord_Calc)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleCoord_Calc>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleCoord_Calc)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleCoord_Calc>())).mRefCnt as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCoord_Calc), + "::", + stringify!(mRefCnt) + ) + ); + } + pub const nsStyleCoord_CoordConstructorType_CoordConstructor: + root::nsStyleCoord_CoordConstructorType = 0; + pub type nsStyleCoord_CoordConstructorType = u32; + #[test] + fn bindgen_test_layout_nsStyleCoord() { + assert_eq!( + ::std::mem::size_of::<nsStyleCoord>(), + 16usize, + concat!("Size of: ", stringify!(nsStyleCoord)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleCoord>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleCoord)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleCoord>())).mUnit as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCoord), + "::", + stringify!(mUnit) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleCoord>())).mValue as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCoord), + "::", + stringify!(mValue) + ) + ); + } + impl nsStyleCoord { + #[inline] + pub unsafe fn get_mUnit(&self) -> &root::nsStyleUnit { + &self.mUnit + } + #[inline] + pub unsafe fn get_mUnit_mut(&mut self) -> &mut root::nsStyleUnit { + &mut self.mUnit + } + #[inline] + pub unsafe fn get_mValue(&self) -> &root::nsStyleUnion { + &self.mValue + } + #[inline] + pub unsafe fn get_mValue_mut(&mut self) -> &mut root::nsStyleUnion { + &mut self.mValue + } + } + /// Class that represents a set of top/right/bottom/left nsStyleCoords. /// This is commonly used to hold the widths of the borders, margins, /// or paddings of a box. /// / - /// /** <div rustbindgen private accessor="unsafe"></div> - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleSides { mUnits : [ root :: nsStyleUnit ; 4usize ] , mValues : [ root :: nsStyleUnion ; 4usize ] , } # [ test ] fn bindgen_test_layout_nsStyleSides ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleSides > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsStyleSides ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleSides > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleSides ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSides ) ) . mUnits as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSides ) , "::" , stringify ! ( mUnits ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSides ) ) . mValues as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSides ) , "::" , stringify ! ( mValues ) ) ) ; } impl nsStyleSides { # [ inline ] pub unsafe fn get_mUnits ( & self ) -> & [ root :: nsStyleUnit ; 4usize ] { & self . mUnits } # [ inline ] pub unsafe fn get_mUnits_mut ( & mut self ) -> & mut [ root :: nsStyleUnit ; 4usize ] { & mut self . mUnits } # [ inline ] pub unsafe fn get_mValues ( & self ) -> & [ root :: nsStyleUnion ; 4usize ] { & self . mValues } # [ inline ] pub unsafe fn get_mValues_mut ( & mut self ) -> & mut [ root :: nsStyleUnion ; 4usize ] { & mut self . mValues } } - /// Class that represents a set of top-left/top-right/bottom-right/bottom-left + /// /** <div rustbindgen private accessor="unsafe"></div> + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleSides { + mUnits: [root::nsStyleUnit; 4usize], + mValues: [root::nsStyleUnion; 4usize], + } + #[test] + fn bindgen_test_layout_nsStyleSides() { + assert_eq!( + ::std::mem::size_of::<nsStyleSides>(), + 40usize, + concat!("Size of: ", stringify!(nsStyleSides)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleSides>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleSides)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSides>())).mUnits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSides), + "::", + stringify!(mUnits) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSides>())).mValues as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSides), + "::", + stringify!(mValues) + ) + ); + } + impl nsStyleSides { + #[inline] + pub unsafe fn get_mUnits(&self) -> &[root::nsStyleUnit; 4usize] { + &self.mUnits + } + #[inline] + pub unsafe fn get_mUnits_mut(&mut self) -> &mut [root::nsStyleUnit; 4usize] { + &mut self.mUnits + } + #[inline] + pub unsafe fn get_mValues(&self) -> &[root::nsStyleUnion; 4usize] { + &self.mValues + } + #[inline] + pub unsafe fn get_mValues_mut(&mut self) -> &mut [root::nsStyleUnion; 4usize] { + &mut self.mValues + } + } + /// Class that represents a set of top-left/top-right/bottom-right/bottom-left /// nsStyleCoord pairs. This is used to hold the dimensions of the /// corners of a box (for, e.g., border-radius and outline-radius). /// / - /// /** <div rustbindgen private accessor="unsafe"></div> - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleCorners { mUnits : [ root :: nsStyleUnit ; 8usize ] , mValues : [ root :: nsStyleUnion ; 8usize ] , } # [ test ] fn bindgen_test_layout_nsStyleCorners ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleCorners > ( ) , 72usize , concat ! ( "Size of: " , stringify ! ( nsStyleCorners ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleCorners > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleCorners ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCorners ) ) . mUnits as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCorners ) , "::" , stringify ! ( mUnits ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCorners ) ) . mValues as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCorners ) , "::" , stringify ! ( mValues ) ) ) ; } impl nsStyleCorners { # [ inline ] pub unsafe fn get_mUnits ( & self ) -> & [ root :: nsStyleUnit ; 8usize ] { & self . mUnits } # [ inline ] pub unsafe fn get_mUnits_mut ( & mut self ) -> & mut [ root :: nsStyleUnit ; 8usize ] { & mut self . mUnits } # [ inline ] pub unsafe fn get_mValues ( & self ) -> & [ root :: nsStyleUnion ; 8usize ] { & self . mValues } # [ inline ] pub unsafe fn get_mValues_mut ( & mut self ) -> & mut [ root :: nsStyleUnion ; 8usize ] { & mut self . mValues } } pub const nsChangeHint_nsChangeHint_Empty : root :: nsChangeHint = root :: nsChangeHint ( 0 ) ; pub const nsChangeHint_nsChangeHint_RepaintFrame : root :: nsChangeHint = root :: nsChangeHint ( 1 ) ; pub const nsChangeHint_nsChangeHint_NeedReflow : root :: nsChangeHint = root :: nsChangeHint ( 2 ) ; pub const nsChangeHint_nsChangeHint_ClearAncestorIntrinsics : root :: nsChangeHint = root :: nsChangeHint ( 4 ) ; pub const nsChangeHint_nsChangeHint_ClearDescendantIntrinsics : root :: nsChangeHint = root :: nsChangeHint ( 8 ) ; pub const nsChangeHint_nsChangeHint_NeedDirtyReflow : root :: nsChangeHint = root :: nsChangeHint ( 16 ) ; pub const nsChangeHint_nsChangeHint_SyncFrameView : root :: nsChangeHint = root :: nsChangeHint ( 32 ) ; pub const nsChangeHint_nsChangeHint_UpdateCursor : root :: nsChangeHint = root :: nsChangeHint ( 64 ) ; pub const nsChangeHint_nsChangeHint_UpdateEffects : root :: nsChangeHint = root :: nsChangeHint ( 128 ) ; pub const nsChangeHint_nsChangeHint_UpdateOpacityLayer : root :: nsChangeHint = root :: nsChangeHint ( 256 ) ; pub const nsChangeHint_nsChangeHint_UpdateTransformLayer : root :: nsChangeHint = root :: nsChangeHint ( 512 ) ; pub const nsChangeHint_nsChangeHint_ReconstructFrame : root :: nsChangeHint = root :: nsChangeHint ( 1024 ) ; pub const nsChangeHint_nsChangeHint_UpdateOverflow : root :: nsChangeHint = root :: nsChangeHint ( 2048 ) ; pub const nsChangeHint_nsChangeHint_UpdateSubtreeOverflow : root :: nsChangeHint = root :: nsChangeHint ( 4096 ) ; pub const nsChangeHint_nsChangeHint_UpdatePostTransformOverflow : root :: nsChangeHint = root :: nsChangeHint ( 8192 ) ; pub const nsChangeHint_nsChangeHint_UpdateParentOverflow : root :: nsChangeHint = root :: nsChangeHint ( 16384 ) ; pub const nsChangeHint_nsChangeHint_ChildrenOnlyTransform : root :: nsChangeHint = root :: nsChangeHint ( 32768 ) ; pub const nsChangeHint_nsChangeHint_RecomputePosition : root :: nsChangeHint = root :: nsChangeHint ( 65536 ) ; pub const nsChangeHint_nsChangeHint_UpdateContainingBlock : root :: nsChangeHint = root :: nsChangeHint ( 131072 ) ; pub const nsChangeHint_nsChangeHint_BorderStyleNoneChange : root :: nsChangeHint = root :: nsChangeHint ( 262144 ) ; pub const nsChangeHint_nsChangeHint_UpdateTextPath : root :: nsChangeHint = root :: nsChangeHint ( 524288 ) ; pub const nsChangeHint_nsChangeHint_SchedulePaint : root :: nsChangeHint = root :: nsChangeHint ( 1048576 ) ; pub const nsChangeHint_nsChangeHint_NeutralChange : root :: nsChangeHint = root :: nsChangeHint ( 2097152 ) ; pub const nsChangeHint_nsChangeHint_InvalidateRenderingObservers : root :: nsChangeHint = root :: nsChangeHint ( 4194304 ) ; pub const nsChangeHint_nsChangeHint_ReflowChangesSizeOrPosition : root :: nsChangeHint = root :: nsChangeHint ( 8388608 ) ; pub const nsChangeHint_nsChangeHint_UpdateComputedBSize : root :: nsChangeHint = root :: nsChangeHint ( 16777216 ) ; pub const nsChangeHint_nsChangeHint_UpdateUsesOpacity : root :: nsChangeHint = root :: nsChangeHint ( 33554432 ) ; pub const nsChangeHint_nsChangeHint_UpdateBackgroundPosition : root :: nsChangeHint = root :: nsChangeHint ( 67108864 ) ; pub const nsChangeHint_nsChangeHint_AddOrRemoveTransform : root :: nsChangeHint = root :: nsChangeHint ( 134217728 ) ; pub const nsChangeHint_nsChangeHint_CSSOverflowChange : root :: nsChangeHint = root :: nsChangeHint ( 268435456 ) ; pub const nsChangeHint_nsChangeHint_UpdateWidgetProperties : root :: nsChangeHint = root :: nsChangeHint ( 536870912 ) ; pub const nsChangeHint_nsChangeHint_UpdateTableCellSpans : root :: nsChangeHint = root :: nsChangeHint ( 1073741824 ) ; pub const nsChangeHint_nsChangeHint_AllHints : root :: nsChangeHint = root :: nsChangeHint ( 2147483647 ) ; impl :: std :: ops :: BitOr < root :: nsChangeHint > for root :: nsChangeHint { type Output = Self ; # [ inline ] fn bitor ( self , other : Self ) -> Self { nsChangeHint ( self . 0 | other . 0 ) } } impl :: std :: ops :: BitOrAssign for root :: nsChangeHint { # [ inline ] fn bitor_assign ( & mut self , rhs : root :: nsChangeHint ) { self . 0 |= rhs . 0 ; } } impl :: std :: ops :: BitAnd < root :: nsChangeHint > for root :: nsChangeHint { type Output = Self ; # [ inline ] fn bitand ( self , other : Self ) -> Self { nsChangeHint ( self . 0 & other . 0 ) } } impl :: std :: ops :: BitAndAssign for root :: nsChangeHint { # [ inline ] fn bitand_assign ( & mut self , rhs : root :: nsChangeHint ) { self . 0 &= rhs . 0 ; } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub struct nsChangeHint ( pub u32 ) ; pub const nsRestyleHint_eRestyle_Self : root :: nsRestyleHint = root :: nsRestyleHint ( 1 ) ; pub const nsRestyleHint_eRestyle_SomeDescendants : root :: nsRestyleHint = root :: nsRestyleHint ( 2 ) ; pub const nsRestyleHint_eRestyle_Subtree : root :: nsRestyleHint = root :: nsRestyleHint ( 4 ) ; pub const nsRestyleHint_eRestyle_LaterSiblings : root :: nsRestyleHint = root :: nsRestyleHint ( 8 ) ; pub const nsRestyleHint_eRestyle_CSSTransitions : root :: nsRestyleHint = root :: nsRestyleHint ( 16 ) ; pub const nsRestyleHint_eRestyle_CSSAnimations : root :: nsRestyleHint = root :: nsRestyleHint ( 32 ) ; pub const nsRestyleHint_eRestyle_StyleAttribute : root :: nsRestyleHint = root :: nsRestyleHint ( 64 ) ; pub const nsRestyleHint_eRestyle_StyleAttribute_Animations : root :: nsRestyleHint = root :: nsRestyleHint ( 128 ) ; pub const nsRestyleHint_eRestyle_Force : root :: nsRestyleHint = root :: nsRestyleHint ( 256 ) ; pub const nsRestyleHint_eRestyle_ForceDescendants : root :: nsRestyleHint = root :: nsRestyleHint ( 512 ) ; pub const nsRestyleHint_eRestyle_AllHintsWithAnimations : root :: nsRestyleHint = root :: nsRestyleHint ( 176 ) ; impl :: std :: ops :: BitOr < root :: nsRestyleHint > for root :: nsRestyleHint { type Output = Self ; # [ inline ] fn bitor ( self , other : Self ) -> Self { nsRestyleHint ( self . 0 | other . 0 ) } } impl :: std :: ops :: BitOrAssign for root :: nsRestyleHint { # [ inline ] fn bitor_assign ( & mut self , rhs : root :: nsRestyleHint ) { self . 0 |= rhs . 0 ; } } impl :: std :: ops :: BitAnd < root :: nsRestyleHint > for root :: nsRestyleHint { type Output = Self ; # [ inline ] fn bitand ( self , other : Self ) -> Self { nsRestyleHint ( self . 0 & other . 0 ) } } impl :: std :: ops :: BitAndAssign for root :: nsRestyleHint { # [ inline ] fn bitand_assign ( & mut self , rhs : root :: nsRestyleHint ) { self . 0 &= rhs . 0 ; } } # [ repr ( C ) ] - /// |nsRestyleHint| is a bitfield for the result of + /// /** <div rustbindgen private accessor="unsafe"></div> + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleCorners { + mUnits: [root::nsStyleUnit; 8usize], + mValues: [root::nsStyleUnion; 8usize], + } + #[test] + fn bindgen_test_layout_nsStyleCorners() { + assert_eq!( + ::std::mem::size_of::<nsStyleCorners>(), + 72usize, + concat!("Size of: ", stringify!(nsStyleCorners)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleCorners>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleCorners)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleCorners>())).mUnits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCorners), + "::", + stringify!(mUnits) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleCorners>())).mValues as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCorners), + "::", + stringify!(mValues) + ) + ); + } + impl nsStyleCorners { + #[inline] + pub unsafe fn get_mUnits(&self) -> &[root::nsStyleUnit; 8usize] { + &self.mUnits + } + #[inline] + pub unsafe fn get_mUnits_mut(&mut self) -> &mut [root::nsStyleUnit; 8usize] { + &mut self.mUnits + } + #[inline] + pub unsafe fn get_mValues(&self) -> &[root::nsStyleUnion; 8usize] { + &self.mValues + } + #[inline] + pub unsafe fn get_mValues_mut(&mut self) -> &mut [root::nsStyleUnion; 8usize] { + &mut self.mValues + } + } + pub const nsChangeHint_nsChangeHint_Empty: root::nsChangeHint = root::nsChangeHint(0); + pub const nsChangeHint_nsChangeHint_RepaintFrame: root::nsChangeHint = root::nsChangeHint(1); + pub const nsChangeHint_nsChangeHint_NeedReflow: root::nsChangeHint = root::nsChangeHint(2); + pub const nsChangeHint_nsChangeHint_ClearAncestorIntrinsics: root::nsChangeHint = + root::nsChangeHint(4); + pub const nsChangeHint_nsChangeHint_ClearDescendantIntrinsics: root::nsChangeHint = + root::nsChangeHint(8); + pub const nsChangeHint_nsChangeHint_NeedDirtyReflow: root::nsChangeHint = + root::nsChangeHint(16); + pub const nsChangeHint_nsChangeHint_SyncFrameView: root::nsChangeHint = root::nsChangeHint(32); + pub const nsChangeHint_nsChangeHint_UpdateCursor: root::nsChangeHint = root::nsChangeHint(64); + pub const nsChangeHint_nsChangeHint_UpdateEffects: root::nsChangeHint = root::nsChangeHint(128); + pub const nsChangeHint_nsChangeHint_UpdateOpacityLayer: root::nsChangeHint = + root::nsChangeHint(256); + pub const nsChangeHint_nsChangeHint_UpdateTransformLayer: root::nsChangeHint = + root::nsChangeHint(512); + pub const nsChangeHint_nsChangeHint_ReconstructFrame: root::nsChangeHint = + root::nsChangeHint(1024); + pub const nsChangeHint_nsChangeHint_UpdateOverflow: root::nsChangeHint = + root::nsChangeHint(2048); + pub const nsChangeHint_nsChangeHint_UpdateSubtreeOverflow: root::nsChangeHint = + root::nsChangeHint(4096); + pub const nsChangeHint_nsChangeHint_UpdatePostTransformOverflow: root::nsChangeHint = + root::nsChangeHint(8192); + pub const nsChangeHint_nsChangeHint_UpdateParentOverflow: root::nsChangeHint = + root::nsChangeHint(16384); + pub const nsChangeHint_nsChangeHint_ChildrenOnlyTransform: root::nsChangeHint = + root::nsChangeHint(32768); + pub const nsChangeHint_nsChangeHint_RecomputePosition: root::nsChangeHint = + root::nsChangeHint(65536); + pub const nsChangeHint_nsChangeHint_UpdateContainingBlock: root::nsChangeHint = + root::nsChangeHint(131072); + pub const nsChangeHint_nsChangeHint_BorderStyleNoneChange: root::nsChangeHint = + root::nsChangeHint(262144); + pub const nsChangeHint_nsChangeHint_UpdateTextPath: root::nsChangeHint = + root::nsChangeHint(524288); + pub const nsChangeHint_nsChangeHint_SchedulePaint: root::nsChangeHint = + root::nsChangeHint(1048576); + pub const nsChangeHint_nsChangeHint_NeutralChange: root::nsChangeHint = + root::nsChangeHint(2097152); + pub const nsChangeHint_nsChangeHint_InvalidateRenderingObservers: root::nsChangeHint = + root::nsChangeHint(4194304); + pub const nsChangeHint_nsChangeHint_ReflowChangesSizeOrPosition: root::nsChangeHint = + root::nsChangeHint(8388608); + pub const nsChangeHint_nsChangeHint_UpdateComputedBSize: root::nsChangeHint = + root::nsChangeHint(16777216); + pub const nsChangeHint_nsChangeHint_UpdateUsesOpacity: root::nsChangeHint = + root::nsChangeHint(33554432); + pub const nsChangeHint_nsChangeHint_UpdateBackgroundPosition: root::nsChangeHint = + root::nsChangeHint(67108864); + pub const nsChangeHint_nsChangeHint_AddOrRemoveTransform: root::nsChangeHint = + root::nsChangeHint(134217728); + pub const nsChangeHint_nsChangeHint_CSSOverflowChange: root::nsChangeHint = + root::nsChangeHint(268435456); + pub const nsChangeHint_nsChangeHint_UpdateWidgetProperties: root::nsChangeHint = + root::nsChangeHint(536870912); + pub const nsChangeHint_nsChangeHint_UpdateTableCellSpans: root::nsChangeHint = + root::nsChangeHint(1073741824); + pub const nsChangeHint_nsChangeHint_AllHints: root::nsChangeHint = + root::nsChangeHint(2147483647); + impl ::std::ops::BitOr<root::nsChangeHint> for root::nsChangeHint { + type Output = Self; + #[inline] + fn bitor(self, other: Self) -> Self { + nsChangeHint(self.0 | other.0) + } + } + impl ::std::ops::BitOrAssign for root::nsChangeHint { + #[inline] + fn bitor_assign(&mut self, rhs: root::nsChangeHint) { + self.0 |= rhs.0; + } + } + impl ::std::ops::BitAnd<root::nsChangeHint> for root::nsChangeHint { + type Output = Self; + #[inline] + fn bitand(self, other: Self) -> Self { + nsChangeHint(self.0 & other.0) + } + } + impl ::std::ops::BitAndAssign for root::nsChangeHint { + #[inline] + fn bitand_assign(&mut self, rhs: root::nsChangeHint) { + self.0 &= rhs.0; + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub struct nsChangeHint(pub u32); + pub const nsRestyleHint_eRestyle_Self: root::nsRestyleHint = root::nsRestyleHint(1); + pub const nsRestyleHint_eRestyle_SomeDescendants: root::nsRestyleHint = root::nsRestyleHint(2); + pub const nsRestyleHint_eRestyle_Subtree: root::nsRestyleHint = root::nsRestyleHint(4); + pub const nsRestyleHint_eRestyle_LaterSiblings: root::nsRestyleHint = root::nsRestyleHint(8); + pub const nsRestyleHint_eRestyle_CSSTransitions: root::nsRestyleHint = root::nsRestyleHint(16); + pub const nsRestyleHint_eRestyle_CSSAnimations: root::nsRestyleHint = root::nsRestyleHint(32); + pub const nsRestyleHint_eRestyle_StyleAttribute: root::nsRestyleHint = root::nsRestyleHint(64); + pub const nsRestyleHint_eRestyle_StyleAttribute_Animations: root::nsRestyleHint = + root::nsRestyleHint(128); + pub const nsRestyleHint_eRestyle_Force: root::nsRestyleHint = root::nsRestyleHint(256); + pub const nsRestyleHint_eRestyle_ForceDescendants: root::nsRestyleHint = + root::nsRestyleHint(512); + pub const nsRestyleHint_eRestyle_AllHintsWithAnimations: root::nsRestyleHint = + root::nsRestyleHint(176); + impl ::std::ops::BitOr<root::nsRestyleHint> for root::nsRestyleHint { + type Output = Self; + #[inline] + fn bitor(self, other: Self) -> Self { + nsRestyleHint(self.0 | other.0) + } + } + impl ::std::ops::BitOrAssign for root::nsRestyleHint { + #[inline] + fn bitor_assign(&mut self, rhs: root::nsRestyleHint) { + self.0 |= rhs.0; + } + } + impl ::std::ops::BitAnd<root::nsRestyleHint> for root::nsRestyleHint { + type Output = Self; + #[inline] + fn bitand(self, other: Self) -> Self { + nsRestyleHint(self.0 & other.0) + } + } + impl ::std::ops::BitAndAssign for root::nsRestyleHint { + #[inline] + fn bitand_assign(&mut self, rhs: root::nsRestyleHint) { + self.0 &= rhs.0; + } + } + #[repr(C)] + /// |nsRestyleHint| is a bitfield for the result of /// |HasStateDependentStyle| and |HasAttributeDependentStyle|. When no /// restyling is necessary, use |nsRestyleHint(0)|. /// @@ -706,36 +15638,1161 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// to be set on the frames. /// /// NOTE: When adding new restyle hints, please also add them to - /// RestyleManager::RestyleHintToString. - # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub struct nsRestyleHint ( pub u32 ) ; - /// We want C++ to be able to read the style struct fields of ComputedValues + /// RestyleManager::RestyleHintToString. + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub struct nsRestyleHint(pub u32); + /// We want C++ to be able to read the style struct fields of ComputedValues /// so we define this type on the C++ side and use the bindgenned version - /// on the Rust side. - # [ repr ( C ) ] pub struct ServoComputedData { pub Font : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoFont > , pub Color : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoColor > , pub List : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoList > , pub Text : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoText > , pub Visibility : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoVisibility > , pub UserInterface : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoUserInterface > , pub TableBorder : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoTableBorder > , pub SVG : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoSVG > , pub Background : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoBackground > , pub Position : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoPosition > , pub TextReset : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoTextReset > , pub Display : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoDisplay > , pub Content : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoContent > , pub UIReset : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoUIReset > , pub Table : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoTable > , pub Margin : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoMargin > , pub Padding : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoPadding > , pub Border : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoBorder > , pub Outline : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoOutline > , pub XUL : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoXUL > , pub SVGReset : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoSVGReset > , pub Column : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoColumn > , pub Effects : ::gecko_bindings::structs::ServoRawOffsetArc < root :: mozilla :: GeckoEffects > , pub custom_properties : ::gecko_bindings::structs::ServoCustomPropertiesMap , pub writing_mode : ::gecko_bindings::structs::ServoWritingMode , pub flags : ::gecko_bindings::structs::ServoComputedValueFlags , - /// The rule node representing the ordered list of rules matched for this + /// on the Rust side. + #[repr(C)] + pub struct ServoComputedData { + pub Font: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoFont>, + pub Color: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoColor>, + pub List: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoList>, + pub Text: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoText>, + pub Visibility: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoVisibility>, + pub UserInterface: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoUserInterface>, + pub TableBorder: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoTableBorder>, + pub SVG: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoSVG>, + pub Background: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoBackground>, + pub Position: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoPosition>, + pub TextReset: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoTextReset>, + pub Display: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoDisplay>, + pub Content: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoContent>, + pub UIReset: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoUIReset>, + pub Table: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoTable>, + pub Margin: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoMargin>, + pub Padding: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoPadding>, + pub Border: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoBorder>, + pub Outline: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoOutline>, + pub XUL: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoXUL>, + pub SVGReset: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoSVGReset>, + pub Column: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoColumn>, + pub Effects: ::gecko_bindings::structs::ServoRawOffsetArc<root::mozilla::GeckoEffects>, + pub custom_properties: ::gecko_bindings::structs::ServoCustomPropertiesMap, + pub writing_mode: ::gecko_bindings::structs::ServoWritingMode, + pub flags: ::gecko_bindings::structs::ServoComputedValueFlags, + /// The rule node representing the ordered list of rules matched for this /// /// node. Can be None for default values and text nodes. This is - /// /// essentially an optimization to avoid referencing the root rule node. - pub rules : ::gecko_bindings::structs::ServoRuleNode , - /// The element's computed values if visited, only computed if there's a + /// /// essentially an optimization to avoid referencing the root rule node. + pub rules: ::gecko_bindings::structs::ServoRuleNode, + /// The element's computed values if visited, only computed if there's a /// /// relevant link for this element. A element's "relevant link" is the - /// /// element being matched if it is a link or the nearest ancestor link. - pub visited_style : ::gecko_bindings::structs::ServoVisitedStyle , } # [ test ] fn bindgen_test_layout_ServoComputedData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoComputedData > ( ) , 216usize , concat ! ( "Size of: " , stringify ! ( ServoComputedData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoComputedData > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoComputedData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Font as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Font ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Color as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Color ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . List as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( List ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Text as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Text ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Visibility as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Visibility ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . UserInterface as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( UserInterface ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . TableBorder as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( TableBorder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . SVG as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( SVG ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Background as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Background ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Position as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Position ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . TextReset as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( TextReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Display as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Display ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Content as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Content ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . UIReset as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( UIReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Table as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Table ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Margin as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Margin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Padding as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Padding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Border as * const _ as usize } , 136usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Border ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Outline as * const _ as usize } , 144usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Outline ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . XUL as * const _ as usize } , 152usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( XUL ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . SVGReset as * const _ as usize } , 160usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( SVGReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Column as * const _ as usize } , 168usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Column ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . Effects as * const _ as usize } , 176usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( Effects ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . custom_properties as * const _ as usize } , 184usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( custom_properties ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . writing_mode as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( writing_mode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . flags as * const _ as usize } , 194usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( flags ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . rules as * const _ as usize } , 200usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( rules ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoComputedData ) ) . visited_style as * const _ as usize } , 208usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( visited_style ) ) ) ; } pub const JSValueTag_JSVAL_TAG_MAX_DOUBLE : root :: JSValueTag = 131056 ; pub const JSValueTag_JSVAL_TAG_INT32 : root :: JSValueTag = 131057 ; pub const JSValueTag_JSVAL_TAG_UNDEFINED : root :: JSValueTag = 131058 ; pub const JSValueTag_JSVAL_TAG_NULL : root :: JSValueTag = 131059 ; pub const JSValueTag_JSVAL_TAG_BOOLEAN : root :: JSValueTag = 131060 ; pub const JSValueTag_JSVAL_TAG_MAGIC : root :: JSValueTag = 131061 ; pub const JSValueTag_JSVAL_TAG_STRING : root :: JSValueTag = 131062 ; pub const JSValueTag_JSVAL_TAG_SYMBOL : root :: JSValueTag = 131063 ; pub const JSValueTag_JSVAL_TAG_PRIVATE_GCTHING : root :: JSValueTag = 131064 ; pub const JSValueTag_JSVAL_TAG_OBJECT : root :: JSValueTag = 131068 ; pub type JSValueTag = :: std :: os :: raw :: c_uint ; pub const JSWhyMagic_JS_ELEMENTS_HOLE : root :: JSWhyMagic = 0 ; pub const JSWhyMagic_JS_NO_ITER_VALUE : root :: JSWhyMagic = 1 ; pub const JSWhyMagic_JS_GENERATOR_CLOSING : root :: JSWhyMagic = 2 ; pub const JSWhyMagic_JS_NO_CONSTANT : root :: JSWhyMagic = 3 ; pub const JSWhyMagic_JS_THIS_POISON : root :: JSWhyMagic = 4 ; pub const JSWhyMagic_JS_ARG_POISON : root :: JSWhyMagic = 5 ; pub const JSWhyMagic_JS_SERIALIZE_NO_NODE : root :: JSWhyMagic = 6 ; pub const JSWhyMagic_JS_LAZY_ARGUMENTS : root :: JSWhyMagic = 7 ; pub const JSWhyMagic_JS_OPTIMIZED_ARGUMENTS : root :: JSWhyMagic = 8 ; pub const JSWhyMagic_JS_IS_CONSTRUCTING : root :: JSWhyMagic = 9 ; pub const JSWhyMagic_JS_BLOCK_NEEDS_CLONE : root :: JSWhyMagic = 10 ; pub const JSWhyMagic_JS_HASH_KEY_EMPTY : root :: JSWhyMagic = 11 ; pub const JSWhyMagic_JS_ION_ERROR : root :: JSWhyMagic = 12 ; pub const JSWhyMagic_JS_ION_BAILOUT : root :: JSWhyMagic = 13 ; pub const JSWhyMagic_JS_OPTIMIZED_OUT : root :: JSWhyMagic = 14 ; pub const JSWhyMagic_JS_UNINITIALIZED_LEXICAL : root :: JSWhyMagic = 15 ; pub const JSWhyMagic_JS_GENERIC_MAGIC : root :: JSWhyMagic = 16 ; pub const JSWhyMagic_JS_WHY_MAGIC_COUNT : root :: JSWhyMagic = 17 ; pub type JSWhyMagic = :: std :: os :: raw :: c_uint ; - /// This structure precedes the string buffers "we" allocate. It may be the + /// /// element being matched if it is a link or the nearest ancestor link. + pub visited_style: ::gecko_bindings::structs::ServoVisitedStyle, + } + #[test] + fn bindgen_test_layout_ServoComputedData() { + assert_eq!( + ::std::mem::size_of::<ServoComputedData>(), + 216usize, + concat!("Size of: ", stringify!(ServoComputedData)) + ); + assert_eq!( + ::std::mem::align_of::<ServoComputedData>(), + 8usize, + concat!("Alignment of ", stringify!(ServoComputedData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Font as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Font) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Color as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Color) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).List as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(List) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Text as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Text) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoComputedData>())).Visibility as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Visibility) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoComputedData>())).UserInterface as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(UserInterface) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoComputedData>())).TableBorder as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(TableBorder) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).SVG as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(SVG) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoComputedData>())).Background as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Background) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Position as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Position) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).TextReset as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(TextReset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Display as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Content as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Content) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).UIReset as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(UIReset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Table as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Table) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Margin as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Margin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Padding as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Padding) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Border as *const _ as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Border) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Outline as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Outline) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).XUL as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(XUL) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).SVGReset as *const _ as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(SVGReset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Column as *const _ as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Column) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).Effects as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(Effects) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoComputedData>())).custom_properties as *const _ as usize + }, + 184usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(custom_properties) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoComputedData>())).writing_mode as *const _ as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(writing_mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).flags as *const _ as usize }, + 194usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoComputedData>())).rules as *const _ as usize }, + 200usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(rules) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoComputedData>())).visited_style as *const _ as usize + }, + 208usize, + concat!( + "Offset of field: ", + stringify!(ServoComputedData), + "::", + stringify!(visited_style) + ) + ); + } + pub const JSValueTag_JSVAL_TAG_MAX_DOUBLE: root::JSValueTag = 131056; + pub const JSValueTag_JSVAL_TAG_INT32: root::JSValueTag = 131057; + pub const JSValueTag_JSVAL_TAG_UNDEFINED: root::JSValueTag = 131058; + pub const JSValueTag_JSVAL_TAG_NULL: root::JSValueTag = 131059; + pub const JSValueTag_JSVAL_TAG_BOOLEAN: root::JSValueTag = 131060; + pub const JSValueTag_JSVAL_TAG_MAGIC: root::JSValueTag = 131061; + pub const JSValueTag_JSVAL_TAG_STRING: root::JSValueTag = 131062; + pub const JSValueTag_JSVAL_TAG_SYMBOL: root::JSValueTag = 131063; + pub const JSValueTag_JSVAL_TAG_PRIVATE_GCTHING: root::JSValueTag = 131064; + pub const JSValueTag_JSVAL_TAG_OBJECT: root::JSValueTag = 131068; + pub type JSValueTag = u32; + pub const JSWhyMagic_JS_ELEMENTS_HOLE: root::JSWhyMagic = 0; + pub const JSWhyMagic_JS_NO_ITER_VALUE: root::JSWhyMagic = 1; + pub const JSWhyMagic_JS_GENERATOR_CLOSING: root::JSWhyMagic = 2; + pub const JSWhyMagic_JS_NO_CONSTANT: root::JSWhyMagic = 3; + pub const JSWhyMagic_JS_THIS_POISON: root::JSWhyMagic = 4; + pub const JSWhyMagic_JS_ARG_POISON: root::JSWhyMagic = 5; + pub const JSWhyMagic_JS_SERIALIZE_NO_NODE: root::JSWhyMagic = 6; + pub const JSWhyMagic_JS_LAZY_ARGUMENTS: root::JSWhyMagic = 7; + pub const JSWhyMagic_JS_OPTIMIZED_ARGUMENTS: root::JSWhyMagic = 8; + pub const JSWhyMagic_JS_IS_CONSTRUCTING: root::JSWhyMagic = 9; + pub const JSWhyMagic_JS_BLOCK_NEEDS_CLONE: root::JSWhyMagic = 10; + pub const JSWhyMagic_JS_HASH_KEY_EMPTY: root::JSWhyMagic = 11; + pub const JSWhyMagic_JS_ION_ERROR: root::JSWhyMagic = 12; + pub const JSWhyMagic_JS_ION_BAILOUT: root::JSWhyMagic = 13; + pub const JSWhyMagic_JS_OPTIMIZED_OUT: root::JSWhyMagic = 14; + pub const JSWhyMagic_JS_UNINITIALIZED_LEXICAL: root::JSWhyMagic = 15; + pub const JSWhyMagic_JS_GENERIC_MAGIC: root::JSWhyMagic = 16; + pub const JSWhyMagic_JS_WHY_MAGIC_COUNT: root::JSWhyMagic = 17; + pub type JSWhyMagic = u32; + /// This structure precedes the string buffers "we" allocate. It may be the /// case that nsTAString::mData does not point to one of these special /// buffers. The mDataFlags member variable distinguishes the buffer type. /// /// When this header is in use, it enables reference counting, and capacity /// tracking. NOTE: A string buffer can be modified only if its reference - /// count is 1. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStringBuffer { pub mRefCount : u32 , pub mStorageSize : u32 , pub mCanary : u32 , } # [ test ] fn bindgen_test_layout_nsStringBuffer ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStringBuffer > ( ) , 12usize , concat ! ( "Size of: " , stringify ! ( nsStringBuffer ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStringBuffer > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStringBuffer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStringBuffer ) ) . mRefCount as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStringBuffer ) , "::" , stringify ! ( mRefCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStringBuffer ) ) . mStorageSize as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStringBuffer ) , "::" , stringify ! ( mStorageSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStringBuffer ) ) . mCanary as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStringBuffer ) , "::" , stringify ! ( mCanary ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAtom { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub _bitfield_1 : u32 , pub mHash : u32 , pub mString : * mut u16 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsAtom_AtomKind { DynamicAtom = 0 , StaticAtom = 1 , HTML5Atom = 2 , } pub type nsAtom_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsAtom ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAtom > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsAtom ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAtom > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAtom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAtom ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAtom ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAtom ) ) . mHash as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsAtom ) , "::" , stringify ! ( mHash ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAtom ) ) . mString as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsAtom ) , "::" , stringify ! ( mString ) ) ) ; } impl nsAtom { # [ inline ] pub fn mLength ( & self ) -> u32 { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x3fffffff as u32 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mLength ( & mut self , val : u32 ) { let mask = 0x3fffffff as u32 ; let val = val as u32 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mKind ( & self ) -> u32 { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0xc0000000 as u32 ; let val = ( unit_field_val & mask ) >> 30usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mKind ( & mut self , val : u32 ) { let mask = 0xc0000000 as u32 ; let val = val as u32 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 30usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mLength : u32 , mKind : u32 ) -> u32 { ( ( 0 | ( ( mLength as u32 as u32 ) << 0usize ) & ( 0x3fffffff as u32 ) ) | ( ( mKind as u32 as u32 ) << 30usize ) & ( 0xc0000000 as u32 ) ) } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStaticAtom { pub _base : root :: nsAtom , } # [ test ] fn bindgen_test_layout_nsStaticAtom ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStaticAtom > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStaticAtom ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStaticAtom > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStaticAtom ) ) ) ; } pub type nsLoadFlags = u32 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIRequest { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIRequest_COMTypeInfo { pub _address : u8 , } pub const nsIRequest_LOAD_REQUESTMASK : root :: nsIRequest__bindgen_ty_1 = 65535 ; pub const nsIRequest_LOAD_NORMAL : root :: nsIRequest__bindgen_ty_1 = 0 ; pub const nsIRequest_LOAD_BACKGROUND : root :: nsIRequest__bindgen_ty_1 = 1 ; pub const nsIRequest_LOAD_HTML_OBJECT_DATA : root :: nsIRequest__bindgen_ty_1 = 2 ; pub const nsIRequest_LOAD_DOCUMENT_NEEDS_COOKIE : root :: nsIRequest__bindgen_ty_1 = 4 ; pub const nsIRequest_INHIBIT_CACHING : root :: nsIRequest__bindgen_ty_1 = 128 ; pub const nsIRequest_INHIBIT_PERSISTENT_CACHING : root :: nsIRequest__bindgen_ty_1 = 256 ; pub const nsIRequest_LOAD_BYPASS_CACHE : root :: nsIRequest__bindgen_ty_1 = 512 ; pub const nsIRequest_LOAD_FROM_CACHE : root :: nsIRequest__bindgen_ty_1 = 1024 ; pub const nsIRequest_VALIDATE_ALWAYS : root :: nsIRequest__bindgen_ty_1 = 2048 ; pub const nsIRequest_VALIDATE_NEVER : root :: nsIRequest__bindgen_ty_1 = 4096 ; pub const nsIRequest_VALIDATE_ONCE_PER_SESSION : root :: nsIRequest__bindgen_ty_1 = 8192 ; pub const nsIRequest_LOAD_ANONYMOUS : root :: nsIRequest__bindgen_ty_1 = 16384 ; pub const nsIRequest_LOAD_FRESH_CONNECTION : root :: nsIRequest__bindgen_ty_1 = 32768 ; pub type nsIRequest__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsIRequest ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIRequest > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIRequest ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIRequest > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIRequest ) ) ) ; } impl Clone for nsIRequest { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIContentPolicy { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIContentPolicy_COMTypeInfo { pub _address : u8 , } pub const nsIContentPolicy_TYPE_INVALID : root :: nsIContentPolicy__bindgen_ty_1 = 0 ; pub const nsIContentPolicy_TYPE_OTHER : root :: nsIContentPolicy__bindgen_ty_1 = 1 ; pub const nsIContentPolicy_TYPE_SCRIPT : root :: nsIContentPolicy__bindgen_ty_1 = 2 ; pub const nsIContentPolicy_TYPE_IMAGE : root :: nsIContentPolicy__bindgen_ty_1 = 3 ; pub const nsIContentPolicy_TYPE_STYLESHEET : root :: nsIContentPolicy__bindgen_ty_1 = 4 ; pub const nsIContentPolicy_TYPE_OBJECT : root :: nsIContentPolicy__bindgen_ty_1 = 5 ; pub const nsIContentPolicy_TYPE_DOCUMENT : root :: nsIContentPolicy__bindgen_ty_1 = 6 ; pub const nsIContentPolicy_TYPE_SUBDOCUMENT : root :: nsIContentPolicy__bindgen_ty_1 = 7 ; pub const nsIContentPolicy_TYPE_REFRESH : root :: nsIContentPolicy__bindgen_ty_1 = 8 ; pub const nsIContentPolicy_TYPE_XBL : root :: nsIContentPolicy__bindgen_ty_1 = 9 ; pub const nsIContentPolicy_TYPE_PING : root :: nsIContentPolicy__bindgen_ty_1 = 10 ; pub const nsIContentPolicy_TYPE_XMLHTTPREQUEST : root :: nsIContentPolicy__bindgen_ty_1 = 11 ; pub const nsIContentPolicy_TYPE_DATAREQUEST : root :: nsIContentPolicy__bindgen_ty_1 = 11 ; pub const nsIContentPolicy_TYPE_OBJECT_SUBREQUEST : root :: nsIContentPolicy__bindgen_ty_1 = 12 ; pub const nsIContentPolicy_TYPE_DTD : root :: nsIContentPolicy__bindgen_ty_1 = 13 ; pub const nsIContentPolicy_TYPE_FONT : root :: nsIContentPolicy__bindgen_ty_1 = 14 ; pub const nsIContentPolicy_TYPE_MEDIA : root :: nsIContentPolicy__bindgen_ty_1 = 15 ; pub const nsIContentPolicy_TYPE_WEBSOCKET : root :: nsIContentPolicy__bindgen_ty_1 = 16 ; pub const nsIContentPolicy_TYPE_CSP_REPORT : root :: nsIContentPolicy__bindgen_ty_1 = 17 ; pub const nsIContentPolicy_TYPE_XSLT : root :: nsIContentPolicy__bindgen_ty_1 = 18 ; pub const nsIContentPolicy_TYPE_BEACON : root :: nsIContentPolicy__bindgen_ty_1 = 19 ; pub const nsIContentPolicy_TYPE_FETCH : root :: nsIContentPolicy__bindgen_ty_1 = 20 ; pub const nsIContentPolicy_TYPE_IMAGESET : root :: nsIContentPolicy__bindgen_ty_1 = 21 ; pub const nsIContentPolicy_TYPE_WEB_MANIFEST : root :: nsIContentPolicy__bindgen_ty_1 = 22 ; pub const nsIContentPolicy_TYPE_SAVEAS_DOWNLOAD : root :: nsIContentPolicy__bindgen_ty_1 = 43 ; pub const nsIContentPolicy_TYPE_INTERNAL_SCRIPT : root :: nsIContentPolicy__bindgen_ty_1 = 23 ; pub const nsIContentPolicy_TYPE_INTERNAL_WORKER : root :: nsIContentPolicy__bindgen_ty_1 = 24 ; pub const nsIContentPolicy_TYPE_INTERNAL_SHARED_WORKER : root :: nsIContentPolicy__bindgen_ty_1 = 25 ; pub const nsIContentPolicy_TYPE_INTERNAL_EMBED : root :: nsIContentPolicy__bindgen_ty_1 = 26 ; pub const nsIContentPolicy_TYPE_INTERNAL_OBJECT : root :: nsIContentPolicy__bindgen_ty_1 = 27 ; pub const nsIContentPolicy_TYPE_INTERNAL_FRAME : root :: nsIContentPolicy__bindgen_ty_1 = 28 ; pub const nsIContentPolicy_TYPE_INTERNAL_IFRAME : root :: nsIContentPolicy__bindgen_ty_1 = 29 ; pub const nsIContentPolicy_TYPE_INTERNAL_AUDIO : root :: nsIContentPolicy__bindgen_ty_1 = 30 ; pub const nsIContentPolicy_TYPE_INTERNAL_VIDEO : root :: nsIContentPolicy__bindgen_ty_1 = 31 ; pub const nsIContentPolicy_TYPE_INTERNAL_TRACK : root :: nsIContentPolicy__bindgen_ty_1 = 32 ; pub const nsIContentPolicy_TYPE_INTERNAL_XMLHTTPREQUEST : root :: nsIContentPolicy__bindgen_ty_1 = 33 ; pub const nsIContentPolicy_TYPE_INTERNAL_EVENTSOURCE : root :: nsIContentPolicy__bindgen_ty_1 = 34 ; pub const nsIContentPolicy_TYPE_INTERNAL_SERVICE_WORKER : root :: nsIContentPolicy__bindgen_ty_1 = 35 ; pub const nsIContentPolicy_TYPE_INTERNAL_SCRIPT_PRELOAD : root :: nsIContentPolicy__bindgen_ty_1 = 36 ; pub const nsIContentPolicy_TYPE_INTERNAL_IMAGE : root :: nsIContentPolicy__bindgen_ty_1 = 37 ; pub const nsIContentPolicy_TYPE_INTERNAL_IMAGE_PRELOAD : root :: nsIContentPolicy__bindgen_ty_1 = 38 ; pub const nsIContentPolicy_TYPE_INTERNAL_STYLESHEET : root :: nsIContentPolicy__bindgen_ty_1 = 39 ; pub const nsIContentPolicy_TYPE_INTERNAL_STYLESHEET_PRELOAD : root :: nsIContentPolicy__bindgen_ty_1 = 40 ; pub const nsIContentPolicy_TYPE_INTERNAL_IMAGE_FAVICON : root :: nsIContentPolicy__bindgen_ty_1 = 41 ; pub const nsIContentPolicy_TYPE_INTERNAL_WORKER_IMPORT_SCRIPTS : root :: nsIContentPolicy__bindgen_ty_1 = 42 ; pub const nsIContentPolicy_REJECT_REQUEST : root :: nsIContentPolicy__bindgen_ty_1 = -1 ; pub const nsIContentPolicy_REJECT_TYPE : root :: nsIContentPolicy__bindgen_ty_1 = -2 ; pub const nsIContentPolicy_REJECT_SERVER : root :: nsIContentPolicy__bindgen_ty_1 = -3 ; pub const nsIContentPolicy_REJECT_OTHER : root :: nsIContentPolicy__bindgen_ty_1 = -4 ; pub const nsIContentPolicy_ACCEPT : root :: nsIContentPolicy__bindgen_ty_1 = 1 ; pub type nsIContentPolicy__bindgen_ty_1 = :: std :: os :: raw :: c_int ; # [ test ] fn bindgen_test_layout_nsIContentPolicy ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIContentPolicy > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIContentPolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIContentPolicy > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIContentPolicy ) ) ) ; } impl Clone for nsIContentPolicy { fn clone ( & self ) -> Self { * self } } - /// Base class that implements parts shared by JSErrorReport and - /// JSErrorNotes::Note. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct JSErrorBase { pub message_ : root :: JS :: ConstUTF8CharsZ , pub filename : * const :: std :: os :: raw :: c_char , pub lineno : :: std :: os :: raw :: c_uint , pub column : :: std :: os :: raw :: c_uint , pub errorNumber : :: std :: os :: raw :: c_uint , pub _bitfield_1 : u8 , pub __bindgen_padding_0 : [ u8 ; 3usize ] , } # [ test ] fn bindgen_test_layout_JSErrorBase ( ) { assert_eq ! ( :: std :: mem :: size_of :: < JSErrorBase > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( JSErrorBase ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < JSErrorBase > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( JSErrorBase ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const JSErrorBase ) ) . message_ as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( JSErrorBase ) , "::" , stringify ! ( message_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const JSErrorBase ) ) . filename as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( JSErrorBase ) , "::" , stringify ! ( filename ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const JSErrorBase ) ) . lineno as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( JSErrorBase ) , "::" , stringify ! ( lineno ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const JSErrorBase ) ) . column as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( JSErrorBase ) , "::" , stringify ! ( column ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const JSErrorBase ) ) . errorNumber as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( JSErrorBase ) , "::" , stringify ! ( errorNumber ) ) ) ; } impl JSErrorBase { # [ inline ] pub fn ownsMessage_ ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x1 as u8 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_ownsMessage_ ( & mut self , val : bool ) { let mask = 0x1 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( ownsMessage_ : bool ) -> u8 { ( 0 | ( ( ownsMessage_ as u8 as u8 ) << 0usize ) & ( 0x1 as u8 ) ) } } - /// Notes associated with JSErrorReport. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct JSErrorNotes { pub notes_ : [ u64 ; 4usize ] , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct JSErrorNotes_Note { pub _base : root :: JSErrorBase , } # [ test ] fn bindgen_test_layout_JSErrorNotes_Note ( ) { assert_eq ! ( :: std :: mem :: size_of :: < JSErrorNotes_Note > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( JSErrorNotes_Note ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < JSErrorNotes_Note > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( JSErrorNotes_Note ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct JSErrorNotes_iterator { pub note_ : * mut root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > , } # [ test ] fn bindgen_test_layout_JSErrorNotes_iterator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < JSErrorNotes_iterator > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( JSErrorNotes_iterator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < JSErrorNotes_iterator > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( JSErrorNotes_iterator ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const JSErrorNotes_iterator ) ) . note_ as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( JSErrorNotes_iterator ) , "::" , stringify ! ( note_ ) ) ) ; } # [ test ] fn bindgen_test_layout_JSErrorNotes ( ) { assert_eq ! ( :: std :: mem :: size_of :: < JSErrorNotes > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( JSErrorNotes ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < JSErrorNotes > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( JSErrorNotes ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const JSErrorNotes ) ) . notes_ as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( JSErrorNotes ) , "::" , stringify ! ( notes_ ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsISerializable { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsISerializable_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsISerializable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsISerializable > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsISerializable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsISerializable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsISerializable ) ) ) ; } impl Clone for nsISerializable { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIPrincipal { pub _base : root :: nsISerializable , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIPrincipal_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIPrincipal ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIPrincipal > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIPrincipal ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIPrincipal > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIPrincipal ) ) ) ; } impl Clone for nsIPrincipal { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDocShell { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIScriptSecurityManager { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIScriptSecurityManager_COMTypeInfo { pub _address : u8 , } pub const nsIScriptSecurityManager_STANDARD : root :: nsIScriptSecurityManager__bindgen_ty_1 = 0 ; pub const nsIScriptSecurityManager_LOAD_IS_AUTOMATIC_DOCUMENT_REPLACEMENT : root :: nsIScriptSecurityManager__bindgen_ty_1 = 1 ; pub const nsIScriptSecurityManager_ALLOW_CHROME : root :: nsIScriptSecurityManager__bindgen_ty_1 = 2 ; pub const nsIScriptSecurityManager_DISALLOW_INHERIT_PRINCIPAL : root :: nsIScriptSecurityManager__bindgen_ty_1 = 4 ; pub const nsIScriptSecurityManager_DISALLOW_SCRIPT_OR_DATA : root :: nsIScriptSecurityManager__bindgen_ty_1 = 4 ; pub const nsIScriptSecurityManager_DISALLOW_SCRIPT : root :: nsIScriptSecurityManager__bindgen_ty_1 = 8 ; pub const nsIScriptSecurityManager_DONT_REPORT_ERRORS : root :: nsIScriptSecurityManager__bindgen_ty_1 = 16 ; pub type nsIScriptSecurityManager__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; pub const nsIScriptSecurityManager_NO_APP_ID : root :: nsIScriptSecurityManager__bindgen_ty_2 = 0 ; pub const nsIScriptSecurityManager_UNKNOWN_APP_ID : root :: nsIScriptSecurityManager__bindgen_ty_2 = 4294967295 ; pub const nsIScriptSecurityManager_DEFAULT_USER_CONTEXT_ID : root :: nsIScriptSecurityManager__bindgen_ty_2 = 0 ; pub type nsIScriptSecurityManager__bindgen_ty_2 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsIScriptSecurityManager ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIScriptSecurityManager > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIScriptSecurityManager ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIScriptSecurityManager > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIScriptSecurityManager ) ) ) ; } impl Clone for nsIScriptSecurityManager { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIChannel { pub _base : root :: nsIRequest , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIChannel_COMTypeInfo { pub _address : u8 , } pub const nsIChannel_LOAD_DOCUMENT_URI : root :: nsIChannel__bindgen_ty_1 = 65536 ; pub const nsIChannel_LOAD_RETARGETED_DOCUMENT_URI : root :: nsIChannel__bindgen_ty_1 = 131072 ; pub const nsIChannel_LOAD_REPLACE : root :: nsIChannel__bindgen_ty_1 = 262144 ; pub const nsIChannel_LOAD_INITIAL_DOCUMENT_URI : root :: nsIChannel__bindgen_ty_1 = 524288 ; pub const nsIChannel_LOAD_TARGETED : root :: nsIChannel__bindgen_ty_1 = 1048576 ; pub const nsIChannel_LOAD_CALL_CONTENT_SNIFFERS : root :: nsIChannel__bindgen_ty_1 = 2097152 ; pub const nsIChannel_LOAD_CLASSIFY_URI : root :: nsIChannel__bindgen_ty_1 = 4194304 ; pub const nsIChannel_LOAD_MEDIA_SNIFFER_OVERRIDES_CONTENT_TYPE : root :: nsIChannel__bindgen_ty_1 = 8388608 ; pub const nsIChannel_LOAD_EXPLICIT_CREDENTIALS : root :: nsIChannel__bindgen_ty_1 = 16777216 ; pub const nsIChannel_LOAD_BYPASS_SERVICE_WORKER : root :: nsIChannel__bindgen_ty_1 = 33554432 ; pub type nsIChannel__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; pub const nsIChannel_DISPOSITION_INLINE : root :: nsIChannel__bindgen_ty_2 = 0 ; pub const nsIChannel_DISPOSITION_ATTACHMENT : root :: nsIChannel__bindgen_ty_2 = 1 ; pub type nsIChannel__bindgen_ty_2 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsIChannel ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIChannel > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIChannel ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIChannel > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIChannel ) ) ) ; } impl Clone for nsIChannel { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsICSSLoaderObserver { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsICSSLoaderObserver_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsICSSLoaderObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsICSSLoaderObserver > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsICSSLoaderObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsICSSLoaderObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsICSSLoaderObserver ) ) ) ; } impl Clone for nsICSSLoaderObserver { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMStyleSheet { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMStyleSheet_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMStyleSheet ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMStyleSheet > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMStyleSheet ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMStyleSheet > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMStyleSheet ) ) ) ; } impl Clone for nsIDOMStyleSheet { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMCSSStyleSheet { pub _base : root :: nsIDOMStyleSheet , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMCSSStyleSheet_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMCSSStyleSheet ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMCSSStyleSheet > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMCSSStyleSheet ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMCSSStyleSheet > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMCSSStyleSheet ) ) ) ; } impl Clone for nsIDOMCSSStyleSheet { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct nsCycleCollectionParticipant__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; - /// Participant implementation classes - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsCycleCollectionParticipant { pub vtable_ : * const nsCycleCollectionParticipant__bindgen_vtable , pub mMightSkip : bool , pub mTraverseShouldTrace : bool , } # [ test ] fn bindgen_test_layout_nsCycleCollectionParticipant ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCycleCollectionParticipant > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsCycleCollectionParticipant ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCycleCollectionParticipant > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCycleCollectionParticipant ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCycleCollectionParticipant ) ) . mMightSkip as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCycleCollectionParticipant ) , "::" , stringify ! ( mMightSkip ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCycleCollectionParticipant ) ) . mTraverseShouldTrace as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( nsCycleCollectionParticipant ) , "::" , stringify ! ( mTraverseShouldTrace ) ) ) ; } impl Clone for nsCycleCollectionParticipant { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsScriptObjectTracer { pub _base : root :: nsCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_nsScriptObjectTracer ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsScriptObjectTracer > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsScriptObjectTracer ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsScriptObjectTracer > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsScriptObjectTracer ) ) ) ; } impl Clone for nsScriptObjectTracer { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsXPCOMCycleCollectionParticipant { pub _base : root :: nsScriptObjectTracer , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsXPCOMCycleCollectionParticipant_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsXPCOMCycleCollectionParticipant ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsXPCOMCycleCollectionParticipant > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsXPCOMCycleCollectionParticipant ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsXPCOMCycleCollectionParticipant > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsXPCOMCycleCollectionParticipant ) ) ) ; } impl Clone for nsXPCOMCycleCollectionParticipant { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct nsWrapperCache__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; - /// Class to store the wrapper for an object. This can only be used with objects + /// count is 1. + #[repr(C)] + #[derive(Debug)] + pub struct nsStringBuffer { + pub mRefCount: u32, + pub mStorageSize: u32, + pub mCanary: u32, + } + #[test] + fn bindgen_test_layout_nsStringBuffer() { + assert_eq!( + ::std::mem::size_of::<nsStringBuffer>(), + 12usize, + concat!("Size of: ", stringify!(nsStringBuffer)) + ); + assert_eq!( + ::std::mem::align_of::<nsStringBuffer>(), + 4usize, + concat!("Alignment of ", stringify!(nsStringBuffer)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStringBuffer>())).mRefCount as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStringBuffer), + "::", + stringify!(mRefCount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStringBuffer>())).mStorageSize as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStringBuffer), + "::", + stringify!(mStorageSize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStringBuffer>())).mCanary as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStringBuffer), + "::", + stringify!(mCanary) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsAtom { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 4usize], u32>, + pub mHash: u32, + pub mString: *mut u16, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsAtom_AtomKind { + DynamicAtom = 0, + StaticAtom = 1, + HTML5Atom = 2, + } + pub type nsAtom_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsAtom() { + assert_eq!( + ::std::mem::size_of::<nsAtom>(), + 24usize, + concat!("Size of: ", stringify!(nsAtom)) + ); + assert_eq!( + ::std::mem::align_of::<nsAtom>(), + 8usize, + concat!("Alignment of ", stringify!(nsAtom)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAtom>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAtom), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAtom>())).mHash as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsAtom), + "::", + stringify!(mHash) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAtom>())).mString as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsAtom), + "::", + stringify!(mString) + ) + ); + } + impl nsAtom { + #[inline] + pub fn mLength(&self) -> u32 { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 30u8) as u32) } + } + #[inline] + pub fn set_mLength(&mut self, val: u32) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 30u8, val as u64) + } + } + #[inline] + pub fn mKind(&self) -> u32 { + unsafe { ::std::mem::transmute(self._bitfield_1.get(30usize, 2u8) as u32) } + } + #[inline] + pub fn set_mKind(&mut self, val: u32) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(30usize, 2u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mLength: u32, + mKind: u32, + ) -> root::__BindgenBitfieldUnit<[u8; 4usize], u32> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 4usize], + u32, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 30u8, { + let mLength: u32 = unsafe { ::std::mem::transmute(mLength) }; + mLength as u64 + }); + __bindgen_bitfield_unit.set(30usize, 2u8, { + let mKind: u32 = unsafe { ::std::mem::transmute(mKind) }; + mKind as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStaticAtom { + pub _base: root::nsAtom, + } + #[test] + fn bindgen_test_layout_nsStaticAtom() { + assert_eq!( + ::std::mem::size_of::<nsStaticAtom>(), + 24usize, + concat!("Size of: ", stringify!(nsStaticAtom)) + ); + assert_eq!( + ::std::mem::align_of::<nsStaticAtom>(), + 8usize, + concat!("Alignment of ", stringify!(nsStaticAtom)) + ); + } + pub type nsLoadFlags = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIRequest { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIRequest_COMTypeInfo { + pub _address: u8, + } + pub const nsIRequest_LOAD_REQUESTMASK: root::nsIRequest__bindgen_ty_1 = 65535; + pub const nsIRequest_LOAD_NORMAL: root::nsIRequest__bindgen_ty_1 = 0; + pub const nsIRequest_LOAD_BACKGROUND: root::nsIRequest__bindgen_ty_1 = 1; + pub const nsIRequest_LOAD_HTML_OBJECT_DATA: root::nsIRequest__bindgen_ty_1 = 2; + pub const nsIRequest_LOAD_DOCUMENT_NEEDS_COOKIE: root::nsIRequest__bindgen_ty_1 = 4; + pub const nsIRequest_INHIBIT_CACHING: root::nsIRequest__bindgen_ty_1 = 128; + pub const nsIRequest_INHIBIT_PERSISTENT_CACHING: root::nsIRequest__bindgen_ty_1 = 256; + pub const nsIRequest_LOAD_BYPASS_CACHE: root::nsIRequest__bindgen_ty_1 = 512; + pub const nsIRequest_LOAD_FROM_CACHE: root::nsIRequest__bindgen_ty_1 = 1024; + pub const nsIRequest_VALIDATE_ALWAYS: root::nsIRequest__bindgen_ty_1 = 2048; + pub const nsIRequest_VALIDATE_NEVER: root::nsIRequest__bindgen_ty_1 = 4096; + pub const nsIRequest_VALIDATE_ONCE_PER_SESSION: root::nsIRequest__bindgen_ty_1 = 8192; + pub const nsIRequest_LOAD_ANONYMOUS: root::nsIRequest__bindgen_ty_1 = 16384; + pub const nsIRequest_LOAD_FRESH_CONNECTION: root::nsIRequest__bindgen_ty_1 = 32768; + pub type nsIRequest__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsIRequest() { + assert_eq!( + ::std::mem::size_of::<nsIRequest>(), + 8usize, + concat!("Size of: ", stringify!(nsIRequest)) + ); + assert_eq!( + ::std::mem::align_of::<nsIRequest>(), + 8usize, + concat!("Alignment of ", stringify!(nsIRequest)) + ); + } + impl Clone for nsIRequest { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIContentPolicy { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIContentPolicy_COMTypeInfo { + pub _address: u8, + } + pub const nsIContentPolicy_TYPE_INVALID: root::nsIContentPolicy__bindgen_ty_1 = 0; + pub const nsIContentPolicy_TYPE_OTHER: root::nsIContentPolicy__bindgen_ty_1 = 1; + pub const nsIContentPolicy_TYPE_SCRIPT: root::nsIContentPolicy__bindgen_ty_1 = 2; + pub const nsIContentPolicy_TYPE_IMAGE: root::nsIContentPolicy__bindgen_ty_1 = 3; + pub const nsIContentPolicy_TYPE_STYLESHEET: root::nsIContentPolicy__bindgen_ty_1 = 4; + pub const nsIContentPolicy_TYPE_OBJECT: root::nsIContentPolicy__bindgen_ty_1 = 5; + pub const nsIContentPolicy_TYPE_DOCUMENT: root::nsIContentPolicy__bindgen_ty_1 = 6; + pub const nsIContentPolicy_TYPE_SUBDOCUMENT: root::nsIContentPolicy__bindgen_ty_1 = 7; + pub const nsIContentPolicy_TYPE_REFRESH: root::nsIContentPolicy__bindgen_ty_1 = 8; + pub const nsIContentPolicy_TYPE_XBL: root::nsIContentPolicy__bindgen_ty_1 = 9; + pub const nsIContentPolicy_TYPE_PING: root::nsIContentPolicy__bindgen_ty_1 = 10; + pub const nsIContentPolicy_TYPE_XMLHTTPREQUEST: root::nsIContentPolicy__bindgen_ty_1 = 11; + pub const nsIContentPolicy_TYPE_DATAREQUEST: root::nsIContentPolicy__bindgen_ty_1 = 11; + pub const nsIContentPolicy_TYPE_OBJECT_SUBREQUEST: root::nsIContentPolicy__bindgen_ty_1 = 12; + pub const nsIContentPolicy_TYPE_DTD: root::nsIContentPolicy__bindgen_ty_1 = 13; + pub const nsIContentPolicy_TYPE_FONT: root::nsIContentPolicy__bindgen_ty_1 = 14; + pub const nsIContentPolicy_TYPE_MEDIA: root::nsIContentPolicy__bindgen_ty_1 = 15; + pub const nsIContentPolicy_TYPE_WEBSOCKET: root::nsIContentPolicy__bindgen_ty_1 = 16; + pub const nsIContentPolicy_TYPE_CSP_REPORT: root::nsIContentPolicy__bindgen_ty_1 = 17; + pub const nsIContentPolicy_TYPE_XSLT: root::nsIContentPolicy__bindgen_ty_1 = 18; + pub const nsIContentPolicy_TYPE_BEACON: root::nsIContentPolicy__bindgen_ty_1 = 19; + pub const nsIContentPolicy_TYPE_FETCH: root::nsIContentPolicy__bindgen_ty_1 = 20; + pub const nsIContentPolicy_TYPE_IMAGESET: root::nsIContentPolicy__bindgen_ty_1 = 21; + pub const nsIContentPolicy_TYPE_WEB_MANIFEST: root::nsIContentPolicy__bindgen_ty_1 = 22; + pub const nsIContentPolicy_TYPE_SAVEAS_DOWNLOAD: root::nsIContentPolicy__bindgen_ty_1 = 43; + pub const nsIContentPolicy_TYPE_INTERNAL_SCRIPT: root::nsIContentPolicy__bindgen_ty_1 = 23; + pub const nsIContentPolicy_TYPE_INTERNAL_WORKER: root::nsIContentPolicy__bindgen_ty_1 = 24; + pub const nsIContentPolicy_TYPE_INTERNAL_SHARED_WORKER: root::nsIContentPolicy__bindgen_ty_1 = + 25; + pub const nsIContentPolicy_TYPE_INTERNAL_EMBED: root::nsIContentPolicy__bindgen_ty_1 = 26; + pub const nsIContentPolicy_TYPE_INTERNAL_OBJECT: root::nsIContentPolicy__bindgen_ty_1 = 27; + pub const nsIContentPolicy_TYPE_INTERNAL_FRAME: root::nsIContentPolicy__bindgen_ty_1 = 28; + pub const nsIContentPolicy_TYPE_INTERNAL_IFRAME: root::nsIContentPolicy__bindgen_ty_1 = 29; + pub const nsIContentPolicy_TYPE_INTERNAL_AUDIO: root::nsIContentPolicy__bindgen_ty_1 = 30; + pub const nsIContentPolicy_TYPE_INTERNAL_VIDEO: root::nsIContentPolicy__bindgen_ty_1 = 31; + pub const nsIContentPolicy_TYPE_INTERNAL_TRACK: root::nsIContentPolicy__bindgen_ty_1 = 32; + pub const nsIContentPolicy_TYPE_INTERNAL_XMLHTTPREQUEST: root::nsIContentPolicy__bindgen_ty_1 = + 33; + pub const nsIContentPolicy_TYPE_INTERNAL_EVENTSOURCE: root::nsIContentPolicy__bindgen_ty_1 = 34; + pub const nsIContentPolicy_TYPE_INTERNAL_SERVICE_WORKER: root::nsIContentPolicy__bindgen_ty_1 = + 35; + pub const nsIContentPolicy_TYPE_INTERNAL_SCRIPT_PRELOAD: root::nsIContentPolicy__bindgen_ty_1 = + 36; + pub const nsIContentPolicy_TYPE_INTERNAL_IMAGE: root::nsIContentPolicy__bindgen_ty_1 = 37; + pub const nsIContentPolicy_TYPE_INTERNAL_IMAGE_PRELOAD: root::nsIContentPolicy__bindgen_ty_1 = + 38; + pub const nsIContentPolicy_TYPE_INTERNAL_STYLESHEET: root::nsIContentPolicy__bindgen_ty_1 = 39; + pub const nsIContentPolicy_TYPE_INTERNAL_STYLESHEET_PRELOAD: + root::nsIContentPolicy__bindgen_ty_1 = 40; + pub const nsIContentPolicy_TYPE_INTERNAL_IMAGE_FAVICON: root::nsIContentPolicy__bindgen_ty_1 = + 41; + pub const nsIContentPolicy_TYPE_INTERNAL_WORKER_IMPORT_SCRIPTS: + root::nsIContentPolicy__bindgen_ty_1 = 42; + pub const nsIContentPolicy_REJECT_REQUEST: root::nsIContentPolicy__bindgen_ty_1 = -1; + pub const nsIContentPolicy_REJECT_TYPE: root::nsIContentPolicy__bindgen_ty_1 = -2; + pub const nsIContentPolicy_REJECT_SERVER: root::nsIContentPolicy__bindgen_ty_1 = -3; + pub const nsIContentPolicy_REJECT_OTHER: root::nsIContentPolicy__bindgen_ty_1 = -4; + pub const nsIContentPolicy_ACCEPT: root::nsIContentPolicy__bindgen_ty_1 = 1; + pub type nsIContentPolicy__bindgen_ty_1 = i32; + #[test] + fn bindgen_test_layout_nsIContentPolicy() { + assert_eq!( + ::std::mem::size_of::<nsIContentPolicy>(), + 8usize, + concat!("Size of: ", stringify!(nsIContentPolicy)) + ); + assert_eq!( + ::std::mem::align_of::<nsIContentPolicy>(), + 8usize, + concat!("Alignment of ", stringify!(nsIContentPolicy)) + ); + } + impl Clone for nsIContentPolicy { + fn clone(&self) -> Self { + *self + } + } + /// Base class that implements parts shared by JSErrorReport and + /// JSErrorNotes::Note. + #[repr(C)] + #[derive(Debug)] + pub struct JSErrorBase { + pub message_: root::JS::ConstUTF8CharsZ, + pub filename: *const ::std::os::raw::c_char, + pub lineno: ::std::os::raw::c_uint, + pub column: ::std::os::raw::c_uint, + pub errorNumber: ::std::os::raw::c_uint, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 1usize], u8>, + pub __bindgen_padding_0: [u8; 3usize], + } + #[test] + fn bindgen_test_layout_JSErrorBase() { + assert_eq!( + ::std::mem::size_of::<JSErrorBase>(), + 32usize, + concat!("Size of: ", stringify!(JSErrorBase)) + ); + assert_eq!( + ::std::mem::align_of::<JSErrorBase>(), + 8usize, + concat!("Alignment of ", stringify!(JSErrorBase)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<JSErrorBase>())).message_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JSErrorBase), + "::", + stringify!(message_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<JSErrorBase>())).filename as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(JSErrorBase), + "::", + stringify!(filename) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<JSErrorBase>())).lineno as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(JSErrorBase), + "::", + stringify!(lineno) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<JSErrorBase>())).column as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(JSErrorBase), + "::", + stringify!(column) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<JSErrorBase>())).errorNumber as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(JSErrorBase), + "::", + stringify!(errorNumber) + ) + ); + } + impl JSErrorBase { + #[inline] + pub fn ownsMessage_(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) } + } + #[inline] + pub fn set_ownsMessage_(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1(ownsMessage_: bool) -> root::__BindgenBitfieldUnit<[u8; 1usize], u8> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 1usize], + u8, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let ownsMessage_: u8 = unsafe { ::std::mem::transmute(ownsMessage_) }; + ownsMessage_ as u64 + }); + __bindgen_bitfield_unit + } + } + /// Notes associated with JSErrorReport. + #[repr(C)] + #[derive(Debug)] + pub struct JSErrorNotes { + pub notes_: [u64; 4usize], + } + #[repr(C)] + #[derive(Debug)] + pub struct JSErrorNotes_Note { + pub _base: root::JSErrorBase, + } + #[test] + fn bindgen_test_layout_JSErrorNotes_Note() { + assert_eq!( + ::std::mem::size_of::<JSErrorNotes_Note>(), + 32usize, + concat!("Size of: ", stringify!(JSErrorNotes_Note)) + ); + assert_eq!( + ::std::mem::align_of::<JSErrorNotes_Note>(), + 8usize, + concat!("Alignment of ", stringify!(JSErrorNotes_Note)) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct JSErrorNotes_iterator { + pub note_: *mut root::mozilla::UniquePtr<root::JSErrorNotes_Note>, + } + #[test] + fn bindgen_test_layout_JSErrorNotes_iterator() { + assert_eq!( + ::std::mem::size_of::<JSErrorNotes_iterator>(), + 8usize, + concat!("Size of: ", stringify!(JSErrorNotes_iterator)) + ); + assert_eq!( + ::std::mem::align_of::<JSErrorNotes_iterator>(), + 8usize, + concat!("Alignment of ", stringify!(JSErrorNotes_iterator)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<JSErrorNotes_iterator>())).note_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JSErrorNotes_iterator), + "::", + stringify!(note_) + ) + ); + } + #[test] + fn bindgen_test_layout_JSErrorNotes() { + assert_eq!( + ::std::mem::size_of::<JSErrorNotes>(), + 32usize, + concat!("Size of: ", stringify!(JSErrorNotes)) + ); + assert_eq!( + ::std::mem::align_of::<JSErrorNotes>(), + 8usize, + concat!("Alignment of ", stringify!(JSErrorNotes)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<JSErrorNotes>())).notes_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(JSErrorNotes), + "::", + stringify!(notes_) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsISerializable { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsISerializable_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsISerializable() { + assert_eq!( + ::std::mem::size_of::<nsISerializable>(), + 8usize, + concat!("Size of: ", stringify!(nsISerializable)) + ); + assert_eq!( + ::std::mem::align_of::<nsISerializable>(), + 8usize, + concat!("Alignment of ", stringify!(nsISerializable)) + ); + } + impl Clone for nsISerializable { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIPrincipal { + pub _base: root::nsISerializable, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIPrincipal_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIPrincipal() { + assert_eq!( + ::std::mem::size_of::<nsIPrincipal>(), + 8usize, + concat!("Size of: ", stringify!(nsIPrincipal)) + ); + assert_eq!( + ::std::mem::align_of::<nsIPrincipal>(), + 8usize, + concat!("Alignment of ", stringify!(nsIPrincipal)) + ); + } + impl Clone for nsIPrincipal { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDocShell { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIScriptSecurityManager { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIScriptSecurityManager_COMTypeInfo { + pub _address: u8, + } + pub const nsIScriptSecurityManager_STANDARD: root::nsIScriptSecurityManager__bindgen_ty_1 = 0; + pub const nsIScriptSecurityManager_LOAD_IS_AUTOMATIC_DOCUMENT_REPLACEMENT: + root::nsIScriptSecurityManager__bindgen_ty_1 = 1; + pub const nsIScriptSecurityManager_ALLOW_CHROME: root::nsIScriptSecurityManager__bindgen_ty_1 = + 2; + pub const nsIScriptSecurityManager_DISALLOW_INHERIT_PRINCIPAL: + root::nsIScriptSecurityManager__bindgen_ty_1 = 4; + pub const nsIScriptSecurityManager_DISALLOW_SCRIPT_OR_DATA: + root::nsIScriptSecurityManager__bindgen_ty_1 = 4; + pub const nsIScriptSecurityManager_DISALLOW_SCRIPT: + root::nsIScriptSecurityManager__bindgen_ty_1 = 8; + pub const nsIScriptSecurityManager_DONT_REPORT_ERRORS: + root::nsIScriptSecurityManager__bindgen_ty_1 = 16; + pub type nsIScriptSecurityManager__bindgen_ty_1 = u32; + pub const nsIScriptSecurityManager_NO_APP_ID: root::nsIScriptSecurityManager__bindgen_ty_2 = 0; + pub const nsIScriptSecurityManager_UNKNOWN_APP_ID: + root::nsIScriptSecurityManager__bindgen_ty_2 = 4294967295; + pub const nsIScriptSecurityManager_DEFAULT_USER_CONTEXT_ID: + root::nsIScriptSecurityManager__bindgen_ty_2 = 0; + pub type nsIScriptSecurityManager__bindgen_ty_2 = u32; + #[test] + fn bindgen_test_layout_nsIScriptSecurityManager() { + assert_eq!( + ::std::mem::size_of::<nsIScriptSecurityManager>(), + 8usize, + concat!("Size of: ", stringify!(nsIScriptSecurityManager)) + ); + assert_eq!( + ::std::mem::align_of::<nsIScriptSecurityManager>(), + 8usize, + concat!("Alignment of ", stringify!(nsIScriptSecurityManager)) + ); + } + impl Clone for nsIScriptSecurityManager { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIChannel { + pub _base: root::nsIRequest, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIChannel_COMTypeInfo { + pub _address: u8, + } + pub const nsIChannel_LOAD_DOCUMENT_URI: root::nsIChannel__bindgen_ty_1 = 65536; + pub const nsIChannel_LOAD_RETARGETED_DOCUMENT_URI: root::nsIChannel__bindgen_ty_1 = 131072; + pub const nsIChannel_LOAD_REPLACE: root::nsIChannel__bindgen_ty_1 = 262144; + pub const nsIChannel_LOAD_INITIAL_DOCUMENT_URI: root::nsIChannel__bindgen_ty_1 = 524288; + pub const nsIChannel_LOAD_TARGETED: root::nsIChannel__bindgen_ty_1 = 1048576; + pub const nsIChannel_LOAD_CALL_CONTENT_SNIFFERS: root::nsIChannel__bindgen_ty_1 = 2097152; + pub const nsIChannel_LOAD_CLASSIFY_URI: root::nsIChannel__bindgen_ty_1 = 4194304; + pub const nsIChannel_LOAD_MEDIA_SNIFFER_OVERRIDES_CONTENT_TYPE: root::nsIChannel__bindgen_ty_1 = + 8388608; + pub const nsIChannel_LOAD_EXPLICIT_CREDENTIALS: root::nsIChannel__bindgen_ty_1 = 16777216; + pub const nsIChannel_LOAD_BYPASS_SERVICE_WORKER: root::nsIChannel__bindgen_ty_1 = 33554432; + pub type nsIChannel__bindgen_ty_1 = u32; + pub const nsIChannel_DISPOSITION_INLINE: root::nsIChannel__bindgen_ty_2 = 0; + pub const nsIChannel_DISPOSITION_ATTACHMENT: root::nsIChannel__bindgen_ty_2 = 1; + pub type nsIChannel__bindgen_ty_2 = u32; + #[test] + fn bindgen_test_layout_nsIChannel() { + assert_eq!( + ::std::mem::size_of::<nsIChannel>(), + 8usize, + concat!("Size of: ", stringify!(nsIChannel)) + ); + assert_eq!( + ::std::mem::align_of::<nsIChannel>(), + 8usize, + concat!("Alignment of ", stringify!(nsIChannel)) + ); + } + impl Clone for nsIChannel { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsICSSLoaderObserver { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsICSSLoaderObserver_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsICSSLoaderObserver() { + assert_eq!( + ::std::mem::size_of::<nsICSSLoaderObserver>(), + 8usize, + concat!("Size of: ", stringify!(nsICSSLoaderObserver)) + ); + assert_eq!( + ::std::mem::align_of::<nsICSSLoaderObserver>(), + 8usize, + concat!("Alignment of ", stringify!(nsICSSLoaderObserver)) + ); + } + impl Clone for nsICSSLoaderObserver { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct nsCycleCollectionParticipant__bindgen_vtable(::std::os::raw::c_void); + /// Participant implementation classes + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsCycleCollectionParticipant { + pub vtable_: *const nsCycleCollectionParticipant__bindgen_vtable, + pub mMightSkip: bool, + pub mTraverseShouldTrace: bool, + } + #[test] + fn bindgen_test_layout_nsCycleCollectionParticipant() { + assert_eq!( + ::std::mem::size_of::<nsCycleCollectionParticipant>(), + 16usize, + concat!("Size of: ", stringify!(nsCycleCollectionParticipant)) + ); + assert_eq!( + ::std::mem::align_of::<nsCycleCollectionParticipant>(), + 8usize, + concat!("Alignment of ", stringify!(nsCycleCollectionParticipant)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCycleCollectionParticipant>())).mMightSkip as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCycleCollectionParticipant), + "::", + stringify!(mMightSkip) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCycleCollectionParticipant>())).mTraverseShouldTrace + as *const _ as usize + }, + 9usize, + concat!( + "Offset of field: ", + stringify!(nsCycleCollectionParticipant), + "::", + stringify!(mTraverseShouldTrace) + ) + ); + } + impl Clone for nsCycleCollectionParticipant { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsScriptObjectTracer { + pub _base: root::nsCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_nsScriptObjectTracer() { + assert_eq!( + ::std::mem::size_of::<nsScriptObjectTracer>(), + 16usize, + concat!("Size of: ", stringify!(nsScriptObjectTracer)) + ); + assert_eq!( + ::std::mem::align_of::<nsScriptObjectTracer>(), + 8usize, + concat!("Alignment of ", stringify!(nsScriptObjectTracer)) + ); + } + impl Clone for nsScriptObjectTracer { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsXPCOMCycleCollectionParticipant { + pub _base: root::nsScriptObjectTracer, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsXPCOMCycleCollectionParticipant_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsXPCOMCycleCollectionParticipant() { + assert_eq!( + ::std::mem::size_of::<nsXPCOMCycleCollectionParticipant>(), + 16usize, + concat!("Size of: ", stringify!(nsXPCOMCycleCollectionParticipant)) + ); + assert_eq!( + ::std::mem::align_of::<nsXPCOMCycleCollectionParticipant>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsXPCOMCycleCollectionParticipant) + ) + ); + } + impl Clone for nsXPCOMCycleCollectionParticipant { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct nsWrapperCache__bindgen_vtable(::std::os::raw::c_void); + /// Class to store the wrapper for an object. This can only be used with objects /// that only have one non-security wrapper at a time (for an XPCWrappedNative /// this is usually ensured by setting an explicit parent in the PreCreate hook /// for the class). @@ -769,74 +16826,1656 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// A number of the methods are implemented in nsWrapperCacheInlines.h because we /// have to include some JS headers that don't play nicely with the rest of the - /// codebase. Include nsWrapperCacheInlines.h if you need to call those methods. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsWrapperCache { pub vtable_ : * const nsWrapperCache__bindgen_vtable , pub mWrapper : * mut root :: JSObject , pub mFlags : root :: nsWrapperCache_FlagsType , pub mBoolFlags : u32 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsWrapperCache_COMTypeInfo { pub _address : u8 , } pub type nsWrapperCache_FlagsType = u32 ; pub const nsWrapperCache_WRAPPER_BIT_PRESERVED : root :: nsWrapperCache__bindgen_ty_1 = 1 ; pub type nsWrapperCache__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; pub const nsWrapperCache_WRAPPER_IS_NOT_DOM_BINDING : root :: nsWrapperCache__bindgen_ty_2 = 2 ; pub type nsWrapperCache__bindgen_ty_2 = :: std :: os :: raw :: c_uint ; pub const nsWrapperCache_kWrapperFlagsMask : root :: nsWrapperCache__bindgen_ty_3 = 3 ; pub type nsWrapperCache__bindgen_ty_3 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsWrapperCache ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsWrapperCache > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsWrapperCache ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsWrapperCache > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsWrapperCache ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsWrapperCache ) ) . mWrapper as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsWrapperCache ) , "::" , stringify ! ( mWrapper ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsWrapperCache ) ) . mFlags as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsWrapperCache ) , "::" , stringify ! ( mFlags ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsWrapperCache ) ) . mBoolFlags as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsWrapperCache ) , "::" , stringify ! ( mBoolFlags ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ProfilerBacktrace { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ProfilerMarkerPayload { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ProfilerBacktraceDestructor { pub _address : u8 , } # [ test ] fn bindgen_test_layout_ProfilerBacktraceDestructor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ProfilerBacktraceDestructor > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( ProfilerBacktraceDestructor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ProfilerBacktraceDestructor > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( ProfilerBacktraceDestructor ) ) ) ; } impl Clone for ProfilerBacktraceDestructor { fn clone ( & self ) -> Self { * self } } pub type UniqueProfilerBacktrace = root :: mozilla :: UniquePtr < root :: ProfilerBacktrace > ; pub type gfxSize = [ u64 ; 2usize ] ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMNode { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMNode_COMTypeInfo { pub _address : u8 , } pub const nsIDOMNode_ELEMENT_NODE : root :: nsIDOMNode__bindgen_ty_1 = 1 ; pub const nsIDOMNode_ATTRIBUTE_NODE : root :: nsIDOMNode__bindgen_ty_1 = 2 ; pub const nsIDOMNode_TEXT_NODE : root :: nsIDOMNode__bindgen_ty_1 = 3 ; pub const nsIDOMNode_CDATA_SECTION_NODE : root :: nsIDOMNode__bindgen_ty_1 = 4 ; pub const nsIDOMNode_ENTITY_REFERENCE_NODE : root :: nsIDOMNode__bindgen_ty_1 = 5 ; pub const nsIDOMNode_ENTITY_NODE : root :: nsIDOMNode__bindgen_ty_1 = 6 ; pub const nsIDOMNode_PROCESSING_INSTRUCTION_NODE : root :: nsIDOMNode__bindgen_ty_1 = 7 ; pub const nsIDOMNode_COMMENT_NODE : root :: nsIDOMNode__bindgen_ty_1 = 8 ; pub const nsIDOMNode_DOCUMENT_NODE : root :: nsIDOMNode__bindgen_ty_1 = 9 ; pub const nsIDOMNode_DOCUMENT_TYPE_NODE : root :: nsIDOMNode__bindgen_ty_1 = 10 ; pub const nsIDOMNode_DOCUMENT_FRAGMENT_NODE : root :: nsIDOMNode__bindgen_ty_1 = 11 ; pub const nsIDOMNode_NOTATION_NODE : root :: nsIDOMNode__bindgen_ty_1 = 12 ; pub type nsIDOMNode__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; pub const nsIDOMNode_DOCUMENT_POSITION_DISCONNECTED : root :: nsIDOMNode__bindgen_ty_2 = 1 ; pub const nsIDOMNode_DOCUMENT_POSITION_PRECEDING : root :: nsIDOMNode__bindgen_ty_2 = 2 ; pub const nsIDOMNode_DOCUMENT_POSITION_FOLLOWING : root :: nsIDOMNode__bindgen_ty_2 = 4 ; pub const nsIDOMNode_DOCUMENT_POSITION_CONTAINS : root :: nsIDOMNode__bindgen_ty_2 = 8 ; pub const nsIDOMNode_DOCUMENT_POSITION_CONTAINED_BY : root :: nsIDOMNode__bindgen_ty_2 = 16 ; pub const nsIDOMNode_DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC : root :: nsIDOMNode__bindgen_ty_2 = 32 ; pub type nsIDOMNode__bindgen_ty_2 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsIDOMNode ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMNode > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMNode ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMNode > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMNode ) ) ) ; } impl Clone for nsIDOMNode { fn clone ( & self ) -> Self { * self } } pub const kNameSpaceID_None : i32 = 0 ; pub type PLHashNumber = root :: PRUint32 ; pub type PLHashFunction = :: std :: option :: Option < unsafe extern "C" fn ( key : * const :: std :: os :: raw :: c_void ) -> root :: PLHashNumber > ; pub type PLHashComparator = :: std :: option :: Option < unsafe extern "C" fn ( v1 : * const :: std :: os :: raw :: c_void , v2 : * const :: std :: os :: raw :: c_void ) -> root :: PRIntn > ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct PLHashAllocOps { pub allocTable : :: std :: option :: Option < unsafe extern "C" fn ( pool : * mut :: std :: os :: raw :: c_void , size : root :: PRSize ) -> * mut :: std :: os :: raw :: c_void > , pub freeTable : :: std :: option :: Option < unsafe extern "C" fn ( pool : * mut :: std :: os :: raw :: c_void , item : * mut :: std :: os :: raw :: c_void ) > , pub allocEntry : :: std :: option :: Option < unsafe extern "C" fn ( pool : * mut :: std :: os :: raw :: c_void , key : * const :: std :: os :: raw :: c_void ) -> * mut root :: PLHashEntry > , pub freeEntry : :: std :: option :: Option < unsafe extern "C" fn ( pool : * mut :: std :: os :: raw :: c_void , he : * mut root :: PLHashEntry , flag : root :: PRUintn ) > , } # [ test ] fn bindgen_test_layout_PLHashAllocOps ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PLHashAllocOps > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( PLHashAllocOps ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PLHashAllocOps > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PLHashAllocOps ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashAllocOps ) ) . allocTable as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashAllocOps ) , "::" , stringify ! ( allocTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashAllocOps ) ) . freeTable as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashAllocOps ) , "::" , stringify ! ( freeTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashAllocOps ) ) . allocEntry as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashAllocOps ) , "::" , stringify ! ( allocEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashAllocOps ) ) . freeEntry as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashAllocOps ) , "::" , stringify ! ( freeEntry ) ) ) ; } impl Clone for PLHashAllocOps { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct PLHashEntry { pub next : * mut root :: PLHashEntry , pub keyHash : root :: PLHashNumber , pub key : * const :: std :: os :: raw :: c_void , pub value : * mut :: std :: os :: raw :: c_void , } # [ test ] fn bindgen_test_layout_PLHashEntry ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PLHashEntry > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( PLHashEntry ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PLHashEntry > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PLHashEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashEntry ) ) . next as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashEntry ) , "::" , stringify ! ( next ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashEntry ) ) . keyHash as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashEntry ) , "::" , stringify ! ( keyHash ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashEntry ) ) . key as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashEntry ) , "::" , stringify ! ( key ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashEntry ) ) . value as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashEntry ) , "::" , stringify ! ( value ) ) ) ; } impl Clone for PLHashEntry { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct PLHashTable { pub buckets : * mut * mut root :: PLHashEntry , pub nentries : root :: PRUint32 , pub shift : root :: PRUint32 , pub keyHash : root :: PLHashFunction , pub keyCompare : root :: PLHashComparator , pub valueCompare : root :: PLHashComparator , pub allocOps : * const root :: PLHashAllocOps , pub allocPriv : * mut :: std :: os :: raw :: c_void , } # [ test ] fn bindgen_test_layout_PLHashTable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < PLHashTable > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( PLHashTable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < PLHashTable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( PLHashTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashTable ) ) . buckets as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashTable ) , "::" , stringify ! ( buckets ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashTable ) ) . nentries as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashTable ) , "::" , stringify ! ( nentries ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashTable ) ) . shift as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashTable ) , "::" , stringify ! ( shift ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashTable ) ) . keyHash as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashTable ) , "::" , stringify ! ( keyHash ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashTable ) ) . keyCompare as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashTable ) , "::" , stringify ! ( keyCompare ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashTable ) ) . valueCompare as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashTable ) , "::" , stringify ! ( valueCompare ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashTable ) ) . allocOps as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashTable ) , "::" , stringify ! ( allocOps ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const PLHashTable ) ) . allocPriv as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( PLHashTable ) , "::" , stringify ! ( allocPriv ) ) ) ; } impl Clone for PLHashTable { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIVariant { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIVariant_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIVariant ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIVariant > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIVariant ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIVariant > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIVariant ) ) ) ; } impl Clone for nsIVariant { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct nsNodeInfoManager { pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mNodeInfoHash : * mut root :: PLHashTable , pub mDocument : * mut root :: nsIDocument , pub mNonDocumentNodeInfos : u32 , pub mPrincipal : root :: nsCOMPtr , pub mDefaultPrincipal : root :: nsCOMPtr , pub mTextNodeInfo : * mut root :: mozilla :: dom :: NodeInfo , pub mCommentNodeInfo : * mut root :: mozilla :: dom :: NodeInfo , pub mDocumentNodeInfo : * mut root :: mozilla :: dom :: NodeInfo , pub mBindingManager : root :: RefPtr < root :: nsBindingManager > , pub mRecentlyUsedNodeInfos : [ * mut root :: mozilla :: dom :: NodeInfo ; 31usize ] , pub mSVGEnabled : root :: nsNodeInfoManager_Tri , pub mMathMLEnabled : root :: nsNodeInfoManager_Tri , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsNodeInfoManager_cycleCollection { pub _base : root :: nsCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_nsNodeInfoManager_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsNodeInfoManager_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsNodeInfoManager_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsNodeInfoManager_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsNodeInfoManager_cycleCollection ) ) ) ; } impl Clone for nsNodeInfoManager_cycleCollection { fn clone ( & self ) -> Self { * self } } pub type nsNodeInfoManager_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; pub const nsNodeInfoManager_Tri_eTriUnset : root :: nsNodeInfoManager_Tri = 0 ; pub const nsNodeInfoManager_Tri_eTriFalse : root :: nsNodeInfoManager_Tri = 1 ; pub const nsNodeInfoManager_Tri_eTriTrue : root :: nsNodeInfoManager_Tri = 2 ; pub type nsNodeInfoManager_Tri = :: std :: os :: raw :: c_uint ; extern "C" { - # [ link_name = "\u{1}_ZN17nsNodeInfoManager21_cycleCollectorGlobalE" ] - pub static mut nsNodeInfoManager__cycleCollectorGlobal : root :: nsNodeInfoManager_cycleCollection ; -} # [ test ] fn bindgen_test_layout_nsNodeInfoManager ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsNodeInfoManager > ( ) , 336usize , concat ! ( "Size of: " , stringify ! ( nsNodeInfoManager ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsNodeInfoManager > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsNodeInfoManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mNodeInfoHash as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mNodeInfoHash ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mDocument as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mDocument ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mNonDocumentNodeInfos as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mNonDocumentNodeInfos ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mPrincipal as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mPrincipal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mDefaultPrincipal as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mDefaultPrincipal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mTextNodeInfo as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mTextNodeInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mCommentNodeInfo as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mCommentNodeInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mDocumentNodeInfo as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mDocumentNodeInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mBindingManager as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mBindingManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mRecentlyUsedNodeInfos as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mRecentlyUsedNodeInfos ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mSVGEnabled as * const _ as usize } , 328usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mSVGEnabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeInfoManager ) ) . mMathMLEnabled as * const _ as usize } , 332usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeInfoManager ) , "::" , stringify ! ( mMathMLEnabled ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsPropertyTable { pub mPropertyList : * mut root :: nsPropertyTable_PropertyList , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsPropertyTable_PropertyList { _unused : [ u8 ; 0 ] } # [ test ] fn bindgen_test_layout_nsPropertyTable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPropertyTable > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsPropertyTable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPropertyTable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPropertyTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPropertyTable ) ) . mPropertyList as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsPropertyTable ) , "::" , stringify ! ( mPropertyList ) ) ) ; } pub type nsTObserverArray_base_index_type = usize ; pub type nsTObserverArray_base_size_type = usize ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsTObserverArray_base_Iterator_base { pub mPosition : root :: nsTObserverArray_base_index_type , pub mNext : * mut root :: nsTObserverArray_base_Iterator_base , } # [ test ] fn bindgen_test_layout_nsTObserverArray_base_Iterator_base ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsTObserverArray_base_Iterator_base > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsTObserverArray_base_Iterator_base ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsTObserverArray_base_Iterator_base > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsTObserverArray_base_Iterator_base ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTObserverArray_base_Iterator_base ) ) . mPosition as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsTObserverArray_base_Iterator_base ) , "::" , stringify ! ( mPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTObserverArray_base_Iterator_base ) ) . mNext as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsTObserverArray_base_Iterator_base ) , "::" , stringify ! ( mNext ) ) ) ; } impl Clone for nsTObserverArray_base_Iterator_base { fn clone ( & self ) -> Self { * self } } pub type nsAutoTObserverArray_elem_type < T > = T ; pub type nsAutoTObserverArray_array_type < T > = root :: nsTArray < T > ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAutoTObserverArray_Iterator { pub _base : root :: nsTObserverArray_base_Iterator_base , pub mArray : * mut root :: nsAutoTObserverArray_Iterator_array_type , } pub type nsAutoTObserverArray_Iterator_array_type = u8 ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAutoTObserverArray_ForwardIterator { pub _base : root :: nsAutoTObserverArray_Iterator , } pub type nsAutoTObserverArray_ForwardIterator_array_type = u8 ; pub type nsAutoTObserverArray_ForwardIterator_base_type = root :: nsAutoTObserverArray_Iterator ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAutoTObserverArray_EndLimitedIterator { pub _base : root :: nsAutoTObserverArray_ForwardIterator , pub mEnd : root :: nsAutoTObserverArray_ForwardIterator , } pub type nsAutoTObserverArray_EndLimitedIterator_array_type = u8 ; pub type nsAutoTObserverArray_EndLimitedIterator_base_type = root :: nsAutoTObserverArray_Iterator ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAutoTObserverArray_BackwardIterator { pub _base : root :: nsAutoTObserverArray_Iterator , } pub type nsAutoTObserverArray_BackwardIterator_array_type = u8 ; pub type nsAutoTObserverArray_BackwardIterator_base_type = root :: nsAutoTObserverArray_Iterator ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTObserverArray { pub _address : u8 , } pub type nsTObserverArray_base_type = u8 ; pub type nsTObserverArray_size_type = root :: nsTObserverArray_base_size_type ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMEventTarget { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMEventTarget_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMEventTarget ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMEventTarget > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMEventTarget ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMEventTarget > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMEventTarget ) ) ) ; } impl Clone for nsIDOMEventTarget { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsAttrChildContentList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsCSSSelectorList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsRange { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RawServoSelectorList { _unused : [ u8 ; 0 ] } pub const NODE_HAS_LISTENERMANAGER : root :: _bindgen_ty_77 = 4 ; pub const NODE_HAS_PROPERTIES : root :: _bindgen_ty_77 = 8 ; pub const NODE_IS_ANONYMOUS_ROOT : root :: _bindgen_ty_77 = 16 ; pub const NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE : root :: _bindgen_ty_77 = 32 ; pub const NODE_IS_NATIVE_ANONYMOUS_ROOT : root :: _bindgen_ty_77 = 64 ; pub const NODE_FORCE_XBL_BINDINGS : root :: _bindgen_ty_77 = 128 ; pub const NODE_MAY_BE_IN_BINDING_MNGR : root :: _bindgen_ty_77 = 256 ; pub const NODE_IS_EDITABLE : root :: _bindgen_ty_77 = 512 ; pub const NODE_IS_NATIVE_ANONYMOUS : root :: _bindgen_ty_77 = 1024 ; pub const NODE_IS_IN_SHADOW_TREE : root :: _bindgen_ty_77 = 2048 ; pub const NODE_HAS_EMPTY_SELECTOR : root :: _bindgen_ty_77 = 4096 ; pub const NODE_HAS_SLOW_SELECTOR : root :: _bindgen_ty_77 = 8192 ; pub const NODE_HAS_EDGE_CHILD_SELECTOR : root :: _bindgen_ty_77 = 16384 ; pub const NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS : root :: _bindgen_ty_77 = 32768 ; pub const NODE_ALL_SELECTOR_FLAGS : root :: _bindgen_ty_77 = 61440 ; pub const NODE_NEEDS_FRAME : root :: _bindgen_ty_77 = 65536 ; pub const NODE_DESCENDANTS_NEED_FRAMES : root :: _bindgen_ty_77 = 131072 ; pub const NODE_HAS_ACCESSKEY : root :: _bindgen_ty_77 = 262144 ; pub const NODE_HAS_DIRECTION_RTL : root :: _bindgen_ty_77 = 524288 ; pub const NODE_HAS_DIRECTION_LTR : root :: _bindgen_ty_77 = 1048576 ; pub const NODE_ALL_DIRECTION_FLAGS : root :: _bindgen_ty_77 = 1572864 ; pub const NODE_CHROME_ONLY_ACCESS : root :: _bindgen_ty_77 = 2097152 ; pub const NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS : root :: _bindgen_ty_77 = 4194304 ; pub const NODE_TYPE_SPECIFIC_BITS_OFFSET : root :: _bindgen_ty_77 = 21 ; pub type _bindgen_ty_77 = :: std :: os :: raw :: c_uint ; - /// An internal interface that abstracts some DOMNode-related parts that both + /// codebase. Include nsWrapperCacheInlines.h if you need to call those methods. + #[repr(C)] + #[derive(Debug)] + pub struct nsWrapperCache { + pub vtable_: *const nsWrapperCache__bindgen_vtable, + pub mWrapper: *mut root::JSObject, + pub mFlags: root::nsWrapperCache_FlagsType, + pub mBoolFlags: u32, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsWrapperCache_COMTypeInfo { + pub _address: u8, + } + pub type nsWrapperCache_FlagsType = u32; + pub const nsWrapperCache_WRAPPER_BIT_PRESERVED: root::nsWrapperCache__bindgen_ty_1 = 1; + pub type nsWrapperCache__bindgen_ty_1 = u32; + pub const nsWrapperCache_WRAPPER_IS_NOT_DOM_BINDING: root::nsWrapperCache__bindgen_ty_2 = 2; + pub type nsWrapperCache__bindgen_ty_2 = u32; + pub const nsWrapperCache_kWrapperFlagsMask: root::nsWrapperCache__bindgen_ty_3 = 3; + pub type nsWrapperCache__bindgen_ty_3 = u32; + #[test] + fn bindgen_test_layout_nsWrapperCache() { + assert_eq!( + ::std::mem::size_of::<nsWrapperCache>(), + 24usize, + concat!("Size of: ", stringify!(nsWrapperCache)) + ); + assert_eq!( + ::std::mem::align_of::<nsWrapperCache>(), + 8usize, + concat!("Alignment of ", stringify!(nsWrapperCache)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsWrapperCache>())).mWrapper as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsWrapperCache), + "::", + stringify!(mWrapper) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsWrapperCache>())).mFlags as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsWrapperCache), + "::", + stringify!(mFlags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsWrapperCache>())).mBoolFlags as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsWrapperCache), + "::", + stringify!(mBoolFlags) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ProfilerBacktrace { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ProfilerMarkerPayload { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ProfilerBacktraceDestructor { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_ProfilerBacktraceDestructor() { + assert_eq!( + ::std::mem::size_of::<ProfilerBacktraceDestructor>(), + 1usize, + concat!("Size of: ", stringify!(ProfilerBacktraceDestructor)) + ); + assert_eq!( + ::std::mem::align_of::<ProfilerBacktraceDestructor>(), + 1usize, + concat!("Alignment of ", stringify!(ProfilerBacktraceDestructor)) + ); + } + impl Clone for ProfilerBacktraceDestructor { + fn clone(&self) -> Self { + *self + } + } + pub type UniqueProfilerBacktrace = root::mozilla::UniquePtr<root::ProfilerBacktrace>; + pub type gfxSize = [u64; 2usize]; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIDOMNode { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDOMNode_COMTypeInfo { + pub _address: u8, + } + pub const nsIDOMNode_ELEMENT_NODE: root::nsIDOMNode__bindgen_ty_1 = 1; + pub const nsIDOMNode_ATTRIBUTE_NODE: root::nsIDOMNode__bindgen_ty_1 = 2; + pub const nsIDOMNode_TEXT_NODE: root::nsIDOMNode__bindgen_ty_1 = 3; + pub const nsIDOMNode_CDATA_SECTION_NODE: root::nsIDOMNode__bindgen_ty_1 = 4; + pub const nsIDOMNode_ENTITY_REFERENCE_NODE: root::nsIDOMNode__bindgen_ty_1 = 5; + pub const nsIDOMNode_ENTITY_NODE: root::nsIDOMNode__bindgen_ty_1 = 6; + pub const nsIDOMNode_PROCESSING_INSTRUCTION_NODE: root::nsIDOMNode__bindgen_ty_1 = 7; + pub const nsIDOMNode_COMMENT_NODE: root::nsIDOMNode__bindgen_ty_1 = 8; + pub const nsIDOMNode_DOCUMENT_NODE: root::nsIDOMNode__bindgen_ty_1 = 9; + pub const nsIDOMNode_DOCUMENT_TYPE_NODE: root::nsIDOMNode__bindgen_ty_1 = 10; + pub const nsIDOMNode_DOCUMENT_FRAGMENT_NODE: root::nsIDOMNode__bindgen_ty_1 = 11; + pub const nsIDOMNode_NOTATION_NODE: root::nsIDOMNode__bindgen_ty_1 = 12; + pub type nsIDOMNode__bindgen_ty_1 = u32; + pub const nsIDOMNode_DOCUMENT_POSITION_DISCONNECTED: root::nsIDOMNode__bindgen_ty_2 = 1; + pub const nsIDOMNode_DOCUMENT_POSITION_PRECEDING: root::nsIDOMNode__bindgen_ty_2 = 2; + pub const nsIDOMNode_DOCUMENT_POSITION_FOLLOWING: root::nsIDOMNode__bindgen_ty_2 = 4; + pub const nsIDOMNode_DOCUMENT_POSITION_CONTAINS: root::nsIDOMNode__bindgen_ty_2 = 8; + pub const nsIDOMNode_DOCUMENT_POSITION_CONTAINED_BY: root::nsIDOMNode__bindgen_ty_2 = 16; + pub const nsIDOMNode_DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: root::nsIDOMNode__bindgen_ty_2 = + 32; + pub type nsIDOMNode__bindgen_ty_2 = u32; + #[test] + fn bindgen_test_layout_nsIDOMNode() { + assert_eq!( + ::std::mem::size_of::<nsIDOMNode>(), + 8usize, + concat!("Size of: ", stringify!(nsIDOMNode)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDOMNode>(), + 8usize, + concat!("Alignment of ", stringify!(nsIDOMNode)) + ); + } + impl Clone for nsIDOMNode { + fn clone(&self) -> Self { + *self + } + } + pub const kNameSpaceID_None: i32 = 0; + pub type PLHashNumber = root::PRUint32; + pub type PLHashFunction = ::std::option::Option< + unsafe extern "C" fn(key: *const ::std::os::raw::c_void) -> root::PLHashNumber, + >; + pub type PLHashComparator = ::std::option::Option< + unsafe extern "C" fn(v1: *const ::std::os::raw::c_void, v2: *const ::std::os::raw::c_void) + -> root::PRIntn, + >; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct PLHashAllocOps { + pub allocTable: ::std::option::Option< + unsafe extern "C" fn(pool: *mut ::std::os::raw::c_void, size: root::PRSize) + -> *mut ::std::os::raw::c_void, + >, + pub freeTable: ::std::option::Option< + unsafe extern "C" fn( + pool: *mut ::std::os::raw::c_void, + item: *mut ::std::os::raw::c_void, + ), + >, + pub allocEntry: ::std::option::Option< + unsafe extern "C" fn( + pool: *mut ::std::os::raw::c_void, + key: *const ::std::os::raw::c_void, + ) -> *mut root::PLHashEntry, + >, + pub freeEntry: ::std::option::Option< + unsafe extern "C" fn( + pool: *mut ::std::os::raw::c_void, + he: *mut root::PLHashEntry, + flag: root::PRUintn, + ), + >, + } + #[test] + fn bindgen_test_layout_PLHashAllocOps() { + assert_eq!( + ::std::mem::size_of::<PLHashAllocOps>(), + 32usize, + concat!("Size of: ", stringify!(PLHashAllocOps)) + ); + assert_eq!( + ::std::mem::align_of::<PLHashAllocOps>(), + 8usize, + concat!("Alignment of ", stringify!(PLHashAllocOps)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashAllocOps>())).allocTable as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PLHashAllocOps), + "::", + stringify!(allocTable) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashAllocOps>())).freeTable as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PLHashAllocOps), + "::", + stringify!(freeTable) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashAllocOps>())).allocEntry as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(PLHashAllocOps), + "::", + stringify!(allocEntry) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashAllocOps>())).freeEntry as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(PLHashAllocOps), + "::", + stringify!(freeEntry) + ) + ); + } + impl Clone for PLHashAllocOps { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct PLHashEntry { + pub next: *mut root::PLHashEntry, + pub keyHash: root::PLHashNumber, + pub key: *const ::std::os::raw::c_void, + pub value: *mut ::std::os::raw::c_void, + } + #[test] + fn bindgen_test_layout_PLHashEntry() { + assert_eq!( + ::std::mem::size_of::<PLHashEntry>(), + 32usize, + concat!("Size of: ", stringify!(PLHashEntry)) + ); + assert_eq!( + ::std::mem::align_of::<PLHashEntry>(), + 8usize, + concat!("Alignment of ", stringify!(PLHashEntry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashEntry>())).next as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PLHashEntry), + "::", + stringify!(next) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashEntry>())).keyHash as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PLHashEntry), + "::", + stringify!(keyHash) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashEntry>())).key as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(PLHashEntry), + "::", + stringify!(key) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashEntry>())).value as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(PLHashEntry), + "::", + stringify!(value) + ) + ); + } + impl Clone for PLHashEntry { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct PLHashTable { + pub buckets: *mut *mut root::PLHashEntry, + pub nentries: root::PRUint32, + pub shift: root::PRUint32, + pub keyHash: root::PLHashFunction, + pub keyCompare: root::PLHashComparator, + pub valueCompare: root::PLHashComparator, + pub allocOps: *const root::PLHashAllocOps, + pub allocPriv: *mut ::std::os::raw::c_void, + } + #[test] + fn bindgen_test_layout_PLHashTable() { + assert_eq!( + ::std::mem::size_of::<PLHashTable>(), + 56usize, + concat!("Size of: ", stringify!(PLHashTable)) + ); + assert_eq!( + ::std::mem::align_of::<PLHashTable>(), + 8usize, + concat!("Alignment of ", stringify!(PLHashTable)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashTable>())).buckets as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(PLHashTable), + "::", + stringify!(buckets) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashTable>())).nentries as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(PLHashTable), + "::", + stringify!(nentries) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashTable>())).shift as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(PLHashTable), + "::", + stringify!(shift) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashTable>())).keyHash as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(PLHashTable), + "::", + stringify!(keyHash) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashTable>())).keyCompare as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(PLHashTable), + "::", + stringify!(keyCompare) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashTable>())).valueCompare as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(PLHashTable), + "::", + stringify!(valueCompare) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashTable>())).allocOps as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(PLHashTable), + "::", + stringify!(allocOps) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<PLHashTable>())).allocPriv as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(PLHashTable), + "::", + stringify!(allocPriv) + ) + ); + } + impl Clone for PLHashTable { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIVariant { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIVariant_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIVariant() { + assert_eq!( + ::std::mem::size_of::<nsIVariant>(), + 8usize, + concat!("Size of: ", stringify!(nsIVariant)) + ); + assert_eq!( + ::std::mem::align_of::<nsIVariant>(), + 8usize, + concat!("Alignment of ", stringify!(nsIVariant)) + ); + } + impl Clone for nsIVariant { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct nsNodeInfoManager { + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mNodeInfoHash: *mut root::PLHashTable, + pub mDocument: *mut root::nsIDocument, + pub mNonDocumentNodeInfos: u32, + pub mPrincipal: root::nsCOMPtr, + pub mDefaultPrincipal: root::nsCOMPtr, + pub mTextNodeInfo: *mut root::mozilla::dom::NodeInfo, + pub mCommentNodeInfo: *mut root::mozilla::dom::NodeInfo, + pub mDocumentNodeInfo: *mut root::mozilla::dom::NodeInfo, + pub mBindingManager: root::RefPtr<root::nsBindingManager>, + pub mRecentlyUsedNodeInfos: [*mut root::mozilla::dom::NodeInfo; 31usize], + pub mSVGEnabled: root::nsNodeInfoManager_Tri, + pub mMathMLEnabled: root::nsNodeInfoManager_Tri, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsNodeInfoManager_cycleCollection { + pub _base: root::nsCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_nsNodeInfoManager_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<nsNodeInfoManager_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(nsNodeInfoManager_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<nsNodeInfoManager_cycleCollection>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsNodeInfoManager_cycleCollection) + ) + ); + } + impl Clone for nsNodeInfoManager_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + pub type nsNodeInfoManager_HasThreadSafeRefCnt = root::mozilla::FalseType; + pub const nsNodeInfoManager_Tri_eTriUnset: root::nsNodeInfoManager_Tri = 0; + pub const nsNodeInfoManager_Tri_eTriFalse: root::nsNodeInfoManager_Tri = 1; + pub const nsNodeInfoManager_Tri_eTriTrue: root::nsNodeInfoManager_Tri = 2; + pub type nsNodeInfoManager_Tri = u32; + extern "C" { + #[link_name = "\u{1}_ZN17nsNodeInfoManager21_cycleCollectorGlobalE"] + pub static mut nsNodeInfoManager__cycleCollectorGlobal: + root::nsNodeInfoManager_cycleCollection; + } + #[test] + fn bindgen_test_layout_nsNodeInfoManager() { + assert_eq!( + ::std::mem::size_of::<nsNodeInfoManager>(), + 336usize, + concat!("Size of: ", stringify!(nsNodeInfoManager)) + ); + assert_eq!( + ::std::mem::align_of::<nsNodeInfoManager>(), + 8usize, + concat!("Alignment of ", stringify!(nsNodeInfoManager)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsNodeInfoManager>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mNodeInfoHash as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mNodeInfoHash) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsNodeInfoManager>())).mDocument as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mDocument) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mNonDocumentNodeInfos as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mNonDocumentNodeInfos) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mPrincipal as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mPrincipal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mDefaultPrincipal as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mDefaultPrincipal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mTextNodeInfo as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mTextNodeInfo) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mCommentNodeInfo as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mCommentNodeInfo) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mDocumentNodeInfo as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mDocumentNodeInfo) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mBindingManager as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mBindingManager) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mRecentlyUsedNodeInfos as *const _ + as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mRecentlyUsedNodeInfos) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mSVGEnabled as *const _ as usize + }, + 328usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mSVGEnabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNodeInfoManager>())).mMathMLEnabled as *const _ as usize + }, + 332usize, + concat!( + "Offset of field: ", + stringify!(nsNodeInfoManager), + "::", + stringify!(mMathMLEnabled) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsPropertyTable { + pub mPropertyList: *mut root::nsPropertyTable_PropertyList, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsPropertyTable_PropertyList { + _unused: [u8; 0], + } + #[test] + fn bindgen_test_layout_nsPropertyTable() { + assert_eq!( + ::std::mem::size_of::<nsPropertyTable>(), + 8usize, + concat!("Size of: ", stringify!(nsPropertyTable)) + ); + assert_eq!( + ::std::mem::align_of::<nsPropertyTable>(), + 8usize, + concat!("Alignment of ", stringify!(nsPropertyTable)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPropertyTable>())).mPropertyList as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsPropertyTable), + "::", + stringify!(mPropertyList) + ) + ); + } + pub type nsTObserverArray_base_index_type = usize; + pub type nsTObserverArray_base_size_type = usize; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsTObserverArray_base_Iterator_base { + pub mPosition: root::nsTObserverArray_base_index_type, + pub mNext: *mut root::nsTObserverArray_base_Iterator_base, + } + #[test] + fn bindgen_test_layout_nsTObserverArray_base_Iterator_base() { + assert_eq!( + ::std::mem::size_of::<nsTObserverArray_base_Iterator_base>(), + 16usize, + concat!("Size of: ", stringify!(nsTObserverArray_base_Iterator_base)) + ); + assert_eq!( + ::std::mem::align_of::<nsTObserverArray_base_Iterator_base>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsTObserverArray_base_Iterator_base) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsTObserverArray_base_Iterator_base>())).mPosition + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsTObserverArray_base_Iterator_base), + "::", + stringify!(mPosition) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsTObserverArray_base_Iterator_base>())).mNext as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsTObserverArray_base_Iterator_base), + "::", + stringify!(mNext) + ) + ); + } + impl Clone for nsTObserverArray_base_Iterator_base { + fn clone(&self) -> Self { + *self + } + } + pub type nsAutoTObserverArray_elem_type<T> = T; + pub type nsAutoTObserverArray_array_type<T> = root::nsTArray<T>; + #[repr(C)] + #[derive(Debug)] + pub struct nsAutoTObserverArray_Iterator { + pub _base: root::nsTObserverArray_base_Iterator_base, + pub mArray: *mut root::nsAutoTObserverArray_Iterator_array_type, + } + pub type nsAutoTObserverArray_Iterator_array_type = u8; + #[repr(C)] + #[derive(Debug)] + pub struct nsAutoTObserverArray_ForwardIterator { + pub _base: root::nsAutoTObserverArray_Iterator, + } + pub type nsAutoTObserverArray_ForwardIterator_array_type = u8; + pub type nsAutoTObserverArray_ForwardIterator_base_type = root::nsAutoTObserverArray_Iterator; + #[repr(C)] + #[derive(Debug)] + pub struct nsAutoTObserverArray_EndLimitedIterator { + pub _base: root::nsAutoTObserverArray_ForwardIterator, + pub mEnd: root::nsAutoTObserverArray_ForwardIterator, + } + pub type nsAutoTObserverArray_EndLimitedIterator_array_type = u8; + pub type nsAutoTObserverArray_EndLimitedIterator_base_type = + root::nsAutoTObserverArray_Iterator; + #[repr(C)] + #[derive(Debug)] + pub struct nsAutoTObserverArray_BackwardIterator { + pub _base: root::nsAutoTObserverArray_Iterator, + } + pub type nsAutoTObserverArray_BackwardIterator_array_type = u8; + pub type nsAutoTObserverArray_BackwardIterator_base_type = root::nsAutoTObserverArray_Iterator; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTObserverArray { + pub _address: u8, + } + pub type nsTObserverArray_base_type = u8; + pub type nsTObserverArray_size_type = root::nsTObserverArray_base_size_type; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIDOMEventTarget { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDOMEventTarget_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIDOMEventTarget() { + assert_eq!( + ::std::mem::size_of::<nsIDOMEventTarget>(), + 8usize, + concat!("Size of: ", stringify!(nsIDOMEventTarget)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDOMEventTarget>(), + 8usize, + concat!("Alignment of ", stringify!(nsIDOMEventTarget)) + ); + } + impl Clone for nsIDOMEventTarget { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsAttrChildContentList { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsCSSSelectorList { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsRange { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RawServoSelectorList { + _unused: [u8; 0], + } + pub const NODE_HAS_LISTENERMANAGER: root::_bindgen_ty_77 = 4; + pub const NODE_HAS_PROPERTIES: root::_bindgen_ty_77 = 8; + pub const NODE_IS_ANONYMOUS_ROOT: root::_bindgen_ty_77 = 16; + pub const NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE: root::_bindgen_ty_77 = 32; + pub const NODE_IS_NATIVE_ANONYMOUS_ROOT: root::_bindgen_ty_77 = 64; + pub const NODE_FORCE_XBL_BINDINGS: root::_bindgen_ty_77 = 128; + pub const NODE_MAY_BE_IN_BINDING_MNGR: root::_bindgen_ty_77 = 256; + pub const NODE_IS_EDITABLE: root::_bindgen_ty_77 = 512; + pub const NODE_IS_NATIVE_ANONYMOUS: root::_bindgen_ty_77 = 1024; + pub const NODE_IS_IN_SHADOW_TREE: root::_bindgen_ty_77 = 2048; + pub const NODE_HAS_EMPTY_SELECTOR: root::_bindgen_ty_77 = 4096; + pub const NODE_HAS_SLOW_SELECTOR: root::_bindgen_ty_77 = 8192; + pub const NODE_HAS_EDGE_CHILD_SELECTOR: root::_bindgen_ty_77 = 16384; + pub const NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS: root::_bindgen_ty_77 = 32768; + pub const NODE_ALL_SELECTOR_FLAGS: root::_bindgen_ty_77 = 61440; + pub const NODE_NEEDS_FRAME: root::_bindgen_ty_77 = 65536; + pub const NODE_DESCENDANTS_NEED_FRAMES: root::_bindgen_ty_77 = 131072; + pub const NODE_HAS_ACCESSKEY: root::_bindgen_ty_77 = 262144; + pub const NODE_HAS_DIRECTION_RTL: root::_bindgen_ty_77 = 524288; + pub const NODE_HAS_DIRECTION_LTR: root::_bindgen_ty_77 = 1048576; + pub const NODE_ALL_DIRECTION_FLAGS: root::_bindgen_ty_77 = 1572864; + pub const NODE_CHROME_ONLY_ACCESS: root::_bindgen_ty_77 = 2097152; + pub const NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS: root::_bindgen_ty_77 = 4194304; + pub const NODE_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_77 = 21; + pub type _bindgen_ty_77 = u32; + /// An internal interface that abstracts some DOMNode-related parts that both /// nsIContent and nsIDocument share. An instance of this interface has a list - /// of nsIContent children and provides access to them. - # [ repr ( C ) ] pub struct nsINode { pub _base : root :: mozilla :: dom :: EventTarget , pub mNodeInfo : root :: RefPtr < root :: mozilla :: dom :: NodeInfo > , pub mParent : * mut root :: nsINode , pub mNextSibling : * mut root :: nsIContent , pub mPreviousSibling : * mut root :: nsIContent , pub mFirstChild : * mut root :: nsIContent , pub __bindgen_anon_1 : root :: nsINode__bindgen_ty_1 , pub mSlots : * mut root :: nsINode_nsSlots , } pub type nsINode_BoxQuadOptions = root :: mozilla :: dom :: BoxQuadOptions ; pub type nsINode_ConvertCoordinateOptions = root :: mozilla :: dom :: ConvertCoordinateOptions ; pub type nsINode_DocGroup = root :: mozilla :: dom :: DocGroup ; pub type nsINode_DOMPoint = root :: mozilla :: dom :: DOMPoint ; pub type nsINode_DOMPointInit = root :: mozilla :: dom :: DOMPointInit ; pub type nsINode_DOMQuad = root :: mozilla :: dom :: DOMQuad ; pub type nsINode_DOMRectReadOnly = root :: mozilla :: dom :: DOMRectReadOnly ; pub type nsINode_OwningNodeOrString = root :: mozilla :: dom :: OwningNodeOrString ; pub type nsINode_TextOrElementOrDocument = root :: mozilla :: dom :: TextOrElementOrDocument ; pub use self :: super :: root :: mozilla :: dom :: CallerType as nsINode_CallerType ; pub type nsINode_Sequence = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsINode_COMTypeInfo { pub _address : u8 , } pub const nsINode_eDOCUMENT : root :: nsINode__bindgen_ty_2 = 2 ; pub const nsINode_eATTRIBUTE : root :: nsINode__bindgen_ty_2 = 4 ; pub const nsINode_eTEXT : root :: nsINode__bindgen_ty_2 = 8 ; pub const nsINode_ePROCESSING_INSTRUCTION : root :: nsINode__bindgen_ty_2 = 16 ; pub const nsINode_eCOMMENT : root :: nsINode__bindgen_ty_2 = 32 ; pub const nsINode_eHTML_FORM_CONTROL : root :: nsINode__bindgen_ty_2 = 64 ; pub const nsINode_eDOCUMENT_FRAGMENT : root :: nsINode__bindgen_ty_2 = 128 ; pub const nsINode_eDATA_NODE : root :: nsINode__bindgen_ty_2 = 256 ; pub const nsINode_eMEDIA : root :: nsINode__bindgen_ty_2 = 512 ; pub const nsINode_eANIMATION : root :: nsINode__bindgen_ty_2 = 1024 ; pub const nsINode_eFILTER : root :: nsINode__bindgen_ty_2 = 2048 ; pub type nsINode__bindgen_ty_2 = :: std :: os :: raw :: c_uint ; pub const nsINode_FlattenedParentType_eNotForStyle : root :: nsINode_FlattenedParentType = 0 ; pub const nsINode_FlattenedParentType_eForStyle : root :: nsINode_FlattenedParentType = 1 ; pub type nsINode_FlattenedParentType = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] pub struct nsINode_nsSlots__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsINode_nsSlots { pub vtable_ : * const nsINode_nsSlots__bindgen_vtable , - /// A list of mutation observers - pub mMutationObservers : [ u64 ; 4usize ] , - /// An object implementing nsIDOMNodeList for this content (childNodes) + /// of nsIContent children and provides access to them. + #[repr(C)] + pub struct nsINode { + pub _base: root::mozilla::dom::EventTarget, + pub mNodeInfo: root::RefPtr<root::mozilla::dom::NodeInfo>, + pub mParent: *mut root::nsINode, + pub mNextSibling: *mut root::nsIContent, + pub mPreviousSibling: *mut root::nsIContent, + pub mFirstChild: *mut root::nsIContent, + pub __bindgen_anon_1: root::nsINode__bindgen_ty_1, + pub mSlots: *mut root::nsINode_nsSlots, + } + pub type nsINode_BoxQuadOptions = root::mozilla::dom::BoxQuadOptions; + pub type nsINode_ConvertCoordinateOptions = root::mozilla::dom::ConvertCoordinateOptions; + pub type nsINode_DocGroup = root::mozilla::dom::DocGroup; + pub type nsINode_DOMPoint = root::mozilla::dom::DOMPoint; + pub type nsINode_DOMPointInit = root::mozilla::dom::DOMPointInit; + pub type nsINode_DOMQuad = root::mozilla::dom::DOMQuad; + pub type nsINode_DOMRectReadOnly = root::mozilla::dom::DOMRectReadOnly; + pub type nsINode_OwningNodeOrString = root::mozilla::dom::OwningNodeOrString; + pub type nsINode_TextOrElementOrDocument = root::mozilla::dom::TextOrElementOrDocument; + pub use self::super::root::mozilla::dom::CallerType as nsINode_CallerType; + pub type nsINode_Sequence = u8; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsINode_COMTypeInfo { + pub _address: u8, + } + pub const nsINode_eDOCUMENT: root::nsINode__bindgen_ty_2 = 2; + pub const nsINode_eATTRIBUTE: root::nsINode__bindgen_ty_2 = 4; + pub const nsINode_eTEXT: root::nsINode__bindgen_ty_2 = 8; + pub const nsINode_ePROCESSING_INSTRUCTION: root::nsINode__bindgen_ty_2 = 16; + pub const nsINode_eCOMMENT: root::nsINode__bindgen_ty_2 = 32; + pub const nsINode_eHTML_FORM_CONTROL: root::nsINode__bindgen_ty_2 = 64; + pub const nsINode_eDOCUMENT_FRAGMENT: root::nsINode__bindgen_ty_2 = 128; + pub const nsINode_eDATA_NODE: root::nsINode__bindgen_ty_2 = 256; + pub const nsINode_eMEDIA: root::nsINode__bindgen_ty_2 = 512; + pub const nsINode_eANIMATION: root::nsINode__bindgen_ty_2 = 1024; + pub const nsINode_eFILTER: root::nsINode__bindgen_ty_2 = 2048; + pub type nsINode__bindgen_ty_2 = u32; + pub const nsINode_FlattenedParentType_eNotForStyle: root::nsINode_FlattenedParentType = 0; + pub const nsINode_FlattenedParentType_eForStyle: root::nsINode_FlattenedParentType = 1; + pub type nsINode_FlattenedParentType = u32; + #[repr(C)] + pub struct nsINode_nsSlots__bindgen_vtable(::std::os::raw::c_void); + #[repr(C)] + #[derive(Debug)] + pub struct nsINode_nsSlots { + pub vtable_: *const nsINode_nsSlots__bindgen_vtable, + /// A list of mutation observers + pub mMutationObservers: [u64; 4usize], + /// An object implementing nsIDOMNodeList for this content (childNodes) /// @see nsIDOMNodeList - /// @see nsGenericHTMLElement::GetChildNodes - pub mChildNodes : root :: RefPtr < root :: nsAttrChildContentList > , - /// Weak reference to this node. This is cleared by the destructor of - /// nsNodeWeakReference. - pub mWeakReference : * mut root :: nsNodeWeakReference , - /// A set of ranges which are in the selection and which have this node as + /// @see nsGenericHTMLElement::GetChildNodes + pub mChildNodes: root::RefPtr<root::nsAttrChildContentList>, + /// Weak reference to this node. This is cleared by the destructor of + /// nsNodeWeakReference. + pub mWeakReference: *mut root::nsNodeWeakReference, + /// A set of ranges which are in the selection and which have this node as /// their endpoints' common ancestor. This is a UniquePtr instead of just a /// LinkedList, because that prevents us from pushing DOMSlots up to the next - /// allocation bucket size, at the cost of some complexity. - pub mCommonAncestorRanges : root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > , - /// Number of descendant nodes in the uncomposed document that have been - /// explicitly set as editable. - pub mEditableDescendantCount : u32 , } # [ test ] fn bindgen_test_layout_nsINode_nsSlots ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsINode_nsSlots > ( ) , 72usize , concat ! ( "Size of: " , stringify ! ( nsINode_nsSlots ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsINode_nsSlots > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsINode_nsSlots ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode_nsSlots ) ) . mMutationObservers as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode_nsSlots ) , "::" , stringify ! ( mMutationObservers ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode_nsSlots ) ) . mChildNodes as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode_nsSlots ) , "::" , stringify ! ( mChildNodes ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode_nsSlots ) ) . mWeakReference as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode_nsSlots ) , "::" , stringify ! ( mWeakReference ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode_nsSlots ) ) . mCommonAncestorRanges as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode_nsSlots ) , "::" , stringify ! ( mCommonAncestorRanges ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode_nsSlots ) ) . mEditableDescendantCount as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode_nsSlots ) , "::" , stringify ! ( mEditableDescendantCount ) ) ) ; } # [ repr ( u32 ) ] - /// Boolean flags - # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsINode_BooleanFlag { NodeHasRenderingObservers = 0 , IsInDocument = 1 , ParentIsContent = 2 , NodeIsElement = 3 , ElementHasID = 4 , ElementMayHaveClass = 5 , ElementMayHaveStyle = 6 , ElementHasName = 7 , ElementMayHaveContentEditableAttr = 8 , NodeIsCommonAncestorForRangeInSelection = 9 , NodeIsDescendantOfCommonAncestorForRangeInSelection = 10 , NodeIsCCMarkedRoot = 11 , NodeIsCCBlackTree = 12 , NodeIsPurpleRoot = 13 , ElementHasLockedStyleStates = 14 , ElementHasPointerLock = 15 , NodeMayHaveDOMMutationObserver = 16 , NodeIsContent = 17 , ElementHasAnimations = 18 , NodeHasValidDirAttribute = 19 , NodeHasDirAutoSet = 20 , NodeHasTextNodeDirectionalityMap = 21 , NodeAncestorHasDirAuto = 22 , ElementIsInStyleScope = 23 , ElementIsScopedStyleRoot = 24 , NodeHandlingClick = 25 , NodeHasRelevantHoverRules = 26 , ElementHasWeirdParserInsertionMode = 27 , ParserHasNotified = 28 , MayBeApzAware = 29 , ElementMayHaveAnonymousChildren = 30 , NodeMayHaveChildrenWithLayoutBoxesDisabled = 31 , BooleanFlagCount = 32 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsINode__bindgen_ty_1 { pub mPrimaryFrame : root :: __BindgenUnionField < * mut root :: nsIFrame > , pub mSubtreeRoot : root :: __BindgenUnionField < * mut root :: nsINode > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsINode__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsINode__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsINode__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsINode__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsINode__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode__bindgen_ty_1 ) ) . mPrimaryFrame as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode__bindgen_ty_1 ) , "::" , stringify ! ( mPrimaryFrame ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode__bindgen_ty_1 ) ) . mSubtreeRoot as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode__bindgen_ty_1 ) , "::" , stringify ! ( mSubtreeRoot ) ) ) ; } impl Clone for nsINode__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsINode ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsINode > ( ) , 88usize , concat ! ( "Size of: " , stringify ! ( nsINode ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsINode > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsINode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode ) ) . mNodeInfo as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode ) , "::" , stringify ! ( mNodeInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode ) ) . mParent as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode ) , "::" , stringify ! ( mParent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode ) ) . mNextSibling as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode ) , "::" , stringify ! ( mNextSibling ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode ) ) . mPreviousSibling as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode ) , "::" , stringify ! ( mPreviousSibling ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode ) ) . mFirstChild as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode ) , "::" , stringify ! ( mFirstChild ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsINode ) ) . mSlots as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsINode ) , "::" , stringify ! ( mSlots ) ) ) ; } - /// Functions to create content, to be used only inside Gecko - /// (mozilla/content and mozilla/layout). - # [ repr ( C ) ] pub struct nsIContent { pub _base : root :: nsINode , } pub type nsIContent_IMEState = root :: mozilla :: widget :: IMEState ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIContent_COMTypeInfo { pub _address : u8 , } pub const nsIContent_eAllChildren : root :: nsIContent__bindgen_ty_1 = 0 ; pub const nsIContent_eAllButXBL : root :: nsIContent__bindgen_ty_1 = 1 ; pub const nsIContent_eSkipPlaceholderContent : root :: nsIContent__bindgen_ty_1 = 2 ; pub const nsIContent_eSkipDocumentLevelNativeAnonymousContent : root :: nsIContent__bindgen_ty_1 = 4 ; pub type nsIContent__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] pub struct nsIContent_nsExtendedContentSlots__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; - /// Lazily allocated extended slots to avoid + /// allocation bucket size, at the cost of some complexity. + pub mCommonAncestorRanges: root::mozilla::UniquePtr<root::mozilla::LinkedList>, + /// Number of descendant nodes in the uncomposed document that have been + /// explicitly set as editable. + pub mEditableDescendantCount: u32, + } + #[test] + fn bindgen_test_layout_nsINode_nsSlots() { + assert_eq!( + ::std::mem::size_of::<nsINode_nsSlots>(), + 72usize, + concat!("Size of: ", stringify!(nsINode_nsSlots)) + ); + assert_eq!( + ::std::mem::align_of::<nsINode_nsSlots>(), + 8usize, + concat!("Alignment of ", stringify!(nsINode_nsSlots)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsINode_nsSlots>())).mMutationObservers as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsINode_nsSlots), + "::", + stringify!(mMutationObservers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsINode_nsSlots>())).mChildNodes as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsINode_nsSlots), + "::", + stringify!(mChildNodes) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsINode_nsSlots>())).mWeakReference as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsINode_nsSlots), + "::", + stringify!(mWeakReference) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsINode_nsSlots>())).mCommonAncestorRanges as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsINode_nsSlots), + "::", + stringify!(mCommonAncestorRanges) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsINode_nsSlots>())).mEditableDescendantCount as *const _ + as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsINode_nsSlots), + "::", + stringify!(mEditableDescendantCount) + ) + ); + } + #[repr(u32)] + /// Boolean flags + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsINode_BooleanFlag { + NodeHasRenderingObservers = 0, + IsInDocument = 1, + ParentIsContent = 2, + NodeIsElement = 3, + ElementHasID = 4, + ElementMayHaveClass = 5, + ElementMayHaveStyle = 6, + ElementHasName = 7, + ElementMayHaveContentEditableAttr = 8, + NodeIsCommonAncestorForRangeInSelection = 9, + NodeIsDescendantOfCommonAncestorForRangeInSelection = 10, + NodeIsCCMarkedRoot = 11, + NodeIsCCBlackTree = 12, + NodeIsPurpleRoot = 13, + ElementHasLockedStyleStates = 14, + ElementHasPointerLock = 15, + NodeMayHaveDOMMutationObserver = 16, + NodeIsContent = 17, + ElementHasAnimations = 18, + NodeHasValidDirAttribute = 19, + NodeHasDirAutoSet = 20, + NodeHasTextNodeDirectionalityMap = 21, + NodeAncestorHasDirAuto = 22, + ElementIsInStyleScope = 23, + ElementIsScopedStyleRoot = 24, + NodeHandlingClick = 25, + NodeHasRelevantHoverRules = 26, + ElementHasWeirdParserInsertionMode = 27, + ParserHasNotified = 28, + MayBeApzAware = 29, + ElementMayHaveAnonymousChildren = 30, + NodeMayHaveChildrenWithLayoutBoxesDisabled = 31, + BooleanFlagCount = 32, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsINode__bindgen_ty_1 { + pub mPrimaryFrame: root::__BindgenUnionField<*mut root::nsIFrame>, + pub mSubtreeRoot: root::__BindgenUnionField<*mut root::nsINode>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsINode__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsINode__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(nsINode__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsINode__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(nsINode__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsINode__bindgen_ty_1>())).mPrimaryFrame as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsINode__bindgen_ty_1), + "::", + stringify!(mPrimaryFrame) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsINode__bindgen_ty_1>())).mSubtreeRoot as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsINode__bindgen_ty_1), + "::", + stringify!(mSubtreeRoot) + ) + ); + } + impl Clone for nsINode__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsINode() { + assert_eq!( + ::std::mem::size_of::<nsINode>(), + 88usize, + concat!("Size of: ", stringify!(nsINode)) + ); + assert_eq!( + ::std::mem::align_of::<nsINode>(), + 8usize, + concat!("Alignment of ", stringify!(nsINode)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsINode>())).mNodeInfo as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsINode), + "::", + stringify!(mNodeInfo) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsINode>())).mParent as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsINode), + "::", + stringify!(mParent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsINode>())).mNextSibling as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsINode), + "::", + stringify!(mNextSibling) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsINode>())).mPreviousSibling as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsINode), + "::", + stringify!(mPreviousSibling) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsINode>())).mFirstChild as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsINode), + "::", + stringify!(mFirstChild) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsINode>())).mSlots as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsINode), + "::", + stringify!(mSlots) + ) + ); + } + /// Functions to create content, to be used only inside Gecko + /// (mozilla/content and mozilla/layout). + #[repr(C)] + pub struct nsIContent { + pub _base: root::nsINode, + } + pub type nsIContent_IMEState = root::mozilla::widget::IMEState; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIContent_COMTypeInfo { + pub _address: u8, + } + pub const nsIContent_eAllChildren: root::nsIContent__bindgen_ty_1 = 0; + pub const nsIContent_eAllButXBL: root::nsIContent__bindgen_ty_1 = 1; + pub const nsIContent_eSkipPlaceholderContent: root::nsIContent__bindgen_ty_1 = 2; + pub const nsIContent_eSkipDocumentLevelNativeAnonymousContent: root::nsIContent__bindgen_ty_1 = + 4; + pub type nsIContent__bindgen_ty_1 = u32; + #[repr(C)] + pub struct nsIContent_nsExtendedContentSlots__bindgen_vtable(::std::os::raw::c_void); + /// Lazily allocated extended slots to avoid /// that may only be instantiated when a content object is accessed /// through the DOM. Rather than burn actual slots in the content /// objects for each of these instance variables, we put them off /// in a side structure that's only allocated when the content is - /// accessed through the DOM. - # [ repr ( C ) ] pub struct nsIContent_nsExtendedContentSlots { pub vtable_ : * const nsIContent_nsExtendedContentSlots__bindgen_vtable , - /// The nearest enclosing content node with a binding that created us. - /// @see nsIContent::GetBindingParent - pub mBindingParent : * mut root :: nsIContent , - /// @see nsIContent::GetXBLInsertionPoint - pub mXBLInsertionPoint : root :: nsCOMPtr , - /// @see nsIContent::GetContainingShadow - pub mContainingShadow : root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > , - /// @see nsIContent::GetAssignedSlot - pub mAssignedSlot : root :: RefPtr < root :: mozilla :: dom :: HTMLSlotElement > , } # [ test ] fn bindgen_test_layout_nsIContent_nsExtendedContentSlots ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIContent_nsExtendedContentSlots > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsIContent_nsExtendedContentSlots ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIContent_nsExtendedContentSlots > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIContent_nsExtendedContentSlots ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIContent_nsExtendedContentSlots ) ) . mBindingParent as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIContent_nsExtendedContentSlots ) , "::" , stringify ! ( mBindingParent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIContent_nsExtendedContentSlots ) ) . mXBLInsertionPoint as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsIContent_nsExtendedContentSlots ) , "::" , stringify ! ( mXBLInsertionPoint ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIContent_nsExtendedContentSlots ) ) . mContainingShadow as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsIContent_nsExtendedContentSlots ) , "::" , stringify ! ( mContainingShadow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIContent_nsExtendedContentSlots ) ) . mAssignedSlot as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsIContent_nsExtendedContentSlots ) , "::" , stringify ! ( mAssignedSlot ) ) ) ; } # [ repr ( C ) ] pub struct nsIContent_nsContentSlots { pub _base : root :: nsINode_nsSlots , pub mExtendedSlots : root :: mozilla :: UniquePtr < root :: nsIContent_nsExtendedContentSlots > , } # [ test ] fn bindgen_test_layout_nsIContent_nsContentSlots ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIContent_nsContentSlots > ( ) , 80usize , concat ! ( "Size of: " , stringify ! ( nsIContent_nsContentSlots ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIContent_nsContentSlots > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIContent_nsContentSlots ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIContent_nsContentSlots ) ) . mExtendedSlots as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsIContent_nsContentSlots ) , "::" , stringify ! ( mExtendedSlots ) ) ) ; } pub const nsIContent_ETabFocusType_eTabFocus_textControlsMask : root :: nsIContent_ETabFocusType = 1 ; pub const nsIContent_ETabFocusType_eTabFocus_formElementsMask : root :: nsIContent_ETabFocusType = 2 ; pub const nsIContent_ETabFocusType_eTabFocus_linksMask : root :: nsIContent_ETabFocusType = 4 ; pub const nsIContent_ETabFocusType_eTabFocus_any : root :: nsIContent_ETabFocusType = 7 ; pub type nsIContent_ETabFocusType = :: std :: os :: raw :: c_uint ; extern "C" { - # [ link_name = "\u{1}_ZN10nsIContent14sTabFocusModelE" ] - pub static mut nsIContent_sTabFocusModel : i32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsIContent26sTabFocusModelAppliesToXULE" ] - pub static mut nsIContent_sTabFocusModelAppliesToXUL : bool ; -} # [ test ] fn bindgen_test_layout_nsIContent ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIContent > ( ) , 88usize , concat ! ( "Size of: " , stringify ! ( nsIContent ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIContent > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIContent ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsFrameManagerBase { pub mPresShell : * mut root :: nsIPresShell , pub mRootFrame : * mut root :: nsIFrame , pub mDisplayNoneMap : * mut root :: nsFrameManagerBase_UndisplayedMap , pub mDisplayContentsMap : * mut root :: nsFrameManagerBase_UndisplayedMap , pub mIsDestroyingFrames : bool , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsFrameManagerBase_UndisplayedMap { _unused : [ u8 ; 0 ] } # [ test ] fn bindgen_test_layout_nsFrameManagerBase ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsFrameManagerBase > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsFrameManagerBase ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsFrameManagerBase > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsFrameManagerBase ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFrameManagerBase ) ) . mPresShell as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsFrameManagerBase ) , "::" , stringify ! ( mPresShell ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFrameManagerBase ) ) . mRootFrame as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsFrameManagerBase ) , "::" , stringify ! ( mRootFrame ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFrameManagerBase ) ) . mDisplayNoneMap as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsFrameManagerBase ) , "::" , stringify ! ( mDisplayNoneMap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFrameManagerBase ) ) . mDisplayContentsMap as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsFrameManagerBase ) , "::" , stringify ! ( mDisplayContentsMap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFrameManagerBase ) ) . mIsDestroyingFrames as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsFrameManagerBase ) , "::" , stringify ! ( mIsDestroyingFrames ) ) ) ; } impl Clone for nsFrameManagerBase { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIWeakReference { pub _base : root :: nsISupports , pub mObject : * mut root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIWeakReference_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIWeakReference ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIWeakReference > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsIWeakReference ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIWeakReference > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIWeakReference ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIWeakReference ) ) . mObject as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIWeakReference ) , "::" , stringify ! ( mObject ) ) ) ; } impl Clone for nsIWeakReference { fn clone ( & self ) -> Self { * self } } pub type nsWeakPtr = root :: nsCOMPtr ; - /// templated hashtable class maps keys to reference pointers. + /// accessed through the DOM. + #[repr(C)] + pub struct nsIContent_nsExtendedContentSlots { + pub vtable_: *const nsIContent_nsExtendedContentSlots__bindgen_vtable, + /// The nearest enclosing content node with a binding that created us. + /// @see nsIContent::GetBindingParent + pub mBindingParent: *mut root::nsIContent, + /// @see nsIContent::GetXBLInsertionPoint + pub mXBLInsertionPoint: root::nsCOMPtr, + /// @see nsIContent::GetContainingShadow + pub mContainingShadow: root::RefPtr<root::mozilla::dom::ShadowRoot>, + /// @see nsIContent::GetAssignedSlot + pub mAssignedSlot: root::RefPtr<root::mozilla::dom::HTMLSlotElement>, + } + #[test] + fn bindgen_test_layout_nsIContent_nsExtendedContentSlots() { + assert_eq!( + ::std::mem::size_of::<nsIContent_nsExtendedContentSlots>(), + 40usize, + concat!("Size of: ", stringify!(nsIContent_nsExtendedContentSlots)) + ); + assert_eq!( + ::std::mem::align_of::<nsIContent_nsExtendedContentSlots>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsIContent_nsExtendedContentSlots) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIContent_nsExtendedContentSlots>())).mBindingParent + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIContent_nsExtendedContentSlots), + "::", + stringify!(mBindingParent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIContent_nsExtendedContentSlots>())).mXBLInsertionPoint + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsIContent_nsExtendedContentSlots), + "::", + stringify!(mXBLInsertionPoint) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIContent_nsExtendedContentSlots>())).mContainingShadow + as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsIContent_nsExtendedContentSlots), + "::", + stringify!(mContainingShadow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIContent_nsExtendedContentSlots>())).mAssignedSlot + as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsIContent_nsExtendedContentSlots), + "::", + stringify!(mAssignedSlot) + ) + ); + } + #[repr(C)] + pub struct nsIContent_nsContentSlots { + pub _base: root::nsINode_nsSlots, + pub mExtendedSlots: root::mozilla::UniquePtr<root::nsIContent_nsExtendedContentSlots>, + } + #[test] + fn bindgen_test_layout_nsIContent_nsContentSlots() { + assert_eq!( + ::std::mem::size_of::<nsIContent_nsContentSlots>(), + 80usize, + concat!("Size of: ", stringify!(nsIContent_nsContentSlots)) + ); + assert_eq!( + ::std::mem::align_of::<nsIContent_nsContentSlots>(), + 8usize, + concat!("Alignment of ", stringify!(nsIContent_nsContentSlots)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIContent_nsContentSlots>())).mExtendedSlots as *const _ + as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsIContent_nsContentSlots), + "::", + stringify!(mExtendedSlots) + ) + ); + } + pub const nsIContent_ETabFocusType_eTabFocus_textControlsMask: root::nsIContent_ETabFocusType = + 1; + pub const nsIContent_ETabFocusType_eTabFocus_formElementsMask: root::nsIContent_ETabFocusType = + 2; + pub const nsIContent_ETabFocusType_eTabFocus_linksMask: root::nsIContent_ETabFocusType = 4; + pub const nsIContent_ETabFocusType_eTabFocus_any: root::nsIContent_ETabFocusType = 7; + pub type nsIContent_ETabFocusType = u32; + extern "C" { + #[link_name = "\u{1}_ZN10nsIContent14sTabFocusModelE"] + pub static mut nsIContent_sTabFocusModel: i32; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsIContent26sTabFocusModelAppliesToXULE"] + pub static mut nsIContent_sTabFocusModelAppliesToXUL: bool; + } + #[test] + fn bindgen_test_layout_nsIContent() { + assert_eq!( + ::std::mem::size_of::<nsIContent>(), + 88usize, + concat!("Size of: ", stringify!(nsIContent)) + ); + assert_eq!( + ::std::mem::align_of::<nsIContent>(), + 8usize, + concat!("Alignment of ", stringify!(nsIContent)) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsFrameManagerBase { + pub mPresShell: *mut root::nsIPresShell, + pub mRootFrame: *mut root::nsIFrame, + pub mDisplayNoneMap: *mut root::nsFrameManagerBase_UndisplayedMap, + pub mDisplayContentsMap: *mut root::nsFrameManagerBase_UndisplayedMap, + pub mIsDestroyingFrames: bool, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsFrameManagerBase_UndisplayedMap { + _unused: [u8; 0], + } + #[test] + fn bindgen_test_layout_nsFrameManagerBase() { + assert_eq!( + ::std::mem::size_of::<nsFrameManagerBase>(), + 40usize, + concat!("Size of: ", stringify!(nsFrameManagerBase)) + ); + assert_eq!( + ::std::mem::align_of::<nsFrameManagerBase>(), + 8usize, + concat!("Alignment of ", stringify!(nsFrameManagerBase)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFrameManagerBase>())).mPresShell as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsFrameManagerBase), + "::", + stringify!(mPresShell) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFrameManagerBase>())).mRootFrame as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsFrameManagerBase), + "::", + stringify!(mRootFrame) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFrameManagerBase>())).mDisplayNoneMap as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsFrameManagerBase), + "::", + stringify!(mDisplayNoneMap) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFrameManagerBase>())).mDisplayContentsMap as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsFrameManagerBase), + "::", + stringify!(mDisplayContentsMap) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFrameManagerBase>())).mIsDestroyingFrames as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsFrameManagerBase), + "::", + stringify!(mIsDestroyingFrames) + ) + ); + } + impl Clone for nsFrameManagerBase { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIWeakReference { + pub _base: root::nsISupports, + pub mObject: *mut root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIWeakReference_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIWeakReference() { + assert_eq!( + ::std::mem::size_of::<nsIWeakReference>(), + 16usize, + concat!("Size of: ", stringify!(nsIWeakReference)) + ); + assert_eq!( + ::std::mem::align_of::<nsIWeakReference>(), + 8usize, + concat!("Alignment of ", stringify!(nsIWeakReference)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIWeakReference>())).mObject as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIWeakReference), + "::", + stringify!(mObject) + ) + ); + } + impl Clone for nsIWeakReference { + fn clone(&self) -> Self { + *self + } + } + pub type nsWeakPtr = root::nsCOMPtr; + /// templated hashtable class maps keys to reference pointers. /// See nsBaseHashtable for complete declaration. /// @param KeyClass a wrapper-class for the hashtable key, see nsHashKeys.h /// for a complete specification. /// @param PtrType the reference-type being wrapped - /// @see nsDataHashtable, nsClassHashtable - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsRefPtrHashtable { pub _address : u8 , } pub type nsRefPtrHashtable_KeyType = [ u8 ; 0usize ] ; pub type nsRefPtrHashtable_UserDataType < PtrType > = * mut PtrType ; pub type nsRefPtrHashtable_base_type = u8 ; - /// templated hashtable class maps keys to C++ object pointers. + /// @see nsDataHashtable, nsClassHashtable + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsRefPtrHashtable { + pub _address: u8, + } + pub type nsRefPtrHashtable_KeyType = [u8; 0usize]; + pub type nsRefPtrHashtable_UserDataType<PtrType> = *mut PtrType; + pub type nsRefPtrHashtable_base_type = u8; + /// templated hashtable class maps keys to C++ object pointers. /// See nsBaseHashtable for complete declaration. /// @param KeyClass a wrapper-class for the hashtable key, see nsHashKeys.h /// for a complete specification. /// @param Class the class-type being wrapped - /// @see nsInterfaceHashtable, nsClassHashtable - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsClassHashtable { pub _address : u8 , } pub type nsClassHashtable_KeyType = [ u8 ; 0usize ] ; pub type nsClassHashtable_UserDataType < T > = * mut T ; pub type nsClassHashtable_base_type = u8 ; # [ repr ( C ) ] pub struct nsPresArena { pub mFreeLists : [ root :: nsPresArena_FreeList ; 211usize ] , pub mPool : [ u64 ; 5usize ] , pub mArenaRefPtrs : [ u64 ; 4usize ] , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsPresArena_FreeList { pub mEntries : root :: nsTArray < * mut :: std :: os :: raw :: c_void > , pub mEntrySize : usize , pub mEntriesEverAllocated : usize , } # [ test ] fn bindgen_test_layout_nsPresArena_FreeList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPresArena_FreeList > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsPresArena_FreeList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPresArena_FreeList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPresArena_FreeList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresArena_FreeList ) ) . mEntries as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresArena_FreeList ) , "::" , stringify ! ( mEntries ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresArena_FreeList ) ) . mEntrySize as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresArena_FreeList ) , "::" , stringify ! ( mEntrySize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresArena_FreeList ) ) . mEntriesEverAllocated as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresArena_FreeList ) , "::" , stringify ! ( mEntriesEverAllocated ) ) ) ; } # [ test ] fn bindgen_test_layout_nsPresArena ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPresArena > ( ) , 5136usize , concat ! ( "Size of: " , stringify ! ( nsPresArena ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPresArena > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPresArena ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresArena ) ) . mFreeLists as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresArena ) , "::" , stringify ! ( mFreeLists ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresArena ) ) . mPool as * const _ as usize } , 5064usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresArena ) , "::" , stringify ! ( mPool ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresArena ) ) . mArenaRefPtrs as * const _ as usize } , 5104usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresArena ) , "::" , stringify ! ( mArenaRefPtrs ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct imgINotificationObserver { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct imgINotificationObserver_COMTypeInfo { pub _address : u8 , } pub const imgINotificationObserver_SIZE_AVAILABLE : root :: imgINotificationObserver__bindgen_ty_1 = 1 ; pub const imgINotificationObserver_FRAME_UPDATE : root :: imgINotificationObserver__bindgen_ty_1 = 2 ; pub const imgINotificationObserver_FRAME_COMPLETE : root :: imgINotificationObserver__bindgen_ty_1 = 3 ; pub const imgINotificationObserver_LOAD_COMPLETE : root :: imgINotificationObserver__bindgen_ty_1 = 4 ; pub const imgINotificationObserver_DECODE_COMPLETE : root :: imgINotificationObserver__bindgen_ty_1 = 5 ; pub const imgINotificationObserver_DISCARD : root :: imgINotificationObserver__bindgen_ty_1 = 6 ; pub const imgINotificationObserver_UNLOCKED_DRAW : root :: imgINotificationObserver__bindgen_ty_1 = 7 ; pub const imgINotificationObserver_IS_ANIMATED : root :: imgINotificationObserver__bindgen_ty_1 = 8 ; pub const imgINotificationObserver_HAS_TRANSPARENCY : root :: imgINotificationObserver__bindgen_ty_1 = 9 ; pub type imgINotificationObserver__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_imgINotificationObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < imgINotificationObserver > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( imgINotificationObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < imgINotificationObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( imgINotificationObserver ) ) ) ; } impl Clone for imgINotificationObserver { fn clone ( & self ) -> Self { * self } } - /// Mutation observer interface + /// @see nsInterfaceHashtable, nsClassHashtable + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsClassHashtable { + pub _address: u8, + } + pub type nsClassHashtable_KeyType = [u8; 0usize]; + pub type nsClassHashtable_UserDataType<T> = *mut T; + pub type nsClassHashtable_base_type = u8; + #[repr(C)] + pub struct nsPresArena { + pub mFreeLists: [root::nsPresArena_FreeList; 211usize], + pub mPool: [u64; 5usize], + pub mArenaRefPtrs: [u64; 4usize], + } + #[repr(C)] + #[derive(Debug)] + pub struct nsPresArena_FreeList { + pub mEntries: root::nsTArray<*mut ::std::os::raw::c_void>, + pub mEntrySize: usize, + pub mEntriesEverAllocated: usize, + } + #[test] + fn bindgen_test_layout_nsPresArena_FreeList() { + assert_eq!( + ::std::mem::size_of::<nsPresArena_FreeList>(), + 24usize, + concat!("Size of: ", stringify!(nsPresArena_FreeList)) + ); + assert_eq!( + ::std::mem::align_of::<nsPresArena_FreeList>(), + 8usize, + concat!("Alignment of ", stringify!(nsPresArena_FreeList)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresArena_FreeList>())).mEntries as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsPresArena_FreeList), + "::", + stringify!(mEntries) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresArena_FreeList>())).mEntrySize as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsPresArena_FreeList), + "::", + stringify!(mEntrySize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresArena_FreeList>())).mEntriesEverAllocated as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsPresArena_FreeList), + "::", + stringify!(mEntriesEverAllocated) + ) + ); + } + #[test] + fn bindgen_test_layout_nsPresArena() { + assert_eq!( + ::std::mem::size_of::<nsPresArena>(), + 5136usize, + concat!("Size of: ", stringify!(nsPresArena)) + ); + assert_eq!( + ::std::mem::align_of::<nsPresArena>(), + 8usize, + concat!("Alignment of ", stringify!(nsPresArena)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresArena>())).mFreeLists as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsPresArena), + "::", + stringify!(mFreeLists) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresArena>())).mPool as *const _ as usize }, + 5064usize, + concat!( + "Offset of field: ", + stringify!(nsPresArena), + "::", + stringify!(mPool) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresArena>())).mArenaRefPtrs as *const _ as usize }, + 5104usize, + concat!( + "Offset of field: ", + stringify!(nsPresArena), + "::", + stringify!(mArenaRefPtrs) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct imgINotificationObserver { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct imgINotificationObserver_COMTypeInfo { + pub _address: u8, + } + pub const imgINotificationObserver_SIZE_AVAILABLE: + root::imgINotificationObserver__bindgen_ty_1 = 1; + pub const imgINotificationObserver_FRAME_UPDATE: root::imgINotificationObserver__bindgen_ty_1 = + 2; + pub const imgINotificationObserver_FRAME_COMPLETE: + root::imgINotificationObserver__bindgen_ty_1 = 3; + pub const imgINotificationObserver_LOAD_COMPLETE: root::imgINotificationObserver__bindgen_ty_1 = + 4; + pub const imgINotificationObserver_DECODE_COMPLETE: + root::imgINotificationObserver__bindgen_ty_1 = 5; + pub const imgINotificationObserver_DISCARD: root::imgINotificationObserver__bindgen_ty_1 = 6; + pub const imgINotificationObserver_UNLOCKED_DRAW: root::imgINotificationObserver__bindgen_ty_1 = + 7; + pub const imgINotificationObserver_IS_ANIMATED: root::imgINotificationObserver__bindgen_ty_1 = + 8; + pub const imgINotificationObserver_HAS_TRANSPARENCY: + root::imgINotificationObserver__bindgen_ty_1 = 9; + pub type imgINotificationObserver__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_imgINotificationObserver() { + assert_eq!( + ::std::mem::size_of::<imgINotificationObserver>(), + 8usize, + concat!("Size of: ", stringify!(imgINotificationObserver)) + ); + assert_eq!( + ::std::mem::align_of::<imgINotificationObserver>(), + 8usize, + concat!("Alignment of ", stringify!(imgINotificationObserver)) + ); + } + impl Clone for imgINotificationObserver { + fn clone(&self) -> Self { + *self + } + } + /// Mutation observer interface /// /// See nsINode::AddMutationObserver, nsINode::RemoveMutationObserver for how to /// attach or remove your observers. @@ -847,9 +18486,64 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// during the _last_ nsIDocumentObserver::EndUpdate notification. The /// expection for this is ParentChainChanged, where mutations should be /// done from an async event, as the notification might not be - /// surrounded by BeginUpdate/EndUpdate calls. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIMutationObserver { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIMutationObserver_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIMutationObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIMutationObserver > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIMutationObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIMutationObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIMutationObserver ) ) ) ; } impl Clone for nsIMutationObserver { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDocumentObserver { pub _base : root :: nsIMutationObserver , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDocumentObserver_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDocumentObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDocumentObserver > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDocumentObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDocumentObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDocumentObserver ) ) ) ; } impl Clone for nsIDocumentObserver { fn clone ( & self ) -> Self { * self } } - /// There are two advantages to inheriting from nsStubDocumentObserver + /// surrounded by BeginUpdate/EndUpdate calls. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIMutationObserver { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIMutationObserver_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIMutationObserver() { + assert_eq!( + ::std::mem::size_of::<nsIMutationObserver>(), + 8usize, + concat!("Size of: ", stringify!(nsIMutationObserver)) + ); + assert_eq!( + ::std::mem::align_of::<nsIMutationObserver>(), + 8usize, + concat!("Alignment of ", stringify!(nsIMutationObserver)) + ); + } + impl Clone for nsIMutationObserver { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIDocumentObserver { + pub _base: root::nsIMutationObserver, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDocumentObserver_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIDocumentObserver() { + assert_eq!( + ::std::mem::size_of::<nsIDocumentObserver>(), + 8usize, + concat!("Size of: ", stringify!(nsIDocumentObserver)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDocumentObserver>(), + 8usize, + concat!("Alignment of ", stringify!(nsIDocumentObserver)) + ); + } + impl Clone for nsIDocumentObserver { + fn clone(&self) -> Self { + *self + } + } + /// There are two advantages to inheriting from nsStubDocumentObserver /// rather than directly from nsIDocumentObserver: /// 1. smaller compiled code size (since there's no need for the code /// for the empty virtual function implementations for every @@ -857,9 +18551,148 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// 2. the performance of document's loop over observers benefits from /// the fact that more of the functions called are the same (which /// can reduce instruction cache misses and perhaps improve branch - /// prediction) - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStubDocumentObserver { pub _base : root :: nsIDocumentObserver , } # [ test ] fn bindgen_test_layout_nsStubDocumentObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStubDocumentObserver > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsStubDocumentObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStubDocumentObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStubDocumentObserver ) ) ) ; } impl Clone for nsStubDocumentObserver { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsDocShell { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsViewManager { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsFrameSelection { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsCSSFrameConstructor { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct AutoWeakFrame { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct WeakFrame { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsRefreshDriver { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] pub struct CapturingContentInfo { pub mAllowed : bool , pub mPointerLock : bool , pub mRetargetToElement : bool , pub mPreventDrag : bool , pub mContent : root :: mozilla :: StaticRefPtr < root :: nsIContent > , } # [ test ] fn bindgen_test_layout_CapturingContentInfo ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CapturingContentInfo > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( CapturingContentInfo ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CapturingContentInfo > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CapturingContentInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CapturingContentInfo ) ) . mAllowed as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( CapturingContentInfo ) , "::" , stringify ! ( mAllowed ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CapturingContentInfo ) ) . mPointerLock as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( CapturingContentInfo ) , "::" , stringify ! ( mPointerLock ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CapturingContentInfo ) ) . mRetargetToElement as * const _ as usize } , 2usize , concat ! ( "Alignment of field: " , stringify ! ( CapturingContentInfo ) , "::" , stringify ! ( mRetargetToElement ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CapturingContentInfo ) ) . mPreventDrag as * const _ as usize } , 3usize , concat ! ( "Alignment of field: " , stringify ! ( CapturingContentInfo ) , "::" , stringify ! ( mPreventDrag ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CapturingContentInfo ) ) . mContent as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( CapturingContentInfo ) , "::" , stringify ! ( mContent ) ) ) ; } - /// Presentation shell interface. Presentation shells are the + /// prediction) + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStubDocumentObserver { + pub _base: root::nsIDocumentObserver, + } + #[test] + fn bindgen_test_layout_nsStubDocumentObserver() { + assert_eq!( + ::std::mem::size_of::<nsStubDocumentObserver>(), + 8usize, + concat!("Size of: ", stringify!(nsStubDocumentObserver)) + ); + assert_eq!( + ::std::mem::align_of::<nsStubDocumentObserver>(), + 8usize, + concat!("Alignment of ", stringify!(nsStubDocumentObserver)) + ); + } + impl Clone for nsStubDocumentObserver { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsDocShell { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsViewManager { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsFrameSelection { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsCSSFrameConstructor { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct AutoWeakFrame { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct WeakFrame { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsRefreshDriver { + _unused: [u8; 0], + } + #[repr(C)] + pub struct CapturingContentInfo { + pub mAllowed: bool, + pub mPointerLock: bool, + pub mRetargetToElement: bool, + pub mPreventDrag: bool, + pub mContent: root::mozilla::StaticRefPtr<root::nsIContent>, + } + #[test] + fn bindgen_test_layout_CapturingContentInfo() { + assert_eq!( + ::std::mem::size_of::<CapturingContentInfo>(), + 16usize, + concat!("Size of: ", stringify!(CapturingContentInfo)) + ); + assert_eq!( + ::std::mem::align_of::<CapturingContentInfo>(), + 8usize, + concat!("Alignment of ", stringify!(CapturingContentInfo)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CapturingContentInfo>())).mAllowed as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CapturingContentInfo), + "::", + stringify!(mAllowed) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CapturingContentInfo>())).mPointerLock as *const _ as usize + }, + 1usize, + concat!( + "Offset of field: ", + stringify!(CapturingContentInfo), + "::", + stringify!(mPointerLock) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CapturingContentInfo>())).mRetargetToElement as *const _ + as usize + }, + 2usize, + concat!( + "Offset of field: ", + stringify!(CapturingContentInfo), + "::", + stringify!(mRetargetToElement) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CapturingContentInfo>())).mPreventDrag as *const _ as usize + }, + 3usize, + concat!( + "Offset of field: ", + stringify!(CapturingContentInfo), + "::", + stringify!(mPreventDrag) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CapturingContentInfo>())).mContent as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(CapturingContentInfo), + "::", + stringify!(mContent) + ) + ); + } + /// Presentation shell interface. Presentation shells are the /// controlling point for managing the presentation of a document. The /// presentation shell holds a live reference to the document, the /// presentation context, the style manager, the style set and the root @@ -867,27 +18700,1723 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// When this object is Release'd, it will release the document, the /// presentation context, the style manager, the style set and the root - /// frame. - # [ repr ( C ) ] pub struct nsIPresShell { pub _base : root :: nsStubDocumentObserver , pub mDocument : root :: nsCOMPtr , pub mPresContext : root :: RefPtr < root :: nsPresContext > , pub mStyleSet : root :: mozilla :: StyleSetHandle , pub mFrameConstructor : * mut root :: nsCSSFrameConstructor , pub mViewManager : * mut root :: nsViewManager , pub mFrameArena : root :: nsPresArena , pub mSelection : root :: RefPtr < root :: nsFrameSelection > , pub mFrameManager : * mut root :: nsFrameManagerBase , pub mForwardingContainer : u64 , pub mDocAccessible : * mut root :: mozilla :: a11y :: DocAccessible , pub mReflowContinueTimer : root :: nsCOMPtr , pub mPaintCount : u64 , pub mScrollPositionClampingScrollPortSize : root :: nsSize , pub mAutoWeakFrames : * mut root :: AutoWeakFrame , pub mWeakFrames : [ u64 ; 4usize ] , pub mStyleCause : root :: UniqueProfilerBacktrace , pub mReflowCause : root :: UniqueProfilerBacktrace , pub mCanvasBackgroundColor : root :: nscolor , pub mResolution : [ u32 ; 2usize ] , pub mSelectionFlags : i16 , pub mChangeNestCount : u16 , pub mRenderFlags : root :: nsIPresShell_RenderFlags , pub _bitfield_1 : [ u8 ; 3usize ] , pub mPresShellId : u32 , pub mFontSizeInflationEmPerLine : u32 , pub mFontSizeInflationMinTwips : u32 , pub mFontSizeInflationLineThreshold : u32 , pub mFontSizeInflationForceEnabled : bool , pub mFontSizeInflationDisabledInMasterProcess : bool , pub mFontSizeInflationEnabled : bool , pub mFontSizeInflationEnabledIsDirty : bool , pub mPaintingIsFrozen : bool , pub mIsNeverPainting : bool , pub mInFlush : bool , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIPresShell_COMTypeInfo { pub _address : u8 , } pub type nsIPresShell_LayerManager = root :: mozilla :: layers :: LayerManager ; pub type nsIPresShell_SourceSurface = root :: mozilla :: gfx :: SourceSurface ; pub const nsIPresShell_eRenderFlag_STATE_IGNORING_VIEWPORT_SCROLLING : root :: nsIPresShell_eRenderFlag = 1 ; pub const nsIPresShell_eRenderFlag_STATE_DRAWWINDOW_NOT_FLUSHING : root :: nsIPresShell_eRenderFlag = 2 ; pub type nsIPresShell_eRenderFlag = :: std :: os :: raw :: c_uint ; pub type nsIPresShell_RenderFlags = u8 ; pub const nsIPresShell_ResizeReflowOptions_eBSizeExact : root :: nsIPresShell_ResizeReflowOptions = 0 ; pub const nsIPresShell_ResizeReflowOptions_eBSizeLimit : root :: nsIPresShell_ResizeReflowOptions = 1 ; pub type nsIPresShell_ResizeReflowOptions = u32 ; pub const nsIPresShell_ScrollDirection_eHorizontal : root :: nsIPresShell_ScrollDirection = 0 ; pub const nsIPresShell_ScrollDirection_eVertical : root :: nsIPresShell_ScrollDirection = 1 ; pub const nsIPresShell_ScrollDirection_eEither : root :: nsIPresShell_ScrollDirection = 2 ; pub type nsIPresShell_ScrollDirection = :: std :: os :: raw :: c_uint ; pub const nsIPresShell_IntrinsicDirty_eResize : root :: nsIPresShell_IntrinsicDirty = 0 ; pub const nsIPresShell_IntrinsicDirty_eTreeChange : root :: nsIPresShell_IntrinsicDirty = 1 ; pub const nsIPresShell_IntrinsicDirty_eStyleChange : root :: nsIPresShell_IntrinsicDirty = 2 ; pub type nsIPresShell_IntrinsicDirty = :: std :: os :: raw :: c_uint ; pub const nsIPresShell_ReflowRootHandling_ePositionOrSizeChange : root :: nsIPresShell_ReflowRootHandling = 0 ; pub const nsIPresShell_ReflowRootHandling_eNoPositionOrSizeChange : root :: nsIPresShell_ReflowRootHandling = 1 ; pub const nsIPresShell_ReflowRootHandling_eInferFromBitToAdd : root :: nsIPresShell_ReflowRootHandling = 2 ; pub type nsIPresShell_ReflowRootHandling = :: std :: os :: raw :: c_uint ; pub const nsIPresShell_SCROLL_TOP : root :: nsIPresShell__bindgen_ty_1 = 0 ; pub const nsIPresShell_SCROLL_BOTTOM : root :: nsIPresShell__bindgen_ty_1 = 100 ; pub const nsIPresShell_SCROLL_LEFT : root :: nsIPresShell__bindgen_ty_1 = 0 ; pub const nsIPresShell_SCROLL_RIGHT : root :: nsIPresShell__bindgen_ty_1 = 100 ; pub const nsIPresShell_SCROLL_CENTER : root :: nsIPresShell__bindgen_ty_1 = 50 ; pub const nsIPresShell_SCROLL_MINIMUM : root :: nsIPresShell__bindgen_ty_1 = -1 ; pub type nsIPresShell__bindgen_ty_1 = :: std :: os :: raw :: c_int ; pub const nsIPresShell_WhenToScroll_SCROLL_ALWAYS : root :: nsIPresShell_WhenToScroll = 0 ; pub const nsIPresShell_WhenToScroll_SCROLL_IF_NOT_VISIBLE : root :: nsIPresShell_WhenToScroll = 1 ; pub const nsIPresShell_WhenToScroll_SCROLL_IF_NOT_FULLY_VISIBLE : root :: nsIPresShell_WhenToScroll = 2 ; pub type nsIPresShell_WhenToScroll = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIPresShell_ScrollAxis { pub _bindgen_opaque_blob : u32 , } # [ test ] fn bindgen_test_layout_nsIPresShell_ScrollAxis ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIPresShell_ScrollAxis > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( nsIPresShell_ScrollAxis ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIPresShell_ScrollAxis > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsIPresShell_ScrollAxis ) ) ) ; } impl Clone for nsIPresShell_ScrollAxis { fn clone ( & self ) -> Self { * self } } pub const nsIPresShell_SCROLL_FIRST_ANCESTOR_ONLY : root :: nsIPresShell__bindgen_ty_2 = 1 ; pub const nsIPresShell_SCROLL_OVERFLOW_HIDDEN : root :: nsIPresShell__bindgen_ty_2 = 2 ; pub const nsIPresShell_SCROLL_NO_PARENT_FRAMES : root :: nsIPresShell__bindgen_ty_2 = 4 ; pub const nsIPresShell_SCROLL_SMOOTH : root :: nsIPresShell__bindgen_ty_2 = 8 ; pub const nsIPresShell_SCROLL_SMOOTH_AUTO : root :: nsIPresShell__bindgen_ty_2 = 16 ; pub type nsIPresShell__bindgen_ty_2 = :: std :: os :: raw :: c_uint ; pub const nsIPresShell_RENDER_IS_UNTRUSTED : root :: nsIPresShell__bindgen_ty_3 = 1 ; pub const nsIPresShell_RENDER_IGNORE_VIEWPORT_SCROLLING : root :: nsIPresShell__bindgen_ty_3 = 2 ; pub const nsIPresShell_RENDER_CARET : root :: nsIPresShell__bindgen_ty_3 = 4 ; pub const nsIPresShell_RENDER_USE_WIDGET_LAYERS : root :: nsIPresShell__bindgen_ty_3 = 8 ; pub const nsIPresShell_RENDER_ASYNC_DECODE_IMAGES : root :: nsIPresShell__bindgen_ty_3 = 16 ; pub const nsIPresShell_RENDER_DOCUMENT_RELATIVE : root :: nsIPresShell__bindgen_ty_3 = 32 ; pub const nsIPresShell_RENDER_DRAWWINDOW_NOT_FLUSHING : root :: nsIPresShell__bindgen_ty_3 = 64 ; pub type nsIPresShell__bindgen_ty_3 = :: std :: os :: raw :: c_uint ; pub const nsIPresShell_RENDER_IS_IMAGE : root :: nsIPresShell__bindgen_ty_4 = 256 ; pub const nsIPresShell_RENDER_AUTO_SCALE : root :: nsIPresShell__bindgen_ty_4 = 128 ; pub type nsIPresShell__bindgen_ty_4 = :: std :: os :: raw :: c_uint ; pub const nsIPresShell_FORCE_DRAW : root :: nsIPresShell__bindgen_ty_5 = 1 ; pub const nsIPresShell_ADD_FOR_SUBDOC : root :: nsIPresShell__bindgen_ty_5 = 2 ; pub const nsIPresShell_APPEND_UNSCROLLED_ONLY : root :: nsIPresShell__bindgen_ty_5 = 4 ; pub type nsIPresShell__bindgen_ty_5 = :: std :: os :: raw :: c_uint ; pub const nsIPresShell_PaintFlags_PAINT_LAYERS : root :: nsIPresShell_PaintFlags = 1 ; pub const nsIPresShell_PaintFlags_PAINT_COMPOSITE : root :: nsIPresShell_PaintFlags = 2 ; pub const nsIPresShell_PaintFlags_PAINT_SYNC_DECODE_IMAGES : root :: nsIPresShell_PaintFlags = 4 ; pub type nsIPresShell_PaintFlags = :: std :: os :: raw :: c_uint ; pub const nsIPresShell_PaintType_PAINT_DEFAULT : root :: nsIPresShell_PaintType = 0 ; pub const nsIPresShell_PaintType_PAINT_DELAYED_COMPRESS : root :: nsIPresShell_PaintType = 1 ; pub type nsIPresShell_PaintType = :: std :: os :: raw :: c_uint ; extern "C" { - # [ link_name = "\u{1}_ZN12nsIPresShell12gCaptureInfoE" ] - pub static mut nsIPresShell_gCaptureInfo : root :: CapturingContentInfo ; -} extern "C" { - # [ link_name = "\u{1}_ZN12nsIPresShell14gKeyDownTargetE" ] - pub static mut nsIPresShell_gKeyDownTarget : * mut root :: nsIContent ; -} # [ test ] fn bindgen_test_layout_nsIPresShell ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIPresShell > ( ) , 5344usize , concat ! ( "Size of: " , stringify ! ( nsIPresShell ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIPresShell > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIPresShell ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mDocument as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mDocument ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mPresContext as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mPresContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mStyleSet as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mStyleSet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFrameConstructor as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFrameConstructor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mViewManager as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mViewManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFrameArena as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFrameArena ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mSelection as * const _ as usize } , 5184usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mSelection ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFrameManager as * const _ as usize } , 5192usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFrameManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mForwardingContainer as * const _ as usize } , 5200usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mForwardingContainer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mDocAccessible as * const _ as usize } , 5208usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mDocAccessible ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mReflowContinueTimer as * const _ as usize } , 5216usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mReflowContinueTimer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mPaintCount as * const _ as usize } , 5224usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mPaintCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mScrollPositionClampingScrollPortSize as * const _ as usize } , 5232usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mScrollPositionClampingScrollPortSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mAutoWeakFrames as * const _ as usize } , 5240usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mAutoWeakFrames ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mWeakFrames as * const _ as usize } , 5248usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mWeakFrames ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mStyleCause as * const _ as usize } , 5280usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mStyleCause ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mReflowCause as * const _ as usize } , 5288usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mReflowCause ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mCanvasBackgroundColor as * const _ as usize } , 5296usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mCanvasBackgroundColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mResolution as * const _ as usize } , 5300usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mResolution ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mSelectionFlags as * const _ as usize } , 5308usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mSelectionFlags ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mChangeNestCount as * const _ as usize } , 5310usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mChangeNestCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mRenderFlags as * const _ as usize } , 5312usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mRenderFlags ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mPresShellId as * const _ as usize } , 5316usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mPresShellId ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFontSizeInflationEmPerLine as * const _ as usize } , 5320usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFontSizeInflationEmPerLine ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFontSizeInflationMinTwips as * const _ as usize } , 5324usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFontSizeInflationMinTwips ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFontSizeInflationLineThreshold as * const _ as usize } , 5328usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFontSizeInflationLineThreshold ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFontSizeInflationForceEnabled as * const _ as usize } , 5332usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFontSizeInflationForceEnabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFontSizeInflationDisabledInMasterProcess as * const _ as usize } , 5333usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFontSizeInflationDisabledInMasterProcess ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFontSizeInflationEnabled as * const _ as usize } , 5334usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFontSizeInflationEnabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mFontSizeInflationEnabledIsDirty as * const _ as usize } , 5335usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mFontSizeInflationEnabledIsDirty ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mPaintingIsFrozen as * const _ as usize } , 5336usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mPaintingIsFrozen ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mIsNeverPainting as * const _ as usize } , 5337usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mIsNeverPainting ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIPresShell ) ) . mInFlush as * const _ as usize } , 5338usize , concat ! ( "Alignment of field: " , stringify ! ( nsIPresShell ) , "::" , stringify ! ( mInFlush ) ) ) ; } impl nsIPresShell { # [ inline ] pub fn mDidInitialize ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x1 as u32 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mDidInitialize ( & mut self , val : bool ) { let mask = 0x1 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mIsDestroying ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x2 as u32 ; let val = ( unit_field_val & mask ) >> 1usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsDestroying ( & mut self , val : bool ) { let mask = 0x2 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 1usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mIsReflowing ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x4 as u32 ; let val = ( unit_field_val & mask ) >> 2usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsReflowing ( & mut self , val : bool ) { let mask = 0x4 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 2usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mIsObservingDocument ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x8 as u32 ; let val = ( unit_field_val & mask ) >> 3usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsObservingDocument ( & mut self , val : bool ) { let mask = 0x8 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 3usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mIsDocumentGone ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x10 as u32 ; let val = ( unit_field_val & mask ) >> 4usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsDocumentGone ( & mut self , val : bool ) { let mask = 0x10 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 4usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mPaintingSuppressed ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x20 as u32 ; let val = ( unit_field_val & mask ) >> 5usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mPaintingSuppressed ( & mut self , val : bool ) { let mask = 0x20 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 5usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mIsActive ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x40 as u32 ; let val = ( unit_field_val & mask ) >> 6usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsActive ( & mut self , val : bool ) { let mask = 0x40 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 6usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mFrozen ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x80 as u32 ; let val = ( unit_field_val & mask ) >> 7usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mFrozen ( & mut self , val : bool ) { let mask = 0x80 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 7usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mIsFirstPaint ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x100 as u32 ; let val = ( unit_field_val & mask ) >> 8usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsFirstPaint ( & mut self , val : bool ) { let mask = 0x100 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 8usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mObservesMutationsForPrint ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x200 as u32 ; let val = ( unit_field_val & mask ) >> 9usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mObservesMutationsForPrint ( & mut self , val : bool ) { let mask = 0x200 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 9usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mWasLastReflowInterrupted ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x400 as u32 ; let val = ( unit_field_val & mask ) >> 10usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mWasLastReflowInterrupted ( & mut self , val : bool ) { let mask = 0x400 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 10usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mScrollPositionClampingScrollPortSizeSet ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x800 as u32 ; let val = ( unit_field_val & mask ) >> 11usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mScrollPositionClampingScrollPortSizeSet ( & mut self , val : bool ) { let mask = 0x800 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 11usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mNeedLayoutFlush ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x1000 as u32 ; let val = ( unit_field_val & mask ) >> 12usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mNeedLayoutFlush ( & mut self , val : bool ) { let mask = 0x1000 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 12usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mNeedStyleFlush ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x2000 as u32 ; let val = ( unit_field_val & mask ) >> 13usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mNeedStyleFlush ( & mut self , val : bool ) { let mask = 0x2000 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 13usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mObservingStyleFlushes ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x4000 as u32 ; let val = ( unit_field_val & mask ) >> 14usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mObservingStyleFlushes ( & mut self , val : bool ) { let mask = 0x4000 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 14usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mObservingLayoutFlushes ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x8000 as u32 ; let val = ( unit_field_val & mask ) >> 15usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mObservingLayoutFlushes ( & mut self , val : bool ) { let mask = 0x8000 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 15usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mNeedThrottledAnimationFlush ( & self ) -> bool { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0x10000 as u32 ; let val = ( unit_field_val & mask ) >> 16usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mNeedThrottledAnimationFlush ( & mut self , val : bool ) { let mask = 0x10000 as u32 ; let val = val as u8 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 16usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mDidInitialize : bool , mIsDestroying : bool , mIsReflowing : bool , mIsObservingDocument : bool , mIsDocumentGone : bool , mPaintingSuppressed : bool , mIsActive : bool , mFrozen : bool , mIsFirstPaint : bool , mObservesMutationsForPrint : bool , mWasLastReflowInterrupted : bool , mScrollPositionClampingScrollPortSizeSet : bool , mNeedLayoutFlush : bool , mNeedStyleFlush : bool , mObservingStyleFlushes : bool , mObservingLayoutFlushes : bool , mNeedThrottledAnimationFlush : bool ) -> u32 { ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 | ( ( mDidInitialize as u8 as u32 ) << 0usize ) & ( 0x1 as u32 ) ) | ( ( mIsDestroying as u8 as u32 ) << 1usize ) & ( 0x2 as u32 ) ) | ( ( mIsReflowing as u8 as u32 ) << 2usize ) & ( 0x4 as u32 ) ) | ( ( mIsObservingDocument as u8 as u32 ) << 3usize ) & ( 0x8 as u32 ) ) | ( ( mIsDocumentGone as u8 as u32 ) << 4usize ) & ( 0x10 as u32 ) ) | ( ( mPaintingSuppressed as u8 as u32 ) << 5usize ) & ( 0x20 as u32 ) ) | ( ( mIsActive as u8 as u32 ) << 6usize ) & ( 0x40 as u32 ) ) | ( ( mFrozen as u8 as u32 ) << 7usize ) & ( 0x80 as u32 ) ) | ( ( mIsFirstPaint as u8 as u32 ) << 8usize ) & ( 0x100 as u32 ) ) | ( ( mObservesMutationsForPrint as u8 as u32 ) << 9usize ) & ( 0x200 as u32 ) ) | ( ( mWasLastReflowInterrupted as u8 as u32 ) << 10usize ) & ( 0x400 as u32 ) ) | ( ( mScrollPositionClampingScrollPortSizeSet as u8 as u32 ) << 11usize ) & ( 0x800 as u32 ) ) | ( ( mNeedLayoutFlush as u8 as u32 ) << 12usize ) & ( 0x1000 as u32 ) ) | ( ( mNeedStyleFlush as u8 as u32 ) << 13usize ) & ( 0x2000 as u32 ) ) | ( ( mObservingStyleFlushes as u8 as u32 ) << 14usize ) & ( 0x4000 as u32 ) ) | ( ( mObservingLayoutFlushes as u8 as u32 ) << 15usize ) & ( 0x8000 as u32 ) ) | ( ( mNeedThrottledAnimationFlush as u8 as u32 ) << 16usize ) & ( 0x10000 as u32 ) ) } } - /// The signature of the timer callback function passed to initWithFuncCallback. + /// frame. + #[repr(C)] + pub struct nsIPresShell { + pub _base: root::nsStubDocumentObserver, + pub mDocument: root::nsCOMPtr, + pub mPresContext: root::RefPtr<root::nsPresContext>, + pub mStyleSet: root::mozilla::StyleSetHandle, + pub mFrameConstructor: *mut root::nsCSSFrameConstructor, + pub mViewManager: *mut root::nsViewManager, + pub mFrameArena: root::nsPresArena, + pub mSelection: root::RefPtr<root::nsFrameSelection>, + pub mFrameManager: *mut root::nsFrameManagerBase, + pub mForwardingContainer: u64, + pub mDocAccessible: *mut root::mozilla::a11y::DocAccessible, + pub mReflowContinueTimer: root::nsCOMPtr, + pub mPaintCount: u64, + pub mScrollPositionClampingScrollPortSize: root::nsSize, + pub mAutoWeakFrames: *mut root::AutoWeakFrame, + pub mWeakFrames: [u64; 4usize], + pub mStyleCause: root::UniqueProfilerBacktrace, + pub mReflowCause: root::UniqueProfilerBacktrace, + pub mCanvasBackgroundColor: root::nscolor, + pub mResolution: [u32; 2usize], + pub mSelectionFlags: i16, + pub mChangeNestCount: u16, + pub mRenderFlags: root::nsIPresShell_RenderFlags, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 3usize], u8>, + pub mPresShellId: u32, + pub mFontSizeInflationEmPerLine: u32, + pub mFontSizeInflationMinTwips: u32, + pub mFontSizeInflationLineThreshold: u32, + pub mFontSizeInflationForceEnabled: bool, + pub mFontSizeInflationDisabledInMasterProcess: bool, + pub mFontSizeInflationEnabled: bool, + pub mFontSizeInflationEnabledIsDirty: bool, + pub mPaintingIsFrozen: bool, + pub mIsNeverPainting: bool, + pub mInFlush: bool, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIPresShell_COMTypeInfo { + pub _address: u8, + } + pub type nsIPresShell_LayerManager = root::mozilla::layers::LayerManager; + pub type nsIPresShell_SourceSurface = root::mozilla::gfx::SourceSurface; + pub const nsIPresShell_eRenderFlag_STATE_IGNORING_VIEWPORT_SCROLLING: + root::nsIPresShell_eRenderFlag = 1; + pub const nsIPresShell_eRenderFlag_STATE_DRAWWINDOW_NOT_FLUSHING: + root::nsIPresShell_eRenderFlag = 2; + pub type nsIPresShell_eRenderFlag = u32; + pub type nsIPresShell_RenderFlags = u8; + pub const nsIPresShell_ResizeReflowOptions_eBSizeExact: root::nsIPresShell_ResizeReflowOptions = + 0; + pub const nsIPresShell_ResizeReflowOptions_eBSizeLimit: root::nsIPresShell_ResizeReflowOptions = + 1; + pub type nsIPresShell_ResizeReflowOptions = u32; + pub const nsIPresShell_ScrollDirection_eHorizontal: root::nsIPresShell_ScrollDirection = 0; + pub const nsIPresShell_ScrollDirection_eVertical: root::nsIPresShell_ScrollDirection = 1; + pub const nsIPresShell_ScrollDirection_eEither: root::nsIPresShell_ScrollDirection = 2; + pub type nsIPresShell_ScrollDirection = u32; + pub const nsIPresShell_IntrinsicDirty_eResize: root::nsIPresShell_IntrinsicDirty = 0; + pub const nsIPresShell_IntrinsicDirty_eTreeChange: root::nsIPresShell_IntrinsicDirty = 1; + pub const nsIPresShell_IntrinsicDirty_eStyleChange: root::nsIPresShell_IntrinsicDirty = 2; + pub type nsIPresShell_IntrinsicDirty = u32; + pub const nsIPresShell_ReflowRootHandling_ePositionOrSizeChange: + root::nsIPresShell_ReflowRootHandling = 0; + pub const nsIPresShell_ReflowRootHandling_eNoPositionOrSizeChange: + root::nsIPresShell_ReflowRootHandling = 1; + pub const nsIPresShell_ReflowRootHandling_eInferFromBitToAdd: + root::nsIPresShell_ReflowRootHandling = 2; + pub type nsIPresShell_ReflowRootHandling = u32; + pub const nsIPresShell_SCROLL_TOP: root::nsIPresShell__bindgen_ty_1 = 0; + pub const nsIPresShell_SCROLL_BOTTOM: root::nsIPresShell__bindgen_ty_1 = 100; + pub const nsIPresShell_SCROLL_LEFT: root::nsIPresShell__bindgen_ty_1 = 0; + pub const nsIPresShell_SCROLL_RIGHT: root::nsIPresShell__bindgen_ty_1 = 100; + pub const nsIPresShell_SCROLL_CENTER: root::nsIPresShell__bindgen_ty_1 = 50; + pub const nsIPresShell_SCROLL_MINIMUM: root::nsIPresShell__bindgen_ty_1 = -1; + pub type nsIPresShell__bindgen_ty_1 = i32; + pub const nsIPresShell_WhenToScroll_SCROLL_ALWAYS: root::nsIPresShell_WhenToScroll = 0; + pub const nsIPresShell_WhenToScroll_SCROLL_IF_NOT_VISIBLE: root::nsIPresShell_WhenToScroll = 1; + pub const nsIPresShell_WhenToScroll_SCROLL_IF_NOT_FULLY_VISIBLE: + root::nsIPresShell_WhenToScroll = 2; + pub type nsIPresShell_WhenToScroll = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIPresShell_ScrollAxis { + pub _bindgen_opaque_blob: u32, + } + #[test] + fn bindgen_test_layout_nsIPresShell_ScrollAxis() { + assert_eq!( + ::std::mem::size_of::<nsIPresShell_ScrollAxis>(), + 4usize, + concat!("Size of: ", stringify!(nsIPresShell_ScrollAxis)) + ); + assert_eq!( + ::std::mem::align_of::<nsIPresShell_ScrollAxis>(), + 4usize, + concat!("Alignment of ", stringify!(nsIPresShell_ScrollAxis)) + ); + } + impl Clone for nsIPresShell_ScrollAxis { + fn clone(&self) -> Self { + *self + } + } + pub const nsIPresShell_SCROLL_FIRST_ANCESTOR_ONLY: root::nsIPresShell__bindgen_ty_2 = 1; + pub const nsIPresShell_SCROLL_OVERFLOW_HIDDEN: root::nsIPresShell__bindgen_ty_2 = 2; + pub const nsIPresShell_SCROLL_NO_PARENT_FRAMES: root::nsIPresShell__bindgen_ty_2 = 4; + pub const nsIPresShell_SCROLL_SMOOTH: root::nsIPresShell__bindgen_ty_2 = 8; + pub const nsIPresShell_SCROLL_SMOOTH_AUTO: root::nsIPresShell__bindgen_ty_2 = 16; + pub type nsIPresShell__bindgen_ty_2 = u32; + pub const nsIPresShell_RENDER_IS_UNTRUSTED: root::nsIPresShell__bindgen_ty_3 = 1; + pub const nsIPresShell_RENDER_IGNORE_VIEWPORT_SCROLLING: root::nsIPresShell__bindgen_ty_3 = 2; + pub const nsIPresShell_RENDER_CARET: root::nsIPresShell__bindgen_ty_3 = 4; + pub const nsIPresShell_RENDER_USE_WIDGET_LAYERS: root::nsIPresShell__bindgen_ty_3 = 8; + pub const nsIPresShell_RENDER_ASYNC_DECODE_IMAGES: root::nsIPresShell__bindgen_ty_3 = 16; + pub const nsIPresShell_RENDER_DOCUMENT_RELATIVE: root::nsIPresShell__bindgen_ty_3 = 32; + pub const nsIPresShell_RENDER_DRAWWINDOW_NOT_FLUSHING: root::nsIPresShell__bindgen_ty_3 = 64; + pub type nsIPresShell__bindgen_ty_3 = u32; + pub const nsIPresShell_RENDER_IS_IMAGE: root::nsIPresShell__bindgen_ty_4 = 256; + pub const nsIPresShell_RENDER_AUTO_SCALE: root::nsIPresShell__bindgen_ty_4 = 128; + pub type nsIPresShell__bindgen_ty_4 = u32; + pub const nsIPresShell_FORCE_DRAW: root::nsIPresShell__bindgen_ty_5 = 1; + pub const nsIPresShell_ADD_FOR_SUBDOC: root::nsIPresShell__bindgen_ty_5 = 2; + pub const nsIPresShell_APPEND_UNSCROLLED_ONLY: root::nsIPresShell__bindgen_ty_5 = 4; + pub type nsIPresShell__bindgen_ty_5 = u32; + pub const nsIPresShell_PaintFlags_PAINT_LAYERS: root::nsIPresShell_PaintFlags = 1; + pub const nsIPresShell_PaintFlags_PAINT_COMPOSITE: root::nsIPresShell_PaintFlags = 2; + pub const nsIPresShell_PaintFlags_PAINT_SYNC_DECODE_IMAGES: root::nsIPresShell_PaintFlags = 4; + pub type nsIPresShell_PaintFlags = u32; + pub const nsIPresShell_PaintType_PAINT_DEFAULT: root::nsIPresShell_PaintType = 0; + pub const nsIPresShell_PaintType_PAINT_DELAYED_COMPRESS: root::nsIPresShell_PaintType = 1; + pub type nsIPresShell_PaintType = u32; + extern "C" { + #[link_name = "\u{1}_ZN12nsIPresShell12gCaptureInfoE"] + pub static mut nsIPresShell_gCaptureInfo: root::CapturingContentInfo; + } + extern "C" { + #[link_name = "\u{1}_ZN12nsIPresShell14gKeyDownTargetE"] + pub static mut nsIPresShell_gKeyDownTarget: *mut root::nsIContent; + } + #[test] + fn bindgen_test_layout_nsIPresShell() { + assert_eq!( + ::std::mem::size_of::<nsIPresShell>(), + 5344usize, + concat!("Size of: ", stringify!(nsIPresShell)) + ); + assert_eq!( + ::std::mem::align_of::<nsIPresShell>(), + 8usize, + concat!("Alignment of ", stringify!(nsIPresShell)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mDocument as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mDocument) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mPresContext as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mPresContext) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mStyleSet as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mStyleSet) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mFrameConstructor as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFrameConstructor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mViewManager as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mViewManager) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mFrameArena as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFrameArena) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mSelection as *const _ as usize }, + 5184usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mSelection) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mFrameManager as *const _ as usize }, + 5192usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFrameManager) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mForwardingContainer as *const _ as usize + }, + 5200usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mForwardingContainer) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mDocAccessible as *const _ as usize }, + 5208usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mDocAccessible) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mReflowContinueTimer as *const _ as usize + }, + 5216usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mReflowContinueTimer) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mPaintCount as *const _ as usize }, + 5224usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mPaintCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mScrollPositionClampingScrollPortSize + as *const _ as usize + }, + 5232usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mScrollPositionClampingScrollPortSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mAutoWeakFrames as *const _ as usize + }, + 5240usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mAutoWeakFrames) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mWeakFrames as *const _ as usize }, + 5248usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mWeakFrames) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mStyleCause as *const _ as usize }, + 5280usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mStyleCause) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mReflowCause as *const _ as usize }, + 5288usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mReflowCause) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mCanvasBackgroundColor as *const _ as usize + }, + 5296usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mCanvasBackgroundColor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mResolution as *const _ as usize }, + 5300usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mResolution) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mSelectionFlags as *const _ as usize + }, + 5308usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mSelectionFlags) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mChangeNestCount as *const _ as usize + }, + 5310usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mChangeNestCount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mRenderFlags as *const _ as usize }, + 5312usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mRenderFlags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mPresShellId as *const _ as usize }, + 5316usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mPresShellId) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mFontSizeInflationEmPerLine as *const _ + as usize + }, + 5320usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFontSizeInflationEmPerLine) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mFontSizeInflationMinTwips as *const _ + as usize + }, + 5324usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFontSizeInflationMinTwips) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mFontSizeInflationLineThreshold as *const _ + as usize + }, + 5328usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFontSizeInflationLineThreshold) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mFontSizeInflationForceEnabled as *const _ + as usize + }, + 5332usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFontSizeInflationForceEnabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mFontSizeInflationDisabledInMasterProcess + as *const _ as usize + }, + 5333usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFontSizeInflationDisabledInMasterProcess) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mFontSizeInflationEnabled as *const _ + as usize + }, + 5334usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFontSizeInflationEnabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mFontSizeInflationEnabledIsDirty + as *const _ as usize + }, + 5335usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mFontSizeInflationEnabledIsDirty) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mPaintingIsFrozen as *const _ as usize + }, + 5336usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mPaintingIsFrozen) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIPresShell>())).mIsNeverPainting as *const _ as usize + }, + 5337usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mIsNeverPainting) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIPresShell>())).mInFlush as *const _ as usize }, + 5338usize, + concat!( + "Offset of field: ", + stringify!(nsIPresShell), + "::", + stringify!(mInFlush) + ) + ); + } + impl nsIPresShell { + #[inline] + pub fn mDidInitialize(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) } + } + #[inline] + pub fn set_mDidInitialize(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsDestroying(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsDestroying(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(1usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsReflowing(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsReflowing(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(2usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsObservingDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsObservingDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(3usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsDocumentGone(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsDocumentGone(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(4usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPaintingSuppressed(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) } + } + #[inline] + pub fn set_mPaintingSuppressed(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(5usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsActive(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsActive(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(6usize, 1u8, val as u64) + } + } + #[inline] + pub fn mFrozen(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) } + } + #[inline] + pub fn set_mFrozen(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(7usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsFirstPaint(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsFirstPaint(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(8usize, 1u8, val as u64) + } + } + #[inline] + pub fn mObservesMutationsForPrint(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u8) } + } + #[inline] + pub fn set_mObservesMutationsForPrint(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(9usize, 1u8, val as u64) + } + } + #[inline] + pub fn mWasLastReflowInterrupted(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u8) } + } + #[inline] + pub fn set_mWasLastReflowInterrupted(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(10usize, 1u8, val as u64) + } + } + #[inline] + pub fn mScrollPositionClampingScrollPortSizeSet(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u8) } + } + #[inline] + pub fn set_mScrollPositionClampingScrollPortSizeSet(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(11usize, 1u8, val as u64) + } + } + #[inline] + pub fn mNeedLayoutFlush(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u8) } + } + #[inline] + pub fn set_mNeedLayoutFlush(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(12usize, 1u8, val as u64) + } + } + #[inline] + pub fn mNeedStyleFlush(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u8) } + } + #[inline] + pub fn set_mNeedStyleFlush(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(13usize, 1u8, val as u64) + } + } + #[inline] + pub fn mObservingStyleFlushes(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u8) } + } + #[inline] + pub fn set_mObservingStyleFlushes(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(14usize, 1u8, val as u64) + } + } + #[inline] + pub fn mObservingLayoutFlushes(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u8) } + } + #[inline] + pub fn set_mObservingLayoutFlushes(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(15usize, 1u8, val as u64) + } + } + #[inline] + pub fn mNeedThrottledAnimationFlush(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(16usize, 1u8) as u8) } + } + #[inline] + pub fn set_mNeedThrottledAnimationFlush(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(16usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mDidInitialize: bool, + mIsDestroying: bool, + mIsReflowing: bool, + mIsObservingDocument: bool, + mIsDocumentGone: bool, + mPaintingSuppressed: bool, + mIsActive: bool, + mFrozen: bool, + mIsFirstPaint: bool, + mObservesMutationsForPrint: bool, + mWasLastReflowInterrupted: bool, + mScrollPositionClampingScrollPortSizeSet: bool, + mNeedLayoutFlush: bool, + mNeedStyleFlush: bool, + mObservingStyleFlushes: bool, + mObservingLayoutFlushes: bool, + mNeedThrottledAnimationFlush: bool, + ) -> root::__BindgenBitfieldUnit<[u8; 3usize], u8> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 3usize], + u8, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let mDidInitialize: u8 = unsafe { ::std::mem::transmute(mDidInitialize) }; + mDidInitialize as u64 + }); + __bindgen_bitfield_unit.set(1usize, 1u8, { + let mIsDestroying: u8 = unsafe { ::std::mem::transmute(mIsDestroying) }; + mIsDestroying as u64 + }); + __bindgen_bitfield_unit.set(2usize, 1u8, { + let mIsReflowing: u8 = unsafe { ::std::mem::transmute(mIsReflowing) }; + mIsReflowing as u64 + }); + __bindgen_bitfield_unit.set(3usize, 1u8, { + let mIsObservingDocument: u8 = + unsafe { ::std::mem::transmute(mIsObservingDocument) }; + mIsObservingDocument as u64 + }); + __bindgen_bitfield_unit.set(4usize, 1u8, { + let mIsDocumentGone: u8 = unsafe { ::std::mem::transmute(mIsDocumentGone) }; + mIsDocumentGone as u64 + }); + __bindgen_bitfield_unit.set(5usize, 1u8, { + let mPaintingSuppressed: u8 = unsafe { ::std::mem::transmute(mPaintingSuppressed) }; + mPaintingSuppressed as u64 + }); + __bindgen_bitfield_unit.set(6usize, 1u8, { + let mIsActive: u8 = unsafe { ::std::mem::transmute(mIsActive) }; + mIsActive as u64 + }); + __bindgen_bitfield_unit.set(7usize, 1u8, { + let mFrozen: u8 = unsafe { ::std::mem::transmute(mFrozen) }; + mFrozen as u64 + }); + __bindgen_bitfield_unit.set(8usize, 1u8, { + let mIsFirstPaint: u8 = unsafe { ::std::mem::transmute(mIsFirstPaint) }; + mIsFirstPaint as u64 + }); + __bindgen_bitfield_unit.set(9usize, 1u8, { + let mObservesMutationsForPrint: u8 = + unsafe { ::std::mem::transmute(mObservesMutationsForPrint) }; + mObservesMutationsForPrint as u64 + }); + __bindgen_bitfield_unit.set(10usize, 1u8, { + let mWasLastReflowInterrupted: u8 = + unsafe { ::std::mem::transmute(mWasLastReflowInterrupted) }; + mWasLastReflowInterrupted as u64 + }); + __bindgen_bitfield_unit.set(11usize, 1u8, { + let mScrollPositionClampingScrollPortSizeSet: u8 = + unsafe { ::std::mem::transmute(mScrollPositionClampingScrollPortSizeSet) }; + mScrollPositionClampingScrollPortSizeSet as u64 + }); + __bindgen_bitfield_unit.set(12usize, 1u8, { + let mNeedLayoutFlush: u8 = unsafe { ::std::mem::transmute(mNeedLayoutFlush) }; + mNeedLayoutFlush as u64 + }); + __bindgen_bitfield_unit.set(13usize, 1u8, { + let mNeedStyleFlush: u8 = unsafe { ::std::mem::transmute(mNeedStyleFlush) }; + mNeedStyleFlush as u64 + }); + __bindgen_bitfield_unit.set(14usize, 1u8, { + let mObservingStyleFlushes: u8 = + unsafe { ::std::mem::transmute(mObservingStyleFlushes) }; + mObservingStyleFlushes as u64 + }); + __bindgen_bitfield_unit.set(15usize, 1u8, { + let mObservingLayoutFlushes: u8 = + unsafe { ::std::mem::transmute(mObservingLayoutFlushes) }; + mObservingLayoutFlushes as u64 + }); + __bindgen_bitfield_unit.set(16usize, 1u8, { + let mNeedThrottledAnimationFlush: u8 = + unsafe { ::std::mem::transmute(mNeedThrottledAnimationFlush) }; + mNeedThrottledAnimationFlush as u64 + }); + __bindgen_bitfield_unit + } + } + /// The signature of the timer callback function passed to initWithFuncCallback. /// This is the function that will get called when the timer expires if the /// timer is initialized via initWithFuncCallback. /// /// @param aTimer the timer which has expired - /// @param aClosure opaque parameter passed to initWithFuncCallback - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsITimer { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsITimer_COMTypeInfo { pub _address : u8 , } pub const nsITimer_TYPE_ONE_SHOT : root :: nsITimer__bindgen_ty_1 = 0 ; pub const nsITimer_TYPE_REPEATING_SLACK : root :: nsITimer__bindgen_ty_1 = 1 ; pub const nsITimer_TYPE_REPEATING_PRECISE : root :: nsITimer__bindgen_ty_1 = 2 ; pub const nsITimer_TYPE_REPEATING_PRECISE_CAN_SKIP : root :: nsITimer__bindgen_ty_1 = 3 ; pub const nsITimer_TYPE_REPEATING_SLACK_LOW_PRIORITY : root :: nsITimer__bindgen_ty_1 = 4 ; pub const nsITimer_TYPE_ONE_SHOT_LOW_PRIORITY : root :: nsITimer__bindgen_ty_1 = 5 ; pub type nsITimer__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsITimer ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsITimer > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsITimer ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsITimer > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsITimer ) ) ) ; } impl Clone for nsITimer { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsLanguageAtomService { pub mLangToGroup : [ u64 ; 4usize ] , pub mLocaleLanguage : root :: RefPtr < root :: nsAtom > , } pub type nsLanguageAtomService_Encoding = root :: mozilla :: Encoding ; pub type nsLanguageAtomService_NotNull < T > = root :: mozilla :: NotNull < T > ; # [ test ] fn bindgen_test_layout_nsLanguageAtomService ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsLanguageAtomService > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsLanguageAtomService ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsLanguageAtomService > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsLanguageAtomService ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsLanguageAtomService ) ) . mLangToGroup as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsLanguageAtomService ) , "::" , stringify ! ( mLangToGroup ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsLanguageAtomService ) ) . mLocaleLanguage as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsLanguageAtomService ) , "::" , stringify ! ( mLocaleLanguage ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsINamed { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsINamed_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsINamed ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsINamed > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsINamed ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsINamed > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsINamed ) ) ) ; } impl Clone for nsINamed { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIRunnable { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIRunnable_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIRunnable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIRunnable > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIRunnable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIRunnable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIRunnable ) ) ) ; } impl Clone for nsIRunnable { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIEventTarget { pub _base : root :: nsISupports , pub mVirtualThread : * mut root :: PRThread , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIEventTarget_COMTypeInfo { pub _address : u8 , } pub const nsIEventTarget_DISPATCH_NORMAL : root :: nsIEventTarget__bindgen_ty_1 = 0 ; pub const nsIEventTarget_DISPATCH_SYNC : root :: nsIEventTarget__bindgen_ty_1 = 1 ; pub const nsIEventTarget_DISPATCH_AT_END : root :: nsIEventTarget__bindgen_ty_1 = 2 ; pub type nsIEventTarget__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsIEventTarget ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIEventTarget > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsIEventTarget ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIEventTarget > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIEventTarget ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIEventTarget ) ) . mVirtualThread as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIEventTarget ) , "::" , stringify ! ( mVirtualThread ) ) ) ; } impl Clone for nsIEventTarget { fn clone ( & self ) -> Self { * self } } pub type nsRunnableMethod_BaseType = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsRunnableMethod_ReturnTypeEnforcer { pub _address : u8 , } pub type nsRunnableMethod_ReturnTypeEnforcer_ReturnTypeIsSafe = :: std :: os :: raw :: c_int ; pub type nsRunnableMethod_check = root :: nsRunnableMethod_ReturnTypeEnforcer ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsIGlobalObject { pub _base : root :: nsISupports , pub _base_1 : root :: mozilla :: dom :: DispatcherTrait , pub mHostObjectURIs : root :: nsTArray < root :: nsCString > , pub mIsDying : bool , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIGlobalObject_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIGlobalObject ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIGlobalObject > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsIGlobalObject ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIGlobalObject > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIGlobalObject ) ) ) ; } - /// The global object which keeps a script context for each supported script + /// @param aClosure opaque parameter passed to initWithFuncCallback + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsITimer { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsITimer_COMTypeInfo { + pub _address: u8, + } + pub const nsITimer_TYPE_ONE_SHOT: root::nsITimer__bindgen_ty_1 = 0; + pub const nsITimer_TYPE_REPEATING_SLACK: root::nsITimer__bindgen_ty_1 = 1; + pub const nsITimer_TYPE_REPEATING_PRECISE: root::nsITimer__bindgen_ty_1 = 2; + pub const nsITimer_TYPE_REPEATING_PRECISE_CAN_SKIP: root::nsITimer__bindgen_ty_1 = 3; + pub const nsITimer_TYPE_REPEATING_SLACK_LOW_PRIORITY: root::nsITimer__bindgen_ty_1 = 4; + pub const nsITimer_TYPE_ONE_SHOT_LOW_PRIORITY: root::nsITimer__bindgen_ty_1 = 5; + pub type nsITimer__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsITimer() { + assert_eq!( + ::std::mem::size_of::<nsITimer>(), + 8usize, + concat!("Size of: ", stringify!(nsITimer)) + ); + assert_eq!( + ::std::mem::align_of::<nsITimer>(), + 8usize, + concat!("Alignment of ", stringify!(nsITimer)) + ); + } + impl Clone for nsITimer { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct nsLanguageAtomService { + pub mLangToGroup: [u64; 4usize], + pub mLocaleLanguage: root::RefPtr<root::nsAtom>, + } + pub type nsLanguageAtomService_Encoding = root::mozilla::Encoding; + pub type nsLanguageAtomService_NotNull<T> = root::mozilla::NotNull<T>; + #[test] + fn bindgen_test_layout_nsLanguageAtomService() { + assert_eq!( + ::std::mem::size_of::<nsLanguageAtomService>(), + 40usize, + concat!("Size of: ", stringify!(nsLanguageAtomService)) + ); + assert_eq!( + ::std::mem::align_of::<nsLanguageAtomService>(), + 8usize, + concat!("Alignment of ", stringify!(nsLanguageAtomService)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsLanguageAtomService>())).mLangToGroup as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsLanguageAtomService), + "::", + stringify!(mLangToGroup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsLanguageAtomService>())).mLocaleLanguage as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsLanguageAtomService), + "::", + stringify!(mLocaleLanguage) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsINamed { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsINamed_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsINamed() { + assert_eq!( + ::std::mem::size_of::<nsINamed>(), + 8usize, + concat!("Size of: ", stringify!(nsINamed)) + ); + assert_eq!( + ::std::mem::align_of::<nsINamed>(), + 8usize, + concat!("Alignment of ", stringify!(nsINamed)) + ); + } + impl Clone for nsINamed { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIRunnable { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIRunnable_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIRunnable() { + assert_eq!( + ::std::mem::size_of::<nsIRunnable>(), + 8usize, + concat!("Size of: ", stringify!(nsIRunnable)) + ); + assert_eq!( + ::std::mem::align_of::<nsIRunnable>(), + 8usize, + concat!("Alignment of ", stringify!(nsIRunnable)) + ); + } + impl Clone for nsIRunnable { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIEventTarget { + pub _base: root::nsISupports, + pub mVirtualThread: *mut root::PRThread, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIEventTarget_COMTypeInfo { + pub _address: u8, + } + pub const nsIEventTarget_DISPATCH_NORMAL: root::nsIEventTarget__bindgen_ty_1 = 0; + pub const nsIEventTarget_DISPATCH_SYNC: root::nsIEventTarget__bindgen_ty_1 = 1; + pub const nsIEventTarget_DISPATCH_AT_END: root::nsIEventTarget__bindgen_ty_1 = 2; + pub type nsIEventTarget__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsIEventTarget() { + assert_eq!( + ::std::mem::size_of::<nsIEventTarget>(), + 16usize, + concat!("Size of: ", stringify!(nsIEventTarget)) + ); + assert_eq!( + ::std::mem::align_of::<nsIEventTarget>(), + 8usize, + concat!("Alignment of ", stringify!(nsIEventTarget)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIEventTarget>())).mVirtualThread as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIEventTarget), + "::", + stringify!(mVirtualThread) + ) + ); + } + impl Clone for nsIEventTarget { + fn clone(&self) -> Self { + *self + } + } + pub type nsRunnableMethod_BaseType = u8; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsRunnableMethod_ReturnTypeEnforcer { + pub _address: u8, + } + pub type nsRunnableMethod_ReturnTypeEnforcer_ReturnTypeIsSafe = ::std::os::raw::c_int; + pub type nsRunnableMethod_check = root::nsRunnableMethod_ReturnTypeEnforcer; + #[repr(C)] + #[derive(Debug)] + pub struct nsIGlobalObject { + pub _base: root::nsISupports, + pub _base_1: root::mozilla::dom::DispatcherTrait, + pub mHostObjectURIs: root::nsTArray<root::nsCString>, + pub mIsDying: bool, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIGlobalObject_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIGlobalObject() { + assert_eq!( + ::std::mem::size_of::<nsIGlobalObject>(), + 32usize, + concat!("Size of: ", stringify!(nsIGlobalObject)) + ); + assert_eq!( + ::std::mem::align_of::<nsIGlobalObject>(), + 8usize, + concat!("Alignment of ", stringify!(nsIGlobalObject)) + ); + } + /// The global object which keeps a script context for each supported script /// language. This often used to store per-window global state. /// This is a heavyweight interface implemented only by DOM globals, and - /// it might go away some time in the future. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsIScriptGlobalObject { pub _base : root :: nsIGlobalObject , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIScriptGlobalObject_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIScriptGlobalObject ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIScriptGlobalObject > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsIScriptGlobalObject ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIScriptGlobalObject > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIScriptGlobalObject ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIObserver { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIObserver_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIObserver > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIObserver ) ) ) ; } impl Clone for nsIObserver { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIXPConnectJSObjectHolder { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIXPConnectJSObjectHolder_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIXPConnectJSObjectHolder ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIXPConnectJSObjectHolder > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIXPConnectJSObjectHolder ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIXPConnectJSObjectHolder > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIXPConnectJSObjectHolder ) ) ) ; } impl Clone for nsIXPConnectJSObjectHolder { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIXPConnectWrappedJS { pub _base : root :: nsIXPConnectJSObjectHolder , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIXPConnectWrappedJS_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIXPConnectWrappedJS ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIXPConnectWrappedJS > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIXPConnectWrappedJS ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIXPConnectWrappedJS > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIXPConnectWrappedJS ) ) ) ; } impl Clone for nsIXPConnectWrappedJS { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIXPConnect { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIXPConnect_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIXPConnect ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIXPConnect > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIXPConnect ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIXPConnect > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIXPConnect ) ) ) ; } impl Clone for nsIXPConnect { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIURI { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIURI_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIURI ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIURI > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIURI ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIURI > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIURI ) ) ) ; } impl Clone for nsIURI { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIControllers { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct mozIDOMWindow { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct mozIDOMWindow_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_mozIDOMWindow ( ) { assert_eq ! ( :: std :: mem :: size_of :: < mozIDOMWindow > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( mozIDOMWindow ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < mozIDOMWindow > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( mozIDOMWindow ) ) ) ; } impl Clone for mozIDOMWindow { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct mozIDOMWindowProxy { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct mozIDOMWindowProxy_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_mozIDOMWindowProxy ( ) { assert_eq ! ( :: std :: mem :: size_of :: < mozIDOMWindowProxy > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( mozIDOMWindowProxy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < mozIDOMWindowProxy > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( mozIDOMWindowProxy ) ) ) ; } impl Clone for mozIDOMWindowProxy { fn clone ( & self ) -> Self { * self } } pub type SuspendTypes = u32 ; pub const PopupControlState_openAllowed : root :: PopupControlState = 0 ; pub const PopupControlState_openControlled : root :: PopupControlState = 1 ; pub const PopupControlState_openBlocked : root :: PopupControlState = 2 ; pub const PopupControlState_openAbused : root :: PopupControlState = 3 ; pub const PopupControlState_openOverridden : root :: PopupControlState = 4 ; pub type PopupControlState = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] pub struct nsPIDOMWindowInner { pub _base : root :: mozIDOMWindow , pub mChromeEventHandler : root :: nsCOMPtr , pub mDoc : root :: nsCOMPtr , pub mDocumentURI : root :: nsCOMPtr , pub mDocBaseURI : root :: nsCOMPtr , pub mParentTarget : root :: nsCOMPtr , pub mPerformance : root :: RefPtr < root :: mozilla :: dom :: Performance > , pub mTimeoutManager : root :: mozilla :: UniquePtr < root :: mozilla :: dom :: TimeoutManager > , pub mServiceWorkerRegistrationTable : root :: nsPIDOMWindowInner_ServiceWorkerRegistrationTable , pub mMutationBits : u32 , pub mActivePeerConnections : u32 , pub mIsDocumentLoaded : bool , pub mIsHandlingResizeEvent : bool , pub mMayHavePaintEventListener : bool , pub mMayHaveTouchEventListener : bool , pub mMayHaveSelectionChangeEventListener : bool , pub mMayHaveMouseEnterLeaveEventListener : bool , pub mMayHavePointerEnterLeaveEventListener : bool , pub mInnerObjectsFreed : bool , pub mAudioCaptured : bool , pub mOuterWindow : root :: nsCOMPtr , pub mFocusedNode : root :: nsCOMPtr , pub mAudioContexts : root :: nsTArray < * mut root :: mozilla :: dom :: AudioContext > , pub mTabGroup : root :: RefPtr < root :: mozilla :: dom :: TabGroup > , pub mWindowID : u64 , pub mHasNotifiedGlobalCreated : bool , pub mMarkedCCGeneration : u32 , pub mTopInnerWindow : root :: nsCOMPtr , pub mHasTriedToCacheTopInnerWindow : bool , pub mNumOfIndexedDBDatabases : u32 , pub mNumOfOpenWebSockets : u32 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsPIDOMWindowInner_COMTypeInfo { pub _address : u8 , } pub type nsPIDOMWindowInner_ServiceWorkerRegistrationTable = [ u64 ; 4usize ] ; # [ test ] fn bindgen_test_layout_nsPIDOMWindowInner ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPIDOMWindowInner > ( ) , 192usize , concat ! ( "Size of: " , stringify ! ( nsPIDOMWindowInner ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPIDOMWindowInner > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPIDOMWindowInner ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mChromeEventHandler as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mChromeEventHandler ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mDoc as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mDoc ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mDocumentURI as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mDocumentURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mDocBaseURI as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mDocBaseURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mParentTarget as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mParentTarget ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mPerformance as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mPerformance ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mTimeoutManager as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mTimeoutManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mServiceWorkerRegistrationTable as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mServiceWorkerRegistrationTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mMutationBits as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mMutationBits ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mActivePeerConnections as * const _ as usize } , 100usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mActivePeerConnections ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mIsDocumentLoaded as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mIsDocumentLoaded ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mIsHandlingResizeEvent as * const _ as usize } , 105usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mIsHandlingResizeEvent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mMayHavePaintEventListener as * const _ as usize } , 106usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mMayHavePaintEventListener ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mMayHaveTouchEventListener as * const _ as usize } , 107usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mMayHaveTouchEventListener ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mMayHaveSelectionChangeEventListener as * const _ as usize } , 108usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mMayHaveSelectionChangeEventListener ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mMayHaveMouseEnterLeaveEventListener as * const _ as usize } , 109usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mMayHaveMouseEnterLeaveEventListener ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mMayHavePointerEnterLeaveEventListener as * const _ as usize } , 110usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mMayHavePointerEnterLeaveEventListener ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mInnerObjectsFreed as * const _ as usize } , 111usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mInnerObjectsFreed ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mAudioCaptured as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mAudioCaptured ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mOuterWindow as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mOuterWindow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mFocusedNode as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mFocusedNode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mAudioContexts as * const _ as usize } , 136usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mAudioContexts ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mTabGroup as * const _ as usize } , 144usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mTabGroup ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mWindowID as * const _ as usize } , 152usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mWindowID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mHasNotifiedGlobalCreated as * const _ as usize } , 160usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mHasNotifiedGlobalCreated ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mMarkedCCGeneration as * const _ as usize } , 164usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mMarkedCCGeneration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mTopInnerWindow as * const _ as usize } , 168usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mTopInnerWindow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mHasTriedToCacheTopInnerWindow as * const _ as usize } , 176usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mHasTriedToCacheTopInnerWindow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mNumOfIndexedDBDatabases as * const _ as usize } , 180usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mNumOfIndexedDBDatabases ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowInner ) ) . mNumOfOpenWebSockets as * const _ as usize } , 184usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowInner ) , "::" , stringify ! ( mNumOfOpenWebSockets ) ) ) ; } # [ repr ( C ) ] pub struct nsPIDOMWindowOuter { pub _base : root :: mozIDOMWindowProxy , pub mChromeEventHandler : root :: nsCOMPtr , pub mDoc : root :: nsCOMPtr , pub mDocumentURI : root :: nsCOMPtr , pub mDocBaseURI : root :: nsCOMPtr , pub mParentTarget : root :: nsCOMPtr , pub mFrameElement : root :: nsCOMPtr , pub mDocShell : root :: nsCOMPtr , pub mModalStateDepth : u32 , pub mIsActive : bool , pub mIsBackground : bool , - /// The suspended types can be "disposable" or "permanent". This varable only + /// it might go away some time in the future. + #[repr(C)] + #[derive(Debug)] + pub struct nsIScriptGlobalObject { + pub _base: root::nsIGlobalObject, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIScriptGlobalObject_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIScriptGlobalObject() { + assert_eq!( + ::std::mem::size_of::<nsIScriptGlobalObject>(), + 32usize, + concat!("Size of: ", stringify!(nsIScriptGlobalObject)) + ); + assert_eq!( + ::std::mem::align_of::<nsIScriptGlobalObject>(), + 8usize, + concat!("Alignment of ", stringify!(nsIScriptGlobalObject)) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIObserver { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIObserver_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIObserver() { + assert_eq!( + ::std::mem::size_of::<nsIObserver>(), + 8usize, + concat!("Size of: ", stringify!(nsIObserver)) + ); + assert_eq!( + ::std::mem::align_of::<nsIObserver>(), + 8usize, + concat!("Alignment of ", stringify!(nsIObserver)) + ); + } + impl Clone for nsIObserver { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIXPConnectJSObjectHolder { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIXPConnectJSObjectHolder_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIXPConnectJSObjectHolder() { + assert_eq!( + ::std::mem::size_of::<nsIXPConnectJSObjectHolder>(), + 8usize, + concat!("Size of: ", stringify!(nsIXPConnectJSObjectHolder)) + ); + assert_eq!( + ::std::mem::align_of::<nsIXPConnectJSObjectHolder>(), + 8usize, + concat!("Alignment of ", stringify!(nsIXPConnectJSObjectHolder)) + ); + } + impl Clone for nsIXPConnectJSObjectHolder { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIXPConnectWrappedJS { + pub _base: root::nsIXPConnectJSObjectHolder, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIXPConnectWrappedJS_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIXPConnectWrappedJS() { + assert_eq!( + ::std::mem::size_of::<nsIXPConnectWrappedJS>(), + 8usize, + concat!("Size of: ", stringify!(nsIXPConnectWrappedJS)) + ); + assert_eq!( + ::std::mem::align_of::<nsIXPConnectWrappedJS>(), + 8usize, + concat!("Alignment of ", stringify!(nsIXPConnectWrappedJS)) + ); + } + impl Clone for nsIXPConnectWrappedJS { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIXPConnect { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIXPConnect_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIXPConnect() { + assert_eq!( + ::std::mem::size_of::<nsIXPConnect>(), + 8usize, + concat!("Size of: ", stringify!(nsIXPConnect)) + ); + assert_eq!( + ::std::mem::align_of::<nsIXPConnect>(), + 8usize, + concat!("Alignment of ", stringify!(nsIXPConnect)) + ); + } + impl Clone for nsIXPConnect { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIURI { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIURI_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIURI() { + assert_eq!( + ::std::mem::size_of::<nsIURI>(), + 8usize, + concat!("Size of: ", stringify!(nsIURI)) + ); + assert_eq!( + ::std::mem::align_of::<nsIURI>(), + 8usize, + concat!("Alignment of ", stringify!(nsIURI)) + ); + } + impl Clone for nsIURI { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIControllers { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct mozIDOMWindow { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct mozIDOMWindow_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_mozIDOMWindow() { + assert_eq!( + ::std::mem::size_of::<mozIDOMWindow>(), + 8usize, + concat!("Size of: ", stringify!(mozIDOMWindow)) + ); + assert_eq!( + ::std::mem::align_of::<mozIDOMWindow>(), + 8usize, + concat!("Alignment of ", stringify!(mozIDOMWindow)) + ); + } + impl Clone for mozIDOMWindow { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct mozIDOMWindowProxy { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct mozIDOMWindowProxy_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_mozIDOMWindowProxy() { + assert_eq!( + ::std::mem::size_of::<mozIDOMWindowProxy>(), + 8usize, + concat!("Size of: ", stringify!(mozIDOMWindowProxy)) + ); + assert_eq!( + ::std::mem::align_of::<mozIDOMWindowProxy>(), + 8usize, + concat!("Alignment of ", stringify!(mozIDOMWindowProxy)) + ); + } + impl Clone for mozIDOMWindowProxy { + fn clone(&self) -> Self { + *self + } + } + pub type SuspendTypes = u32; + pub const PopupControlState_openAllowed: root::PopupControlState = 0; + pub const PopupControlState_openControlled: root::PopupControlState = 1; + pub const PopupControlState_openBlocked: root::PopupControlState = 2; + pub const PopupControlState_openAbused: root::PopupControlState = 3; + pub const PopupControlState_openOverridden: root::PopupControlState = 4; + pub type PopupControlState = u32; + #[repr(C)] + pub struct nsPIDOMWindowInner { + pub _base: root::mozIDOMWindow, + pub mChromeEventHandler: root::nsCOMPtr, + pub mDoc: root::nsCOMPtr, + pub mDocumentURI: root::nsCOMPtr, + pub mDocBaseURI: root::nsCOMPtr, + pub mParentTarget: root::nsCOMPtr, + pub mPerformance: root::RefPtr<root::mozilla::dom::Performance>, + pub mTimeoutManager: root::mozilla::UniquePtr<root::mozilla::dom::TimeoutManager>, + pub mServiceWorkerRegistrationTable: + root::nsPIDOMWindowInner_ServiceWorkerRegistrationTable, + pub mMutationBits: u32, + pub mActivePeerConnections: u32, + pub mIsDocumentLoaded: bool, + pub mIsHandlingResizeEvent: bool, + pub mMayHavePaintEventListener: bool, + pub mMayHaveTouchEventListener: bool, + pub mMayHaveSelectionChangeEventListener: bool, + pub mMayHaveMouseEnterLeaveEventListener: bool, + pub mMayHavePointerEnterLeaveEventListener: bool, + pub mInnerObjectsFreed: bool, + pub mAudioCaptured: bool, + pub mOuterWindow: root::nsCOMPtr, + pub mFocusedNode: root::nsCOMPtr, + pub mAudioContexts: root::nsTArray<*mut root::mozilla::dom::AudioContext>, + pub mTabGroup: root::RefPtr<root::mozilla::dom::TabGroup>, + pub mWindowID: u64, + pub mHasNotifiedGlobalCreated: bool, + pub mMarkedCCGeneration: u32, + pub mTopInnerWindow: root::nsCOMPtr, + pub mHasTriedToCacheTopInnerWindow: bool, + pub mNumOfIndexedDBDatabases: u32, + pub mNumOfOpenWebSockets: u32, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsPIDOMWindowInner_COMTypeInfo { + pub _address: u8, + } + pub type nsPIDOMWindowInner_ServiceWorkerRegistrationTable = [u64; 4usize]; + #[test] + fn bindgen_test_layout_nsPIDOMWindowInner() { + assert_eq!( + ::std::mem::size_of::<nsPIDOMWindowInner>(), + 192usize, + concat!("Size of: ", stringify!(nsPIDOMWindowInner)) + ); + assert_eq!( + ::std::mem::align_of::<nsPIDOMWindowInner>(), + 8usize, + concat!("Alignment of ", stringify!(nsPIDOMWindowInner)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mChromeEventHandler as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mChromeEventHandler) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mDoc as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mDoc) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mDocumentURI as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mDocumentURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mDocBaseURI as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mDocBaseURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mParentTarget as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mParentTarget) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mPerformance as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mPerformance) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mTimeoutManager as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mTimeoutManager) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mServiceWorkerRegistrationTable + as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mServiceWorkerRegistrationTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mMutationBits as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mMutationBits) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mActivePeerConnections as *const _ + as usize + }, + 100usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mActivePeerConnections) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mIsDocumentLoaded as *const _ + as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mIsDocumentLoaded) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mIsHandlingResizeEvent as *const _ + as usize + }, + 105usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mIsHandlingResizeEvent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mMayHavePaintEventListener + as *const _ as usize + }, + 106usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mMayHavePaintEventListener) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mMayHaveTouchEventListener + as *const _ as usize + }, + 107usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mMayHaveTouchEventListener) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mMayHaveSelectionChangeEventListener + as *const _ as usize + }, + 108usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mMayHaveSelectionChangeEventListener) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mMayHaveMouseEnterLeaveEventListener + as *const _ as usize + }, + 109usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mMayHaveMouseEnterLeaveEventListener) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())) + .mMayHavePointerEnterLeaveEventListener as *const _ as usize + }, + 110usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mMayHavePointerEnterLeaveEventListener) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mInnerObjectsFreed as *const _ + as usize + }, + 111usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mInnerObjectsFreed) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mAudioCaptured as *const _ as usize + }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mAudioCaptured) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mOuterWindow as *const _ as usize + }, + 120usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mOuterWindow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mFocusedNode as *const _ as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mFocusedNode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mAudioContexts as *const _ as usize + }, + 136usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mAudioContexts) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mTabGroup as *const _ as usize + }, + 144usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mTabGroup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mWindowID as *const _ as usize + }, + 152usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mWindowID) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mHasNotifiedGlobalCreated as *const _ + as usize + }, + 160usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mHasNotifiedGlobalCreated) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mMarkedCCGeneration as *const _ + as usize + }, + 164usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mMarkedCCGeneration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mTopInnerWindow as *const _ as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mTopInnerWindow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mHasTriedToCacheTopInnerWindow + as *const _ as usize + }, + 176usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mHasTriedToCacheTopInnerWindow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mNumOfIndexedDBDatabases as *const _ + as usize + }, + 180usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mNumOfIndexedDBDatabases) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowInner>())).mNumOfOpenWebSockets as *const _ + as usize + }, + 184usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowInner), + "::", + stringify!(mNumOfOpenWebSockets) + ) + ); + } + #[repr(C)] + pub struct nsPIDOMWindowOuter { + pub _base: root::mozIDOMWindowProxy, + pub mChromeEventHandler: root::nsCOMPtr, + pub mDoc: root::nsCOMPtr, + pub mDocumentURI: root::nsCOMPtr, + pub mDocBaseURI: root::nsCOMPtr, + pub mParentTarget: root::nsCOMPtr, + pub mFrameElement: root::nsCOMPtr, + pub mDocShell: root::nsCOMPtr, + pub mModalStateDepth: u32, + pub mIsActive: bool, + pub mIsBackground: bool, + /// The suspended types can be "disposable" or "permanent". This varable only /// stores the value about permanent suspend. /// - disposable /// To pause all playing media in that window, but doesn't affect the media @@ -895,24 +20424,586 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// - permanent /// To pause all media in that window, and also affect the media which starts - /// after that. - pub mMediaSuspend : root :: SuspendTypes , pub mAudioMuted : bool , pub mAudioVolume : f32 , pub mDesktopModeViewport : bool , pub mIsRootOuterWindow : bool , pub mInnerWindow : * mut root :: nsPIDOMWindowInner , pub mTabGroup : root :: RefPtr < root :: mozilla :: dom :: TabGroup > , pub mWindowID : u64 , pub mMarkedCCGeneration : u32 , pub mServiceWorkersTestingEnabled : bool , pub mLargeAllocStatus : root :: mozilla :: dom :: LargeAllocStatus , pub mOpenerForInitialContentBrowser : root :: nsCOMPtr , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsPIDOMWindowOuter_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsPIDOMWindowOuter ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPIDOMWindowOuter > ( ) , 128usize , concat ! ( "Size of: " , stringify ! ( nsPIDOMWindowOuter ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPIDOMWindowOuter > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPIDOMWindowOuter ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mChromeEventHandler as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mChromeEventHandler ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mDoc as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mDoc ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mDocumentURI as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mDocumentURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mDocBaseURI as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mDocBaseURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mParentTarget as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mParentTarget ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mFrameElement as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mFrameElement ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mDocShell as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mDocShell ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mModalStateDepth as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mModalStateDepth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mIsActive as * const _ as usize } , 68usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mIsActive ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mIsBackground as * const _ as usize } , 69usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mIsBackground ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mMediaSuspend as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mMediaSuspend ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mAudioMuted as * const _ as usize } , 76usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mAudioMuted ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mAudioVolume as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mAudioVolume ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mDesktopModeViewport as * const _ as usize } , 84usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mDesktopModeViewport ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mIsRootOuterWindow as * const _ as usize } , 85usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mIsRootOuterWindow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mInnerWindow as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mInnerWindow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mTabGroup as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mTabGroup ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mWindowID as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mWindowID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mMarkedCCGeneration as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mMarkedCCGeneration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mServiceWorkersTestingEnabled as * const _ as usize } , 116usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mServiceWorkersTestingEnabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mLargeAllocStatus as * const _ as usize } , 117usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mLargeAllocStatus ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPIDOMWindowOuter ) ) . mOpenerForInitialContentBrowser as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( nsPIDOMWindowOuter ) , "::" , stringify ! ( mOpenerForInitialContentBrowser ) ) ) ; } pub mod xpc { # [ allow ( unused_imports ) ] use self :: super :: super :: root ; } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsCompatibility { eCompatibility_FullStandards = 1 , eCompatibility_AlmostStandards = 2 , eCompatibility_NavQuirks = 3 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsILoadGroup { pub _base : root :: nsIRequest , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsILoadGroup_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsILoadGroup ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsILoadGroup > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsILoadGroup ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsILoadGroup > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsILoadGroup ) ) ) ; } impl Clone for nsILoadGroup { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIRequestObserver { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIRequestObserver_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIRequestObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIRequestObserver > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIRequestObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIRequestObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIRequestObserver ) ) ) ; } impl Clone for nsIRequestObserver { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIStreamListener { pub _base : root :: nsIRequestObserver , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIStreamListener_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIStreamListener ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIStreamListener > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIStreamListener ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIStreamListener > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIStreamListener ) ) ) ; } impl Clone for nsIStreamListener { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsParserBase { pub _base : root :: nsISupports , } # [ test ] fn bindgen_test_layout_nsParserBase ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsParserBase > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsParserBase ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsParserBase > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsParserBase ) ) ) ; } impl Clone for nsParserBase { fn clone ( & self ) -> Self { * self } } - /// This GECKO-INTERNAL interface is on track to being REMOVED (or refactored + /// after that. + pub mMediaSuspend: root::SuspendTypes, + pub mAudioMuted: bool, + pub mAudioVolume: f32, + pub mDesktopModeViewport: bool, + pub mIsRootOuterWindow: bool, + pub mInnerWindow: *mut root::nsPIDOMWindowInner, + pub mTabGroup: root::RefPtr<root::mozilla::dom::TabGroup>, + pub mWindowID: u64, + pub mMarkedCCGeneration: u32, + pub mServiceWorkersTestingEnabled: bool, + pub mLargeAllocStatus: root::mozilla::dom::LargeAllocStatus, + pub mOpenerForInitialContentBrowser: root::nsCOMPtr, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsPIDOMWindowOuter_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsPIDOMWindowOuter() { + assert_eq!( + ::std::mem::size_of::<nsPIDOMWindowOuter>(), + 128usize, + concat!("Size of: ", stringify!(nsPIDOMWindowOuter)) + ); + assert_eq!( + ::std::mem::align_of::<nsPIDOMWindowOuter>(), + 8usize, + concat!("Alignment of ", stringify!(nsPIDOMWindowOuter)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mChromeEventHandler as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mChromeEventHandler) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mDoc as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mDoc) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mDocumentURI as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mDocumentURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mDocBaseURI as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mDocBaseURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mParentTarget as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mParentTarget) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mFrameElement as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mFrameElement) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mDocShell as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mDocShell) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mModalStateDepth as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mModalStateDepth) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mIsActive as *const _ as usize + }, + 68usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mIsActive) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mIsBackground as *const _ as usize + }, + 69usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mIsBackground) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mMediaSuspend as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mMediaSuspend) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mAudioMuted as *const _ as usize + }, + 76usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mAudioMuted) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mAudioVolume as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mAudioVolume) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mDesktopModeViewport as *const _ + as usize + }, + 84usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mDesktopModeViewport) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mIsRootOuterWindow as *const _ + as usize + }, + 85usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mIsRootOuterWindow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mInnerWindow as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mInnerWindow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mTabGroup as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mTabGroup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mWindowID as *const _ as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mWindowID) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mMarkedCCGeneration as *const _ + as usize + }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mMarkedCCGeneration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mServiceWorkersTestingEnabled + as *const _ as usize + }, + 116usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mServiceWorkersTestingEnabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mLargeAllocStatus as *const _ + as usize + }, + 117usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mLargeAllocStatus) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPIDOMWindowOuter>())).mOpenerForInitialContentBrowser + as *const _ as usize + }, + 120usize, + concat!( + "Offset of field: ", + stringify!(nsPIDOMWindowOuter), + "::", + stringify!(mOpenerForInitialContentBrowser) + ) + ); + } + pub mod xpc { + #[allow(unused_imports)] + use self::super::super::root; + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsCompatibility { + eCompatibility_FullStandards = 1, + eCompatibility_AlmostStandards = 2, + eCompatibility_NavQuirks = 3, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsILoadGroup { + pub _base: root::nsIRequest, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsILoadGroup_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsILoadGroup() { + assert_eq!( + ::std::mem::size_of::<nsILoadGroup>(), + 8usize, + concat!("Size of: ", stringify!(nsILoadGroup)) + ); + assert_eq!( + ::std::mem::align_of::<nsILoadGroup>(), + 8usize, + concat!("Alignment of ", stringify!(nsILoadGroup)) + ); + } + impl Clone for nsILoadGroup { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIRequestObserver { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIRequestObserver_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIRequestObserver() { + assert_eq!( + ::std::mem::size_of::<nsIRequestObserver>(), + 8usize, + concat!("Size of: ", stringify!(nsIRequestObserver)) + ); + assert_eq!( + ::std::mem::align_of::<nsIRequestObserver>(), + 8usize, + concat!("Alignment of ", stringify!(nsIRequestObserver)) + ); + } + impl Clone for nsIRequestObserver { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIStreamListener { + pub _base: root::nsIRequestObserver, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIStreamListener_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIStreamListener() { + assert_eq!( + ::std::mem::size_of::<nsIStreamListener>(), + 8usize, + concat!("Size of: ", stringify!(nsIStreamListener)) + ); + assert_eq!( + ::std::mem::align_of::<nsIStreamListener>(), + 8usize, + concat!("Alignment of ", stringify!(nsIStreamListener)) + ); + } + impl Clone for nsIStreamListener { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsParserBase { + pub _base: root::nsISupports, + } + #[test] + fn bindgen_test_layout_nsParserBase() { + assert_eq!( + ::std::mem::size_of::<nsParserBase>(), + 8usize, + concat!("Size of: ", stringify!(nsParserBase)) + ); + assert_eq!( + ::std::mem::align_of::<nsParserBase>(), + 8usize, + concat!("Alignment of ", stringify!(nsParserBase)) + ); + } + impl Clone for nsParserBase { + fn clone(&self) -> Self { + *self + } + } + /// This GECKO-INTERNAL interface is on track to being REMOVED (or refactored /// to the point of being near-unrecognizable). /// /// Please DO NOT #include this file in comm-central code, in your XULRunner /// app or binary extensions. /// /// Please DO NOT #include this into new files even inside Gecko. It is more - /// likely than not that #including this header is the wrong thing to do. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIParser { pub _base : root :: nsParserBase , } pub type nsIParser_Encoding = root :: mozilla :: Encoding ; pub type nsIParser_NotNull < T > = root :: mozilla :: NotNull < T > ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIParser_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIParser ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIParser > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIParser ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIParser > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIParser ) ) ) ; } impl Clone for nsIParser { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIUUIDGenerator { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIUUIDGenerator_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIUUIDGenerator ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIUUIDGenerator > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIUUIDGenerator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIUUIDGenerator > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIUUIDGenerator ) ) ) ; } impl Clone for nsIUUIDGenerator { fn clone ( & self ) -> Self { * self } } - /// Hashtable key class to use with nsTHashtable/nsBaseHashtable - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsURIHashKey { pub _base : root :: PLDHashEntryHdr , pub mKey : root :: nsCOMPtr , } pub type nsURIHashKey_KeyType = * mut root :: nsIURI ; pub type nsURIHashKey_KeyTypePointer = * const root :: nsIURI ; pub const nsURIHashKey_ALLOW_MEMMOVE : root :: nsURIHashKey__bindgen_ty_1 = 1 ; pub type nsURIHashKey__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsURIHashKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsURIHashKey > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsURIHashKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsURIHashKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsURIHashKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsURIHashKey ) ) . mKey as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsURIHashKey ) , "::" , stringify ! ( mKey ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsContentList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIIOService { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIStringBundleService { _unused : [ u8 ; 0 ] } - /// Data used to track the expiration state of an object. We promise that this + /// likely than not that #including this header is the wrong thing to do. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIParser { + pub _base: root::nsParserBase, + } + pub type nsIParser_Encoding = root::mozilla::Encoding; + pub type nsIParser_NotNull<T> = root::mozilla::NotNull<T>; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIParser_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIParser() { + assert_eq!( + ::std::mem::size_of::<nsIParser>(), + 8usize, + concat!("Size of: ", stringify!(nsIParser)) + ); + assert_eq!( + ::std::mem::align_of::<nsIParser>(), + 8usize, + concat!("Alignment of ", stringify!(nsIParser)) + ); + } + impl Clone for nsIParser { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIUUIDGenerator { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIUUIDGenerator_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIUUIDGenerator() { + assert_eq!( + ::std::mem::size_of::<nsIUUIDGenerator>(), + 8usize, + concat!("Size of: ", stringify!(nsIUUIDGenerator)) + ); + assert_eq!( + ::std::mem::align_of::<nsIUUIDGenerator>(), + 8usize, + concat!("Alignment of ", stringify!(nsIUUIDGenerator)) + ); + } + impl Clone for nsIUUIDGenerator { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsContentList { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIIOService { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIStringBundleService { + _unused: [u8; 0], + } + /// Data used to track the expiration state of an object. We promise that this /// is 32 bits so that objects that includes this as a field can pad and align - /// efficiently. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsExpirationState { pub _bitfield_1 : u32 , pub __bindgen_align : [ u32 ; 0usize ] , } pub const nsExpirationState_NOT_TRACKED : root :: nsExpirationState__bindgen_ty_1 = 15 ; pub const nsExpirationState_MAX_INDEX_IN_GENERATION : root :: nsExpirationState__bindgen_ty_1 = 268435455 ; pub type nsExpirationState__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsExpirationState ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsExpirationState > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( nsExpirationState ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsExpirationState > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsExpirationState ) ) ) ; } impl Clone for nsExpirationState { fn clone ( & self ) -> Self { * self } } impl nsExpirationState { # [ inline ] pub fn mGeneration ( & self ) -> u32 { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0xf as u32 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mGeneration ( & mut self , val : u32 ) { let mask = 0xf as u32 ; let val = val as u32 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn mIndexInGeneration ( & self ) -> u32 { let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; let mask = 0xfffffff0 as u32 ; let val = ( unit_field_val & mask ) >> 4usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIndexInGeneration ( & mut self , val : u32 ) { let mask = 0xfffffff0 as u32 ; let val = val as u32 as u32 ; let mut unit_field_val : u32 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u32 as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 4usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u32 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mGeneration : u32 , mIndexInGeneration : u32 ) -> u32 { ( ( 0 | ( ( mGeneration as u32 as u32 ) << 0usize ) & ( 0xf as u32 ) ) | ( ( mIndexInGeneration as u32 as u32 ) << 4usize ) & ( 0xfffffff0 as u32 ) ) } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsBaseContentList { _unused : [ u8 ; 0 ] } - /// Right now our identifier map entries contain information for 'name' + /// efficiently. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsExpirationState { + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 4usize], u32>, + pub __bindgen_align: [u32; 0usize], + } + pub const nsExpirationState_NOT_TRACKED: root::nsExpirationState__bindgen_ty_1 = 15; + pub const nsExpirationState_MAX_INDEX_IN_GENERATION: root::nsExpirationState__bindgen_ty_1 = + 268435455; + pub type nsExpirationState__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsExpirationState() { + assert_eq!( + ::std::mem::size_of::<nsExpirationState>(), + 4usize, + concat!("Size of: ", stringify!(nsExpirationState)) + ); + assert_eq!( + ::std::mem::align_of::<nsExpirationState>(), + 4usize, + concat!("Alignment of ", stringify!(nsExpirationState)) + ); + } + impl Clone for nsExpirationState { + fn clone(&self) -> Self { + *self + } + } + impl nsExpirationState { + #[inline] + pub fn mGeneration(&self) -> u32 { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u32) } + } + #[inline] + pub fn set_mGeneration(&mut self, val: u32) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 4u8, val as u64) + } + } + #[inline] + pub fn mIndexInGeneration(&self) -> u32 { + unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 28u8) as u32) } + } + #[inline] + pub fn set_mIndexInGeneration(&mut self, val: u32) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(4usize, 28u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mGeneration: u32, + mIndexInGeneration: u32, + ) -> root::__BindgenBitfieldUnit<[u8; 4usize], u32> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 4usize], + u32, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 4u8, { + let mGeneration: u32 = unsafe { ::std::mem::transmute(mGeneration) }; + mGeneration as u64 + }); + __bindgen_bitfield_unit.set(4usize, 28u8, { + let mIndexInGeneration: u32 = unsafe { ::std::mem::transmute(mIndexInGeneration) }; + mIndexInGeneration as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsBaseContentList { + _unused: [u8; 0], + } + /// Right now our identifier map entries contain information for 'name' /// and 'id' mappings of a given string. This is so that /// nsHTMLDocument::ResolveName only has to do one hash lookup instead /// of two. It's not clear whether this still matters for performance. @@ -921,617 +21012,6008 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// when all elements with the given ID are removed and we remove /// the ID's nsIdentifierMapEntry, the document.all result is released too. /// Perhaps the document.all results should have their own hashtable - /// in nsHTMLDocument. - # [ repr ( C ) ] pub struct nsIdentifierMapEntry { pub _base : root :: PLDHashEntryHdr , pub mKey : root :: nsIdentifierMapEntry_AtomOrString , pub mIdContentList : [ u64 ; 3usize ] , pub mNameContentList : root :: RefPtr < root :: nsBaseContentList > , pub mChangeCallbacks : u64 , pub mImageElement : root :: RefPtr < root :: nsIdentifierMapEntry_Element > , } pub type nsIdentifierMapEntry_Element = root :: mozilla :: dom :: Element ; pub use self :: super :: root :: mozilla :: net :: ReferrerPolicy as nsIdentifierMapEntry_ReferrerPolicy ; - /// @see nsIDocument::IDTargetObserver, this is just here to avoid include - /// hell. - pub type nsIdentifierMapEntry_IDTargetObserver = :: std :: option :: Option < unsafe extern "C" fn ( aOldElement : * mut root :: nsIdentifierMapEntry_Element , aNewelement : * mut root :: nsIdentifierMapEntry_Element , aData : * mut :: std :: os :: raw :: c_void ) -> bool > ; # [ repr ( C ) ] pub struct nsIdentifierMapEntry_AtomOrString { pub mAtom : root :: RefPtr < root :: nsAtom > , pub mString : ::nsstring::nsStringRepr , } # [ test ] fn bindgen_test_layout_nsIdentifierMapEntry_AtomOrString ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIdentifierMapEntry_AtomOrString > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsIdentifierMapEntry_AtomOrString ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIdentifierMapEntry_AtomOrString > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIdentifierMapEntry_AtomOrString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry_AtomOrString ) ) . mAtom as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry_AtomOrString ) , "::" , stringify ! ( mAtom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry_AtomOrString ) ) . mString as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry_AtomOrString ) , "::" , stringify ! ( mString ) ) ) ; } pub type nsIdentifierMapEntry_KeyType = * const root :: nsIdentifierMapEntry_AtomOrString ; pub type nsIdentifierMapEntry_KeyTypePointer = * const root :: nsIdentifierMapEntry_AtomOrString ; pub const nsIdentifierMapEntry_ALLOW_MEMMOVE : root :: nsIdentifierMapEntry__bindgen_ty_1 = 0 ; pub type nsIdentifierMapEntry__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIdentifierMapEntry_ChangeCallback { pub mCallback : root :: nsIdentifierMapEntry_IDTargetObserver , pub mData : * mut :: std :: os :: raw :: c_void , pub mForImage : bool , } # [ test ] fn bindgen_test_layout_nsIdentifierMapEntry_ChangeCallback ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIdentifierMapEntry_ChangeCallback > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsIdentifierMapEntry_ChangeCallback ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIdentifierMapEntry_ChangeCallback > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIdentifierMapEntry_ChangeCallback ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry_ChangeCallback ) ) . mCallback as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry_ChangeCallback ) , "::" , stringify ! ( mCallback ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry_ChangeCallback ) ) . mData as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry_ChangeCallback ) , "::" , stringify ! ( mData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry_ChangeCallback ) ) . mForImage as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry_ChangeCallback ) , "::" , stringify ! ( mForImage ) ) ) ; } impl Clone for nsIdentifierMapEntry_ChangeCallback { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIdentifierMapEntry_ChangeCallbackEntry { pub _base : root :: PLDHashEntryHdr , pub mKey : root :: nsIdentifierMapEntry_ChangeCallback , } pub type nsIdentifierMapEntry_ChangeCallbackEntry_KeyType = root :: nsIdentifierMapEntry_ChangeCallback ; pub type nsIdentifierMapEntry_ChangeCallbackEntry_KeyTypePointer = * const root :: nsIdentifierMapEntry_ChangeCallback ; pub const nsIdentifierMapEntry_ChangeCallbackEntry_ALLOW_MEMMOVE : root :: nsIdentifierMapEntry_ChangeCallbackEntry__bindgen_ty_1 = 1 ; pub type nsIdentifierMapEntry_ChangeCallbackEntry__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsIdentifierMapEntry_ChangeCallbackEntry ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIdentifierMapEntry_ChangeCallbackEntry > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsIdentifierMapEntry_ChangeCallbackEntry ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIdentifierMapEntry_ChangeCallbackEntry > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIdentifierMapEntry_ChangeCallbackEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry_ChangeCallbackEntry ) ) . mKey as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry_ChangeCallbackEntry ) , "::" , stringify ! ( mKey ) ) ) ; } impl Clone for nsIdentifierMapEntry_ChangeCallbackEntry { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsIdentifierMapEntry ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIdentifierMapEntry > ( ) , 80usize , concat ! ( "Size of: " , stringify ! ( nsIdentifierMapEntry ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIdentifierMapEntry > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIdentifierMapEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry ) ) . mKey as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry ) , "::" , stringify ! ( mKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry ) ) . mIdContentList as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry ) , "::" , stringify ! ( mIdContentList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry ) ) . mNameContentList as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry ) , "::" , stringify ! ( mNameContentList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry ) ) . mChangeCallbacks as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry ) , "::" , stringify ! ( mChangeCallbacks ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIdentifierMapEntry ) ) . mImageElement as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsIdentifierMapEntry ) , "::" , stringify ! ( mImageElement ) ) ) ; } pub const nsCSSPropertyID_eCSSProperty_COUNT_no_shorthands : root :: nsCSSPropertyID = nsCSSPropertyID :: eCSSProperty_all ; pub const nsCSSPropertyID_eCSSProperty_COUNT_DUMMY : root :: nsCSSPropertyID = nsCSSPropertyID :: eCSSProperty_z_index ; pub const nsCSSPropertyID_eCSSProperty_COUNT : root :: nsCSSPropertyID = nsCSSPropertyID :: eCSSPropertyAlias_WordWrap ; pub const nsCSSPropertyID_eCSSProperty_COUNT_DUMMY2 : root :: nsCSSPropertyID = nsCSSPropertyID :: eCSSProperty_transition ; pub const nsCSSPropertyID_eCSSProperty_COUNT_with_aliases : root :: nsCSSPropertyID = nsCSSPropertyID :: eCSSPropertyExtra_no_properties ; pub const nsCSSPropertyID_eCSSProperty_COUNT_DUMMY3 : root :: nsCSSPropertyID = nsCSSPropertyID :: eCSSPropertyAlias_WebkitMaskSize ; # [ repr ( i32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsCSSPropertyID { eCSSProperty_UNKNOWN = -1 , eCSSProperty_align_content = 0 , eCSSProperty_align_items = 1 , eCSSProperty_align_self = 2 , eCSSProperty_animation_delay = 3 , eCSSProperty_animation_direction = 4 , eCSSProperty_animation_duration = 5 , eCSSProperty_animation_fill_mode = 6 , eCSSProperty_animation_iteration_count = 7 , eCSSProperty_animation_name = 8 , eCSSProperty_animation_play_state = 9 , eCSSProperty_animation_timing_function = 10 , eCSSProperty__moz_appearance = 11 , eCSSProperty_backface_visibility = 12 , eCSSProperty_background_attachment = 13 , eCSSProperty_background_blend_mode = 14 , eCSSProperty_background_clip = 15 , eCSSProperty_background_color = 16 , eCSSProperty_background_image = 17 , eCSSProperty_background_origin = 18 , eCSSProperty_background_position_x = 19 , eCSSProperty_background_position_y = 20 , eCSSProperty_background_repeat = 21 , eCSSProperty_background_size = 22 , eCSSProperty__moz_binding = 23 , eCSSProperty_block_size = 24 , eCSSProperty_border_block_end_color = 25 , eCSSProperty_border_block_end_style = 26 , eCSSProperty_border_block_end_width = 27 , eCSSProperty_border_block_start_color = 28 , eCSSProperty_border_block_start_style = 29 , eCSSProperty_border_block_start_width = 30 , eCSSProperty_border_bottom_color = 31 , eCSSProperty__moz_border_bottom_colors = 32 , eCSSProperty_border_bottom_left_radius = 33 , eCSSProperty_border_bottom_right_radius = 34 , eCSSProperty_border_bottom_style = 35 , eCSSProperty_border_bottom_width = 36 , eCSSProperty_border_collapse = 37 , eCSSProperty_border_image_outset = 38 , eCSSProperty_border_image_repeat = 39 , eCSSProperty_border_image_slice = 40 , eCSSProperty_border_image_source = 41 , eCSSProperty_border_image_width = 42 , eCSSProperty_border_inline_end_color = 43 , eCSSProperty_border_inline_end_style = 44 , eCSSProperty_border_inline_end_width = 45 , eCSSProperty_border_inline_start_color = 46 , eCSSProperty_border_inline_start_style = 47 , eCSSProperty_border_inline_start_width = 48 , eCSSProperty_border_left_color = 49 , eCSSProperty__moz_border_left_colors = 50 , eCSSProperty_border_left_style = 51 , eCSSProperty_border_left_width = 52 , eCSSProperty_border_right_color = 53 , eCSSProperty__moz_border_right_colors = 54 , eCSSProperty_border_right_style = 55 , eCSSProperty_border_right_width = 56 , eCSSProperty_border_spacing = 57 , eCSSProperty_border_top_color = 58 , eCSSProperty__moz_border_top_colors = 59 , eCSSProperty_border_top_left_radius = 60 , eCSSProperty_border_top_right_radius = 61 , eCSSProperty_border_top_style = 62 , eCSSProperty_border_top_width = 63 , eCSSProperty_bottom = 64 , eCSSProperty__moz_box_align = 65 , eCSSProperty_box_decoration_break = 66 , eCSSProperty__moz_box_direction = 67 , eCSSProperty__moz_box_flex = 68 , eCSSProperty__moz_box_ordinal_group = 69 , eCSSProperty__moz_box_orient = 70 , eCSSProperty__moz_box_pack = 71 , eCSSProperty_box_shadow = 72 , eCSSProperty_box_sizing = 73 , eCSSProperty_caption_side = 74 , eCSSProperty_caret_color = 75 , eCSSProperty_clear = 76 , eCSSProperty_clip = 77 , eCSSProperty_clip_path = 78 , eCSSProperty_clip_rule = 79 , eCSSProperty_color = 80 , eCSSProperty_color_adjust = 81 , eCSSProperty_color_interpolation = 82 , eCSSProperty_color_interpolation_filters = 83 , eCSSProperty_column_count = 84 , eCSSProperty_column_fill = 85 , eCSSProperty_column_gap = 86 , eCSSProperty_column_rule_color = 87 , eCSSProperty_column_rule_style = 88 , eCSSProperty_column_rule_width = 89 , eCSSProperty_column_span = 90 , eCSSProperty_column_width = 91 , eCSSProperty_contain = 92 , eCSSProperty_content = 93 , eCSSProperty__moz_context_properties = 94 , eCSSProperty__moz_control_character_visibility = 95 , eCSSProperty_counter_increment = 96 , eCSSProperty_counter_reset = 97 , eCSSProperty_cursor = 98 , eCSSProperty_direction = 99 , eCSSProperty_display = 100 , eCSSProperty_dominant_baseline = 101 , eCSSProperty_empty_cells = 102 , eCSSProperty_fill = 103 , eCSSProperty_fill_opacity = 104 , eCSSProperty_fill_rule = 105 , eCSSProperty_filter = 106 , eCSSProperty_flex_basis = 107 , eCSSProperty_flex_direction = 108 , eCSSProperty_flex_grow = 109 , eCSSProperty_flex_shrink = 110 , eCSSProperty_flex_wrap = 111 , eCSSProperty_float_ = 112 , eCSSProperty__moz_float_edge = 113 , eCSSProperty_flood_color = 114 , eCSSProperty_flood_opacity = 115 , eCSSProperty_font_family = 116 , eCSSProperty_font_feature_settings = 117 , eCSSProperty_font_kerning = 118 , eCSSProperty_font_language_override = 119 , eCSSProperty_font_size = 120 , eCSSProperty_font_size_adjust = 121 , eCSSProperty__moz_font_smoothing_background_color = 122 , eCSSProperty_font_stretch = 123 , eCSSProperty_font_style = 124 , eCSSProperty_font_synthesis = 125 , eCSSProperty_font_variant_alternates = 126 , eCSSProperty_font_variant_caps = 127 , eCSSProperty_font_variant_east_asian = 128 , eCSSProperty_font_variant_ligatures = 129 , eCSSProperty_font_variant_numeric = 130 , eCSSProperty_font_variant_position = 131 , eCSSProperty_font_variation_settings = 132 , eCSSProperty_font_weight = 133 , eCSSProperty__moz_force_broken_image_icon = 134 , eCSSProperty_grid_auto_columns = 135 , eCSSProperty_grid_auto_flow = 136 , eCSSProperty_grid_auto_rows = 137 , eCSSProperty_grid_column_end = 138 , eCSSProperty_grid_column_gap = 139 , eCSSProperty_grid_column_start = 140 , eCSSProperty_grid_row_end = 141 , eCSSProperty_grid_row_gap = 142 , eCSSProperty_grid_row_start = 143 , eCSSProperty_grid_template_areas = 144 , eCSSProperty_grid_template_columns = 145 , eCSSProperty_grid_template_rows = 146 , eCSSProperty_height = 147 , eCSSProperty_hyphens = 148 , eCSSProperty_initial_letter = 149 , eCSSProperty_image_orientation = 150 , eCSSProperty__moz_image_region = 151 , eCSSProperty_image_rendering = 152 , eCSSProperty_ime_mode = 153 , eCSSProperty_inline_size = 154 , eCSSProperty_isolation = 155 , eCSSProperty_justify_content = 156 , eCSSProperty_justify_items = 157 , eCSSProperty_justify_self = 158 , eCSSProperty__x_lang = 159 , eCSSProperty_left = 160 , eCSSProperty_letter_spacing = 161 , eCSSProperty_lighting_color = 162 , eCSSProperty_line_height = 163 , eCSSProperty_list_style_image = 164 , eCSSProperty_list_style_position = 165 , eCSSProperty_list_style_type = 166 , eCSSProperty_margin_block_end = 167 , eCSSProperty_margin_block_start = 168 , eCSSProperty_margin_bottom = 169 , eCSSProperty_margin_inline_end = 170 , eCSSProperty_margin_inline_start = 171 , eCSSProperty_margin_left = 172 , eCSSProperty_margin_right = 173 , eCSSProperty_margin_top = 174 , eCSSProperty_marker_end = 175 , eCSSProperty_marker_mid = 176 , eCSSProperty_marker_start = 177 , eCSSProperty_mask_clip = 178 , eCSSProperty_mask_composite = 179 , eCSSProperty_mask_image = 180 , eCSSProperty_mask_mode = 181 , eCSSProperty_mask_origin = 182 , eCSSProperty_mask_position_x = 183 , eCSSProperty_mask_position_y = 184 , eCSSProperty_mask_repeat = 185 , eCSSProperty_mask_size = 186 , eCSSProperty_mask_type = 187 , eCSSProperty__moz_math_display = 188 , eCSSProperty__moz_math_variant = 189 , eCSSProperty_max_block_size = 190 , eCSSProperty_max_height = 191 , eCSSProperty_max_inline_size = 192 , eCSSProperty_max_width = 193 , eCSSProperty_min_block_size = 194 , eCSSProperty__moz_min_font_size_ratio = 195 , eCSSProperty_min_height = 196 , eCSSProperty_min_inline_size = 197 , eCSSProperty_min_width = 198 , eCSSProperty_mix_blend_mode = 199 , eCSSProperty_object_fit = 200 , eCSSProperty_object_position = 201 , eCSSProperty_offset_block_end = 202 , eCSSProperty_offset_block_start = 203 , eCSSProperty_offset_inline_end = 204 , eCSSProperty_offset_inline_start = 205 , eCSSProperty_opacity = 206 , eCSSProperty_order = 207 , eCSSProperty__moz_orient = 208 , eCSSProperty__moz_osx_font_smoothing = 209 , eCSSProperty_outline_color = 210 , eCSSProperty_outline_offset = 211 , eCSSProperty__moz_outline_radius_bottomleft = 212 , eCSSProperty__moz_outline_radius_bottomright = 213 , eCSSProperty__moz_outline_radius_topleft = 214 , eCSSProperty__moz_outline_radius_topright = 215 , eCSSProperty_outline_style = 216 , eCSSProperty_outline_width = 217 , eCSSProperty_overflow_clip_box_block = 218 , eCSSProperty_overflow_clip_box_inline = 219 , eCSSProperty_overflow_x = 220 , eCSSProperty_overflow_y = 221 , eCSSProperty_padding_block_end = 222 , eCSSProperty_padding_block_start = 223 , eCSSProperty_padding_bottom = 224 , eCSSProperty_padding_inline_end = 225 , eCSSProperty_padding_inline_start = 226 , eCSSProperty_padding_left = 227 , eCSSProperty_padding_right = 228 , eCSSProperty_padding_top = 229 , eCSSProperty_page_break_after = 230 , eCSSProperty_page_break_before = 231 , eCSSProperty_page_break_inside = 232 , eCSSProperty_paint_order = 233 , eCSSProperty_perspective = 234 , eCSSProperty_perspective_origin = 235 , eCSSProperty_pointer_events = 236 , eCSSProperty_position = 237 , eCSSProperty_quotes = 238 , eCSSProperty_resize = 239 , eCSSProperty_right = 240 , eCSSProperty_ruby_align = 241 , eCSSProperty_ruby_position = 242 , eCSSProperty__moz_script_level = 243 , eCSSProperty__moz_script_min_size = 244 , eCSSProperty__moz_script_size_multiplier = 245 , eCSSProperty_scroll_behavior = 246 , eCSSProperty_overscroll_behavior_x = 247 , eCSSProperty_overscroll_behavior_y = 248 , eCSSProperty_scroll_snap_coordinate = 249 , eCSSProperty_scroll_snap_destination = 250 , eCSSProperty_scroll_snap_points_x = 251 , eCSSProperty_scroll_snap_points_y = 252 , eCSSProperty_scroll_snap_type_x = 253 , eCSSProperty_scroll_snap_type_y = 254 , eCSSProperty_shape_image_threshold = 255 , eCSSProperty_shape_outside = 256 , eCSSProperty_shape_rendering = 257 , eCSSProperty__x_span = 258 , eCSSProperty__moz_stack_sizing = 259 , eCSSProperty_stop_color = 260 , eCSSProperty_stop_opacity = 261 , eCSSProperty_stroke = 262 , eCSSProperty_stroke_dasharray = 263 , eCSSProperty_stroke_dashoffset = 264 , eCSSProperty_stroke_linecap = 265 , eCSSProperty_stroke_linejoin = 266 , eCSSProperty_stroke_miterlimit = 267 , eCSSProperty_stroke_opacity = 268 , eCSSProperty_stroke_width = 269 , eCSSProperty__x_system_font = 270 , eCSSProperty__moz_tab_size = 271 , eCSSProperty_table_layout = 272 , eCSSProperty_text_align = 273 , eCSSProperty_text_align_last = 274 , eCSSProperty_text_anchor = 275 , eCSSProperty_text_combine_upright = 276 , eCSSProperty_text_decoration_color = 277 , eCSSProperty_text_decoration_line = 278 , eCSSProperty_text_decoration_style = 279 , eCSSProperty_text_emphasis_color = 280 , eCSSProperty_text_emphasis_position = 281 , eCSSProperty_text_emphasis_style = 282 , eCSSProperty__webkit_text_fill_color = 283 , eCSSProperty_text_indent = 284 , eCSSProperty_text_justify = 285 , eCSSProperty_text_orientation = 286 , eCSSProperty_text_overflow = 287 , eCSSProperty_text_rendering = 288 , eCSSProperty_text_shadow = 289 , eCSSProperty__moz_text_size_adjust = 290 , eCSSProperty__webkit_text_stroke_color = 291 , eCSSProperty__webkit_text_stroke_width = 292 , eCSSProperty_text_transform = 293 , eCSSProperty__x_text_zoom = 294 , eCSSProperty_top = 295 , eCSSProperty__moz_top_layer = 296 , eCSSProperty_touch_action = 297 , eCSSProperty_transform = 298 , eCSSProperty_transform_box = 299 , eCSSProperty_transform_origin = 300 , eCSSProperty_transform_style = 301 , eCSSProperty_transition_delay = 302 , eCSSProperty_transition_duration = 303 , eCSSProperty_transition_property = 304 , eCSSProperty_transition_timing_function = 305 , eCSSProperty_unicode_bidi = 306 , eCSSProperty__moz_user_focus = 307 , eCSSProperty__moz_user_input = 308 , eCSSProperty__moz_user_modify = 309 , eCSSProperty__moz_user_select = 310 , eCSSProperty_vector_effect = 311 , eCSSProperty_vertical_align = 312 , eCSSProperty_visibility = 313 , eCSSProperty_white_space = 314 , eCSSProperty_width = 315 , eCSSProperty_will_change = 316 , eCSSProperty__moz_window_dragging = 317 , eCSSProperty__moz_window_shadow = 318 , eCSSProperty__moz_window_opacity = 319 , eCSSProperty__moz_window_transform = 320 , eCSSProperty__moz_window_transform_origin = 321 , eCSSProperty_word_break = 322 , eCSSProperty_word_spacing = 323 , eCSSProperty_overflow_wrap = 324 , eCSSProperty_writing_mode = 325 , eCSSProperty_z_index = 326 , eCSSProperty_all = 327 , eCSSProperty_animation = 328 , eCSSProperty_background = 329 , eCSSProperty_background_position = 330 , eCSSProperty_border = 331 , eCSSProperty_border_block_end = 332 , eCSSProperty_border_block_start = 333 , eCSSProperty_border_bottom = 334 , eCSSProperty_border_color = 335 , eCSSProperty_border_image = 336 , eCSSProperty_border_inline_end = 337 , eCSSProperty_border_inline_start = 338 , eCSSProperty_border_left = 339 , eCSSProperty_border_radius = 340 , eCSSProperty_border_right = 341 , eCSSProperty_border_style = 342 , eCSSProperty_border_top = 343 , eCSSProperty_border_width = 344 , eCSSProperty_column_rule = 345 , eCSSProperty_columns = 346 , eCSSProperty_flex = 347 , eCSSProperty_flex_flow = 348 , eCSSProperty_font = 349 , eCSSProperty_font_variant = 350 , eCSSProperty_grid = 351 , eCSSProperty_grid_area = 352 , eCSSProperty_grid_column = 353 , eCSSProperty_grid_gap = 354 , eCSSProperty_grid_row = 355 , eCSSProperty_grid_template = 356 , eCSSProperty_list_style = 357 , eCSSProperty_margin = 358 , eCSSProperty_marker = 359 , eCSSProperty_mask = 360 , eCSSProperty_mask_position = 361 , eCSSProperty_outline = 362 , eCSSProperty__moz_outline_radius = 363 , eCSSProperty_overflow = 364 , eCSSProperty_overflow_clip_box = 365 , eCSSProperty_padding = 366 , eCSSProperty_place_content = 367 , eCSSProperty_place_items = 368 , eCSSProperty_place_self = 369 , eCSSProperty_overscroll_behavior = 370 , eCSSProperty_scroll_snap_type = 371 , eCSSProperty_text_decoration = 372 , eCSSProperty_text_emphasis = 373 , eCSSProperty__webkit_text_stroke = 374 , eCSSProperty__moz_transform = 375 , eCSSProperty_transition = 376 , eCSSPropertyAlias_WordWrap = 377 , eCSSPropertyAlias_MozTransformOrigin = 378 , eCSSPropertyAlias_MozPerspectiveOrigin = 379 , eCSSPropertyAlias_MozPerspective = 380 , eCSSPropertyAlias_MozTransformStyle = 381 , eCSSPropertyAlias_MozBackfaceVisibility = 382 , eCSSPropertyAlias_MozBorderImage = 383 , eCSSPropertyAlias_MozTransition = 384 , eCSSPropertyAlias_MozTransitionDelay = 385 , eCSSPropertyAlias_MozTransitionDuration = 386 , eCSSPropertyAlias_MozTransitionProperty = 387 , eCSSPropertyAlias_MozTransitionTimingFunction = 388 , eCSSPropertyAlias_MozAnimation = 389 , eCSSPropertyAlias_MozAnimationDelay = 390 , eCSSPropertyAlias_MozAnimationDirection = 391 , eCSSPropertyAlias_MozAnimationDuration = 392 , eCSSPropertyAlias_MozAnimationFillMode = 393 , eCSSPropertyAlias_MozAnimationIterationCount = 394 , eCSSPropertyAlias_MozAnimationName = 395 , eCSSPropertyAlias_MozAnimationPlayState = 396 , eCSSPropertyAlias_MozAnimationTimingFunction = 397 , eCSSPropertyAlias_MozBoxSizing = 398 , eCSSPropertyAlias_MozFontFeatureSettings = 399 , eCSSPropertyAlias_MozFontLanguageOverride = 400 , eCSSPropertyAlias_MozPaddingEnd = 401 , eCSSPropertyAlias_MozPaddingStart = 402 , eCSSPropertyAlias_MozMarginEnd = 403 , eCSSPropertyAlias_MozMarginStart = 404 , eCSSPropertyAlias_MozBorderEnd = 405 , eCSSPropertyAlias_MozBorderEndColor = 406 , eCSSPropertyAlias_MozBorderEndStyle = 407 , eCSSPropertyAlias_MozBorderEndWidth = 408 , eCSSPropertyAlias_MozBorderStart = 409 , eCSSPropertyAlias_MozBorderStartColor = 410 , eCSSPropertyAlias_MozBorderStartStyle = 411 , eCSSPropertyAlias_MozBorderStartWidth = 412 , eCSSPropertyAlias_MozHyphens = 413 , eCSSPropertyAlias_MozColumnCount = 414 , eCSSPropertyAlias_MozColumnFill = 415 , eCSSPropertyAlias_MozColumnGap = 416 , eCSSPropertyAlias_MozColumnRule = 417 , eCSSPropertyAlias_MozColumnRuleColor = 418 , eCSSPropertyAlias_MozColumnRuleStyle = 419 , eCSSPropertyAlias_MozColumnRuleWidth = 420 , eCSSPropertyAlias_MozColumnSpan = 421 , eCSSPropertyAlias_MozColumnWidth = 422 , eCSSPropertyAlias_MozColumns = 423 , eCSSPropertyAlias_WebkitAnimation = 424 , eCSSPropertyAlias_WebkitAnimationDelay = 425 , eCSSPropertyAlias_WebkitAnimationDirection = 426 , eCSSPropertyAlias_WebkitAnimationDuration = 427 , eCSSPropertyAlias_WebkitAnimationFillMode = 428 , eCSSPropertyAlias_WebkitAnimationIterationCount = 429 , eCSSPropertyAlias_WebkitAnimationName = 430 , eCSSPropertyAlias_WebkitAnimationPlayState = 431 , eCSSPropertyAlias_WebkitAnimationTimingFunction = 432 , eCSSPropertyAlias_WebkitFilter = 433 , eCSSPropertyAlias_WebkitTextSizeAdjust = 434 , eCSSPropertyAlias_WebkitTransform = 435 , eCSSPropertyAlias_WebkitTransformOrigin = 436 , eCSSPropertyAlias_WebkitTransformStyle = 437 , eCSSPropertyAlias_WebkitBackfaceVisibility = 438 , eCSSPropertyAlias_WebkitPerspective = 439 , eCSSPropertyAlias_WebkitPerspectiveOrigin = 440 , eCSSPropertyAlias_WebkitTransition = 441 , eCSSPropertyAlias_WebkitTransitionDelay = 442 , eCSSPropertyAlias_WebkitTransitionDuration = 443 , eCSSPropertyAlias_WebkitTransitionProperty = 444 , eCSSPropertyAlias_WebkitTransitionTimingFunction = 445 , eCSSPropertyAlias_WebkitBorderRadius = 446 , eCSSPropertyAlias_WebkitBorderTopLeftRadius = 447 , eCSSPropertyAlias_WebkitBorderTopRightRadius = 448 , eCSSPropertyAlias_WebkitBorderBottomLeftRadius = 449 , eCSSPropertyAlias_WebkitBorderBottomRightRadius = 450 , eCSSPropertyAlias_WebkitBackgroundClip = 451 , eCSSPropertyAlias_WebkitBackgroundOrigin = 452 , eCSSPropertyAlias_WebkitBackgroundSize = 453 , eCSSPropertyAlias_WebkitBorderImage = 454 , eCSSPropertyAlias_WebkitBoxShadow = 455 , eCSSPropertyAlias_WebkitBoxSizing = 456 , eCSSPropertyAlias_WebkitBoxFlex = 457 , eCSSPropertyAlias_WebkitBoxOrdinalGroup = 458 , eCSSPropertyAlias_WebkitBoxOrient = 459 , eCSSPropertyAlias_WebkitBoxDirection = 460 , eCSSPropertyAlias_WebkitBoxAlign = 461 , eCSSPropertyAlias_WebkitBoxPack = 462 , eCSSPropertyAlias_WebkitFlexDirection = 463 , eCSSPropertyAlias_WebkitFlexWrap = 464 , eCSSPropertyAlias_WebkitFlexFlow = 465 , eCSSPropertyAlias_WebkitOrder = 466 , eCSSPropertyAlias_WebkitFlex = 467 , eCSSPropertyAlias_WebkitFlexGrow = 468 , eCSSPropertyAlias_WebkitFlexShrink = 469 , eCSSPropertyAlias_WebkitFlexBasis = 470 , eCSSPropertyAlias_WebkitJustifyContent = 471 , eCSSPropertyAlias_WebkitAlignItems = 472 , eCSSPropertyAlias_WebkitAlignSelf = 473 , eCSSPropertyAlias_WebkitAlignContent = 474 , eCSSPropertyAlias_WebkitUserSelect = 475 , eCSSPropertyAlias_WebkitMask = 476 , eCSSPropertyAlias_WebkitMaskClip = 477 , eCSSPropertyAlias_WebkitMaskComposite = 478 , eCSSPropertyAlias_WebkitMaskImage = 479 , eCSSPropertyAlias_WebkitMaskOrigin = 480 , eCSSPropertyAlias_WebkitMaskPosition = 481 , eCSSPropertyAlias_WebkitMaskPositionX = 482 , eCSSPropertyAlias_WebkitMaskPositionY = 483 , eCSSPropertyAlias_WebkitMaskRepeat = 484 , eCSSPropertyAlias_WebkitMaskSize = 485 , eCSSPropertyExtra_no_properties = 486 , eCSSPropertyExtra_all_properties = 487 , eCSSPropertyExtra_x_none_value = 488 , eCSSPropertyExtra_x_auto_value = 489 , eCSSPropertyExtra_variable = 490 , eCSSProperty_DOM = 491 , } # [ repr ( i32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsCSSFontDesc { eCSSFontDesc_UNKNOWN = -1 , eCSSFontDesc_Family = 0 , eCSSFontDesc_Style = 1 , eCSSFontDesc_Weight = 2 , eCSSFontDesc_Stretch = 3 , eCSSFontDesc_Src = 4 , eCSSFontDesc_UnicodeRange = 5 , eCSSFontDesc_FontFeatureSettings = 6 , eCSSFontDesc_FontLanguageOverride = 7 , eCSSFontDesc_Display = 8 , eCSSFontDesc_COUNT = 9 , } # [ repr ( i32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsCSSCounterDesc { eCSSCounterDesc_UNKNOWN = -1 , eCSSCounterDesc_System = 0 , eCSSCounterDesc_Symbols = 1 , eCSSCounterDesc_AdditiveSymbols = 2 , eCSSCounterDesc_Negative = 3 , eCSSCounterDesc_Prefix = 4 , eCSSCounterDesc_Suffix = 5 , eCSSCounterDesc_Range = 6 , eCSSCounterDesc_Pad = 7 , eCSSCounterDesc_Fallback = 8 , eCSSCounterDesc_SpeakAs = 9 , eCSSCounterDesc_COUNT = 10 , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RawServoStyleSet { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RawServoSourceSizeList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RustString { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RawServoStyleSheetContents { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RawServoDeclarationBlock { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RawServoStyleRule { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RawServoAnimationValue { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct RawServoMediaList { _unused : [ u8 ; 0 ] } pub mod nsStyleTransformMatrix { # [ allow ( unused_imports ) ] use self :: super :: super :: root ; # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum MatrixTransformOperator { Interpolate = 0 , Accumulate = 1 , } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsCSSPropertyIDSet { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsSimpleContentList { _unused : [ u8 ; 0 ] } pub type RawGeckoNode = root :: nsINode ; pub type RawGeckoElement = root :: mozilla :: dom :: Element ; pub type RawGeckoDocument = root :: nsIDocument ; pub type RawGeckoPresContext = root :: nsPresContext ; pub type RawGeckoXBLBinding = root :: nsXBLBinding ; pub type RawGeckoURLExtraData = root :: mozilla :: URLExtraData ; pub type RawGeckoServoAnimationValueList = root :: nsTArray < root :: RefPtr < root :: RawServoAnimationValue > > ; pub type RawGeckoKeyframeList = root :: nsTArray < root :: mozilla :: Keyframe > ; pub type RawGeckoPropertyValuePairList = root :: nsTArray < root :: mozilla :: PropertyValuePair > ; pub type RawGeckoComputedKeyframeValuesList = root :: nsTArray < root :: mozilla :: ComputedKeyframeValues > ; pub type RawGeckoStyleAnimationList = root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > ; pub type RawGeckoFontFaceRuleList = root :: nsTArray < root :: nsFontFaceRuleContainer > ; pub type RawGeckoAnimationPropertySegment = root :: mozilla :: AnimationPropertySegment ; pub type RawGeckoComputedTiming = root :: mozilla :: ComputedTiming ; pub type RawGeckoServoStyleRuleList = root :: nsTArray < * const root :: RawServoStyleRule > ; pub type RawGeckoCSSPropertyIDList = root :: nsTArray < root :: nsCSSPropertyID > ; pub type RawGeckoGfxMatrix4x4 = [ root :: mozilla :: gfx :: Float ; 16usize ] ; pub type RawGeckoStyleChildrenIterator = root :: mozilla :: dom :: StyleChildrenIterator ; pub type ServoStyleContextBorrowed = * const root :: mozilla :: ServoStyleContext ; pub type ServoStyleContextBorrowedOrNull = * const root :: mozilla :: ServoStyleContext ; pub type ServoComputedDataBorrowed = * const root :: ServoComputedData ; pub type RawGeckoNodeBorrowed = * const root :: RawGeckoNode ; pub type RawGeckoNodeBorrowedOrNull = * const root :: RawGeckoNode ; pub type RawGeckoElementBorrowed = * const root :: RawGeckoElement ; pub type RawGeckoElementBorrowedOrNull = * const root :: RawGeckoElement ; pub type RawGeckoDocumentBorrowed = * const root :: RawGeckoDocument ; pub type RawGeckoDocumentBorrowedOrNull = * const root :: RawGeckoDocument ; pub type RawGeckoXBLBindingBorrowed = * const root :: RawGeckoXBLBinding ; pub type RawGeckoXBLBindingBorrowedOrNull = * const root :: RawGeckoXBLBinding ; pub type RawGeckoPresContextOwned = * mut root :: RawGeckoPresContext ; pub type RawGeckoPresContextBorrowed = * const root :: RawGeckoPresContext ; pub type RawGeckoPresContextBorrowedMut = * mut root :: RawGeckoPresContext ; pub type RawGeckoServoAnimationValueListBorrowedMut = * mut root :: RawGeckoServoAnimationValueList ; pub type RawGeckoServoAnimationValueListBorrowed = * const root :: RawGeckoServoAnimationValueList ; pub type RawGeckoKeyframeListBorrowedMut = * mut root :: RawGeckoKeyframeList ; pub type RawGeckoKeyframeListBorrowed = * const root :: RawGeckoKeyframeList ; pub type RawGeckoPropertyValuePairListBorrowedMut = * mut root :: RawGeckoPropertyValuePairList ; pub type RawGeckoPropertyValuePairListBorrowed = * const root :: RawGeckoPropertyValuePairList ; pub type RawGeckoComputedKeyframeValuesListBorrowedMut = * mut root :: RawGeckoComputedKeyframeValuesList ; pub type RawGeckoStyleAnimationListBorrowedMut = * mut root :: RawGeckoStyleAnimationList ; pub type RawGeckoStyleAnimationListBorrowed = * const root :: RawGeckoStyleAnimationList ; pub type RawGeckoFontFaceRuleListBorrowedMut = * mut root :: RawGeckoFontFaceRuleList ; pub type RawGeckoAnimationPropertySegmentBorrowed = * const root :: RawGeckoAnimationPropertySegment ; pub type RawGeckoComputedTimingBorrowed = * const root :: RawGeckoComputedTiming ; pub type RawGeckoServoStyleRuleListBorrowedMut = * mut root :: RawGeckoServoStyleRuleList ; pub type RawGeckoCSSPropertyIDListBorrowed = * const root :: RawGeckoCSSPropertyIDList ; pub type RawGeckoStyleChildrenIteratorBorrowedMut = * mut root :: RawGeckoStyleChildrenIterator ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsHTMLCSSStyleSheet { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsHTMLStyleSheet { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIBFCacheEntry { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDocumentEncoder { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIStructuredCloneContainer { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsSMILAnimationController { _unused : [ u8 ; 0 ] } pub const HSTSPrimingState_eNO_HSTS_PRIMING : root :: HSTSPrimingState = 0 ; pub const HSTSPrimingState_eHSTS_PRIMING_ALLOW : root :: HSTSPrimingState = 1 ; pub const HSTSPrimingState_eHSTS_PRIMING_BLOCK : root :: HSTSPrimingState = 2 ; pub type HSTSPrimingState = :: std :: os :: raw :: c_int ; # [ repr ( C ) ] pub struct nsIDocument { pub _base : root :: nsINode , pub _base_1 : root :: mozilla :: dom :: DocumentOrShadowRoot , pub _base_2 : root :: mozilla :: dom :: DispatcherTrait , pub mDeprecationWarnedAbout : u64 , pub mDocWarningWarnedAbout : u64 , pub mServoSelectorCache : root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > , pub mGeckoSelectorCache : root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > , pub mReferrer : root :: nsCString , pub mLastModified : ::nsstring::nsStringRepr , pub mDocumentURI : root :: nsCOMPtr , pub mOriginalURI : root :: nsCOMPtr , pub mChromeXHRDocURI : root :: nsCOMPtr , pub mDocumentBaseURI : root :: nsCOMPtr , pub mChromeXHRDocBaseURI : root :: nsCOMPtr , pub mCachedURLData : root :: RefPtr < root :: mozilla :: URLExtraData > , pub mDocumentLoadGroup : root :: nsWeakPtr , pub mReferrerPolicySet : bool , pub mReferrerPolicy : root :: nsIDocument_ReferrerPolicyEnum , pub mBlockAllMixedContent : bool , pub mBlockAllMixedContentPreloads : bool , pub mUpgradeInsecureRequests : bool , pub mUpgradeInsecurePreloads : bool , pub mHSTSPrimingURIList : [ u64 ; 4usize ] , pub mDocumentContainer : u64 , pub mCharacterSet : root :: mozilla :: NotNull < * const root :: nsIDocument_Encoding > , pub mCharacterSetSource : i32 , pub mParentDocument : * mut root :: nsIDocument , pub mCachedRootElement : * mut root :: mozilla :: dom :: Element , pub mNodeInfoManager : * mut root :: nsNodeInfoManager , pub mCSSLoader : root :: RefPtr < root :: mozilla :: css :: Loader > , pub mStyleImageLoader : root :: RefPtr < root :: mozilla :: css :: ImageLoader > , pub mAttrStyleSheet : root :: RefPtr < root :: nsHTMLStyleSheet > , pub mStyleAttrStyleSheet : root :: RefPtr < root :: nsHTMLCSSStyleSheet > , pub mImageTracker : root :: RefPtr < root :: mozilla :: dom :: ImageTracker > , pub mActivityObservers : u64 , pub mLinksToUpdate : [ u64 ; 3usize ] , pub mAnimationController : root :: RefPtr < root :: nsSMILAnimationController > , pub mPropertyTable : root :: nsPropertyTable , pub mExtraPropertyTables : root :: nsTArray < root :: nsAutoPtr < root :: nsPropertyTable > > , pub mChildrenCollection : root :: nsCOMPtr , pub mFontFaceSet : root :: RefPtr < root :: mozilla :: dom :: FontFaceSet > , pub mLastFocusTime : root :: mozilla :: TimeStamp , pub mDocumentState : root :: mozilla :: EventStates , pub _bitfield_1 : [ u8 ; 7usize ] , pub mCompatMode : root :: nsCompatibility , pub mReadyState : root :: nsIDocument_ReadyState , pub mStyleBackendType : root :: mozilla :: StyleBackendType , pub mVisibilityState : root :: mozilla :: dom :: VisibilityState , pub mType : root :: nsIDocument_Type , pub mDefaultElementType : u8 , pub mAllowXULXBL : root :: nsIDocument_Tri , pub mScriptGlobalObject : root :: nsCOMPtr , pub mOriginalDocument : root :: nsCOMPtr , pub mBidiOptions : u32 , pub mSandboxFlags : u32 , pub mContentLanguage : root :: nsCString , pub mChannel : root :: nsCOMPtr , pub mContentType : root :: nsCString , pub mSecurityInfo : root :: nsCOMPtr , pub mFailedChannel : root :: nsCOMPtr , pub mPartID : u32 , pub mMarkedCCGeneration : u32 , pub mPresShell : * mut root :: nsIPresShell , pub mSubtreeModifiedTargets : root :: nsCOMArray , pub mSubtreeModifiedDepth : u32 , pub mDisplayDocument : root :: nsCOMPtr , pub mEventsSuppressed : u32 , - /// https://html.spec.whatwg.org/#ignore-destructive-writes-counter - pub mIgnoreDestructiveWritesCounter : u32 , - /// The current frame request callback handle - pub mFrameRequestCallbackCounter : i32 , pub mStaticCloneCount : u32 , pub mBlockedTrackingNodes : root :: nsTArray < root :: nsWeakPtr > , pub mWindow : * mut root :: nsPIDOMWindowInner , pub mCachedEncoder : root :: nsCOMPtr , pub mFrameRequestCallbacks : root :: nsTArray < root :: nsIDocument_FrameRequest > , pub mBFCacheEntry : * mut root :: nsIBFCacheEntry , pub mBaseTarget : ::nsstring::nsStringRepr , pub mStateObjectContainer : root :: nsCOMPtr , pub mStateObjectCached : root :: nsCOMPtr , pub mInSyncOperationCount : u32 , pub mXPathEvaluator : root :: RefPtr < root :: mozilla :: dom :: XPathEvaluator > , pub mAnonymousContents : root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: AnonymousContent > > , pub mBlockDOMContentLoaded : u32 , pub mDOMMediaQueryLists : root :: mozilla :: LinkedList , pub mUseCounters : [ u64 ; 2usize ] , pub mChildDocumentUseCounters : [ u64 ; 2usize ] , pub mNotifiedPageForUseCounter : [ u64 ; 2usize ] , pub mIncCounters : u16 , pub mUserHasInteracted : bool , pub mUserHasActivatedInteraction : bool , pub mPageUnloadingEventTimeStamp : root :: mozilla :: TimeStamp , pub mDocGroup : root :: RefPtr < root :: mozilla :: dom :: DocGroup > , pub mTrackingScripts : [ u64 ; 4usize ] , pub mBufferedCSPViolations : root :: nsTArray < root :: nsCOMPtr > , pub mAncestorPrincipals : root :: nsTArray < root :: nsCOMPtr > , pub mAncestorOuterWindowIDs : root :: nsTArray < u64 > , pub mServoRestyleRoot : root :: nsCOMPtr , pub mServoRestyleRootDirtyBits : u32 , pub mThrowOnDynamicMarkupInsertionCounter : u32 , pub mIgnoreOpensDuringUnloadCounter : u32 , } pub type nsIDocument_GlobalObject = root :: mozilla :: dom :: GlobalObject ; pub type nsIDocument_Encoding = root :: mozilla :: Encoding ; pub type nsIDocument_NotNull < T > = root :: mozilla :: NotNull < T > ; pub use self :: super :: root :: mozilla :: net :: ReferrerPolicy as nsIDocument_ReferrerPolicyEnum ; pub type nsIDocument_Element = root :: mozilla :: dom :: Element ; pub type nsIDocument_FullscreenRequest = root :: mozilla :: dom :: FullscreenRequest ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDocument_COMTypeInfo { pub _address : u8 , } # [ repr ( C ) ] pub struct nsIDocument_PageUnloadingEventTimeStamp { pub mDocument : root :: nsCOMPtr , pub mSet : bool , } # [ test ] fn bindgen_test_layout_nsIDocument_PageUnloadingEventTimeStamp ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDocument_PageUnloadingEventTimeStamp > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsIDocument_PageUnloadingEventTimeStamp ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDocument_PageUnloadingEventTimeStamp > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDocument_PageUnloadingEventTimeStamp ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIDocument_PageUnloadingEventTimeStamp ) ) . mDocument as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsIDocument_PageUnloadingEventTimeStamp ) , "::" , stringify ! ( mDocument ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIDocument_PageUnloadingEventTimeStamp ) ) . mSet as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIDocument_PageUnloadingEventTimeStamp ) , "::" , stringify ! ( mSet ) ) ) ; } - /// This gets fired when the element that an id refers to changes. + /// in nsHTMLDocument. + #[repr(C)] + pub struct nsIdentifierMapEntry { + pub _base: root::PLDHashEntryHdr, + pub mKey: root::nsIdentifierMapEntry_AtomOrString, + pub mIdContentList: [u64; 3usize], + pub mNameContentList: root::RefPtr<root::nsBaseContentList>, + pub mChangeCallbacks: u64, + pub mImageElement: root::RefPtr<root::nsIdentifierMapEntry_Element>, + } + pub type nsIdentifierMapEntry_Element = root::mozilla::dom::Element; + pub use self::super::root::mozilla::net::ReferrerPolicy as nsIdentifierMapEntry_ReferrerPolicy; + /// @see nsIDocument::IDTargetObserver, this is just here to avoid include + /// hell. + pub type nsIdentifierMapEntry_IDTargetObserver = ::std::option::Option< + unsafe extern "C" fn( + aOldElement: *mut root::nsIdentifierMapEntry_Element, + aNewelement: *mut root::nsIdentifierMapEntry_Element, + aData: *mut ::std::os::raw::c_void, + ) -> bool, + >; + #[repr(C)] + pub struct nsIdentifierMapEntry_AtomOrString { + pub mAtom: root::RefPtr<root::nsAtom>, + pub mString: ::nsstring::nsStringRepr, + } + #[test] + fn bindgen_test_layout_nsIdentifierMapEntry_AtomOrString() { + assert_eq!( + ::std::mem::size_of::<nsIdentifierMapEntry_AtomOrString>(), + 24usize, + concat!("Size of: ", stringify!(nsIdentifierMapEntry_AtomOrString)) + ); + assert_eq!( + ::std::mem::align_of::<nsIdentifierMapEntry_AtomOrString>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsIdentifierMapEntry_AtomOrString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry_AtomOrString>())).mAtom as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry_AtomOrString), + "::", + stringify!(mAtom) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry_AtomOrString>())).mString as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry_AtomOrString), + "::", + stringify!(mString) + ) + ); + } + pub type nsIdentifierMapEntry_KeyType = *const root::nsIdentifierMapEntry_AtomOrString; + pub type nsIdentifierMapEntry_KeyTypePointer = *const root::nsIdentifierMapEntry_AtomOrString; + pub const nsIdentifierMapEntry_ALLOW_MEMMOVE: root::nsIdentifierMapEntry__bindgen_ty_1 = 0; + pub type nsIdentifierMapEntry__bindgen_ty_1 = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIdentifierMapEntry_ChangeCallback { + pub mCallback: root::nsIdentifierMapEntry_IDTargetObserver, + pub mData: *mut ::std::os::raw::c_void, + pub mForImage: bool, + } + #[test] + fn bindgen_test_layout_nsIdentifierMapEntry_ChangeCallback() { + assert_eq!( + ::std::mem::size_of::<nsIdentifierMapEntry_ChangeCallback>(), + 24usize, + concat!("Size of: ", stringify!(nsIdentifierMapEntry_ChangeCallback)) + ); + assert_eq!( + ::std::mem::align_of::<nsIdentifierMapEntry_ChangeCallback>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsIdentifierMapEntry_ChangeCallback) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry_ChangeCallback>())).mCallback + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry_ChangeCallback), + "::", + stringify!(mCallback) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry_ChangeCallback>())).mData as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry_ChangeCallback), + "::", + stringify!(mData) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry_ChangeCallback>())).mForImage + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry_ChangeCallback), + "::", + stringify!(mForImage) + ) + ); + } + impl Clone for nsIdentifierMapEntry_ChangeCallback { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIdentifierMapEntry_ChangeCallbackEntry { + pub _base: root::PLDHashEntryHdr, + pub mKey: root::nsIdentifierMapEntry_ChangeCallback, + } + pub type nsIdentifierMapEntry_ChangeCallbackEntry_KeyType = + root::nsIdentifierMapEntry_ChangeCallback; + pub type nsIdentifierMapEntry_ChangeCallbackEntry_KeyTypePointer = + *const root::nsIdentifierMapEntry_ChangeCallback; + pub const nsIdentifierMapEntry_ChangeCallbackEntry_ALLOW_MEMMOVE: + root::nsIdentifierMapEntry_ChangeCallbackEntry__bindgen_ty_1 = 1; + pub type nsIdentifierMapEntry_ChangeCallbackEntry__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsIdentifierMapEntry_ChangeCallbackEntry() { + assert_eq!( + ::std::mem::size_of::<nsIdentifierMapEntry_ChangeCallbackEntry>(), + 32usize, + concat!( + "Size of: ", + stringify!(nsIdentifierMapEntry_ChangeCallbackEntry) + ) + ); + assert_eq!( + ::std::mem::align_of::<nsIdentifierMapEntry_ChangeCallbackEntry>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsIdentifierMapEntry_ChangeCallbackEntry) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry_ChangeCallbackEntry>())).mKey + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry_ChangeCallbackEntry), + "::", + stringify!(mKey) + ) + ); + } + impl Clone for nsIdentifierMapEntry_ChangeCallbackEntry { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsIdentifierMapEntry() { + assert_eq!( + ::std::mem::size_of::<nsIdentifierMapEntry>(), + 80usize, + concat!("Size of: ", stringify!(nsIdentifierMapEntry)) + ); + assert_eq!( + ::std::mem::align_of::<nsIdentifierMapEntry>(), + 8usize, + concat!("Alignment of ", stringify!(nsIdentifierMapEntry)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIdentifierMapEntry>())).mKey as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry), + "::", + stringify!(mKey) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry>())).mIdContentList as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry), + "::", + stringify!(mIdContentList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry>())).mNameContentList as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry), + "::", + stringify!(mNameContentList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry>())).mChangeCallbacks as *const _ + as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry), + "::", + stringify!(mChangeCallbacks) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIdentifierMapEntry>())).mImageElement as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsIdentifierMapEntry), + "::", + stringify!(mImageElement) + ) + ); + } + pub const nsCSSPropertyID_eCSSProperty_COUNT_no_shorthands: root::nsCSSPropertyID = + nsCSSPropertyID::eCSSProperty_all; + pub const nsCSSPropertyID_eCSSProperty_COUNT_DUMMY: root::nsCSSPropertyID = + nsCSSPropertyID::eCSSProperty_z_index; + pub const nsCSSPropertyID_eCSSProperty_COUNT: root::nsCSSPropertyID = + nsCSSPropertyID::eCSSPropertyAlias_WordWrap; + pub const nsCSSPropertyID_eCSSProperty_COUNT_DUMMY2: root::nsCSSPropertyID = + nsCSSPropertyID::eCSSProperty_transition; + pub const nsCSSPropertyID_eCSSProperty_COUNT_with_aliases: root::nsCSSPropertyID = + nsCSSPropertyID::eCSSPropertyExtra_no_properties; + pub const nsCSSPropertyID_eCSSProperty_COUNT_DUMMY3: root::nsCSSPropertyID = + nsCSSPropertyID::eCSSPropertyAlias_WebkitMaskSize; + #[repr(i32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsCSSPropertyID { + eCSSProperty_UNKNOWN = -1, + eCSSProperty_align_content = 0, + eCSSProperty_align_items = 1, + eCSSProperty_align_self = 2, + eCSSProperty_animation_delay = 3, + eCSSProperty_animation_direction = 4, + eCSSProperty_animation_duration = 5, + eCSSProperty_animation_fill_mode = 6, + eCSSProperty_animation_iteration_count = 7, + eCSSProperty_animation_name = 8, + eCSSProperty_animation_play_state = 9, + eCSSProperty_animation_timing_function = 10, + eCSSProperty__moz_appearance = 11, + eCSSProperty_backface_visibility = 12, + eCSSProperty_background_attachment = 13, + eCSSProperty_background_blend_mode = 14, + eCSSProperty_background_clip = 15, + eCSSProperty_background_color = 16, + eCSSProperty_background_image = 17, + eCSSProperty_background_origin = 18, + eCSSProperty_background_position_x = 19, + eCSSProperty_background_position_y = 20, + eCSSProperty_background_repeat = 21, + eCSSProperty_background_size = 22, + eCSSProperty__moz_binding = 23, + eCSSProperty_block_size = 24, + eCSSProperty_border_block_end_color = 25, + eCSSProperty_border_block_end_style = 26, + eCSSProperty_border_block_end_width = 27, + eCSSProperty_border_block_start_color = 28, + eCSSProperty_border_block_start_style = 29, + eCSSProperty_border_block_start_width = 30, + eCSSProperty_border_bottom_color = 31, + eCSSProperty_border_bottom_left_radius = 32, + eCSSProperty_border_bottom_right_radius = 33, + eCSSProperty_border_bottom_style = 34, + eCSSProperty_border_bottom_width = 35, + eCSSProperty_border_collapse = 36, + eCSSProperty_border_image_outset = 37, + eCSSProperty_border_image_repeat = 38, + eCSSProperty_border_image_slice = 39, + eCSSProperty_border_image_source = 40, + eCSSProperty_border_image_width = 41, + eCSSProperty_border_inline_end_color = 42, + eCSSProperty_border_inline_end_style = 43, + eCSSProperty_border_inline_end_width = 44, + eCSSProperty_border_inline_start_color = 45, + eCSSProperty_border_inline_start_style = 46, + eCSSProperty_border_inline_start_width = 47, + eCSSProperty_border_left_color = 48, + eCSSProperty_border_left_style = 49, + eCSSProperty_border_left_width = 50, + eCSSProperty_border_right_color = 51, + eCSSProperty_border_right_style = 52, + eCSSProperty_border_right_width = 53, + eCSSProperty_border_spacing = 54, + eCSSProperty_border_top_color = 55, + eCSSProperty_border_top_left_radius = 56, + eCSSProperty_border_top_right_radius = 57, + eCSSProperty_border_top_style = 58, + eCSSProperty_border_top_width = 59, + eCSSProperty_bottom = 60, + eCSSProperty__moz_box_align = 61, + eCSSProperty_box_decoration_break = 62, + eCSSProperty__moz_box_direction = 63, + eCSSProperty__moz_box_flex = 64, + eCSSProperty__moz_box_ordinal_group = 65, + eCSSProperty__moz_box_orient = 66, + eCSSProperty__moz_box_pack = 67, + eCSSProperty_box_shadow = 68, + eCSSProperty_box_sizing = 69, + eCSSProperty_caption_side = 70, + eCSSProperty_caret_color = 71, + eCSSProperty_clear = 72, + eCSSProperty_clip = 73, + eCSSProperty_clip_path = 74, + eCSSProperty_clip_rule = 75, + eCSSProperty_color = 76, + eCSSProperty_color_adjust = 77, + eCSSProperty_color_interpolation = 78, + eCSSProperty_color_interpolation_filters = 79, + eCSSProperty_column_count = 80, + eCSSProperty_column_fill = 81, + eCSSProperty_column_gap = 82, + eCSSProperty_column_rule_color = 83, + eCSSProperty_column_rule_style = 84, + eCSSProperty_column_rule_width = 85, + eCSSProperty_column_span = 86, + eCSSProperty_column_width = 87, + eCSSProperty_contain = 88, + eCSSProperty_content = 89, + eCSSProperty__moz_context_properties = 90, + eCSSProperty__moz_control_character_visibility = 91, + eCSSProperty_counter_increment = 92, + eCSSProperty_counter_reset = 93, + eCSSProperty_cursor = 94, + eCSSProperty_direction = 95, + eCSSProperty_display = 96, + eCSSProperty_dominant_baseline = 97, + eCSSProperty_empty_cells = 98, + eCSSProperty_fill = 99, + eCSSProperty_fill_opacity = 100, + eCSSProperty_fill_rule = 101, + eCSSProperty_filter = 102, + eCSSProperty_flex_basis = 103, + eCSSProperty_flex_direction = 104, + eCSSProperty_flex_grow = 105, + eCSSProperty_flex_shrink = 106, + eCSSProperty_flex_wrap = 107, + eCSSProperty_float_ = 108, + eCSSProperty__moz_float_edge = 109, + eCSSProperty_flood_color = 110, + eCSSProperty_flood_opacity = 111, + eCSSProperty_font_family = 112, + eCSSProperty_font_feature_settings = 113, + eCSSProperty_font_kerning = 114, + eCSSProperty_font_language_override = 115, + eCSSProperty_font_size = 116, + eCSSProperty_font_size_adjust = 117, + eCSSProperty__moz_font_smoothing_background_color = 118, + eCSSProperty_font_stretch = 119, + eCSSProperty_font_style = 120, + eCSSProperty_font_synthesis = 121, + eCSSProperty_font_variant_alternates = 122, + eCSSProperty_font_variant_caps = 123, + eCSSProperty_font_variant_east_asian = 124, + eCSSProperty_font_variant_ligatures = 125, + eCSSProperty_font_variant_numeric = 126, + eCSSProperty_font_variant_position = 127, + eCSSProperty_font_variation_settings = 128, + eCSSProperty_font_weight = 129, + eCSSProperty__moz_force_broken_image_icon = 130, + eCSSProperty_grid_auto_columns = 131, + eCSSProperty_grid_auto_flow = 132, + eCSSProperty_grid_auto_rows = 133, + eCSSProperty_grid_column_end = 134, + eCSSProperty_grid_column_gap = 135, + eCSSProperty_grid_column_start = 136, + eCSSProperty_grid_row_end = 137, + eCSSProperty_grid_row_gap = 138, + eCSSProperty_grid_row_start = 139, + eCSSProperty_grid_template_areas = 140, + eCSSProperty_grid_template_columns = 141, + eCSSProperty_grid_template_rows = 142, + eCSSProperty_height = 143, + eCSSProperty_hyphens = 144, + eCSSProperty_initial_letter = 145, + eCSSProperty_image_orientation = 146, + eCSSProperty__moz_image_region = 147, + eCSSProperty_image_rendering = 148, + eCSSProperty_ime_mode = 149, + eCSSProperty_inline_size = 150, + eCSSProperty_isolation = 151, + eCSSProperty_justify_content = 152, + eCSSProperty_justify_items = 153, + eCSSProperty_justify_self = 154, + eCSSProperty__x_lang = 155, + eCSSProperty_left = 156, + eCSSProperty_letter_spacing = 157, + eCSSProperty_lighting_color = 158, + eCSSProperty_line_height = 159, + eCSSProperty_list_style_image = 160, + eCSSProperty_list_style_position = 161, + eCSSProperty_list_style_type = 162, + eCSSProperty_margin_block_end = 163, + eCSSProperty_margin_block_start = 164, + eCSSProperty_margin_bottom = 165, + eCSSProperty_margin_inline_end = 166, + eCSSProperty_margin_inline_start = 167, + eCSSProperty_margin_left = 168, + eCSSProperty_margin_right = 169, + eCSSProperty_margin_top = 170, + eCSSProperty_marker_end = 171, + eCSSProperty_marker_mid = 172, + eCSSProperty_marker_start = 173, + eCSSProperty_mask_clip = 174, + eCSSProperty_mask_composite = 175, + eCSSProperty_mask_image = 176, + eCSSProperty_mask_mode = 177, + eCSSProperty_mask_origin = 178, + eCSSProperty_mask_position_x = 179, + eCSSProperty_mask_position_y = 180, + eCSSProperty_mask_repeat = 181, + eCSSProperty_mask_size = 182, + eCSSProperty_mask_type = 183, + eCSSProperty__moz_math_display = 184, + eCSSProperty__moz_math_variant = 185, + eCSSProperty_max_block_size = 186, + eCSSProperty_max_height = 187, + eCSSProperty_max_inline_size = 188, + eCSSProperty_max_width = 189, + eCSSProperty_min_block_size = 190, + eCSSProperty__moz_min_font_size_ratio = 191, + eCSSProperty_min_height = 192, + eCSSProperty_min_inline_size = 193, + eCSSProperty_min_width = 194, + eCSSProperty_mix_blend_mode = 195, + eCSSProperty_object_fit = 196, + eCSSProperty_object_position = 197, + eCSSProperty_offset_block_end = 198, + eCSSProperty_offset_block_start = 199, + eCSSProperty_offset_inline_end = 200, + eCSSProperty_offset_inline_start = 201, + eCSSProperty_opacity = 202, + eCSSProperty_order = 203, + eCSSProperty__moz_orient = 204, + eCSSProperty__moz_osx_font_smoothing = 205, + eCSSProperty_outline_color = 206, + eCSSProperty_outline_offset = 207, + eCSSProperty__moz_outline_radius_bottomleft = 208, + eCSSProperty__moz_outline_radius_bottomright = 209, + eCSSProperty__moz_outline_radius_topleft = 210, + eCSSProperty__moz_outline_radius_topright = 211, + eCSSProperty_outline_style = 212, + eCSSProperty_outline_width = 213, + eCSSProperty_overflow_clip_box_block = 214, + eCSSProperty_overflow_clip_box_inline = 215, + eCSSProperty_overflow_x = 216, + eCSSProperty_overflow_y = 217, + eCSSProperty_padding_block_end = 218, + eCSSProperty_padding_block_start = 219, + eCSSProperty_padding_bottom = 220, + eCSSProperty_padding_inline_end = 221, + eCSSProperty_padding_inline_start = 222, + eCSSProperty_padding_left = 223, + eCSSProperty_padding_right = 224, + eCSSProperty_padding_top = 225, + eCSSProperty_page_break_after = 226, + eCSSProperty_page_break_before = 227, + eCSSProperty_page_break_inside = 228, + eCSSProperty_paint_order = 229, + eCSSProperty_perspective = 230, + eCSSProperty_perspective_origin = 231, + eCSSProperty_pointer_events = 232, + eCSSProperty_position = 233, + eCSSProperty_quotes = 234, + eCSSProperty_resize = 235, + eCSSProperty_right = 236, + eCSSProperty_ruby_align = 237, + eCSSProperty_ruby_position = 238, + eCSSProperty__moz_script_level = 239, + eCSSProperty__moz_script_min_size = 240, + eCSSProperty__moz_script_size_multiplier = 241, + eCSSProperty_scroll_behavior = 242, + eCSSProperty_overscroll_behavior_x = 243, + eCSSProperty_overscroll_behavior_y = 244, + eCSSProperty_scroll_snap_coordinate = 245, + eCSSProperty_scroll_snap_destination = 246, + eCSSProperty_scroll_snap_points_x = 247, + eCSSProperty_scroll_snap_points_y = 248, + eCSSProperty_scroll_snap_type_x = 249, + eCSSProperty_scroll_snap_type_y = 250, + eCSSProperty_shape_image_threshold = 251, + eCSSProperty_shape_outside = 252, + eCSSProperty_shape_rendering = 253, + eCSSProperty__x_span = 254, + eCSSProperty__moz_stack_sizing = 255, + eCSSProperty_stop_color = 256, + eCSSProperty_stop_opacity = 257, + eCSSProperty_stroke = 258, + eCSSProperty_stroke_dasharray = 259, + eCSSProperty_stroke_dashoffset = 260, + eCSSProperty_stroke_linecap = 261, + eCSSProperty_stroke_linejoin = 262, + eCSSProperty_stroke_miterlimit = 263, + eCSSProperty_stroke_opacity = 264, + eCSSProperty_stroke_width = 265, + eCSSProperty__x_system_font = 266, + eCSSProperty__moz_tab_size = 267, + eCSSProperty_table_layout = 268, + eCSSProperty_text_align = 269, + eCSSProperty_text_align_last = 270, + eCSSProperty_text_anchor = 271, + eCSSProperty_text_combine_upright = 272, + eCSSProperty_text_decoration_color = 273, + eCSSProperty_text_decoration_line = 274, + eCSSProperty_text_decoration_style = 275, + eCSSProperty_text_emphasis_color = 276, + eCSSProperty_text_emphasis_position = 277, + eCSSProperty_text_emphasis_style = 278, + eCSSProperty__webkit_text_fill_color = 279, + eCSSProperty_text_indent = 280, + eCSSProperty_text_justify = 281, + eCSSProperty_text_orientation = 282, + eCSSProperty_text_overflow = 283, + eCSSProperty_text_rendering = 284, + eCSSProperty_text_shadow = 285, + eCSSProperty__moz_text_size_adjust = 286, + eCSSProperty__webkit_text_stroke_color = 287, + eCSSProperty__webkit_text_stroke_width = 288, + eCSSProperty_text_transform = 289, + eCSSProperty__x_text_zoom = 290, + eCSSProperty_top = 291, + eCSSProperty__moz_top_layer = 292, + eCSSProperty_touch_action = 293, + eCSSProperty_transform = 294, + eCSSProperty_transform_box = 295, + eCSSProperty_transform_origin = 296, + eCSSProperty_transform_style = 297, + eCSSProperty_transition_delay = 298, + eCSSProperty_transition_duration = 299, + eCSSProperty_transition_property = 300, + eCSSProperty_transition_timing_function = 301, + eCSSProperty_unicode_bidi = 302, + eCSSProperty__moz_user_focus = 303, + eCSSProperty__moz_user_input = 304, + eCSSProperty__moz_user_modify = 305, + eCSSProperty__moz_user_select = 306, + eCSSProperty_vector_effect = 307, + eCSSProperty_vertical_align = 308, + eCSSProperty_visibility = 309, + eCSSProperty_white_space = 310, + eCSSProperty_width = 311, + eCSSProperty_will_change = 312, + eCSSProperty__moz_window_dragging = 313, + eCSSProperty__moz_window_shadow = 314, + eCSSProperty__moz_window_opacity = 315, + eCSSProperty__moz_window_transform = 316, + eCSSProperty__moz_window_transform_origin = 317, + eCSSProperty_word_break = 318, + eCSSProperty_word_spacing = 319, + eCSSProperty_overflow_wrap = 320, + eCSSProperty_writing_mode = 321, + eCSSProperty_z_index = 322, + eCSSProperty_all = 323, + eCSSProperty_animation = 324, + eCSSProperty_background = 325, + eCSSProperty_background_position = 326, + eCSSProperty_border = 327, + eCSSProperty_border_block_end = 328, + eCSSProperty_border_block_start = 329, + eCSSProperty_border_bottom = 330, + eCSSProperty_border_color = 331, + eCSSProperty_border_image = 332, + eCSSProperty_border_inline_end = 333, + eCSSProperty_border_inline_start = 334, + eCSSProperty_border_left = 335, + eCSSProperty_border_radius = 336, + eCSSProperty_border_right = 337, + eCSSProperty_border_style = 338, + eCSSProperty_border_top = 339, + eCSSProperty_border_width = 340, + eCSSProperty_column_rule = 341, + eCSSProperty_columns = 342, + eCSSProperty_flex = 343, + eCSSProperty_flex_flow = 344, + eCSSProperty_font = 345, + eCSSProperty_font_variant = 346, + eCSSProperty_grid = 347, + eCSSProperty_grid_area = 348, + eCSSProperty_grid_column = 349, + eCSSProperty_grid_gap = 350, + eCSSProperty_grid_row = 351, + eCSSProperty_grid_template = 352, + eCSSProperty_list_style = 353, + eCSSProperty_margin = 354, + eCSSProperty_marker = 355, + eCSSProperty_mask = 356, + eCSSProperty_mask_position = 357, + eCSSProperty_outline = 358, + eCSSProperty__moz_outline_radius = 359, + eCSSProperty_overflow = 360, + eCSSProperty_overflow_clip_box = 361, + eCSSProperty_padding = 362, + eCSSProperty_place_content = 363, + eCSSProperty_place_items = 364, + eCSSProperty_place_self = 365, + eCSSProperty_overscroll_behavior = 366, + eCSSProperty_scroll_snap_type = 367, + eCSSProperty_text_decoration = 368, + eCSSProperty_text_emphasis = 369, + eCSSProperty__webkit_text_stroke = 370, + eCSSProperty__moz_transform = 371, + eCSSProperty_transition = 372, + eCSSPropertyAlias_WordWrap = 373, + eCSSPropertyAlias_MozTransformOrigin = 374, + eCSSPropertyAlias_MozPerspectiveOrigin = 375, + eCSSPropertyAlias_MozPerspective = 376, + eCSSPropertyAlias_MozTransformStyle = 377, + eCSSPropertyAlias_MozBackfaceVisibility = 378, + eCSSPropertyAlias_MozBorderImage = 379, + eCSSPropertyAlias_MozTransition = 380, + eCSSPropertyAlias_MozTransitionDelay = 381, + eCSSPropertyAlias_MozTransitionDuration = 382, + eCSSPropertyAlias_MozTransitionProperty = 383, + eCSSPropertyAlias_MozTransitionTimingFunction = 384, + eCSSPropertyAlias_MozAnimation = 385, + eCSSPropertyAlias_MozAnimationDelay = 386, + eCSSPropertyAlias_MozAnimationDirection = 387, + eCSSPropertyAlias_MozAnimationDuration = 388, + eCSSPropertyAlias_MozAnimationFillMode = 389, + eCSSPropertyAlias_MozAnimationIterationCount = 390, + eCSSPropertyAlias_MozAnimationName = 391, + eCSSPropertyAlias_MozAnimationPlayState = 392, + eCSSPropertyAlias_MozAnimationTimingFunction = 393, + eCSSPropertyAlias_MozBoxSizing = 394, + eCSSPropertyAlias_MozFontFeatureSettings = 395, + eCSSPropertyAlias_MozFontLanguageOverride = 396, + eCSSPropertyAlias_MozPaddingEnd = 397, + eCSSPropertyAlias_MozPaddingStart = 398, + eCSSPropertyAlias_MozMarginEnd = 399, + eCSSPropertyAlias_MozMarginStart = 400, + eCSSPropertyAlias_MozBorderEnd = 401, + eCSSPropertyAlias_MozBorderEndColor = 402, + eCSSPropertyAlias_MozBorderEndStyle = 403, + eCSSPropertyAlias_MozBorderEndWidth = 404, + eCSSPropertyAlias_MozBorderStart = 405, + eCSSPropertyAlias_MozBorderStartColor = 406, + eCSSPropertyAlias_MozBorderStartStyle = 407, + eCSSPropertyAlias_MozBorderStartWidth = 408, + eCSSPropertyAlias_MozHyphens = 409, + eCSSPropertyAlias_MozColumnCount = 410, + eCSSPropertyAlias_MozColumnFill = 411, + eCSSPropertyAlias_MozColumnGap = 412, + eCSSPropertyAlias_MozColumnRule = 413, + eCSSPropertyAlias_MozColumnRuleColor = 414, + eCSSPropertyAlias_MozColumnRuleStyle = 415, + eCSSPropertyAlias_MozColumnRuleWidth = 416, + eCSSPropertyAlias_MozColumnSpan = 417, + eCSSPropertyAlias_MozColumnWidth = 418, + eCSSPropertyAlias_MozColumns = 419, + eCSSPropertyAlias_WebkitAnimation = 420, + eCSSPropertyAlias_WebkitAnimationDelay = 421, + eCSSPropertyAlias_WebkitAnimationDirection = 422, + eCSSPropertyAlias_WebkitAnimationDuration = 423, + eCSSPropertyAlias_WebkitAnimationFillMode = 424, + eCSSPropertyAlias_WebkitAnimationIterationCount = 425, + eCSSPropertyAlias_WebkitAnimationName = 426, + eCSSPropertyAlias_WebkitAnimationPlayState = 427, + eCSSPropertyAlias_WebkitAnimationTimingFunction = 428, + eCSSPropertyAlias_WebkitFilter = 429, + eCSSPropertyAlias_WebkitTextSizeAdjust = 430, + eCSSPropertyAlias_WebkitTransform = 431, + eCSSPropertyAlias_WebkitTransformOrigin = 432, + eCSSPropertyAlias_WebkitTransformStyle = 433, + eCSSPropertyAlias_WebkitBackfaceVisibility = 434, + eCSSPropertyAlias_WebkitPerspective = 435, + eCSSPropertyAlias_WebkitPerspectiveOrigin = 436, + eCSSPropertyAlias_WebkitTransition = 437, + eCSSPropertyAlias_WebkitTransitionDelay = 438, + eCSSPropertyAlias_WebkitTransitionDuration = 439, + eCSSPropertyAlias_WebkitTransitionProperty = 440, + eCSSPropertyAlias_WebkitTransitionTimingFunction = 441, + eCSSPropertyAlias_WebkitBorderRadius = 442, + eCSSPropertyAlias_WebkitBorderTopLeftRadius = 443, + eCSSPropertyAlias_WebkitBorderTopRightRadius = 444, + eCSSPropertyAlias_WebkitBorderBottomLeftRadius = 445, + eCSSPropertyAlias_WebkitBorderBottomRightRadius = 446, + eCSSPropertyAlias_WebkitBackgroundClip = 447, + eCSSPropertyAlias_WebkitBackgroundOrigin = 448, + eCSSPropertyAlias_WebkitBackgroundSize = 449, + eCSSPropertyAlias_WebkitBorderImage = 450, + eCSSPropertyAlias_WebkitBoxShadow = 451, + eCSSPropertyAlias_WebkitBoxSizing = 452, + eCSSPropertyAlias_WebkitBoxFlex = 453, + eCSSPropertyAlias_WebkitBoxOrdinalGroup = 454, + eCSSPropertyAlias_WebkitBoxOrient = 455, + eCSSPropertyAlias_WebkitBoxDirection = 456, + eCSSPropertyAlias_WebkitBoxAlign = 457, + eCSSPropertyAlias_WebkitBoxPack = 458, + eCSSPropertyAlias_WebkitFlexDirection = 459, + eCSSPropertyAlias_WebkitFlexWrap = 460, + eCSSPropertyAlias_WebkitFlexFlow = 461, + eCSSPropertyAlias_WebkitOrder = 462, + eCSSPropertyAlias_WebkitFlex = 463, + eCSSPropertyAlias_WebkitFlexGrow = 464, + eCSSPropertyAlias_WebkitFlexShrink = 465, + eCSSPropertyAlias_WebkitFlexBasis = 466, + eCSSPropertyAlias_WebkitJustifyContent = 467, + eCSSPropertyAlias_WebkitAlignItems = 468, + eCSSPropertyAlias_WebkitAlignSelf = 469, + eCSSPropertyAlias_WebkitAlignContent = 470, + eCSSPropertyAlias_WebkitUserSelect = 471, + eCSSPropertyAlias_WebkitMask = 472, + eCSSPropertyAlias_WebkitMaskClip = 473, + eCSSPropertyAlias_WebkitMaskComposite = 474, + eCSSPropertyAlias_WebkitMaskImage = 475, + eCSSPropertyAlias_WebkitMaskOrigin = 476, + eCSSPropertyAlias_WebkitMaskPosition = 477, + eCSSPropertyAlias_WebkitMaskPositionX = 478, + eCSSPropertyAlias_WebkitMaskPositionY = 479, + eCSSPropertyAlias_WebkitMaskRepeat = 480, + eCSSPropertyAlias_WebkitMaskSize = 481, + eCSSPropertyExtra_no_properties = 482, + eCSSPropertyExtra_all_properties = 483, + eCSSPropertyExtra_x_none_value = 484, + eCSSPropertyExtra_x_auto_value = 485, + eCSSPropertyExtra_variable = 486, + eCSSProperty_DOM = 487, + } + #[repr(i32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsCSSFontDesc { + eCSSFontDesc_UNKNOWN = -1, + eCSSFontDesc_Family = 0, + eCSSFontDesc_Style = 1, + eCSSFontDesc_Weight = 2, + eCSSFontDesc_Stretch = 3, + eCSSFontDesc_Src = 4, + eCSSFontDesc_UnicodeRange = 5, + eCSSFontDesc_FontFeatureSettings = 6, + eCSSFontDesc_FontLanguageOverride = 7, + eCSSFontDesc_Display = 8, + eCSSFontDesc_COUNT = 9, + } + #[repr(i32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsCSSCounterDesc { + eCSSCounterDesc_UNKNOWN = -1, + eCSSCounterDesc_System = 0, + eCSSCounterDesc_Symbols = 1, + eCSSCounterDesc_AdditiveSymbols = 2, + eCSSCounterDesc_Negative = 3, + eCSSCounterDesc_Prefix = 4, + eCSSCounterDesc_Suffix = 5, + eCSSCounterDesc_Range = 6, + eCSSCounterDesc_Pad = 7, + eCSSCounterDesc_Fallback = 8, + eCSSCounterDesc_SpeakAs = 9, + eCSSCounterDesc_COUNT = 10, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RawServoStyleSet { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RawServoSourceSizeList { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RustString { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RawServoStyleSheetContents { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RawServoDeclarationBlock { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RawServoStyleRule { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RawServoAnimationValue { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct RawServoMediaList { + _unused: [u8; 0], + } + pub mod nsStyleTransformMatrix { + #[allow(unused_imports)] + use self::super::super::root; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum MatrixTransformOperator { + Interpolate = 0, + Accumulate = 1, + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsCSSPropertyIDSet { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsSimpleContentList { + _unused: [u8; 0], + } + pub type RawGeckoNode = root::nsINode; + pub type RawGeckoElement = root::mozilla::dom::Element; + pub type RawGeckoDocument = root::nsIDocument; + pub type RawGeckoPresContext = root::nsPresContext; + pub type RawGeckoXBLBinding = root::nsXBLBinding; + pub type RawGeckoURLExtraData = root::mozilla::URLExtraData; + pub type RawGeckoServoAnimationValueList = + root::nsTArray<root::RefPtr<root::RawServoAnimationValue>>; + pub type RawGeckoKeyframeList = root::nsTArray<root::mozilla::Keyframe>; + pub type RawGeckoPropertyValuePairList = root::nsTArray<root::mozilla::PropertyValuePair>; + pub type RawGeckoComputedKeyframeValuesList = + root::nsTArray<root::mozilla::ComputedKeyframeValues>; + pub type RawGeckoStyleAnimationList = root::nsStyleAutoArray<root::mozilla::StyleAnimation>; + pub type RawGeckoFontFaceRuleList = root::nsTArray<root::nsFontFaceRuleContainer>; + pub type RawGeckoAnimationPropertySegment = root::mozilla::AnimationPropertySegment; + pub type RawGeckoComputedTiming = root::mozilla::ComputedTiming; + pub type RawGeckoServoStyleRuleList = root::nsTArray<*const root::RawServoStyleRule>; + pub type RawGeckoCSSPropertyIDList = root::nsTArray<root::nsCSSPropertyID>; + pub type RawGeckoGfxMatrix4x4 = [root::mozilla::gfx::Float; 16usize]; + pub type RawGeckoStyleChildrenIterator = root::mozilla::dom::StyleChildrenIterator; + pub type ServoStyleContextBorrowed = *const root::mozilla::ServoStyleContext; + pub type ServoStyleContextBorrowedOrNull = *const root::mozilla::ServoStyleContext; + pub type ServoComputedDataBorrowed = *const root::ServoComputedData; + pub type RawGeckoNodeBorrowed = *const root::RawGeckoNode; + pub type RawGeckoNodeBorrowedOrNull = *const root::RawGeckoNode; + pub type RawGeckoElementBorrowed = *const root::RawGeckoElement; + pub type RawGeckoElementBorrowedOrNull = *const root::RawGeckoElement; + pub type RawGeckoDocumentBorrowed = *const root::RawGeckoDocument; + pub type RawGeckoDocumentBorrowedOrNull = *const root::RawGeckoDocument; + pub type RawGeckoXBLBindingBorrowed = *const root::RawGeckoXBLBinding; + pub type RawGeckoXBLBindingBorrowedOrNull = *const root::RawGeckoXBLBinding; + pub type RawGeckoPresContextOwned = *mut root::RawGeckoPresContext; + pub type RawGeckoPresContextBorrowed = *const root::RawGeckoPresContext; + pub type RawGeckoPresContextBorrowedMut = *mut root::RawGeckoPresContext; + pub type RawGeckoServoAnimationValueListBorrowedMut = + *mut root::RawGeckoServoAnimationValueList; + pub type RawGeckoServoAnimationValueListBorrowed = *const root::RawGeckoServoAnimationValueList; + pub type RawGeckoKeyframeListBorrowedMut = *mut root::RawGeckoKeyframeList; + pub type RawGeckoKeyframeListBorrowed = *const root::RawGeckoKeyframeList; + pub type RawGeckoPropertyValuePairListBorrowedMut = *mut root::RawGeckoPropertyValuePairList; + pub type RawGeckoPropertyValuePairListBorrowed = *const root::RawGeckoPropertyValuePairList; + pub type RawGeckoComputedKeyframeValuesListBorrowedMut = + *mut root::RawGeckoComputedKeyframeValuesList; + pub type RawGeckoStyleAnimationListBorrowedMut = *mut root::RawGeckoStyleAnimationList; + pub type RawGeckoStyleAnimationListBorrowed = *const root::RawGeckoStyleAnimationList; + pub type RawGeckoFontFaceRuleListBorrowedMut = *mut root::RawGeckoFontFaceRuleList; + pub type RawGeckoAnimationPropertySegmentBorrowed = + *const root::RawGeckoAnimationPropertySegment; + pub type RawGeckoComputedTimingBorrowed = *const root::RawGeckoComputedTiming; + pub type RawGeckoServoStyleRuleListBorrowedMut = *mut root::RawGeckoServoStyleRuleList; + pub type RawGeckoCSSPropertyIDListBorrowed = *const root::RawGeckoCSSPropertyIDList; + pub type RawGeckoStyleChildrenIteratorBorrowedMut = *mut root::RawGeckoStyleChildrenIterator; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsHTMLCSSStyleSheet { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsHTMLStyleSheet { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIBFCacheEntry { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDocumentEncoder { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIStructuredCloneContainer { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsSMILAnimationController { + _unused: [u8; 0], + } + #[repr(C)] + pub struct nsIDocument { + pub _base: root::nsINode, + pub _base_1: root::mozilla::dom::DocumentOrShadowRoot, + pub _base_2: root::mozilla::dom::DispatcherTrait, + pub mDeprecationWarnedAbout: u64, + pub mDocWarningWarnedAbout: u64, + pub mServoSelectorCache: root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>, + pub mGeckoSelectorCache: root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>, + pub mReferrer: root::nsCString, + pub mLastModified: ::nsstring::nsStringRepr, + pub mDocumentURI: root::nsCOMPtr, + pub mOriginalURI: root::nsCOMPtr, + pub mChromeXHRDocURI: root::nsCOMPtr, + pub mDocumentBaseURI: root::nsCOMPtr, + pub mChromeXHRDocBaseURI: root::nsCOMPtr, + pub mCachedURLData: root::RefPtr<root::mozilla::URLExtraData>, + pub mDocumentLoadGroup: root::nsWeakPtr, + pub mReferrerPolicySet: bool, + pub mReferrerPolicy: root::nsIDocument_ReferrerPolicyEnum, + pub mBlockAllMixedContent: bool, + pub mBlockAllMixedContentPreloads: bool, + pub mUpgradeInsecureRequests: bool, + pub mUpgradeInsecurePreloads: bool, + pub mDocumentContainer: u64, + pub mCharacterSet: root::mozilla::NotNull<*const root::nsIDocument_Encoding>, + pub mCharacterSetSource: i32, + pub mParentDocument: *mut root::nsIDocument, + pub mCachedRootElement: *mut root::mozilla::dom::Element, + pub mNodeInfoManager: *mut root::nsNodeInfoManager, + pub mCSSLoader: root::RefPtr<root::mozilla::css::Loader>, + pub mStyleImageLoader: root::RefPtr<root::mozilla::css::ImageLoader>, + pub mAttrStyleSheet: root::RefPtr<root::nsHTMLStyleSheet>, + pub mStyleAttrStyleSheet: root::RefPtr<root::nsHTMLCSSStyleSheet>, + pub mImageTracker: root::RefPtr<root::mozilla::dom::ImageTracker>, + pub mActivityObservers: u64, + pub mLinksToUpdate: [u64; 3usize], + pub mAnimationController: root::RefPtr<root::nsSMILAnimationController>, + pub mPropertyTable: root::nsPropertyTable, + pub mExtraPropertyTables: root::nsTArray<root::nsAutoPtr<root::nsPropertyTable>>, + pub mChildrenCollection: root::nsCOMPtr, + pub mFontFaceSet: root::RefPtr<root::mozilla::dom::FontFaceSet>, + pub mLastFocusTime: root::mozilla::TimeStamp, + pub mDocumentState: root::mozilla::EventStates, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 7usize], u8>, + pub mCompatMode: root::nsCompatibility, + pub mReadyState: root::nsIDocument_ReadyState, + pub mStyleBackendType: root::mozilla::StyleBackendType, + pub mVisibilityState: root::mozilla::dom::VisibilityState, + pub mType: root::nsIDocument_Type, + pub mDefaultElementType: u8, + pub mAllowXULXBL: root::nsIDocument_Tri, + /// This is true while FlushPendingLinkUpdates executes. Calls to + /// [Un]RegisterPendingLinkUpdate will assert when this is true. + pub mIsLinkUpdateRegistrationsForbidden: bool, + pub mScriptGlobalObject: root::nsCOMPtr, + pub mOriginalDocument: root::nsCOMPtr, + pub mBidiOptions: u32, + pub mSandboxFlags: u32, + pub mContentLanguage: root::nsCString, + pub mChannel: root::nsCOMPtr, + pub mContentType: root::nsCString, + pub mSecurityInfo: root::nsCOMPtr, + pub mFailedChannel: root::nsCOMPtr, + pub mPartID: u32, + pub mMarkedCCGeneration: u32, + pub mPresShell: *mut root::nsIPresShell, + pub mSubtreeModifiedTargets: root::nsCOMArray, + pub mSubtreeModifiedDepth: u32, + pub mDisplayDocument: root::nsCOMPtr, + pub mEventsSuppressed: u32, + /// https://html.spec.whatwg.org/#ignore-destructive-writes-counter + pub mIgnoreDestructiveWritesCounter: u32, + /// The current frame request callback handle + pub mFrameRequestCallbackCounter: i32, + pub mStaticCloneCount: u32, + pub mBlockedTrackingNodes: root::nsTArray<root::nsWeakPtr>, + pub mWindow: *mut root::nsPIDOMWindowInner, + pub mCachedEncoder: root::nsCOMPtr, + pub mFrameRequestCallbacks: root::nsTArray<root::nsIDocument_FrameRequest>, + pub mBFCacheEntry: *mut root::nsIBFCacheEntry, + pub mBaseTarget: ::nsstring::nsStringRepr, + pub mStateObjectContainer: root::nsCOMPtr, + pub mStateObjectCached: root::nsCOMPtr, + pub mInSyncOperationCount: u32, + pub mXPathEvaluator: root::RefPtr<root::mozilla::dom::XPathEvaluator>, + pub mAnonymousContents: root::nsTArray<root::RefPtr<root::mozilla::dom::AnonymousContent>>, + pub mBlockDOMContentLoaded: u32, + pub mDOMMediaQueryLists: root::mozilla::LinkedList, + pub mUseCounters: [u64; 2usize], + pub mChildDocumentUseCounters: [u64; 2usize], + pub mNotifiedPageForUseCounter: [u64; 2usize], + pub mIncCounters: u16, + pub mUserHasInteracted: bool, + pub mUserHasActivatedInteraction: bool, + pub mPageUnloadingEventTimeStamp: root::mozilla::TimeStamp, + pub mDocGroup: root::RefPtr<root::mozilla::dom::DocGroup>, + pub mTrackingScripts: [u64; 4usize], + pub mBufferedCSPViolations: root::nsTArray<root::nsCOMPtr>, + pub mAncestorPrincipals: root::nsTArray<root::nsCOMPtr>, + pub mAncestorOuterWindowIDs: root::nsTArray<u64>, + pub mServoRestyleRoot: root::nsCOMPtr, + pub mServoRestyleRootDirtyBits: u32, + pub mThrowOnDynamicMarkupInsertionCounter: u32, + pub mIgnoreOpensDuringUnloadCounter: u32, + } + pub type nsIDocument_GlobalObject = root::mozilla::dom::GlobalObject; + pub type nsIDocument_Encoding = root::mozilla::Encoding; + pub type nsIDocument_NotNull<T> = root::mozilla::NotNull<T>; + pub use self::super::root::mozilla::net::ReferrerPolicy as nsIDocument_ReferrerPolicyEnum; + pub type nsIDocument_Element = root::mozilla::dom::Element; + pub type nsIDocument_FullscreenRequest = root::mozilla::dom::FullscreenRequest; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDocument_COMTypeInfo { + pub _address: u8, + } + #[repr(C)] + pub struct nsIDocument_PageUnloadingEventTimeStamp { + pub mDocument: root::nsCOMPtr, + pub mSet: bool, + } + #[test] + fn bindgen_test_layout_nsIDocument_PageUnloadingEventTimeStamp() { + assert_eq!( + ::std::mem::size_of::<nsIDocument_PageUnloadingEventTimeStamp>(), + 16usize, + concat!( + "Size of: ", + stringify!(nsIDocument_PageUnloadingEventTimeStamp) + ) + ); + assert_eq!( + ::std::mem::align_of::<nsIDocument_PageUnloadingEventTimeStamp>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsIDocument_PageUnloadingEventTimeStamp) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIDocument_PageUnloadingEventTimeStamp>())).mDocument + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsIDocument_PageUnloadingEventTimeStamp), + "::", + stringify!(mDocument) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIDocument_PageUnloadingEventTimeStamp>())).mSet as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIDocument_PageUnloadingEventTimeStamp), + "::", + stringify!(mSet) + ) + ); + } + /// This gets fired when the element that an id refers to changes. /// This fires at difficult times. It is generally not safe to do anything /// which could modify the DOM in any way. Use /// nsContentUtils::AddScriptRunner. /// @return true to keep the callback in the callback set, false - /// to remove it. - pub type nsIDocument_IDTargetObserver = :: std :: option :: Option < unsafe extern "C" fn ( aOldElement : * mut root :: nsIDocument_Element , aNewelement : * mut root :: nsIDocument_Element , aData : * mut :: std :: os :: raw :: c_void ) -> bool > ; # [ repr ( C ) ] pub struct nsIDocument_SelectorCacheKey { pub mKey : ::nsstring::nsStringRepr , pub mState : root :: nsExpirationState , } # [ test ] fn bindgen_test_layout_nsIDocument_SelectorCacheKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDocument_SelectorCacheKey > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsIDocument_SelectorCacheKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDocument_SelectorCacheKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDocument_SelectorCacheKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIDocument_SelectorCacheKey ) ) . mKey as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsIDocument_SelectorCacheKey ) , "::" , stringify ! ( mKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIDocument_SelectorCacheKey ) ) . mState as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsIDocument_SelectorCacheKey ) , "::" , stringify ! ( mState ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDocument_SelectorCacheKeyDeleter { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDocument_SelectorCache { pub _bindgen_opaque_blob : [ u64 ; 16usize ] , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsIDocument_SelectorCache_SelectorList { pub mIsServo : bool , pub __bindgen_anon_1 : root :: nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 { pub mGecko : root :: __BindgenUnionField < * mut root :: nsCSSSelectorList > , pub mServo : root :: __BindgenUnionField < * mut root :: RawServoSelectorList > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 ) ) . mGecko as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 ) , "::" , stringify ! ( mGecko ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 ) ) . mServo as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 ) , "::" , stringify ! ( mServo ) ) ) ; } impl Clone for nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsIDocument_SelectorCache_SelectorList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDocument_SelectorCache_SelectorList > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsIDocument_SelectorCache_SelectorList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDocument_SelectorCache_SelectorList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDocument_SelectorCache_SelectorList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIDocument_SelectorCache_SelectorList ) ) . mIsServo as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsIDocument_SelectorCache_SelectorList ) , "::" , stringify ! ( mIsServo ) ) ) ; } # [ test ] fn bindgen_test_layout_nsIDocument_SelectorCache ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDocument_SelectorCache > ( ) , 128usize , concat ! ( "Size of: " , stringify ! ( nsIDocument_SelectorCache ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDocument_SelectorCache > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDocument_SelectorCache ) ) ) ; } impl Clone for nsIDocument_SelectorCache { fn clone ( & self ) -> Self { * self } } pub const nsIDocument_additionalSheetType_eAgentSheet : root :: nsIDocument_additionalSheetType = 0 ; pub const nsIDocument_additionalSheetType_eUserSheet : root :: nsIDocument_additionalSheetType = 1 ; pub const nsIDocument_additionalSheetType_eAuthorSheet : root :: nsIDocument_additionalSheetType = 2 ; pub const nsIDocument_additionalSheetType_AdditionalSheetTypeCount : root :: nsIDocument_additionalSheetType = 3 ; pub type nsIDocument_additionalSheetType = :: std :: os :: raw :: c_uint ; pub const nsIDocument_ReadyState_READYSTATE_UNINITIALIZED : root :: nsIDocument_ReadyState = 0 ; pub const nsIDocument_ReadyState_READYSTATE_LOADING : root :: nsIDocument_ReadyState = 1 ; pub const nsIDocument_ReadyState_READYSTATE_INTERACTIVE : root :: nsIDocument_ReadyState = 3 ; pub const nsIDocument_ReadyState_READYSTATE_COMPLETE : root :: nsIDocument_ReadyState = 4 ; pub type nsIDocument_ReadyState = :: std :: os :: raw :: c_uint ; - /// Enumerate all subdocuments. + /// to remove it. + pub type nsIDocument_IDTargetObserver = ::std::option::Option< + unsafe extern "C" fn( + aOldElement: *mut root::nsIDocument_Element, + aNewelement: *mut root::nsIDocument_Element, + aData: *mut ::std::os::raw::c_void, + ) -> bool, + >; + #[repr(C)] + pub struct nsIDocument_SelectorCacheKey { + pub mKey: ::nsstring::nsStringRepr, + pub mState: root::nsExpirationState, + } + #[test] + fn bindgen_test_layout_nsIDocument_SelectorCacheKey() { + assert_eq!( + ::std::mem::size_of::<nsIDocument_SelectorCacheKey>(), + 24usize, + concat!("Size of: ", stringify!(nsIDocument_SelectorCacheKey)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDocument_SelectorCacheKey>(), + 8usize, + concat!("Alignment of ", stringify!(nsIDocument_SelectorCacheKey)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIDocument_SelectorCacheKey>())).mKey as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsIDocument_SelectorCacheKey), + "::", + stringify!(mKey) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIDocument_SelectorCacheKey>())).mState as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsIDocument_SelectorCacheKey), + "::", + stringify!(mState) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDocument_SelectorCacheKeyDeleter { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIDocument_SelectorCache { + pub _bindgen_opaque_blob: [u64; 16usize], + } + #[repr(C)] + #[derive(Debug)] + pub struct nsIDocument_SelectorCache_SelectorList { + pub mIsServo: bool, + pub __bindgen_anon_1: root::nsIDocument_SelectorCache_SelectorList__bindgen_ty_1, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 { + pub mGecko: root::__BindgenUnionField<*mut root::nsCSSSelectorList>, + pub mServo: root::__BindgenUnionField<*mut root::RawServoSelectorList>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsIDocument_SelectorCache_SelectorList__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsIDocument_SelectorCache_SelectorList__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(nsIDocument_SelectorCache_SelectorList__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<nsIDocument_SelectorCache_SelectorList__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsIDocument_SelectorCache_SelectorList__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIDocument_SelectorCache_SelectorList__bindgen_ty_1>())) + .mGecko as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsIDocument_SelectorCache_SelectorList__bindgen_ty_1), + "::", + stringify!(mGecko) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIDocument_SelectorCache_SelectorList__bindgen_ty_1>())) + .mServo as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsIDocument_SelectorCache_SelectorList__bindgen_ty_1), + "::", + stringify!(mServo) + ) + ); + } + impl Clone for nsIDocument_SelectorCache_SelectorList__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsIDocument_SelectorCache_SelectorList() { + assert_eq!( + ::std::mem::size_of::<nsIDocument_SelectorCache_SelectorList>(), + 16usize, + concat!( + "Size of: ", + stringify!(nsIDocument_SelectorCache_SelectorList) + ) + ); + assert_eq!( + ::std::mem::align_of::<nsIDocument_SelectorCache_SelectorList>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsIDocument_SelectorCache_SelectorList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIDocument_SelectorCache_SelectorList>())).mIsServo + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsIDocument_SelectorCache_SelectorList), + "::", + stringify!(mIsServo) + ) + ); + } + #[test] + fn bindgen_test_layout_nsIDocument_SelectorCache() { + assert_eq!( + ::std::mem::size_of::<nsIDocument_SelectorCache>(), + 128usize, + concat!("Size of: ", stringify!(nsIDocument_SelectorCache)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDocument_SelectorCache>(), + 8usize, + concat!("Alignment of ", stringify!(nsIDocument_SelectorCache)) + ); + } + impl Clone for nsIDocument_SelectorCache { + fn clone(&self) -> Self { + *self + } + } + pub const nsIDocument_additionalSheetType_eAgentSheet: root::nsIDocument_additionalSheetType = + 0; + pub const nsIDocument_additionalSheetType_eUserSheet: root::nsIDocument_additionalSheetType = 1; + pub const nsIDocument_additionalSheetType_eAuthorSheet: root::nsIDocument_additionalSheetType = + 2; + pub const nsIDocument_additionalSheetType_AdditionalSheetTypeCount: + root::nsIDocument_additionalSheetType = 3; + pub type nsIDocument_additionalSheetType = u32; + pub const nsIDocument_ReadyState_READYSTATE_UNINITIALIZED: root::nsIDocument_ReadyState = 0; + pub const nsIDocument_ReadyState_READYSTATE_LOADING: root::nsIDocument_ReadyState = 1; + pub const nsIDocument_ReadyState_READYSTATE_INTERACTIVE: root::nsIDocument_ReadyState = 3; + pub const nsIDocument_ReadyState_READYSTATE_COMPLETE: root::nsIDocument_ReadyState = 4; + pub type nsIDocument_ReadyState = u32; + /// Enumerate all subdocuments. /// The enumerator callback should return true to continue enumerating, or - /// false to stop. This will never get passed a null aDocument. - pub type nsIDocument_nsSubDocEnumFunc = :: std :: option :: Option < unsafe extern "C" fn ( aDocument : * mut root :: nsIDocument , aData : * mut :: std :: os :: raw :: c_void ) -> bool > ; pub const nsIDocument_ElementsFromPointFlags_IGNORE_ROOT_SCROLL_FRAME : root :: nsIDocument_ElementsFromPointFlags = 1 ; pub const nsIDocument_ElementsFromPointFlags_FLUSH_LAYOUT : root :: nsIDocument_ElementsFromPointFlags = 2 ; pub const nsIDocument_ElementsFromPointFlags_IS_ELEMENT_FROM_POINT : root :: nsIDocument_ElementsFromPointFlags = 4 ; pub type nsIDocument_ElementsFromPointFlags = :: std :: os :: raw :: c_uint ; - /// A class that represents an external resource load that has begun but + /// false to stop. This will never get passed a null aDocument. + pub type nsIDocument_nsSubDocEnumFunc = ::std::option::Option< + unsafe extern "C" fn(aDocument: *mut root::nsIDocument, aData: *mut ::std::os::raw::c_void) + -> bool, + >; + pub const nsIDocument_ElementsFromPointFlags_IGNORE_ROOT_SCROLL_FRAME: + root::nsIDocument_ElementsFromPointFlags = 1; + pub const nsIDocument_ElementsFromPointFlags_FLUSH_LAYOUT: + root::nsIDocument_ElementsFromPointFlags = 2; + pub const nsIDocument_ElementsFromPointFlags_IS_ELEMENT_FROM_POINT: + root::nsIDocument_ElementsFromPointFlags = 4; + pub type nsIDocument_ElementsFromPointFlags = u32; + /// A class that represents an external resource load that has begun but /// doesn't have a document yet. Observers can be registered on this object, /// and will be notified after the document is created. Observers registered /// after the document has been created will NOT be notified. When observers /// are notified, the subject will be the newly-created document, the topic /// will be "external-resource-document-created", and the data will be null. /// If document creation fails for some reason, observers will still be - /// notified, with a null document pointer. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsIDocument_ExternalResourceLoad { pub _base : root :: nsISupports , pub mObservers : [ u64 ; 10usize ] , } # [ test ] fn bindgen_test_layout_nsIDocument_ExternalResourceLoad ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDocument_ExternalResourceLoad > ( ) , 88usize , concat ! ( "Size of: " , stringify ! ( nsIDocument_ExternalResourceLoad ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDocument_ExternalResourceLoad > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDocument_ExternalResourceLoad ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIDocument_ExternalResourceLoad ) ) . mObservers as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsIDocument_ExternalResourceLoad ) , "::" , stringify ! ( mObservers ) ) ) ; } pub type nsIDocument_ActivityObserverEnumerator = :: std :: option :: Option < unsafe extern "C" fn ( arg1 : * mut root :: nsISupports , arg2 : * mut :: std :: os :: raw :: c_void ) > ; # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsIDocument_DocumentTheme { Doc_Theme_Uninitialized = 0 , Doc_Theme_None = 1 , Doc_Theme_Neutral = 2 , Doc_Theme_Dark = 3 , Doc_Theme_Bright = 4 , } pub type nsIDocument_FrameRequestCallbackList = root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: FrameRequestCallback > > ; pub const nsIDocument_DeprecatedOperations_eEnablePrivilege : root :: nsIDocument_DeprecatedOperations = 0 ; pub const nsIDocument_DeprecatedOperations_eDOMExceptionCode : root :: nsIDocument_DeprecatedOperations = 1 ; pub const nsIDocument_DeprecatedOperations_eMutationEvent : root :: nsIDocument_DeprecatedOperations = 2 ; pub const nsIDocument_DeprecatedOperations_eComponents : root :: nsIDocument_DeprecatedOperations = 3 ; pub const nsIDocument_DeprecatedOperations_ePrefixedVisibilityAPI : root :: nsIDocument_DeprecatedOperations = 4 ; pub const nsIDocument_DeprecatedOperations_eNodeIteratorDetach : root :: nsIDocument_DeprecatedOperations = 5 ; pub const nsIDocument_DeprecatedOperations_eLenientThis : root :: nsIDocument_DeprecatedOperations = 6 ; pub const nsIDocument_DeprecatedOperations_eGetPreventDefault : root :: nsIDocument_DeprecatedOperations = 7 ; pub const nsIDocument_DeprecatedOperations_eGetSetUserData : root :: nsIDocument_DeprecatedOperations = 8 ; pub const nsIDocument_DeprecatedOperations_eMozGetAsFile : root :: nsIDocument_DeprecatedOperations = 9 ; pub const nsIDocument_DeprecatedOperations_eUseOfCaptureEvents : root :: nsIDocument_DeprecatedOperations = 10 ; pub const nsIDocument_DeprecatedOperations_eUseOfReleaseEvents : root :: nsIDocument_DeprecatedOperations = 11 ; pub const nsIDocument_DeprecatedOperations_eUseOfDOM3LoadMethod : root :: nsIDocument_DeprecatedOperations = 12 ; pub const nsIDocument_DeprecatedOperations_eChromeUseOfDOM3LoadMethod : root :: nsIDocument_DeprecatedOperations = 13 ; pub const nsIDocument_DeprecatedOperations_eShowModalDialog : root :: nsIDocument_DeprecatedOperations = 14 ; pub const nsIDocument_DeprecatedOperations_eSyncXMLHttpRequest : root :: nsIDocument_DeprecatedOperations = 15 ; pub const nsIDocument_DeprecatedOperations_eWindow_Cc_ontrollers : root :: nsIDocument_DeprecatedOperations = 16 ; pub const nsIDocument_DeprecatedOperations_eImportXULIntoContent : root :: nsIDocument_DeprecatedOperations = 17 ; pub const nsIDocument_DeprecatedOperations_ePannerNodeDoppler : root :: nsIDocument_DeprecatedOperations = 18 ; pub const nsIDocument_DeprecatedOperations_eNavigatorGetUserMedia : root :: nsIDocument_DeprecatedOperations = 19 ; pub const nsIDocument_DeprecatedOperations_eWebrtcDeprecatedPrefix : root :: nsIDocument_DeprecatedOperations = 20 ; pub const nsIDocument_DeprecatedOperations_eRTCPeerConnectionGetStreams : root :: nsIDocument_DeprecatedOperations = 21 ; pub const nsIDocument_DeprecatedOperations_eAppCache : root :: nsIDocument_DeprecatedOperations = 22 ; pub const nsIDocument_DeprecatedOperations_ePrefixedImageSmoothingEnabled : root :: nsIDocument_DeprecatedOperations = 23 ; pub const nsIDocument_DeprecatedOperations_ePrefixedFullscreenAPI : root :: nsIDocument_DeprecatedOperations = 24 ; pub const nsIDocument_DeprecatedOperations_eLenientSetter : root :: nsIDocument_DeprecatedOperations = 25 ; pub const nsIDocument_DeprecatedOperations_eFileLastModifiedDate : root :: nsIDocument_DeprecatedOperations = 26 ; pub const nsIDocument_DeprecatedOperations_eImageBitmapRenderingContext_TransferImageBitmap : root :: nsIDocument_DeprecatedOperations = 27 ; pub const nsIDocument_DeprecatedOperations_eURLCreateObjectURL_MediaStream : root :: nsIDocument_DeprecatedOperations = 28 ; pub const nsIDocument_DeprecatedOperations_eXMLBaseAttribute : root :: nsIDocument_DeprecatedOperations = 29 ; pub const nsIDocument_DeprecatedOperations_eWindowContentUntrusted : root :: nsIDocument_DeprecatedOperations = 30 ; pub const nsIDocument_DeprecatedOperations_eDeprecatedOperationCount : root :: nsIDocument_DeprecatedOperations = 31 ; pub type nsIDocument_DeprecatedOperations = :: std :: os :: raw :: c_uint ; pub const nsIDocument_DocumentWarnings_eIgnoringWillChangeOverBudget : root :: nsIDocument_DocumentWarnings = 0 ; pub const nsIDocument_DocumentWarnings_ePreventDefaultFromPassiveListener : root :: nsIDocument_DocumentWarnings = 1 ; pub const nsIDocument_DocumentWarnings_eSVGRefLoop : root :: nsIDocument_DocumentWarnings = 2 ; pub const nsIDocument_DocumentWarnings_eSVGRefChainLengthExceeded : root :: nsIDocument_DocumentWarnings = 3 ; pub const nsIDocument_DocumentWarnings_eDocumentWarningCount : root :: nsIDocument_DocumentWarnings = 4 ; pub type nsIDocument_DocumentWarnings = :: std :: os :: raw :: c_uint ; pub const nsIDocument_ElementCallbackType_eConnected : root :: nsIDocument_ElementCallbackType = 0 ; pub const nsIDocument_ElementCallbackType_eDisconnected : root :: nsIDocument_ElementCallbackType = 1 ; pub const nsIDocument_ElementCallbackType_eAdopted : root :: nsIDocument_ElementCallbackType = 2 ; pub const nsIDocument_ElementCallbackType_eAttributeChanged : root :: nsIDocument_ElementCallbackType = 3 ; pub type nsIDocument_ElementCallbackType = :: std :: os :: raw :: c_uint ; pub const nsIDocument_eScopedStyle_Unknown : root :: nsIDocument__bindgen_ty_1 = 0 ; pub const nsIDocument_eScopedStyle_Disabled : root :: nsIDocument__bindgen_ty_1 = 1 ; pub const nsIDocument_eScopedStyle_Enabled : root :: nsIDocument__bindgen_ty_1 = 2 ; pub type nsIDocument__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsIDocument_Type { eUnknown = 0 , eHTML = 1 , eXHTML = 2 , eGenericXML = 3 , eSVG = 4 , eXUL = 5 , } pub const nsIDocument_Tri_eTriUnset : root :: nsIDocument_Tri = 0 ; pub const nsIDocument_Tri_eTriFalse : root :: nsIDocument_Tri = 1 ; pub const nsIDocument_Tri_eTriTrue : root :: nsIDocument_Tri = 2 ; pub type nsIDocument_Tri = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDocument_FrameRequest { _unused : [ u8 ; 0 ] } pub const nsIDocument_kSegmentSize : usize = 128 ; # [ test ] fn bindgen_test_layout_nsIDocument ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDocument > ( ) , 952usize , concat ! ( "Size of: " , stringify ! ( nsIDocument ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDocument > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDocument ) ) ) ; } impl nsIDocument { # [ inline ] pub fn mBidiEnabled ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1 as u64 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mBidiEnabled ( & mut self , val : bool ) { let mask = 0x1 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mMathMLEnabled ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2 as u64 ; let val = ( unit_field_val & mask ) >> 1usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mMathMLEnabled ( & mut self , val : bool ) { let mask = 0x2 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 1usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsInitialDocumentInWindow ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4 as u64 ; let val = ( unit_field_val & mask ) >> 2usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsInitialDocumentInWindow ( & mut self , val : bool ) { let mask = 0x4 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 2usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIgnoreDocGroupMismatches ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8 as u64 ; let val = ( unit_field_val & mask ) >> 3usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIgnoreDocGroupMismatches ( & mut self , val : bool ) { let mask = 0x8 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 3usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mLoadedAsData ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x10 as u64 ; let val = ( unit_field_val & mask ) >> 4usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mLoadedAsData ( & mut self , val : bool ) { let mask = 0x10 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 4usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mLoadedAsInteractiveData ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x20 as u64 ; let val = ( unit_field_val & mask ) >> 5usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mLoadedAsInteractiveData ( & mut self , val : bool ) { let mask = 0x20 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 5usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mMayStartLayout ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x40 as u64 ; let val = ( unit_field_val & mask ) >> 6usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mMayStartLayout ( & mut self , val : bool ) { let mask = 0x40 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 6usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHaveFiredTitleChange ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x80 as u64 ; let val = ( unit_field_val & mask ) >> 7usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHaveFiredTitleChange ( & mut self , val : bool ) { let mask = 0x80 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 7usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsShowing ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x100 as u64 ; let val = ( unit_field_val & mask ) >> 8usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsShowing ( & mut self , val : bool ) { let mask = 0x100 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 8usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mVisible ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x200 as u64 ; let val = ( unit_field_val & mask ) >> 9usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mVisible ( & mut self , val : bool ) { let mask = 0x200 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 9usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasReferrerPolicyCSP ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x400 as u64 ; let val = ( unit_field_val & mask ) >> 10usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasReferrerPolicyCSP ( & mut self , val : bool ) { let mask = 0x400 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 10usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mRemovedFromDocShell ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x800 as u64 ; let val = ( unit_field_val & mask ) >> 11usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mRemovedFromDocShell ( & mut self , val : bool ) { let mask = 0x800 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 11usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mAllowDNSPrefetch ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1000 as u64 ; let val = ( unit_field_val & mask ) >> 12usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mAllowDNSPrefetch ( & mut self , val : bool ) { let mask = 0x1000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 12usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsStaticDocument ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2000 as u64 ; let val = ( unit_field_val & mask ) >> 13usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsStaticDocument ( & mut self , val : bool ) { let mask = 0x2000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 13usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mCreatingStaticClone ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4000 as u64 ; let val = ( unit_field_val & mask ) >> 14usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mCreatingStaticClone ( & mut self , val : bool ) { let mask = 0x4000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 14usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mInUnlinkOrDeletion ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8000 as u64 ; let val = ( unit_field_val & mask ) >> 15usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mInUnlinkOrDeletion ( & mut self , val : bool ) { let mask = 0x8000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 15usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasHadScriptHandlingObject ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x10000 as u64 ; let val = ( unit_field_val & mask ) >> 16usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasHadScriptHandlingObject ( & mut self , val : bool ) { let mask = 0x10000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 16usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsBeingUsedAsImage ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x20000 as u64 ; let val = ( unit_field_val & mask ) >> 17usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsBeingUsedAsImage ( & mut self , val : bool ) { let mask = 0x20000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 17usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsSyntheticDocument ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x40000 as u64 ; let val = ( unit_field_val & mask ) >> 18usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsSyntheticDocument ( & mut self , val : bool ) { let mask = 0x40000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 18usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasLinksToUpdate ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x80000 as u64 ; let val = ( unit_field_val & mask ) >> 19usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasLinksToUpdate ( & mut self , val : bool ) { let mask = 0x80000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 19usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasLinksToUpdateRunnable ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x100000 as u64 ; let val = ( unit_field_val & mask ) >> 20usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasLinksToUpdateRunnable ( & mut self , val : bool ) { let mask = 0x100000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 20usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mMayHaveDOMMutationObservers ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x200000 as u64 ; let val = ( unit_field_val & mask ) >> 21usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mMayHaveDOMMutationObservers ( & mut self , val : bool ) { let mask = 0x200000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 21usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mMayHaveAnimationObservers ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x400000 as u64 ; let val = ( unit_field_val & mask ) >> 22usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mMayHaveAnimationObservers ( & mut self , val : bool ) { let mask = 0x400000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 22usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasMixedActiveContentLoaded ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x800000 as u64 ; let val = ( unit_field_val & mask ) >> 23usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasMixedActiveContentLoaded ( & mut self , val : bool ) { let mask = 0x800000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 23usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasMixedActiveContentBlocked ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1000000 as u64 ; let val = ( unit_field_val & mask ) >> 24usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasMixedActiveContentBlocked ( & mut self , val : bool ) { let mask = 0x1000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 24usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasMixedDisplayContentLoaded ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2000000 as u64 ; let val = ( unit_field_val & mask ) >> 25usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasMixedDisplayContentLoaded ( & mut self , val : bool ) { let mask = 0x2000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 25usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasMixedDisplayContentBlocked ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4000000 as u64 ; let val = ( unit_field_val & mask ) >> 26usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasMixedDisplayContentBlocked ( & mut self , val : bool ) { let mask = 0x4000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 26usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasMixedContentObjectSubrequest ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8000000 as u64 ; let val = ( unit_field_val & mask ) >> 27usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasMixedContentObjectSubrequest ( & mut self , val : bool ) { let mask = 0x8000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 27usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasCSP ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x10000000 as u64 ; let val = ( unit_field_val & mask ) >> 28usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasCSP ( & mut self , val : bool ) { let mask = 0x10000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 28usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasUnsafeEvalCSP ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x20000000 as u64 ; let val = ( unit_field_val & mask ) >> 29usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasUnsafeEvalCSP ( & mut self , val : bool ) { let mask = 0x20000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 29usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasUnsafeInlineCSP ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x40000000 as u64 ; let val = ( unit_field_val & mask ) >> 30usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasUnsafeInlineCSP ( & mut self , val : bool ) { let mask = 0x40000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 30usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasTrackingContentBlocked ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x80000000 as u64 ; let val = ( unit_field_val & mask ) >> 31usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasTrackingContentBlocked ( & mut self , val : bool ) { let mask = 0x80000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 31usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasTrackingContentLoaded ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x100000000 as u64 ; let val = ( unit_field_val & mask ) >> 32usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasTrackingContentLoaded ( & mut self , val : bool ) { let mask = 0x100000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 32usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mBFCacheDisallowed ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x200000000 as u64 ; let val = ( unit_field_val & mask ) >> 33usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mBFCacheDisallowed ( & mut self , val : bool ) { let mask = 0x200000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 33usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasHadDefaultView ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x400000000 as u64 ; let val = ( unit_field_val & mask ) >> 34usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasHadDefaultView ( & mut self , val : bool ) { let mask = 0x400000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 34usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mStyleSheetChangeEventsEnabled ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x800000000 as u64 ; let val = ( unit_field_val & mask ) >> 35usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mStyleSheetChangeEventsEnabled ( & mut self , val : bool ) { let mask = 0x800000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 35usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsSrcdocDocument ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1000000000 as u64 ; let val = ( unit_field_val & mask ) >> 36usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsSrcdocDocument ( & mut self , val : bool ) { let mask = 0x1000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 36usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mDidDocumentOpen ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2000000000 as u64 ; let val = ( unit_field_val & mask ) >> 37usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mDidDocumentOpen ( & mut self , val : bool ) { let mask = 0x2000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 37usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasDisplayDocument ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4000000000 as u64 ; let val = ( unit_field_val & mask ) >> 38usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasDisplayDocument ( & mut self , val : bool ) { let mask = 0x4000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 38usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mFontFaceSetDirty ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8000000000 as u64 ; let val = ( unit_field_val & mask ) >> 39usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mFontFaceSetDirty ( & mut self , val : bool ) { let mask = 0x8000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 39usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mGetUserFontSetCalled ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x10000000000 as u64 ; let val = ( unit_field_val & mask ) >> 40usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mGetUserFontSetCalled ( & mut self , val : bool ) { let mask = 0x10000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 40usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPostedFlushUserFontSet ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x20000000000 as u64 ; let val = ( unit_field_val & mask ) >> 41usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mPostedFlushUserFontSet ( & mut self , val : bool ) { let mask = 0x20000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 41usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mDidFireDOMContentLoaded ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x40000000000 as u64 ; let val = ( unit_field_val & mask ) >> 42usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mDidFireDOMContentLoaded ( & mut self , val : bool ) { let mask = 0x40000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 42usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasScrollLinkedEffect ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x80000000000 as u64 ; let val = ( unit_field_val & mask ) >> 43usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHasScrollLinkedEffect ( & mut self , val : bool ) { let mask = 0x80000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 43usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mFrameRequestCallbacksScheduled ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x100000000000 as u64 ; let val = ( unit_field_val & mask ) >> 44usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mFrameRequestCallbacksScheduled ( & mut self , val : bool ) { let mask = 0x100000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 44usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsTopLevelContentDocument ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x200000000000 as u64 ; let val = ( unit_field_val & mask ) >> 45usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsTopLevelContentDocument ( & mut self , val : bool ) { let mask = 0x200000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 45usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsContentDocument ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x400000000000 as u64 ; let val = ( unit_field_val & mask ) >> 46usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsContentDocument ( & mut self , val : bool ) { let mask = 0x400000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 46usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mDidCallBeginLoad ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x800000000000 as u64 ; let val = ( unit_field_val & mask ) >> 47usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mDidCallBeginLoad ( & mut self , val : bool ) { let mask = 0x800000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 47usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mBufferingCSPViolations ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1000000000000 as u64 ; let val = ( unit_field_val & mask ) >> 48usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mBufferingCSPViolations ( & mut self , val : bool ) { let mask = 0x1000000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 48usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mAllowPaymentRequest ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2000000000000 as u64 ; let val = ( unit_field_val & mask ) >> 49usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mAllowPaymentRequest ( & mut self , val : bool ) { let mask = 0x2000000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 49usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mEncodingMenuDisabled ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4000000000000 as u64 ; let val = ( unit_field_val & mask ) >> 50usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mEncodingMenuDisabled ( & mut self , val : bool ) { let mask = 0x4000000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 50usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsWebComponentsEnabled ( & self ) -> bool { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8000000000000 as u64 ; let val = ( unit_field_val & mask ) >> 51usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsWebComponentsEnabled ( & mut self , val : bool ) { let mask = 0x8000000000000 as u64 ; let val = val as u8 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 51usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsScopedStyleEnabled ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x30000000000000 as u64 ; let val = ( unit_field_val & mask ) >> 52usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsScopedStyleEnabled ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x30000000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 52usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mBidiEnabled : bool , mMathMLEnabled : bool , mIsInitialDocumentInWindow : bool , mIgnoreDocGroupMismatches : bool , mLoadedAsData : bool , mLoadedAsInteractiveData : bool , mMayStartLayout : bool , mHaveFiredTitleChange : bool , mIsShowing : bool , mVisible : bool , mHasReferrerPolicyCSP : bool , mRemovedFromDocShell : bool , mAllowDNSPrefetch : bool , mIsStaticDocument : bool , mCreatingStaticClone : bool , mInUnlinkOrDeletion : bool , mHasHadScriptHandlingObject : bool , mIsBeingUsedAsImage : bool , mIsSyntheticDocument : bool , mHasLinksToUpdate : bool , mHasLinksToUpdateRunnable : bool , mMayHaveDOMMutationObservers : bool , mMayHaveAnimationObservers : bool , mHasMixedActiveContentLoaded : bool , mHasMixedActiveContentBlocked : bool , mHasMixedDisplayContentLoaded : bool , mHasMixedDisplayContentBlocked : bool , mHasMixedContentObjectSubrequest : bool , mHasCSP : bool , mHasUnsafeEvalCSP : bool , mHasUnsafeInlineCSP : bool , mHasTrackingContentBlocked : bool , mHasTrackingContentLoaded : bool , mBFCacheDisallowed : bool , mHasHadDefaultView : bool , mStyleSheetChangeEventsEnabled : bool , mIsSrcdocDocument : bool , mDidDocumentOpen : bool , mHasDisplayDocument : bool , mFontFaceSetDirty : bool , mGetUserFontSetCalled : bool , mPostedFlushUserFontSet : bool , mDidFireDOMContentLoaded : bool , mHasScrollLinkedEffect : bool , mFrameRequestCallbacksScheduled : bool , mIsTopLevelContentDocument : bool , mIsContentDocument : bool , mDidCallBeginLoad : bool , mBufferingCSPViolations : bool , mAllowPaymentRequest : bool , mEncodingMenuDisabled : bool , mIsWebComponentsEnabled : bool , mIsScopedStyleEnabled : :: std :: os :: raw :: c_uint ) -> u64 { ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 | ( ( mBidiEnabled as u8 as u64 ) << 0usize ) & ( 0x1 as u64 ) ) | ( ( mMathMLEnabled as u8 as u64 ) << 1usize ) & ( 0x2 as u64 ) ) | ( ( mIsInitialDocumentInWindow as u8 as u64 ) << 2usize ) & ( 0x4 as u64 ) ) | ( ( mIgnoreDocGroupMismatches as u8 as u64 ) << 3usize ) & ( 0x8 as u64 ) ) | ( ( mLoadedAsData as u8 as u64 ) << 4usize ) & ( 0x10 as u64 ) ) | ( ( mLoadedAsInteractiveData as u8 as u64 ) << 5usize ) & ( 0x20 as u64 ) ) | ( ( mMayStartLayout as u8 as u64 ) << 6usize ) & ( 0x40 as u64 ) ) | ( ( mHaveFiredTitleChange as u8 as u64 ) << 7usize ) & ( 0x80 as u64 ) ) | ( ( mIsShowing as u8 as u64 ) << 8usize ) & ( 0x100 as u64 ) ) | ( ( mVisible as u8 as u64 ) << 9usize ) & ( 0x200 as u64 ) ) | ( ( mHasReferrerPolicyCSP as u8 as u64 ) << 10usize ) & ( 0x400 as u64 ) ) | ( ( mRemovedFromDocShell as u8 as u64 ) << 11usize ) & ( 0x800 as u64 ) ) | ( ( mAllowDNSPrefetch as u8 as u64 ) << 12usize ) & ( 0x1000 as u64 ) ) | ( ( mIsStaticDocument as u8 as u64 ) << 13usize ) & ( 0x2000 as u64 ) ) | ( ( mCreatingStaticClone as u8 as u64 ) << 14usize ) & ( 0x4000 as u64 ) ) | ( ( mInUnlinkOrDeletion as u8 as u64 ) << 15usize ) & ( 0x8000 as u64 ) ) | ( ( mHasHadScriptHandlingObject as u8 as u64 ) << 16usize ) & ( 0x10000 as u64 ) ) | ( ( mIsBeingUsedAsImage as u8 as u64 ) << 17usize ) & ( 0x20000 as u64 ) ) | ( ( mIsSyntheticDocument as u8 as u64 ) << 18usize ) & ( 0x40000 as u64 ) ) | ( ( mHasLinksToUpdate as u8 as u64 ) << 19usize ) & ( 0x80000 as u64 ) ) | ( ( mHasLinksToUpdateRunnable as u8 as u64 ) << 20usize ) & ( 0x100000 as u64 ) ) | ( ( mMayHaveDOMMutationObservers as u8 as u64 ) << 21usize ) & ( 0x200000 as u64 ) ) | ( ( mMayHaveAnimationObservers as u8 as u64 ) << 22usize ) & ( 0x400000 as u64 ) ) | ( ( mHasMixedActiveContentLoaded as u8 as u64 ) << 23usize ) & ( 0x800000 as u64 ) ) | ( ( mHasMixedActiveContentBlocked as u8 as u64 ) << 24usize ) & ( 0x1000000 as u64 ) ) | ( ( mHasMixedDisplayContentLoaded as u8 as u64 ) << 25usize ) & ( 0x2000000 as u64 ) ) | ( ( mHasMixedDisplayContentBlocked as u8 as u64 ) << 26usize ) & ( 0x4000000 as u64 ) ) | ( ( mHasMixedContentObjectSubrequest as u8 as u64 ) << 27usize ) & ( 0x8000000 as u64 ) ) | ( ( mHasCSP as u8 as u64 ) << 28usize ) & ( 0x10000000 as u64 ) ) | ( ( mHasUnsafeEvalCSP as u8 as u64 ) << 29usize ) & ( 0x20000000 as u64 ) ) | ( ( mHasUnsafeInlineCSP as u8 as u64 ) << 30usize ) & ( 0x40000000 as u64 ) ) | ( ( mHasTrackingContentBlocked as u8 as u64 ) << 31usize ) & ( 0x80000000 as u64 ) ) | ( ( mHasTrackingContentLoaded as u8 as u64 ) << 32usize ) & ( 0x100000000 as u64 ) ) | ( ( mBFCacheDisallowed as u8 as u64 ) << 33usize ) & ( 0x200000000 as u64 ) ) | ( ( mHasHadDefaultView as u8 as u64 ) << 34usize ) & ( 0x400000000 as u64 ) ) | ( ( mStyleSheetChangeEventsEnabled as u8 as u64 ) << 35usize ) & ( 0x800000000 as u64 ) ) | ( ( mIsSrcdocDocument as u8 as u64 ) << 36usize ) & ( 0x1000000000 as u64 ) ) | ( ( mDidDocumentOpen as u8 as u64 ) << 37usize ) & ( 0x2000000000 as u64 ) ) | ( ( mHasDisplayDocument as u8 as u64 ) << 38usize ) & ( 0x4000000000 as u64 ) ) | ( ( mFontFaceSetDirty as u8 as u64 ) << 39usize ) & ( 0x8000000000 as u64 ) ) | ( ( mGetUserFontSetCalled as u8 as u64 ) << 40usize ) & ( 0x10000000000 as u64 ) ) | ( ( mPostedFlushUserFontSet as u8 as u64 ) << 41usize ) & ( 0x20000000000 as u64 ) ) | ( ( mDidFireDOMContentLoaded as u8 as u64 ) << 42usize ) & ( 0x40000000000 as u64 ) ) | ( ( mHasScrollLinkedEffect as u8 as u64 ) << 43usize ) & ( 0x80000000000 as u64 ) ) | ( ( mFrameRequestCallbacksScheduled as u8 as u64 ) << 44usize ) & ( 0x100000000000 as u64 ) ) | ( ( mIsTopLevelContentDocument as u8 as u64 ) << 45usize ) & ( 0x200000000000 as u64 ) ) | ( ( mIsContentDocument as u8 as u64 ) << 46usize ) & ( 0x400000000000 as u64 ) ) | ( ( mDidCallBeginLoad as u8 as u64 ) << 47usize ) & ( 0x800000000000 as u64 ) ) | ( ( mBufferingCSPViolations as u8 as u64 ) << 48usize ) & ( 0x1000000000000 as u64 ) ) | ( ( mAllowPaymentRequest as u8 as u64 ) << 49usize ) & ( 0x2000000000000 as u64 ) ) | ( ( mEncodingMenuDisabled as u8 as u64 ) << 50usize ) & ( 0x4000000000000 as u64 ) ) | ( ( mIsWebComponentsEnabled as u8 as u64 ) << 51usize ) & ( 0x8000000000000 as u64 ) ) | ( ( mIsScopedStyleEnabled as u32 as u64 ) << 52usize ) & ( 0x30000000000000 as u64 ) ) } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsBidi { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIPrintSettings { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct gfxTextPerfMetrics { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsTransitionManager { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsAnimationManager { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsDeviceContext { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct gfxMissingFontRecorder { _unused : [ u8 ; 0 ] } pub const kPresContext_DefaultVariableFont_ID : u8 = 0 ; pub const kPresContext_DefaultFixedFont_ID : u8 = 1 ; # [ repr ( C ) ] pub struct nsPresContext { pub _base : root :: nsISupports , pub _base_1 : u64 , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mType : root :: nsPresContext_nsPresContextType , pub mShell : * mut root :: nsIPresShell , pub mDocument : root :: nsCOMPtr , pub mDeviceContext : root :: RefPtr < root :: nsDeviceContext > , pub mEventManager : root :: RefPtr < root :: mozilla :: EventStateManager > , pub mRefreshDriver : root :: RefPtr < root :: nsRefreshDriver > , pub mEffectCompositor : root :: RefPtr < root :: mozilla :: EffectCompositor > , pub mTransitionManager : root :: RefPtr < root :: nsTransitionManager > , pub mAnimationManager : root :: RefPtr < root :: nsAnimationManager > , pub mRestyleManager : root :: RefPtr < root :: mozilla :: RestyleManager > , pub mCounterStyleManager : root :: RefPtr < root :: mozilla :: CounterStyleManager > , pub mMedium : * mut root :: nsAtom , pub mMediaEmulated : root :: RefPtr < root :: nsAtom > , pub mFontFeatureValuesLookup : root :: RefPtr < root :: gfxFontFeatureValueSet > , pub mLinkHandler : * mut root :: nsILinkHandler , pub mLanguage : root :: RefPtr < root :: nsAtom > , pub mInflationDisabledForShrinkWrap : bool , pub mContainer : u64 , pub mBaseMinFontSize : i32 , pub mSystemFontScale : f32 , pub mTextZoom : f32 , pub mEffectiveTextZoom : f32 , pub mFullZoom : f32 , pub mOverrideDPPX : f32 , pub mLastFontInflationScreenSize : root :: gfxSize , pub mCurAppUnitsPerDevPixel : i32 , pub mAutoQualityMinFontSizePixelsPref : i32 , pub mTheme : root :: nsCOMPtr , pub mLangService : * mut root :: nsLanguageAtomService , pub mPrintSettings : root :: nsCOMPtr , pub mPrefChangedTimer : root :: nsCOMPtr , pub mBidiEngine : root :: mozilla :: UniquePtr < root :: nsBidi > , pub mTransactions : [ u64 ; 10usize ] , pub mTextPerf : root :: nsAutoPtr < root :: gfxTextPerfMetrics > , pub mMissingFonts : root :: nsAutoPtr < root :: gfxMissingFontRecorder > , pub mVisibleArea : root :: nsRect , pub mLastResizeEventVisibleArea : root :: nsRect , pub mPageSize : root :: nsSize , pub mPageScale : f32 , pub mPPScale : f32 , pub mDefaultColor : root :: nscolor , pub mBackgroundColor : root :: nscolor , pub mLinkColor : root :: nscolor , pub mActiveLinkColor : root :: nscolor , pub mVisitedLinkColor : root :: nscolor , pub mFocusBackgroundColor : root :: nscolor , pub mFocusTextColor : root :: nscolor , pub mBodyTextColor : root :: nscolor , pub mViewportScrollbarOverrideElement : * mut root :: mozilla :: dom :: Element , pub mViewportStyleScrollbar : root :: nsPresContext_ScrollbarStyles , pub mFocusRingWidth : u8 , pub mExistThrottledUpdates : bool , pub mImageAnimationMode : u16 , pub mImageAnimationModePref : u16 , pub mLangGroupFontPrefs : root :: nsPresContext_LangGroupFontPrefs , pub mFontGroupCacheDirty : bool , pub mLanguagesUsed : [ u64 ; 4usize ] , pub mBorderWidthTable : [ root :: nscoord ; 3usize ] , pub mInterruptChecksToSkip : u32 , pub mElementsRestyled : u64 , pub mFramesConstructed : u64 , pub mFramesReflowed : u64 , pub mReflowStartTime : root :: mozilla :: TimeStamp , pub mFirstNonBlankPaintTime : root :: mozilla :: TimeStamp , pub mFirstClickTime : root :: mozilla :: TimeStamp , pub mFirstKeyTime : root :: mozilla :: TimeStamp , pub mFirstMouseMoveTime : root :: mozilla :: TimeStamp , pub mFirstScrollTime : root :: mozilla :: TimeStamp , pub mInteractionTimeEnabled : bool , pub mLastStyleUpdateForAllAnimations : root :: mozilla :: TimeStamp , pub mTelemetryScrollLastY : root :: nscoord , pub mTelemetryScrollMaxY : root :: nscoord , pub mTelemetryScrollTotalY : root :: nscoord , pub _bitfield_1 : [ u8 ; 6usize ] , pub __bindgen_padding_0 : [ u16 ; 3usize ] , } pub type nsPresContext_Encoding = root :: mozilla :: Encoding ; pub type nsPresContext_NotNull < T > = root :: mozilla :: NotNull < T > ; pub type nsPresContext_LangGroupFontPrefs = root :: mozilla :: LangGroupFontPrefs ; pub type nsPresContext_ScrollbarStyles = root :: mozilla :: ScrollbarStyles ; pub type nsPresContext_StaticPresData = root :: mozilla :: StaticPresData ; pub type nsPresContext_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsPresContext_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_nsPresContext_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPresContext_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsPresContext_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPresContext_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPresContext_cycleCollection ) ) ) ; } impl Clone for nsPresContext_cycleCollection { fn clone ( & self ) -> Self { * self } } pub const nsPresContext_nsPresContextType_eContext_Galley : root :: nsPresContext_nsPresContextType = 0 ; pub const nsPresContext_nsPresContextType_eContext_PrintPreview : root :: nsPresContext_nsPresContextType = 1 ; pub const nsPresContext_nsPresContextType_eContext_Print : root :: nsPresContext_nsPresContextType = 2 ; pub const nsPresContext_nsPresContextType_eContext_PageLayout : root :: nsPresContext_nsPresContextType = 3 ; pub type nsPresContext_nsPresContextType = :: std :: os :: raw :: c_uint ; pub const nsPresContext_InteractionType_eClickInteraction : root :: nsPresContext_InteractionType = 0 ; pub const nsPresContext_InteractionType_eKeyInteraction : root :: nsPresContext_InteractionType = 1 ; pub const nsPresContext_InteractionType_eMouseMoveInteraction : root :: nsPresContext_InteractionType = 2 ; pub const nsPresContext_InteractionType_eScrollInteraction : root :: nsPresContext_InteractionType = 3 ; pub type nsPresContext_InteractionType = u32 ; - /// A class that can be used to temporarily disable reflow interruption. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsPresContext_InterruptPreventer { pub mCtx : * mut root :: nsPresContext , pub mInterruptsEnabled : bool , pub mHasPendingInterrupt : bool , } # [ test ] fn bindgen_test_layout_nsPresContext_InterruptPreventer ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPresContext_InterruptPreventer > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsPresContext_InterruptPreventer ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPresContext_InterruptPreventer > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPresContext_InterruptPreventer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext_InterruptPreventer ) ) . mCtx as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext_InterruptPreventer ) , "::" , stringify ! ( mCtx ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext_InterruptPreventer ) ) . mInterruptsEnabled as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext_InterruptPreventer ) , "::" , stringify ! ( mInterruptsEnabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext_InterruptPreventer ) ) . mHasPendingInterrupt as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext_InterruptPreventer ) , "::" , stringify ! ( mHasPendingInterrupt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsPresContext_TransactionInvalidations { pub mTransactionId : u64 , pub mInvalidations : root :: nsTArray < root :: nsRect > , } # [ test ] fn bindgen_test_layout_nsPresContext_TransactionInvalidations ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPresContext_TransactionInvalidations > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsPresContext_TransactionInvalidations ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPresContext_TransactionInvalidations > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPresContext_TransactionInvalidations ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext_TransactionInvalidations ) ) . mTransactionId as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext_TransactionInvalidations ) , "::" , stringify ! ( mTransactionId ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext_TransactionInvalidations ) ) . mInvalidations as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext_TransactionInvalidations ) , "::" , stringify ! ( mInvalidations ) ) ) ; } extern "C" { - # [ link_name = "\u{1}_ZN13nsPresContext21_cycleCollectorGlobalE" ] - pub static mut nsPresContext__cycleCollectorGlobal : root :: nsPresContext_cycleCollection ; -} # [ test ] fn bindgen_test_layout_nsPresContext ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPresContext > ( ) , 1376usize , concat ! ( "Size of: " , stringify ! ( nsPresContext ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPresContext > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsPresContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mRefCnt as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mType as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mShell as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mShell ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mDocument as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mDocument ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mDeviceContext as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mDeviceContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mEventManager as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mEventManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mRefreshDriver as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mRefreshDriver ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mEffectCompositor as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mEffectCompositor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mTransitionManager as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mTransitionManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mAnimationManager as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mAnimationManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mRestyleManager as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mRestyleManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mCounterStyleManager as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mCounterStyleManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mMedium as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mMedium ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mMediaEmulated as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mMediaEmulated ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFontFeatureValuesLookup as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFontFeatureValuesLookup ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLinkHandler as * const _ as usize } , 136usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLinkHandler ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLanguage as * const _ as usize } , 144usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLanguage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mInflationDisabledForShrinkWrap as * const _ as usize } , 152usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mInflationDisabledForShrinkWrap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mContainer as * const _ as usize } , 160usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mContainer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mBaseMinFontSize as * const _ as usize } , 168usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mBaseMinFontSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mSystemFontScale as * const _ as usize } , 172usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mSystemFontScale ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mTextZoom as * const _ as usize } , 176usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mTextZoom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mEffectiveTextZoom as * const _ as usize } , 180usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mEffectiveTextZoom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFullZoom as * const _ as usize } , 184usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFullZoom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mOverrideDPPX as * const _ as usize } , 188usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mOverrideDPPX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLastFontInflationScreenSize as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLastFontInflationScreenSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mCurAppUnitsPerDevPixel as * const _ as usize } , 208usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mCurAppUnitsPerDevPixel ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mAutoQualityMinFontSizePixelsPref as * const _ as usize } , 212usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mAutoQualityMinFontSizePixelsPref ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mTheme as * const _ as usize } , 216usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mTheme ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLangService as * const _ as usize } , 224usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLangService ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mPrintSettings as * const _ as usize } , 232usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mPrintSettings ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mPrefChangedTimer as * const _ as usize } , 240usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mPrefChangedTimer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mBidiEngine as * const _ as usize } , 248usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mBidiEngine ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mTransactions as * const _ as usize } , 256usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mTransactions ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mTextPerf as * const _ as usize } , 336usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mTextPerf ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mMissingFonts as * const _ as usize } , 344usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mMissingFonts ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mVisibleArea as * const _ as usize } , 352usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mVisibleArea ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLastResizeEventVisibleArea as * const _ as usize } , 368usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLastResizeEventVisibleArea ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mPageSize as * const _ as usize } , 384usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mPageSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mPageScale as * const _ as usize } , 392usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mPageScale ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mPPScale as * const _ as usize } , 396usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mPPScale ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mDefaultColor as * const _ as usize } , 400usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mDefaultColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mBackgroundColor as * const _ as usize } , 404usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mBackgroundColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLinkColor as * const _ as usize } , 408usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLinkColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mActiveLinkColor as * const _ as usize } , 412usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mActiveLinkColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mVisitedLinkColor as * const _ as usize } , 416usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mVisitedLinkColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFocusBackgroundColor as * const _ as usize } , 420usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFocusBackgroundColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFocusTextColor as * const _ as usize } , 424usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFocusTextColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mBodyTextColor as * const _ as usize } , 428usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mBodyTextColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mViewportScrollbarOverrideElement as * const _ as usize } , 432usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mViewportScrollbarOverrideElement ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mViewportStyleScrollbar as * const _ as usize } , 440usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mViewportStyleScrollbar ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFocusRingWidth as * const _ as usize } , 504usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFocusRingWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mExistThrottledUpdates as * const _ as usize } , 505usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mExistThrottledUpdates ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mImageAnimationMode as * const _ as usize } , 506usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mImageAnimationMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mImageAnimationModePref as * const _ as usize } , 508usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mImageAnimationModePref ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLangGroupFontPrefs as * const _ as usize } , 512usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLangGroupFontPrefs ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFontGroupCacheDirty as * const _ as usize } , 1208usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFontGroupCacheDirty ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLanguagesUsed as * const _ as usize } , 1216usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLanguagesUsed ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mBorderWidthTable as * const _ as usize } , 1248usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mBorderWidthTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mInterruptChecksToSkip as * const _ as usize } , 1260usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mInterruptChecksToSkip ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mElementsRestyled as * const _ as usize } , 1264usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mElementsRestyled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFramesConstructed as * const _ as usize } , 1272usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFramesConstructed ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFramesReflowed as * const _ as usize } , 1280usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFramesReflowed ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mReflowStartTime as * const _ as usize } , 1288usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mReflowStartTime ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFirstNonBlankPaintTime as * const _ as usize } , 1296usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFirstNonBlankPaintTime ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFirstClickTime as * const _ as usize } , 1304usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFirstClickTime ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFirstKeyTime as * const _ as usize } , 1312usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFirstKeyTime ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFirstMouseMoveTime as * const _ as usize } , 1320usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFirstMouseMoveTime ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mFirstScrollTime as * const _ as usize } , 1328usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mFirstScrollTime ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mInteractionTimeEnabled as * const _ as usize } , 1336usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mInteractionTimeEnabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mLastStyleUpdateForAllAnimations as * const _ as usize } , 1344usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mLastStyleUpdateForAllAnimations ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mTelemetryScrollLastY as * const _ as usize } , 1352usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mTelemetryScrollLastY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mTelemetryScrollMaxY as * const _ as usize } , 1356usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mTelemetryScrollMaxY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPresContext ) ) . mTelemetryScrollTotalY as * const _ as usize } , 1360usize , concat ! ( "Alignment of field: " , stringify ! ( nsPresContext ) , "::" , stringify ! ( mTelemetryScrollTotalY ) ) ) ; } impl nsPresContext { # [ inline ] pub fn mHasPendingInterrupt ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1 as u64 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mHasPendingInterrupt ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x1 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPendingInterruptFromTest ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2 as u64 ; let val = ( unit_field_val & mask ) >> 1usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPendingInterruptFromTest ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x2 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 1usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mInterruptsEnabled ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4 as u64 ; let val = ( unit_field_val & mask ) >> 2usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mInterruptsEnabled ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x4 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 2usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mUseDocumentFonts ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8 as u64 ; let val = ( unit_field_val & mask ) >> 3usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mUseDocumentFonts ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x8 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 3usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mUseDocumentColors ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x10 as u64 ; let val = ( unit_field_val & mask ) >> 4usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mUseDocumentColors ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x10 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 4usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mUnderlineLinks ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x20 as u64 ; let val = ( unit_field_val & mask ) >> 5usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mUnderlineLinks ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x20 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 5usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mSendAfterPaintToContent ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x40 as u64 ; let val = ( unit_field_val & mask ) >> 6usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mSendAfterPaintToContent ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x40 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 6usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mUseFocusColors ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x80 as u64 ; let val = ( unit_field_val & mask ) >> 7usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mUseFocusColors ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x80 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 7usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mFocusRingOnAnything ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x100 as u64 ; let val = ( unit_field_val & mask ) >> 8usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mFocusRingOnAnything ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x100 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 8usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mFocusRingStyle ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x200 as u64 ; let val = ( unit_field_val & mask ) >> 9usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mFocusRingStyle ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x200 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 9usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mDrawImageBackground ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x400 as u64 ; let val = ( unit_field_val & mask ) >> 10usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mDrawImageBackground ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x400 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 10usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mDrawColorBackground ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x800 as u64 ; let val = ( unit_field_val & mask ) >> 11usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mDrawColorBackground ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x800 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 11usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mNeverAnimate ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1000 as u64 ; let val = ( unit_field_val & mask ) >> 12usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mNeverAnimate ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x1000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 12usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsRenderingOnlySelection ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2000 as u64 ; let val = ( unit_field_val & mask ) >> 13usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsRenderingOnlySelection ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x2000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 13usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPaginated ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4000 as u64 ; let val = ( unit_field_val & mask ) >> 14usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPaginated ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x4000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 14usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mCanPaginatedScroll ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8000 as u64 ; let val = ( unit_field_val & mask ) >> 15usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mCanPaginatedScroll ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x8000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 15usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mDoScaledTwips ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x10000 as u64 ; let val = ( unit_field_val & mask ) >> 16usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mDoScaledTwips ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x10000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 16usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsRootPaginatedDocument ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x20000 as u64 ; let val = ( unit_field_val & mask ) >> 17usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsRootPaginatedDocument ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x20000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 17usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPrefBidiDirection ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x40000 as u64 ; let val = ( unit_field_val & mask ) >> 18usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPrefBidiDirection ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x40000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 18usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPrefScrollbarSide ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x180000 as u64 ; let val = ( unit_field_val & mask ) >> 19usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPrefScrollbarSide ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x180000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 19usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPendingSysColorChanged ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x200000 as u64 ; let val = ( unit_field_val & mask ) >> 21usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPendingSysColorChanged ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x200000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 21usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPendingThemeChanged ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x400000 as u64 ; let val = ( unit_field_val & mask ) >> 22usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPendingThemeChanged ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x400000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 22usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPendingUIResolutionChanged ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x800000 as u64 ; let val = ( unit_field_val & mask ) >> 23usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPendingUIResolutionChanged ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x800000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 23usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPendingMediaFeatureValuesChanged ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1000000 as u64 ; let val = ( unit_field_val & mask ) >> 24usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPendingMediaFeatureValuesChanged ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x1000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 24usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPrefChangePendingNeedsReflow ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2000000 as u64 ; let val = ( unit_field_val & mask ) >> 25usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPrefChangePendingNeedsReflow ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x2000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 25usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsEmulatingMedia ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4000000 as u64 ; let val = ( unit_field_val & mask ) >> 26usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsEmulatingMedia ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x4000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 26usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsGlyph ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8000000 as u64 ; let val = ( unit_field_val & mask ) >> 27usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsGlyph ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x8000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 27usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mUsesRootEMUnits ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x10000000 as u64 ; let val = ( unit_field_val & mask ) >> 28usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mUsesRootEMUnits ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x10000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 28usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mUsesExChUnits ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x20000000 as u64 ; let val = ( unit_field_val & mask ) >> 29usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mUsesExChUnits ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x20000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 29usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPendingViewportChange ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x40000000 as u64 ; let val = ( unit_field_val & mask ) >> 30usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPendingViewportChange ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x40000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 30usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mCounterStylesDirty ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x80000000 as u64 ; let val = ( unit_field_val & mask ) >> 31usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mCounterStylesDirty ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x80000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 31usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPostedFlushCounterStyles ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x100000000 as u64 ; let val = ( unit_field_val & mask ) >> 32usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPostedFlushCounterStyles ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x100000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 32usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mFontFeatureValuesDirty ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x200000000 as u64 ; let val = ( unit_field_val & mask ) >> 33usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mFontFeatureValuesDirty ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x200000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 33usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPostedFlushFontFeatureValues ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x400000000 as u64 ; let val = ( unit_field_val & mask ) >> 34usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPostedFlushFontFeatureValues ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x400000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 34usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mSuppressResizeReflow ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x800000000 as u64 ; let val = ( unit_field_val & mask ) >> 35usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mSuppressResizeReflow ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x800000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 35usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsVisual ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x1000000000 as u64 ; let val = ( unit_field_val & mask ) >> 36usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsVisual ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x1000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 36usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mFireAfterPaintEvents ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x2000000000 as u64 ; let val = ( unit_field_val & mask ) >> 37usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mFireAfterPaintEvents ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x2000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 37usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsChrome ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x4000000000 as u64 ; let val = ( unit_field_val & mask ) >> 38usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsChrome ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x4000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 38usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mIsChromeOriginImage ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x8000000000 as u64 ; let val = ( unit_field_val & mask ) >> 39usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mIsChromeOriginImage ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x8000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 39usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPaintFlashing ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x10000000000 as u64 ; let val = ( unit_field_val & mask ) >> 40usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPaintFlashing ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x10000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 40usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mPaintFlashingInitialized ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x20000000000 as u64 ; let val = ( unit_field_val & mask ) >> 41usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mPaintFlashingInitialized ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x20000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 41usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasWarnedAboutPositionedTableParts ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x40000000000 as u64 ; let val = ( unit_field_val & mask ) >> 42usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mHasWarnedAboutPositionedTableParts ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x40000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 42usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHasWarnedAboutTooLargeDashedOrDottedRadius ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x80000000000 as u64 ; let val = ( unit_field_val & mask ) >> 43usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mHasWarnedAboutTooLargeDashedOrDottedRadius ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x80000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 43usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mQuirkSheetAdded ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x100000000000 as u64 ; let val = ( unit_field_val & mask ) >> 44usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mQuirkSheetAdded ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x100000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 44usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mNeedsPrefUpdate ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x200000000000 as u64 ; let val = ( unit_field_val & mask ) >> 45usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mNeedsPrefUpdate ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x200000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 45usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn mHadNonBlankPaint ( & self ) -> :: std :: os :: raw :: c_uint { let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; let mask = 0x400000000000 as u64 ; let val = ( unit_field_val & mask ) >> 46usize ; unsafe { :: std :: mem :: transmute ( val as u32 ) } } # [ inline ] pub fn set_mHadNonBlankPaint ( & mut self , val : :: std :: os :: raw :: c_uint ) { let mask = 0x400000000000 as u64 ; let val = val as u32 as u64 ; let mut unit_field_val : u64 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u64 as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 46usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u64 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mHasPendingInterrupt : :: std :: os :: raw :: c_uint , mPendingInterruptFromTest : :: std :: os :: raw :: c_uint , mInterruptsEnabled : :: std :: os :: raw :: c_uint , mUseDocumentFonts : :: std :: os :: raw :: c_uint , mUseDocumentColors : :: std :: os :: raw :: c_uint , mUnderlineLinks : :: std :: os :: raw :: c_uint , mSendAfterPaintToContent : :: std :: os :: raw :: c_uint , mUseFocusColors : :: std :: os :: raw :: c_uint , mFocusRingOnAnything : :: std :: os :: raw :: c_uint , mFocusRingStyle : :: std :: os :: raw :: c_uint , mDrawImageBackground : :: std :: os :: raw :: c_uint , mDrawColorBackground : :: std :: os :: raw :: c_uint , mNeverAnimate : :: std :: os :: raw :: c_uint , mIsRenderingOnlySelection : :: std :: os :: raw :: c_uint , mPaginated : :: std :: os :: raw :: c_uint , mCanPaginatedScroll : :: std :: os :: raw :: c_uint , mDoScaledTwips : :: std :: os :: raw :: c_uint , mIsRootPaginatedDocument : :: std :: os :: raw :: c_uint , mPrefBidiDirection : :: std :: os :: raw :: c_uint , mPrefScrollbarSide : :: std :: os :: raw :: c_uint , mPendingSysColorChanged : :: std :: os :: raw :: c_uint , mPendingThemeChanged : :: std :: os :: raw :: c_uint , mPendingUIResolutionChanged : :: std :: os :: raw :: c_uint , mPendingMediaFeatureValuesChanged : :: std :: os :: raw :: c_uint , mPrefChangePendingNeedsReflow : :: std :: os :: raw :: c_uint , mIsEmulatingMedia : :: std :: os :: raw :: c_uint , mIsGlyph : :: std :: os :: raw :: c_uint , mUsesRootEMUnits : :: std :: os :: raw :: c_uint , mUsesExChUnits : :: std :: os :: raw :: c_uint , mPendingViewportChange : :: std :: os :: raw :: c_uint , mCounterStylesDirty : :: std :: os :: raw :: c_uint , mPostedFlushCounterStyles : :: std :: os :: raw :: c_uint , mFontFeatureValuesDirty : :: std :: os :: raw :: c_uint , mPostedFlushFontFeatureValues : :: std :: os :: raw :: c_uint , mSuppressResizeReflow : :: std :: os :: raw :: c_uint , mIsVisual : :: std :: os :: raw :: c_uint , mFireAfterPaintEvents : :: std :: os :: raw :: c_uint , mIsChrome : :: std :: os :: raw :: c_uint , mIsChromeOriginImage : :: std :: os :: raw :: c_uint , mPaintFlashing : :: std :: os :: raw :: c_uint , mPaintFlashingInitialized : :: std :: os :: raw :: c_uint , mHasWarnedAboutPositionedTableParts : :: std :: os :: raw :: c_uint , mHasWarnedAboutTooLargeDashedOrDottedRadius : :: std :: os :: raw :: c_uint , mQuirkSheetAdded : :: std :: os :: raw :: c_uint , mNeedsPrefUpdate : :: std :: os :: raw :: c_uint , mHadNonBlankPaint : :: std :: os :: raw :: c_uint ) -> u64 { ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 0 | ( ( mHasPendingInterrupt as u32 as u64 ) << 0usize ) & ( 0x1 as u64 ) ) | ( ( mPendingInterruptFromTest as u32 as u64 ) << 1usize ) & ( 0x2 as u64 ) ) | ( ( mInterruptsEnabled as u32 as u64 ) << 2usize ) & ( 0x4 as u64 ) ) | ( ( mUseDocumentFonts as u32 as u64 ) << 3usize ) & ( 0x8 as u64 ) ) | ( ( mUseDocumentColors as u32 as u64 ) << 4usize ) & ( 0x10 as u64 ) ) | ( ( mUnderlineLinks as u32 as u64 ) << 5usize ) & ( 0x20 as u64 ) ) | ( ( mSendAfterPaintToContent as u32 as u64 ) << 6usize ) & ( 0x40 as u64 ) ) | ( ( mUseFocusColors as u32 as u64 ) << 7usize ) & ( 0x80 as u64 ) ) | ( ( mFocusRingOnAnything as u32 as u64 ) << 8usize ) & ( 0x100 as u64 ) ) | ( ( mFocusRingStyle as u32 as u64 ) << 9usize ) & ( 0x200 as u64 ) ) | ( ( mDrawImageBackground as u32 as u64 ) << 10usize ) & ( 0x400 as u64 ) ) | ( ( mDrawColorBackground as u32 as u64 ) << 11usize ) & ( 0x800 as u64 ) ) | ( ( mNeverAnimate as u32 as u64 ) << 12usize ) & ( 0x1000 as u64 ) ) | ( ( mIsRenderingOnlySelection as u32 as u64 ) << 13usize ) & ( 0x2000 as u64 ) ) | ( ( mPaginated as u32 as u64 ) << 14usize ) & ( 0x4000 as u64 ) ) | ( ( mCanPaginatedScroll as u32 as u64 ) << 15usize ) & ( 0x8000 as u64 ) ) | ( ( mDoScaledTwips as u32 as u64 ) << 16usize ) & ( 0x10000 as u64 ) ) | ( ( mIsRootPaginatedDocument as u32 as u64 ) << 17usize ) & ( 0x20000 as u64 ) ) | ( ( mPrefBidiDirection as u32 as u64 ) << 18usize ) & ( 0x40000 as u64 ) ) | ( ( mPrefScrollbarSide as u32 as u64 ) << 19usize ) & ( 0x180000 as u64 ) ) | ( ( mPendingSysColorChanged as u32 as u64 ) << 21usize ) & ( 0x200000 as u64 ) ) | ( ( mPendingThemeChanged as u32 as u64 ) << 22usize ) & ( 0x400000 as u64 ) ) | ( ( mPendingUIResolutionChanged as u32 as u64 ) << 23usize ) & ( 0x800000 as u64 ) ) | ( ( mPendingMediaFeatureValuesChanged as u32 as u64 ) << 24usize ) & ( 0x1000000 as u64 ) ) | ( ( mPrefChangePendingNeedsReflow as u32 as u64 ) << 25usize ) & ( 0x2000000 as u64 ) ) | ( ( mIsEmulatingMedia as u32 as u64 ) << 26usize ) & ( 0x4000000 as u64 ) ) | ( ( mIsGlyph as u32 as u64 ) << 27usize ) & ( 0x8000000 as u64 ) ) | ( ( mUsesRootEMUnits as u32 as u64 ) << 28usize ) & ( 0x10000000 as u64 ) ) | ( ( mUsesExChUnits as u32 as u64 ) << 29usize ) & ( 0x20000000 as u64 ) ) | ( ( mPendingViewportChange as u32 as u64 ) << 30usize ) & ( 0x40000000 as u64 ) ) | ( ( mCounterStylesDirty as u32 as u64 ) << 31usize ) & ( 0x80000000 as u64 ) ) | ( ( mPostedFlushCounterStyles as u32 as u64 ) << 32usize ) & ( 0x100000000 as u64 ) ) | ( ( mFontFeatureValuesDirty as u32 as u64 ) << 33usize ) & ( 0x200000000 as u64 ) ) | ( ( mPostedFlushFontFeatureValues as u32 as u64 ) << 34usize ) & ( 0x400000000 as u64 ) ) | ( ( mSuppressResizeReflow as u32 as u64 ) << 35usize ) & ( 0x800000000 as u64 ) ) | ( ( mIsVisual as u32 as u64 ) << 36usize ) & ( 0x1000000000 as u64 ) ) | ( ( mFireAfterPaintEvents as u32 as u64 ) << 37usize ) & ( 0x2000000000 as u64 ) ) | ( ( mIsChrome as u32 as u64 ) << 38usize ) & ( 0x4000000000 as u64 ) ) | ( ( mIsChromeOriginImage as u32 as u64 ) << 39usize ) & ( 0x8000000000 as u64 ) ) | ( ( mPaintFlashing as u32 as u64 ) << 40usize ) & ( 0x10000000000 as u64 ) ) | ( ( mPaintFlashingInitialized as u32 as u64 ) << 41usize ) & ( 0x20000000000 as u64 ) ) | ( ( mHasWarnedAboutPositionedTableParts as u32 as u64 ) << 42usize ) & ( 0x40000000000 as u64 ) ) | ( ( mHasWarnedAboutTooLargeDashedOrDottedRadius as u32 as u64 ) << 43usize ) & ( 0x80000000000 as u64 ) ) | ( ( mQuirkSheetAdded as u32 as u64 ) << 44usize ) & ( 0x100000000000 as u64 ) ) | ( ( mNeedsPrefUpdate as u32 as u64 ) << 45usize ) & ( 0x200000000000 as u64 ) ) | ( ( mHadNonBlankPaint as u32 as u64 ) << 46usize ) & ( 0x400000000000 as u64 ) ) } } # [ repr ( i16 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsCSSKeyword { eCSSKeyword_UNKNOWN = -1 , eCSSKeyword__moz_activehyperlinktext = 0 , eCSSKeyword__moz_all = 1 , eCSSKeyword__moz_alt_content = 2 , eCSSKeyword__moz_available = 3 , eCSSKeyword__moz_box = 4 , eCSSKeyword__moz_button = 5 , eCSSKeyword__moz_buttondefault = 6 , eCSSKeyword__moz_buttonhoverface = 7 , eCSSKeyword__moz_buttonhovertext = 8 , eCSSKeyword__moz_cellhighlight = 9 , eCSSKeyword__moz_cellhighlighttext = 10 , eCSSKeyword__moz_center = 11 , eCSSKeyword__moz_combobox = 12 , eCSSKeyword__moz_comboboxtext = 13 , eCSSKeyword__moz_context_properties = 14 , eCSSKeyword__moz_block_height = 15 , eCSSKeyword__moz_deck = 16 , eCSSKeyword__moz_default_background_color = 17 , eCSSKeyword__moz_default_color = 18 , eCSSKeyword__moz_desktop = 19 , eCSSKeyword__moz_dialog = 20 , eCSSKeyword__moz_dialogtext = 21 , eCSSKeyword__moz_document = 22 , eCSSKeyword__moz_dragtargetzone = 23 , eCSSKeyword__moz_element = 24 , eCSSKeyword__moz_eventreerow = 25 , eCSSKeyword__moz_field = 26 , eCSSKeyword__moz_fieldtext = 27 , eCSSKeyword__moz_fit_content = 28 , eCSSKeyword__moz_fixed = 29 , eCSSKeyword__moz_grabbing = 30 , eCSSKeyword__moz_grab = 31 , eCSSKeyword__moz_grid_group = 32 , eCSSKeyword__moz_grid_line = 33 , eCSSKeyword__moz_grid = 34 , eCSSKeyword__moz_groupbox = 35 , eCSSKeyword__moz_gtk_info_bar = 36 , eCSSKeyword__moz_gtk_info_bar_text = 37 , eCSSKeyword__moz_hidden_unscrollable = 38 , eCSSKeyword__moz_hyperlinktext = 39 , eCSSKeyword__moz_html_cellhighlight = 40 , eCSSKeyword__moz_html_cellhighlighttext = 41 , eCSSKeyword__moz_image_rect = 42 , eCSSKeyword__moz_info = 43 , eCSSKeyword__moz_inline_box = 44 , eCSSKeyword__moz_inline_grid = 45 , eCSSKeyword__moz_inline_stack = 46 , eCSSKeyword__moz_left = 47 , eCSSKeyword__moz_list = 48 , eCSSKeyword__moz_mac_buttonactivetext = 49 , eCSSKeyword__moz_mac_chrome_active = 50 , eCSSKeyword__moz_mac_chrome_inactive = 51 , eCSSKeyword__moz_mac_defaultbuttontext = 52 , eCSSKeyword__moz_mac_focusring = 53 , eCSSKeyword__moz_mac_fullscreen_button = 54 , eCSSKeyword__moz_mac_menuselect = 55 , eCSSKeyword__moz_mac_menushadow = 56 , eCSSKeyword__moz_mac_menutextdisable = 57 , eCSSKeyword__moz_mac_menutextselect = 58 , eCSSKeyword__moz_mac_disabledtoolbartext = 59 , eCSSKeyword__moz_mac_secondaryhighlight = 60 , eCSSKeyword__moz_mac_menuitem = 61 , eCSSKeyword__moz_mac_active_menuitem = 62 , eCSSKeyword__moz_mac_menupopup = 63 , eCSSKeyword__moz_mac_tooltip = 64 , eCSSKeyword__moz_max_content = 65 , eCSSKeyword__moz_menuhover = 66 , eCSSKeyword__moz_menuhovertext = 67 , eCSSKeyword__moz_menubartext = 68 , eCSSKeyword__moz_menubarhovertext = 69 , eCSSKeyword__moz_middle_with_baseline = 70 , eCSSKeyword__moz_min_content = 71 , eCSSKeyword__moz_nativehyperlinktext = 72 , eCSSKeyword__moz_none = 73 , eCSSKeyword__moz_oddtreerow = 74 , eCSSKeyword__moz_popup = 75 , eCSSKeyword__moz_pre_space = 76 , eCSSKeyword__moz_pull_down_menu = 77 , eCSSKeyword__moz_right = 78 , eCSSKeyword__moz_scrollbars_horizontal = 79 , eCSSKeyword__moz_scrollbars_none = 80 , eCSSKeyword__moz_scrollbars_vertical = 81 , eCSSKeyword__moz_stack = 82 , eCSSKeyword__moz_text = 83 , eCSSKeyword__moz_use_system_font = 84 , eCSSKeyword__moz_visitedhyperlinktext = 85 , eCSSKeyword__moz_window = 86 , eCSSKeyword__moz_workspace = 87 , eCSSKeyword__moz_zoom_in = 88 , eCSSKeyword__moz_zoom_out = 89 , eCSSKeyword__webkit_box = 90 , eCSSKeyword__webkit_flex = 91 , eCSSKeyword__webkit_inline_box = 92 , eCSSKeyword__webkit_inline_flex = 93 , eCSSKeyword_absolute = 94 , eCSSKeyword_active = 95 , eCSSKeyword_activeborder = 96 , eCSSKeyword_activecaption = 97 , eCSSKeyword_add = 98 , eCSSKeyword_additive = 99 , eCSSKeyword_alias = 100 , eCSSKeyword_all = 101 , eCSSKeyword_all_petite_caps = 102 , eCSSKeyword_all_scroll = 103 , eCSSKeyword_all_small_caps = 104 , eCSSKeyword_alpha = 105 , eCSSKeyword_alternate = 106 , eCSSKeyword_alternate_reverse = 107 , eCSSKeyword_always = 108 , eCSSKeyword_annotation = 109 , eCSSKeyword_appworkspace = 110 , eCSSKeyword_auto = 111 , eCSSKeyword_auto_fill = 112 , eCSSKeyword_auto_fit = 113 , eCSSKeyword_auto_flow = 114 , eCSSKeyword_avoid = 115 , eCSSKeyword_background = 116 , eCSSKeyword_backwards = 117 , eCSSKeyword_balance = 118 , eCSSKeyword_baseline = 119 , eCSSKeyword_bidi_override = 120 , eCSSKeyword_blink = 121 , eCSSKeyword_block = 122 , eCSSKeyword_block_axis = 123 , eCSSKeyword_blur = 124 , eCSSKeyword_bold = 125 , eCSSKeyword_bold_fraktur = 126 , eCSSKeyword_bold_italic = 127 , eCSSKeyword_bold_sans_serif = 128 , eCSSKeyword_bold_script = 129 , eCSSKeyword_bolder = 130 , eCSSKeyword_border_box = 131 , eCSSKeyword_both = 132 , eCSSKeyword_bottom = 133 , eCSSKeyword_bottom_outside = 134 , eCSSKeyword_break_all = 135 , eCSSKeyword_break_word = 136 , eCSSKeyword_brightness = 137 , eCSSKeyword_browser = 138 , eCSSKeyword_bullets = 139 , eCSSKeyword_button = 140 , eCSSKeyword_buttonface = 141 , eCSSKeyword_buttonhighlight = 142 , eCSSKeyword_buttonshadow = 143 , eCSSKeyword_buttontext = 144 , eCSSKeyword_capitalize = 145 , eCSSKeyword_caption = 146 , eCSSKeyword_captiontext = 147 , eCSSKeyword_cell = 148 , eCSSKeyword_center = 149 , eCSSKeyword_ch = 150 , eCSSKeyword_character_variant = 151 , eCSSKeyword_circle = 152 , eCSSKeyword_cjk_decimal = 153 , eCSSKeyword_clip = 154 , eCSSKeyword_clone = 155 , eCSSKeyword_close_quote = 156 , eCSSKeyword_closest_corner = 157 , eCSSKeyword_closest_side = 158 , eCSSKeyword_cm = 159 , eCSSKeyword_col_resize = 160 , eCSSKeyword_collapse = 161 , eCSSKeyword_color = 162 , eCSSKeyword_color_burn = 163 , eCSSKeyword_color_dodge = 164 , eCSSKeyword_common_ligatures = 165 , eCSSKeyword_column = 166 , eCSSKeyword_column_reverse = 167 , eCSSKeyword_condensed = 168 , eCSSKeyword_contain = 169 , eCSSKeyword_content_box = 170 , eCSSKeyword_contents = 171 , eCSSKeyword_context_fill = 172 , eCSSKeyword_context_fill_opacity = 173 , eCSSKeyword_context_menu = 174 , eCSSKeyword_context_stroke = 175 , eCSSKeyword_context_stroke_opacity = 176 , eCSSKeyword_context_value = 177 , eCSSKeyword_continuous = 178 , eCSSKeyword_contrast = 179 , eCSSKeyword_copy = 180 , eCSSKeyword_contextual = 181 , eCSSKeyword_cover = 182 , eCSSKeyword_crop = 183 , eCSSKeyword_cross = 184 , eCSSKeyword_crosshair = 185 , eCSSKeyword_currentcolor = 186 , eCSSKeyword_cursive = 187 , eCSSKeyword_cyclic = 188 , eCSSKeyword_darken = 189 , eCSSKeyword_dashed = 190 , eCSSKeyword_dense = 191 , eCSSKeyword_decimal = 192 , eCSSKeyword_default = 193 , eCSSKeyword_deg = 194 , eCSSKeyword_diagonal_fractions = 195 , eCSSKeyword_dialog = 196 , eCSSKeyword_difference = 197 , eCSSKeyword_digits = 198 , eCSSKeyword_disabled = 199 , eCSSKeyword_disc = 200 , eCSSKeyword_discretionary_ligatures = 201 , eCSSKeyword_distribute = 202 , eCSSKeyword_dot = 203 , eCSSKeyword_dotted = 204 , eCSSKeyword_double = 205 , eCSSKeyword_double_circle = 206 , eCSSKeyword_double_struck = 207 , eCSSKeyword_drag = 208 , eCSSKeyword_drop_shadow = 209 , eCSSKeyword_e_resize = 210 , eCSSKeyword_ease = 211 , eCSSKeyword_ease_in = 212 , eCSSKeyword_ease_in_out = 213 , eCSSKeyword_ease_out = 214 , eCSSKeyword_economy = 215 , eCSSKeyword_element = 216 , eCSSKeyword_elements = 217 , eCSSKeyword_ellipse = 218 , eCSSKeyword_ellipsis = 219 , eCSSKeyword_em = 220 , eCSSKeyword_embed = 221 , eCSSKeyword_enabled = 222 , eCSSKeyword_end = 223 , eCSSKeyword_ex = 224 , eCSSKeyword_exact = 225 , eCSSKeyword_exclude = 226 , eCSSKeyword_exclusion = 227 , eCSSKeyword_expanded = 228 , eCSSKeyword_extends = 229 , eCSSKeyword_extra_condensed = 230 , eCSSKeyword_extra_expanded = 231 , eCSSKeyword_ew_resize = 232 , eCSSKeyword_fallback = 233 , eCSSKeyword_fantasy = 234 , eCSSKeyword_farthest_side = 235 , eCSSKeyword_farthest_corner = 236 , eCSSKeyword_fill = 237 , eCSSKeyword_filled = 238 , eCSSKeyword_fill_box = 239 , eCSSKeyword_first = 240 , eCSSKeyword_fit_content = 241 , eCSSKeyword_fixed = 242 , eCSSKeyword_flat = 243 , eCSSKeyword_flex = 244 , eCSSKeyword_flex_end = 245 , eCSSKeyword_flex_start = 246 , eCSSKeyword_flip = 247 , eCSSKeyword_flow_root = 248 , eCSSKeyword_forwards = 249 , eCSSKeyword_fraktur = 250 , eCSSKeyword_frames = 251 , eCSSKeyword_from_image = 252 , eCSSKeyword_full_width = 253 , eCSSKeyword_fullscreen = 254 , eCSSKeyword_grab = 255 , eCSSKeyword_grabbing = 256 , eCSSKeyword_grad = 257 , eCSSKeyword_grayscale = 258 , eCSSKeyword_graytext = 259 , eCSSKeyword_grid = 260 , eCSSKeyword_groove = 261 , eCSSKeyword_hard_light = 262 , eCSSKeyword_help = 263 , eCSSKeyword_hidden = 264 , eCSSKeyword_hide = 265 , eCSSKeyword_highlight = 266 , eCSSKeyword_highlighttext = 267 , eCSSKeyword_historical_forms = 268 , eCSSKeyword_historical_ligatures = 269 , eCSSKeyword_horizontal = 270 , eCSSKeyword_horizontal_tb = 271 , eCSSKeyword_hue = 272 , eCSSKeyword_hue_rotate = 273 , eCSSKeyword_hz = 274 , eCSSKeyword_icon = 275 , eCSSKeyword_ignore = 276 , eCSSKeyword_ignore_horizontal = 277 , eCSSKeyword_ignore_vertical = 278 , eCSSKeyword_in = 279 , eCSSKeyword_interlace = 280 , eCSSKeyword_inactive = 281 , eCSSKeyword_inactiveborder = 282 , eCSSKeyword_inactivecaption = 283 , eCSSKeyword_inactivecaptiontext = 284 , eCSSKeyword_infinite = 285 , eCSSKeyword_infobackground = 286 , eCSSKeyword_infotext = 287 , eCSSKeyword_inherit = 288 , eCSSKeyword_initial = 289 , eCSSKeyword_inline = 290 , eCSSKeyword_inline_axis = 291 , eCSSKeyword_inline_block = 292 , eCSSKeyword_inline_end = 293 , eCSSKeyword_inline_flex = 294 , eCSSKeyword_inline_grid = 295 , eCSSKeyword_inline_start = 296 , eCSSKeyword_inline_table = 297 , eCSSKeyword_inset = 298 , eCSSKeyword_inside = 299 , eCSSKeyword_inter_character = 300 , eCSSKeyword_inter_word = 301 , eCSSKeyword_interpolatematrix = 302 , eCSSKeyword_accumulatematrix = 303 , eCSSKeyword_intersect = 304 , eCSSKeyword_isolate = 305 , eCSSKeyword_isolate_override = 306 , eCSSKeyword_invert = 307 , eCSSKeyword_italic = 308 , eCSSKeyword_jis78 = 309 , eCSSKeyword_jis83 = 310 , eCSSKeyword_jis90 = 311 , eCSSKeyword_jis04 = 312 , eCSSKeyword_justify = 313 , eCSSKeyword_keep_all = 314 , eCSSKeyword_khz = 315 , eCSSKeyword_landscape = 316 , eCSSKeyword_large = 317 , eCSSKeyword_larger = 318 , eCSSKeyword_last = 319 , eCSSKeyword_last_baseline = 320 , eCSSKeyword_layout = 321 , eCSSKeyword_left = 322 , eCSSKeyword_legacy = 323 , eCSSKeyword_lighten = 324 , eCSSKeyword_lighter = 325 , eCSSKeyword_line_through = 326 , eCSSKeyword_linear = 327 , eCSSKeyword_lining_nums = 328 , eCSSKeyword_list_item = 329 , eCSSKeyword_local = 330 , eCSSKeyword_logical = 331 , eCSSKeyword_looped = 332 , eCSSKeyword_lowercase = 333 , eCSSKeyword_lr = 334 , eCSSKeyword_lr_tb = 335 , eCSSKeyword_ltr = 336 , eCSSKeyword_luminance = 337 , eCSSKeyword_luminosity = 338 , eCSSKeyword_mandatory = 339 , eCSSKeyword_manipulation = 340 , eCSSKeyword_manual = 341 , eCSSKeyword_margin_box = 342 , eCSSKeyword_markers = 343 , eCSSKeyword_match_parent = 344 , eCSSKeyword_match_source = 345 , eCSSKeyword_matrix = 346 , eCSSKeyword_matrix3d = 347 , eCSSKeyword_max_content = 348 , eCSSKeyword_medium = 349 , eCSSKeyword_menu = 350 , eCSSKeyword_menutext = 351 , eCSSKeyword_message_box = 352 , eCSSKeyword_middle = 353 , eCSSKeyword_min_content = 354 , eCSSKeyword_minmax = 355 , eCSSKeyword_mix = 356 , eCSSKeyword_mixed = 357 , eCSSKeyword_mm = 358 , eCSSKeyword_monospace = 359 , eCSSKeyword_move = 360 , eCSSKeyword_ms = 361 , eCSSKeyword_multiply = 362 , eCSSKeyword_n_resize = 363 , eCSSKeyword_narrower = 364 , eCSSKeyword_ne_resize = 365 , eCSSKeyword_nesw_resize = 366 , eCSSKeyword_no_clip = 367 , eCSSKeyword_no_close_quote = 368 , eCSSKeyword_no_common_ligatures = 369 , eCSSKeyword_no_contextual = 370 , eCSSKeyword_no_discretionary_ligatures = 371 , eCSSKeyword_no_drag = 372 , eCSSKeyword_no_drop = 373 , eCSSKeyword_no_historical_ligatures = 374 , eCSSKeyword_no_open_quote = 375 , eCSSKeyword_no_repeat = 376 , eCSSKeyword_none = 377 , eCSSKeyword_normal = 378 , eCSSKeyword_not_allowed = 379 , eCSSKeyword_nowrap = 380 , eCSSKeyword_numeric = 381 , eCSSKeyword_ns_resize = 382 , eCSSKeyword_nw_resize = 383 , eCSSKeyword_nwse_resize = 384 , eCSSKeyword_oblique = 385 , eCSSKeyword_oldstyle_nums = 386 , eCSSKeyword_opacity = 387 , eCSSKeyword_open = 388 , eCSSKeyword_open_quote = 389 , eCSSKeyword_optional = 390 , eCSSKeyword_ordinal = 391 , eCSSKeyword_ornaments = 392 , eCSSKeyword_outset = 393 , eCSSKeyword_outside = 394 , eCSSKeyword_over = 395 , eCSSKeyword_overlay = 396 , eCSSKeyword_overline = 397 , eCSSKeyword_paint = 398 , eCSSKeyword_padding_box = 399 , eCSSKeyword_painted = 400 , eCSSKeyword_pan_x = 401 , eCSSKeyword_pan_y = 402 , eCSSKeyword_paused = 403 , eCSSKeyword_pc = 404 , eCSSKeyword_perspective = 405 , eCSSKeyword_petite_caps = 406 , eCSSKeyword_physical = 407 , eCSSKeyword_plaintext = 408 , eCSSKeyword_pointer = 409 , eCSSKeyword_polygon = 410 , eCSSKeyword_portrait = 411 , eCSSKeyword_pre = 412 , eCSSKeyword_pre_wrap = 413 , eCSSKeyword_pre_line = 414 , eCSSKeyword_preserve_3d = 415 , eCSSKeyword_progress = 416 , eCSSKeyword_progressive = 417 , eCSSKeyword_proportional_nums = 418 , eCSSKeyword_proportional_width = 419 , eCSSKeyword_proximity = 420 , eCSSKeyword_pt = 421 , eCSSKeyword_px = 422 , eCSSKeyword_rad = 423 , eCSSKeyword_read_only = 424 , eCSSKeyword_read_write = 425 , eCSSKeyword_relative = 426 , eCSSKeyword_repeat = 427 , eCSSKeyword_repeat_x = 428 , eCSSKeyword_repeat_y = 429 , eCSSKeyword_reverse = 430 , eCSSKeyword_ridge = 431 , eCSSKeyword_right = 432 , eCSSKeyword_rl = 433 , eCSSKeyword_rl_tb = 434 , eCSSKeyword_rotate = 435 , eCSSKeyword_rotate3d = 436 , eCSSKeyword_rotatex = 437 , eCSSKeyword_rotatey = 438 , eCSSKeyword_rotatez = 439 , eCSSKeyword_round = 440 , eCSSKeyword_row = 441 , eCSSKeyword_row_resize = 442 , eCSSKeyword_row_reverse = 443 , eCSSKeyword_rtl = 444 , eCSSKeyword_ruby = 445 , eCSSKeyword_ruby_base = 446 , eCSSKeyword_ruby_base_container = 447 , eCSSKeyword_ruby_text = 448 , eCSSKeyword_ruby_text_container = 449 , eCSSKeyword_running = 450 , eCSSKeyword_s = 451 , eCSSKeyword_s_resize = 452 , eCSSKeyword_safe = 453 , eCSSKeyword_saturate = 454 , eCSSKeyword_saturation = 455 , eCSSKeyword_scale = 456 , eCSSKeyword_scale_down = 457 , eCSSKeyword_scale3d = 458 , eCSSKeyword_scalex = 459 , eCSSKeyword_scaley = 460 , eCSSKeyword_scalez = 461 , eCSSKeyword_screen = 462 , eCSSKeyword_script = 463 , eCSSKeyword_scroll = 464 , eCSSKeyword_scrollbar = 465 , eCSSKeyword_scrollbar_small = 466 , eCSSKeyword_scrollbar_horizontal = 467 , eCSSKeyword_scrollbar_vertical = 468 , eCSSKeyword_se_resize = 469 , eCSSKeyword_select_after = 470 , eCSSKeyword_select_all = 471 , eCSSKeyword_select_before = 472 , eCSSKeyword_select_menu = 473 , eCSSKeyword_select_same = 474 , eCSSKeyword_self_end = 475 , eCSSKeyword_self_start = 476 , eCSSKeyword_semi_condensed = 477 , eCSSKeyword_semi_expanded = 478 , eCSSKeyword_separate = 479 , eCSSKeyword_sepia = 480 , eCSSKeyword_serif = 481 , eCSSKeyword_sesame = 482 , eCSSKeyword_show = 483 , eCSSKeyword_sideways = 484 , eCSSKeyword_sideways_lr = 485 , eCSSKeyword_sideways_right = 486 , eCSSKeyword_sideways_rl = 487 , eCSSKeyword_simplified = 488 , eCSSKeyword_skew = 489 , eCSSKeyword_skewx = 490 , eCSSKeyword_skewy = 491 , eCSSKeyword_slashed_zero = 492 , eCSSKeyword_slice = 493 , eCSSKeyword_small = 494 , eCSSKeyword_small_caps = 495 , eCSSKeyword_small_caption = 496 , eCSSKeyword_smaller = 497 , eCSSKeyword_smooth = 498 , eCSSKeyword_soft = 499 , eCSSKeyword_soft_light = 500 , eCSSKeyword_solid = 501 , eCSSKeyword_space_around = 502 , eCSSKeyword_space_between = 503 , eCSSKeyword_space_evenly = 504 , eCSSKeyword_span = 505 , eCSSKeyword_spell_out = 506 , eCSSKeyword_square = 507 , eCSSKeyword_stacked_fractions = 508 , eCSSKeyword_start = 509 , eCSSKeyword_static = 510 , eCSSKeyword_standalone = 511 , eCSSKeyword_status_bar = 512 , eCSSKeyword_step_end = 513 , eCSSKeyword_step_start = 514 , eCSSKeyword_sticky = 515 , eCSSKeyword_stretch = 516 , eCSSKeyword_stretch_to_fit = 517 , eCSSKeyword_stretched = 518 , eCSSKeyword_strict = 519 , eCSSKeyword_stroke = 520 , eCSSKeyword_stroke_box = 521 , eCSSKeyword_style = 522 , eCSSKeyword_styleset = 523 , eCSSKeyword_stylistic = 524 , eCSSKeyword_sub = 525 , eCSSKeyword_subgrid = 526 , eCSSKeyword_subtract = 527 , eCSSKeyword_super = 528 , eCSSKeyword_sw_resize = 529 , eCSSKeyword_swash = 530 , eCSSKeyword_swap = 531 , eCSSKeyword_table = 532 , eCSSKeyword_table_caption = 533 , eCSSKeyword_table_cell = 534 , eCSSKeyword_table_column = 535 , eCSSKeyword_table_column_group = 536 , eCSSKeyword_table_footer_group = 537 , eCSSKeyword_table_header_group = 538 , eCSSKeyword_table_row = 539 , eCSSKeyword_table_row_group = 540 , eCSSKeyword_tabular_nums = 541 , eCSSKeyword_tailed = 542 , eCSSKeyword_tb = 543 , eCSSKeyword_tb_rl = 544 , eCSSKeyword_text = 545 , eCSSKeyword_text_bottom = 546 , eCSSKeyword_text_top = 547 , eCSSKeyword_thick = 548 , eCSSKeyword_thin = 549 , eCSSKeyword_threeddarkshadow = 550 , eCSSKeyword_threedface = 551 , eCSSKeyword_threedhighlight = 552 , eCSSKeyword_threedlightshadow = 553 , eCSSKeyword_threedshadow = 554 , eCSSKeyword_titling_caps = 555 , eCSSKeyword_toggle = 556 , eCSSKeyword_top = 557 , eCSSKeyword_top_outside = 558 , eCSSKeyword_traditional = 559 , eCSSKeyword_translate = 560 , eCSSKeyword_translate3d = 561 , eCSSKeyword_translatex = 562 , eCSSKeyword_translatey = 563 , eCSSKeyword_translatez = 564 , eCSSKeyword_transparent = 565 , eCSSKeyword_triangle = 566 , eCSSKeyword_tri_state = 567 , eCSSKeyword_ultra_condensed = 568 , eCSSKeyword_ultra_expanded = 569 , eCSSKeyword_under = 570 , eCSSKeyword_underline = 571 , eCSSKeyword_unicase = 572 , eCSSKeyword_unsafe = 573 , eCSSKeyword_unset = 574 , eCSSKeyword_uppercase = 575 , eCSSKeyword_upright = 576 , eCSSKeyword_vertical = 577 , eCSSKeyword_vertical_lr = 578 , eCSSKeyword_vertical_rl = 579 , eCSSKeyword_vertical_text = 580 , eCSSKeyword_view_box = 581 , eCSSKeyword_visible = 582 , eCSSKeyword_visiblefill = 583 , eCSSKeyword_visiblepainted = 584 , eCSSKeyword_visiblestroke = 585 , eCSSKeyword_w_resize = 586 , eCSSKeyword_wait = 587 , eCSSKeyword_wavy = 588 , eCSSKeyword_weight = 589 , eCSSKeyword_wider = 590 , eCSSKeyword_window = 591 , eCSSKeyword_windowframe = 592 , eCSSKeyword_windowtext = 593 , eCSSKeyword_words = 594 , eCSSKeyword_wrap = 595 , eCSSKeyword_wrap_reverse = 596 , eCSSKeyword_write_only = 597 , eCSSKeyword_x_large = 598 , eCSSKeyword_x_small = 599 , eCSSKeyword_xx_large = 600 , eCSSKeyword_xx_small = 601 , eCSSKeyword_zoom_in = 602 , eCSSKeyword_zoom_out = 603 , eCSSKeyword_radio = 604 , eCSSKeyword_checkbox = 605 , eCSSKeyword_button_bevel = 606 , eCSSKeyword_toolbox = 607 , eCSSKeyword_toolbar = 608 , eCSSKeyword_toolbarbutton = 609 , eCSSKeyword_toolbargripper = 610 , eCSSKeyword_dualbutton = 611 , eCSSKeyword_toolbarbutton_dropdown = 612 , eCSSKeyword_button_arrow_up = 613 , eCSSKeyword_button_arrow_down = 614 , eCSSKeyword_button_arrow_next = 615 , eCSSKeyword_button_arrow_previous = 616 , eCSSKeyword_separator = 617 , eCSSKeyword_splitter = 618 , eCSSKeyword_statusbar = 619 , eCSSKeyword_statusbarpanel = 620 , eCSSKeyword_resizerpanel = 621 , eCSSKeyword_resizer = 622 , eCSSKeyword_listbox = 623 , eCSSKeyword_listitem = 624 , eCSSKeyword_numbers = 625 , eCSSKeyword_number_input = 626 , eCSSKeyword_treeview = 627 , eCSSKeyword_treeitem = 628 , eCSSKeyword_treetwisty = 629 , eCSSKeyword_treetwistyopen = 630 , eCSSKeyword_treeline = 631 , eCSSKeyword_treeheader = 632 , eCSSKeyword_treeheadercell = 633 , eCSSKeyword_treeheadersortarrow = 634 , eCSSKeyword_progressbar = 635 , eCSSKeyword_progressbar_vertical = 636 , eCSSKeyword_progresschunk = 637 , eCSSKeyword_progresschunk_vertical = 638 , eCSSKeyword_tab = 639 , eCSSKeyword_tabpanels = 640 , eCSSKeyword_tabpanel = 641 , eCSSKeyword_tab_scroll_arrow_back = 642 , eCSSKeyword_tab_scroll_arrow_forward = 643 , eCSSKeyword_tooltip = 644 , eCSSKeyword_inner_spin_button = 645 , eCSSKeyword_spinner = 646 , eCSSKeyword_spinner_upbutton = 647 , eCSSKeyword_spinner_downbutton = 648 , eCSSKeyword_spinner_textfield = 649 , eCSSKeyword_scrollbarbutton_up = 650 , eCSSKeyword_scrollbarbutton_down = 651 , eCSSKeyword_scrollbarbutton_left = 652 , eCSSKeyword_scrollbarbutton_right = 653 , eCSSKeyword_scrollbartrack_horizontal = 654 , eCSSKeyword_scrollbartrack_vertical = 655 , eCSSKeyword_scrollbarthumb_horizontal = 656 , eCSSKeyword_scrollbarthumb_vertical = 657 , eCSSKeyword_sheet = 658 , eCSSKeyword_textfield = 659 , eCSSKeyword_textfield_multiline = 660 , eCSSKeyword_caret = 661 , eCSSKeyword_searchfield = 662 , eCSSKeyword_menubar = 663 , eCSSKeyword_menupopup = 664 , eCSSKeyword_menuitem = 665 , eCSSKeyword_checkmenuitem = 666 , eCSSKeyword_radiomenuitem = 667 , eCSSKeyword_menucheckbox = 668 , eCSSKeyword_menuradio = 669 , eCSSKeyword_menuseparator = 670 , eCSSKeyword_menuarrow = 671 , eCSSKeyword_menuimage = 672 , eCSSKeyword_menuitemtext = 673 , eCSSKeyword_menulist = 674 , eCSSKeyword_menulist_button = 675 , eCSSKeyword_menulist_text = 676 , eCSSKeyword_menulist_textfield = 677 , eCSSKeyword_meterbar = 678 , eCSSKeyword_meterchunk = 679 , eCSSKeyword_minimal_ui = 680 , eCSSKeyword_range = 681 , eCSSKeyword_range_thumb = 682 , eCSSKeyword_sans_serif = 683 , eCSSKeyword_sans_serif_bold_italic = 684 , eCSSKeyword_sans_serif_italic = 685 , eCSSKeyword_scale_horizontal = 686 , eCSSKeyword_scale_vertical = 687 , eCSSKeyword_scalethumb_horizontal = 688 , eCSSKeyword_scalethumb_vertical = 689 , eCSSKeyword_scalethumbstart = 690 , eCSSKeyword_scalethumbend = 691 , eCSSKeyword_scalethumbtick = 692 , eCSSKeyword_groupbox = 693 , eCSSKeyword_checkbox_container = 694 , eCSSKeyword_radio_container = 695 , eCSSKeyword_checkbox_label = 696 , eCSSKeyword_radio_label = 697 , eCSSKeyword_button_focus = 698 , eCSSKeyword__moz_win_media_toolbox = 699 , eCSSKeyword__moz_win_communications_toolbox = 700 , eCSSKeyword__moz_win_browsertabbar_toolbox = 701 , eCSSKeyword__moz_win_accentcolor = 702 , eCSSKeyword__moz_win_accentcolortext = 703 , eCSSKeyword__moz_win_mediatext = 704 , eCSSKeyword__moz_win_communicationstext = 705 , eCSSKeyword__moz_win_glass = 706 , eCSSKeyword__moz_win_borderless_glass = 707 , eCSSKeyword__moz_window_titlebar = 708 , eCSSKeyword__moz_window_titlebar_maximized = 709 , eCSSKeyword__moz_window_frame_left = 710 , eCSSKeyword__moz_window_frame_right = 711 , eCSSKeyword__moz_window_frame_bottom = 712 , eCSSKeyword__moz_window_button_close = 713 , eCSSKeyword__moz_window_button_minimize = 714 , eCSSKeyword__moz_window_button_maximize = 715 , eCSSKeyword__moz_window_button_restore = 716 , eCSSKeyword__moz_window_button_box = 717 , eCSSKeyword__moz_window_button_box_maximized = 718 , eCSSKeyword__moz_mac_help_button = 719 , eCSSKeyword__moz_win_exclude_glass = 720 , eCSSKeyword__moz_mac_vibrancy_light = 721 , eCSSKeyword__moz_mac_vibrancy_dark = 722 , eCSSKeyword__moz_mac_vibrant_titlebar_light = 723 , eCSSKeyword__moz_mac_vibrant_titlebar_dark = 724 , eCSSKeyword__moz_mac_disclosure_button_closed = 725 , eCSSKeyword__moz_mac_disclosure_button_open = 726 , eCSSKeyword__moz_mac_source_list = 727 , eCSSKeyword__moz_mac_source_list_selection = 728 , eCSSKeyword__moz_mac_active_source_list_selection = 729 , eCSSKeyword_alphabetic = 730 , eCSSKeyword_bevel = 731 , eCSSKeyword_butt = 732 , eCSSKeyword_central = 733 , eCSSKeyword_crispedges = 734 , eCSSKeyword_evenodd = 735 , eCSSKeyword_geometricprecision = 736 , eCSSKeyword_hanging = 737 , eCSSKeyword_ideographic = 738 , eCSSKeyword_linearrgb = 739 , eCSSKeyword_mathematical = 740 , eCSSKeyword_miter = 741 , eCSSKeyword_no_change = 742 , eCSSKeyword_non_scaling_stroke = 743 , eCSSKeyword_nonzero = 744 , eCSSKeyword_optimizelegibility = 745 , eCSSKeyword_optimizequality = 746 , eCSSKeyword_optimizespeed = 747 , eCSSKeyword_reset_size = 748 , eCSSKeyword_srgb = 749 , eCSSKeyword_symbolic = 750 , eCSSKeyword_symbols = 751 , eCSSKeyword_text_after_edge = 752 , eCSSKeyword_text_before_edge = 753 , eCSSKeyword_use_script = 754 , eCSSKeyword__moz_crisp_edges = 755 , eCSSKeyword_space = 756 , eCSSKeyword_COUNT = 757 , } pub const nsStyleStructID_nsStyleStructID_None : root :: nsStyleStructID = -1 ; pub const nsStyleStructID_nsStyleStructID_Inherited_Start : root :: nsStyleStructID = 0 ; pub const nsStyleStructID_nsStyleStructID_DUMMY1 : root :: nsStyleStructID = -1 ; pub const nsStyleStructID_eStyleStruct_Font : root :: nsStyleStructID = 0 ; pub const nsStyleStructID_eStyleStruct_Color : root :: nsStyleStructID = 1 ; pub const nsStyleStructID_eStyleStruct_List : root :: nsStyleStructID = 2 ; pub const nsStyleStructID_eStyleStruct_Text : root :: nsStyleStructID = 3 ; pub const nsStyleStructID_eStyleStruct_Visibility : root :: nsStyleStructID = 4 ; pub const nsStyleStructID_eStyleStruct_UserInterface : root :: nsStyleStructID = 5 ; pub const nsStyleStructID_eStyleStruct_TableBorder : root :: nsStyleStructID = 6 ; pub const nsStyleStructID_eStyleStruct_SVG : root :: nsStyleStructID = 7 ; pub const nsStyleStructID_eStyleStruct_Variables : root :: nsStyleStructID = 8 ; pub const nsStyleStructID_nsStyleStructID_Reset_Start : root :: nsStyleStructID = 9 ; pub const nsStyleStructID_nsStyleStructID_DUMMY2 : root :: nsStyleStructID = 8 ; pub const nsStyleStructID_eStyleStruct_Background : root :: nsStyleStructID = 9 ; pub const nsStyleStructID_eStyleStruct_Position : root :: nsStyleStructID = 10 ; pub const nsStyleStructID_eStyleStruct_TextReset : root :: nsStyleStructID = 11 ; pub const nsStyleStructID_eStyleStruct_Display : root :: nsStyleStructID = 12 ; pub const nsStyleStructID_eStyleStruct_Content : root :: nsStyleStructID = 13 ; pub const nsStyleStructID_eStyleStruct_UIReset : root :: nsStyleStructID = 14 ; pub const nsStyleStructID_eStyleStruct_Table : root :: nsStyleStructID = 15 ; pub const nsStyleStructID_eStyleStruct_Margin : root :: nsStyleStructID = 16 ; pub const nsStyleStructID_eStyleStruct_Padding : root :: nsStyleStructID = 17 ; pub const nsStyleStructID_eStyleStruct_Border : root :: nsStyleStructID = 18 ; pub const nsStyleStructID_eStyleStruct_Outline : root :: nsStyleStructID = 19 ; pub const nsStyleStructID_eStyleStruct_XUL : root :: nsStyleStructID = 20 ; pub const nsStyleStructID_eStyleStruct_SVGReset : root :: nsStyleStructID = 21 ; pub const nsStyleStructID_eStyleStruct_Column : root :: nsStyleStructID = 22 ; pub const nsStyleStructID_eStyleStruct_Effects : root :: nsStyleStructID = 23 ; pub const nsStyleStructID_nsStyleStructID_Length : root :: nsStyleStructID = 24 ; pub const nsStyleStructID_nsStyleStructID_Inherited_Count : root :: nsStyleStructID = 9 ; pub const nsStyleStructID_nsStyleStructID_Reset_Count : root :: nsStyleStructID = 15 ; pub type nsStyleStructID = :: std :: os :: raw :: c_int ; pub const nsStyleAnimType_eStyleAnimType_Custom : root :: nsStyleAnimType = 0 ; pub const nsStyleAnimType_eStyleAnimType_Coord : root :: nsStyleAnimType = 1 ; pub const nsStyleAnimType_eStyleAnimType_Sides_Top : root :: nsStyleAnimType = 2 ; pub const nsStyleAnimType_eStyleAnimType_Sides_Right : root :: nsStyleAnimType = 3 ; pub const nsStyleAnimType_eStyleAnimType_Sides_Bottom : root :: nsStyleAnimType = 4 ; pub const nsStyleAnimType_eStyleAnimType_Sides_Left : root :: nsStyleAnimType = 5 ; pub const nsStyleAnimType_eStyleAnimType_Corner_TopLeft : root :: nsStyleAnimType = 6 ; pub const nsStyleAnimType_eStyleAnimType_Corner_TopRight : root :: nsStyleAnimType = 7 ; pub const nsStyleAnimType_eStyleAnimType_Corner_BottomRight : root :: nsStyleAnimType = 8 ; pub const nsStyleAnimType_eStyleAnimType_Corner_BottomLeft : root :: nsStyleAnimType = 9 ; pub const nsStyleAnimType_eStyleAnimType_nscoord : root :: nsStyleAnimType = 10 ; pub const nsStyleAnimType_eStyleAnimType_float : root :: nsStyleAnimType = 11 ; pub const nsStyleAnimType_eStyleAnimType_Color : root :: nsStyleAnimType = 12 ; pub const nsStyleAnimType_eStyleAnimType_ComplexColor : root :: nsStyleAnimType = 13 ; pub const nsStyleAnimType_eStyleAnimType_PaintServer : root :: nsStyleAnimType = 14 ; pub const nsStyleAnimType_eStyleAnimType_Shadow : root :: nsStyleAnimType = 15 ; pub const nsStyleAnimType_eStyleAnimType_Discrete : root :: nsStyleAnimType = 16 ; pub const nsStyleAnimType_eStyleAnimType_None : root :: nsStyleAnimType = 17 ; pub type nsStyleAnimType = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsCSSProps { pub _address : u8 , } pub use self :: super :: root :: mozilla :: CSSEnabledState as nsCSSProps_EnabledState ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsCSSProps_KTableEntry { pub mKeyword : root :: nsCSSKeyword , pub mValue : i16 , } # [ test ] fn bindgen_test_layout_nsCSSProps_KTableEntry ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSProps_KTableEntry > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( nsCSSProps_KTableEntry ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSProps_KTableEntry > ( ) , 2usize , concat ! ( "Alignment of " , stringify ! ( nsCSSProps_KTableEntry ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSProps_KTableEntry ) ) . mKeyword as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSProps_KTableEntry ) , "::" , stringify ! ( mKeyword ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSProps_KTableEntry ) ) . mValue as * const _ as usize } , 2usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSProps_KTableEntry ) , "::" , stringify ! ( mValue ) ) ) ; } impl Clone for nsCSSProps_KTableEntry { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps9kSIDTableE" ] - pub static mut nsCSSProps_kSIDTable : [ root :: nsStyleStructID ; 327usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kKeywordTableTableE" ] - pub static mut nsCSSProps_kKeywordTableTable : [ * const root :: nsCSSProps_KTableEntry ; 327usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps14kAnimTypeTableE" ] - pub static mut nsCSSProps_kAnimTypeTable : [ root :: nsStyleAnimType ; 327usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps23kStyleStructOffsetTableE" ] - pub static mut nsCSSProps_kStyleStructOffsetTable : [ isize ; 327usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps11kFlagsTableE" ] - pub static mut nsCSSProps_kFlagsTable : [ u32 ; 377usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kParserVariantTableE" ] - pub static mut nsCSSProps_kParserVariantTable : [ u32 ; 327usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kSubpropertyTableE" ] - pub static mut nsCSSProps_kSubpropertyTable : [ * const root :: nsCSSPropertyID ; 50usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps26gShorthandsContainingTableE" ] - pub static mut nsCSSProps_gShorthandsContainingTable : [ * mut root :: nsCSSPropertyID ; 327usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25gShorthandsContainingPoolE" ] - pub static mut nsCSSProps_gShorthandsContainingPool : * mut root :: nsCSSPropertyID ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps22gPropertyCountInStructE" ] - pub static mut nsCSSProps_gPropertyCountInStruct : [ usize ; 24usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps22gPropertyIndexInStructE" ] - pub static mut nsCSSProps_gPropertyIndexInStruct : [ usize ; 327usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kLogicalGroupTableE" ] - pub static mut nsCSSProps_kLogicalGroupTable : [ * const root :: nsCSSPropertyID ; 9usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16gPropertyEnabledE" ] - pub static mut nsCSSProps_gPropertyEnabled : [ bool ; 486usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps13kIDLNameTableE" ] - pub static mut nsCSSProps_kIDLNameTable : [ * const :: std :: os :: raw :: c_char ; 377usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kIDLNameSortPositionTableE" ] - pub static mut nsCSSProps_kIDLNameSortPositionTable : [ i32 ; 377usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19gPropertyUseCounterE" ] - pub static mut nsCSSProps_gPropertyUseCounter : [ root :: mozilla :: UseCounter ; 327usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kAnimationDirectionKTableE" ] - pub static mut nsCSSProps_kAnimationDirectionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps24kAnimationFillModeKTableE" ] - pub static mut nsCSSProps_kAnimationFillModeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps30kAnimationIterationCountKTableE" ] - pub static mut nsCSSProps_kAnimationIterationCountKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kAnimationPlayStateKTableE" ] - pub static mut nsCSSProps_kAnimationPlayStateKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps30kAnimationTimingFunctionKTableE" ] - pub static mut nsCSSProps_kAnimationTimingFunctionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kAppearanceKTableE" ] - pub static mut nsCSSProps_kAppearanceKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps14kAzimuthKTableE" ] - pub static mut nsCSSProps_kAzimuthKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kBackfaceVisibilityKTableE" ] - pub static mut nsCSSProps_kBackfaceVisibilityKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kTransformStyleKTableE" ] - pub static mut nsCSSProps_kTransformStyleKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kImageLayerAttachmentKTableE" ] - pub static mut nsCSSProps_kImageLayerAttachmentKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps23kBackgroundOriginKTableE" ] - pub static mut nsCSSProps_kBackgroundOriginKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kMaskOriginKTableE" ] - pub static mut nsCSSProps_kMaskOriginKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kImageLayerPositionKTableE" ] - pub static mut nsCSSProps_kImageLayerPositionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps23kImageLayerRepeatKTableE" ] - pub static mut nsCSSProps_kImageLayerRepeatKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kImageLayerRepeatPartKTableE" ] - pub static mut nsCSSProps_kImageLayerRepeatPartKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kImageLayerSizeKTableE" ] - pub static mut nsCSSProps_kImageLayerSizeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps26kImageLayerCompositeKTableE" ] - pub static mut nsCSSProps_kImageLayerCompositeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kImageLayerModeKTableE" ] - pub static mut nsCSSProps_kImageLayerModeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kBackgroundClipKTableE" ] - pub static mut nsCSSProps_kBackgroundClipKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kMaskClipKTableE" ] - pub static mut nsCSSProps_kMaskClipKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kBlendModeKTableE" ] - pub static mut nsCSSProps_kBlendModeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kBorderCollapseKTableE" ] - pub static mut nsCSSProps_kBorderCollapseKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps24kBorderImageRepeatKTableE" ] - pub static mut nsCSSProps_kBorderImageRepeatKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps23kBorderImageSliceKTableE" ] - pub static mut nsCSSProps_kBorderImageSliceKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kBorderStyleKTableE" ] - pub static mut nsCSSProps_kBorderStyleKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kBorderWidthKTableE" ] - pub static mut nsCSSProps_kBorderWidthKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kBoxAlignKTableE" ] - pub static mut nsCSSProps_kBoxAlignKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kBoxDecorationBreakKTableE" ] - pub static mut nsCSSProps_kBoxDecorationBreakKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kBoxDirectionKTableE" ] - pub static mut nsCSSProps_kBoxDirectionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kBoxOrientKTableE" ] - pub static mut nsCSSProps_kBoxOrientKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps14kBoxPackKTableE" ] - pub static mut nsCSSProps_kBoxPackKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps26kClipPathGeometryBoxKTableE" ] - pub static mut nsCSSProps_kClipPathGeometryBoxKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kCounterRangeKTableE" ] - pub static mut nsCSSProps_kCounterRangeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kCounterSpeakAsKTableE" ] - pub static mut nsCSSProps_kCounterSpeakAsKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kCounterSymbolsSystemKTableE" ] - pub static mut nsCSSProps_kCounterSymbolsSystemKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kCounterSystemKTableE" ] - pub static mut nsCSSProps_kCounterSystemKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps23kDominantBaselineKTableE" ] - pub static mut nsCSSProps_kDominantBaselineKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kShapeRadiusKTableE" ] - pub static mut nsCSSProps_kShapeRadiusKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kFillRuleKTableE" ] - pub static mut nsCSSProps_kFillRuleKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kFilterFunctionKTableE" ] - pub static mut nsCSSProps_kFilterFunctionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kImageRenderingKTableE" ] - pub static mut nsCSSProps_kImageRenderingKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kShapeOutsideShapeBoxKTableE" ] - pub static mut nsCSSProps_kShapeOutsideShapeBoxKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kShapeRenderingKTableE" ] - pub static mut nsCSSProps_kShapeRenderingKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kStrokeLinecapKTableE" ] - pub static mut nsCSSProps_kStrokeLinecapKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kStrokeLinejoinKTableE" ] - pub static mut nsCSSProps_kStrokeLinejoinKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kStrokeContextValueKTableE" ] - pub static mut nsCSSProps_kStrokeContextValueKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kVectorEffectKTableE" ] - pub static mut nsCSSProps_kVectorEffectKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kTextAnchorKTableE" ] - pub static mut nsCSSProps_kTextAnchorKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kTextRenderingKTableE" ] - pub static mut nsCSSProps_kTextRenderingKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kColorAdjustKTableE" ] - pub static mut nsCSSProps_kColorAdjustKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kColorInterpolationKTableE" ] - pub static mut nsCSSProps_kColorInterpolationKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kColumnFillKTableE" ] - pub static mut nsCSSProps_kColumnFillKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kColumnSpanKTableE" ] - pub static mut nsCSSProps_kColumnSpanKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kBoxPropSourceKTableE" ] - pub static mut nsCSSProps_kBoxPropSourceKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kBoxShadowTypeKTableE" ] - pub static mut nsCSSProps_kBoxShadowTypeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kBoxSizingKTableE" ] - pub static mut nsCSSProps_kBoxSizingKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kCaptionSideKTableE" ] - pub static mut nsCSSProps_kCaptionSideKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps12kClearKTableE" ] - pub static mut nsCSSProps_kClearKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps12kColorKTableE" ] - pub static mut nsCSSProps_kColorKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps14kContentKTableE" ] - pub static mut nsCSSProps_kContentKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps33kControlCharacterVisibilityKTableE" ] - pub static mut nsCSSProps_kControlCharacterVisibilityKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps13kCursorKTableE" ] - pub static mut nsCSSProps_kCursorKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kDirectionKTableE" ] - pub static mut nsCSSProps_kDirectionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps14kDisplayKTableE" ] - pub static mut nsCSSProps_kDisplayKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kElevationKTableE" ] - pub static mut nsCSSProps_kElevationKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kEmptyCellsKTableE" ] - pub static mut nsCSSProps_kEmptyCellsKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kAlignAllKeywordsE" ] - pub static mut nsCSSProps_kAlignAllKeywords : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps22kAlignOverflowPositionE" ] - pub static mut nsCSSProps_kAlignOverflowPosition : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kAlignSelfPositionE" ] - pub static mut nsCSSProps_kAlignSelfPosition : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps12kAlignLegacyE" ] - pub static mut nsCSSProps_kAlignLegacy : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kAlignLegacyPositionE" ] - pub static mut nsCSSProps_kAlignLegacyPosition : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps31kAlignAutoNormalStretchBaselineE" ] - pub static mut nsCSSProps_kAlignAutoNormalStretchBaseline : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kAlignNormalStretchBaselineE" ] - pub static mut nsCSSProps_kAlignNormalStretchBaseline : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kAlignNormalBaselineE" ] - pub static mut nsCSSProps_kAlignNormalBaseline : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kAlignContentDistributionE" ] - pub static mut nsCSSProps_kAlignContentDistribution : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kAlignContentPositionE" ] - pub static mut nsCSSProps_kAlignContentPosition : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps31kAutoCompletionAlignJustifySelfE" ] - pub static mut nsCSSProps_kAutoCompletionAlignJustifySelf : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kAutoCompletionAlignItemsE" ] - pub static mut nsCSSProps_kAutoCompletionAlignItems : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps34kAutoCompletionAlignJustifyContentE" ] - pub static mut nsCSSProps_kAutoCompletionAlignJustifyContent : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kFlexDirectionKTableE" ] - pub static mut nsCSSProps_kFlexDirectionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kFlexWrapKTableE" ] - pub static mut nsCSSProps_kFlexWrapKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps12kFloatKTableE" ] - pub static mut nsCSSProps_kFloatKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kFloatEdgeKTableE" ] - pub static mut nsCSSProps_kFloatEdgeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kFontDisplayKTableE" ] - pub static mut nsCSSProps_kFontDisplayKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps11kFontKTableE" ] - pub static mut nsCSSProps_kFontKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kFontKerningKTableE" ] - pub static mut nsCSSProps_kFontKerningKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kFontSizeKTableE" ] - pub static mut nsCSSProps_kFontSizeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kFontSmoothingKTableE" ] - pub static mut nsCSSProps_kFontSmoothingKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kFontStretchKTableE" ] - pub static mut nsCSSProps_kFontStretchKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kFontStyleKTableE" ] - pub static mut nsCSSProps_kFontStyleKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kFontSynthesisKTableE" ] - pub static mut nsCSSProps_kFontSynthesisKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kFontVariantKTableE" ] - pub static mut nsCSSProps_kFontVariantKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps28kFontVariantAlternatesKTableE" ] - pub static mut nsCSSProps_kFontVariantAlternatesKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps33kFontVariantAlternatesFuncsKTableE" ] - pub static mut nsCSSProps_kFontVariantAlternatesFuncsKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps22kFontVariantCapsKTableE" ] - pub static mut nsCSSProps_kFontVariantCapsKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kFontVariantEastAsianKTableE" ] - pub static mut nsCSSProps_kFontVariantEastAsianKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kFontVariantLigaturesKTableE" ] - pub static mut nsCSSProps_kFontVariantLigaturesKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kFontVariantNumericKTableE" ] - pub static mut nsCSSProps_kFontVariantNumericKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps26kFontVariantPositionKTableE" ] - pub static mut nsCSSProps_kFontVariantPositionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kFontWeightKTableE" ] - pub static mut nsCSSProps_kFontWeightKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kGridAutoFlowKTableE" ] - pub static mut nsCSSProps_kGridAutoFlowKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps23kGridTrackBreadthKTableE" ] - pub static mut nsCSSProps_kGridTrackBreadthKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps14kHyphensKTableE" ] - pub static mut nsCSSProps_kHyphensKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps23kImageOrientationKTableE" ] - pub static mut nsCSSProps_kImageOrientationKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kImageOrientationFlipKTableE" ] - pub static mut nsCSSProps_kImageOrientationFlipKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kIsolationKTableE" ] - pub static mut nsCSSProps_kIsolationKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps14kIMEModeKTableE" ] - pub static mut nsCSSProps_kIMEModeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kLineHeightKTableE" ] - pub static mut nsCSSProps_kLineHeightKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps24kListStylePositionKTableE" ] - pub static mut nsCSSProps_kListStylePositionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kMaskTypeKTableE" ] - pub static mut nsCSSProps_kMaskTypeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kMathVariantKTableE" ] - pub static mut nsCSSProps_kMathVariantKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kMathDisplayKTableE" ] - pub static mut nsCSSProps_kMathDisplayKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps14kContainKTableE" ] - pub static mut nsCSSProps_kContainKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kContextOpacityKTableE" ] - pub static mut nsCSSProps_kContextOpacityKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kContextPatternKTableE" ] - pub static mut nsCSSProps_kContextPatternKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kObjectFitKTableE" ] - pub static mut nsCSSProps_kObjectFitKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps13kOrientKTableE" ] - pub static mut nsCSSProps_kOrientKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kOutlineStyleKTableE" ] - pub static mut nsCSSProps_kOutlineStyleKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kOverflowKTableE" ] - pub static mut nsCSSProps_kOverflowKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kOverflowSubKTableE" ] - pub static mut nsCSSProps_kOverflowSubKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps22kOverflowClipBoxKTableE" ] - pub static mut nsCSSProps_kOverflowClipBoxKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kOverflowWrapKTableE" ] - pub static mut nsCSSProps_kOverflowWrapKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kPageBreakKTableE" ] - pub static mut nsCSSProps_kPageBreakKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps22kPageBreakInsideKTableE" ] - pub static mut nsCSSProps_kPageBreakInsideKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kPageMarksKTableE" ] - pub static mut nsCSSProps_kPageMarksKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kPageSizeKTableE" ] - pub static mut nsCSSProps_kPageSizeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps12kPitchKTableE" ] - pub static mut nsCSSProps_kPitchKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kPointerEventsKTableE" ] - pub static mut nsCSSProps_kPointerEventsKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kPositionKTableE" ] - pub static mut nsCSSProps_kPositionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps26kRadialGradientShapeKTableE" ] - pub static mut nsCSSProps_kRadialGradientShapeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kRadialGradientSizeKTableE" ] - pub static mut nsCSSProps_kRadialGradientSizeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps31kRadialGradientLegacySizeKTableE" ] - pub static mut nsCSSProps_kRadialGradientLegacySizeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps13kResizeKTableE" ] - pub static mut nsCSSProps_kResizeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kRubyAlignKTableE" ] - pub static mut nsCSSProps_kRubyAlignKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kRubyPositionKTableE" ] - pub static mut nsCSSProps_kRubyPositionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kScrollBehaviorKTableE" ] - pub static mut nsCSSProps_kScrollBehaviorKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kOverscrollBehaviorKTableE" ] - pub static mut nsCSSProps_kOverscrollBehaviorKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kScrollSnapTypeKTableE" ] - pub static mut nsCSSProps_kScrollSnapTypeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps12kSpeakKTableE" ] - pub static mut nsCSSProps_kSpeakKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kSpeakHeaderKTableE" ] - pub static mut nsCSSProps_kSpeakHeaderKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kSpeakNumeralKTableE" ] - pub static mut nsCSSProps_kSpeakNumeralKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps23kSpeakPunctuationKTableE" ] - pub static mut nsCSSProps_kSpeakPunctuationKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kSpeechRateKTableE" ] - pub static mut nsCSSProps_kSpeechRateKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kStackSizingKTableE" ] - pub static mut nsCSSProps_kStackSizingKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kTableLayoutKTableE" ] - pub static mut nsCSSProps_kTableLayoutKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kTextAlignKTableE" ] - pub static mut nsCSSProps_kTextAlignKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kTextAlignLastKTableE" ] - pub static mut nsCSSProps_kTextAlignLastKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kTextCombineUprightKTableE" ] - pub static mut nsCSSProps_kTextCombineUprightKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps25kTextDecorationLineKTableE" ] - pub static mut nsCSSProps_kTextDecorationLineKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps26kTextDecorationStyleKTableE" ] - pub static mut nsCSSProps_kTextDecorationStyleKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps27kTextEmphasisPositionKTableE" ] - pub static mut nsCSSProps_kTextEmphasisPositionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps28kTextEmphasisStyleFillKTableE" ] - pub static mut nsCSSProps_kTextEmphasisStyleFillKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps29kTextEmphasisStyleShapeKTableE" ] - pub static mut nsCSSProps_kTextEmphasisStyleShapeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kTextJustifyKTableE" ] - pub static mut nsCSSProps_kTextJustifyKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps22kTextOrientationKTableE" ] - pub static mut nsCSSProps_kTextOrientationKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kTextOverflowKTableE" ] - pub static mut nsCSSProps_kTextOverflowKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kTextSizeAdjustKTableE" ] - pub static mut nsCSSProps_kTextSizeAdjustKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kTextTransformKTableE" ] - pub static mut nsCSSProps_kTextTransformKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kTouchActionKTableE" ] - pub static mut nsCSSProps_kTouchActionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps15kTopLayerKTableE" ] - pub static mut nsCSSProps_kTopLayerKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kTransformBoxKTableE" ] - pub static mut nsCSSProps_kTransformBoxKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps31kTransitionTimingFunctionKTableE" ] - pub static mut nsCSSProps_kTransitionTimingFunctionKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kUnicodeBidiKTableE" ] - pub static mut nsCSSProps_kUnicodeBidiKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kUserFocusKTableE" ] - pub static mut nsCSSProps_kUserFocusKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kUserInputKTableE" ] - pub static mut nsCSSProps_kUserInputKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kUserModifyKTableE" ] - pub static mut nsCSSProps_kUserModifyKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kUserSelectKTableE" ] - pub static mut nsCSSProps_kUserSelectKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps20kVerticalAlignKTableE" ] - pub static mut nsCSSProps_kVerticalAlignKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kVisibilityKTableE" ] - pub static mut nsCSSProps_kVisibilityKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps13kVolumeKTableE" ] - pub static mut nsCSSProps_kVolumeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps17kWhitespaceKTableE" ] - pub static mut nsCSSProps_kWhitespaceKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps12kWidthKTableE" ] - pub static mut nsCSSProps_kWidthKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps21kWindowDraggingKTableE" ] - pub static mut nsCSSProps_kWindowDraggingKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps19kWindowShadowKTableE" ] - pub static mut nsCSSProps_kWindowShadowKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps16kWordBreakKTableE" ] - pub static mut nsCSSProps_kWordBreakKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN10nsCSSProps18kWritingModeKTableE" ] - pub static mut nsCSSProps_kWritingModeKTable : [ root :: nsCSSProps_KTableEntry ; 0usize ] ; -} # [ test ] fn bindgen_test_layout_nsCSSProps ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSProps > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( nsCSSProps ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSProps > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( nsCSSProps ) ) ) ; } impl Clone for nsCSSProps { fn clone ( & self ) -> Self { * self } } - /// Class to safely handle main-thread-only pointers off the main thread. + /// notified, with a null document pointer. + #[repr(C)] + #[derive(Debug)] + pub struct nsIDocument_ExternalResourceLoad { + pub _base: root::nsISupports, + pub mObservers: [u64; 10usize], + } + #[test] + fn bindgen_test_layout_nsIDocument_ExternalResourceLoad() { + assert_eq!( + ::std::mem::size_of::<nsIDocument_ExternalResourceLoad>(), + 88usize, + concat!("Size of: ", stringify!(nsIDocument_ExternalResourceLoad)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDocument_ExternalResourceLoad>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsIDocument_ExternalResourceLoad) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIDocument_ExternalResourceLoad>())).mObservers as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsIDocument_ExternalResourceLoad), + "::", + stringify!(mObservers) + ) + ); + } + pub type nsIDocument_ActivityObserverEnumerator = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut root::nsISupports, arg2: *mut ::std::os::raw::c_void), + >; + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsIDocument_DocumentTheme { + Doc_Theme_Uninitialized = 0, + Doc_Theme_None = 1, + Doc_Theme_Neutral = 2, + Doc_Theme_Dark = 3, + Doc_Theme_Bright = 4, + } + pub type nsIDocument_FrameRequestCallbackList = + root::nsTArray<root::RefPtr<root::mozilla::dom::FrameRequestCallback>>; + pub const nsIDocument_DeprecatedOperations_eEnablePrivilege: + root::nsIDocument_DeprecatedOperations = 0; + pub const nsIDocument_DeprecatedOperations_eDOMExceptionCode: + root::nsIDocument_DeprecatedOperations = 1; + pub const nsIDocument_DeprecatedOperations_eMutationEvent: + root::nsIDocument_DeprecatedOperations = 2; + pub const nsIDocument_DeprecatedOperations_eComponents: root::nsIDocument_DeprecatedOperations = + 3; + pub const nsIDocument_DeprecatedOperations_ePrefixedVisibilityAPI: + root::nsIDocument_DeprecatedOperations = 4; + pub const nsIDocument_DeprecatedOperations_eNodeIteratorDetach: + root::nsIDocument_DeprecatedOperations = 5; + pub const nsIDocument_DeprecatedOperations_eLenientThis: + root::nsIDocument_DeprecatedOperations = 6; + pub const nsIDocument_DeprecatedOperations_eGetPreventDefault: + root::nsIDocument_DeprecatedOperations = 7; + pub const nsIDocument_DeprecatedOperations_eGetSetUserData: + root::nsIDocument_DeprecatedOperations = 8; + pub const nsIDocument_DeprecatedOperations_eMozGetAsFile: + root::nsIDocument_DeprecatedOperations = 9; + pub const nsIDocument_DeprecatedOperations_eUseOfCaptureEvents: + root::nsIDocument_DeprecatedOperations = 10; + pub const nsIDocument_DeprecatedOperations_eUseOfReleaseEvents: + root::nsIDocument_DeprecatedOperations = 11; + pub const nsIDocument_DeprecatedOperations_eUseOfDOM3LoadMethod: + root::nsIDocument_DeprecatedOperations = 12; + pub const nsIDocument_DeprecatedOperations_eChromeUseOfDOM3LoadMethod: + root::nsIDocument_DeprecatedOperations = 13; + pub const nsIDocument_DeprecatedOperations_eShowModalDialog: + root::nsIDocument_DeprecatedOperations = 14; + pub const nsIDocument_DeprecatedOperations_eSyncXMLHttpRequest: + root::nsIDocument_DeprecatedOperations = 15; + pub const nsIDocument_DeprecatedOperations_eWindow_Cc_ontrollers: + root::nsIDocument_DeprecatedOperations = 16; + pub const nsIDocument_DeprecatedOperations_eImportXULIntoContent: + root::nsIDocument_DeprecatedOperations = 17; + pub const nsIDocument_DeprecatedOperations_ePannerNodeDoppler: + root::nsIDocument_DeprecatedOperations = 18; + pub const nsIDocument_DeprecatedOperations_eNavigatorGetUserMedia: + root::nsIDocument_DeprecatedOperations = 19; + pub const nsIDocument_DeprecatedOperations_eWebrtcDeprecatedPrefix: + root::nsIDocument_DeprecatedOperations = 20; + pub const nsIDocument_DeprecatedOperations_eRTCPeerConnectionGetStreams: + root::nsIDocument_DeprecatedOperations = 21; + pub const nsIDocument_DeprecatedOperations_eAppCache: root::nsIDocument_DeprecatedOperations = + 22; + pub const nsIDocument_DeprecatedOperations_ePrefixedImageSmoothingEnabled: + root::nsIDocument_DeprecatedOperations = 23; + pub const nsIDocument_DeprecatedOperations_ePrefixedFullscreenAPI: + root::nsIDocument_DeprecatedOperations = 24; + pub const nsIDocument_DeprecatedOperations_eLenientSetter: + root::nsIDocument_DeprecatedOperations = 25; + pub const nsIDocument_DeprecatedOperations_eFileLastModifiedDate: + root::nsIDocument_DeprecatedOperations = 26; + pub const nsIDocument_DeprecatedOperations_eImageBitmapRenderingContext_TransferImageBitmap: + root::nsIDocument_DeprecatedOperations = 27; + pub const nsIDocument_DeprecatedOperations_eURLCreateObjectURL_MediaStream: + root::nsIDocument_DeprecatedOperations = 28; + pub const nsIDocument_DeprecatedOperations_eXMLBaseAttribute: + root::nsIDocument_DeprecatedOperations = 29; + pub const nsIDocument_DeprecatedOperations_eWindowContentUntrusted: + root::nsIDocument_DeprecatedOperations = 30; + pub const nsIDocument_DeprecatedOperations_eDeprecatedOperationCount: + root::nsIDocument_DeprecatedOperations = 31; + pub type nsIDocument_DeprecatedOperations = u32; + pub const nsIDocument_DocumentWarnings_eIgnoringWillChangeOverBudget: + root::nsIDocument_DocumentWarnings = 0; + pub const nsIDocument_DocumentWarnings_ePreventDefaultFromPassiveListener: + root::nsIDocument_DocumentWarnings = 1; + pub const nsIDocument_DocumentWarnings_eSVGRefLoop: root::nsIDocument_DocumentWarnings = 2; + pub const nsIDocument_DocumentWarnings_eSVGRefChainLengthExceeded: + root::nsIDocument_DocumentWarnings = 3; + pub const nsIDocument_DocumentWarnings_eDocumentWarningCount: + root::nsIDocument_DocumentWarnings = 4; + pub type nsIDocument_DocumentWarnings = u32; + pub const nsIDocument_ElementCallbackType_eConnected: root::nsIDocument_ElementCallbackType = 0; + pub const nsIDocument_ElementCallbackType_eDisconnected: root::nsIDocument_ElementCallbackType = + 1; + pub const nsIDocument_ElementCallbackType_eAdopted: root::nsIDocument_ElementCallbackType = 2; + pub const nsIDocument_ElementCallbackType_eAttributeChanged: + root::nsIDocument_ElementCallbackType = 3; + pub type nsIDocument_ElementCallbackType = u32; + pub const nsIDocument_eScopedStyle_Unknown: root::nsIDocument__bindgen_ty_1 = 0; + pub const nsIDocument_eScopedStyle_Disabled: root::nsIDocument__bindgen_ty_1 = 1; + pub const nsIDocument_eScopedStyle_Enabled: root::nsIDocument__bindgen_ty_1 = 2; + pub type nsIDocument__bindgen_ty_1 = u32; + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsIDocument_Type { + eUnknown = 0, + eHTML = 1, + eXHTML = 2, + eGenericXML = 3, + eSVG = 4, + eXUL = 5, + } + pub const nsIDocument_Tri_eTriUnset: root::nsIDocument_Tri = 0; + pub const nsIDocument_Tri_eTriFalse: root::nsIDocument_Tri = 1; + pub const nsIDocument_Tri_eTriTrue: root::nsIDocument_Tri = 2; + pub type nsIDocument_Tri = u32; + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDocument_FrameRequest { + _unused: [u8; 0], + } + pub const nsIDocument_kSegmentSize: usize = 128; + #[test] + fn bindgen_test_layout_nsIDocument() { + assert_eq!( + ::std::mem::size_of::<nsIDocument>(), + 928usize, + concat!("Size of: ", stringify!(nsIDocument)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDocument>(), + 8usize, + concat!("Alignment of ", stringify!(nsIDocument)) + ); + } + impl nsIDocument { + #[inline] + pub fn mBidiEnabled(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) } + } + #[inline] + pub fn set_mBidiEnabled(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn mMathMLEnabled(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) } + } + #[inline] + pub fn set_mMathMLEnabled(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(1usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsInitialDocumentInWindow(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsInitialDocumentInWindow(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(2usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIgnoreDocGroupMismatches(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIgnoreDocGroupMismatches(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(3usize, 1u8, val as u64) + } + } + #[inline] + pub fn mLoadedAsData(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) } + } + #[inline] + pub fn set_mLoadedAsData(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(4usize, 1u8, val as u64) + } + } + #[inline] + pub fn mLoadedAsInteractiveData(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) } + } + #[inline] + pub fn set_mLoadedAsInteractiveData(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(5usize, 1u8, val as u64) + } + } + #[inline] + pub fn mMayStartLayout(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) } + } + #[inline] + pub fn set_mMayStartLayout(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(6usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHaveFiredTitleChange(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHaveFiredTitleChange(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(7usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsShowing(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsShowing(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(8usize, 1u8, val as u64) + } + } + #[inline] + pub fn mVisible(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u8) } + } + #[inline] + pub fn set_mVisible(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(9usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasReferrerPolicyCSP(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasReferrerPolicyCSP(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(10usize, 1u8, val as u64) + } + } + #[inline] + pub fn mRemovedFromDocShell(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u8) } + } + #[inline] + pub fn set_mRemovedFromDocShell(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(11usize, 1u8, val as u64) + } + } + #[inline] + pub fn mAllowDNSPrefetch(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u8) } + } + #[inline] + pub fn set_mAllowDNSPrefetch(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(12usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsStaticDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsStaticDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(13usize, 1u8, val as u64) + } + } + #[inline] + pub fn mCreatingStaticClone(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u8) } + } + #[inline] + pub fn set_mCreatingStaticClone(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(14usize, 1u8, val as u64) + } + } + #[inline] + pub fn mInUnlinkOrDeletion(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u8) } + } + #[inline] + pub fn set_mInUnlinkOrDeletion(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(15usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasHadScriptHandlingObject(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(16usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasHadScriptHandlingObject(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(16usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsBeingUsedAsImage(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(17usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsBeingUsedAsImage(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(17usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsSyntheticDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(18usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsSyntheticDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(18usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasLinksToUpdate(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(19usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasLinksToUpdate(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(19usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasLinksToUpdateRunnable(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(20usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasLinksToUpdateRunnable(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(20usize, 1u8, val as u64) + } + } + #[inline] + pub fn mMayHaveDOMMutationObservers(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(21usize, 1u8) as u8) } + } + #[inline] + pub fn set_mMayHaveDOMMutationObservers(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(21usize, 1u8, val as u64) + } + } + #[inline] + pub fn mMayHaveAnimationObservers(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(22usize, 1u8) as u8) } + } + #[inline] + pub fn set_mMayHaveAnimationObservers(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(22usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasMixedActiveContentLoaded(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(23usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasMixedActiveContentLoaded(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(23usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasMixedActiveContentBlocked(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(24usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasMixedActiveContentBlocked(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(24usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasMixedDisplayContentLoaded(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(25usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasMixedDisplayContentLoaded(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(25usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasMixedDisplayContentBlocked(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(26usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasMixedDisplayContentBlocked(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(26usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasMixedContentObjectSubrequest(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(27usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasMixedContentObjectSubrequest(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(27usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasCSP(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(28usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasCSP(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(28usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasUnsafeEvalCSP(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(29usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasUnsafeEvalCSP(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(29usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasUnsafeInlineCSP(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(30usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasUnsafeInlineCSP(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(30usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasTrackingContentBlocked(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(31usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasTrackingContentBlocked(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(31usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasTrackingContentLoaded(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasTrackingContentLoaded(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(32usize, 1u8, val as u64) + } + } + #[inline] + pub fn mBFCacheDisallowed(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(33usize, 1u8) as u8) } + } + #[inline] + pub fn set_mBFCacheDisallowed(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(33usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasHadDefaultView(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(34usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasHadDefaultView(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(34usize, 1u8, val as u64) + } + } + #[inline] + pub fn mStyleSheetChangeEventsEnabled(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(35usize, 1u8) as u8) } + } + #[inline] + pub fn set_mStyleSheetChangeEventsEnabled(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(35usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsSrcdocDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(36usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsSrcdocDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(36usize, 1u8, val as u64) + } + } + #[inline] + pub fn mDidDocumentOpen(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(37usize, 1u8) as u8) } + } + #[inline] + pub fn set_mDidDocumentOpen(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(37usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasDisplayDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(38usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasDisplayDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(38usize, 1u8, val as u64) + } + } + #[inline] + pub fn mFontFaceSetDirty(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(39usize, 1u8) as u8) } + } + #[inline] + pub fn set_mFontFaceSetDirty(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(39usize, 1u8, val as u64) + } + } + #[inline] + pub fn mGetUserFontSetCalled(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(40usize, 1u8) as u8) } + } + #[inline] + pub fn set_mGetUserFontSetCalled(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(40usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPostedFlushUserFontSet(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(41usize, 1u8) as u8) } + } + #[inline] + pub fn set_mPostedFlushUserFontSet(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(41usize, 1u8, val as u64) + } + } + #[inline] + pub fn mDidFireDOMContentLoaded(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(42usize, 1u8) as u8) } + } + #[inline] + pub fn set_mDidFireDOMContentLoaded(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(42usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasScrollLinkedEffect(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(43usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHasScrollLinkedEffect(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(43usize, 1u8, val as u64) + } + } + #[inline] + pub fn mFrameRequestCallbacksScheduled(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(44usize, 1u8) as u8) } + } + #[inline] + pub fn set_mFrameRequestCallbacksScheduled(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(44usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsTopLevelContentDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(45usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsTopLevelContentDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(45usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsContentDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(46usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsContentDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(46usize, 1u8, val as u64) + } + } + #[inline] + pub fn mDidCallBeginLoad(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(47usize, 1u8) as u8) } + } + #[inline] + pub fn set_mDidCallBeginLoad(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(47usize, 1u8, val as u64) + } + } + #[inline] + pub fn mBufferingCSPViolations(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(48usize, 1u8) as u8) } + } + #[inline] + pub fn set_mBufferingCSPViolations(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(48usize, 1u8, val as u64) + } + } + #[inline] + pub fn mAllowPaymentRequest(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(49usize, 1u8) as u8) } + } + #[inline] + pub fn set_mAllowPaymentRequest(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(49usize, 1u8, val as u64) + } + } + #[inline] + pub fn mEncodingMenuDisabled(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(50usize, 1u8) as u8) } + } + #[inline] + pub fn set_mEncodingMenuDisabled(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(50usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsShadowDOMEnabled(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(51usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsShadowDOMEnabled(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(51usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsSVGGlyphsDocument(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(52usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsSVGGlyphsDocument(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(52usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsScopedStyleEnabled(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(53usize, 2u8) as u32) } + } + #[inline] + pub fn set_mIsScopedStyleEnabled(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(53usize, 2u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mBidiEnabled: bool, + mMathMLEnabled: bool, + mIsInitialDocumentInWindow: bool, + mIgnoreDocGroupMismatches: bool, + mLoadedAsData: bool, + mLoadedAsInteractiveData: bool, + mMayStartLayout: bool, + mHaveFiredTitleChange: bool, + mIsShowing: bool, + mVisible: bool, + mHasReferrerPolicyCSP: bool, + mRemovedFromDocShell: bool, + mAllowDNSPrefetch: bool, + mIsStaticDocument: bool, + mCreatingStaticClone: bool, + mInUnlinkOrDeletion: bool, + mHasHadScriptHandlingObject: bool, + mIsBeingUsedAsImage: bool, + mIsSyntheticDocument: bool, + mHasLinksToUpdate: bool, + mHasLinksToUpdateRunnable: bool, + mMayHaveDOMMutationObservers: bool, + mMayHaveAnimationObservers: bool, + mHasMixedActiveContentLoaded: bool, + mHasMixedActiveContentBlocked: bool, + mHasMixedDisplayContentLoaded: bool, + mHasMixedDisplayContentBlocked: bool, + mHasMixedContentObjectSubrequest: bool, + mHasCSP: bool, + mHasUnsafeEvalCSP: bool, + mHasUnsafeInlineCSP: bool, + mHasTrackingContentBlocked: bool, + mHasTrackingContentLoaded: bool, + mBFCacheDisallowed: bool, + mHasHadDefaultView: bool, + mStyleSheetChangeEventsEnabled: bool, + mIsSrcdocDocument: bool, + mDidDocumentOpen: bool, + mHasDisplayDocument: bool, + mFontFaceSetDirty: bool, + mGetUserFontSetCalled: bool, + mPostedFlushUserFontSet: bool, + mDidFireDOMContentLoaded: bool, + mHasScrollLinkedEffect: bool, + mFrameRequestCallbacksScheduled: bool, + mIsTopLevelContentDocument: bool, + mIsContentDocument: bool, + mDidCallBeginLoad: bool, + mBufferingCSPViolations: bool, + mAllowPaymentRequest: bool, + mEncodingMenuDisabled: bool, + mIsShadowDOMEnabled: bool, + mIsSVGGlyphsDocument: bool, + mIsScopedStyleEnabled: ::std::os::raw::c_uint, + ) -> root::__BindgenBitfieldUnit<[u8; 7usize], u8> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 7usize], + u8, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let mBidiEnabled: u8 = unsafe { ::std::mem::transmute(mBidiEnabled) }; + mBidiEnabled as u64 + }); + __bindgen_bitfield_unit.set(1usize, 1u8, { + let mMathMLEnabled: u8 = unsafe { ::std::mem::transmute(mMathMLEnabled) }; + mMathMLEnabled as u64 + }); + __bindgen_bitfield_unit.set(2usize, 1u8, { + let mIsInitialDocumentInWindow: u8 = + unsafe { ::std::mem::transmute(mIsInitialDocumentInWindow) }; + mIsInitialDocumentInWindow as u64 + }); + __bindgen_bitfield_unit.set(3usize, 1u8, { + let mIgnoreDocGroupMismatches: u8 = + unsafe { ::std::mem::transmute(mIgnoreDocGroupMismatches) }; + mIgnoreDocGroupMismatches as u64 + }); + __bindgen_bitfield_unit.set(4usize, 1u8, { + let mLoadedAsData: u8 = unsafe { ::std::mem::transmute(mLoadedAsData) }; + mLoadedAsData as u64 + }); + __bindgen_bitfield_unit.set(5usize, 1u8, { + let mLoadedAsInteractiveData: u8 = + unsafe { ::std::mem::transmute(mLoadedAsInteractiveData) }; + mLoadedAsInteractiveData as u64 + }); + __bindgen_bitfield_unit.set(6usize, 1u8, { + let mMayStartLayout: u8 = unsafe { ::std::mem::transmute(mMayStartLayout) }; + mMayStartLayout as u64 + }); + __bindgen_bitfield_unit.set(7usize, 1u8, { + let mHaveFiredTitleChange: u8 = + unsafe { ::std::mem::transmute(mHaveFiredTitleChange) }; + mHaveFiredTitleChange as u64 + }); + __bindgen_bitfield_unit.set(8usize, 1u8, { + let mIsShowing: u8 = unsafe { ::std::mem::transmute(mIsShowing) }; + mIsShowing as u64 + }); + __bindgen_bitfield_unit.set(9usize, 1u8, { + let mVisible: u8 = unsafe { ::std::mem::transmute(mVisible) }; + mVisible as u64 + }); + __bindgen_bitfield_unit.set(10usize, 1u8, { + let mHasReferrerPolicyCSP: u8 = + unsafe { ::std::mem::transmute(mHasReferrerPolicyCSP) }; + mHasReferrerPolicyCSP as u64 + }); + __bindgen_bitfield_unit.set(11usize, 1u8, { + let mRemovedFromDocShell: u8 = + unsafe { ::std::mem::transmute(mRemovedFromDocShell) }; + mRemovedFromDocShell as u64 + }); + __bindgen_bitfield_unit.set(12usize, 1u8, { + let mAllowDNSPrefetch: u8 = unsafe { ::std::mem::transmute(mAllowDNSPrefetch) }; + mAllowDNSPrefetch as u64 + }); + __bindgen_bitfield_unit.set(13usize, 1u8, { + let mIsStaticDocument: u8 = unsafe { ::std::mem::transmute(mIsStaticDocument) }; + mIsStaticDocument as u64 + }); + __bindgen_bitfield_unit.set(14usize, 1u8, { + let mCreatingStaticClone: u8 = + unsafe { ::std::mem::transmute(mCreatingStaticClone) }; + mCreatingStaticClone as u64 + }); + __bindgen_bitfield_unit.set(15usize, 1u8, { + let mInUnlinkOrDeletion: u8 = unsafe { ::std::mem::transmute(mInUnlinkOrDeletion) }; + mInUnlinkOrDeletion as u64 + }); + __bindgen_bitfield_unit.set(16usize, 1u8, { + let mHasHadScriptHandlingObject: u8 = + unsafe { ::std::mem::transmute(mHasHadScriptHandlingObject) }; + mHasHadScriptHandlingObject as u64 + }); + __bindgen_bitfield_unit.set(17usize, 1u8, { + let mIsBeingUsedAsImage: u8 = unsafe { ::std::mem::transmute(mIsBeingUsedAsImage) }; + mIsBeingUsedAsImage as u64 + }); + __bindgen_bitfield_unit.set(18usize, 1u8, { + let mIsSyntheticDocument: u8 = + unsafe { ::std::mem::transmute(mIsSyntheticDocument) }; + mIsSyntheticDocument as u64 + }); + __bindgen_bitfield_unit.set(19usize, 1u8, { + let mHasLinksToUpdate: u8 = unsafe { ::std::mem::transmute(mHasLinksToUpdate) }; + mHasLinksToUpdate as u64 + }); + __bindgen_bitfield_unit.set(20usize, 1u8, { + let mHasLinksToUpdateRunnable: u8 = + unsafe { ::std::mem::transmute(mHasLinksToUpdateRunnable) }; + mHasLinksToUpdateRunnable as u64 + }); + __bindgen_bitfield_unit.set(21usize, 1u8, { + let mMayHaveDOMMutationObservers: u8 = + unsafe { ::std::mem::transmute(mMayHaveDOMMutationObservers) }; + mMayHaveDOMMutationObservers as u64 + }); + __bindgen_bitfield_unit.set(22usize, 1u8, { + let mMayHaveAnimationObservers: u8 = + unsafe { ::std::mem::transmute(mMayHaveAnimationObservers) }; + mMayHaveAnimationObservers as u64 + }); + __bindgen_bitfield_unit.set(23usize, 1u8, { + let mHasMixedActiveContentLoaded: u8 = + unsafe { ::std::mem::transmute(mHasMixedActiveContentLoaded) }; + mHasMixedActiveContentLoaded as u64 + }); + __bindgen_bitfield_unit.set(24usize, 1u8, { + let mHasMixedActiveContentBlocked: u8 = + unsafe { ::std::mem::transmute(mHasMixedActiveContentBlocked) }; + mHasMixedActiveContentBlocked as u64 + }); + __bindgen_bitfield_unit.set(25usize, 1u8, { + let mHasMixedDisplayContentLoaded: u8 = + unsafe { ::std::mem::transmute(mHasMixedDisplayContentLoaded) }; + mHasMixedDisplayContentLoaded as u64 + }); + __bindgen_bitfield_unit.set(26usize, 1u8, { + let mHasMixedDisplayContentBlocked: u8 = + unsafe { ::std::mem::transmute(mHasMixedDisplayContentBlocked) }; + mHasMixedDisplayContentBlocked as u64 + }); + __bindgen_bitfield_unit.set(27usize, 1u8, { + let mHasMixedContentObjectSubrequest: u8 = + unsafe { ::std::mem::transmute(mHasMixedContentObjectSubrequest) }; + mHasMixedContentObjectSubrequest as u64 + }); + __bindgen_bitfield_unit.set(28usize, 1u8, { + let mHasCSP: u8 = unsafe { ::std::mem::transmute(mHasCSP) }; + mHasCSP as u64 + }); + __bindgen_bitfield_unit.set(29usize, 1u8, { + let mHasUnsafeEvalCSP: u8 = unsafe { ::std::mem::transmute(mHasUnsafeEvalCSP) }; + mHasUnsafeEvalCSP as u64 + }); + __bindgen_bitfield_unit.set(30usize, 1u8, { + let mHasUnsafeInlineCSP: u8 = unsafe { ::std::mem::transmute(mHasUnsafeInlineCSP) }; + mHasUnsafeInlineCSP as u64 + }); + __bindgen_bitfield_unit.set(31usize, 1u8, { + let mHasTrackingContentBlocked: u8 = + unsafe { ::std::mem::transmute(mHasTrackingContentBlocked) }; + mHasTrackingContentBlocked as u64 + }); + __bindgen_bitfield_unit.set(32usize, 1u8, { + let mHasTrackingContentLoaded: u8 = + unsafe { ::std::mem::transmute(mHasTrackingContentLoaded) }; + mHasTrackingContentLoaded as u64 + }); + __bindgen_bitfield_unit.set(33usize, 1u8, { + let mBFCacheDisallowed: u8 = unsafe { ::std::mem::transmute(mBFCacheDisallowed) }; + mBFCacheDisallowed as u64 + }); + __bindgen_bitfield_unit.set(34usize, 1u8, { + let mHasHadDefaultView: u8 = unsafe { ::std::mem::transmute(mHasHadDefaultView) }; + mHasHadDefaultView as u64 + }); + __bindgen_bitfield_unit.set(35usize, 1u8, { + let mStyleSheetChangeEventsEnabled: u8 = + unsafe { ::std::mem::transmute(mStyleSheetChangeEventsEnabled) }; + mStyleSheetChangeEventsEnabled as u64 + }); + __bindgen_bitfield_unit.set(36usize, 1u8, { + let mIsSrcdocDocument: u8 = unsafe { ::std::mem::transmute(mIsSrcdocDocument) }; + mIsSrcdocDocument as u64 + }); + __bindgen_bitfield_unit.set(37usize, 1u8, { + let mDidDocumentOpen: u8 = unsafe { ::std::mem::transmute(mDidDocumentOpen) }; + mDidDocumentOpen as u64 + }); + __bindgen_bitfield_unit.set(38usize, 1u8, { + let mHasDisplayDocument: u8 = unsafe { ::std::mem::transmute(mHasDisplayDocument) }; + mHasDisplayDocument as u64 + }); + __bindgen_bitfield_unit.set(39usize, 1u8, { + let mFontFaceSetDirty: u8 = unsafe { ::std::mem::transmute(mFontFaceSetDirty) }; + mFontFaceSetDirty as u64 + }); + __bindgen_bitfield_unit.set(40usize, 1u8, { + let mGetUserFontSetCalled: u8 = + unsafe { ::std::mem::transmute(mGetUserFontSetCalled) }; + mGetUserFontSetCalled as u64 + }); + __bindgen_bitfield_unit.set(41usize, 1u8, { + let mPostedFlushUserFontSet: u8 = + unsafe { ::std::mem::transmute(mPostedFlushUserFontSet) }; + mPostedFlushUserFontSet as u64 + }); + __bindgen_bitfield_unit.set(42usize, 1u8, { + let mDidFireDOMContentLoaded: u8 = + unsafe { ::std::mem::transmute(mDidFireDOMContentLoaded) }; + mDidFireDOMContentLoaded as u64 + }); + __bindgen_bitfield_unit.set(43usize, 1u8, { + let mHasScrollLinkedEffect: u8 = + unsafe { ::std::mem::transmute(mHasScrollLinkedEffect) }; + mHasScrollLinkedEffect as u64 + }); + __bindgen_bitfield_unit.set(44usize, 1u8, { + let mFrameRequestCallbacksScheduled: u8 = + unsafe { ::std::mem::transmute(mFrameRequestCallbacksScheduled) }; + mFrameRequestCallbacksScheduled as u64 + }); + __bindgen_bitfield_unit.set(45usize, 1u8, { + let mIsTopLevelContentDocument: u8 = + unsafe { ::std::mem::transmute(mIsTopLevelContentDocument) }; + mIsTopLevelContentDocument as u64 + }); + __bindgen_bitfield_unit.set(46usize, 1u8, { + let mIsContentDocument: u8 = unsafe { ::std::mem::transmute(mIsContentDocument) }; + mIsContentDocument as u64 + }); + __bindgen_bitfield_unit.set(47usize, 1u8, { + let mDidCallBeginLoad: u8 = unsafe { ::std::mem::transmute(mDidCallBeginLoad) }; + mDidCallBeginLoad as u64 + }); + __bindgen_bitfield_unit.set(48usize, 1u8, { + let mBufferingCSPViolations: u8 = + unsafe { ::std::mem::transmute(mBufferingCSPViolations) }; + mBufferingCSPViolations as u64 + }); + __bindgen_bitfield_unit.set(49usize, 1u8, { + let mAllowPaymentRequest: u8 = + unsafe { ::std::mem::transmute(mAllowPaymentRequest) }; + mAllowPaymentRequest as u64 + }); + __bindgen_bitfield_unit.set(50usize, 1u8, { + let mEncodingMenuDisabled: u8 = + unsafe { ::std::mem::transmute(mEncodingMenuDisabled) }; + mEncodingMenuDisabled as u64 + }); + __bindgen_bitfield_unit.set(51usize, 1u8, { + let mIsShadowDOMEnabled: u8 = unsafe { ::std::mem::transmute(mIsShadowDOMEnabled) }; + mIsShadowDOMEnabled as u64 + }); + __bindgen_bitfield_unit.set(52usize, 1u8, { + let mIsSVGGlyphsDocument: u8 = + unsafe { ::std::mem::transmute(mIsSVGGlyphsDocument) }; + mIsSVGGlyphsDocument as u64 + }); + __bindgen_bitfield_unit.set(53usize, 2u8, { + let mIsScopedStyleEnabled: u32 = + unsafe { ::std::mem::transmute(mIsScopedStyleEnabled) }; + mIsScopedStyleEnabled as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsBidi { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIPrintSettings { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct gfxTextPerfMetrics { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsTransitionManager { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsAnimationManager { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsDeviceContext { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct gfxMissingFontRecorder { + _unused: [u8; 0], + } + pub const kPresContext_DefaultVariableFont_ID: u8 = 0; + pub const kPresContext_DefaultFixedFont_ID: u8 = 1; + #[repr(C)] + pub struct nsPresContext { + pub _base: root::nsISupports, + pub _base_1: u64, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mType: root::nsPresContext_nsPresContextType, + pub mShell: *mut root::nsIPresShell, + pub mDocument: root::nsCOMPtr, + pub mDeviceContext: root::RefPtr<root::nsDeviceContext>, + pub mEventManager: root::RefPtr<root::mozilla::EventStateManager>, + pub mRefreshDriver: root::RefPtr<root::nsRefreshDriver>, + pub mEffectCompositor: root::RefPtr<root::mozilla::EffectCompositor>, + pub mTransitionManager: root::RefPtr<root::nsTransitionManager>, + pub mAnimationManager: root::RefPtr<root::nsAnimationManager>, + pub mRestyleManager: root::RefPtr<root::mozilla::RestyleManager>, + pub mCounterStyleManager: root::RefPtr<root::mozilla::CounterStyleManager>, + pub mMedium: *mut root::nsAtom, + pub mMediaEmulated: root::RefPtr<root::nsAtom>, + pub mFontFeatureValuesLookup: root::RefPtr<root::gfxFontFeatureValueSet>, + pub mLinkHandler: *mut root::nsILinkHandler, + pub mLanguage: root::RefPtr<root::nsAtom>, + pub mInflationDisabledForShrinkWrap: bool, + pub mContainer: u64, + pub mBaseMinFontSize: i32, + pub mSystemFontScale: f32, + pub mTextZoom: f32, + pub mEffectiveTextZoom: f32, + pub mFullZoom: f32, + pub mOverrideDPPX: f32, + pub mLastFontInflationScreenSize: root::gfxSize, + pub mCurAppUnitsPerDevPixel: i32, + pub mAutoQualityMinFontSizePixelsPref: i32, + pub mTheme: root::nsCOMPtr, + pub mLangService: *mut root::nsLanguageAtomService, + pub mPrintSettings: root::nsCOMPtr, + pub mPrefChangedTimer: root::nsCOMPtr, + pub mBidiEngine: root::mozilla::UniquePtr<root::nsBidi>, + pub mTransactions: [u64; 10usize], + pub mTextPerf: root::nsAutoPtr<root::gfxTextPerfMetrics>, + pub mMissingFonts: root::nsAutoPtr<root::gfxMissingFontRecorder>, + pub mVisibleArea: root::nsRect, + pub mLastResizeEventVisibleArea: root::nsRect, + pub mPageSize: root::nsSize, + pub mPageScale: f32, + pub mPPScale: f32, + pub mDefaultColor: root::nscolor, + pub mBackgroundColor: root::nscolor, + pub mLinkColor: root::nscolor, + pub mActiveLinkColor: root::nscolor, + pub mVisitedLinkColor: root::nscolor, + pub mFocusBackgroundColor: root::nscolor, + pub mFocusTextColor: root::nscolor, + pub mBodyTextColor: root::nscolor, + pub mViewportScrollbarOverrideElement: *mut root::mozilla::dom::Element, + pub mViewportStyleScrollbar: root::nsPresContext_ScrollbarStyles, + pub mFocusRingWidth: u8, + pub mExistThrottledUpdates: bool, + pub mImageAnimationMode: u16, + pub mImageAnimationModePref: u16, + pub mLangGroupFontPrefs: root::nsPresContext_LangGroupFontPrefs, + pub mFontGroupCacheDirty: bool, + pub mLanguagesUsed: [u64; 4usize], + pub mBorderWidthTable: [root::nscoord; 3usize], + pub mInterruptChecksToSkip: u32, + pub mElementsRestyled: u64, + pub mFramesConstructed: u64, + pub mFramesReflowed: u64, + pub mReflowStartTime: root::mozilla::TimeStamp, + pub mFirstNonBlankPaintTime: root::mozilla::TimeStamp, + pub mFirstClickTime: root::mozilla::TimeStamp, + pub mFirstKeyTime: root::mozilla::TimeStamp, + pub mFirstMouseMoveTime: root::mozilla::TimeStamp, + pub mFirstScrollTime: root::mozilla::TimeStamp, + pub mInteractionTimeEnabled: bool, + pub mLastStyleUpdateForAllAnimations: root::mozilla::TimeStamp, + pub mTelemetryScrollLastY: root::nscoord, + pub mTelemetryScrollMaxY: root::nscoord, + pub mTelemetryScrollTotalY: root::nscoord, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 6usize], u8>, + pub __bindgen_padding_0: [u16; 3usize], + } + pub type nsPresContext_Encoding = root::mozilla::Encoding; + pub type nsPresContext_NotNull<T> = root::mozilla::NotNull<T>; + pub type nsPresContext_LangGroupFontPrefs = root::mozilla::LangGroupFontPrefs; + pub type nsPresContext_ScrollbarStyles = root::mozilla::ScrollbarStyles; + pub type nsPresContext_StaticPresData = root::mozilla::StaticPresData; + pub type nsPresContext_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsPresContext_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_nsPresContext_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<nsPresContext_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(nsPresContext_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<nsPresContext_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(nsPresContext_cycleCollection)) + ); + } + impl Clone for nsPresContext_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + pub const nsPresContext_nsPresContextType_eContext_Galley: + root::nsPresContext_nsPresContextType = 0; + pub const nsPresContext_nsPresContextType_eContext_PrintPreview: + root::nsPresContext_nsPresContextType = 1; + pub const nsPresContext_nsPresContextType_eContext_Print: + root::nsPresContext_nsPresContextType = 2; + pub const nsPresContext_nsPresContextType_eContext_PageLayout: + root::nsPresContext_nsPresContextType = 3; + pub type nsPresContext_nsPresContextType = u32; + pub const nsPresContext_InteractionType_eClickInteraction: root::nsPresContext_InteractionType = + 0; + pub const nsPresContext_InteractionType_eKeyInteraction: root::nsPresContext_InteractionType = + 1; + pub const nsPresContext_InteractionType_eMouseMoveInteraction: + root::nsPresContext_InteractionType = 2; + pub const nsPresContext_InteractionType_eScrollInteraction: + root::nsPresContext_InteractionType = 3; + pub type nsPresContext_InteractionType = u32; + /// A class that can be used to temporarily disable reflow interruption. + #[repr(C)] + #[derive(Debug)] + pub struct nsPresContext_InterruptPreventer { + pub mCtx: *mut root::nsPresContext, + pub mInterruptsEnabled: bool, + pub mHasPendingInterrupt: bool, + } + #[test] + fn bindgen_test_layout_nsPresContext_InterruptPreventer() { + assert_eq!( + ::std::mem::size_of::<nsPresContext_InterruptPreventer>(), + 16usize, + concat!("Size of: ", stringify!(nsPresContext_InterruptPreventer)) + ); + assert_eq!( + ::std::mem::align_of::<nsPresContext_InterruptPreventer>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsPresContext_InterruptPreventer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext_InterruptPreventer>())).mCtx as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext_InterruptPreventer), + "::", + stringify!(mCtx) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext_InterruptPreventer>())).mInterruptsEnabled + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext_InterruptPreventer), + "::", + stringify!(mInterruptsEnabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext_InterruptPreventer>())).mHasPendingInterrupt + as *const _ as usize + }, + 9usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext_InterruptPreventer), + "::", + stringify!(mHasPendingInterrupt) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsPresContext_TransactionInvalidations { + pub mTransactionId: u64, + pub mInvalidations: root::nsTArray<root::nsRect>, + } + #[test] + fn bindgen_test_layout_nsPresContext_TransactionInvalidations() { + assert_eq!( + ::std::mem::size_of::<nsPresContext_TransactionInvalidations>(), + 16usize, + concat!( + "Size of: ", + stringify!(nsPresContext_TransactionInvalidations) + ) + ); + assert_eq!( + ::std::mem::align_of::<nsPresContext_TransactionInvalidations>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsPresContext_TransactionInvalidations) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext_TransactionInvalidations>())).mTransactionId + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext_TransactionInvalidations), + "::", + stringify!(mTransactionId) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext_TransactionInvalidations>())).mInvalidations + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext_TransactionInvalidations), + "::", + stringify!(mInvalidations) + ) + ); + } + extern "C" { + #[link_name = "\u{1}_ZN13nsPresContext21_cycleCollectorGlobalE"] + pub static mut nsPresContext__cycleCollectorGlobal: root::nsPresContext_cycleCollection; + } + #[test] + fn bindgen_test_layout_nsPresContext() { + assert_eq!( + ::std::mem::size_of::<nsPresContext>(), + 1376usize, + concat!("Size of: ", stringify!(nsPresContext)) + ); + assert_eq!( + ::std::mem::align_of::<nsPresContext>(), + 8usize, + concat!("Alignment of ", stringify!(nsPresContext)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mRefCnt as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mType as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mShell as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mShell) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mDocument as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mDocument) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mDeviceContext as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mDeviceContext) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mEventManager as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mEventManager) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mRefreshDriver as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mRefreshDriver) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mEffectCompositor as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mEffectCompositor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mTransitionManager as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mTransitionManager) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mAnimationManager as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mAnimationManager) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mRestyleManager as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mRestyleManager) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mCounterStyleManager as *const _ as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mCounterStyleManager) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mMedium as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mMedium) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mMediaEmulated as *const _ as usize + }, + 120usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mMediaEmulated) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFontFeatureValuesLookup as *const _ + as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFontFeatureValuesLookup) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mLinkHandler as *const _ as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLinkHandler) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mLanguage as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLanguage) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mInflationDisabledForShrinkWrap + as *const _ as usize + }, + 152usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mInflationDisabledForShrinkWrap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mContainer as *const _ as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mContainer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mBaseMinFontSize as *const _ as usize + }, + 168usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mBaseMinFontSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mSystemFontScale as *const _ as usize + }, + 172usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mSystemFontScale) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mTextZoom as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mTextZoom) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mEffectiveTextZoom as *const _ as usize + }, + 180usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mEffectiveTextZoom) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mFullZoom as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFullZoom) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mOverrideDPPX as *const _ as usize }, + 188usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mOverrideDPPX) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mLastFontInflationScreenSize as *const _ + as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLastFontInflationScreenSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mCurAppUnitsPerDevPixel as *const _ + as usize + }, + 208usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mCurAppUnitsPerDevPixel) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mAutoQualityMinFontSizePixelsPref + as *const _ as usize + }, + 212usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mAutoQualityMinFontSizePixelsPref) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mTheme as *const _ as usize }, + 216usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mTheme) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mLangService as *const _ as usize }, + 224usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLangService) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mPrintSettings as *const _ as usize + }, + 232usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mPrintSettings) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mPrefChangedTimer as *const _ as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mPrefChangedTimer) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mBidiEngine as *const _ as usize }, + 248usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mBidiEngine) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mTransactions as *const _ as usize }, + 256usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mTransactions) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mTextPerf as *const _ as usize }, + 336usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mTextPerf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mMissingFonts as *const _ as usize }, + 344usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mMissingFonts) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mVisibleArea as *const _ as usize }, + 352usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mVisibleArea) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mLastResizeEventVisibleArea as *const _ + as usize + }, + 368usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLastResizeEventVisibleArea) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mPageSize as *const _ as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mPageSize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mPageScale as *const _ as usize }, + 392usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mPageScale) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mPPScale as *const _ as usize }, + 396usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mPPScale) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mDefaultColor as *const _ as usize }, + 400usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mDefaultColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mBackgroundColor as *const _ as usize + }, + 404usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mBackgroundColor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mLinkColor as *const _ as usize }, + 408usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLinkColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mActiveLinkColor as *const _ as usize + }, + 412usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mActiveLinkColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mVisitedLinkColor as *const _ as usize + }, + 416usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mVisitedLinkColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFocusBackgroundColor as *const _ as usize + }, + 420usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFocusBackgroundColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFocusTextColor as *const _ as usize + }, + 424usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFocusTextColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mBodyTextColor as *const _ as usize + }, + 428usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mBodyTextColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mViewportScrollbarOverrideElement + as *const _ as usize + }, + 432usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mViewportScrollbarOverrideElement) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mViewportStyleScrollbar as *const _ + as usize + }, + 440usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mViewportStyleScrollbar) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFocusRingWidth as *const _ as usize + }, + 504usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFocusRingWidth) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mExistThrottledUpdates as *const _ + as usize + }, + 505usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mExistThrottledUpdates) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mImageAnimationMode as *const _ as usize + }, + 506usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mImageAnimationMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mImageAnimationModePref as *const _ + as usize + }, + 508usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mImageAnimationModePref) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mLangGroupFontPrefs as *const _ as usize + }, + 512usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLangGroupFontPrefs) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFontGroupCacheDirty as *const _ as usize + }, + 1208usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFontGroupCacheDirty) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mLanguagesUsed as *const _ as usize + }, + 1216usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLanguagesUsed) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mBorderWidthTable as *const _ as usize + }, + 1248usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mBorderWidthTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mInterruptChecksToSkip as *const _ + as usize + }, + 1260usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mInterruptChecksToSkip) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mElementsRestyled as *const _ as usize + }, + 1264usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mElementsRestyled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFramesConstructed as *const _ as usize + }, + 1272usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFramesConstructed) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFramesReflowed as *const _ as usize + }, + 1280usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFramesReflowed) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mReflowStartTime as *const _ as usize + }, + 1288usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mReflowStartTime) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFirstNonBlankPaintTime as *const _ + as usize + }, + 1296usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFirstNonBlankPaintTime) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFirstClickTime as *const _ as usize + }, + 1304usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFirstClickTime) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPresContext>())).mFirstKeyTime as *const _ as usize }, + 1312usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFirstKeyTime) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFirstMouseMoveTime as *const _ as usize + }, + 1320usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFirstMouseMoveTime) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mFirstScrollTime as *const _ as usize + }, + 1328usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mFirstScrollTime) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mInteractionTimeEnabled as *const _ + as usize + }, + 1336usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mInteractionTimeEnabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mLastStyleUpdateForAllAnimations + as *const _ as usize + }, + 1344usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mLastStyleUpdateForAllAnimations) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mTelemetryScrollLastY as *const _ as usize + }, + 1352usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mTelemetryScrollLastY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mTelemetryScrollMaxY as *const _ as usize + }, + 1356usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mTelemetryScrollMaxY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsPresContext>())).mTelemetryScrollTotalY as *const _ + as usize + }, + 1360usize, + concat!( + "Offset of field: ", + stringify!(nsPresContext), + "::", + stringify!(mTelemetryScrollTotalY) + ) + ); + } + impl nsPresContext { + #[inline] + pub fn mHasPendingInterrupt(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } + } + #[inline] + pub fn set_mHasPendingInterrupt(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPendingInterruptFromTest(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPendingInterruptFromTest(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(1usize, 1u8, val as u64) + } + } + #[inline] + pub fn mInterruptsEnabled(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) } + } + #[inline] + pub fn set_mInterruptsEnabled(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(2usize, 1u8, val as u64) + } + } + #[inline] + pub fn mUseDocumentFonts(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) } + } + #[inline] + pub fn set_mUseDocumentFonts(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(3usize, 1u8, val as u64) + } + } + #[inline] + pub fn mUseDocumentColors(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) } + } + #[inline] + pub fn set_mUseDocumentColors(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(4usize, 1u8, val as u64) + } + } + #[inline] + pub fn mUnderlineLinks(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) } + } + #[inline] + pub fn set_mUnderlineLinks(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(5usize, 1u8, val as u64) + } + } + #[inline] + pub fn mSendAfterPaintToContent(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) } + } + #[inline] + pub fn set_mSendAfterPaintToContent(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(6usize, 1u8, val as u64) + } + } + #[inline] + pub fn mUseFocusColors(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) } + } + #[inline] + pub fn set_mUseFocusColors(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(7usize, 1u8, val as u64) + } + } + #[inline] + pub fn mFocusRingOnAnything(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u32) } + } + #[inline] + pub fn set_mFocusRingOnAnything(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(8usize, 1u8, val as u64) + } + } + #[inline] + pub fn mFocusRingStyle(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u32) } + } + #[inline] + pub fn set_mFocusRingStyle(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(9usize, 1u8, val as u64) + } + } + #[inline] + pub fn mDrawImageBackground(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u32) } + } + #[inline] + pub fn set_mDrawImageBackground(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(10usize, 1u8, val as u64) + } + } + #[inline] + pub fn mDrawColorBackground(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u32) } + } + #[inline] + pub fn set_mDrawColorBackground(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(11usize, 1u8, val as u64) + } + } + #[inline] + pub fn mNeverAnimate(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u32) } + } + #[inline] + pub fn set_mNeverAnimate(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(12usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsRenderingOnlySelection(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u32) } + } + #[inline] + pub fn set_mIsRenderingOnlySelection(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(13usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPaginated(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPaginated(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(14usize, 1u8, val as u64) + } + } + #[inline] + pub fn mCanPaginatedScroll(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u32) } + } + #[inline] + pub fn set_mCanPaginatedScroll(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(15usize, 1u8, val as u64) + } + } + #[inline] + pub fn mDoScaledTwips(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(16usize, 1u8) as u32) } + } + #[inline] + pub fn set_mDoScaledTwips(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(16usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsRootPaginatedDocument(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(17usize, 1u8) as u32) } + } + #[inline] + pub fn set_mIsRootPaginatedDocument(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(17usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPrefBidiDirection(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(18usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPrefBidiDirection(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(18usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPrefScrollbarSide(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(19usize, 2u8) as u32) } + } + #[inline] + pub fn set_mPrefScrollbarSide(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(19usize, 2u8, val as u64) + } + } + #[inline] + pub fn mPendingSysColorChanged(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(21usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPendingSysColorChanged(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(21usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPendingThemeChanged(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(22usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPendingThemeChanged(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(22usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPendingUIResolutionChanged(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(23usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPendingUIResolutionChanged(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(23usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPendingMediaFeatureValuesChanged(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(24usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPendingMediaFeatureValuesChanged(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(24usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPrefChangePendingNeedsReflow(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(25usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPrefChangePendingNeedsReflow(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(25usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsEmulatingMedia(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(26usize, 1u8) as u32) } + } + #[inline] + pub fn set_mIsEmulatingMedia(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(26usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsGlyph(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(27usize, 1u8) as u32) } + } + #[inline] + pub fn set_mIsGlyph(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(27usize, 1u8, val as u64) + } + } + #[inline] + pub fn mUsesRootEMUnits(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(28usize, 1u8) as u32) } + } + #[inline] + pub fn set_mUsesRootEMUnits(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(28usize, 1u8, val as u64) + } + } + #[inline] + pub fn mUsesExChUnits(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(29usize, 1u8) as u32) } + } + #[inline] + pub fn set_mUsesExChUnits(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(29usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPendingViewportChange(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(30usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPendingViewportChange(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(30usize, 1u8, val as u64) + } + } + #[inline] + pub fn mCounterStylesDirty(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(31usize, 1u8) as u32) } + } + #[inline] + pub fn set_mCounterStylesDirty(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(31usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPostedFlushCounterStyles(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(32usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPostedFlushCounterStyles(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(32usize, 1u8, val as u64) + } + } + #[inline] + pub fn mFontFeatureValuesDirty(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(33usize, 1u8) as u32) } + } + #[inline] + pub fn set_mFontFeatureValuesDirty(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(33usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPostedFlushFontFeatureValues(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(34usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPostedFlushFontFeatureValues(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(34usize, 1u8, val as u64) + } + } + #[inline] + pub fn mSuppressResizeReflow(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(35usize, 1u8) as u32) } + } + #[inline] + pub fn set_mSuppressResizeReflow(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(35usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsVisual(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(36usize, 1u8) as u32) } + } + #[inline] + pub fn set_mIsVisual(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(36usize, 1u8, val as u64) + } + } + #[inline] + pub fn mFireAfterPaintEvents(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(37usize, 1u8) as u32) } + } + #[inline] + pub fn set_mFireAfterPaintEvents(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(37usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsChrome(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(38usize, 1u8) as u32) } + } + #[inline] + pub fn set_mIsChrome(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(38usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsChromeOriginImage(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(39usize, 1u8) as u32) } + } + #[inline] + pub fn set_mIsChromeOriginImage(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(39usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPaintFlashing(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(40usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPaintFlashing(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(40usize, 1u8, val as u64) + } + } + #[inline] + pub fn mPaintFlashingInitialized(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(41usize, 1u8) as u32) } + } + #[inline] + pub fn set_mPaintFlashingInitialized(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(41usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasWarnedAboutPositionedTableParts(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(42usize, 1u8) as u32) } + } + #[inline] + pub fn set_mHasWarnedAboutPositionedTableParts(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(42usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHasWarnedAboutTooLargeDashedOrDottedRadius(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(43usize, 1u8) as u32) } + } + #[inline] + pub fn set_mHasWarnedAboutTooLargeDashedOrDottedRadius( + &mut self, + val: ::std::os::raw::c_uint, + ) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(43usize, 1u8, val as u64) + } + } + #[inline] + pub fn mQuirkSheetAdded(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(44usize, 1u8) as u32) } + } + #[inline] + pub fn set_mQuirkSheetAdded(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(44usize, 1u8, val as u64) + } + } + #[inline] + pub fn mNeedsPrefUpdate(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(45usize, 1u8) as u32) } + } + #[inline] + pub fn set_mNeedsPrefUpdate(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(45usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHadNonBlankPaint(&self) -> ::std::os::raw::c_uint { + unsafe { ::std::mem::transmute(self._bitfield_1.get(46usize, 1u8) as u32) } + } + #[inline] + pub fn set_mHadNonBlankPaint(&mut self, val: ::std::os::raw::c_uint) { + unsafe { + let val: u32 = ::std::mem::transmute(val); + self._bitfield_1.set(46usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mHasPendingInterrupt: ::std::os::raw::c_uint, + mPendingInterruptFromTest: ::std::os::raw::c_uint, + mInterruptsEnabled: ::std::os::raw::c_uint, + mUseDocumentFonts: ::std::os::raw::c_uint, + mUseDocumentColors: ::std::os::raw::c_uint, + mUnderlineLinks: ::std::os::raw::c_uint, + mSendAfterPaintToContent: ::std::os::raw::c_uint, + mUseFocusColors: ::std::os::raw::c_uint, + mFocusRingOnAnything: ::std::os::raw::c_uint, + mFocusRingStyle: ::std::os::raw::c_uint, + mDrawImageBackground: ::std::os::raw::c_uint, + mDrawColorBackground: ::std::os::raw::c_uint, + mNeverAnimate: ::std::os::raw::c_uint, + mIsRenderingOnlySelection: ::std::os::raw::c_uint, + mPaginated: ::std::os::raw::c_uint, + mCanPaginatedScroll: ::std::os::raw::c_uint, + mDoScaledTwips: ::std::os::raw::c_uint, + mIsRootPaginatedDocument: ::std::os::raw::c_uint, + mPrefBidiDirection: ::std::os::raw::c_uint, + mPrefScrollbarSide: ::std::os::raw::c_uint, + mPendingSysColorChanged: ::std::os::raw::c_uint, + mPendingThemeChanged: ::std::os::raw::c_uint, + mPendingUIResolutionChanged: ::std::os::raw::c_uint, + mPendingMediaFeatureValuesChanged: ::std::os::raw::c_uint, + mPrefChangePendingNeedsReflow: ::std::os::raw::c_uint, + mIsEmulatingMedia: ::std::os::raw::c_uint, + mIsGlyph: ::std::os::raw::c_uint, + mUsesRootEMUnits: ::std::os::raw::c_uint, + mUsesExChUnits: ::std::os::raw::c_uint, + mPendingViewportChange: ::std::os::raw::c_uint, + mCounterStylesDirty: ::std::os::raw::c_uint, + mPostedFlushCounterStyles: ::std::os::raw::c_uint, + mFontFeatureValuesDirty: ::std::os::raw::c_uint, + mPostedFlushFontFeatureValues: ::std::os::raw::c_uint, + mSuppressResizeReflow: ::std::os::raw::c_uint, + mIsVisual: ::std::os::raw::c_uint, + mFireAfterPaintEvents: ::std::os::raw::c_uint, + mIsChrome: ::std::os::raw::c_uint, + mIsChromeOriginImage: ::std::os::raw::c_uint, + mPaintFlashing: ::std::os::raw::c_uint, + mPaintFlashingInitialized: ::std::os::raw::c_uint, + mHasWarnedAboutPositionedTableParts: ::std::os::raw::c_uint, + mHasWarnedAboutTooLargeDashedOrDottedRadius: ::std::os::raw::c_uint, + mQuirkSheetAdded: ::std::os::raw::c_uint, + mNeedsPrefUpdate: ::std::os::raw::c_uint, + mHadNonBlankPaint: ::std::os::raw::c_uint, + ) -> root::__BindgenBitfieldUnit<[u8; 6usize], u8> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 6usize], + u8, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let mHasPendingInterrupt: u32 = + unsafe { ::std::mem::transmute(mHasPendingInterrupt) }; + mHasPendingInterrupt as u64 + }); + __bindgen_bitfield_unit.set(1usize, 1u8, { + let mPendingInterruptFromTest: u32 = + unsafe { ::std::mem::transmute(mPendingInterruptFromTest) }; + mPendingInterruptFromTest as u64 + }); + __bindgen_bitfield_unit.set(2usize, 1u8, { + let mInterruptsEnabled: u32 = unsafe { ::std::mem::transmute(mInterruptsEnabled) }; + mInterruptsEnabled as u64 + }); + __bindgen_bitfield_unit.set(3usize, 1u8, { + let mUseDocumentFonts: u32 = unsafe { ::std::mem::transmute(mUseDocumentFonts) }; + mUseDocumentFonts as u64 + }); + __bindgen_bitfield_unit.set(4usize, 1u8, { + let mUseDocumentColors: u32 = unsafe { ::std::mem::transmute(mUseDocumentColors) }; + mUseDocumentColors as u64 + }); + __bindgen_bitfield_unit.set(5usize, 1u8, { + let mUnderlineLinks: u32 = unsafe { ::std::mem::transmute(mUnderlineLinks) }; + mUnderlineLinks as u64 + }); + __bindgen_bitfield_unit.set(6usize, 1u8, { + let mSendAfterPaintToContent: u32 = + unsafe { ::std::mem::transmute(mSendAfterPaintToContent) }; + mSendAfterPaintToContent as u64 + }); + __bindgen_bitfield_unit.set(7usize, 1u8, { + let mUseFocusColors: u32 = unsafe { ::std::mem::transmute(mUseFocusColors) }; + mUseFocusColors as u64 + }); + __bindgen_bitfield_unit.set(8usize, 1u8, { + let mFocusRingOnAnything: u32 = + unsafe { ::std::mem::transmute(mFocusRingOnAnything) }; + mFocusRingOnAnything as u64 + }); + __bindgen_bitfield_unit.set(9usize, 1u8, { + let mFocusRingStyle: u32 = unsafe { ::std::mem::transmute(mFocusRingStyle) }; + mFocusRingStyle as u64 + }); + __bindgen_bitfield_unit.set(10usize, 1u8, { + let mDrawImageBackground: u32 = + unsafe { ::std::mem::transmute(mDrawImageBackground) }; + mDrawImageBackground as u64 + }); + __bindgen_bitfield_unit.set(11usize, 1u8, { + let mDrawColorBackground: u32 = + unsafe { ::std::mem::transmute(mDrawColorBackground) }; + mDrawColorBackground as u64 + }); + __bindgen_bitfield_unit.set(12usize, 1u8, { + let mNeverAnimate: u32 = unsafe { ::std::mem::transmute(mNeverAnimate) }; + mNeverAnimate as u64 + }); + __bindgen_bitfield_unit.set(13usize, 1u8, { + let mIsRenderingOnlySelection: u32 = + unsafe { ::std::mem::transmute(mIsRenderingOnlySelection) }; + mIsRenderingOnlySelection as u64 + }); + __bindgen_bitfield_unit.set(14usize, 1u8, { + let mPaginated: u32 = unsafe { ::std::mem::transmute(mPaginated) }; + mPaginated as u64 + }); + __bindgen_bitfield_unit.set(15usize, 1u8, { + let mCanPaginatedScroll: u32 = + unsafe { ::std::mem::transmute(mCanPaginatedScroll) }; + mCanPaginatedScroll as u64 + }); + __bindgen_bitfield_unit.set(16usize, 1u8, { + let mDoScaledTwips: u32 = unsafe { ::std::mem::transmute(mDoScaledTwips) }; + mDoScaledTwips as u64 + }); + __bindgen_bitfield_unit.set(17usize, 1u8, { + let mIsRootPaginatedDocument: u32 = + unsafe { ::std::mem::transmute(mIsRootPaginatedDocument) }; + mIsRootPaginatedDocument as u64 + }); + __bindgen_bitfield_unit.set(18usize, 1u8, { + let mPrefBidiDirection: u32 = unsafe { ::std::mem::transmute(mPrefBidiDirection) }; + mPrefBidiDirection as u64 + }); + __bindgen_bitfield_unit.set(19usize, 2u8, { + let mPrefScrollbarSide: u32 = unsafe { ::std::mem::transmute(mPrefScrollbarSide) }; + mPrefScrollbarSide as u64 + }); + __bindgen_bitfield_unit.set(21usize, 1u8, { + let mPendingSysColorChanged: u32 = + unsafe { ::std::mem::transmute(mPendingSysColorChanged) }; + mPendingSysColorChanged as u64 + }); + __bindgen_bitfield_unit.set(22usize, 1u8, { + let mPendingThemeChanged: u32 = + unsafe { ::std::mem::transmute(mPendingThemeChanged) }; + mPendingThemeChanged as u64 + }); + __bindgen_bitfield_unit.set(23usize, 1u8, { + let mPendingUIResolutionChanged: u32 = + unsafe { ::std::mem::transmute(mPendingUIResolutionChanged) }; + mPendingUIResolutionChanged as u64 + }); + __bindgen_bitfield_unit.set(24usize, 1u8, { + let mPendingMediaFeatureValuesChanged: u32 = + unsafe { ::std::mem::transmute(mPendingMediaFeatureValuesChanged) }; + mPendingMediaFeatureValuesChanged as u64 + }); + __bindgen_bitfield_unit.set(25usize, 1u8, { + let mPrefChangePendingNeedsReflow: u32 = + unsafe { ::std::mem::transmute(mPrefChangePendingNeedsReflow) }; + mPrefChangePendingNeedsReflow as u64 + }); + __bindgen_bitfield_unit.set(26usize, 1u8, { + let mIsEmulatingMedia: u32 = unsafe { ::std::mem::transmute(mIsEmulatingMedia) }; + mIsEmulatingMedia as u64 + }); + __bindgen_bitfield_unit.set(27usize, 1u8, { + let mIsGlyph: u32 = unsafe { ::std::mem::transmute(mIsGlyph) }; + mIsGlyph as u64 + }); + __bindgen_bitfield_unit.set(28usize, 1u8, { + let mUsesRootEMUnits: u32 = unsafe { ::std::mem::transmute(mUsesRootEMUnits) }; + mUsesRootEMUnits as u64 + }); + __bindgen_bitfield_unit.set(29usize, 1u8, { + let mUsesExChUnits: u32 = unsafe { ::std::mem::transmute(mUsesExChUnits) }; + mUsesExChUnits as u64 + }); + __bindgen_bitfield_unit.set(30usize, 1u8, { + let mPendingViewportChange: u32 = + unsafe { ::std::mem::transmute(mPendingViewportChange) }; + mPendingViewportChange as u64 + }); + __bindgen_bitfield_unit.set(31usize, 1u8, { + let mCounterStylesDirty: u32 = + unsafe { ::std::mem::transmute(mCounterStylesDirty) }; + mCounterStylesDirty as u64 + }); + __bindgen_bitfield_unit.set(32usize, 1u8, { + let mPostedFlushCounterStyles: u32 = + unsafe { ::std::mem::transmute(mPostedFlushCounterStyles) }; + mPostedFlushCounterStyles as u64 + }); + __bindgen_bitfield_unit.set(33usize, 1u8, { + let mFontFeatureValuesDirty: u32 = + unsafe { ::std::mem::transmute(mFontFeatureValuesDirty) }; + mFontFeatureValuesDirty as u64 + }); + __bindgen_bitfield_unit.set(34usize, 1u8, { + let mPostedFlushFontFeatureValues: u32 = + unsafe { ::std::mem::transmute(mPostedFlushFontFeatureValues) }; + mPostedFlushFontFeatureValues as u64 + }); + __bindgen_bitfield_unit.set(35usize, 1u8, { + let mSuppressResizeReflow: u32 = + unsafe { ::std::mem::transmute(mSuppressResizeReflow) }; + mSuppressResizeReflow as u64 + }); + __bindgen_bitfield_unit.set(36usize, 1u8, { + let mIsVisual: u32 = unsafe { ::std::mem::transmute(mIsVisual) }; + mIsVisual as u64 + }); + __bindgen_bitfield_unit.set(37usize, 1u8, { + let mFireAfterPaintEvents: u32 = + unsafe { ::std::mem::transmute(mFireAfterPaintEvents) }; + mFireAfterPaintEvents as u64 + }); + __bindgen_bitfield_unit.set(38usize, 1u8, { + let mIsChrome: u32 = unsafe { ::std::mem::transmute(mIsChrome) }; + mIsChrome as u64 + }); + __bindgen_bitfield_unit.set(39usize, 1u8, { + let mIsChromeOriginImage: u32 = + unsafe { ::std::mem::transmute(mIsChromeOriginImage) }; + mIsChromeOriginImage as u64 + }); + __bindgen_bitfield_unit.set(40usize, 1u8, { + let mPaintFlashing: u32 = unsafe { ::std::mem::transmute(mPaintFlashing) }; + mPaintFlashing as u64 + }); + __bindgen_bitfield_unit.set(41usize, 1u8, { + let mPaintFlashingInitialized: u32 = + unsafe { ::std::mem::transmute(mPaintFlashingInitialized) }; + mPaintFlashingInitialized as u64 + }); + __bindgen_bitfield_unit.set(42usize, 1u8, { + let mHasWarnedAboutPositionedTableParts: u32 = + unsafe { ::std::mem::transmute(mHasWarnedAboutPositionedTableParts) }; + mHasWarnedAboutPositionedTableParts as u64 + }); + __bindgen_bitfield_unit.set(43usize, 1u8, { + let mHasWarnedAboutTooLargeDashedOrDottedRadius: u32 = + unsafe { ::std::mem::transmute(mHasWarnedAboutTooLargeDashedOrDottedRadius) }; + mHasWarnedAboutTooLargeDashedOrDottedRadius as u64 + }); + __bindgen_bitfield_unit.set(44usize, 1u8, { + let mQuirkSheetAdded: u32 = unsafe { ::std::mem::transmute(mQuirkSheetAdded) }; + mQuirkSheetAdded as u64 + }); + __bindgen_bitfield_unit.set(45usize, 1u8, { + let mNeedsPrefUpdate: u32 = unsafe { ::std::mem::transmute(mNeedsPrefUpdate) }; + mNeedsPrefUpdate as u64 + }); + __bindgen_bitfield_unit.set(46usize, 1u8, { + let mHadNonBlankPaint: u32 = unsafe { ::std::mem::transmute(mHadNonBlankPaint) }; + mHadNonBlankPaint as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(i16)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsCSSKeyword { + eCSSKeyword_UNKNOWN = -1, + eCSSKeyword__moz_activehyperlinktext = 0, + eCSSKeyword__moz_all = 1, + eCSSKeyword__moz_alt_content = 2, + eCSSKeyword__moz_available = 3, + eCSSKeyword__moz_box = 4, + eCSSKeyword__moz_button = 5, + eCSSKeyword__moz_buttondefault = 6, + eCSSKeyword__moz_buttonhoverface = 7, + eCSSKeyword__moz_buttonhovertext = 8, + eCSSKeyword__moz_cellhighlight = 9, + eCSSKeyword__moz_cellhighlighttext = 10, + eCSSKeyword__moz_center = 11, + eCSSKeyword__moz_combobox = 12, + eCSSKeyword__moz_comboboxtext = 13, + eCSSKeyword__moz_context_properties = 14, + eCSSKeyword__moz_block_height = 15, + eCSSKeyword__moz_deck = 16, + eCSSKeyword__moz_default_background_color = 17, + eCSSKeyword__moz_default_color = 18, + eCSSKeyword__moz_desktop = 19, + eCSSKeyword__moz_dialog = 20, + eCSSKeyword__moz_dialogtext = 21, + eCSSKeyword__moz_document = 22, + eCSSKeyword__moz_dragtargetzone = 23, + eCSSKeyword__moz_element = 24, + eCSSKeyword__moz_eventreerow = 25, + eCSSKeyword__moz_field = 26, + eCSSKeyword__moz_fieldtext = 27, + eCSSKeyword__moz_fit_content = 28, + eCSSKeyword__moz_fixed = 29, + eCSSKeyword__moz_grabbing = 30, + eCSSKeyword__moz_grab = 31, + eCSSKeyword__moz_grid_group = 32, + eCSSKeyword__moz_grid_line = 33, + eCSSKeyword__moz_grid = 34, + eCSSKeyword__moz_groupbox = 35, + eCSSKeyword__moz_gtk_info_bar = 36, + eCSSKeyword__moz_gtk_info_bar_text = 37, + eCSSKeyword__moz_hidden_unscrollable = 38, + eCSSKeyword__moz_hyperlinktext = 39, + eCSSKeyword__moz_html_cellhighlight = 40, + eCSSKeyword__moz_html_cellhighlighttext = 41, + eCSSKeyword__moz_image_rect = 42, + eCSSKeyword__moz_info = 43, + eCSSKeyword__moz_inline_box = 44, + eCSSKeyword__moz_inline_grid = 45, + eCSSKeyword__moz_inline_stack = 46, + eCSSKeyword__moz_left = 47, + eCSSKeyword__moz_list = 48, + eCSSKeyword__moz_mac_buttonactivetext = 49, + eCSSKeyword__moz_mac_chrome_active = 50, + eCSSKeyword__moz_mac_chrome_inactive = 51, + eCSSKeyword__moz_mac_defaultbuttontext = 52, + eCSSKeyword__moz_mac_focusring = 53, + eCSSKeyword__moz_mac_fullscreen_button = 54, + eCSSKeyword__moz_mac_menuselect = 55, + eCSSKeyword__moz_mac_menushadow = 56, + eCSSKeyword__moz_mac_menutextdisable = 57, + eCSSKeyword__moz_mac_menutextselect = 58, + eCSSKeyword__moz_mac_disabledtoolbartext = 59, + eCSSKeyword__moz_mac_secondaryhighlight = 60, + eCSSKeyword__moz_mac_menuitem = 61, + eCSSKeyword__moz_mac_active_menuitem = 62, + eCSSKeyword__moz_mac_menupopup = 63, + eCSSKeyword__moz_mac_tooltip = 64, + eCSSKeyword__moz_max_content = 65, + eCSSKeyword__moz_menuhover = 66, + eCSSKeyword__moz_menuhovertext = 67, + eCSSKeyword__moz_menubartext = 68, + eCSSKeyword__moz_menubarhovertext = 69, + eCSSKeyword__moz_middle_with_baseline = 70, + eCSSKeyword__moz_min_content = 71, + eCSSKeyword__moz_nativehyperlinktext = 72, + eCSSKeyword__moz_none = 73, + eCSSKeyword__moz_oddtreerow = 74, + eCSSKeyword__moz_popup = 75, + eCSSKeyword__moz_pre_space = 76, + eCSSKeyword__moz_pull_down_menu = 77, + eCSSKeyword__moz_right = 78, + eCSSKeyword__moz_scrollbars_horizontal = 79, + eCSSKeyword__moz_scrollbars_none = 80, + eCSSKeyword__moz_scrollbars_vertical = 81, + eCSSKeyword__moz_stack = 82, + eCSSKeyword__moz_text = 83, + eCSSKeyword__moz_use_system_font = 84, + eCSSKeyword__moz_visitedhyperlinktext = 85, + eCSSKeyword__moz_window = 86, + eCSSKeyword__moz_workspace = 87, + eCSSKeyword__moz_zoom_in = 88, + eCSSKeyword__moz_zoom_out = 89, + eCSSKeyword__webkit_box = 90, + eCSSKeyword__webkit_flex = 91, + eCSSKeyword__webkit_inline_box = 92, + eCSSKeyword__webkit_inline_flex = 93, + eCSSKeyword_absolute = 94, + eCSSKeyword_active = 95, + eCSSKeyword_activeborder = 96, + eCSSKeyword_activecaption = 97, + eCSSKeyword_add = 98, + eCSSKeyword_additive = 99, + eCSSKeyword_alias = 100, + eCSSKeyword_all = 101, + eCSSKeyword_all_petite_caps = 102, + eCSSKeyword_all_scroll = 103, + eCSSKeyword_all_small_caps = 104, + eCSSKeyword_alpha = 105, + eCSSKeyword_alternate = 106, + eCSSKeyword_alternate_reverse = 107, + eCSSKeyword_always = 108, + eCSSKeyword_annotation = 109, + eCSSKeyword_appworkspace = 110, + eCSSKeyword_auto = 111, + eCSSKeyword_auto_fill = 112, + eCSSKeyword_auto_fit = 113, + eCSSKeyword_auto_flow = 114, + eCSSKeyword_avoid = 115, + eCSSKeyword_background = 116, + eCSSKeyword_backwards = 117, + eCSSKeyword_balance = 118, + eCSSKeyword_baseline = 119, + eCSSKeyword_bidi_override = 120, + eCSSKeyword_blink = 121, + eCSSKeyword_block = 122, + eCSSKeyword_block_axis = 123, + eCSSKeyword_blur = 124, + eCSSKeyword_bold = 125, + eCSSKeyword_bold_fraktur = 126, + eCSSKeyword_bold_italic = 127, + eCSSKeyword_bold_sans_serif = 128, + eCSSKeyword_bold_script = 129, + eCSSKeyword_bolder = 130, + eCSSKeyword_border_box = 131, + eCSSKeyword_both = 132, + eCSSKeyword_bottom = 133, + eCSSKeyword_bottom_outside = 134, + eCSSKeyword_break_all = 135, + eCSSKeyword_break_word = 136, + eCSSKeyword_brightness = 137, + eCSSKeyword_browser = 138, + eCSSKeyword_bullets = 139, + eCSSKeyword_button = 140, + eCSSKeyword_buttonface = 141, + eCSSKeyword_buttonhighlight = 142, + eCSSKeyword_buttonshadow = 143, + eCSSKeyword_buttontext = 144, + eCSSKeyword_capitalize = 145, + eCSSKeyword_caption = 146, + eCSSKeyword_captiontext = 147, + eCSSKeyword_cell = 148, + eCSSKeyword_center = 149, + eCSSKeyword_ch = 150, + eCSSKeyword_character_variant = 151, + eCSSKeyword_circle = 152, + eCSSKeyword_cjk_decimal = 153, + eCSSKeyword_clip = 154, + eCSSKeyword_clone = 155, + eCSSKeyword_close_quote = 156, + eCSSKeyword_closest_corner = 157, + eCSSKeyword_closest_side = 158, + eCSSKeyword_cm = 159, + eCSSKeyword_col_resize = 160, + eCSSKeyword_collapse = 161, + eCSSKeyword_color = 162, + eCSSKeyword_color_burn = 163, + eCSSKeyword_color_dodge = 164, + eCSSKeyword_common_ligatures = 165, + eCSSKeyword_column = 166, + eCSSKeyword_column_reverse = 167, + eCSSKeyword_condensed = 168, + eCSSKeyword_contain = 169, + eCSSKeyword_content_box = 170, + eCSSKeyword_contents = 171, + eCSSKeyword_context_fill = 172, + eCSSKeyword_context_fill_opacity = 173, + eCSSKeyword_context_menu = 174, + eCSSKeyword_context_stroke = 175, + eCSSKeyword_context_stroke_opacity = 176, + eCSSKeyword_context_value = 177, + eCSSKeyword_continuous = 178, + eCSSKeyword_contrast = 179, + eCSSKeyword_copy = 180, + eCSSKeyword_contextual = 181, + eCSSKeyword_cover = 182, + eCSSKeyword_crop = 183, + eCSSKeyword_cross = 184, + eCSSKeyword_crosshair = 185, + eCSSKeyword_currentcolor = 186, + eCSSKeyword_cursive = 187, + eCSSKeyword_cyclic = 188, + eCSSKeyword_darken = 189, + eCSSKeyword_dashed = 190, + eCSSKeyword_dense = 191, + eCSSKeyword_decimal = 192, + eCSSKeyword_default = 193, + eCSSKeyword_deg = 194, + eCSSKeyword_diagonal_fractions = 195, + eCSSKeyword_dialog = 196, + eCSSKeyword_difference = 197, + eCSSKeyword_digits = 198, + eCSSKeyword_disabled = 199, + eCSSKeyword_disc = 200, + eCSSKeyword_discretionary_ligatures = 201, + eCSSKeyword_distribute = 202, + eCSSKeyword_dot = 203, + eCSSKeyword_dotted = 204, + eCSSKeyword_double = 205, + eCSSKeyword_double_circle = 206, + eCSSKeyword_double_struck = 207, + eCSSKeyword_drag = 208, + eCSSKeyword_drop_shadow = 209, + eCSSKeyword_e_resize = 210, + eCSSKeyword_ease = 211, + eCSSKeyword_ease_in = 212, + eCSSKeyword_ease_in_out = 213, + eCSSKeyword_ease_out = 214, + eCSSKeyword_economy = 215, + eCSSKeyword_element = 216, + eCSSKeyword_elements = 217, + eCSSKeyword_ellipse = 218, + eCSSKeyword_ellipsis = 219, + eCSSKeyword_em = 220, + eCSSKeyword_embed = 221, + eCSSKeyword_enabled = 222, + eCSSKeyword_end = 223, + eCSSKeyword_ex = 224, + eCSSKeyword_exact = 225, + eCSSKeyword_exclude = 226, + eCSSKeyword_exclusion = 227, + eCSSKeyword_expanded = 228, + eCSSKeyword_extends = 229, + eCSSKeyword_extra_condensed = 230, + eCSSKeyword_extra_expanded = 231, + eCSSKeyword_ew_resize = 232, + eCSSKeyword_fallback = 233, + eCSSKeyword_fantasy = 234, + eCSSKeyword_farthest_side = 235, + eCSSKeyword_farthest_corner = 236, + eCSSKeyword_fill = 237, + eCSSKeyword_filled = 238, + eCSSKeyword_fill_box = 239, + eCSSKeyword_first = 240, + eCSSKeyword_fit_content = 241, + eCSSKeyword_fixed = 242, + eCSSKeyword_flat = 243, + eCSSKeyword_flex = 244, + eCSSKeyword_flex_end = 245, + eCSSKeyword_flex_start = 246, + eCSSKeyword_flip = 247, + eCSSKeyword_flow_root = 248, + eCSSKeyword_forwards = 249, + eCSSKeyword_fraktur = 250, + eCSSKeyword_frames = 251, + eCSSKeyword_from_image = 252, + eCSSKeyword_full_width = 253, + eCSSKeyword_fullscreen = 254, + eCSSKeyword_grab = 255, + eCSSKeyword_grabbing = 256, + eCSSKeyword_grad = 257, + eCSSKeyword_grayscale = 258, + eCSSKeyword_graytext = 259, + eCSSKeyword_grid = 260, + eCSSKeyword_groove = 261, + eCSSKeyword_hard_light = 262, + eCSSKeyword_help = 263, + eCSSKeyword_hidden = 264, + eCSSKeyword_hide = 265, + eCSSKeyword_highlight = 266, + eCSSKeyword_highlighttext = 267, + eCSSKeyword_historical_forms = 268, + eCSSKeyword_historical_ligatures = 269, + eCSSKeyword_horizontal = 270, + eCSSKeyword_horizontal_tb = 271, + eCSSKeyword_hue = 272, + eCSSKeyword_hue_rotate = 273, + eCSSKeyword_hz = 274, + eCSSKeyword_icon = 275, + eCSSKeyword_ignore = 276, + eCSSKeyword_ignore_horizontal = 277, + eCSSKeyword_ignore_vertical = 278, + eCSSKeyword_in = 279, + eCSSKeyword_interlace = 280, + eCSSKeyword_inactive = 281, + eCSSKeyword_inactiveborder = 282, + eCSSKeyword_inactivecaption = 283, + eCSSKeyword_inactivecaptiontext = 284, + eCSSKeyword_infinite = 285, + eCSSKeyword_infobackground = 286, + eCSSKeyword_infotext = 287, + eCSSKeyword_inherit = 288, + eCSSKeyword_initial = 289, + eCSSKeyword_inline = 290, + eCSSKeyword_inline_axis = 291, + eCSSKeyword_inline_block = 292, + eCSSKeyword_inline_end = 293, + eCSSKeyword_inline_flex = 294, + eCSSKeyword_inline_grid = 295, + eCSSKeyword_inline_start = 296, + eCSSKeyword_inline_table = 297, + eCSSKeyword_inset = 298, + eCSSKeyword_inside = 299, + eCSSKeyword_inter_character = 300, + eCSSKeyword_inter_word = 301, + eCSSKeyword_interpolatematrix = 302, + eCSSKeyword_accumulatematrix = 303, + eCSSKeyword_intersect = 304, + eCSSKeyword_isolate = 305, + eCSSKeyword_isolate_override = 306, + eCSSKeyword_invert = 307, + eCSSKeyword_italic = 308, + eCSSKeyword_jis78 = 309, + eCSSKeyword_jis83 = 310, + eCSSKeyword_jis90 = 311, + eCSSKeyword_jis04 = 312, + eCSSKeyword_justify = 313, + eCSSKeyword_keep_all = 314, + eCSSKeyword_khz = 315, + eCSSKeyword_landscape = 316, + eCSSKeyword_large = 317, + eCSSKeyword_larger = 318, + eCSSKeyword_last = 319, + eCSSKeyword_last_baseline = 320, + eCSSKeyword_layout = 321, + eCSSKeyword_left = 322, + eCSSKeyword_legacy = 323, + eCSSKeyword_lighten = 324, + eCSSKeyword_lighter = 325, + eCSSKeyword_line_through = 326, + eCSSKeyword_linear = 327, + eCSSKeyword_lining_nums = 328, + eCSSKeyword_list_item = 329, + eCSSKeyword_local = 330, + eCSSKeyword_logical = 331, + eCSSKeyword_looped = 332, + eCSSKeyword_lowercase = 333, + eCSSKeyword_lr = 334, + eCSSKeyword_lr_tb = 335, + eCSSKeyword_ltr = 336, + eCSSKeyword_luminance = 337, + eCSSKeyword_luminosity = 338, + eCSSKeyword_mandatory = 339, + eCSSKeyword_manipulation = 340, + eCSSKeyword_manual = 341, + eCSSKeyword_margin_box = 342, + eCSSKeyword_markers = 343, + eCSSKeyword_match_parent = 344, + eCSSKeyword_match_source = 345, + eCSSKeyword_matrix = 346, + eCSSKeyword_matrix3d = 347, + eCSSKeyword_max_content = 348, + eCSSKeyword_medium = 349, + eCSSKeyword_menu = 350, + eCSSKeyword_menutext = 351, + eCSSKeyword_message_box = 352, + eCSSKeyword_middle = 353, + eCSSKeyword_min_content = 354, + eCSSKeyword_minmax = 355, + eCSSKeyword_mix = 356, + eCSSKeyword_mixed = 357, + eCSSKeyword_mm = 358, + eCSSKeyword_monospace = 359, + eCSSKeyword_move = 360, + eCSSKeyword_ms = 361, + eCSSKeyword_multiply = 362, + eCSSKeyword_n_resize = 363, + eCSSKeyword_narrower = 364, + eCSSKeyword_ne_resize = 365, + eCSSKeyword_nesw_resize = 366, + eCSSKeyword_no_clip = 367, + eCSSKeyword_no_close_quote = 368, + eCSSKeyword_no_common_ligatures = 369, + eCSSKeyword_no_contextual = 370, + eCSSKeyword_no_discretionary_ligatures = 371, + eCSSKeyword_no_drag = 372, + eCSSKeyword_no_drop = 373, + eCSSKeyword_no_historical_ligatures = 374, + eCSSKeyword_no_open_quote = 375, + eCSSKeyword_no_repeat = 376, + eCSSKeyword_none = 377, + eCSSKeyword_normal = 378, + eCSSKeyword_not_allowed = 379, + eCSSKeyword_nowrap = 380, + eCSSKeyword_numeric = 381, + eCSSKeyword_ns_resize = 382, + eCSSKeyword_nw_resize = 383, + eCSSKeyword_nwse_resize = 384, + eCSSKeyword_oblique = 385, + eCSSKeyword_oldstyle_nums = 386, + eCSSKeyword_opacity = 387, + eCSSKeyword_open = 388, + eCSSKeyword_open_quote = 389, + eCSSKeyword_optional = 390, + eCSSKeyword_ordinal = 391, + eCSSKeyword_ornaments = 392, + eCSSKeyword_outset = 393, + eCSSKeyword_outside = 394, + eCSSKeyword_over = 395, + eCSSKeyword_overlay = 396, + eCSSKeyword_overline = 397, + eCSSKeyword_paint = 398, + eCSSKeyword_padding_box = 399, + eCSSKeyword_painted = 400, + eCSSKeyword_pan_x = 401, + eCSSKeyword_pan_y = 402, + eCSSKeyword_paused = 403, + eCSSKeyword_pc = 404, + eCSSKeyword_perspective = 405, + eCSSKeyword_petite_caps = 406, + eCSSKeyword_physical = 407, + eCSSKeyword_plaintext = 408, + eCSSKeyword_pointer = 409, + eCSSKeyword_polygon = 410, + eCSSKeyword_portrait = 411, + eCSSKeyword_pre = 412, + eCSSKeyword_pre_wrap = 413, + eCSSKeyword_pre_line = 414, + eCSSKeyword_preserve_3d = 415, + eCSSKeyword_progress = 416, + eCSSKeyword_progressive = 417, + eCSSKeyword_proportional_nums = 418, + eCSSKeyword_proportional_width = 419, + eCSSKeyword_proximity = 420, + eCSSKeyword_pt = 421, + eCSSKeyword_px = 422, + eCSSKeyword_rad = 423, + eCSSKeyword_read_only = 424, + eCSSKeyword_read_write = 425, + eCSSKeyword_relative = 426, + eCSSKeyword_repeat = 427, + eCSSKeyword_repeat_x = 428, + eCSSKeyword_repeat_y = 429, + eCSSKeyword_reverse = 430, + eCSSKeyword_ridge = 431, + eCSSKeyword_right = 432, + eCSSKeyword_rl = 433, + eCSSKeyword_rl_tb = 434, + eCSSKeyword_rotate = 435, + eCSSKeyword_rotate3d = 436, + eCSSKeyword_rotatex = 437, + eCSSKeyword_rotatey = 438, + eCSSKeyword_rotatez = 439, + eCSSKeyword_round = 440, + eCSSKeyword_row = 441, + eCSSKeyword_row_resize = 442, + eCSSKeyword_row_reverse = 443, + eCSSKeyword_rtl = 444, + eCSSKeyword_ruby = 445, + eCSSKeyword_ruby_base = 446, + eCSSKeyword_ruby_base_container = 447, + eCSSKeyword_ruby_text = 448, + eCSSKeyword_ruby_text_container = 449, + eCSSKeyword_running = 450, + eCSSKeyword_s = 451, + eCSSKeyword_s_resize = 452, + eCSSKeyword_safe = 453, + eCSSKeyword_saturate = 454, + eCSSKeyword_saturation = 455, + eCSSKeyword_scale = 456, + eCSSKeyword_scale_down = 457, + eCSSKeyword_scale3d = 458, + eCSSKeyword_scalex = 459, + eCSSKeyword_scaley = 460, + eCSSKeyword_scalez = 461, + eCSSKeyword_screen = 462, + eCSSKeyword_script = 463, + eCSSKeyword_scroll = 464, + eCSSKeyword_scrollbar = 465, + eCSSKeyword_scrollbar_small = 466, + eCSSKeyword_scrollbar_horizontal = 467, + eCSSKeyword_scrollbar_vertical = 468, + eCSSKeyword_se_resize = 469, + eCSSKeyword_select_after = 470, + eCSSKeyword_select_all = 471, + eCSSKeyword_select_before = 472, + eCSSKeyword_select_menu = 473, + eCSSKeyword_select_same = 474, + eCSSKeyword_self_end = 475, + eCSSKeyword_self_start = 476, + eCSSKeyword_semi_condensed = 477, + eCSSKeyword_semi_expanded = 478, + eCSSKeyword_separate = 479, + eCSSKeyword_sepia = 480, + eCSSKeyword_serif = 481, + eCSSKeyword_sesame = 482, + eCSSKeyword_show = 483, + eCSSKeyword_sideways = 484, + eCSSKeyword_sideways_lr = 485, + eCSSKeyword_sideways_right = 486, + eCSSKeyword_sideways_rl = 487, + eCSSKeyword_simplified = 488, + eCSSKeyword_skew = 489, + eCSSKeyword_skewx = 490, + eCSSKeyword_skewy = 491, + eCSSKeyword_slashed_zero = 492, + eCSSKeyword_slice = 493, + eCSSKeyword_small = 494, + eCSSKeyword_small_caps = 495, + eCSSKeyword_small_caption = 496, + eCSSKeyword_smaller = 497, + eCSSKeyword_smooth = 498, + eCSSKeyword_soft = 499, + eCSSKeyword_soft_light = 500, + eCSSKeyword_solid = 501, + eCSSKeyword_space_around = 502, + eCSSKeyword_space_between = 503, + eCSSKeyword_space_evenly = 504, + eCSSKeyword_span = 505, + eCSSKeyword_spell_out = 506, + eCSSKeyword_square = 507, + eCSSKeyword_stacked_fractions = 508, + eCSSKeyword_start = 509, + eCSSKeyword_static = 510, + eCSSKeyword_standalone = 511, + eCSSKeyword_status_bar = 512, + eCSSKeyword_step_end = 513, + eCSSKeyword_step_start = 514, + eCSSKeyword_sticky = 515, + eCSSKeyword_stretch = 516, + eCSSKeyword_stretch_to_fit = 517, + eCSSKeyword_stretched = 518, + eCSSKeyword_strict = 519, + eCSSKeyword_stroke = 520, + eCSSKeyword_stroke_box = 521, + eCSSKeyword_style = 522, + eCSSKeyword_styleset = 523, + eCSSKeyword_stylistic = 524, + eCSSKeyword_sub = 525, + eCSSKeyword_subgrid = 526, + eCSSKeyword_subtract = 527, + eCSSKeyword_super = 528, + eCSSKeyword_sw_resize = 529, + eCSSKeyword_swash = 530, + eCSSKeyword_swap = 531, + eCSSKeyword_table = 532, + eCSSKeyword_table_caption = 533, + eCSSKeyword_table_cell = 534, + eCSSKeyword_table_column = 535, + eCSSKeyword_table_column_group = 536, + eCSSKeyword_table_footer_group = 537, + eCSSKeyword_table_header_group = 538, + eCSSKeyword_table_row = 539, + eCSSKeyword_table_row_group = 540, + eCSSKeyword_tabular_nums = 541, + eCSSKeyword_tailed = 542, + eCSSKeyword_tb = 543, + eCSSKeyword_tb_rl = 544, + eCSSKeyword_text = 545, + eCSSKeyword_text_bottom = 546, + eCSSKeyword_text_top = 547, + eCSSKeyword_thick = 548, + eCSSKeyword_thin = 549, + eCSSKeyword_threeddarkshadow = 550, + eCSSKeyword_threedface = 551, + eCSSKeyword_threedhighlight = 552, + eCSSKeyword_threedlightshadow = 553, + eCSSKeyword_threedshadow = 554, + eCSSKeyword_titling_caps = 555, + eCSSKeyword_toggle = 556, + eCSSKeyword_top = 557, + eCSSKeyword_top_outside = 558, + eCSSKeyword_traditional = 559, + eCSSKeyword_translate = 560, + eCSSKeyword_translate3d = 561, + eCSSKeyword_translatex = 562, + eCSSKeyword_translatey = 563, + eCSSKeyword_translatez = 564, + eCSSKeyword_transparent = 565, + eCSSKeyword_triangle = 566, + eCSSKeyword_tri_state = 567, + eCSSKeyword_ultra_condensed = 568, + eCSSKeyword_ultra_expanded = 569, + eCSSKeyword_under = 570, + eCSSKeyword_underline = 571, + eCSSKeyword_unicase = 572, + eCSSKeyword_unsafe = 573, + eCSSKeyword_unset = 574, + eCSSKeyword_uppercase = 575, + eCSSKeyword_upright = 576, + eCSSKeyword_vertical = 577, + eCSSKeyword_vertical_lr = 578, + eCSSKeyword_vertical_rl = 579, + eCSSKeyword_vertical_text = 580, + eCSSKeyword_view_box = 581, + eCSSKeyword_visible = 582, + eCSSKeyword_visiblefill = 583, + eCSSKeyword_visiblepainted = 584, + eCSSKeyword_visiblestroke = 585, + eCSSKeyword_w_resize = 586, + eCSSKeyword_wait = 587, + eCSSKeyword_wavy = 588, + eCSSKeyword_weight = 589, + eCSSKeyword_wider = 590, + eCSSKeyword_window = 591, + eCSSKeyword_windowframe = 592, + eCSSKeyword_windowtext = 593, + eCSSKeyword_words = 594, + eCSSKeyword_wrap = 595, + eCSSKeyword_wrap_reverse = 596, + eCSSKeyword_write_only = 597, + eCSSKeyword_x_large = 598, + eCSSKeyword_x_small = 599, + eCSSKeyword_xx_large = 600, + eCSSKeyword_xx_small = 601, + eCSSKeyword_zoom_in = 602, + eCSSKeyword_zoom_out = 603, + eCSSKeyword_radio = 604, + eCSSKeyword_checkbox = 605, + eCSSKeyword_button_bevel = 606, + eCSSKeyword_toolbox = 607, + eCSSKeyword_toolbar = 608, + eCSSKeyword_toolbarbutton = 609, + eCSSKeyword_toolbargripper = 610, + eCSSKeyword_dualbutton = 611, + eCSSKeyword_toolbarbutton_dropdown = 612, + eCSSKeyword_button_arrow_up = 613, + eCSSKeyword_button_arrow_down = 614, + eCSSKeyword_button_arrow_next = 615, + eCSSKeyword_button_arrow_previous = 616, + eCSSKeyword_separator = 617, + eCSSKeyword_splitter = 618, + eCSSKeyword_statusbar = 619, + eCSSKeyword_statusbarpanel = 620, + eCSSKeyword_resizerpanel = 621, + eCSSKeyword_resizer = 622, + eCSSKeyword_listbox = 623, + eCSSKeyword_listitem = 624, + eCSSKeyword_numbers = 625, + eCSSKeyword_number_input = 626, + eCSSKeyword_treeview = 627, + eCSSKeyword_treeitem = 628, + eCSSKeyword_treetwisty = 629, + eCSSKeyword_treetwistyopen = 630, + eCSSKeyword_treeline = 631, + eCSSKeyword_treeheader = 632, + eCSSKeyword_treeheadercell = 633, + eCSSKeyword_treeheadersortarrow = 634, + eCSSKeyword_progressbar = 635, + eCSSKeyword_progressbar_vertical = 636, + eCSSKeyword_progresschunk = 637, + eCSSKeyword_progresschunk_vertical = 638, + eCSSKeyword_tab = 639, + eCSSKeyword_tabpanels = 640, + eCSSKeyword_tabpanel = 641, + eCSSKeyword_tab_scroll_arrow_back = 642, + eCSSKeyword_tab_scroll_arrow_forward = 643, + eCSSKeyword_tooltip = 644, + eCSSKeyword_inner_spin_button = 645, + eCSSKeyword_spinner = 646, + eCSSKeyword_spinner_upbutton = 647, + eCSSKeyword_spinner_downbutton = 648, + eCSSKeyword_spinner_textfield = 649, + eCSSKeyword_scrollbarbutton_up = 650, + eCSSKeyword_scrollbarbutton_down = 651, + eCSSKeyword_scrollbarbutton_left = 652, + eCSSKeyword_scrollbarbutton_right = 653, + eCSSKeyword_scrollbartrack_horizontal = 654, + eCSSKeyword_scrollbartrack_vertical = 655, + eCSSKeyword_scrollbarthumb_horizontal = 656, + eCSSKeyword_scrollbarthumb_vertical = 657, + eCSSKeyword_sheet = 658, + eCSSKeyword_textfield = 659, + eCSSKeyword_textfield_multiline = 660, + eCSSKeyword_caret = 661, + eCSSKeyword_searchfield = 662, + eCSSKeyword_menubar = 663, + eCSSKeyword_menupopup = 664, + eCSSKeyword_menuitem = 665, + eCSSKeyword_checkmenuitem = 666, + eCSSKeyword_radiomenuitem = 667, + eCSSKeyword_menucheckbox = 668, + eCSSKeyword_menuradio = 669, + eCSSKeyword_menuseparator = 670, + eCSSKeyword_menuarrow = 671, + eCSSKeyword_menuimage = 672, + eCSSKeyword_menuitemtext = 673, + eCSSKeyword_menulist = 674, + eCSSKeyword_menulist_button = 675, + eCSSKeyword_menulist_text = 676, + eCSSKeyword_menulist_textfield = 677, + eCSSKeyword_meterbar = 678, + eCSSKeyword_meterchunk = 679, + eCSSKeyword_minimal_ui = 680, + eCSSKeyword_range = 681, + eCSSKeyword_range_thumb = 682, + eCSSKeyword_sans_serif = 683, + eCSSKeyword_sans_serif_bold_italic = 684, + eCSSKeyword_sans_serif_italic = 685, + eCSSKeyword_scale_horizontal = 686, + eCSSKeyword_scale_vertical = 687, + eCSSKeyword_scalethumb_horizontal = 688, + eCSSKeyword_scalethumb_vertical = 689, + eCSSKeyword_scalethumbstart = 690, + eCSSKeyword_scalethumbend = 691, + eCSSKeyword_scalethumbtick = 692, + eCSSKeyword_groupbox = 693, + eCSSKeyword_checkbox_container = 694, + eCSSKeyword_radio_container = 695, + eCSSKeyword_checkbox_label = 696, + eCSSKeyword_radio_label = 697, + eCSSKeyword_button_focus = 698, + eCSSKeyword__moz_win_media_toolbox = 699, + eCSSKeyword__moz_win_communications_toolbox = 700, + eCSSKeyword__moz_win_browsertabbar_toolbox = 701, + eCSSKeyword__moz_win_accentcolor = 702, + eCSSKeyword__moz_win_accentcolortext = 703, + eCSSKeyword__moz_win_mediatext = 704, + eCSSKeyword__moz_win_communicationstext = 705, + eCSSKeyword__moz_win_glass = 706, + eCSSKeyword__moz_win_borderless_glass = 707, + eCSSKeyword__moz_window_titlebar = 708, + eCSSKeyword__moz_window_titlebar_maximized = 709, + eCSSKeyword__moz_window_frame_left = 710, + eCSSKeyword__moz_window_frame_right = 711, + eCSSKeyword__moz_window_frame_bottom = 712, + eCSSKeyword__moz_window_button_close = 713, + eCSSKeyword__moz_window_button_minimize = 714, + eCSSKeyword__moz_window_button_maximize = 715, + eCSSKeyword__moz_window_button_restore = 716, + eCSSKeyword__moz_window_button_box = 717, + eCSSKeyword__moz_window_button_box_maximized = 718, + eCSSKeyword__moz_mac_help_button = 719, + eCSSKeyword__moz_win_exclude_glass = 720, + eCSSKeyword__moz_mac_vibrancy_light = 721, + eCSSKeyword__moz_mac_vibrancy_dark = 722, + eCSSKeyword__moz_mac_vibrant_titlebar_light = 723, + eCSSKeyword__moz_mac_vibrant_titlebar_dark = 724, + eCSSKeyword__moz_mac_disclosure_button_closed = 725, + eCSSKeyword__moz_mac_disclosure_button_open = 726, + eCSSKeyword__moz_mac_source_list = 727, + eCSSKeyword__moz_mac_source_list_selection = 728, + eCSSKeyword__moz_mac_active_source_list_selection = 729, + eCSSKeyword_alphabetic = 730, + eCSSKeyword_bevel = 731, + eCSSKeyword_butt = 732, + eCSSKeyword_central = 733, + eCSSKeyword_crispedges = 734, + eCSSKeyword_evenodd = 735, + eCSSKeyword_geometricprecision = 736, + eCSSKeyword_hanging = 737, + eCSSKeyword_ideographic = 738, + eCSSKeyword_linearrgb = 739, + eCSSKeyword_mathematical = 740, + eCSSKeyword_miter = 741, + eCSSKeyword_no_change = 742, + eCSSKeyword_non_scaling_stroke = 743, + eCSSKeyword_nonzero = 744, + eCSSKeyword_optimizelegibility = 745, + eCSSKeyword_optimizequality = 746, + eCSSKeyword_optimizespeed = 747, + eCSSKeyword_reset_size = 748, + eCSSKeyword_srgb = 749, + eCSSKeyword_symbolic = 750, + eCSSKeyword_symbols = 751, + eCSSKeyword_text_after_edge = 752, + eCSSKeyword_text_before_edge = 753, + eCSSKeyword_use_script = 754, + eCSSKeyword__moz_crisp_edges = 755, + eCSSKeyword_space = 756, + eCSSKeyword_COUNT = 757, + } + pub const nsStyleStructID_nsStyleStructID_None: root::nsStyleStructID = -1; + pub const nsStyleStructID_nsStyleStructID_Inherited_Start: root::nsStyleStructID = 0; + pub const nsStyleStructID_nsStyleStructID_DUMMY1: root::nsStyleStructID = -1; + pub const nsStyleStructID_eStyleStruct_Font: root::nsStyleStructID = 0; + pub const nsStyleStructID_eStyleStruct_Color: root::nsStyleStructID = 1; + pub const nsStyleStructID_eStyleStruct_List: root::nsStyleStructID = 2; + pub const nsStyleStructID_eStyleStruct_Text: root::nsStyleStructID = 3; + pub const nsStyleStructID_eStyleStruct_Visibility: root::nsStyleStructID = 4; + pub const nsStyleStructID_eStyleStruct_UserInterface: root::nsStyleStructID = 5; + pub const nsStyleStructID_eStyleStruct_TableBorder: root::nsStyleStructID = 6; + pub const nsStyleStructID_eStyleStruct_SVG: root::nsStyleStructID = 7; + pub const nsStyleStructID_eStyleStruct_Variables: root::nsStyleStructID = 8; + pub const nsStyleStructID_nsStyleStructID_Reset_Start: root::nsStyleStructID = 9; + pub const nsStyleStructID_nsStyleStructID_DUMMY2: root::nsStyleStructID = 8; + pub const nsStyleStructID_eStyleStruct_Background: root::nsStyleStructID = 9; + pub const nsStyleStructID_eStyleStruct_Position: root::nsStyleStructID = 10; + pub const nsStyleStructID_eStyleStruct_TextReset: root::nsStyleStructID = 11; + pub const nsStyleStructID_eStyleStruct_Display: root::nsStyleStructID = 12; + pub const nsStyleStructID_eStyleStruct_Content: root::nsStyleStructID = 13; + pub const nsStyleStructID_eStyleStruct_UIReset: root::nsStyleStructID = 14; + pub const nsStyleStructID_eStyleStruct_Table: root::nsStyleStructID = 15; + pub const nsStyleStructID_eStyleStruct_Margin: root::nsStyleStructID = 16; + pub const nsStyleStructID_eStyleStruct_Padding: root::nsStyleStructID = 17; + pub const nsStyleStructID_eStyleStruct_Border: root::nsStyleStructID = 18; + pub const nsStyleStructID_eStyleStruct_Outline: root::nsStyleStructID = 19; + pub const nsStyleStructID_eStyleStruct_XUL: root::nsStyleStructID = 20; + pub const nsStyleStructID_eStyleStruct_SVGReset: root::nsStyleStructID = 21; + pub const nsStyleStructID_eStyleStruct_Column: root::nsStyleStructID = 22; + pub const nsStyleStructID_eStyleStruct_Effects: root::nsStyleStructID = 23; + pub const nsStyleStructID_nsStyleStructID_Length: root::nsStyleStructID = 24; + pub const nsStyleStructID_nsStyleStructID_Inherited_Count: root::nsStyleStructID = 9; + pub const nsStyleStructID_nsStyleStructID_Reset_Count: root::nsStyleStructID = 15; + pub type nsStyleStructID = i32; + pub const nsStyleAnimType_eStyleAnimType_Custom: root::nsStyleAnimType = 0; + pub const nsStyleAnimType_eStyleAnimType_Coord: root::nsStyleAnimType = 1; + pub const nsStyleAnimType_eStyleAnimType_Sides_Top: root::nsStyleAnimType = 2; + pub const nsStyleAnimType_eStyleAnimType_Sides_Right: root::nsStyleAnimType = 3; + pub const nsStyleAnimType_eStyleAnimType_Sides_Bottom: root::nsStyleAnimType = 4; + pub const nsStyleAnimType_eStyleAnimType_Sides_Left: root::nsStyleAnimType = 5; + pub const nsStyleAnimType_eStyleAnimType_Corner_TopLeft: root::nsStyleAnimType = 6; + pub const nsStyleAnimType_eStyleAnimType_Corner_TopRight: root::nsStyleAnimType = 7; + pub const nsStyleAnimType_eStyleAnimType_Corner_BottomRight: root::nsStyleAnimType = 8; + pub const nsStyleAnimType_eStyleAnimType_Corner_BottomLeft: root::nsStyleAnimType = 9; + pub const nsStyleAnimType_eStyleAnimType_nscoord: root::nsStyleAnimType = 10; + pub const nsStyleAnimType_eStyleAnimType_float: root::nsStyleAnimType = 11; + pub const nsStyleAnimType_eStyleAnimType_Color: root::nsStyleAnimType = 12; + pub const nsStyleAnimType_eStyleAnimType_ComplexColor: root::nsStyleAnimType = 13; + pub const nsStyleAnimType_eStyleAnimType_PaintServer: root::nsStyleAnimType = 14; + pub const nsStyleAnimType_eStyleAnimType_Shadow: root::nsStyleAnimType = 15; + pub const nsStyleAnimType_eStyleAnimType_Discrete: root::nsStyleAnimType = 16; + pub const nsStyleAnimType_eStyleAnimType_None: root::nsStyleAnimType = 17; + pub type nsStyleAnimType = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsCSSProps { + pub _address: u8, + } + pub use self::super::root::mozilla::CSSEnabledState as nsCSSProps_EnabledState; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsCSSProps_KTableEntry { + pub mKeyword: root::nsCSSKeyword, + pub mValue: i16, + } + #[test] + fn bindgen_test_layout_nsCSSProps_KTableEntry() { + assert_eq!( + ::std::mem::size_of::<nsCSSProps_KTableEntry>(), + 4usize, + concat!("Size of: ", stringify!(nsCSSProps_KTableEntry)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSProps_KTableEntry>(), + 2usize, + concat!("Alignment of ", stringify!(nsCSSProps_KTableEntry)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSProps_KTableEntry>())).mKeyword as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSProps_KTableEntry), + "::", + stringify!(mKeyword) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSProps_KTableEntry>())).mValue as *const _ as usize + }, + 2usize, + concat!( + "Offset of field: ", + stringify!(nsCSSProps_KTableEntry), + "::", + stringify!(mValue) + ) + ); + } + impl Clone for nsCSSProps_KTableEntry { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps9kSIDTableE"] + pub static mut nsCSSProps_kSIDTable: [root::nsStyleStructID; 323usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kKeywordTableTableE"] + pub static mut nsCSSProps_kKeywordTableTable: + [*const root::nsCSSProps_KTableEntry; 323usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps14kAnimTypeTableE"] + pub static mut nsCSSProps_kAnimTypeTable: [root::nsStyleAnimType; 323usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps23kStyleStructOffsetTableE"] + pub static mut nsCSSProps_kStyleStructOffsetTable: [isize; 323usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps11kFlagsTableE"] + pub static mut nsCSSProps_kFlagsTable: [u32; 373usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kParserVariantTableE"] + pub static mut nsCSSProps_kParserVariantTable: [u32; 323usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kSubpropertyTableE"] + pub static mut nsCSSProps_kSubpropertyTable: [*const root::nsCSSPropertyID; 50usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps26gShorthandsContainingTableE"] + pub static mut nsCSSProps_gShorthandsContainingTable: + [*mut root::nsCSSPropertyID; 323usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25gShorthandsContainingPoolE"] + pub static mut nsCSSProps_gShorthandsContainingPool: *mut root::nsCSSPropertyID; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps22gPropertyCountInStructE"] + pub static mut nsCSSProps_gPropertyCountInStruct: [usize; 24usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps22gPropertyIndexInStructE"] + pub static mut nsCSSProps_gPropertyIndexInStruct: [usize; 323usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kLogicalGroupTableE"] + pub static mut nsCSSProps_kLogicalGroupTable: [*const root::nsCSSPropertyID; 9usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16gPropertyEnabledE"] + pub static mut nsCSSProps_gPropertyEnabled: [bool; 482usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps13kIDLNameTableE"] + pub static mut nsCSSProps_kIDLNameTable: [*const ::std::os::raw::c_char; 373usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kIDLNameSortPositionTableE"] + pub static mut nsCSSProps_kIDLNameSortPositionTable: [i32; 373usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19gPropertyUseCounterE"] + pub static mut nsCSSProps_gPropertyUseCounter: [root::mozilla::UseCounter; 323usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kAnimationDirectionKTableE"] + pub static mut nsCSSProps_kAnimationDirectionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps24kAnimationFillModeKTableE"] + pub static mut nsCSSProps_kAnimationFillModeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps30kAnimationIterationCountKTableE"] + pub static mut nsCSSProps_kAnimationIterationCountKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kAnimationPlayStateKTableE"] + pub static mut nsCSSProps_kAnimationPlayStateKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps30kAnimationTimingFunctionKTableE"] + pub static mut nsCSSProps_kAnimationTimingFunctionKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kAppearanceKTableE"] + pub static mut nsCSSProps_kAppearanceKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps14kAzimuthKTableE"] + pub static mut nsCSSProps_kAzimuthKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kBackfaceVisibilityKTableE"] + pub static mut nsCSSProps_kBackfaceVisibilityKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kTransformStyleKTableE"] + pub static mut nsCSSProps_kTransformStyleKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kImageLayerAttachmentKTableE"] + pub static mut nsCSSProps_kImageLayerAttachmentKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps23kBackgroundOriginKTableE"] + pub static mut nsCSSProps_kBackgroundOriginKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kMaskOriginKTableE"] + pub static mut nsCSSProps_kMaskOriginKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kImageLayerPositionKTableE"] + pub static mut nsCSSProps_kImageLayerPositionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps23kImageLayerRepeatKTableE"] + pub static mut nsCSSProps_kImageLayerRepeatKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kImageLayerRepeatPartKTableE"] + pub static mut nsCSSProps_kImageLayerRepeatPartKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kImageLayerSizeKTableE"] + pub static mut nsCSSProps_kImageLayerSizeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps26kImageLayerCompositeKTableE"] + pub static mut nsCSSProps_kImageLayerCompositeKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kImageLayerModeKTableE"] + pub static mut nsCSSProps_kImageLayerModeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kBackgroundClipKTableE"] + pub static mut nsCSSProps_kBackgroundClipKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kMaskClipKTableE"] + pub static mut nsCSSProps_kMaskClipKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kBlendModeKTableE"] + pub static mut nsCSSProps_kBlendModeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kBorderCollapseKTableE"] + pub static mut nsCSSProps_kBorderCollapseKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps24kBorderImageRepeatKTableE"] + pub static mut nsCSSProps_kBorderImageRepeatKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps23kBorderImageSliceKTableE"] + pub static mut nsCSSProps_kBorderImageSliceKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kBorderStyleKTableE"] + pub static mut nsCSSProps_kBorderStyleKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kBorderWidthKTableE"] + pub static mut nsCSSProps_kBorderWidthKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kBoxAlignKTableE"] + pub static mut nsCSSProps_kBoxAlignKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kBoxDecorationBreakKTableE"] + pub static mut nsCSSProps_kBoxDecorationBreakKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kBoxDirectionKTableE"] + pub static mut nsCSSProps_kBoxDirectionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kBoxOrientKTableE"] + pub static mut nsCSSProps_kBoxOrientKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps14kBoxPackKTableE"] + pub static mut nsCSSProps_kBoxPackKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps26kClipPathGeometryBoxKTableE"] + pub static mut nsCSSProps_kClipPathGeometryBoxKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kCounterRangeKTableE"] + pub static mut nsCSSProps_kCounterRangeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kCounterSpeakAsKTableE"] + pub static mut nsCSSProps_kCounterSpeakAsKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kCounterSymbolsSystemKTableE"] + pub static mut nsCSSProps_kCounterSymbolsSystemKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kCounterSystemKTableE"] + pub static mut nsCSSProps_kCounterSystemKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps23kDominantBaselineKTableE"] + pub static mut nsCSSProps_kDominantBaselineKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kShapeRadiusKTableE"] + pub static mut nsCSSProps_kShapeRadiusKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kFillRuleKTableE"] + pub static mut nsCSSProps_kFillRuleKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kFilterFunctionKTableE"] + pub static mut nsCSSProps_kFilterFunctionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kImageRenderingKTableE"] + pub static mut nsCSSProps_kImageRenderingKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kShapeOutsideShapeBoxKTableE"] + pub static mut nsCSSProps_kShapeOutsideShapeBoxKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kShapeRenderingKTableE"] + pub static mut nsCSSProps_kShapeRenderingKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kStrokeLinecapKTableE"] + pub static mut nsCSSProps_kStrokeLinecapKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kStrokeLinejoinKTableE"] + pub static mut nsCSSProps_kStrokeLinejoinKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kStrokeContextValueKTableE"] + pub static mut nsCSSProps_kStrokeContextValueKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kVectorEffectKTableE"] + pub static mut nsCSSProps_kVectorEffectKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kTextAnchorKTableE"] + pub static mut nsCSSProps_kTextAnchorKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kTextRenderingKTableE"] + pub static mut nsCSSProps_kTextRenderingKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kColorAdjustKTableE"] + pub static mut nsCSSProps_kColorAdjustKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kColorInterpolationKTableE"] + pub static mut nsCSSProps_kColorInterpolationKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kColumnFillKTableE"] + pub static mut nsCSSProps_kColumnFillKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kColumnSpanKTableE"] + pub static mut nsCSSProps_kColumnSpanKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kBoxPropSourceKTableE"] + pub static mut nsCSSProps_kBoxPropSourceKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kBoxShadowTypeKTableE"] + pub static mut nsCSSProps_kBoxShadowTypeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kBoxSizingKTableE"] + pub static mut nsCSSProps_kBoxSizingKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kCaptionSideKTableE"] + pub static mut nsCSSProps_kCaptionSideKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps12kClearKTableE"] + pub static mut nsCSSProps_kClearKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps12kColorKTableE"] + pub static mut nsCSSProps_kColorKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps14kContentKTableE"] + pub static mut nsCSSProps_kContentKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps33kControlCharacterVisibilityKTableE"] + pub static mut nsCSSProps_kControlCharacterVisibilityKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps13kCursorKTableE"] + pub static mut nsCSSProps_kCursorKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kDirectionKTableE"] + pub static mut nsCSSProps_kDirectionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps14kDisplayKTableE"] + pub static mut nsCSSProps_kDisplayKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kElevationKTableE"] + pub static mut nsCSSProps_kElevationKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kEmptyCellsKTableE"] + pub static mut nsCSSProps_kEmptyCellsKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kAlignAllKeywordsE"] + pub static mut nsCSSProps_kAlignAllKeywords: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps22kAlignOverflowPositionE"] + pub static mut nsCSSProps_kAlignOverflowPosition: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kAlignSelfPositionE"] + pub static mut nsCSSProps_kAlignSelfPosition: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps12kAlignLegacyE"] + pub static mut nsCSSProps_kAlignLegacy: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kAlignLegacyPositionE"] + pub static mut nsCSSProps_kAlignLegacyPosition: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps31kAlignAutoNormalStretchBaselineE"] + pub static mut nsCSSProps_kAlignAutoNormalStretchBaseline: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kAlignNormalStretchBaselineE"] + pub static mut nsCSSProps_kAlignNormalStretchBaseline: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kAlignNormalBaselineE"] + pub static mut nsCSSProps_kAlignNormalBaseline: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kAlignContentDistributionE"] + pub static mut nsCSSProps_kAlignContentDistribution: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kAlignContentPositionE"] + pub static mut nsCSSProps_kAlignContentPosition: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps31kAutoCompletionAlignJustifySelfE"] + pub static mut nsCSSProps_kAutoCompletionAlignJustifySelf: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kAutoCompletionAlignItemsE"] + pub static mut nsCSSProps_kAutoCompletionAlignItems: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps34kAutoCompletionAlignJustifyContentE"] + pub static mut nsCSSProps_kAutoCompletionAlignJustifyContent: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kFlexDirectionKTableE"] + pub static mut nsCSSProps_kFlexDirectionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kFlexWrapKTableE"] + pub static mut nsCSSProps_kFlexWrapKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps12kFloatKTableE"] + pub static mut nsCSSProps_kFloatKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kFloatEdgeKTableE"] + pub static mut nsCSSProps_kFloatEdgeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kFontDisplayKTableE"] + pub static mut nsCSSProps_kFontDisplayKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps11kFontKTableE"] + pub static mut nsCSSProps_kFontKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kFontKerningKTableE"] + pub static mut nsCSSProps_kFontKerningKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kFontSizeKTableE"] + pub static mut nsCSSProps_kFontSizeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kFontSmoothingKTableE"] + pub static mut nsCSSProps_kFontSmoothingKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kFontStretchKTableE"] + pub static mut nsCSSProps_kFontStretchKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kFontStyleKTableE"] + pub static mut nsCSSProps_kFontStyleKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kFontSynthesisKTableE"] + pub static mut nsCSSProps_kFontSynthesisKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kFontVariantKTableE"] + pub static mut nsCSSProps_kFontVariantKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps28kFontVariantAlternatesKTableE"] + pub static mut nsCSSProps_kFontVariantAlternatesKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps33kFontVariantAlternatesFuncsKTableE"] + pub static mut nsCSSProps_kFontVariantAlternatesFuncsKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps22kFontVariantCapsKTableE"] + pub static mut nsCSSProps_kFontVariantCapsKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kFontVariantEastAsianKTableE"] + pub static mut nsCSSProps_kFontVariantEastAsianKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kFontVariantLigaturesKTableE"] + pub static mut nsCSSProps_kFontVariantLigaturesKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kFontVariantNumericKTableE"] + pub static mut nsCSSProps_kFontVariantNumericKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps26kFontVariantPositionKTableE"] + pub static mut nsCSSProps_kFontVariantPositionKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kFontWeightKTableE"] + pub static mut nsCSSProps_kFontWeightKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kGridAutoFlowKTableE"] + pub static mut nsCSSProps_kGridAutoFlowKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps23kGridTrackBreadthKTableE"] + pub static mut nsCSSProps_kGridTrackBreadthKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps14kHyphensKTableE"] + pub static mut nsCSSProps_kHyphensKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps23kImageOrientationKTableE"] + pub static mut nsCSSProps_kImageOrientationKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kImageOrientationFlipKTableE"] + pub static mut nsCSSProps_kImageOrientationFlipKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kIsolationKTableE"] + pub static mut nsCSSProps_kIsolationKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps14kIMEModeKTableE"] + pub static mut nsCSSProps_kIMEModeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kLineHeightKTableE"] + pub static mut nsCSSProps_kLineHeightKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps24kListStylePositionKTableE"] + pub static mut nsCSSProps_kListStylePositionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kMaskTypeKTableE"] + pub static mut nsCSSProps_kMaskTypeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kMathVariantKTableE"] + pub static mut nsCSSProps_kMathVariantKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kMathDisplayKTableE"] + pub static mut nsCSSProps_kMathDisplayKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps14kContainKTableE"] + pub static mut nsCSSProps_kContainKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kContextOpacityKTableE"] + pub static mut nsCSSProps_kContextOpacityKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kContextPatternKTableE"] + pub static mut nsCSSProps_kContextPatternKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kObjectFitKTableE"] + pub static mut nsCSSProps_kObjectFitKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps13kOrientKTableE"] + pub static mut nsCSSProps_kOrientKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kOutlineStyleKTableE"] + pub static mut nsCSSProps_kOutlineStyleKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kOverflowKTableE"] + pub static mut nsCSSProps_kOverflowKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kOverflowSubKTableE"] + pub static mut nsCSSProps_kOverflowSubKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps22kOverflowClipBoxKTableE"] + pub static mut nsCSSProps_kOverflowClipBoxKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kOverflowWrapKTableE"] + pub static mut nsCSSProps_kOverflowWrapKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kPageBreakKTableE"] + pub static mut nsCSSProps_kPageBreakKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps22kPageBreakInsideKTableE"] + pub static mut nsCSSProps_kPageBreakInsideKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kPageMarksKTableE"] + pub static mut nsCSSProps_kPageMarksKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kPageSizeKTableE"] + pub static mut nsCSSProps_kPageSizeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps12kPitchKTableE"] + pub static mut nsCSSProps_kPitchKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kPointerEventsKTableE"] + pub static mut nsCSSProps_kPointerEventsKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kPositionKTableE"] + pub static mut nsCSSProps_kPositionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps26kRadialGradientShapeKTableE"] + pub static mut nsCSSProps_kRadialGradientShapeKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kRadialGradientSizeKTableE"] + pub static mut nsCSSProps_kRadialGradientSizeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps31kRadialGradientLegacySizeKTableE"] + pub static mut nsCSSProps_kRadialGradientLegacySizeKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps13kResizeKTableE"] + pub static mut nsCSSProps_kResizeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kRubyAlignKTableE"] + pub static mut nsCSSProps_kRubyAlignKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kRubyPositionKTableE"] + pub static mut nsCSSProps_kRubyPositionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kScrollBehaviorKTableE"] + pub static mut nsCSSProps_kScrollBehaviorKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kOverscrollBehaviorKTableE"] + pub static mut nsCSSProps_kOverscrollBehaviorKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kScrollSnapTypeKTableE"] + pub static mut nsCSSProps_kScrollSnapTypeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps12kSpeakKTableE"] + pub static mut nsCSSProps_kSpeakKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kSpeakHeaderKTableE"] + pub static mut nsCSSProps_kSpeakHeaderKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kSpeakNumeralKTableE"] + pub static mut nsCSSProps_kSpeakNumeralKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps23kSpeakPunctuationKTableE"] + pub static mut nsCSSProps_kSpeakPunctuationKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kSpeechRateKTableE"] + pub static mut nsCSSProps_kSpeechRateKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kStackSizingKTableE"] + pub static mut nsCSSProps_kStackSizingKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kTableLayoutKTableE"] + pub static mut nsCSSProps_kTableLayoutKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kTextAlignKTableE"] + pub static mut nsCSSProps_kTextAlignKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kTextAlignLastKTableE"] + pub static mut nsCSSProps_kTextAlignLastKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kTextCombineUprightKTableE"] + pub static mut nsCSSProps_kTextCombineUprightKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps25kTextDecorationLineKTableE"] + pub static mut nsCSSProps_kTextDecorationLineKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps26kTextDecorationStyleKTableE"] + pub static mut nsCSSProps_kTextDecorationStyleKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps27kTextEmphasisPositionKTableE"] + pub static mut nsCSSProps_kTextEmphasisPositionKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps28kTextEmphasisStyleFillKTableE"] + pub static mut nsCSSProps_kTextEmphasisStyleFillKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps29kTextEmphasisStyleShapeKTableE"] + pub static mut nsCSSProps_kTextEmphasisStyleShapeKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kTextJustifyKTableE"] + pub static mut nsCSSProps_kTextJustifyKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps22kTextOrientationKTableE"] + pub static mut nsCSSProps_kTextOrientationKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kTextOverflowKTableE"] + pub static mut nsCSSProps_kTextOverflowKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kTextSizeAdjustKTableE"] + pub static mut nsCSSProps_kTextSizeAdjustKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kTextTransformKTableE"] + pub static mut nsCSSProps_kTextTransformKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kTouchActionKTableE"] + pub static mut nsCSSProps_kTouchActionKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps15kTopLayerKTableE"] + pub static mut nsCSSProps_kTopLayerKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kTransformBoxKTableE"] + pub static mut nsCSSProps_kTransformBoxKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps31kTransitionTimingFunctionKTableE"] + pub static mut nsCSSProps_kTransitionTimingFunctionKTable: + [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kUnicodeBidiKTableE"] + pub static mut nsCSSProps_kUnicodeBidiKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kUserFocusKTableE"] + pub static mut nsCSSProps_kUserFocusKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kUserInputKTableE"] + pub static mut nsCSSProps_kUserInputKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kUserModifyKTableE"] + pub static mut nsCSSProps_kUserModifyKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kUserSelectKTableE"] + pub static mut nsCSSProps_kUserSelectKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps20kVerticalAlignKTableE"] + pub static mut nsCSSProps_kVerticalAlignKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kVisibilityKTableE"] + pub static mut nsCSSProps_kVisibilityKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps13kVolumeKTableE"] + pub static mut nsCSSProps_kVolumeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps17kWhitespaceKTableE"] + pub static mut nsCSSProps_kWhitespaceKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps12kWidthKTableE"] + pub static mut nsCSSProps_kWidthKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps21kWindowDraggingKTableE"] + pub static mut nsCSSProps_kWindowDraggingKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps19kWindowShadowKTableE"] + pub static mut nsCSSProps_kWindowShadowKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps16kWordBreakKTableE"] + pub static mut nsCSSProps_kWordBreakKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN10nsCSSProps18kWritingModeKTableE"] + pub static mut nsCSSProps_kWritingModeKTable: [root::nsCSSProps_KTableEntry; 0usize]; + } + #[test] + fn bindgen_test_layout_nsCSSProps() { + assert_eq!( + ::std::mem::size_of::<nsCSSProps>(), + 1usize, + concat!("Size of: ", stringify!(nsCSSProps)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSProps>(), + 1usize, + concat!("Alignment of ", stringify!(nsCSSProps)) + ); + } + impl Clone for nsCSSProps { + fn clone(&self) -> Self { + *self + } + } + /// Class to safely handle main-thread-only pointers off the main thread. /// /// Classes like XPCWrappedJS are main-thread-only, which means that it is /// forbidden to call methods on instances of these classes off the main thread. @@ -1566,12 +27048,2204 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// // threads. /// /// All structs and classes that might be accessed on other threads should store - /// an nsMainThreadPtrHandle<T> rather than an nsCOMPtr<T>. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsMainThreadPtrHolder < T > { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mRawPtr : * mut T , pub mStrict : bool , pub mMainThreadEventTarget : root :: nsCOMPtr , pub mName : * const :: std :: os :: raw :: c_char , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } pub type nsMainThreadPtrHolder_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsMainThreadPtrHandle < T > { pub mPtr : root :: RefPtr < root :: nsMainThreadPtrHolder < T > > , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsCSSUnit { eCSSUnit_Null = 0 , eCSSUnit_Auto = 1 , eCSSUnit_Inherit = 2 , eCSSUnit_Initial = 3 , eCSSUnit_Unset = 4 , eCSSUnit_None = 5 , eCSSUnit_Normal = 6 , eCSSUnit_System_Font = 7 , eCSSUnit_All = 8 , eCSSUnit_Dummy = 9 , eCSSUnit_DummyInherit = 10 , eCSSUnit_String = 11 , eCSSUnit_Ident = 12 , eCSSUnit_Attr = 14 , eCSSUnit_Local_Font = 15 , eCSSUnit_Font_Format = 16 , eCSSUnit_Element = 17 , eCSSUnit_Array = 20 , eCSSUnit_Counter = 21 , eCSSUnit_Counters = 22 , eCSSUnit_Cubic_Bezier = 23 , eCSSUnit_Steps = 24 , eCSSUnit_Symbols = 25 , eCSSUnit_Function = 26 , eCSSUnit_Calc = 30 , eCSSUnit_Calc_Plus = 31 , eCSSUnit_Calc_Minus = 32 , eCSSUnit_Calc_Times_L = 33 , eCSSUnit_Calc_Times_R = 34 , eCSSUnit_Calc_Divided = 35 , eCSSUnit_URL = 40 , eCSSUnit_Image = 41 , eCSSUnit_Gradient = 42 , eCSSUnit_TokenStream = 43 , eCSSUnit_GridTemplateAreas = 44 , eCSSUnit_Pair = 50 , eCSSUnit_Triplet = 51 , eCSSUnit_Rect = 52 , eCSSUnit_List = 53 , eCSSUnit_ListDep = 54 , eCSSUnit_SharedList = 55 , eCSSUnit_PairList = 56 , eCSSUnit_PairListDep = 57 , eCSSUnit_FontFamilyList = 58 , eCSSUnit_AtomIdent = 60 , eCSSUnit_Integer = 70 , eCSSUnit_Enumerated = 71 , eCSSUnit_EnumColor = 80 , eCSSUnit_RGBColor = 81 , eCSSUnit_RGBAColor = 82 , eCSSUnit_HexColor = 83 , eCSSUnit_ShortHexColor = 84 , eCSSUnit_HexColorAlpha = 85 , eCSSUnit_ShortHexColorAlpha = 86 , eCSSUnit_PercentageRGBColor = 87 , eCSSUnit_PercentageRGBAColor = 88 , eCSSUnit_HSLColor = 89 , eCSSUnit_HSLAColor = 90 , eCSSUnit_ComplexColor = 91 , eCSSUnit_Percent = 100 , eCSSUnit_Number = 101 , eCSSUnit_ViewportWidth = 700 , eCSSUnit_ViewportHeight = 701 , eCSSUnit_ViewportMin = 702 , eCSSUnit_ViewportMax = 703 , eCSSUnit_EM = 800 , eCSSUnit_XHeight = 801 , eCSSUnit_Char = 802 , eCSSUnit_RootEM = 803 , eCSSUnit_Point = 900 , eCSSUnit_Inch = 901 , eCSSUnit_Millimeter = 902 , eCSSUnit_Centimeter = 903 , eCSSUnit_Pica = 904 , eCSSUnit_Quarter = 905 , eCSSUnit_Pixel = 906 , eCSSUnit_Degree = 1000 , eCSSUnit_Grad = 1001 , eCSSUnit_Radian = 1002 , eCSSUnit_Turn = 1003 , eCSSUnit_Hertz = 2000 , eCSSUnit_Kilohertz = 2001 , eCSSUnit_Seconds = 3000 , eCSSUnit_Milliseconds = 3001 , eCSSUnit_FlexFraction = 4000 , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValue { pub mUnit : root :: nsCSSUnit , pub mValue : root :: nsCSSValue__bindgen_ty_1 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsCSSValue__bindgen_ty_1 { pub mInt : root :: __BindgenUnionField < i32 > , pub mFloat : root :: __BindgenUnionField < f32 > , pub mString : root :: __BindgenUnionField < * mut root :: nsStringBuffer > , pub mColor : root :: __BindgenUnionField < root :: nscolor > , pub mAtom : root :: __BindgenUnionField < * mut root :: nsAtom > , pub mArray : root :: __BindgenUnionField < * mut root :: nsCSSValue_Array > , pub mURL : root :: __BindgenUnionField < * mut root :: mozilla :: css :: URLValue > , pub mImage : root :: __BindgenUnionField < * mut root :: mozilla :: css :: ImageValue > , pub mGridTemplateAreas : root :: __BindgenUnionField < * mut root :: mozilla :: css :: GridTemplateAreasValue > , pub mGradient : root :: __BindgenUnionField < * mut root :: nsCSSValueGradient > , pub mTokenStream : root :: __BindgenUnionField < * mut root :: nsCSSValueTokenStream > , pub mPair : root :: __BindgenUnionField < * mut root :: nsCSSValuePair_heap > , pub mRect : root :: __BindgenUnionField < * mut root :: nsCSSRect_heap > , pub mTriplet : root :: __BindgenUnionField < * mut root :: nsCSSValueTriplet_heap > , pub mList : root :: __BindgenUnionField < * mut root :: nsCSSValueList_heap > , pub mListDependent : root :: __BindgenUnionField < * mut root :: nsCSSValueList > , pub mSharedList : root :: __BindgenUnionField < * mut root :: nsCSSValueSharedList > , pub mPairList : root :: __BindgenUnionField < * mut root :: nsCSSValuePairList_heap > , pub mPairListDependent : root :: __BindgenUnionField < * mut root :: nsCSSValuePairList > , pub mFloatColor : root :: __BindgenUnionField < * mut root :: nsCSSValueFloatColor > , pub mFontFamilyList : root :: __BindgenUnionField < * mut root :: mozilla :: SharedFontList > , pub mComplexColor : root :: __BindgenUnionField < * mut root :: mozilla :: css :: ComplexColorValue > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsCSSValue__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValue__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValue__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValue__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mInt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mInt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mFloat as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mFloat ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mString as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mAtom as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mAtom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mArray as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mArray ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mURL as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mURL ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mImage as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mGridTemplateAreas as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mGridTemplateAreas ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mGradient as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mGradient ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mTokenStream as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mTokenStream ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mPair as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mPair ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mRect as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mRect ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mTriplet as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mTriplet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mList as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mListDependent as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mListDependent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mSharedList as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mSharedList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mPairList as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mPairList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mPairListDependent as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mPairListDependent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mFloatColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mFloatColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mFontFamilyList as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mFontFamilyList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue__bindgen_ty_1 ) ) . mComplexColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue__bindgen_ty_1 ) , "::" , stringify ! ( mComplexColor ) ) ) ; } impl Clone for nsCSSValue__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsCSSValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValue > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsCSSValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue ) ) . mUnit as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue ) , "::" , stringify ! ( mUnit ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue ) ) . mValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue ) , "::" , stringify ! ( mValue ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValue_Array { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mCount : usize , pub mArray : [ root :: nsCSSValue ; 1usize ] , } pub type nsCSSValue_Array_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsCSSValue_Array ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValue_Array > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsCSSValue_Array ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValue_Array > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValue_Array ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue_Array ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue_Array ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue_Array ) ) . mCount as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue_Array ) , "::" , stringify ! ( mCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValue_Array ) ) . mArray as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValue_Array ) , "::" , stringify ! ( mArray ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValueList { pub mValue : root :: nsCSSValue , pub mNext : * mut root :: nsCSSValueList , } # [ test ] fn bindgen_test_layout_nsCSSValueList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueList > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueList ) ) . mValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueList ) , "::" , stringify ! ( mValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueList ) ) . mNext as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueList ) , "::" , stringify ! ( mNext ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValueList_heap { pub _base : root :: nsCSSValueList , pub mRefCnt : root :: nsAutoRefCnt , } pub type nsCSSValueList_heap_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsCSSValueList_heap ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueList_heap > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueList_heap ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueList_heap > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueList_heap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueList_heap ) ) . mRefCnt as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueList_heap ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValueSharedList { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mHead : * mut root :: nsCSSValueList , } pub type nsCSSValueSharedList_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsCSSValueSharedList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueSharedList > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueSharedList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueSharedList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueSharedList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueSharedList ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueSharedList ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueSharedList ) ) . mHead as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueSharedList ) , "::" , stringify ! ( mHead ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSRect { pub mTop : root :: nsCSSValue , pub mRight : root :: nsCSSValue , pub mBottom : root :: nsCSSValue , pub mLeft : root :: nsCSSValue , } pub type nsCSSRect_side_type = * mut root :: nsCSSValue ; extern "C" { - # [ link_name = "\u{1}_ZN9nsCSSRect5sidesE" ] - pub static mut nsCSSRect_sides : [ root :: nsCSSRect_side_type ; 4usize ] ; -} # [ test ] fn bindgen_test_layout_nsCSSRect ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSRect > ( ) , 64usize , concat ! ( "Size of: " , stringify ! ( nsCSSRect ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSRect > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSRect ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSRect ) ) . mTop as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSRect ) , "::" , stringify ! ( mTop ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSRect ) ) . mRight as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSRect ) , "::" , stringify ! ( mRight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSRect ) ) . mBottom as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSRect ) , "::" , stringify ! ( mBottom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSRect ) ) . mLeft as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSRect ) , "::" , stringify ! ( mLeft ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSRect_heap { pub _base : root :: nsCSSRect , pub mRefCnt : root :: nsAutoRefCnt , } pub type nsCSSRect_heap_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsCSSRect_heap ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSRect_heap > ( ) , 72usize , concat ! ( "Size of: " , stringify ! ( nsCSSRect_heap ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSRect_heap > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSRect_heap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSRect_heap ) ) . mRefCnt as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSRect_heap ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValuePair { pub mXValue : root :: nsCSSValue , pub mYValue : root :: nsCSSValue , } # [ test ] fn bindgen_test_layout_nsCSSValuePair ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValuePair > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsCSSValuePair ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValuePair > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValuePair ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValuePair ) ) . mXValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValuePair ) , "::" , stringify ! ( mXValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValuePair ) ) . mYValue as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValuePair ) , "::" , stringify ! ( mYValue ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValuePair_heap { pub _base : root :: nsCSSValuePair , pub mRefCnt : root :: nsAutoRefCnt , } pub type nsCSSValuePair_heap_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsCSSValuePair_heap ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValuePair_heap > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsCSSValuePair_heap ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValuePair_heap > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValuePair_heap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValuePair_heap ) ) . mRefCnt as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValuePair_heap ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValueTriplet { pub mXValue : root :: nsCSSValue , pub mYValue : root :: nsCSSValue , pub mZValue : root :: nsCSSValue , } # [ test ] fn bindgen_test_layout_nsCSSValueTriplet ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueTriplet > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueTriplet ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueTriplet > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueTriplet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTriplet ) ) . mXValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTriplet ) , "::" , stringify ! ( mXValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTriplet ) ) . mYValue as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTriplet ) , "::" , stringify ! ( mYValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTriplet ) ) . mZValue as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTriplet ) , "::" , stringify ! ( mZValue ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValueTriplet_heap { pub _base : root :: nsCSSValueTriplet , pub mRefCnt : root :: nsAutoRefCnt , } pub type nsCSSValueTriplet_heap_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsCSSValueTriplet_heap ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueTriplet_heap > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueTriplet_heap ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueTriplet_heap > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueTriplet_heap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTriplet_heap ) ) . mRefCnt as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTriplet_heap ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValuePairList { pub mXValue : root :: nsCSSValue , pub mYValue : root :: nsCSSValue , pub mNext : * mut root :: nsCSSValuePairList , } # [ test ] fn bindgen_test_layout_nsCSSValuePairList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValuePairList > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsCSSValuePairList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValuePairList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValuePairList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValuePairList ) ) . mXValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValuePairList ) , "::" , stringify ! ( mXValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValuePairList ) ) . mYValue as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValuePairList ) , "::" , stringify ! ( mYValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValuePairList ) ) . mNext as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValuePairList ) , "::" , stringify ! ( mNext ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValuePairList_heap { pub _base : root :: nsCSSValuePairList , pub mRefCnt : root :: nsAutoRefCnt , } pub type nsCSSValuePairList_heap_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsCSSValuePairList_heap ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValuePairList_heap > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( nsCSSValuePairList_heap ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValuePairList_heap > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValuePairList_heap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValuePairList_heap ) ) . mRefCnt as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValuePairList_heap ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValueGradientStop { pub mLocation : root :: nsCSSValue , pub mColor : root :: nsCSSValue , pub mIsInterpolationHint : bool , } # [ test ] fn bindgen_test_layout_nsCSSValueGradientStop ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueGradientStop > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueGradientStop ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueGradientStop > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueGradientStop ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradientStop ) ) . mLocation as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradientStop ) , "::" , stringify ! ( mLocation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradientStop ) ) . mColor as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradientStop ) , "::" , stringify ! ( mColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradientStop ) ) . mIsInterpolationHint as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradientStop ) , "::" , stringify ! ( mIsInterpolationHint ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValueGradient { pub mIsRadial : bool , pub mIsRepeating : bool , pub mIsLegacySyntax : bool , pub mIsMozLegacySyntax : bool , pub mIsExplicitSize : bool , pub mBgPos : root :: nsCSSValuePair , pub mAngle : root :: nsCSSValue , pub mRadialValues : [ root :: nsCSSValue ; 2usize ] , pub mStops : root :: nsTArray < root :: nsCSSValueGradientStop > , pub mRefCnt : root :: nsAutoRefCnt , } pub type nsCSSValueGradient_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsCSSValueGradient ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueGradient > ( ) , 104usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueGradient ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueGradient > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueGradient ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mIsRadial as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mIsRadial ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mIsRepeating as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mIsRepeating ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mIsLegacySyntax as * const _ as usize } , 2usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mIsLegacySyntax ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mIsMozLegacySyntax as * const _ as usize } , 3usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mIsMozLegacySyntax ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mIsExplicitSize as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mIsExplicitSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mBgPos as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mBgPos ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mAngle as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mAngle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mRadialValues as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mRadialValues ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mStops as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mStops ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueGradient ) ) . mRefCnt as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueGradient ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] pub struct nsCSSValueTokenStream { pub mRefCnt : root :: nsAutoRefCnt , pub mPropertyID : root :: nsCSSPropertyID , pub mShorthandPropertyID : root :: nsCSSPropertyID , pub mTokenStream : ::nsstring::nsStringRepr , pub mBaseURI : root :: nsCOMPtr , pub mSheetURI : root :: nsCOMPtr , pub mSheetPrincipal : root :: nsCOMPtr , pub mLineNumber : u32 , pub mLineOffset : u32 , pub mLevel : root :: mozilla :: SheetType , } pub type nsCSSValueTokenStream_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsCSSValueTokenStream ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueTokenStream > ( ) , 72usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueTokenStream ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueTokenStream > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueTokenStream ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mPropertyID as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mPropertyID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mShorthandPropertyID as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mShorthandPropertyID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mTokenStream as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mTokenStream ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mBaseURI as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mBaseURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mSheetURI as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mSheetURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mSheetPrincipal as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mSheetPrincipal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mLineNumber as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mLineNumber ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mLineOffset as * const _ as usize } , 60usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mLineOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueTokenStream ) ) . mLevel as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueTokenStream ) , "::" , stringify ! ( mLevel ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSValueFloatColor { pub mRefCnt : root :: nsAutoRefCnt , pub mComponent1 : f32 , pub mComponent2 : f32 , pub mComponent3 : f32 , pub mAlpha : f32 , } pub type nsCSSValueFloatColor_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsCSSValueFloatColor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSValueFloatColor > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsCSSValueFloatColor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSValueFloatColor > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSValueFloatColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueFloatColor ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueFloatColor ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueFloatColor ) ) . mComponent1 as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueFloatColor ) , "::" , stringify ! ( mComponent1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueFloatColor ) ) . mComponent2 as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueFloatColor ) , "::" , stringify ! ( mComponent2 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueFloatColor ) ) . mComponent3 as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueFloatColor ) , "::" , stringify ! ( mComponent3 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSValueFloatColor ) ) . mAlpha as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSValueFloatColor ) , "::" , stringify ! ( mAlpha ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct imgIContainer { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct imgIRequest { pub _base : root :: nsIRequest , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct imgIRequest_COMTypeInfo { pub _address : u8 , } pub const imgIRequest_STATUS_NONE : root :: imgIRequest__bindgen_ty_1 = 0 ; pub const imgIRequest_STATUS_SIZE_AVAILABLE : root :: imgIRequest__bindgen_ty_1 = 1 ; pub const imgIRequest_STATUS_LOAD_COMPLETE : root :: imgIRequest__bindgen_ty_1 = 2 ; pub const imgIRequest_STATUS_ERROR : root :: imgIRequest__bindgen_ty_1 = 4 ; pub const imgIRequest_STATUS_FRAME_COMPLETE : root :: imgIRequest__bindgen_ty_1 = 8 ; pub const imgIRequest_STATUS_DECODE_COMPLETE : root :: imgIRequest__bindgen_ty_1 = 16 ; pub const imgIRequest_STATUS_IS_ANIMATED : root :: imgIRequest__bindgen_ty_1 = 32 ; pub const imgIRequest_STATUS_HAS_TRANSPARENCY : root :: imgIRequest__bindgen_ty_1 = 64 ; pub type imgIRequest__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; pub const imgIRequest_CORS_NONE : root :: imgIRequest__bindgen_ty_2 = 1 ; pub const imgIRequest_CORS_ANONYMOUS : root :: imgIRequest__bindgen_ty_2 = 2 ; pub const imgIRequest_CORS_USE_CREDENTIALS : root :: imgIRequest__bindgen_ty_2 = 3 ; pub type imgIRequest__bindgen_ty_2 = :: std :: os :: raw :: c_uint ; pub const imgIRequest_CATEGORY_FRAME_INIT : root :: imgIRequest__bindgen_ty_3 = 1 ; pub const imgIRequest_CATEGORY_SIZE_QUERY : root :: imgIRequest__bindgen_ty_3 = 2 ; pub const imgIRequest_CATEGORY_DISPLAY : root :: imgIRequest__bindgen_ty_3 = 4 ; pub type imgIRequest__bindgen_ty_3 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_imgIRequest ( ) { assert_eq ! ( :: std :: mem :: size_of :: < imgIRequest > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( imgIRequest ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < imgIRequest > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( imgIRequest ) ) ) ; } impl Clone for imgIRequest { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsISecurityInfoProvider { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsISecurityInfoProvider_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsISecurityInfoProvider ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsISecurityInfoProvider > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsISecurityInfoProvider ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsISecurityInfoProvider > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsISecurityInfoProvider ) ) ) ; } impl Clone for nsISecurityInfoProvider { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsISupportsPriority { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsISupportsPriority_COMTypeInfo { pub _address : u8 , } pub const nsISupportsPriority_PRIORITY_HIGHEST : root :: nsISupportsPriority__bindgen_ty_1 = -20 ; pub const nsISupportsPriority_PRIORITY_HIGH : root :: nsISupportsPriority__bindgen_ty_1 = -10 ; pub const nsISupportsPriority_PRIORITY_NORMAL : root :: nsISupportsPriority__bindgen_ty_1 = 0 ; pub const nsISupportsPriority_PRIORITY_LOW : root :: nsISupportsPriority__bindgen_ty_1 = 10 ; pub const nsISupportsPriority_PRIORITY_LOWEST : root :: nsISupportsPriority__bindgen_ty_1 = 20 ; pub type nsISupportsPriority__bindgen_ty_1 = :: std :: os :: raw :: c_int ; # [ test ] fn bindgen_test_layout_nsISupportsPriority ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsISupportsPriority > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsISupportsPriority ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsISupportsPriority > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsISupportsPriority ) ) ) ; } impl Clone for nsISupportsPriority { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsITimedChannel { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsITimedChannel_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsITimedChannel ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsITimedChannel > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsITimedChannel ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsITimedChannel > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsITimedChannel ) ) ) ; } impl Clone for nsITimedChannel { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIInterfaceRequestor { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIInterfaceRequestor_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIInterfaceRequestor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIInterfaceRequestor > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIInterfaceRequestor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIInterfaceRequestor > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIInterfaceRequestor ) ) ) ; } impl Clone for nsIInterfaceRequestor { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct ProxyBehaviour { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct imgRequestProxy { pub _base : root :: imgIRequest , pub _base_1 : root :: mozilla :: image :: IProgressObserver , pub _base_2 : root :: nsISupportsPriority , pub _base_3 : root :: nsISecurityInfoProvider , pub _base_4 : root :: nsITimedChannel , pub mRefCnt : root :: nsAutoRefCnt , pub mBehaviour : root :: mozilla :: UniquePtr < root :: ProxyBehaviour > , pub mURI : root :: RefPtr < root :: imgRequestProxy_ImageURL > , pub mListener : * mut root :: imgINotificationObserver , pub mLoadGroup : root :: nsCOMPtr , pub mTabGroup : root :: RefPtr < root :: mozilla :: dom :: TabGroup > , pub mEventTarget : root :: nsCOMPtr , pub mLoadFlags : root :: nsLoadFlags , pub mLockCount : u32 , pub mAnimationConsumers : u32 , pub _bitfield_1 : u8 , pub __bindgen_padding_0 : [ u8 ; 3usize ] , } pub type imgRequestProxy_Image = root :: mozilla :: image :: Image ; pub type imgRequestProxy_ImageURL = root :: mozilla :: image :: ImageURL ; pub type imgRequestProxy_ProgressTracker = root :: mozilla :: image :: ProgressTracker ; pub type imgRequestProxy_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct imgRequestProxy_imgCancelRunnable { pub _base : root :: mozilla :: Runnable , pub mOwner : root :: RefPtr < root :: imgRequestProxy > , pub mStatus : root :: nsresult , } # [ test ] fn bindgen_test_layout_imgRequestProxy_imgCancelRunnable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < imgRequestProxy_imgCancelRunnable > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( imgRequestProxy_imgCancelRunnable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < imgRequestProxy_imgCancelRunnable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( imgRequestProxy_imgCancelRunnable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const imgRequestProxy_imgCancelRunnable ) ) . mOwner as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( imgRequestProxy_imgCancelRunnable ) , "::" , stringify ! ( mOwner ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const imgRequestProxy_imgCancelRunnable ) ) . mStatus as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( imgRequestProxy_imgCancelRunnable ) , "::" , stringify ! ( mStatus ) ) ) ; } # [ test ] fn bindgen_test_layout_imgRequestProxy ( ) { assert_eq ! ( :: std :: mem :: size_of :: < imgRequestProxy > ( ) , 120usize , concat ! ( "Size of: " , stringify ! ( imgRequestProxy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < imgRequestProxy > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( imgRequestProxy ) ) ) ; } impl imgRequestProxy { # [ inline ] pub fn mCanceled ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x1 as u8 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mCanceled ( & mut self , val : bool ) { let mask = 0x1 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mIsInLoadGroup ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x2 as u8 ; let val = ( unit_field_val & mask ) >> 1usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsInLoadGroup ( & mut self , val : bool ) { let mask = 0x2 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 1usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mForceDispatchLoadGroup ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x4 as u8 ; let val = ( unit_field_val & mask ) >> 2usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mForceDispatchLoadGroup ( & mut self , val : bool ) { let mask = 0x4 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 2usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mListenerIsStrongRef ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x8 as u8 ; let val = ( unit_field_val & mask ) >> 3usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mListenerIsStrongRef ( & mut self , val : bool ) { let mask = 0x8 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 3usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mDecodeRequested ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x10 as u8 ; let val = ( unit_field_val & mask ) >> 4usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mDecodeRequested ( & mut self , val : bool ) { let mask = 0x10 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 4usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mDeferNotifications ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x20 as u8 ; let val = ( unit_field_val & mask ) >> 5usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mDeferNotifications ( & mut self , val : bool ) { let mask = 0x20 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 5usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mHadListener ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x40 as u8 ; let val = ( unit_field_val & mask ) >> 6usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHadListener ( & mut self , val : bool ) { let mask = 0x40 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 6usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mHadDispatch ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x80 as u8 ; let val = ( unit_field_val & mask ) >> 7usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mHadDispatch ( & mut self , val : bool ) { let mask = 0x80 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 7usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mCanceled : bool , mIsInLoadGroup : bool , mForceDispatchLoadGroup : bool , mListenerIsStrongRef : bool , mDecodeRequested : bool , mDeferNotifications : bool , mHadListener : bool , mHadDispatch : bool ) -> u8 { ( ( ( ( ( ( ( ( 0 | ( ( mCanceled as u8 as u8 ) << 0usize ) & ( 0x1 as u8 ) ) | ( ( mIsInLoadGroup as u8 as u8 ) << 1usize ) & ( 0x2 as u8 ) ) | ( ( mForceDispatchLoadGroup as u8 as u8 ) << 2usize ) & ( 0x4 as u8 ) ) | ( ( mListenerIsStrongRef as u8 as u8 ) << 3usize ) & ( 0x8 as u8 ) ) | ( ( mDecodeRequested as u8 as u8 ) << 4usize ) & ( 0x10 as u8 ) ) | ( ( mDeferNotifications as u8 as u8 ) << 5usize ) & ( 0x20 as u8 ) ) | ( ( mHadListener as u8 as u8 ) << 6usize ) & ( 0x40 as u8 ) ) | ( ( mHadDispatch as u8 as u8 ) << 7usize ) & ( 0x80 as u8 ) ) } } # [ repr ( C ) ] pub struct nsStyleFont { pub mFont : root :: nsFont , pub mSize : root :: nscoord , pub mFontSizeFactor : f32 , pub mFontSizeOffset : root :: nscoord , pub mFontSizeKeyword : u8 , pub mGenericID : u8 , pub mScriptLevel : i8 , pub mMathVariant : u8 , pub mMathDisplay : u8 , pub mMinFontSizeRatio : u8 , pub mExplicitLanguage : bool , pub mAllowZoom : bool , pub mScriptUnconstrainedSize : root :: nscoord , pub mScriptMinSize : root :: nscoord , pub mScriptSizeMultiplier : f32 , pub mLanguage : root :: RefPtr < root :: nsAtom > , } pub const nsStyleFont_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleFont ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleFont > ( ) , 136usize , concat ! ( "Size of: " , stringify ! ( nsStyleFont ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleFont > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mFont as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mFont ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mSize as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mFontSizeFactor as * const _ as usize } , 100usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mFontSizeFactor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mFontSizeOffset as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mFontSizeOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mFontSizeKeyword as * const _ as usize } , 108usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mFontSizeKeyword ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mGenericID as * const _ as usize } , 109usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mGenericID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mScriptLevel as * const _ as usize } , 110usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mScriptLevel ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mMathVariant as * const _ as usize } , 111usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mMathVariant ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mMathDisplay as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mMathDisplay ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mMinFontSizeRatio as * const _ as usize } , 113usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mMinFontSizeRatio ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mExplicitLanguage as * const _ as usize } , 114usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mExplicitLanguage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mAllowZoom as * const _ as usize } , 115usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mAllowZoom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mScriptUnconstrainedSize as * const _ as usize } , 116usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mScriptUnconstrainedSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mScriptMinSize as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mScriptMinSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mScriptSizeMultiplier as * const _ as usize } , 124usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mScriptSizeMultiplier ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFont ) ) . mLanguage as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFont ) , "::" , stringify ! ( mLanguage ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleGradientStop { pub mLocation : root :: nsStyleCoord , pub mColor : root :: nscolor , pub mIsInterpolationHint : bool , } # [ test ] fn bindgen_test_layout_nsStyleGradientStop ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleGradientStop > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStyleGradientStop ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleGradientStop > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleGradientStop ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradientStop ) ) . mLocation as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradientStop ) , "::" , stringify ! ( mLocation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradientStop ) ) . mColor as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradientStop ) , "::" , stringify ! ( mColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradientStop ) ) . mIsInterpolationHint as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradientStop ) , "::" , stringify ! ( mIsInterpolationHint ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleGradient { pub mShape : u8 , pub mSize : u8 , pub mRepeating : bool , pub mLegacySyntax : bool , pub mMozLegacySyntax : bool , pub mBgPosX : root :: nsStyleCoord , pub mBgPosY : root :: nsStyleCoord , pub mAngle : root :: nsStyleCoord , pub mRadiusX : root :: nsStyleCoord , pub mRadiusY : root :: nsStyleCoord , pub mStops : root :: nsTArray < root :: nsStyleGradientStop > , pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , } pub type nsStyleGradient_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsStyleGradient ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleGradient > ( ) , 104usize , concat ! ( "Size of: " , stringify ! ( nsStyleGradient ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleGradient > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleGradient ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mShape as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mShape ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mSize as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mRepeating as * const _ as usize } , 2usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mRepeating ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mLegacySyntax as * const _ as usize } , 3usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mLegacySyntax ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mMozLegacySyntax as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mMozLegacySyntax ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mBgPosX as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mBgPosX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mBgPosY as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mBgPosY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mAngle as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mAngle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mRadiusX as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mRadiusX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mRadiusY as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mRadiusY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mStops as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mStops ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGradient ) ) . mRefCnt as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGradient ) , "::" , stringify ! ( mRefCnt ) ) ) ; } - /// A wrapper for an imgRequestProxy that supports off-main-thread creation + /// an nsMainThreadPtrHandle<T> rather than an nsCOMPtr<T>. + #[repr(C)] + #[derive(Debug)] + pub struct nsMainThreadPtrHolder<T> { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mRawPtr: *mut T, + pub mStrict: bool, + pub mMainThreadEventTarget: root::nsCOMPtr, + pub mName: *const ::std::os::raw::c_char, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + pub type nsMainThreadPtrHolder_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[repr(C)] + #[derive(Debug)] + pub struct nsMainThreadPtrHandle<T> { + pub mPtr: root::RefPtr<root::nsMainThreadPtrHolder<T>>, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsCSSUnit { + eCSSUnit_Null = 0, + eCSSUnit_Auto = 1, + eCSSUnit_Inherit = 2, + eCSSUnit_Initial = 3, + eCSSUnit_Unset = 4, + eCSSUnit_None = 5, + eCSSUnit_Normal = 6, + eCSSUnit_System_Font = 7, + eCSSUnit_All = 8, + eCSSUnit_Dummy = 9, + eCSSUnit_DummyInherit = 10, + eCSSUnit_String = 11, + eCSSUnit_Ident = 12, + eCSSUnit_Attr = 14, + eCSSUnit_Local_Font = 15, + eCSSUnit_Font_Format = 16, + eCSSUnit_Element = 17, + eCSSUnit_Array = 20, + eCSSUnit_Counter = 21, + eCSSUnit_Counters = 22, + eCSSUnit_Cubic_Bezier = 23, + eCSSUnit_Steps = 24, + eCSSUnit_Symbols = 25, + eCSSUnit_Function = 26, + eCSSUnit_Calc = 30, + eCSSUnit_Calc_Plus = 31, + eCSSUnit_Calc_Minus = 32, + eCSSUnit_Calc_Times_L = 33, + eCSSUnit_Calc_Times_R = 34, + eCSSUnit_Calc_Divided = 35, + eCSSUnit_URL = 40, + eCSSUnit_Image = 41, + eCSSUnit_Gradient = 42, + eCSSUnit_TokenStream = 43, + eCSSUnit_GridTemplateAreas = 44, + eCSSUnit_Pair = 50, + eCSSUnit_Triplet = 51, + eCSSUnit_Rect = 52, + eCSSUnit_List = 53, + eCSSUnit_ListDep = 54, + eCSSUnit_SharedList = 55, + eCSSUnit_PairList = 56, + eCSSUnit_PairListDep = 57, + eCSSUnit_FontFamilyList = 58, + eCSSUnit_AtomIdent = 60, + eCSSUnit_Integer = 70, + eCSSUnit_Enumerated = 71, + eCSSUnit_EnumColor = 80, + eCSSUnit_RGBColor = 81, + eCSSUnit_RGBAColor = 82, + eCSSUnit_HexColor = 83, + eCSSUnit_ShortHexColor = 84, + eCSSUnit_HexColorAlpha = 85, + eCSSUnit_ShortHexColorAlpha = 86, + eCSSUnit_PercentageRGBColor = 87, + eCSSUnit_PercentageRGBAColor = 88, + eCSSUnit_HSLColor = 89, + eCSSUnit_HSLAColor = 90, + eCSSUnit_ComplexColor = 91, + eCSSUnit_Percent = 100, + eCSSUnit_Number = 101, + eCSSUnit_ViewportWidth = 700, + eCSSUnit_ViewportHeight = 701, + eCSSUnit_ViewportMin = 702, + eCSSUnit_ViewportMax = 703, + eCSSUnit_EM = 800, + eCSSUnit_XHeight = 801, + eCSSUnit_Char = 802, + eCSSUnit_RootEM = 803, + eCSSUnit_Point = 900, + eCSSUnit_Inch = 901, + eCSSUnit_Millimeter = 902, + eCSSUnit_Centimeter = 903, + eCSSUnit_Pica = 904, + eCSSUnit_Quarter = 905, + eCSSUnit_Pixel = 906, + eCSSUnit_Degree = 1000, + eCSSUnit_Grad = 1001, + eCSSUnit_Radian = 1002, + eCSSUnit_Turn = 1003, + eCSSUnit_Hertz = 2000, + eCSSUnit_Kilohertz = 2001, + eCSSUnit_Seconds = 3000, + eCSSUnit_Milliseconds = 3001, + eCSSUnit_FlexFraction = 4000, + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValue { + pub mUnit: root::nsCSSUnit, + pub mValue: root::nsCSSValue__bindgen_ty_1, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsCSSValue__bindgen_ty_1 { + pub mInt: root::__BindgenUnionField<i32>, + pub mFloat: root::__BindgenUnionField<f32>, + pub mString: root::__BindgenUnionField<*mut root::nsStringBuffer>, + pub mColor: root::__BindgenUnionField<root::nscolor>, + pub mAtom: root::__BindgenUnionField<*mut root::nsAtom>, + pub mArray: root::__BindgenUnionField<*mut root::nsCSSValue_Array>, + pub mURL: root::__BindgenUnionField<*mut root::mozilla::css::URLValue>, + pub mImage: root::__BindgenUnionField<*mut root::mozilla::css::ImageValue>, + pub mGridTemplateAreas: + root::__BindgenUnionField<*mut root::mozilla::css::GridTemplateAreasValue>, + pub mGradient: root::__BindgenUnionField<*mut root::nsCSSValueGradient>, + pub mTokenStream: root::__BindgenUnionField<*mut root::nsCSSValueTokenStream>, + pub mPair: root::__BindgenUnionField<*mut root::nsCSSValuePair_heap>, + pub mRect: root::__BindgenUnionField<*mut root::nsCSSRect_heap>, + pub mTriplet: root::__BindgenUnionField<*mut root::nsCSSValueTriplet_heap>, + pub mList: root::__BindgenUnionField<*mut root::nsCSSValueList_heap>, + pub mListDependent: root::__BindgenUnionField<*mut root::nsCSSValueList>, + pub mSharedList: root::__BindgenUnionField<*mut root::nsCSSValueSharedList>, + pub mPairList: root::__BindgenUnionField<*mut root::nsCSSValuePairList_heap>, + pub mPairListDependent: root::__BindgenUnionField<*mut root::nsCSSValuePairList>, + pub mFloatColor: root::__BindgenUnionField<*mut root::nsCSSValueFloatColor>, + pub mFontFamilyList: root::__BindgenUnionField<*mut root::mozilla::SharedFontList>, + pub mComplexColor: root::__BindgenUnionField<*mut root::mozilla::css::ComplexColorValue>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsCSSValue__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsCSSValue__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(nsCSSValue__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValue__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValue__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mInt as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mInt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mFloat as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mFloat) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mString as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mColor as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mAtom as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mAtom) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mArray as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mArray) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mURL as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mURL) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mImage as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mImage) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mGridTemplateAreas as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mGridTemplateAreas) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mGradient as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mGradient) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mTokenStream as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mTokenStream) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mPair as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mPair) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mRect as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mRect) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mTriplet as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mTriplet) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mList as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mListDependent as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mListDependent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mSharedList as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mSharedList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mPairList as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mPairList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mPairListDependent as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mPairListDependent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mFloatColor as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mFloatColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mFontFamilyList as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mFontFamilyList) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValue__bindgen_ty_1>())).mComplexColor as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue__bindgen_ty_1), + "::", + stringify!(mComplexColor) + ) + ); + } + impl Clone for nsCSSValue__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsCSSValue() { + assert_eq!( + ::std::mem::size_of::<nsCSSValue>(), + 16usize, + concat!("Size of: ", stringify!(nsCSSValue)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValue>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValue)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValue>())).mUnit as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue), + "::", + stringify!(mUnit) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValue>())).mValue as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue), + "::", + stringify!(mValue) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValue_Array { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mCount: usize, + pub mArray: [root::nsCSSValue; 1usize], + } + pub type nsCSSValue_Array_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsCSSValue_Array() { + assert_eq!( + ::std::mem::size_of::<nsCSSValue_Array>(), + 32usize, + concat!("Size of: ", stringify!(nsCSSValue_Array)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValue_Array>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValue_Array)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValue_Array>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue_Array), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValue_Array>())).mCount as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue_Array), + "::", + stringify!(mCount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValue_Array>())).mArray as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValue_Array), + "::", + stringify!(mArray) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValueList { + pub mValue: root::nsCSSValue, + pub mNext: *mut root::nsCSSValueList, + } + #[test] + fn bindgen_test_layout_nsCSSValueList() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueList>(), + 24usize, + concat!("Size of: ", stringify!(nsCSSValueList)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueList>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueList)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueList>())).mValue as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueList), + "::", + stringify!(mValue) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueList>())).mNext as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueList), + "::", + stringify!(mNext) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValueList_heap { + pub _base: root::nsCSSValueList, + pub mRefCnt: root::nsAutoRefCnt, + } + pub type nsCSSValueList_heap_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsCSSValueList_heap() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueList_heap>(), + 32usize, + concat!("Size of: ", stringify!(nsCSSValueList_heap)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueList_heap>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueList_heap)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueList_heap>())).mRefCnt as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueList_heap), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValueSharedList { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mHead: *mut root::nsCSSValueList, + } + pub type nsCSSValueSharedList_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsCSSValueSharedList() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueSharedList>(), + 16usize, + concat!("Size of: ", stringify!(nsCSSValueSharedList)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueSharedList>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueSharedList)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueSharedList>())).mRefCnt as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueSharedList), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueSharedList>())).mHead as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueSharedList), + "::", + stringify!(mHead) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSRect { + pub mTop: root::nsCSSValue, + pub mRight: root::nsCSSValue, + pub mBottom: root::nsCSSValue, + pub mLeft: root::nsCSSValue, + } + pub type nsCSSRect_side_type = *mut root::nsCSSValue; + extern "C" { + #[link_name = "\u{1}_ZN9nsCSSRect5sidesE"] + pub static mut nsCSSRect_sides: [root::nsCSSRect_side_type; 4usize]; + } + #[test] + fn bindgen_test_layout_nsCSSRect() { + assert_eq!( + ::std::mem::size_of::<nsCSSRect>(), + 64usize, + concat!("Size of: ", stringify!(nsCSSRect)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSRect>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSRect)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSRect>())).mTop as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSRect), + "::", + stringify!(mTop) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSRect>())).mRight as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSRect), + "::", + stringify!(mRight) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSRect>())).mBottom as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsCSSRect), + "::", + stringify!(mBottom) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSRect>())).mLeft as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsCSSRect), + "::", + stringify!(mLeft) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSRect_heap { + pub _base: root::nsCSSRect, + pub mRefCnt: root::nsAutoRefCnt, + } + pub type nsCSSRect_heap_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsCSSRect_heap() { + assert_eq!( + ::std::mem::size_of::<nsCSSRect_heap>(), + 72usize, + concat!("Size of: ", stringify!(nsCSSRect_heap)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSRect_heap>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSRect_heap)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSRect_heap>())).mRefCnt as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsCSSRect_heap), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValuePair { + pub mXValue: root::nsCSSValue, + pub mYValue: root::nsCSSValue, + } + #[test] + fn bindgen_test_layout_nsCSSValuePair() { + assert_eq!( + ::std::mem::size_of::<nsCSSValuePair>(), + 32usize, + concat!("Size of: ", stringify!(nsCSSValuePair)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValuePair>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValuePair)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValuePair>())).mXValue as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValuePair), + "::", + stringify!(mXValue) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValuePair>())).mYValue as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValuePair), + "::", + stringify!(mYValue) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValuePair_heap { + pub _base: root::nsCSSValuePair, + pub mRefCnt: root::nsAutoRefCnt, + } + pub type nsCSSValuePair_heap_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsCSSValuePair_heap() { + assert_eq!( + ::std::mem::size_of::<nsCSSValuePair_heap>(), + 40usize, + concat!("Size of: ", stringify!(nsCSSValuePair_heap)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValuePair_heap>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValuePair_heap)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValuePair_heap>())).mRefCnt as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValuePair_heap), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValueTriplet { + pub mXValue: root::nsCSSValue, + pub mYValue: root::nsCSSValue, + pub mZValue: root::nsCSSValue, + } + #[test] + fn bindgen_test_layout_nsCSSValueTriplet() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueTriplet>(), + 48usize, + concat!("Size of: ", stringify!(nsCSSValueTriplet)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueTriplet>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueTriplet)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueTriplet>())).mXValue as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTriplet), + "::", + stringify!(mXValue) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueTriplet>())).mYValue as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTriplet), + "::", + stringify!(mYValue) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueTriplet>())).mZValue as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTriplet), + "::", + stringify!(mZValue) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValueTriplet_heap { + pub _base: root::nsCSSValueTriplet, + pub mRefCnt: root::nsAutoRefCnt, + } + pub type nsCSSValueTriplet_heap_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsCSSValueTriplet_heap() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueTriplet_heap>(), + 56usize, + concat!("Size of: ", stringify!(nsCSSValueTriplet_heap)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueTriplet_heap>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueTriplet_heap)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTriplet_heap>())).mRefCnt as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTriplet_heap), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValuePairList { + pub mXValue: root::nsCSSValue, + pub mYValue: root::nsCSSValue, + pub mNext: *mut root::nsCSSValuePairList, + } + #[test] + fn bindgen_test_layout_nsCSSValuePairList() { + assert_eq!( + ::std::mem::size_of::<nsCSSValuePairList>(), + 40usize, + concat!("Size of: ", stringify!(nsCSSValuePairList)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValuePairList>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValuePairList)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValuePairList>())).mXValue as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValuePairList), + "::", + stringify!(mXValue) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValuePairList>())).mYValue as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValuePairList), + "::", + stringify!(mYValue) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValuePairList>())).mNext as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValuePairList), + "::", + stringify!(mNext) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValuePairList_heap { + pub _base: root::nsCSSValuePairList, + pub mRefCnt: root::nsAutoRefCnt, + } + pub type nsCSSValuePairList_heap_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsCSSValuePairList_heap() { + assert_eq!( + ::std::mem::size_of::<nsCSSValuePairList_heap>(), + 48usize, + concat!("Size of: ", stringify!(nsCSSValuePairList_heap)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValuePairList_heap>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValuePairList_heap)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValuePairList_heap>())).mRefCnt as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValuePairList_heap), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValueGradientStop { + pub mLocation: root::nsCSSValue, + pub mColor: root::nsCSSValue, + pub mIsInterpolationHint: bool, + } + #[test] + fn bindgen_test_layout_nsCSSValueGradientStop() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueGradientStop>(), + 40usize, + concat!("Size of: ", stringify!(nsCSSValueGradientStop)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueGradientStop>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueGradientStop)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradientStop>())).mLocation as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradientStop), + "::", + stringify!(mLocation) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradientStop>())).mColor as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradientStop), + "::", + stringify!(mColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradientStop>())).mIsInterpolationHint as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradientStop), + "::", + stringify!(mIsInterpolationHint) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValueGradient { + pub mIsRadial: bool, + pub mIsRepeating: bool, + pub mIsLegacySyntax: bool, + pub mIsMozLegacySyntax: bool, + pub mIsExplicitSize: bool, + pub mBgPos: root::nsCSSValuePair, + pub mAngle: root::nsCSSValue, + pub mRadialValues: [root::nsCSSValue; 2usize], + pub mStops: root::nsTArray<root::nsCSSValueGradientStop>, + pub mRefCnt: root::nsAutoRefCnt, + } + pub type nsCSSValueGradient_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsCSSValueGradient() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueGradient>(), + 104usize, + concat!("Size of: ", stringify!(nsCSSValueGradient)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueGradient>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueGradient)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradient>())).mIsRadial as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mIsRadial) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradient>())).mIsRepeating as *const _ as usize + }, + 1usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mIsRepeating) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradient>())).mIsLegacySyntax as *const _ as usize + }, + 2usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mIsLegacySyntax) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradient>())).mIsMozLegacySyntax as *const _ + as usize + }, + 3usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mIsMozLegacySyntax) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradient>())).mIsExplicitSize as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mIsExplicitSize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueGradient>())).mBgPos as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mBgPos) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueGradient>())).mAngle as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mAngle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueGradient>())).mRadialValues as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mRadialValues) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueGradient>())).mStops as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mStops) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueGradient>())).mRefCnt as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueGradient), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + pub struct nsCSSValueTokenStream { + pub mRefCnt: root::nsAutoRefCnt, + pub mPropertyID: root::nsCSSPropertyID, + pub mShorthandPropertyID: root::nsCSSPropertyID, + pub mTokenStream: ::nsstring::nsStringRepr, + pub mBaseURI: root::nsCOMPtr, + pub mSheetURI: root::nsCOMPtr, + pub mSheetPrincipal: root::nsCOMPtr, + pub mLineNumber: u32, + pub mLineOffset: u32, + pub mLevel: root::mozilla::SheetType, + } + pub type nsCSSValueTokenStream_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsCSSValueTokenStream() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueTokenStream>(), + 72usize, + concat!("Size of: ", stringify!(nsCSSValueTokenStream)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueTokenStream>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueTokenStream)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mRefCnt as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mPropertyID as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mPropertyID) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mShorthandPropertyID as *const _ + as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mShorthandPropertyID) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mTokenStream as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mTokenStream) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mBaseURI as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mBaseURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mSheetURI as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mSheetURI) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mSheetPrincipal as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mSheetPrincipal) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mLineNumber as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mLineNumber) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mLineOffset as *const _ as usize + }, + 60usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mLineOffset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueTokenStream>())).mLevel as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueTokenStream), + "::", + stringify!(mLevel) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSValueFloatColor { + pub mRefCnt: root::nsAutoRefCnt, + pub mComponent1: f32, + pub mComponent2: f32, + pub mComponent3: f32, + pub mAlpha: f32, + } + pub type nsCSSValueFloatColor_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsCSSValueFloatColor() { + assert_eq!( + ::std::mem::size_of::<nsCSSValueFloatColor>(), + 24usize, + concat!("Size of: ", stringify!(nsCSSValueFloatColor)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSValueFloatColor>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSValueFloatColor)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueFloatColor>())).mRefCnt as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueFloatColor), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueFloatColor>())).mComponent1 as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueFloatColor), + "::", + stringify!(mComponent1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueFloatColor>())).mComponent2 as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueFloatColor), + "::", + stringify!(mComponent2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSValueFloatColor>())).mComponent3 as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueFloatColor), + "::", + stringify!(mComponent3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSValueFloatColor>())).mAlpha as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsCSSValueFloatColor), + "::", + stringify!(mAlpha) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct imgIContainer { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct imgIRequest { + pub _base: root::nsIRequest, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct imgIRequest_COMTypeInfo { + pub _address: u8, + } + pub const imgIRequest_STATUS_NONE: root::imgIRequest__bindgen_ty_1 = 0; + pub const imgIRequest_STATUS_SIZE_AVAILABLE: root::imgIRequest__bindgen_ty_1 = 1; + pub const imgIRequest_STATUS_LOAD_COMPLETE: root::imgIRequest__bindgen_ty_1 = 2; + pub const imgIRequest_STATUS_ERROR: root::imgIRequest__bindgen_ty_1 = 4; + pub const imgIRequest_STATUS_FRAME_COMPLETE: root::imgIRequest__bindgen_ty_1 = 8; + pub const imgIRequest_STATUS_DECODE_COMPLETE: root::imgIRequest__bindgen_ty_1 = 16; + pub const imgIRequest_STATUS_IS_ANIMATED: root::imgIRequest__bindgen_ty_1 = 32; + pub const imgIRequest_STATUS_HAS_TRANSPARENCY: root::imgIRequest__bindgen_ty_1 = 64; + pub type imgIRequest__bindgen_ty_1 = u32; + pub const imgIRequest_CORS_NONE: root::imgIRequest__bindgen_ty_2 = 1; + pub const imgIRequest_CORS_ANONYMOUS: root::imgIRequest__bindgen_ty_2 = 2; + pub const imgIRequest_CORS_USE_CREDENTIALS: root::imgIRequest__bindgen_ty_2 = 3; + pub type imgIRequest__bindgen_ty_2 = u32; + pub const imgIRequest_CATEGORY_FRAME_INIT: root::imgIRequest__bindgen_ty_3 = 1; + pub const imgIRequest_CATEGORY_SIZE_QUERY: root::imgIRequest__bindgen_ty_3 = 2; + pub const imgIRequest_CATEGORY_DISPLAY: root::imgIRequest__bindgen_ty_3 = 4; + pub type imgIRequest__bindgen_ty_3 = u32; + #[test] + fn bindgen_test_layout_imgIRequest() { + assert_eq!( + ::std::mem::size_of::<imgIRequest>(), + 8usize, + concat!("Size of: ", stringify!(imgIRequest)) + ); + assert_eq!( + ::std::mem::align_of::<imgIRequest>(), + 8usize, + concat!("Alignment of ", stringify!(imgIRequest)) + ); + } + impl Clone for imgIRequest { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsISecurityInfoProvider { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsISecurityInfoProvider_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsISecurityInfoProvider() { + assert_eq!( + ::std::mem::size_of::<nsISecurityInfoProvider>(), + 8usize, + concat!("Size of: ", stringify!(nsISecurityInfoProvider)) + ); + assert_eq!( + ::std::mem::align_of::<nsISecurityInfoProvider>(), + 8usize, + concat!("Alignment of ", stringify!(nsISecurityInfoProvider)) + ); + } + impl Clone for nsISecurityInfoProvider { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsISupportsPriority { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsISupportsPriority_COMTypeInfo { + pub _address: u8, + } + pub const nsISupportsPriority_PRIORITY_HIGHEST: root::nsISupportsPriority__bindgen_ty_1 = -20; + pub const nsISupportsPriority_PRIORITY_HIGH: root::nsISupportsPriority__bindgen_ty_1 = -10; + pub const nsISupportsPriority_PRIORITY_NORMAL: root::nsISupportsPriority__bindgen_ty_1 = 0; + pub const nsISupportsPriority_PRIORITY_LOW: root::nsISupportsPriority__bindgen_ty_1 = 10; + pub const nsISupportsPriority_PRIORITY_LOWEST: root::nsISupportsPriority__bindgen_ty_1 = 20; + pub type nsISupportsPriority__bindgen_ty_1 = i32; + #[test] + fn bindgen_test_layout_nsISupportsPriority() { + assert_eq!( + ::std::mem::size_of::<nsISupportsPriority>(), + 8usize, + concat!("Size of: ", stringify!(nsISupportsPriority)) + ); + assert_eq!( + ::std::mem::align_of::<nsISupportsPriority>(), + 8usize, + concat!("Alignment of ", stringify!(nsISupportsPriority)) + ); + } + impl Clone for nsISupportsPriority { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsITimedChannel { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsITimedChannel_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsITimedChannel() { + assert_eq!( + ::std::mem::size_of::<nsITimedChannel>(), + 8usize, + concat!("Size of: ", stringify!(nsITimedChannel)) + ); + assert_eq!( + ::std::mem::align_of::<nsITimedChannel>(), + 8usize, + concat!("Alignment of ", stringify!(nsITimedChannel)) + ); + } + impl Clone for nsITimedChannel { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIInterfaceRequestor { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIInterfaceRequestor_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIInterfaceRequestor() { + assert_eq!( + ::std::mem::size_of::<nsIInterfaceRequestor>(), + 8usize, + concat!("Size of: ", stringify!(nsIInterfaceRequestor)) + ); + assert_eq!( + ::std::mem::align_of::<nsIInterfaceRequestor>(), + 8usize, + concat!("Alignment of ", stringify!(nsIInterfaceRequestor)) + ); + } + impl Clone for nsIInterfaceRequestor { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ProxyBehaviour { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug)] + pub struct imgRequestProxy { + pub _base: root::imgIRequest, + pub _base_1: root::mozilla::image::IProgressObserver, + pub _base_2: root::nsISupportsPriority, + pub _base_3: root::nsISecurityInfoProvider, + pub _base_4: root::nsITimedChannel, + pub mRefCnt: root::nsAutoRefCnt, + pub mBehaviour: root::mozilla::UniquePtr<root::ProxyBehaviour>, + pub mURI: root::RefPtr<root::imgRequestProxy_ImageURL>, + pub mListener: *mut root::imgINotificationObserver, + pub mLoadGroup: root::nsCOMPtr, + pub mTabGroup: root::RefPtr<root::mozilla::dom::TabGroup>, + pub mEventTarget: root::nsCOMPtr, + pub mLoadFlags: root::nsLoadFlags, + pub mLockCount: u32, + pub mAnimationConsumers: u32, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 1usize], u8>, + pub __bindgen_padding_0: [u8; 3usize], + } + pub type imgRequestProxy_Image = root::mozilla::image::Image; + pub type imgRequestProxy_ImageURL = root::mozilla::image::ImageURL; + pub type imgRequestProxy_ProgressTracker = root::mozilla::image::ProgressTracker; + pub type imgRequestProxy_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug)] + pub struct imgRequestProxy_imgCancelRunnable { + pub _base: root::mozilla::Runnable, + pub mOwner: root::RefPtr<root::imgRequestProxy>, + pub mStatus: root::nsresult, + } + #[test] + fn bindgen_test_layout_imgRequestProxy_imgCancelRunnable() { + assert_eq!( + ::std::mem::size_of::<imgRequestProxy_imgCancelRunnable>(), + 48usize, + concat!("Size of: ", stringify!(imgRequestProxy_imgCancelRunnable)) + ); + assert_eq!( + ::std::mem::align_of::<imgRequestProxy_imgCancelRunnable>(), + 8usize, + concat!( + "Alignment of ", + stringify!(imgRequestProxy_imgCancelRunnable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<imgRequestProxy_imgCancelRunnable>())).mOwner as *const _ + as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(imgRequestProxy_imgCancelRunnable), + "::", + stringify!(mOwner) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<imgRequestProxy_imgCancelRunnable>())).mStatus as *const _ + as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(imgRequestProxy_imgCancelRunnable), + "::", + stringify!(mStatus) + ) + ); + } + #[test] + fn bindgen_test_layout_imgRequestProxy() { + assert_eq!( + ::std::mem::size_of::<imgRequestProxy>(), + 120usize, + concat!("Size of: ", stringify!(imgRequestProxy)) + ); + assert_eq!( + ::std::mem::align_of::<imgRequestProxy>(), + 8usize, + concat!("Alignment of ", stringify!(imgRequestProxy)) + ); + } + impl imgRequestProxy { + #[inline] + pub fn mCanceled(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) } + } + #[inline] + pub fn set_mCanceled(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsInLoadGroup(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsInLoadGroup(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(1usize, 1u8, val as u64) + } + } + #[inline] + pub fn mForceDispatchLoadGroup(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) } + } + #[inline] + pub fn set_mForceDispatchLoadGroup(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(2usize, 1u8, val as u64) + } + } + #[inline] + pub fn mListenerIsStrongRef(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) } + } + #[inline] + pub fn set_mListenerIsStrongRef(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(3usize, 1u8, val as u64) + } + } + #[inline] + pub fn mDecodeRequested(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) } + } + #[inline] + pub fn set_mDecodeRequested(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(4usize, 1u8, val as u64) + } + } + #[inline] + pub fn mDeferNotifications(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) } + } + #[inline] + pub fn set_mDeferNotifications(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(5usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHadListener(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHadListener(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(6usize, 1u8, val as u64) + } + } + #[inline] + pub fn mHadDispatch(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) } + } + #[inline] + pub fn set_mHadDispatch(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(7usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mCanceled: bool, + mIsInLoadGroup: bool, + mForceDispatchLoadGroup: bool, + mListenerIsStrongRef: bool, + mDecodeRequested: bool, + mDeferNotifications: bool, + mHadListener: bool, + mHadDispatch: bool, + ) -> root::__BindgenBitfieldUnit<[u8; 1usize], u8> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 1usize], + u8, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let mCanceled: u8 = unsafe { ::std::mem::transmute(mCanceled) }; + mCanceled as u64 + }); + __bindgen_bitfield_unit.set(1usize, 1u8, { + let mIsInLoadGroup: u8 = unsafe { ::std::mem::transmute(mIsInLoadGroup) }; + mIsInLoadGroup as u64 + }); + __bindgen_bitfield_unit.set(2usize, 1u8, { + let mForceDispatchLoadGroup: u8 = + unsafe { ::std::mem::transmute(mForceDispatchLoadGroup) }; + mForceDispatchLoadGroup as u64 + }); + __bindgen_bitfield_unit.set(3usize, 1u8, { + let mListenerIsStrongRef: u8 = + unsafe { ::std::mem::transmute(mListenerIsStrongRef) }; + mListenerIsStrongRef as u64 + }); + __bindgen_bitfield_unit.set(4usize, 1u8, { + let mDecodeRequested: u8 = unsafe { ::std::mem::transmute(mDecodeRequested) }; + mDecodeRequested as u64 + }); + __bindgen_bitfield_unit.set(5usize, 1u8, { + let mDeferNotifications: u8 = unsafe { ::std::mem::transmute(mDeferNotifications) }; + mDeferNotifications as u64 + }); + __bindgen_bitfield_unit.set(6usize, 1u8, { + let mHadListener: u8 = unsafe { ::std::mem::transmute(mHadListener) }; + mHadListener as u64 + }); + __bindgen_bitfield_unit.set(7usize, 1u8, { + let mHadDispatch: u8 = unsafe { ::std::mem::transmute(mHadDispatch) }; + mHadDispatch as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(C)] + pub struct nsStyleFont { + pub mFont: root::nsFont, + pub mSize: root::nscoord, + pub mFontSizeFactor: f32, + pub mFontSizeOffset: root::nscoord, + pub mFontSizeKeyword: u8, + pub mGenericID: u8, + pub mScriptLevel: i8, + pub mMathVariant: u8, + pub mMathDisplay: u8, + pub mMinFontSizeRatio: u8, + pub mExplicitLanguage: bool, + pub mAllowZoom: bool, + pub mScriptUnconstrainedSize: root::nscoord, + pub mScriptMinSize: root::nscoord, + pub mScriptSizeMultiplier: f32, + pub mLanguage: root::RefPtr<root::nsAtom>, + } + pub const nsStyleFont_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleFont() { + assert_eq!( + ::std::mem::size_of::<nsStyleFont>(), + 136usize, + concat!("Size of: ", stringify!(nsStyleFont)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleFont>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleFont)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mFont as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mFont) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mSize as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mSize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mFontSizeFactor as *const _ as usize }, + 100usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mFontSizeFactor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mFontSizeOffset as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mFontSizeOffset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleFont>())).mFontSizeKeyword as *const _ as usize + }, + 108usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mFontSizeKeyword) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mGenericID as *const _ as usize }, + 109usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mGenericID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mScriptLevel as *const _ as usize }, + 110usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mScriptLevel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mMathVariant as *const _ as usize }, + 111usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mMathVariant) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mMathDisplay as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mMathDisplay) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleFont>())).mMinFontSizeRatio as *const _ as usize + }, + 113usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mMinFontSizeRatio) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleFont>())).mExplicitLanguage as *const _ as usize + }, + 114usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mExplicitLanguage) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mAllowZoom as *const _ as usize }, + 115usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mAllowZoom) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleFont>())).mScriptUnconstrainedSize as *const _ + as usize + }, + 116usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mScriptUnconstrainedSize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mScriptMinSize as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mScriptMinSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleFont>())).mScriptSizeMultiplier as *const _ as usize + }, + 124usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mScriptSizeMultiplier) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFont>())).mLanguage as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFont), + "::", + stringify!(mLanguage) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleGradientStop { + pub mLocation: root::nsStyleCoord, + pub mColor: root::nscolor, + pub mIsInterpolationHint: bool, + } + #[test] + fn bindgen_test_layout_nsStyleGradientStop() { + assert_eq!( + ::std::mem::size_of::<nsStyleGradientStop>(), + 24usize, + concat!("Size of: ", stringify!(nsStyleGradientStop)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleGradientStop>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleGradientStop)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGradientStop>())).mLocation as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradientStop), + "::", + stringify!(mLocation) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradientStop>())).mColor as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradientStop), + "::", + stringify!(mColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGradientStop>())).mIsInterpolationHint as *const _ + as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradientStop), + "::", + stringify!(mIsInterpolationHint) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleGradient { + pub mShape: u8, + pub mSize: u8, + pub mRepeating: bool, + pub mLegacySyntax: bool, + pub mMozLegacySyntax: bool, + pub mBgPosX: root::nsStyleCoord, + pub mBgPosY: root::nsStyleCoord, + pub mAngle: root::nsStyleCoord, + pub mRadiusX: root::nsStyleCoord, + pub mRadiusY: root::nsStyleCoord, + pub mStops: root::nsTArray<root::nsStyleGradientStop>, + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + } + pub type nsStyleGradient_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsStyleGradient() { + assert_eq!( + ::std::mem::size_of::<nsStyleGradient>(), + 104usize, + concat!("Size of: ", stringify!(nsStyleGradient)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleGradient>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleGradient)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mShape as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mShape) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mSize as *const _ as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mSize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mRepeating as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mRepeating) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGradient>())).mLegacySyntax as *const _ as usize + }, + 3usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mLegacySyntax) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGradient>())).mMozLegacySyntax as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mMozLegacySyntax) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mBgPosX as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mBgPosX) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mBgPosY as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mBgPosY) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mAngle as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mAngle) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mRadiusX as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mRadiusX) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mRadiusY as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mRadiusY) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mStops as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mStops) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGradient>())).mRefCnt as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGradient), + "::", + stringify!(mRefCnt) + ) + ); + } + /// A wrapper for an imgRequestProxy that supports off-main-thread creation /// and equality comparison. /// /// An nsStyleImageRequest can be created in two ways: @@ -1597,79 +29271,6856 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// creates a new css::ImageValue to represent the url() information passed /// to the constructor. This ImageValue is held on to for the comparisons done /// in DefinitelyEquals(), so that we don't need to call into the non-OMT-safe - /// Equals() on the nsIURI objects returned from imgRequestProxy::GetURI(). - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleImageRequest { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mRequestProxy : root :: RefPtr < root :: imgRequestProxy > , pub mImageValue : root :: RefPtr < root :: mozilla :: css :: ImageValue > , pub mImageTracker : root :: RefPtr < root :: mozilla :: dom :: ImageTracker > , pub mDocGroup : root :: RefPtr < root :: mozilla :: dom :: DocGroup > , pub mModeFlags : root :: nsStyleImageRequest_Mode , pub mResolved : bool , } pub type nsStyleImageRequest_URLValueData = root :: mozilla :: css :: URLValueData ; pub const nsStyleImageRequest_Mode_Track : root :: nsStyleImageRequest_Mode = 1 ; pub const nsStyleImageRequest_Mode_Discard : root :: nsStyleImageRequest_Mode = 2 ; pub type nsStyleImageRequest_Mode = u8 ; pub type nsStyleImageRequest_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsStyleImageRequest ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImageRequest > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( nsStyleImageRequest ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImageRequest > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImageRequest ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageRequest ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageRequest ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageRequest ) ) . mRequestProxy as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageRequest ) , "::" , stringify ! ( mRequestProxy ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageRequest ) ) . mImageValue as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageRequest ) , "::" , stringify ! ( mImageValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageRequest ) ) . mImageTracker as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageRequest ) , "::" , stringify ! ( mImageTracker ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageRequest ) ) . mDocGroup as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageRequest ) , "::" , stringify ! ( mDocGroup ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageRequest ) ) . mModeFlags as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageRequest ) , "::" , stringify ! ( mModeFlags ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageRequest ) ) . mResolved as * const _ as usize } , 41usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageRequest ) , "::" , stringify ! ( mResolved ) ) ) ; } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleImageType { eStyleImageType_Null = 0 , eStyleImageType_Image = 1 , eStyleImageType_Gradient = 2 , eStyleImageType_Element = 3 , eStyleImageType_URL = 4 , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct CachedBorderImageData { pub mCachedSVGViewportSize : [ u32 ; 3usize ] , pub mSubImages : root :: nsCOMArray , } # [ test ] fn bindgen_test_layout_CachedBorderImageData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < CachedBorderImageData > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( CachedBorderImageData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < CachedBorderImageData > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( CachedBorderImageData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CachedBorderImageData ) ) . mCachedSVGViewportSize as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( CachedBorderImageData ) , "::" , stringify ! ( mCachedSVGViewportSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const CachedBorderImageData ) ) . mSubImages as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( CachedBorderImageData ) , "::" , stringify ! ( mSubImages ) ) ) ; } - /// Represents a paintable image of one of the following types. + /// Equals() on the nsIURI objects returned from imgRequestProxy::GetURI(). + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleImageRequest { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mRequestProxy: root::RefPtr<root::imgRequestProxy>, + pub mImageValue: root::RefPtr<root::mozilla::css::ImageValue>, + pub mImageTracker: root::RefPtr<root::mozilla::dom::ImageTracker>, + pub mDocGroup: root::RefPtr<root::mozilla::dom::DocGroup>, + pub mModeFlags: root::nsStyleImageRequest_Mode, + pub mResolved: bool, + } + pub type nsStyleImageRequest_URLValueData = root::mozilla::css::URLValueData; + pub const nsStyleImageRequest_Mode_Track: root::nsStyleImageRequest_Mode = 1; + pub const nsStyleImageRequest_Mode_Discard: root::nsStyleImageRequest_Mode = 2; + pub type nsStyleImageRequest_Mode = u8; + pub type nsStyleImageRequest_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsStyleImageRequest() { + assert_eq!( + ::std::mem::size_of::<nsStyleImageRequest>(), + 48usize, + concat!("Size of: ", stringify!(nsStyleImageRequest)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImageRequest>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleImageRequest)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleImageRequest>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageRequest), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageRequest>())).mRequestProxy as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageRequest), + "::", + stringify!(mRequestProxy) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageRequest>())).mImageValue as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageRequest), + "::", + stringify!(mImageValue) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageRequest>())).mImageTracker as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageRequest), + "::", + stringify!(mImageTracker) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageRequest>())).mDocGroup as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageRequest), + "::", + stringify!(mDocGroup) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageRequest>())).mModeFlags as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageRequest), + "::", + stringify!(mModeFlags) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageRequest>())).mResolved as *const _ as usize + }, + 41usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageRequest), + "::", + stringify!(mResolved) + ) + ); + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleImageType { + eStyleImageType_Null = 0, + eStyleImageType_Image = 1, + eStyleImageType_Gradient = 2, + eStyleImageType_Element = 3, + eStyleImageType_URL = 4, + } + #[repr(C)] + #[derive(Debug)] + pub struct CachedBorderImageData { + pub mCachedSVGViewportSize: [u32; 3usize], + pub mSubImages: root::nsCOMArray, + } + #[test] + fn bindgen_test_layout_CachedBorderImageData() { + assert_eq!( + ::std::mem::size_of::<CachedBorderImageData>(), + 24usize, + concat!("Size of: ", stringify!(CachedBorderImageData)) + ); + assert_eq!( + ::std::mem::align_of::<CachedBorderImageData>(), + 8usize, + concat!("Alignment of ", stringify!(CachedBorderImageData)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CachedBorderImageData>())).mCachedSVGViewportSize as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(CachedBorderImageData), + "::", + stringify!(mCachedSVGViewportSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<CachedBorderImageData>())).mSubImages as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(CachedBorderImageData), + "::", + stringify!(mSubImages) + ) + ); + } + /// Represents a paintable image of one of the following types. /// (1) A real image loaded from an external source. /// (2) A CSS linear or radial gradient. /// (3) An element within a document, or an <img>, <video>, or <canvas> element /// not in a document. /// (*) Optionally a crop rect can be set to paint a partial (rectangular) /// region of an image. (Currently, this feature is only supported with an - /// image of type (1)). - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleImage { pub mCachedBIData : root :: mozilla :: UniquePtr < root :: CachedBorderImageData > , pub mType : root :: nsStyleImageType , pub __bindgen_anon_1 : root :: nsStyleImage__bindgen_ty_1 , pub mCropRect : root :: mozilla :: UniquePtr < root :: nsStyleSides > , } pub type nsStyleImage_URLValue = root :: mozilla :: css :: URLValue ; pub type nsStyleImage_URLValueData = root :: mozilla :: css :: URLValueData ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleImage__bindgen_ty_1 { pub mImage : root :: __BindgenUnionField < * mut root :: nsStyleImageRequest > , pub mGradient : root :: __BindgenUnionField < * mut root :: nsStyleGradient > , pub mURLValue : root :: __BindgenUnionField < * mut root :: nsStyleImage_URLValue > , pub mElementId : root :: __BindgenUnionField < * mut root :: nsAtom > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsStyleImage__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImage__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsStyleImage__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImage__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImage__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImage__bindgen_ty_1 ) ) . mImage as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImage__bindgen_ty_1 ) , "::" , stringify ! ( mImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImage__bindgen_ty_1 ) ) . mGradient as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImage__bindgen_ty_1 ) , "::" , stringify ! ( mGradient ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImage__bindgen_ty_1 ) ) . mURLValue as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImage__bindgen_ty_1 ) , "::" , stringify ! ( mURLValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImage__bindgen_ty_1 ) ) . mElementId as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImage__bindgen_ty_1 ) , "::" , stringify ! ( mElementId ) ) ) ; } impl Clone for nsStyleImage__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsStyleImage ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImage > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsStyleImage ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImage > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImage ) ) . mCachedBIData as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImage ) , "::" , stringify ! ( mCachedBIData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImage ) ) . mType as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImage ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImage ) ) . mCropRect as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImage ) , "::" , stringify ! ( mCropRect ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleColor { pub mColor : root :: nscolor , } pub const nsStyleColor_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleColor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleColor > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( nsStyleColor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleColor > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColor ) ) . mColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColor ) , "::" , stringify ! ( mColor ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleImageLayers { pub mAttachmentCount : u32 , pub mClipCount : u32 , pub mOriginCount : u32 , pub mRepeatCount : u32 , pub mPositionXCount : u32 , pub mPositionYCount : u32 , pub mImageCount : u32 , pub mSizeCount : u32 , pub mMaskModeCount : u32 , pub mBlendModeCount : u32 , pub mCompositeCount : u32 , pub mLayers : root :: nsStyleAutoArray < root :: nsStyleImageLayers_Layer > , } pub const nsStyleImageLayers_shorthand : root :: nsStyleImageLayers__bindgen_ty_1 = 0 ; pub const nsStyleImageLayers_color : root :: nsStyleImageLayers__bindgen_ty_1 = 1 ; pub const nsStyleImageLayers_image : root :: nsStyleImageLayers__bindgen_ty_1 = 2 ; pub const nsStyleImageLayers_repeat : root :: nsStyleImageLayers__bindgen_ty_1 = 3 ; pub const nsStyleImageLayers_positionX : root :: nsStyleImageLayers__bindgen_ty_1 = 4 ; pub const nsStyleImageLayers_positionY : root :: nsStyleImageLayers__bindgen_ty_1 = 5 ; pub const nsStyleImageLayers_clip : root :: nsStyleImageLayers__bindgen_ty_1 = 6 ; pub const nsStyleImageLayers_origin : root :: nsStyleImageLayers__bindgen_ty_1 = 7 ; pub const nsStyleImageLayers_size : root :: nsStyleImageLayers__bindgen_ty_1 = 8 ; pub const nsStyleImageLayers_attachment : root :: nsStyleImageLayers__bindgen_ty_1 = 9 ; pub const nsStyleImageLayers_maskMode : root :: nsStyleImageLayers__bindgen_ty_1 = 10 ; pub const nsStyleImageLayers_composite : root :: nsStyleImageLayers__bindgen_ty_1 = 11 ; pub type nsStyleImageLayers__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleImageLayers_LayerType { Background = 0 , Mask = 1 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleImageLayers_Size { pub mWidth : root :: nsStyleImageLayers_Size_Dimension , pub mHeight : root :: nsStyleImageLayers_Size_Dimension , pub mWidthType : u8 , pub mHeightType : u8 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleImageLayers_Size_Dimension { pub _base : root :: nsStyleCoord_CalcValue , } # [ test ] fn bindgen_test_layout_nsStyleImageLayers_Size_Dimension ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImageLayers_Size_Dimension > ( ) , 12usize , concat ! ( "Size of: " , stringify ! ( nsStyleImageLayers_Size_Dimension ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImageLayers_Size_Dimension > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImageLayers_Size_Dimension ) ) ) ; } impl Clone for nsStyleImageLayers_Size_Dimension { fn clone ( & self ) -> Self { * self } } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleImageLayers_Size_DimensionType { eContain = 0 , eCover = 1 , eAuto = 2 , eLengthPercentage = 3 , eDimensionType_COUNT = 4 , } # [ test ] fn bindgen_test_layout_nsStyleImageLayers_Size ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImageLayers_Size > ( ) , 28usize , concat ! ( "Size of: " , stringify ! ( nsStyleImageLayers_Size ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImageLayers_Size > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImageLayers_Size ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Size ) ) . mWidth as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Size ) , "::" , stringify ! ( mWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Size ) ) . mHeight as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Size ) , "::" , stringify ! ( mHeight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Size ) ) . mWidthType as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Size ) , "::" , stringify ! ( mWidthType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Size ) ) . mHeightType as * const _ as usize } , 25usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Size ) , "::" , stringify ! ( mHeightType ) ) ) ; } impl Clone for nsStyleImageLayers_Size { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleImageLayers_Repeat { pub mXRepeat : root :: mozilla :: StyleImageLayerRepeat , pub mYRepeat : root :: mozilla :: StyleImageLayerRepeat , } # [ test ] fn bindgen_test_layout_nsStyleImageLayers_Repeat ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImageLayers_Repeat > ( ) , 2usize , concat ! ( "Size of: " , stringify ! ( nsStyleImageLayers_Repeat ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImageLayers_Repeat > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImageLayers_Repeat ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Repeat ) ) . mXRepeat as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Repeat ) , "::" , stringify ! ( mXRepeat ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Repeat ) ) . mYRepeat as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Repeat ) , "::" , stringify ! ( mYRepeat ) ) ) ; } impl Clone for nsStyleImageLayers_Repeat { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleImageLayers_Layer { pub mImage : root :: nsStyleImage , pub mPosition : root :: mozilla :: Position , pub mSize : root :: nsStyleImageLayers_Size , pub mClip : root :: nsStyleImageLayers_Layer_StyleGeometryBox , pub mOrigin : root :: nsStyleImageLayers_Layer_StyleGeometryBox , pub mAttachment : u8 , pub mBlendMode : u8 , pub mComposite : u8 , pub mMaskMode : u8 , pub mRepeat : root :: nsStyleImageLayers_Repeat , } pub use self :: super :: root :: mozilla :: StyleGeometryBox as nsStyleImageLayers_Layer_StyleGeometryBox ; # [ test ] fn bindgen_test_layout_nsStyleImageLayers_Layer ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImageLayers_Layer > ( ) , 96usize , concat ! ( "Size of: " , stringify ! ( nsStyleImageLayers_Layer ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImageLayers_Layer > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImageLayers_Layer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mImage as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mPosition as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mSize as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mClip as * const _ as usize } , 84usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mClip ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mOrigin as * const _ as usize } , 85usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mOrigin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mAttachment as * const _ as usize } , 86usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mAttachment ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mBlendMode as * const _ as usize } , 87usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mBlendMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mComposite as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mComposite ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mMaskMode as * const _ as usize } , 89usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mMaskMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers_Layer ) ) . mRepeat as * const _ as usize } , 90usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers_Layer ) , "::" , stringify ! ( mRepeat ) ) ) ; } extern "C" { - # [ link_name = "\u{1}_ZN18nsStyleImageLayers21kBackgroundLayerTableE" ] - pub static mut nsStyleImageLayers_kBackgroundLayerTable : [ root :: nsCSSPropertyID ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN18nsStyleImageLayers15kMaskLayerTableE" ] - pub static mut nsStyleImageLayers_kMaskLayerTable : [ root :: nsCSSPropertyID ; 0usize ] ; -} # [ test ] fn bindgen_test_layout_nsStyleImageLayers ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImageLayers > ( ) , 152usize , concat ! ( "Size of: " , stringify ! ( nsStyleImageLayers ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImageLayers > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImageLayers ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mAttachmentCount as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mAttachmentCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mClipCount as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mClipCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mOriginCount as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mOriginCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mRepeatCount as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mRepeatCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mPositionXCount as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mPositionXCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mPositionYCount as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mPositionYCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mImageCount as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mImageCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mSizeCount as * const _ as usize } , 28usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mSizeCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mMaskModeCount as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mMaskModeCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mBlendModeCount as * const _ as usize } , 36usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mBlendModeCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mCompositeCount as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mCompositeCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageLayers ) ) . mLayers as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageLayers ) , "::" , stringify ! ( mLayers ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleBackground { pub mImage : root :: nsStyleImageLayers , pub mBackgroundColor : root :: mozilla :: StyleComplexColor , } pub const nsStyleBackground_kHasFinishStyle : bool = true ; # [ test ] fn bindgen_test_layout_nsStyleBackground ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleBackground > ( ) , 160usize , concat ! ( "Size of: " , stringify ! ( nsStyleBackground ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleBackground > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleBackground ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBackground ) ) . mImage as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBackground ) , "::" , stringify ! ( mImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBackground ) ) . mBackgroundColor as * const _ as usize } , 152usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBackground ) , "::" , stringify ! ( mBackgroundColor ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleMargin { pub mMargin : root :: nsStyleSides , } pub const nsStyleMargin_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleMargin ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleMargin > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsStyleMargin ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleMargin > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleMargin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleMargin ) ) . mMargin as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleMargin ) , "::" , stringify ! ( mMargin ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStylePadding { pub mPadding : root :: nsStyleSides , } pub const nsStylePadding_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStylePadding ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStylePadding > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsStylePadding ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStylePadding > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStylePadding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePadding ) ) . mPadding as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePadding ) , "::" , stringify ! ( mPadding ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSShadowItem { pub mXOffset : root :: nscoord , pub mYOffset : root :: nscoord , pub mRadius : root :: nscoord , pub mSpread : root :: nscoord , pub mColor : root :: nscolor , pub mHasColor : bool , pub mInset : bool , } # [ test ] fn bindgen_test_layout_nsCSSShadowItem ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSShadowItem > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsCSSShadowItem ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSShadowItem > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsCSSShadowItem ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowItem ) ) . mXOffset as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowItem ) , "::" , stringify ! ( mXOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowItem ) ) . mYOffset as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowItem ) , "::" , stringify ! ( mYOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowItem ) ) . mRadius as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowItem ) , "::" , stringify ! ( mRadius ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowItem ) ) . mSpread as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowItem ) , "::" , stringify ! ( mSpread ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowItem ) ) . mColor as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowItem ) , "::" , stringify ! ( mColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowItem ) ) . mHasColor as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowItem ) , "::" , stringify ! ( mHasColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowItem ) ) . mInset as * const _ as usize } , 21usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowItem ) , "::" , stringify ! ( mInset ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSShadowArray { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mLength : u32 , pub mArray : [ root :: nsCSSShadowItem ; 1usize ] , } pub type nsCSSShadowArray_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsCSSShadowArray ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSShadowArray > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsCSSShadowArray ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSShadowArray > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSShadowArray ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowArray ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowArray ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowArray ) ) . mLength as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowArray ) , "::" , stringify ! ( mLength ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSShadowArray ) ) . mArray as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSShadowArray ) , "::" , stringify ! ( mArray ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsBorderColors { pub mColors : [ root :: nsTArray < root :: nscolor > ; 4usize ] , } # [ test ] fn bindgen_test_layout_nsBorderColors ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsBorderColors > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsBorderColors ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsBorderColors > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsBorderColors ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBorderColors ) ) . mColors as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsBorderColors ) , "::" , stringify ! ( mColors ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleBorder { pub mBorderColors : root :: mozilla :: UniquePtr < root :: nsBorderColors > , pub mBorderRadius : root :: nsStyleCorners , pub mBorderImageSource : root :: nsStyleImage , pub mBorderImageSlice : root :: nsStyleSides , pub mBorderImageWidth : root :: nsStyleSides , pub mBorderImageOutset : root :: nsStyleSides , pub mBorderImageFill : u8 , pub mBorderImageRepeatH : root :: mozilla :: StyleBorderImageRepeat , pub mBorderImageRepeatV : root :: mozilla :: StyleBorderImageRepeat , pub mFloatEdge : root :: mozilla :: StyleFloatEdge , pub mBoxDecorationBreak : root :: mozilla :: StyleBoxDecorationBreak , pub mBorderStyle : [ u8 ; 4usize ] , pub __bindgen_anon_1 : root :: nsStyleBorder__bindgen_ty_1 , pub mComputedBorder : root :: nsMargin , pub mBorder : root :: nsMargin , pub mTwipsPerPixel : root :: nscoord , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleBorder__bindgen_ty_1 { pub __bindgen_anon_1 : root :: __BindgenUnionField < root :: nsStyleBorder__bindgen_ty_1__bindgen_ty_1 > , pub mBorderColor : root :: __BindgenUnionField < [ root :: mozilla :: StyleComplexColor ; 4usize ] > , pub bindgen_union_field : [ u32 ; 8usize ] , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleBorder__bindgen_ty_1__bindgen_ty_1 { pub mBorderTopColor : root :: mozilla :: StyleComplexColor , pub mBorderRightColor : root :: mozilla :: StyleComplexColor , pub mBorderBottomColor : root :: mozilla :: StyleComplexColor , pub mBorderLeftColor : root :: mozilla :: StyleComplexColor , } # [ test ] fn bindgen_test_layout_nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleBorder__bindgen_ty_1__bindgen_ty_1 > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleBorder__bindgen_ty_1__bindgen_ty_1 > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) ) . mBorderTopColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( mBorderTopColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) ) . mBorderRightColor as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( mBorderRightColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) ) . mBorderBottomColor as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( mBorderBottomColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) ) . mBorderLeftColor as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( mBorderLeftColor ) ) ) ; } impl Clone for nsStyleBorder__bindgen_ty_1__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsStyleBorder__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleBorder__bindgen_ty_1 > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsStyleBorder__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleBorder__bindgen_ty_1 > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleBorder__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder__bindgen_ty_1 ) ) . mBorderColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder__bindgen_ty_1 ) , "::" , stringify ! ( mBorderColor ) ) ) ; } impl Clone for nsStyleBorder__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } pub const nsStyleBorder_kHasFinishStyle : bool = true ; # [ test ] fn bindgen_test_layout_nsStyleBorder ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleBorder > ( ) , 312usize , concat ! ( "Size of: " , stringify ! ( nsStyleBorder ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleBorder > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleBorder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderColors as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderColors ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderRadius as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderRadius ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderImageSource as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderImageSource ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderImageSlice as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderImageSlice ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderImageWidth as * const _ as usize } , 152usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderImageWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderImageOutset as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderImageOutset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderImageFill as * const _ as usize } , 232usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderImageFill ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderImageRepeatH as * const _ as usize } , 233usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderImageRepeatH ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderImageRepeatV as * const _ as usize } , 234usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderImageRepeatV ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mFloatEdge as * const _ as usize } , 235usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mFloatEdge ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBoxDecorationBreak as * const _ as usize } , 236usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBoxDecorationBreak ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorderStyle as * const _ as usize } , 237usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorderStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mComputedBorder as * const _ as usize } , 276usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mComputedBorder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mBorder as * const _ as usize } , 292usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mBorder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleBorder ) ) . mTwipsPerPixel as * const _ as usize } , 308usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleBorder ) , "::" , stringify ! ( mTwipsPerPixel ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleOutline { pub mOutlineRadius : root :: nsStyleCorners , pub mOutlineWidth : root :: nscoord , pub mOutlineOffset : root :: nscoord , pub mOutlineColor : root :: mozilla :: StyleComplexColor , pub mOutlineStyle : u8 , pub mActualOutlineWidth : root :: nscoord , pub mTwipsPerPixel : root :: nscoord , } pub const nsStyleOutline_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleOutline ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleOutline > ( ) , 104usize , concat ! ( "Size of: " , stringify ! ( nsStyleOutline ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleOutline > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleOutline ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleOutline ) ) . mOutlineRadius as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleOutline ) , "::" , stringify ! ( mOutlineRadius ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleOutline ) ) . mOutlineWidth as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleOutline ) , "::" , stringify ! ( mOutlineWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleOutline ) ) . mOutlineOffset as * const _ as usize } , 76usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleOutline ) , "::" , stringify ! ( mOutlineOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleOutline ) ) . mOutlineColor as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleOutline ) , "::" , stringify ! ( mOutlineColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleOutline ) ) . mOutlineStyle as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleOutline ) , "::" , stringify ! ( mOutlineStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleOutline ) ) . mActualOutlineWidth as * const _ as usize } , 92usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleOutline ) , "::" , stringify ! ( mActualOutlineWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleOutline ) ) . mTwipsPerPixel as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleOutline ) , "::" , stringify ! ( mTwipsPerPixel ) ) ) ; } - /// An object that allows sharing of arrays that store 'quotes' property + /// image of type (1)). + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleImage { + pub mCachedBIData: root::mozilla::UniquePtr<root::CachedBorderImageData>, + pub mType: root::nsStyleImageType, + pub __bindgen_anon_1: root::nsStyleImage__bindgen_ty_1, + pub mCropRect: root::mozilla::UniquePtr<root::nsStyleSides>, + } + pub type nsStyleImage_URLValue = root::mozilla::css::URLValue; + pub type nsStyleImage_URLValueData = root::mozilla::css::URLValueData; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleImage__bindgen_ty_1 { + pub mImage: root::__BindgenUnionField<*mut root::nsStyleImageRequest>, + pub mGradient: root::__BindgenUnionField<*mut root::nsStyleGradient>, + pub mURLValue: root::__BindgenUnionField<*mut root::nsStyleImage_URLValue>, + pub mElementId: root::__BindgenUnionField<*mut root::nsAtom>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsStyleImage__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsStyleImage__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(nsStyleImage__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImage__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleImage__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImage__bindgen_ty_1>())).mImage as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImage__bindgen_ty_1), + "::", + stringify!(mImage) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImage__bindgen_ty_1>())).mGradient as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImage__bindgen_ty_1), + "::", + stringify!(mGradient) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImage__bindgen_ty_1>())).mURLValue as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImage__bindgen_ty_1), + "::", + stringify!(mURLValue) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImage__bindgen_ty_1>())).mElementId as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImage__bindgen_ty_1), + "::", + stringify!(mElementId) + ) + ); + } + impl Clone for nsStyleImage__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsStyleImage() { + assert_eq!( + ::std::mem::size_of::<nsStyleImage>(), + 32usize, + concat!("Size of: ", stringify!(nsStyleImage)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImage>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleImage)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleImage>())).mCachedBIData as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImage), + "::", + stringify!(mCachedBIData) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleImage>())).mType as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImage), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleImage>())).mCropRect as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImage), + "::", + stringify!(mCropRect) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleColor { + pub mColor: root::nscolor, + } + pub const nsStyleColor_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleColor() { + assert_eq!( + ::std::mem::size_of::<nsStyleColor>(), + 4usize, + concat!("Size of: ", stringify!(nsStyleColor)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleColor>(), + 4usize, + concat!("Alignment of ", stringify!(nsStyleColor)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleColor>())).mColor as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColor), + "::", + stringify!(mColor) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleImageLayers { + pub mAttachmentCount: u32, + pub mClipCount: u32, + pub mOriginCount: u32, + pub mRepeatCount: u32, + pub mPositionXCount: u32, + pub mPositionYCount: u32, + pub mImageCount: u32, + pub mSizeCount: u32, + pub mMaskModeCount: u32, + pub mBlendModeCount: u32, + pub mCompositeCount: u32, + pub mLayers: root::nsStyleAutoArray<root::nsStyleImageLayers_Layer>, + } + pub const nsStyleImageLayers_shorthand: root::nsStyleImageLayers__bindgen_ty_1 = 0; + pub const nsStyleImageLayers_color: root::nsStyleImageLayers__bindgen_ty_1 = 1; + pub const nsStyleImageLayers_image: root::nsStyleImageLayers__bindgen_ty_1 = 2; + pub const nsStyleImageLayers_repeat: root::nsStyleImageLayers__bindgen_ty_1 = 3; + pub const nsStyleImageLayers_positionX: root::nsStyleImageLayers__bindgen_ty_1 = 4; + pub const nsStyleImageLayers_positionY: root::nsStyleImageLayers__bindgen_ty_1 = 5; + pub const nsStyleImageLayers_clip: root::nsStyleImageLayers__bindgen_ty_1 = 6; + pub const nsStyleImageLayers_origin: root::nsStyleImageLayers__bindgen_ty_1 = 7; + pub const nsStyleImageLayers_size: root::nsStyleImageLayers__bindgen_ty_1 = 8; + pub const nsStyleImageLayers_attachment: root::nsStyleImageLayers__bindgen_ty_1 = 9; + pub const nsStyleImageLayers_maskMode: root::nsStyleImageLayers__bindgen_ty_1 = 10; + pub const nsStyleImageLayers_composite: root::nsStyleImageLayers__bindgen_ty_1 = 11; + pub type nsStyleImageLayers__bindgen_ty_1 = u32; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleImageLayers_LayerType { + Background = 0, + Mask = 1, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleImageLayers_Size { + pub mWidth: root::nsStyleImageLayers_Size_Dimension, + pub mHeight: root::nsStyleImageLayers_Size_Dimension, + pub mWidthType: u8, + pub mHeightType: u8, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleImageLayers_Size_Dimension { + pub _base: root::nsStyleCoord_CalcValue, + } + #[test] + fn bindgen_test_layout_nsStyleImageLayers_Size_Dimension() { + assert_eq!( + ::std::mem::size_of::<nsStyleImageLayers_Size_Dimension>(), + 12usize, + concat!("Size of: ", stringify!(nsStyleImageLayers_Size_Dimension)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImageLayers_Size_Dimension>(), + 4usize, + concat!( + "Alignment of ", + stringify!(nsStyleImageLayers_Size_Dimension) + ) + ); + } + impl Clone for nsStyleImageLayers_Size_Dimension { + fn clone(&self) -> Self { + *self + } + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleImageLayers_Size_DimensionType { + eContain = 0, + eCover = 1, + eAuto = 2, + eLengthPercentage = 3, + eDimensionType_COUNT = 4, + } + #[test] + fn bindgen_test_layout_nsStyleImageLayers_Size() { + assert_eq!( + ::std::mem::size_of::<nsStyleImageLayers_Size>(), + 28usize, + concat!("Size of: ", stringify!(nsStyleImageLayers_Size)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImageLayers_Size>(), + 4usize, + concat!("Alignment of ", stringify!(nsStyleImageLayers_Size)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Size>())).mWidth as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Size), + "::", + stringify!(mWidth) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Size>())).mHeight as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Size), + "::", + stringify!(mHeight) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Size>())).mWidthType as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Size), + "::", + stringify!(mWidthType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Size>())).mHeightType as *const _ as usize + }, + 25usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Size), + "::", + stringify!(mHeightType) + ) + ); + } + impl Clone for nsStyleImageLayers_Size { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleImageLayers_Repeat { + pub mXRepeat: root::mozilla::StyleImageLayerRepeat, + pub mYRepeat: root::mozilla::StyleImageLayerRepeat, + } + #[test] + fn bindgen_test_layout_nsStyleImageLayers_Repeat() { + assert_eq!( + ::std::mem::size_of::<nsStyleImageLayers_Repeat>(), + 2usize, + concat!("Size of: ", stringify!(nsStyleImageLayers_Repeat)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImageLayers_Repeat>(), + 1usize, + concat!("Alignment of ", stringify!(nsStyleImageLayers_Repeat)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Repeat>())).mXRepeat as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Repeat), + "::", + stringify!(mXRepeat) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Repeat>())).mYRepeat as *const _ as usize + }, + 1usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Repeat), + "::", + stringify!(mYRepeat) + ) + ); + } + impl Clone for nsStyleImageLayers_Repeat { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleImageLayers_Layer { + pub mImage: root::nsStyleImage, + pub mPosition: root::mozilla::Position, + pub mSize: root::nsStyleImageLayers_Size, + pub mClip: root::nsStyleImageLayers_Layer_StyleGeometryBox, + pub mOrigin: root::nsStyleImageLayers_Layer_StyleGeometryBox, + pub mAttachment: u8, + pub mBlendMode: u8, + pub mComposite: u8, + pub mMaskMode: u8, + pub mRepeat: root::nsStyleImageLayers_Repeat, + } + pub use self :: super :: root :: mozilla :: StyleGeometryBox as nsStyleImageLayers_Layer_StyleGeometryBox; + #[test] + fn bindgen_test_layout_nsStyleImageLayers_Layer() { + assert_eq!( + ::std::mem::size_of::<nsStyleImageLayers_Layer>(), + 96usize, + concat!("Size of: ", stringify!(nsStyleImageLayers_Layer)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImageLayers_Layer>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleImageLayers_Layer)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mImage as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mImage) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mPosition as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mPosition) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mSize as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mClip as *const _ as usize + }, + 84usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mClip) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mOrigin as *const _ as usize + }, + 85usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mOrigin) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mAttachment as *const _ + as usize + }, + 86usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mAttachment) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mBlendMode as *const _ as usize + }, + 87usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mBlendMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mComposite as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mComposite) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mMaskMode as *const _ as usize + }, + 89usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mMaskMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers_Layer>())).mRepeat as *const _ as usize + }, + 90usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers_Layer), + "::", + stringify!(mRepeat) + ) + ); + } + extern "C" { + #[link_name = "\u{1}_ZN18nsStyleImageLayers21kBackgroundLayerTableE"] + pub static mut nsStyleImageLayers_kBackgroundLayerTable: [root::nsCSSPropertyID; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN18nsStyleImageLayers15kMaskLayerTableE"] + pub static mut nsStyleImageLayers_kMaskLayerTable: [root::nsCSSPropertyID; 0usize]; + } + #[test] + fn bindgen_test_layout_nsStyleImageLayers() { + assert_eq!( + ::std::mem::size_of::<nsStyleImageLayers>(), + 152usize, + concat!("Size of: ", stringify!(nsStyleImageLayers)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImageLayers>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleImageLayers)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mAttachmentCount as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mAttachmentCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mClipCount as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mClipCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mOriginCount as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mOriginCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mRepeatCount as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mRepeatCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mPositionXCount as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mPositionXCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mPositionYCount as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mPositionYCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mImageCount as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mImageCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mSizeCount as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mSizeCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mMaskModeCount as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mMaskModeCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mBlendModeCount as *const _ as usize + }, + 36usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mBlendModeCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageLayers>())).mCompositeCount as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mCompositeCount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleImageLayers>())).mLayers as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageLayers), + "::", + stringify!(mLayers) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleBackground { + pub mImage: root::nsStyleImageLayers, + pub mBackgroundColor: root::mozilla::StyleComplexColor, + } + pub const nsStyleBackground_kHasFinishStyle: bool = true; + #[test] + fn bindgen_test_layout_nsStyleBackground() { + assert_eq!( + ::std::mem::size_of::<nsStyleBackground>(), + 160usize, + concat!("Size of: ", stringify!(nsStyleBackground)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleBackground>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleBackground)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleBackground>())).mImage as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBackground), + "::", + stringify!(mImage) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBackground>())).mBackgroundColor as *const _ as usize + }, + 152usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBackground), + "::", + stringify!(mBackgroundColor) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleMargin { + pub mMargin: root::nsStyleSides, + } + pub const nsStyleMargin_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleMargin() { + assert_eq!( + ::std::mem::size_of::<nsStyleMargin>(), + 40usize, + concat!("Size of: ", stringify!(nsStyleMargin)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleMargin>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleMargin)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleMargin>())).mMargin as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleMargin), + "::", + stringify!(mMargin) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStylePadding { + pub mPadding: root::nsStyleSides, + } + pub const nsStylePadding_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStylePadding() { + assert_eq!( + ::std::mem::size_of::<nsStylePadding>(), + 40usize, + concat!("Size of: ", stringify!(nsStylePadding)) + ); + assert_eq!( + ::std::mem::align_of::<nsStylePadding>(), + 8usize, + concat!("Alignment of ", stringify!(nsStylePadding)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePadding>())).mPadding as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStylePadding), + "::", + stringify!(mPadding) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSShadowItem { + pub mXOffset: root::nscoord, + pub mYOffset: root::nscoord, + pub mRadius: root::nscoord, + pub mSpread: root::nscoord, + pub mColor: root::nscolor, + pub mHasColor: bool, + pub mInset: bool, + } + #[test] + fn bindgen_test_layout_nsCSSShadowItem() { + assert_eq!( + ::std::mem::size_of::<nsCSSShadowItem>(), + 24usize, + concat!("Size of: ", stringify!(nsCSSShadowItem)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSShadowItem>(), + 4usize, + concat!("Alignment of ", stringify!(nsCSSShadowItem)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowItem>())).mXOffset as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowItem), + "::", + stringify!(mXOffset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowItem>())).mYOffset as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowItem), + "::", + stringify!(mYOffset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowItem>())).mRadius as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowItem), + "::", + stringify!(mRadius) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowItem>())).mSpread as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowItem), + "::", + stringify!(mSpread) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowItem>())).mColor as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowItem), + "::", + stringify!(mColor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowItem>())).mHasColor as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowItem), + "::", + stringify!(mHasColor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowItem>())).mInset as *const _ as usize }, + 21usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowItem), + "::", + stringify!(mInset) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSShadowArray { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mLength: u32, + pub mArray: [root::nsCSSShadowItem; 1usize], + } + pub type nsCSSShadowArray_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsCSSShadowArray() { + assert_eq!( + ::std::mem::size_of::<nsCSSShadowArray>(), + 40usize, + concat!("Size of: ", stringify!(nsCSSShadowArray)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSShadowArray>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSShadowArray)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowArray>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowArray), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowArray>())).mLength as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowArray), + "::", + stringify!(mLength) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSShadowArray>())).mArray as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsCSSShadowArray), + "::", + stringify!(mArray) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleBorder { + pub mBorderRadius: root::nsStyleCorners, + pub mBorderImageSource: root::nsStyleImage, + pub mBorderImageSlice: root::nsStyleSides, + pub mBorderImageWidth: root::nsStyleSides, + pub mBorderImageOutset: root::nsStyleSides, + pub mBorderImageFill: u8, + pub mBorderImageRepeatH: root::mozilla::StyleBorderImageRepeat, + pub mBorderImageRepeatV: root::mozilla::StyleBorderImageRepeat, + pub mFloatEdge: root::mozilla::StyleFloatEdge, + pub mBoxDecorationBreak: root::mozilla::StyleBoxDecorationBreak, + pub mBorderStyle: [u8; 4usize], + pub __bindgen_anon_1: root::nsStyleBorder__bindgen_ty_1, + pub mComputedBorder: root::nsMargin, + pub mBorder: root::nsMargin, + pub mTwipsPerPixel: root::nscoord, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleBorder__bindgen_ty_1 { + pub __bindgen_anon_1: + root::__BindgenUnionField<root::nsStyleBorder__bindgen_ty_1__bindgen_ty_1>, + pub mBorderColor: root::__BindgenUnionField<[root::mozilla::StyleComplexColor; 4usize]>, + pub bindgen_union_field: [u32; 8usize], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleBorder__bindgen_ty_1__bindgen_ty_1 { + pub mBorderTopColor: root::mozilla::StyleComplexColor, + pub mBorderRightColor: root::mozilla::StyleComplexColor, + pub mBorderBottomColor: root::mozilla::StyleComplexColor, + pub mBorderLeftColor: root::mozilla::StyleComplexColor, + } + #[test] + fn bindgen_test_layout_nsStyleBorder__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsStyleBorder__bindgen_ty_1__bindgen_ty_1>(), + 32usize, + concat!( + "Size of: ", + stringify!(nsStyleBorder__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleBorder__bindgen_ty_1__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(nsStyleBorder__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder__bindgen_ty_1__bindgen_ty_1>())) + .mBorderTopColor as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(mBorderTopColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder__bindgen_ty_1__bindgen_ty_1>())) + .mBorderRightColor as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(mBorderRightColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder__bindgen_ty_1__bindgen_ty_1>())) + .mBorderBottomColor as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(mBorderBottomColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder__bindgen_ty_1__bindgen_ty_1>())) + .mBorderLeftColor as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(mBorderLeftColor) + ) + ); + } + impl Clone for nsStyleBorder__bindgen_ty_1__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsStyleBorder__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsStyleBorder__bindgen_ty_1>(), + 32usize, + concat!("Size of: ", stringify!(nsStyleBorder__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleBorder__bindgen_ty_1>(), + 4usize, + concat!("Alignment of ", stringify!(nsStyleBorder__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder__bindgen_ty_1>())).mBorderColor as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder__bindgen_ty_1), + "::", + stringify!(mBorderColor) + ) + ); + } + impl Clone for nsStyleBorder__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + pub const nsStyleBorder_kHasFinishStyle: bool = true; + #[test] + fn bindgen_test_layout_nsStyleBorder() { + assert_eq!( + ::std::mem::size_of::<nsStyleBorder>(), + 304usize, + concat!("Size of: ", stringify!(nsStyleBorder)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleBorder>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleBorder)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleBorder>())).mBorderRadius as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderRadius) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mBorderImageSource as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderImageSource) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mBorderImageSlice as *const _ as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderImageSlice) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mBorderImageWidth as *const _ as usize + }, + 144usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderImageWidth) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mBorderImageOutset as *const _ as usize + }, + 184usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderImageOutset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mBorderImageFill as *const _ as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderImageFill) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mBorderImageRepeatH as *const _ as usize + }, + 225usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderImageRepeatH) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mBorderImageRepeatV as *const _ as usize + }, + 226usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderImageRepeatV) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleBorder>())).mFloatEdge as *const _ as usize }, + 227usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mFloatEdge) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mBoxDecorationBreak as *const _ as usize + }, + 228usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBoxDecorationBreak) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleBorder>())).mBorderStyle as *const _ as usize }, + 229usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorderStyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mComputedBorder as *const _ as usize + }, + 268usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mComputedBorder) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleBorder>())).mBorder as *const _ as usize }, + 284usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mBorder) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleBorder>())).mTwipsPerPixel as *const _ as usize + }, + 300usize, + concat!( + "Offset of field: ", + stringify!(nsStyleBorder), + "::", + stringify!(mTwipsPerPixel) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleOutline { + pub mOutlineRadius: root::nsStyleCorners, + pub mOutlineWidth: root::nscoord, + pub mOutlineOffset: root::nscoord, + pub mOutlineColor: root::mozilla::StyleComplexColor, + pub mOutlineStyle: u8, + pub mActualOutlineWidth: root::nscoord, + pub mTwipsPerPixel: root::nscoord, + } + pub const nsStyleOutline_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleOutline() { + assert_eq!( + ::std::mem::size_of::<nsStyleOutline>(), + 104usize, + concat!("Size of: ", stringify!(nsStyleOutline)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleOutline>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleOutline)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleOutline>())).mOutlineRadius as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleOutline), + "::", + stringify!(mOutlineRadius) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleOutline>())).mOutlineWidth as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsStyleOutline), + "::", + stringify!(mOutlineWidth) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleOutline>())).mOutlineOffset as *const _ as usize + }, + 76usize, + concat!( + "Offset of field: ", + stringify!(nsStyleOutline), + "::", + stringify!(mOutlineOffset) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleOutline>())).mOutlineColor as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsStyleOutline), + "::", + stringify!(mOutlineColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleOutline>())).mOutlineStyle as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsStyleOutline), + "::", + stringify!(mOutlineStyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleOutline>())).mActualOutlineWidth as *const _ as usize + }, + 92usize, + concat!( + "Offset of field: ", + stringify!(nsStyleOutline), + "::", + stringify!(mActualOutlineWidth) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleOutline>())).mTwipsPerPixel as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsStyleOutline), + "::", + stringify!(mTwipsPerPixel) + ) + ); + } + /// An object that allows sharing of arrays that store 'quotes' property /// values. This is particularly important for inheritance, where we want - /// to share the same 'quotes' value with a parent style context. - # [ repr ( C ) ] pub struct nsStyleQuoteValues { pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , pub mQuotePairs : root :: nsStyleQuoteValues_QuotePairArray , } pub type nsStyleQuoteValues_QuotePairArray = root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > ; pub type nsStyleQuoteValues_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsStyleQuoteValues ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleQuoteValues > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsStyleQuoteValues ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleQuoteValues > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleQuoteValues ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleQuoteValues ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleQuoteValues ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleQuoteValues ) ) . mQuotePairs as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleQuoteValues ) , "::" , stringify ! ( mQuotePairs ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleList { pub mListStylePosition : u8 , pub mListStyleImage : root :: RefPtr < root :: nsStyleImageRequest > , pub mCounterStyle : root :: mozilla :: CounterStylePtr , pub mQuotes : root :: RefPtr < root :: nsStyleQuoteValues > , pub mImageRegion : root :: nsRect , } pub const nsStyleList_kHasFinishStyle : bool = true ; extern "C" { - # [ link_name = "\u{1}_ZN11nsStyleList14sInitialQuotesE" ] - pub static mut nsStyleList_sInitialQuotes : root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > ; -} extern "C" { - # [ link_name = "\u{1}_ZN11nsStyleList11sNoneQuotesE" ] - pub static mut nsStyleList_sNoneQuotes : root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > ; -} # [ test ] fn bindgen_test_layout_nsStyleList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleList > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( nsStyleList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleList ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleList ) ) . mListStylePosition as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleList ) , "::" , stringify ! ( mListStylePosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleList ) ) . mListStyleImage as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleList ) , "::" , stringify ! ( mListStyleImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleList ) ) . mCounterStyle as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleList ) , "::" , stringify ! ( mCounterStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleList ) ) . mQuotes as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleList ) , "::" , stringify ! ( mQuotes ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleList ) ) . mImageRegion as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleList ) , "::" , stringify ! ( mImageRegion ) ) ) ; } # [ test ] fn __bindgen_test_layout_StaticRefPtr_open0_nsStyleQuoteValues_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > ) ) ) ; } # [ test ] fn __bindgen_test_layout_StaticRefPtr_open0_nsStyleQuoteValues_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: nsStyleQuoteValues > ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleGridLine { pub mHasSpan : bool , pub mInteger : i32 , pub mLineName : ::nsstring::nsStringRepr , } pub const nsStyleGridLine_kMinLine : i32 = -10000 ; pub const nsStyleGridLine_kMaxLine : i32 = 10000 ; # [ test ] fn bindgen_test_layout_nsStyleGridLine ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleGridLine > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStyleGridLine ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleGridLine > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleGridLine ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridLine ) ) . mHasSpan as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridLine ) , "::" , stringify ! ( mHasSpan ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridLine ) ) . mInteger as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridLine ) , "::" , stringify ! ( mInteger ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridLine ) ) . mLineName as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridLine ) , "::" , stringify ! ( mLineName ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleGridTemplate { pub mLineNameLists : root :: nsTArray < root :: nsTArray < ::nsstring::nsStringRepr > > , pub mMinTrackSizingFunctions : root :: nsTArray < root :: nsStyleCoord > , pub mMaxTrackSizingFunctions : root :: nsTArray < root :: nsStyleCoord > , pub mRepeatAutoLineNameListBefore : root :: nsTArray < ::nsstring::nsStringRepr > , pub mRepeatAutoLineNameListAfter : root :: nsTArray < ::nsstring::nsStringRepr > , pub mRepeatAutoIndex : i16 , pub _bitfield_1 : u8 , pub __bindgen_padding_0 : [ u8 ; 5usize ] , } # [ test ] fn bindgen_test_layout_nsStyleGridTemplate ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleGridTemplate > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( nsStyleGridTemplate ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleGridTemplate > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleGridTemplate ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridTemplate ) ) . mLineNameLists as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridTemplate ) , "::" , stringify ! ( mLineNameLists ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridTemplate ) ) . mMinTrackSizingFunctions as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridTemplate ) , "::" , stringify ! ( mMinTrackSizingFunctions ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridTemplate ) ) . mMaxTrackSizingFunctions as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridTemplate ) , "::" , stringify ! ( mMaxTrackSizingFunctions ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridTemplate ) ) . mRepeatAutoLineNameListBefore as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridTemplate ) , "::" , stringify ! ( mRepeatAutoLineNameListBefore ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridTemplate ) ) . mRepeatAutoLineNameListAfter as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridTemplate ) , "::" , stringify ! ( mRepeatAutoLineNameListAfter ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleGridTemplate ) ) . mRepeatAutoIndex as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleGridTemplate ) , "::" , stringify ! ( mRepeatAutoIndex ) ) ) ; } impl nsStyleGridTemplate { # [ inline ] pub fn mIsAutoFill ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x1 as u8 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsAutoFill ( & mut self , val : bool ) { let mask = 0x1 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mIsSubgrid ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x2 as u8 ; let val = ( unit_field_val & mask ) >> 1usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mIsSubgrid ( & mut self , val : bool ) { let mask = 0x2 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 1usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mIsAutoFill : bool , mIsSubgrid : bool ) -> u8 { ( ( 0 | ( ( mIsAutoFill as u8 as u8 ) << 0usize ) & ( 0x1 as u8 ) ) | ( ( mIsSubgrid as u8 as u8 ) << 1usize ) & ( 0x2 as u8 ) ) } } # [ repr ( C ) ] pub struct nsStylePosition { pub mObjectPosition : root :: mozilla :: Position , pub mOffset : root :: nsStyleSides , pub mWidth : root :: nsStyleCoord , pub mMinWidth : root :: nsStyleCoord , pub mMaxWidth : root :: nsStyleCoord , pub mHeight : root :: nsStyleCoord , pub mMinHeight : root :: nsStyleCoord , pub mMaxHeight : root :: nsStyleCoord , pub mFlexBasis : root :: nsStyleCoord , pub mGridAutoColumnsMin : root :: nsStyleCoord , pub mGridAutoColumnsMax : root :: nsStyleCoord , pub mGridAutoRowsMin : root :: nsStyleCoord , pub mGridAutoRowsMax : root :: nsStyleCoord , pub mGridAutoFlow : u8 , pub mBoxSizing : root :: mozilla :: StyleBoxSizing , pub mAlignContent : u16 , pub mAlignItems : u8 , pub mAlignSelf : u8 , pub mJustifyContent : u16 , pub mSpecifiedJustifyItems : u8 , pub mJustifyItems : u8 , pub mJustifySelf : u8 , pub mFlexDirection : u8 , pub mFlexWrap : u8 , pub mObjectFit : u8 , pub mOrder : i32 , pub mFlexGrow : f32 , pub mFlexShrink : f32 , pub mZIndex : root :: nsStyleCoord , pub mGridTemplateColumns : root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > , pub mGridTemplateRows : root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > , pub mGridTemplateAreas : root :: RefPtr < root :: mozilla :: css :: GridTemplateAreasValue > , pub mGridColumnStart : root :: nsStyleGridLine , pub mGridColumnEnd : root :: nsStyleGridLine , pub mGridRowStart : root :: nsStyleGridLine , pub mGridRowEnd : root :: nsStyleGridLine , pub mGridColumnGap : root :: nsStyleCoord , pub mGridRowGap : root :: nsStyleCoord , } pub const nsStylePosition_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStylePosition ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStylePosition > ( ) , 440usize , concat ! ( "Size of: " , stringify ! ( nsStylePosition ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStylePosition > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStylePosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mObjectPosition as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mObjectPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mOffset as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mOffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mWidth as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mMinWidth as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mMinWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mMaxWidth as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mMaxWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mHeight as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mHeight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mMinHeight as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mMinHeight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mMaxHeight as * const _ as usize } , 144usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mMaxHeight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mFlexBasis as * const _ as usize } , 160usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mFlexBasis ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridAutoColumnsMin as * const _ as usize } , 176usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridAutoColumnsMin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridAutoColumnsMax as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridAutoColumnsMax ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridAutoRowsMin as * const _ as usize } , 208usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridAutoRowsMin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridAutoRowsMax as * const _ as usize } , 224usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridAutoRowsMax ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridAutoFlow as * const _ as usize } , 240usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridAutoFlow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mBoxSizing as * const _ as usize } , 241usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mBoxSizing ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mAlignContent as * const _ as usize } , 242usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mAlignContent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mAlignItems as * const _ as usize } , 244usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mAlignItems ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mAlignSelf as * const _ as usize } , 245usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mAlignSelf ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mJustifyContent as * const _ as usize } , 246usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mJustifyContent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mSpecifiedJustifyItems as * const _ as usize } , 248usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mSpecifiedJustifyItems ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mJustifyItems as * const _ as usize } , 249usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mJustifyItems ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mJustifySelf as * const _ as usize } , 250usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mJustifySelf ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mFlexDirection as * const _ as usize } , 251usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mFlexDirection ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mFlexWrap as * const _ as usize } , 252usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mFlexWrap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mObjectFit as * const _ as usize } , 253usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mObjectFit ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mOrder as * const _ as usize } , 256usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mOrder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mFlexGrow as * const _ as usize } , 260usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mFlexGrow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mFlexShrink as * const _ as usize } , 264usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mFlexShrink ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mZIndex as * const _ as usize } , 272usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mZIndex ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridTemplateColumns as * const _ as usize } , 288usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridTemplateColumns ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridTemplateRows as * const _ as usize } , 296usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridTemplateRows ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridTemplateAreas as * const _ as usize } , 304usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridTemplateAreas ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridColumnStart as * const _ as usize } , 312usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridColumnStart ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridColumnEnd as * const _ as usize } , 336usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridColumnEnd ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridRowStart as * const _ as usize } , 360usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridRowStart ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridRowEnd as * const _ as usize } , 384usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridRowEnd ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridColumnGap as * const _ as usize } , 408usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridColumnGap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStylePosition ) ) . mGridRowGap as * const _ as usize } , 424usize , concat ! ( "Alignment of field: " , stringify ! ( nsStylePosition ) , "::" , stringify ! ( mGridRowGap ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleTextOverflowSide { pub mString : ::nsstring::nsStringRepr , pub mType : u8 , } # [ test ] fn bindgen_test_layout_nsStyleTextOverflowSide ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleTextOverflowSide > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStyleTextOverflowSide ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleTextOverflowSide > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleTextOverflowSide ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextOverflowSide ) ) . mString as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextOverflowSide ) , "::" , stringify ! ( mString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextOverflowSide ) ) . mType as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextOverflowSide ) , "::" , stringify ! ( mType ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleTextOverflow { pub mLeft : root :: nsStyleTextOverflowSide , pub mRight : root :: nsStyleTextOverflowSide , pub mLogicalDirections : bool , } # [ test ] fn bindgen_test_layout_nsStyleTextOverflow ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleTextOverflow > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( nsStyleTextOverflow ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleTextOverflow > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleTextOverflow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextOverflow ) ) . mLeft as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextOverflow ) , "::" , stringify ! ( mLeft ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextOverflow ) ) . mRight as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextOverflow ) , "::" , stringify ! ( mRight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextOverflow ) ) . mLogicalDirections as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextOverflow ) , "::" , stringify ! ( mLogicalDirections ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleTextReset { pub mTextOverflow : root :: nsStyleTextOverflow , pub mTextDecorationLine : u8 , pub mTextDecorationStyle : u8 , pub mUnicodeBidi : u8 , pub mInitialLetterSink : root :: nscoord , pub mInitialLetterSize : f32 , pub mTextDecorationColor : root :: mozilla :: StyleComplexColor , } pub const nsStyleTextReset_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleTextReset ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleTextReset > ( ) , 80usize , concat ! ( "Size of: " , stringify ! ( nsStyleTextReset ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleTextReset > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleTextReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextReset ) ) . mTextOverflow as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextReset ) , "::" , stringify ! ( mTextOverflow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextReset ) ) . mTextDecorationLine as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextReset ) , "::" , stringify ! ( mTextDecorationLine ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextReset ) ) . mTextDecorationStyle as * const _ as usize } , 57usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextReset ) , "::" , stringify ! ( mTextDecorationStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextReset ) ) . mUnicodeBidi as * const _ as usize } , 58usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextReset ) , "::" , stringify ! ( mUnicodeBidi ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextReset ) ) . mInitialLetterSink as * const _ as usize } , 60usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextReset ) , "::" , stringify ! ( mInitialLetterSink ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextReset ) ) . mInitialLetterSize as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextReset ) , "::" , stringify ! ( mInitialLetterSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTextReset ) ) . mTextDecorationColor as * const _ as usize } , 68usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTextReset ) , "::" , stringify ! ( mTextDecorationColor ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleText { pub mTextAlign : u8 , pub mTextAlignLast : u8 , pub _bitfield_1 : u8 , pub mTextJustify : root :: mozilla :: StyleTextJustify , pub mTextTransform : u8 , pub mWhiteSpace : root :: mozilla :: StyleWhiteSpace , pub mWordBreak : u8 , pub mOverflowWrap : u8 , pub mHyphens : root :: mozilla :: StyleHyphens , pub mRubyAlign : u8 , pub mRubyPosition : u8 , pub mTextSizeAdjust : u8 , pub mTextCombineUpright : u8 , pub mControlCharacterVisibility : u8 , pub mTextEmphasisPosition : u8 , pub mTextEmphasisStyle : u8 , pub mTextRendering : u8 , pub mTextEmphasisColor : root :: mozilla :: StyleComplexColor , pub mWebkitTextFillColor : root :: mozilla :: StyleComplexColor , pub mWebkitTextStrokeColor : root :: mozilla :: StyleComplexColor , pub mTabSize : root :: nsStyleCoord , pub mWordSpacing : root :: nsStyleCoord , pub mLetterSpacing : root :: nsStyleCoord , pub mLineHeight : root :: nsStyleCoord , pub mTextIndent : root :: nsStyleCoord , pub mWebkitTextStrokeWidth : root :: nscoord , pub mTextShadow : root :: RefPtr < root :: nsCSSShadowArray > , pub mTextEmphasisStyleString : ::nsstring::nsStringRepr , } pub const nsStyleText_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleText ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleText > ( ) , 160usize , concat ! ( "Size of: " , stringify ! ( nsStyleText ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleText > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleText ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextAlign as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextAlign ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextAlignLast as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextAlignLast ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextJustify as * const _ as usize } , 3usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextJustify ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextTransform as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextTransform ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mWhiteSpace as * const _ as usize } , 5usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mWhiteSpace ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mWordBreak as * const _ as usize } , 6usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mWordBreak ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mOverflowWrap as * const _ as usize } , 7usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mOverflowWrap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mHyphens as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mHyphens ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mRubyAlign as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mRubyAlign ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mRubyPosition as * const _ as usize } , 10usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mRubyPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextSizeAdjust as * const _ as usize } , 11usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextSizeAdjust ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextCombineUpright as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextCombineUpright ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mControlCharacterVisibility as * const _ as usize } , 13usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mControlCharacterVisibility ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextEmphasisPosition as * const _ as usize } , 14usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextEmphasisPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextEmphasisStyle as * const _ as usize } , 15usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextEmphasisStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextRendering as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextRendering ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextEmphasisColor as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextEmphasisColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mWebkitTextFillColor as * const _ as usize } , 28usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mWebkitTextFillColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mWebkitTextStrokeColor as * const _ as usize } , 36usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mWebkitTextStrokeColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTabSize as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTabSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mWordSpacing as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mWordSpacing ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mLetterSpacing as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mLetterSpacing ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mLineHeight as * const _ as usize } , 96usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mLineHeight ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextIndent as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextIndent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mWebkitTextStrokeWidth as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mWebkitTextStrokeWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextShadow as * const _ as usize } , 136usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextShadow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleText ) ) . mTextEmphasisStyleString as * const _ as usize } , 144usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleText ) , "::" , stringify ! ( mTextEmphasisStyleString ) ) ) ; } impl nsStyleText { # [ inline ] pub fn mTextAlignTrue ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x1 as u8 ; let val = ( unit_field_val & mask ) >> 0usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mTextAlignTrue ( & mut self , val : bool ) { let mask = 0x1 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 0usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn mTextAlignLastTrue ( & self ) -> bool { let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; let mask = 0x2 as u8 ; let val = ( unit_field_val & mask ) >> 1usize ; unsafe { :: std :: mem :: transmute ( val as u8 ) } } # [ inline ] pub fn set_mTextAlignLastTrue ( & mut self , val : bool ) { let mask = 0x2 as u8 ; let val = val as u8 as u8 ; let mut unit_field_val : u8 = unsafe { :: std :: mem :: uninitialized ( ) } ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & self . _bitfield_1 as * const _ as * const u8 , & mut unit_field_val as * mut u8 as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) } ; unit_field_val &= ! mask ; unit_field_val |= ( val << 1usize ) & mask ; unsafe { :: std :: ptr :: copy_nonoverlapping ( & unit_field_val as * const _ as * const u8 , & mut self . _bitfield_1 as * mut _ as * mut u8 , :: std :: mem :: size_of :: < u8 > ( ) , ) ; } } # [ inline ] pub fn new_bitfield_1 ( mTextAlignTrue : bool , mTextAlignLastTrue : bool ) -> u8 { ( ( 0 | ( ( mTextAlignTrue as u8 as u8 ) << 0usize ) & ( 0x1 as u8 ) ) | ( ( mTextAlignLastTrue as u8 as u8 ) << 1usize ) & ( 0x2 as u8 ) ) } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleImageOrientation { pub mOrientation : u8 , } pub const nsStyleImageOrientation_Bits_ORIENTATION_MASK : root :: nsStyleImageOrientation_Bits = 3 ; pub const nsStyleImageOrientation_Bits_FLIP_MASK : root :: nsStyleImageOrientation_Bits = 4 ; pub const nsStyleImageOrientation_Bits_FROM_IMAGE_MASK : root :: nsStyleImageOrientation_Bits = 8 ; pub type nsStyleImageOrientation_Bits = :: std :: os :: raw :: c_uint ; # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleImageOrientation_Angles { ANGLE_0 = 0 , ANGLE_90 = 1 , ANGLE_180 = 2 , ANGLE_270 = 3 , } # [ test ] fn bindgen_test_layout_nsStyleImageOrientation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleImageOrientation > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( nsStyleImageOrientation ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleImageOrientation > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( nsStyleImageOrientation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleImageOrientation ) ) . mOrientation as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleImageOrientation ) , "::" , stringify ! ( mOrientation ) ) ) ; } impl Clone for nsStyleImageOrientation { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleVisibility { pub mImageOrientation : root :: nsStyleImageOrientation , pub mDirection : u8 , pub mVisible : u8 , pub mImageRendering : u8 , pub mWritingMode : u8 , pub mTextOrientation : u8 , pub mColorAdjust : u8 , } pub const nsStyleVisibility_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleVisibility ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleVisibility > ( ) , 7usize , concat ! ( "Size of: " , stringify ! ( nsStyleVisibility ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleVisibility > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( nsStyleVisibility ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleVisibility ) ) . mImageOrientation as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleVisibility ) , "::" , stringify ! ( mImageOrientation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleVisibility ) ) . mDirection as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleVisibility ) , "::" , stringify ! ( mDirection ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleVisibility ) ) . mVisible as * const _ as usize } , 2usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleVisibility ) , "::" , stringify ! ( mVisible ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleVisibility ) ) . mImageRendering as * const _ as usize } , 3usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleVisibility ) , "::" , stringify ! ( mImageRendering ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleVisibility ) ) . mWritingMode as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleVisibility ) , "::" , stringify ! ( mWritingMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleVisibility ) ) . mTextOrientation as * const _ as usize } , 5usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleVisibility ) , "::" , stringify ! ( mTextOrientation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleVisibility ) ) . mColorAdjust as * const _ as usize } , 6usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleVisibility ) , "::" , stringify ! ( mColorAdjust ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsTimingFunction { pub mType : root :: nsTimingFunction_Type , pub __bindgen_anon_1 : root :: nsTimingFunction__bindgen_ty_1 , } # [ repr ( i32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsTimingFunction_Type { Ease = 0 , Linear = 1 , EaseIn = 2 , EaseOut = 3 , EaseInOut = 4 , StepStart = 5 , StepEnd = 6 , CubicBezier = 7 , Frames = 8 , } pub const nsTimingFunction_Keyword_Implicit : root :: nsTimingFunction_Keyword = 0 ; pub const nsTimingFunction_Keyword_Explicit : root :: nsTimingFunction_Keyword = 1 ; pub type nsTimingFunction_Keyword = :: std :: os :: raw :: c_int ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsTimingFunction__bindgen_ty_1 { pub mFunc : root :: __BindgenUnionField < root :: nsTimingFunction__bindgen_ty_1__bindgen_ty_1 > , pub __bindgen_anon_1 : root :: __BindgenUnionField < root :: nsTimingFunction__bindgen_ty_1__bindgen_ty_2 > , pub bindgen_union_field : [ u32 ; 4usize ] , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsTimingFunction__bindgen_ty_1__bindgen_ty_1 { pub mX1 : f32 , pub mY1 : f32 , pub mX2 : f32 , pub mY2 : f32 , } # [ test ] fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsTimingFunction__bindgen_ty_1__bindgen_ty_1 > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsTimingFunction__bindgen_ty_1__bindgen_ty_1 > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) ) . mX1 as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( mX1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) ) . mY1 as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( mY1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) ) . mX2 as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( mX2 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) ) . mY2 as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( mY2 ) ) ) ; } impl Clone for nsTimingFunction__bindgen_ty_1__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsTimingFunction__bindgen_ty_1__bindgen_ty_2 { pub mStepsOrFrames : u32 , } # [ test ] fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1__bindgen_ty_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsTimingFunction__bindgen_ty_1__bindgen_ty_2 > ( ) , 4usize , concat ! ( "Size of: " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_2 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsTimingFunction__bindgen_ty_1__bindgen_ty_2 > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_2 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTimingFunction__bindgen_ty_1__bindgen_ty_2 ) ) . mStepsOrFrames as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsTimingFunction__bindgen_ty_1__bindgen_ty_2 ) , "::" , stringify ! ( mStepsOrFrames ) ) ) ; } impl Clone for nsTimingFunction__bindgen_ty_1__bindgen_ty_2 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsTimingFunction__bindgen_ty_1 > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsTimingFunction__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsTimingFunction__bindgen_ty_1 > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsTimingFunction__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTimingFunction__bindgen_ty_1 ) ) . mFunc as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsTimingFunction__bindgen_ty_1 ) , "::" , stringify ! ( mFunc ) ) ) ; } impl Clone for nsTimingFunction__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsTimingFunction ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsTimingFunction > ( ) , 20usize , concat ! ( "Size of: " , stringify ! ( nsTimingFunction ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsTimingFunction > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsTimingFunction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsTimingFunction ) ) . mType as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsTimingFunction ) , "::" , stringify ! ( mType ) ) ) ; } impl Clone for nsTimingFunction { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleDisplay { pub mBinding : root :: RefPtr < root :: mozilla :: css :: URLValue > , pub mDisplay : root :: mozilla :: StyleDisplay , pub mOriginalDisplay : root :: mozilla :: StyleDisplay , pub mContain : u8 , pub mAppearance : u8 , pub mPosition : u8 , pub mFloat : root :: mozilla :: StyleFloat , pub mOriginalFloat : root :: mozilla :: StyleFloat , pub mBreakType : root :: mozilla :: StyleClear , pub mBreakInside : u8 , pub mBreakBefore : bool , pub mBreakAfter : bool , pub mOverflowX : u8 , pub mOverflowY : u8 , pub mOverflowClipBoxBlock : u8 , pub mOverflowClipBoxInline : u8 , pub mResize : u8 , pub mOrient : root :: mozilla :: StyleOrient , pub mIsolation : u8 , pub mTopLayer : u8 , pub mWillChangeBitField : u8 , pub mWillChange : root :: nsTArray < root :: RefPtr < root :: nsAtom > > , pub mTouchAction : u8 , pub mScrollBehavior : u8 , pub mOverscrollBehaviorX : root :: mozilla :: StyleOverscrollBehavior , pub mOverscrollBehaviorY : root :: mozilla :: StyleOverscrollBehavior , pub mScrollSnapTypeX : u8 , pub mScrollSnapTypeY : u8 , pub mScrollSnapPointsX : root :: nsStyleCoord , pub mScrollSnapPointsY : root :: nsStyleCoord , pub mScrollSnapDestination : root :: mozilla :: Position , pub mScrollSnapCoordinate : root :: nsTArray < root :: mozilla :: Position > , pub mBackfaceVisibility : u8 , pub mTransformStyle : u8 , pub mTransformBox : root :: nsStyleDisplay_StyleGeometryBox , pub mSpecifiedTransform : root :: RefPtr < root :: nsCSSValueSharedList > , pub mTransformOrigin : [ root :: nsStyleCoord ; 3usize ] , pub mChildPerspective : root :: nsStyleCoord , pub mPerspectiveOrigin : [ root :: nsStyleCoord ; 2usize ] , pub mVerticalAlign : root :: nsStyleCoord , pub mTransitions : root :: nsStyleAutoArray < root :: mozilla :: StyleTransition > , pub mTransitionTimingFunctionCount : u32 , pub mTransitionDurationCount : u32 , pub mTransitionDelayCount : u32 , pub mTransitionPropertyCount : u32 , pub mAnimations : root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > , pub mAnimationTimingFunctionCount : u32 , pub mAnimationDurationCount : u32 , pub mAnimationDelayCount : u32 , pub mAnimationNameCount : u32 , pub mAnimationDirectionCount : u32 , pub mAnimationFillModeCount : u32 , pub mAnimationPlayStateCount : u32 , pub mAnimationIterationCountCount : u32 , pub mShapeImageThreshold : f32 , pub mShapeOutside : root :: mozilla :: StyleShapeSource , } pub use self :: super :: root :: mozilla :: StyleGeometryBox as nsStyleDisplay_StyleGeometryBox ; pub const nsStyleDisplay_kHasFinishStyle : bool = true ; # [ test ] fn bindgen_test_layout_nsStyleDisplay ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleDisplay > ( ) , 424usize , concat ! ( "Size of: " , stringify ! ( nsStyleDisplay ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleDisplay > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleDisplay ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mBinding as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mBinding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mDisplay as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mDisplay ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOriginalDisplay as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOriginalDisplay ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mContain as * const _ as usize } , 10usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mContain ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAppearance as * const _ as usize } , 11usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAppearance ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mPosition as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mFloat as * const _ as usize } , 13usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mFloat ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOriginalFloat as * const _ as usize } , 14usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOriginalFloat ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mBreakType as * const _ as usize } , 15usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mBreakType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mBreakInside as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mBreakInside ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mBreakBefore as * const _ as usize } , 17usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mBreakBefore ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mBreakAfter as * const _ as usize } , 18usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mBreakAfter ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOverflowX as * const _ as usize } , 19usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOverflowX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOverflowY as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOverflowY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOverflowClipBoxBlock as * const _ as usize } , 21usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOverflowClipBoxBlock ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOverflowClipBoxInline as * const _ as usize } , 22usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOverflowClipBoxInline ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mResize as * const _ as usize } , 23usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mResize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOrient as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOrient ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mIsolation as * const _ as usize } , 25usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mIsolation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTopLayer as * const _ as usize } , 26usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTopLayer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mWillChangeBitField as * const _ as usize } , 27usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mWillChangeBitField ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mWillChange as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mWillChange ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTouchAction as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTouchAction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mScrollBehavior as * const _ as usize } , 41usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mScrollBehavior ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOverscrollBehaviorX as * const _ as usize } , 42usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOverscrollBehaviorX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mOverscrollBehaviorY as * const _ as usize } , 43usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mOverscrollBehaviorY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mScrollSnapTypeX as * const _ as usize } , 44usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mScrollSnapTypeX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mScrollSnapTypeY as * const _ as usize } , 45usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mScrollSnapTypeY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mScrollSnapPointsX as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mScrollSnapPointsX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mScrollSnapPointsY as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mScrollSnapPointsY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mScrollSnapDestination as * const _ as usize } , 80usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mScrollSnapDestination ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mScrollSnapCoordinate as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mScrollSnapCoordinate ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mBackfaceVisibility as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mBackfaceVisibility ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTransformStyle as * const _ as usize } , 113usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTransformStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTransformBox as * const _ as usize } , 114usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTransformBox ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mSpecifiedTransform as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mSpecifiedTransform ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTransformOrigin as * const _ as usize } , 128usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTransformOrigin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mChildPerspective as * const _ as usize } , 176usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mChildPerspective ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mPerspectiveOrigin as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mPerspectiveOrigin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mVerticalAlign as * const _ as usize } , 224usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mVerticalAlign ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTransitions as * const _ as usize } , 240usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTransitions ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTransitionTimingFunctionCount as * const _ as usize } , 288usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTransitionTimingFunctionCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTransitionDurationCount as * const _ as usize } , 292usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTransitionDurationCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTransitionDelayCount as * const _ as usize } , 296usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTransitionDelayCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mTransitionPropertyCount as * const _ as usize } , 300usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mTransitionPropertyCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimations as * const _ as usize } , 304usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimations ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimationTimingFunctionCount as * const _ as usize } , 360usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimationTimingFunctionCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimationDurationCount as * const _ as usize } , 364usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimationDurationCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimationDelayCount as * const _ as usize } , 368usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimationDelayCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimationNameCount as * const _ as usize } , 372usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimationNameCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimationDirectionCount as * const _ as usize } , 376usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimationDirectionCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimationFillModeCount as * const _ as usize } , 380usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimationFillModeCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimationPlayStateCount as * const _ as usize } , 384usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimationPlayStateCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mAnimationIterationCountCount as * const _ as usize } , 388usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mAnimationIterationCountCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mShapeImageThreshold as * const _ as usize } , 392usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mShapeImageThreshold ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleDisplay ) ) . mShapeOutside as * const _ as usize } , 400usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleDisplay ) , "::" , stringify ! ( mShapeOutside ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleTable { pub mLayoutStrategy : u8 , pub mSpan : i32 , } pub const nsStyleTable_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleTable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleTable > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsStyleTable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleTable > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTable ) ) . mLayoutStrategy as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTable ) , "::" , stringify ! ( mLayoutStrategy ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTable ) ) . mSpan as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTable ) , "::" , stringify ! ( mSpan ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleTableBorder { pub mBorderSpacingCol : root :: nscoord , pub mBorderSpacingRow : root :: nscoord , pub mBorderCollapse : u8 , pub mCaptionSide : u8 , pub mEmptyCells : u8 , } pub const nsStyleTableBorder_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleTableBorder ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleTableBorder > ( ) , 12usize , concat ! ( "Size of: " , stringify ! ( nsStyleTableBorder ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleTableBorder > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleTableBorder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTableBorder ) ) . mBorderSpacingCol as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTableBorder ) , "::" , stringify ! ( mBorderSpacingCol ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTableBorder ) ) . mBorderSpacingRow as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTableBorder ) , "::" , stringify ! ( mBorderSpacingRow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTableBorder ) ) . mBorderCollapse as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTableBorder ) , "::" , stringify ! ( mBorderCollapse ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTableBorder ) ) . mCaptionSide as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTableBorder ) , "::" , stringify ! ( mCaptionSide ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleTableBorder ) ) . mEmptyCells as * const _ as usize } , 10usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleTableBorder ) , "::" , stringify ! ( mEmptyCells ) ) ) ; } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleContentType { eStyleContentType_String = 1 , eStyleContentType_Image = 10 , eStyleContentType_Attr = 20 , eStyleContentType_Counter = 30 , eStyleContentType_Counters = 31 , eStyleContentType_OpenQuote = 40 , eStyleContentType_CloseQuote = 41 , eStyleContentType_NoOpenQuote = 42 , eStyleContentType_NoCloseQuote = 43 , eStyleContentType_AltContent = 50 , eStyleContentType_Uninitialized = 51 , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleContentData { pub mType : root :: nsStyleContentType , pub mContent : root :: nsStyleContentData__bindgen_ty_1 , } # [ repr ( C ) ] pub struct nsStyleContentData_CounterFunction { pub mIdent : ::nsstring::nsStringRepr , pub mSeparator : ::nsstring::nsStringRepr , pub mCounterStyle : root :: mozilla :: CounterStylePtr , pub mRefCnt : root :: mozilla :: ThreadSafeAutoRefCnt , } pub type nsStyleContentData_CounterFunction_HasThreadSafeRefCnt = root :: mozilla :: TrueType ; # [ test ] fn bindgen_test_layout_nsStyleContentData_CounterFunction ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleContentData_CounterFunction > ( ) , 48usize , concat ! ( "Size of: " , stringify ! ( nsStyleContentData_CounterFunction ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleContentData_CounterFunction > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleContentData_CounterFunction ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData_CounterFunction ) ) . mIdent as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData_CounterFunction ) , "::" , stringify ! ( mIdent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData_CounterFunction ) ) . mSeparator as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData_CounterFunction ) , "::" , stringify ! ( mSeparator ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData_CounterFunction ) ) . mCounterStyle as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData_CounterFunction ) , "::" , stringify ! ( mCounterStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData_CounterFunction ) ) . mRefCnt as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData_CounterFunction ) , "::" , stringify ! ( mRefCnt ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleContentData__bindgen_ty_1 { pub mString : root :: __BindgenUnionField < * mut u16 > , pub mImage : root :: __BindgenUnionField < * mut root :: nsStyleImageRequest > , pub mCounters : root :: __BindgenUnionField < * mut root :: nsStyleContentData_CounterFunction > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsStyleContentData__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleContentData__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsStyleContentData__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleContentData__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleContentData__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData__bindgen_ty_1 ) ) . mString as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData__bindgen_ty_1 ) , "::" , stringify ! ( mString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData__bindgen_ty_1 ) ) . mImage as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData__bindgen_ty_1 ) , "::" , stringify ! ( mImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData__bindgen_ty_1 ) ) . mCounters as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData__bindgen_ty_1 ) , "::" , stringify ! ( mCounters ) ) ) ; } impl Clone for nsStyleContentData__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsStyleContentData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleContentData > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsStyleContentData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleContentData > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleContentData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData ) ) . mType as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContentData ) ) . mContent as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContentData ) , "::" , stringify ! ( mContent ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleCounterData { pub mCounter : ::nsstring::nsStringRepr , pub mValue : i32 , } # [ test ] fn bindgen_test_layout_nsStyleCounterData ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleCounterData > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStyleCounterData ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleCounterData > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleCounterData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCounterData ) ) . mCounter as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCounterData ) , "::" , stringify ! ( mCounter ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleCounterData ) ) . mValue as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleCounterData ) , "::" , stringify ! ( mValue ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleContent { pub mContents : root :: nsTArray < root :: nsStyleContentData > , pub mIncrements : root :: nsTArray < root :: nsStyleCounterData > , pub mResets : root :: nsTArray < root :: nsStyleCounterData > , } pub const nsStyleContent_kHasFinishStyle : bool = true ; # [ test ] fn bindgen_test_layout_nsStyleContent ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleContent > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStyleContent ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleContent > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleContent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContent ) ) . mContents as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContent ) , "::" , stringify ! ( mContents ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContent ) ) . mIncrements as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContent ) , "::" , stringify ! ( mIncrements ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContent ) ) . mResets as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContent ) , "::" , stringify ! ( mResets ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleUIReset { pub mUserSelect : root :: mozilla :: StyleUserSelect , pub mForceBrokenImageIcon : u8 , pub mIMEMode : u8 , pub mWindowDragging : root :: mozilla :: StyleWindowDragging , pub mWindowShadow : u8 , pub mWindowOpacity : f32 , pub mSpecifiedWindowTransform : root :: RefPtr < root :: nsCSSValueSharedList > , pub mWindowTransformOrigin : [ root :: nsStyleCoord ; 2usize ] , } pub const nsStyleUIReset_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleUIReset ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleUIReset > ( ) , 56usize , concat ! ( "Size of: " , stringify ! ( nsStyleUIReset ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleUIReset > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleUIReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUIReset ) ) . mUserSelect as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUIReset ) , "::" , stringify ! ( mUserSelect ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUIReset ) ) . mForceBrokenImageIcon as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUIReset ) , "::" , stringify ! ( mForceBrokenImageIcon ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUIReset ) ) . mIMEMode as * const _ as usize } , 2usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUIReset ) , "::" , stringify ! ( mIMEMode ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUIReset ) ) . mWindowDragging as * const _ as usize } , 3usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUIReset ) , "::" , stringify ! ( mWindowDragging ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUIReset ) ) . mWindowShadow as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUIReset ) , "::" , stringify ! ( mWindowShadow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUIReset ) ) . mWindowOpacity as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUIReset ) , "::" , stringify ! ( mWindowOpacity ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUIReset ) ) . mSpecifiedWindowTransform as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUIReset ) , "::" , stringify ! ( mSpecifiedWindowTransform ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUIReset ) ) . mWindowTransformOrigin as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUIReset ) , "::" , stringify ! ( mWindowTransformOrigin ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCursorImage { pub mHaveHotspot : bool , pub mHotspotX : f32 , pub mHotspotY : f32 , pub mImage : root :: RefPtr < root :: nsStyleImageRequest > , } # [ test ] fn bindgen_test_layout_nsCursorImage ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCursorImage > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsCursorImage ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCursorImage > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCursorImage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCursorImage ) ) . mHaveHotspot as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsCursorImage ) , "::" , stringify ! ( mHaveHotspot ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCursorImage ) ) . mHotspotX as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsCursorImage ) , "::" , stringify ! ( mHotspotX ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCursorImage ) ) . mHotspotY as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsCursorImage ) , "::" , stringify ! ( mHotspotY ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCursorImage ) ) . mImage as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsCursorImage ) , "::" , stringify ! ( mImage ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleUserInterface { pub mUserInput : root :: mozilla :: StyleUserInput , pub mUserModify : root :: mozilla :: StyleUserModify , pub mUserFocus : root :: mozilla :: StyleUserFocus , pub mPointerEvents : u8 , pub mCursor : u8 , pub mCursorImages : root :: nsTArray < root :: nsCursorImage > , pub mCaretColor : root :: mozilla :: StyleComplexColor , } pub const nsStyleUserInterface_kHasFinishStyle : bool = true ; # [ test ] fn bindgen_test_layout_nsStyleUserInterface ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleUserInterface > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsStyleUserInterface ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleUserInterface > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleUserInterface ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUserInterface ) ) . mUserInput as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUserInterface ) , "::" , stringify ! ( mUserInput ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUserInterface ) ) . mUserModify as * const _ as usize } , 1usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUserInterface ) , "::" , stringify ! ( mUserModify ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUserInterface ) ) . mUserFocus as * const _ as usize } , 2usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUserInterface ) , "::" , stringify ! ( mUserFocus ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUserInterface ) ) . mPointerEvents as * const _ as usize } , 3usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUserInterface ) , "::" , stringify ! ( mPointerEvents ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUserInterface ) ) . mCursor as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUserInterface ) , "::" , stringify ! ( mCursor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUserInterface ) ) . mCursorImages as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUserInterface ) , "::" , stringify ! ( mCursorImages ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleUserInterface ) ) . mCaretColor as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleUserInterface ) , "::" , stringify ! ( mCaretColor ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleXUL { pub mBoxFlex : f32 , pub mBoxOrdinal : u32 , pub mBoxAlign : root :: mozilla :: StyleBoxAlign , pub mBoxDirection : root :: mozilla :: StyleBoxDirection , pub mBoxOrient : root :: mozilla :: StyleBoxOrient , pub mBoxPack : root :: mozilla :: StyleBoxPack , pub mStackSizing : root :: mozilla :: StyleStackSizing , } pub const nsStyleXUL_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleXUL ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleXUL > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsStyleXUL ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleXUL > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsStyleXUL ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleXUL ) ) . mBoxFlex as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleXUL ) , "::" , stringify ! ( mBoxFlex ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleXUL ) ) . mBoxOrdinal as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleXUL ) , "::" , stringify ! ( mBoxOrdinal ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleXUL ) ) . mBoxAlign as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleXUL ) , "::" , stringify ! ( mBoxAlign ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleXUL ) ) . mBoxDirection as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleXUL ) , "::" , stringify ! ( mBoxDirection ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleXUL ) ) . mBoxOrient as * const _ as usize } , 10usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleXUL ) , "::" , stringify ! ( mBoxOrient ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleXUL ) ) . mBoxPack as * const _ as usize } , 11usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleXUL ) , "::" , stringify ! ( mBoxPack ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleXUL ) ) . mStackSizing as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleXUL ) , "::" , stringify ! ( mStackSizing ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleColumn { pub mColumnCount : u32 , pub mColumnWidth : root :: nsStyleCoord , pub mColumnGap : root :: nsStyleCoord , pub mColumnRuleColor : root :: mozilla :: StyleComplexColor , pub mColumnRuleStyle : u8 , pub mColumnFill : u8 , pub mColumnSpan : u8 , pub mColumnRuleWidth : root :: nscoord , pub mTwipsPerPixel : root :: nscoord , } pub const nsStyleColumn_kHasFinishStyle : bool = false ; pub const nsStyleColumn_kMaxColumnCount : u32 = 1000 ; # [ test ] fn bindgen_test_layout_nsStyleColumn ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleColumn > ( ) , 64usize , concat ! ( "Size of: " , stringify ! ( nsStyleColumn ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleColumn > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleColumn ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mColumnCount as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mColumnCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mColumnWidth as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mColumnWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mColumnGap as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mColumnGap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mColumnRuleColor as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mColumnRuleColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mColumnRuleStyle as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mColumnRuleStyle ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mColumnFill as * const _ as usize } , 49usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mColumnFill ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mColumnSpan as * const _ as usize } , 50usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mColumnSpan ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mColumnRuleWidth as * const _ as usize } , 52usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mColumnRuleWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleColumn ) ) . mTwipsPerPixel as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleColumn ) , "::" , stringify ! ( mTwipsPerPixel ) ) ) ; } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleSVGPaintType { eStyleSVGPaintType_None = 1 , eStyleSVGPaintType_Color = 2 , eStyleSVGPaintType_Server = 3 , eStyleSVGPaintType_ContextFill = 4 , eStyleSVGPaintType_ContextStroke = 5 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleSVGFallbackType { eStyleSVGFallbackType_NotSet = 0 , eStyleSVGFallbackType_None = 1 , eStyleSVGFallbackType_Color = 2 , } # [ repr ( u8 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsStyleSVGOpacitySource { eStyleSVGOpacitySource_Normal = 0 , eStyleSVGOpacitySource_ContextFillOpacity = 1 , eStyleSVGOpacitySource_ContextStrokeOpacity = 2 , } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleSVGPaint { pub mPaint : root :: nsStyleSVGPaint__bindgen_ty_1 , pub mType : root :: nsStyleSVGPaintType , pub mFallbackType : root :: nsStyleSVGFallbackType , pub mFallbackColor : root :: nscolor , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleSVGPaint__bindgen_ty_1 { pub mColor : root :: __BindgenUnionField < root :: nscolor > , pub mPaintServer : root :: __BindgenUnionField < * mut root :: mozilla :: css :: URLValue > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsStyleSVGPaint__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleSVGPaint__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsStyleSVGPaint__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleSVGPaint__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleSVGPaint__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGPaint__bindgen_ty_1 ) ) . mColor as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGPaint__bindgen_ty_1 ) , "::" , stringify ! ( mColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGPaint__bindgen_ty_1 ) ) . mPaintServer as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGPaint__bindgen_ty_1 ) , "::" , stringify ! ( mPaintServer ) ) ) ; } impl Clone for nsStyleSVGPaint__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsStyleSVGPaint ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleSVGPaint > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsStyleSVGPaint ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleSVGPaint > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleSVGPaint ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGPaint ) ) . mPaint as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGPaint ) , "::" , stringify ! ( mPaint ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGPaint ) ) . mType as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGPaint ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGPaint ) ) . mFallbackType as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGPaint ) , "::" , stringify ! ( mFallbackType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGPaint ) ) . mFallbackColor as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGPaint ) , "::" , stringify ! ( mFallbackColor ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleSVG { pub mFill : root :: nsStyleSVGPaint , pub mStroke : root :: nsStyleSVGPaint , pub mMarkerEnd : root :: RefPtr < root :: mozilla :: css :: URLValue > , pub mMarkerMid : root :: RefPtr < root :: mozilla :: css :: URLValue > , pub mMarkerStart : root :: RefPtr < root :: mozilla :: css :: URLValue > , pub mStrokeDasharray : root :: nsTArray < root :: nsStyleCoord > , pub mContextProps : root :: nsTArray < root :: RefPtr < root :: nsAtom > > , pub mStrokeDashoffset : root :: nsStyleCoord , pub mStrokeWidth : root :: nsStyleCoord , pub mFillOpacity : f32 , pub mStrokeMiterlimit : f32 , pub mStrokeOpacity : f32 , pub mClipRule : root :: mozilla :: StyleFillRule , pub mColorInterpolation : u8 , pub mColorInterpolationFilters : u8 , pub mFillRule : root :: mozilla :: StyleFillRule , pub mPaintOrder : u8 , pub mShapeRendering : u8 , pub mStrokeLinecap : u8 , pub mStrokeLinejoin : u8 , pub mTextAnchor : u8 , pub mContextPropsBits : u8 , pub mContextFlags : u8 , } pub const nsStyleSVG_kHasFinishStyle : bool = false ; pub const nsStyleSVG_FILL_OPACITY_SOURCE_MASK : u8 = 3 ; pub const nsStyleSVG_STROKE_OPACITY_SOURCE_MASK : u8 = 12 ; pub const nsStyleSVG_STROKE_DASHARRAY_CONTEXT : u8 = 16 ; pub const nsStyleSVG_STROKE_DASHOFFSET_CONTEXT : u8 = 32 ; pub const nsStyleSVG_STROKE_WIDTH_CONTEXT : u8 = 64 ; pub const nsStyleSVG_FILL_OPACITY_SOURCE_SHIFT : u8 = 0 ; pub const nsStyleSVG_STROKE_OPACITY_SOURCE_SHIFT : u8 = 2 ; # [ test ] fn bindgen_test_layout_nsStyleSVG ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleSVG > ( ) , 128usize , concat ! ( "Size of: " , stringify ! ( nsStyleSVG ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleSVG > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleSVG ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mFill as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mFill ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mStroke as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mStroke ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mMarkerEnd as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mMarkerEnd ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mMarkerMid as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mMarkerMid ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mMarkerStart as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mMarkerStart ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mStrokeDasharray as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mStrokeDasharray ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mContextProps as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mContextProps ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mStrokeDashoffset as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mStrokeDashoffset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mStrokeWidth as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mStrokeWidth ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mFillOpacity as * const _ as usize } , 104usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mFillOpacity ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mStrokeMiterlimit as * const _ as usize } , 108usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mStrokeMiterlimit ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mStrokeOpacity as * const _ as usize } , 112usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mStrokeOpacity ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mClipRule as * const _ as usize } , 116usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mClipRule ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mColorInterpolation as * const _ as usize } , 117usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mColorInterpolation ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mColorInterpolationFilters as * const _ as usize } , 118usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mColorInterpolationFilters ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mFillRule as * const _ as usize } , 119usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mFillRule ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mPaintOrder as * const _ as usize } , 120usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mPaintOrder ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mShapeRendering as * const _ as usize } , 121usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mShapeRendering ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mStrokeLinecap as * const _ as usize } , 122usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mStrokeLinecap ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mStrokeLinejoin as * const _ as usize } , 123usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mStrokeLinejoin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mTextAnchor as * const _ as usize } , 124usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mTextAnchor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mContextPropsBits as * const _ as usize } , 125usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mContextPropsBits ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVG ) ) . mContextFlags as * const _ as usize } , 126usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVG ) , "::" , stringify ! ( mContextFlags ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleFilter { pub mType : u32 , pub mFilterParameter : root :: nsStyleCoord , pub __bindgen_anon_1 : root :: nsStyleFilter__bindgen_ty_1 , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStyleFilter__bindgen_ty_1 { pub mURL : root :: __BindgenUnionField < * mut root :: mozilla :: css :: URLValue > , pub mDropShadow : root :: __BindgenUnionField < * mut root :: nsCSSShadowArray > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsStyleFilter__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleFilter__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsStyleFilter__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleFilter__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleFilter__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFilter__bindgen_ty_1 ) ) . mURL as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFilter__bindgen_ty_1 ) , "::" , stringify ! ( mURL ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFilter__bindgen_ty_1 ) ) . mDropShadow as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFilter__bindgen_ty_1 ) , "::" , stringify ! ( mDropShadow ) ) ) ; } impl Clone for nsStyleFilter__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } pub const nsStyleFilter_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleFilter ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleFilter > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsStyleFilter ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleFilter > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleFilter ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFilter ) ) . mType as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFilter ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleFilter ) ) . mFilterParameter as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleFilter ) , "::" , stringify ! ( mFilterParameter ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleSVGReset { pub mMask : root :: nsStyleImageLayers , pub mClipPath : root :: mozilla :: StyleShapeSource , pub mStopColor : root :: nscolor , pub mFloodColor : root :: nscolor , pub mLightingColor : root :: nscolor , pub mStopOpacity : f32 , pub mFloodOpacity : f32 , pub mDominantBaseline : u8 , pub mVectorEffect : u8 , pub mMaskType : u8 , } pub const nsStyleSVGReset_kHasFinishStyle : bool = true ; # [ test ] fn bindgen_test_layout_nsStyleSVGReset ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleSVGReset > ( ) , 200usize , concat ! ( "Size of: " , stringify ! ( nsStyleSVGReset ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleSVGReset > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleSVGReset ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mMask as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mMask ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mClipPath as * const _ as usize } , 152usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mClipPath ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mStopColor as * const _ as usize } , 176usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mStopColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mFloodColor as * const _ as usize } , 180usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mFloodColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mLightingColor as * const _ as usize } , 184usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mLightingColor ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mStopOpacity as * const _ as usize } , 188usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mStopOpacity ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mFloodOpacity as * const _ as usize } , 192usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mFloodOpacity ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mDominantBaseline as * const _ as usize } , 196usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mDominantBaseline ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mVectorEffect as * const _ as usize } , 197usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mVectorEffect ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleSVGReset ) ) . mMaskType as * const _ as usize } , 198usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleSVGReset ) , "::" , stringify ! ( mMaskType ) ) ) ; } # [ repr ( C ) ] pub struct nsStyleVariables { pub mVariables : root :: mozilla :: CSSVariableValues , } pub const nsStyleVariables_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleVariables ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleVariables > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsStyleVariables ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleVariables > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleVariables ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleVariables ) ) . mVariables as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleVariables ) , "::" , stringify ! ( mVariables ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleEffects { pub mFilters : root :: nsTArray < root :: nsStyleFilter > , pub mBoxShadow : root :: RefPtr < root :: nsCSSShadowArray > , pub mClip : root :: nsRect , pub mOpacity : f32 , pub mClipFlags : u8 , pub mMixBlendMode : u8 , } pub const nsStyleEffects_kHasFinishStyle : bool = false ; # [ test ] fn bindgen_test_layout_nsStyleEffects ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleEffects > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsStyleEffects ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleEffects > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleEffects ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleEffects ) ) . mFilters as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleEffects ) , "::" , stringify ! ( mFilters ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleEffects ) ) . mBoxShadow as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleEffects ) , "::" , stringify ! ( mBoxShadow ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleEffects ) ) . mClip as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleEffects ) , "::" , stringify ! ( mClip ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleEffects ) ) . mOpacity as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleEffects ) , "::" , stringify ! ( mOpacity ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleEffects ) ) . mClipFlags as * const _ as usize } , 36usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleEffects ) , "::" , stringify ! ( mClipFlags ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleEffects ) ) . mMixBlendMode as * const _ as usize } , 37usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleEffects ) , "::" , stringify ! ( mMixBlendMode ) ) ) ; } - /// These *_Simple types are used to map Gecko types to layout-equivalent but + /// to share the same 'quotes' value with a parent style context. + #[repr(C)] + pub struct nsStyleQuoteValues { + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + pub mQuotePairs: root::nsStyleQuoteValues_QuotePairArray, + } + pub type nsStyleQuoteValues_QuotePairArray = + root::nsTArray<root::std::pair<::nsstring::nsStringRepr, ::nsstring::nsStringRepr>>; + pub type nsStyleQuoteValues_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsStyleQuoteValues() { + assert_eq!( + ::std::mem::size_of::<nsStyleQuoteValues>(), + 16usize, + concat!("Size of: ", stringify!(nsStyleQuoteValues)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleQuoteValues>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleQuoteValues)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleQuoteValues>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleQuoteValues), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleQuoteValues>())).mQuotePairs as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleQuoteValues), + "::", + stringify!(mQuotePairs) + ) + ); + } + #[repr(C)] + pub struct nsStyleList { + pub mListStylePosition: u8, + pub mListStyleImage: root::RefPtr<root::nsStyleImageRequest>, + pub mCounterStyle: root::mozilla::CounterStylePtr, + pub mQuotes: root::RefPtr<root::nsStyleQuoteValues>, + pub mImageRegion: root::nsRect, + } + pub const nsStyleList_kHasFinishStyle: bool = true; + extern "C" { + #[link_name = "\u{1}_ZN11nsStyleList14sInitialQuotesE"] + pub static mut nsStyleList_sInitialQuotes: + root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>; + } + extern "C" { + #[link_name = "\u{1}_ZN11nsStyleList11sNoneQuotesE"] + pub static mut nsStyleList_sNoneQuotes: + root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>; + } + #[test] + fn bindgen_test_layout_nsStyleList() { + assert_eq!( + ::std::mem::size_of::<nsStyleList>(), + 48usize, + concat!("Size of: ", stringify!(nsStyleList)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleList>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleList)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleList>())).mListStylePosition as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleList), + "::", + stringify!(mListStylePosition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleList>())).mListStyleImage as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleList), + "::", + stringify!(mListStyleImage) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleList>())).mCounterStyle as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleList), + "::", + stringify!(mCounterStyle) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleList>())).mQuotes as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleList), + "::", + stringify!(mQuotes) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleList>())).mImageRegion as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleList), + "::", + stringify!(mImageRegion) + ) + ); + } + #[test] + fn __bindgen_test_layout_StaticRefPtr_open0_nsStyleQuoteValues_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>) + ) + ); + } + #[test] + fn __bindgen_test_layout_StaticRefPtr_open0_nsStyleQuoteValues_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::nsStyleQuoteValues>) + ) + ); + } + #[repr(C)] + pub struct nsStyleGridLine { + pub mHasSpan: bool, + pub mInteger: i32, + pub mLineName: ::nsstring::nsStringRepr, + } + pub const nsStyleGridLine_kMinLine: i32 = -10000; + pub const nsStyleGridLine_kMaxLine: i32 = 10000; + #[test] + fn bindgen_test_layout_nsStyleGridLine() { + assert_eq!( + ::std::mem::size_of::<nsStyleGridLine>(), + 24usize, + concat!("Size of: ", stringify!(nsStyleGridLine)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleGridLine>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleGridLine)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGridLine>())).mHasSpan as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridLine), + "::", + stringify!(mHasSpan) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGridLine>())).mInteger as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridLine), + "::", + stringify!(mInteger) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleGridLine>())).mLineName as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridLine), + "::", + stringify!(mLineName) + ) + ); + } + #[repr(C)] + pub struct nsStyleGridTemplate { + pub mLineNameLists: root::nsTArray<root::nsTArray<::nsstring::nsStringRepr>>, + pub mMinTrackSizingFunctions: root::nsTArray<root::nsStyleCoord>, + pub mMaxTrackSizingFunctions: root::nsTArray<root::nsStyleCoord>, + pub mRepeatAutoLineNameListBefore: root::nsTArray<::nsstring::nsStringRepr>, + pub mRepeatAutoLineNameListAfter: root::nsTArray<::nsstring::nsStringRepr>, + pub mRepeatAutoIndex: i16, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 1usize], u8>, + pub __bindgen_padding_0: [u8; 5usize], + } + #[test] + fn bindgen_test_layout_nsStyleGridTemplate() { + assert_eq!( + ::std::mem::size_of::<nsStyleGridTemplate>(), + 48usize, + concat!("Size of: ", stringify!(nsStyleGridTemplate)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleGridTemplate>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleGridTemplate)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGridTemplate>())).mLineNameLists as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridTemplate), + "::", + stringify!(mLineNameLists) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGridTemplate>())).mMinTrackSizingFunctions as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridTemplate), + "::", + stringify!(mMinTrackSizingFunctions) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGridTemplate>())).mMaxTrackSizingFunctions as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridTemplate), + "::", + stringify!(mMaxTrackSizingFunctions) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGridTemplate>())).mRepeatAutoLineNameListBefore + as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridTemplate), + "::", + stringify!(mRepeatAutoLineNameListBefore) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGridTemplate>())).mRepeatAutoLineNameListAfter + as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridTemplate), + "::", + stringify!(mRepeatAutoLineNameListAfter) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleGridTemplate>())).mRepeatAutoIndex as *const _ + as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsStyleGridTemplate), + "::", + stringify!(mRepeatAutoIndex) + ) + ); + } + impl nsStyleGridTemplate { + #[inline] + pub fn mIsAutoFill(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsAutoFill(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn mIsSubgrid(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) } + } + #[inline] + pub fn set_mIsSubgrid(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(1usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mIsAutoFill: bool, + mIsSubgrid: bool, + ) -> root::__BindgenBitfieldUnit<[u8; 1usize], u8> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 1usize], + u8, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let mIsAutoFill: u8 = unsafe { ::std::mem::transmute(mIsAutoFill) }; + mIsAutoFill as u64 + }); + __bindgen_bitfield_unit.set(1usize, 1u8, { + let mIsSubgrid: u8 = unsafe { ::std::mem::transmute(mIsSubgrid) }; + mIsSubgrid as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(C)] + pub struct nsStylePosition { + pub mObjectPosition: root::mozilla::Position, + pub mOffset: root::nsStyleSides, + pub mWidth: root::nsStyleCoord, + pub mMinWidth: root::nsStyleCoord, + pub mMaxWidth: root::nsStyleCoord, + pub mHeight: root::nsStyleCoord, + pub mMinHeight: root::nsStyleCoord, + pub mMaxHeight: root::nsStyleCoord, + pub mFlexBasis: root::nsStyleCoord, + pub mGridAutoColumnsMin: root::nsStyleCoord, + pub mGridAutoColumnsMax: root::nsStyleCoord, + pub mGridAutoRowsMin: root::nsStyleCoord, + pub mGridAutoRowsMax: root::nsStyleCoord, + pub mGridAutoFlow: u8, + pub mBoxSizing: root::mozilla::StyleBoxSizing, + pub mAlignContent: u16, + pub mAlignItems: u8, + pub mAlignSelf: u8, + pub mJustifyContent: u16, + pub mSpecifiedJustifyItems: u8, + pub mJustifyItems: u8, + pub mJustifySelf: u8, + pub mFlexDirection: u8, + pub mFlexWrap: u8, + pub mObjectFit: u8, + pub mOrder: i32, + pub mFlexGrow: f32, + pub mFlexShrink: f32, + pub mZIndex: root::nsStyleCoord, + pub mGridTemplateColumns: root::mozilla::UniquePtr<root::nsStyleGridTemplate>, + pub mGridTemplateRows: root::mozilla::UniquePtr<root::nsStyleGridTemplate>, + pub mGridTemplateAreas: root::RefPtr<root::mozilla::css::GridTemplateAreasValue>, + pub mGridColumnStart: root::nsStyleGridLine, + pub mGridColumnEnd: root::nsStyleGridLine, + pub mGridRowStart: root::nsStyleGridLine, + pub mGridRowEnd: root::nsStyleGridLine, + pub mGridColumnGap: root::nsStyleCoord, + pub mGridRowGap: root::nsStyleCoord, + } + pub const nsStylePosition_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStylePosition() { + assert_eq!( + ::std::mem::size_of::<nsStylePosition>(), + 440usize, + concat!("Size of: ", stringify!(nsStylePosition)) + ); + assert_eq!( + ::std::mem::align_of::<nsStylePosition>(), + 8usize, + concat!("Alignment of ", stringify!(nsStylePosition)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mObjectPosition as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mObjectPosition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mOffset as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mOffset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mWidth as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mWidth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mMinWidth as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mMinWidth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mMaxWidth as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mMaxWidth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mHeight as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mHeight) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mMinHeight as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mMinHeight) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mMaxHeight as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mMaxHeight) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mFlexBasis as *const _ as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mFlexBasis) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridAutoColumnsMin as *const _ as usize + }, + 176usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridAutoColumnsMin) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridAutoColumnsMax as *const _ as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridAutoColumnsMax) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridAutoRowsMin as *const _ as usize + }, + 208usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridAutoRowsMin) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridAutoRowsMax as *const _ as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridAutoRowsMax) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridAutoFlow as *const _ as usize + }, + 240usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridAutoFlow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mBoxSizing as *const _ as usize }, + 241usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mBoxSizing) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mAlignContent as *const _ as usize + }, + 242usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mAlignContent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mAlignItems as *const _ as usize }, + 244usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mAlignItems) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mAlignSelf as *const _ as usize }, + 245usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mAlignSelf) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mJustifyContent as *const _ as usize + }, + 246usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mJustifyContent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mSpecifiedJustifyItems as *const _ + as usize + }, + 248usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mSpecifiedJustifyItems) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mJustifyItems as *const _ as usize + }, + 249usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mJustifyItems) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mJustifySelf as *const _ as usize + }, + 250usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mJustifySelf) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mFlexDirection as *const _ as usize + }, + 251usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mFlexDirection) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mFlexWrap as *const _ as usize }, + 252usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mFlexWrap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mObjectFit as *const _ as usize }, + 253usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mObjectFit) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mOrder as *const _ as usize }, + 256usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mOrder) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mFlexGrow as *const _ as usize }, + 260usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mFlexGrow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mFlexShrink as *const _ as usize }, + 264usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mFlexShrink) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mZIndex as *const _ as usize }, + 272usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mZIndex) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridTemplateColumns as *const _ + as usize + }, + 288usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridTemplateColumns) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridTemplateRows as *const _ as usize + }, + 296usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridTemplateRows) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridTemplateAreas as *const _ as usize + }, + 304usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridTemplateAreas) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridColumnStart as *const _ as usize + }, + 312usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridColumnStart) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridColumnEnd as *const _ as usize + }, + 336usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridColumnEnd) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridRowStart as *const _ as usize + }, + 360usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridRowStart) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mGridRowEnd as *const _ as usize }, + 384usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridRowEnd) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStylePosition>())).mGridColumnGap as *const _ as usize + }, + 408usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridColumnGap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStylePosition>())).mGridRowGap as *const _ as usize }, + 424usize, + concat!( + "Offset of field: ", + stringify!(nsStylePosition), + "::", + stringify!(mGridRowGap) + ) + ); + } + #[repr(C)] + pub struct nsStyleTextOverflowSide { + pub mString: ::nsstring::nsStringRepr, + pub mType: u8, + } + #[test] + fn bindgen_test_layout_nsStyleTextOverflowSide() { + assert_eq!( + ::std::mem::size_of::<nsStyleTextOverflowSide>(), + 24usize, + concat!("Size of: ", stringify!(nsStyleTextOverflowSide)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleTextOverflowSide>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleTextOverflowSide)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextOverflowSide>())).mString as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextOverflowSide), + "::", + stringify!(mString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextOverflowSide>())).mType as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextOverflowSide), + "::", + stringify!(mType) + ) + ); + } + #[repr(C)] + pub struct nsStyleTextOverflow { + pub mLeft: root::nsStyleTextOverflowSide, + pub mRight: root::nsStyleTextOverflowSide, + pub mLogicalDirections: bool, + } + #[test] + fn bindgen_test_layout_nsStyleTextOverflow() { + assert_eq!( + ::std::mem::size_of::<nsStyleTextOverflow>(), + 56usize, + concat!("Size of: ", stringify!(nsStyleTextOverflow)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleTextOverflow>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleTextOverflow)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleTextOverflow>())).mLeft as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextOverflow), + "::", + stringify!(mLeft) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleTextOverflow>())).mRight as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextOverflow), + "::", + stringify!(mRight) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextOverflow>())).mLogicalDirections as *const _ + as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextOverflow), + "::", + stringify!(mLogicalDirections) + ) + ); + } + #[repr(C)] + pub struct nsStyleTextReset { + pub mTextOverflow: root::nsStyleTextOverflow, + pub mTextDecorationLine: u8, + pub mTextDecorationStyle: u8, + pub mUnicodeBidi: u8, + pub mInitialLetterSink: root::nscoord, + pub mInitialLetterSize: f32, + pub mTextDecorationColor: root::mozilla::StyleComplexColor, + } + pub const nsStyleTextReset_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleTextReset() { + assert_eq!( + ::std::mem::size_of::<nsStyleTextReset>(), + 80usize, + concat!("Size of: ", stringify!(nsStyleTextReset)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleTextReset>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleTextReset)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextReset>())).mTextOverflow as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextReset), + "::", + stringify!(mTextOverflow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextReset>())).mTextDecorationLine as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextReset), + "::", + stringify!(mTextDecorationLine) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextReset>())).mTextDecorationStyle as *const _ + as usize + }, + 57usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextReset), + "::", + stringify!(mTextDecorationStyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextReset>())).mUnicodeBidi as *const _ as usize + }, + 58usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextReset), + "::", + stringify!(mUnicodeBidi) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextReset>())).mInitialLetterSink as *const _ as usize + }, + 60usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextReset), + "::", + stringify!(mInitialLetterSink) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextReset>())).mInitialLetterSize as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextReset), + "::", + stringify!(mInitialLetterSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTextReset>())).mTextDecorationColor as *const _ + as usize + }, + 68usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTextReset), + "::", + stringify!(mTextDecorationColor) + ) + ); + } + #[repr(C)] + pub struct nsStyleText { + pub mTextAlign: u8, + pub mTextAlignLast: u8, + pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 1usize], u8>, + pub mTextJustify: root::mozilla::StyleTextJustify, + pub mTextTransform: u8, + pub mWhiteSpace: root::mozilla::StyleWhiteSpace, + pub mWordBreak: u8, + pub mOverflowWrap: u8, + pub mHyphens: root::mozilla::StyleHyphens, + pub mRubyAlign: u8, + pub mRubyPosition: u8, + pub mTextSizeAdjust: u8, + pub mTextCombineUpright: u8, + pub mControlCharacterVisibility: u8, + pub mTextEmphasisPosition: u8, + pub mTextEmphasisStyle: u8, + pub mTextRendering: u8, + pub mTextEmphasisColor: root::mozilla::StyleComplexColor, + pub mWebkitTextFillColor: root::mozilla::StyleComplexColor, + pub mWebkitTextStrokeColor: root::mozilla::StyleComplexColor, + pub mTabSize: root::nsStyleCoord, + pub mWordSpacing: root::nsStyleCoord, + pub mLetterSpacing: root::nsStyleCoord, + pub mLineHeight: root::nsStyleCoord, + pub mTextIndent: root::nsStyleCoord, + pub mWebkitTextStrokeWidth: root::nscoord, + pub mTextShadow: root::RefPtr<root::nsCSSShadowArray>, + pub mTextEmphasisStyleString: ::nsstring::nsStringRepr, + } + pub const nsStyleText_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleText() { + assert_eq!( + ::std::mem::size_of::<nsStyleText>(), + 160usize, + concat!("Size of: ", stringify!(nsStyleText)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleText>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleText)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTextAlign as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextAlign) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTextAlignLast as *const _ as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextAlignLast) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTextJustify as *const _ as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextJustify) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTextTransform as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextTransform) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mWhiteSpace as *const _ as usize }, + 5usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mWhiteSpace) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mWordBreak as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mWordBreak) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mOverflowWrap as *const _ as usize }, + 7usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mOverflowWrap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mHyphens as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mHyphens) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mRubyAlign as *const _ as usize }, + 9usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mRubyAlign) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mRubyPosition as *const _ as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mRubyPosition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTextSizeAdjust as *const _ as usize }, + 11usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextSizeAdjust) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mTextCombineUpright as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextCombineUpright) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mControlCharacterVisibility as *const _ + as usize + }, + 13usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mControlCharacterVisibility) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mTextEmphasisPosition as *const _ as usize + }, + 14usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextEmphasisPosition) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mTextEmphasisStyle as *const _ as usize + }, + 15usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextEmphasisStyle) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTextRendering as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextRendering) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mTextEmphasisColor as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextEmphasisColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mWebkitTextFillColor as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mWebkitTextFillColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mWebkitTextStrokeColor as *const _ as usize + }, + 36usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mWebkitTextStrokeColor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTabSize as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTabSize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mWordSpacing as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mWordSpacing) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mLetterSpacing as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mLetterSpacing) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mLineHeight as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mLineHeight) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTextIndent as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextIndent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mWebkitTextStrokeWidth as *const _ as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mWebkitTextStrokeWidth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleText>())).mTextShadow as *const _ as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextShadow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleText>())).mTextEmphasisStyleString as *const _ + as usize + }, + 144usize, + concat!( + "Offset of field: ", + stringify!(nsStyleText), + "::", + stringify!(mTextEmphasisStyleString) + ) + ); + } + impl nsStyleText { + #[inline] + pub fn mTextAlignTrue(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) } + } + #[inline] + pub fn set_mTextAlignTrue(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(0usize, 1u8, val as u64) + } + } + #[inline] + pub fn mTextAlignLastTrue(&self) -> bool { + unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) } + } + #[inline] + pub fn set_mTextAlignLastTrue(&mut self, val: bool) { + unsafe { + let val: u8 = ::std::mem::transmute(val); + self._bitfield_1.set(1usize, 1u8, val as u64) + } + } + #[inline] + pub fn new_bitfield_1( + mTextAlignTrue: bool, + mTextAlignLastTrue: bool, + ) -> root::__BindgenBitfieldUnit<[u8; 1usize], u8> { + let mut __bindgen_bitfield_unit: root::__BindgenBitfieldUnit< + [u8; 1usize], + u8, + > = Default::default(); + __bindgen_bitfield_unit.set(0usize, 1u8, { + let mTextAlignTrue: u8 = unsafe { ::std::mem::transmute(mTextAlignTrue) }; + mTextAlignTrue as u64 + }); + __bindgen_bitfield_unit.set(1usize, 1u8, { + let mTextAlignLastTrue: u8 = unsafe { ::std::mem::transmute(mTextAlignLastTrue) }; + mTextAlignLastTrue as u64 + }); + __bindgen_bitfield_unit + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleImageOrientation { + pub mOrientation: u8, + } + pub const nsStyleImageOrientation_Bits_ORIENTATION_MASK: root::nsStyleImageOrientation_Bits = 3; + pub const nsStyleImageOrientation_Bits_FLIP_MASK: root::nsStyleImageOrientation_Bits = 4; + pub const nsStyleImageOrientation_Bits_FROM_IMAGE_MASK: root::nsStyleImageOrientation_Bits = 8; + pub type nsStyleImageOrientation_Bits = u32; + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleImageOrientation_Angles { + ANGLE_0 = 0, + ANGLE_90 = 1, + ANGLE_180 = 2, + ANGLE_270 = 3, + } + #[test] + fn bindgen_test_layout_nsStyleImageOrientation() { + assert_eq!( + ::std::mem::size_of::<nsStyleImageOrientation>(), + 1usize, + concat!("Size of: ", stringify!(nsStyleImageOrientation)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleImageOrientation>(), + 1usize, + concat!("Alignment of ", stringify!(nsStyleImageOrientation)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleImageOrientation>())).mOrientation as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleImageOrientation), + "::", + stringify!(mOrientation) + ) + ); + } + impl Clone for nsStyleImageOrientation { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleVisibility { + pub mImageOrientation: root::nsStyleImageOrientation, + pub mDirection: u8, + pub mVisible: u8, + pub mImageRendering: u8, + pub mWritingMode: u8, + pub mTextOrientation: u8, + pub mColorAdjust: u8, + } + pub const nsStyleVisibility_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleVisibility() { + assert_eq!( + ::std::mem::size_of::<nsStyleVisibility>(), + 7usize, + concat!("Size of: ", stringify!(nsStyleVisibility)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleVisibility>(), + 1usize, + concat!("Alignment of ", stringify!(nsStyleVisibility)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleVisibility>())).mImageOrientation as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleVisibility), + "::", + stringify!(mImageOrientation) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleVisibility>())).mDirection as *const _ as usize + }, + 1usize, + concat!( + "Offset of field: ", + stringify!(nsStyleVisibility), + "::", + stringify!(mDirection) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleVisibility>())).mVisible as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(nsStyleVisibility), + "::", + stringify!(mVisible) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleVisibility>())).mImageRendering as *const _ as usize + }, + 3usize, + concat!( + "Offset of field: ", + stringify!(nsStyleVisibility), + "::", + stringify!(mImageRendering) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleVisibility>())).mWritingMode as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleVisibility), + "::", + stringify!(mWritingMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleVisibility>())).mTextOrientation as *const _ as usize + }, + 5usize, + concat!( + "Offset of field: ", + stringify!(nsStyleVisibility), + "::", + stringify!(mTextOrientation) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleVisibility>())).mColorAdjust as *const _ as usize + }, + 6usize, + concat!( + "Offset of field: ", + stringify!(nsStyleVisibility), + "::", + stringify!(mColorAdjust) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsTimingFunction { + pub mType: root::nsTimingFunction_Type, + pub __bindgen_anon_1: root::nsTimingFunction__bindgen_ty_1, + } + #[repr(i32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsTimingFunction_Type { + Ease = 0, + Linear = 1, + EaseIn = 2, + EaseOut = 3, + EaseInOut = 4, + StepStart = 5, + StepEnd = 6, + CubicBezier = 7, + Frames = 8, + } + pub const nsTimingFunction_Keyword_Implicit: root::nsTimingFunction_Keyword = 0; + pub const nsTimingFunction_Keyword_Explicit: root::nsTimingFunction_Keyword = 1; + pub type nsTimingFunction_Keyword = i32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsTimingFunction__bindgen_ty_1 { + pub mFunc: root::__BindgenUnionField<root::nsTimingFunction__bindgen_ty_1__bindgen_ty_1>, + pub __bindgen_anon_1: + root::__BindgenUnionField<root::nsTimingFunction__bindgen_ty_1__bindgen_ty_2>, + pub bindgen_union_field: [u32; 4usize], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsTimingFunction__bindgen_ty_1__bindgen_ty_1 { + pub mX1: f32, + pub mY1: f32, + pub mX2: f32, + pub mY2: f32, + } + #[test] + fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>(), + 16usize, + concat!( + "Size of: ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>())).mX1 + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(mX1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>())).mY1 + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(mY1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>())).mX2 + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(mX2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>())).mY2 + as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(mY2) + ) + ); + } + impl Clone for nsTimingFunction__bindgen_ty_1__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsTimingFunction__bindgen_ty_1__bindgen_ty_2 { + pub mStepsOrFrames: u32, + } + #[test] + fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::<nsTimingFunction__bindgen_ty_1__bindgen_ty_2>(), + 4usize, + concat!( + "Size of: ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::<nsTimingFunction__bindgen_ty_1__bindgen_ty_2>(), + 4usize, + concat!( + "Alignment of ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_2>())) + .mStepsOrFrames as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(mStepsOrFrames) + ) + ); + } + impl Clone for nsTimingFunction__bindgen_ty_1__bindgen_ty_2 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsTimingFunction__bindgen_ty_1>(), + 16usize, + concat!("Size of: ", stringify!(nsTimingFunction__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsTimingFunction__bindgen_ty_1>(), + 4usize, + concat!("Alignment of ", stringify!(nsTimingFunction__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1>())).mFunc as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsTimingFunction__bindgen_ty_1), + "::", + stringify!(mFunc) + ) + ); + } + impl Clone for nsTimingFunction__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsTimingFunction() { + assert_eq!( + ::std::mem::size_of::<nsTimingFunction>(), + 20usize, + concat!("Size of: ", stringify!(nsTimingFunction)) + ); + assert_eq!( + ::std::mem::align_of::<nsTimingFunction>(), + 4usize, + concat!("Alignment of ", stringify!(nsTimingFunction)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsTimingFunction>())).mType as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsTimingFunction), + "::", + stringify!(mType) + ) + ); + } + impl Clone for nsTimingFunction { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleDisplay { + pub mBinding: root::RefPtr<root::mozilla::css::URLValue>, + pub mDisplay: root::mozilla::StyleDisplay, + pub mOriginalDisplay: root::mozilla::StyleDisplay, + pub mContain: u8, + pub mAppearance: u8, + pub mPosition: u8, + pub mFloat: root::mozilla::StyleFloat, + pub mOriginalFloat: root::mozilla::StyleFloat, + pub mBreakType: root::mozilla::StyleClear, + pub mBreakInside: u8, + pub mBreakBefore: bool, + pub mBreakAfter: bool, + pub mOverflowX: u8, + pub mOverflowY: u8, + pub mOverflowClipBoxBlock: u8, + pub mOverflowClipBoxInline: u8, + pub mResize: u8, + pub mOrient: root::mozilla::StyleOrient, + pub mIsolation: u8, + pub mTopLayer: u8, + pub mWillChangeBitField: u8, + pub mWillChange: root::nsTArray<root::RefPtr<root::nsAtom>>, + pub mTouchAction: u8, + pub mScrollBehavior: u8, + pub mOverscrollBehaviorX: root::mozilla::StyleOverscrollBehavior, + pub mOverscrollBehaviorY: root::mozilla::StyleOverscrollBehavior, + pub mScrollSnapTypeX: u8, + pub mScrollSnapTypeY: u8, + pub mScrollSnapPointsX: root::nsStyleCoord, + pub mScrollSnapPointsY: root::nsStyleCoord, + pub mScrollSnapDestination: root::mozilla::Position, + pub mScrollSnapCoordinate: root::nsTArray<root::mozilla::Position>, + pub mBackfaceVisibility: u8, + pub mTransformStyle: u8, + pub mTransformBox: root::nsStyleDisplay_StyleGeometryBox, + pub mSpecifiedTransform: root::RefPtr<root::nsCSSValueSharedList>, + pub mTransformOrigin: [root::nsStyleCoord; 3usize], + pub mChildPerspective: root::nsStyleCoord, + pub mPerspectiveOrigin: [root::nsStyleCoord; 2usize], + pub mVerticalAlign: root::nsStyleCoord, + pub mTransitions: root::nsStyleAutoArray<root::mozilla::StyleTransition>, + pub mTransitionTimingFunctionCount: u32, + pub mTransitionDurationCount: u32, + pub mTransitionDelayCount: u32, + pub mTransitionPropertyCount: u32, + pub mAnimations: root::nsStyleAutoArray<root::mozilla::StyleAnimation>, + pub mAnimationTimingFunctionCount: u32, + pub mAnimationDurationCount: u32, + pub mAnimationDelayCount: u32, + pub mAnimationNameCount: u32, + pub mAnimationDirectionCount: u32, + pub mAnimationFillModeCount: u32, + pub mAnimationPlayStateCount: u32, + pub mAnimationIterationCountCount: u32, + pub mShapeImageThreshold: f32, + pub mShapeOutside: root::mozilla::StyleShapeSource, + } + pub use self::super::root::mozilla::StyleGeometryBox as nsStyleDisplay_StyleGeometryBox; + pub const nsStyleDisplay_kHasFinishStyle: bool = true; + #[test] + fn bindgen_test_layout_nsStyleDisplay() { + assert_eq!( + ::std::mem::size_of::<nsStyleDisplay>(), + 424usize, + concat!("Size of: ", stringify!(nsStyleDisplay)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleDisplay>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleDisplay)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mBinding as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mBinding) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mDisplay as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mDisplay) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mOriginalDisplay as *const _ as usize + }, + 9usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOriginalDisplay) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mContain as *const _ as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mContain) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mAppearance as *const _ as usize }, + 11usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAppearance) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mPosition as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mPosition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mFloat as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mFloat) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mOriginalFloat as *const _ as usize + }, + 14usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOriginalFloat) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mBreakType as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mBreakType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mBreakInside as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mBreakInside) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mBreakBefore as *const _ as usize }, + 17usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mBreakBefore) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mBreakAfter as *const _ as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mBreakAfter) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mOverflowX as *const _ as usize }, + 19usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOverflowX) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mOverflowY as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOverflowY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mOverflowClipBoxBlock as *const _ + as usize + }, + 21usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOverflowClipBoxBlock) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mOverflowClipBoxInline as *const _ + as usize + }, + 22usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOverflowClipBoxInline) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mResize as *const _ as usize }, + 23usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mResize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mOrient as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOrient) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mIsolation as *const _ as usize }, + 25usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mIsolation) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mTopLayer as *const _ as usize }, + 26usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTopLayer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mWillChangeBitField as *const _ as usize + }, + 27usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mWillChangeBitField) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mWillChange as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mWillChange) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mTouchAction as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTouchAction) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mScrollBehavior as *const _ as usize + }, + 41usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mScrollBehavior) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mOverscrollBehaviorX as *const _ as usize + }, + 42usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOverscrollBehaviorX) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mOverscrollBehaviorY as *const _ as usize + }, + 43usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mOverscrollBehaviorY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mScrollSnapTypeX as *const _ as usize + }, + 44usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mScrollSnapTypeX) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mScrollSnapTypeY as *const _ as usize + }, + 45usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mScrollSnapTypeY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mScrollSnapPointsX as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mScrollSnapPointsX) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mScrollSnapPointsY as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mScrollSnapPointsY) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mScrollSnapDestination as *const _ + as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mScrollSnapDestination) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mScrollSnapCoordinate as *const _ + as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mScrollSnapCoordinate) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mBackfaceVisibility as *const _ as usize + }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mBackfaceVisibility) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mTransformStyle as *const _ as usize + }, + 113usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTransformStyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mTransformBox as *const _ as usize + }, + 114usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTransformBox) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mSpecifiedTransform as *const _ as usize + }, + 120usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mSpecifiedTransform) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mTransformOrigin as *const _ as usize + }, + 128usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTransformOrigin) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mChildPerspective as *const _ as usize + }, + 176usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mChildPerspective) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mPerspectiveOrigin as *const _ as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mPerspectiveOrigin) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mVerticalAlign as *const _ as usize + }, + 224usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mVerticalAlign) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mTransitions as *const _ as usize }, + 240usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTransitions) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mTransitionTimingFunctionCount + as *const _ as usize + }, + 288usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTransitionTimingFunctionCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mTransitionDurationCount as *const _ + as usize + }, + 292usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTransitionDurationCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mTransitionDelayCount as *const _ + as usize + }, + 296usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTransitionDelayCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mTransitionPropertyCount as *const _ + as usize + }, + 300usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mTransitionPropertyCount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimations as *const _ as usize }, + 304usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimations) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimationTimingFunctionCount as *const _ + as usize + }, + 360usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimationTimingFunctionCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimationDurationCount as *const _ + as usize + }, + 364usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimationDurationCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimationDelayCount as *const _ as usize + }, + 368usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimationDelayCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimationNameCount as *const _ as usize + }, + 372usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimationNameCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimationDirectionCount as *const _ + as usize + }, + 376usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimationDirectionCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimationFillModeCount as *const _ + as usize + }, + 380usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimationFillModeCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimationPlayStateCount as *const _ + as usize + }, + 384usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimationPlayStateCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mAnimationIterationCountCount as *const _ + as usize + }, + 388usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mAnimationIterationCountCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mShapeImageThreshold as *const _ as usize + }, + 392usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mShapeImageThreshold) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleDisplay>())).mShapeOutside as *const _ as usize + }, + 400usize, + concat!( + "Offset of field: ", + stringify!(nsStyleDisplay), + "::", + stringify!(mShapeOutside) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleTable { + pub mLayoutStrategy: u8, + pub mSpan: i32, + } + pub const nsStyleTable_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleTable() { + assert_eq!( + ::std::mem::size_of::<nsStyleTable>(), + 8usize, + concat!("Size of: ", stringify!(nsStyleTable)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleTable>(), + 4usize, + concat!("Alignment of ", stringify!(nsStyleTable)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTable>())).mLayoutStrategy as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTable), + "::", + stringify!(mLayoutStrategy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleTable>())).mSpan as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTable), + "::", + stringify!(mSpan) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleTableBorder { + pub mBorderSpacingCol: root::nscoord, + pub mBorderSpacingRow: root::nscoord, + pub mBorderCollapse: u8, + pub mCaptionSide: u8, + pub mEmptyCells: u8, + } + pub const nsStyleTableBorder_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleTableBorder() { + assert_eq!( + ::std::mem::size_of::<nsStyleTableBorder>(), + 12usize, + concat!("Size of: ", stringify!(nsStyleTableBorder)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleTableBorder>(), + 4usize, + concat!("Alignment of ", stringify!(nsStyleTableBorder)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTableBorder>())).mBorderSpacingCol as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTableBorder), + "::", + stringify!(mBorderSpacingCol) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTableBorder>())).mBorderSpacingRow as *const _ + as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTableBorder), + "::", + stringify!(mBorderSpacingRow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTableBorder>())).mBorderCollapse as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTableBorder), + "::", + stringify!(mBorderCollapse) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTableBorder>())).mCaptionSide as *const _ as usize + }, + 9usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTableBorder), + "::", + stringify!(mCaptionSide) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleTableBorder>())).mEmptyCells as *const _ as usize + }, + 10usize, + concat!( + "Offset of field: ", + stringify!(nsStyleTableBorder), + "::", + stringify!(mEmptyCells) + ) + ); + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleContentType { + eStyleContentType_String = 1, + eStyleContentType_Image = 10, + eStyleContentType_Attr = 20, + eStyleContentType_Counter = 30, + eStyleContentType_Counters = 31, + eStyleContentType_OpenQuote = 40, + eStyleContentType_CloseQuote = 41, + eStyleContentType_NoOpenQuote = 42, + eStyleContentType_NoCloseQuote = 43, + eStyleContentType_AltContent = 50, + eStyleContentType_Uninitialized = 51, + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleContentData { + pub mType: root::nsStyleContentType, + pub mContent: root::nsStyleContentData__bindgen_ty_1, + } + #[repr(C)] + pub struct nsStyleContentData_CounterFunction { + pub mIdent: ::nsstring::nsStringRepr, + pub mSeparator: ::nsstring::nsStringRepr, + pub mCounterStyle: root::mozilla::CounterStylePtr, + pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt, + } + pub type nsStyleContentData_CounterFunction_HasThreadSafeRefCnt = root::mozilla::TrueType; + #[test] + fn bindgen_test_layout_nsStyleContentData_CounterFunction() { + assert_eq!( + ::std::mem::size_of::<nsStyleContentData_CounterFunction>(), + 48usize, + concat!("Size of: ", stringify!(nsStyleContentData_CounterFunction)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleContentData_CounterFunction>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsStyleContentData_CounterFunction) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleContentData_CounterFunction>())).mIdent as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData_CounterFunction), + "::", + stringify!(mIdent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleContentData_CounterFunction>())).mSeparator + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData_CounterFunction), + "::", + stringify!(mSeparator) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleContentData_CounterFunction>())).mCounterStyle + as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData_CounterFunction), + "::", + stringify!(mCounterStyle) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleContentData_CounterFunction>())).mRefCnt as *const _ + as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData_CounterFunction), + "::", + stringify!(mRefCnt) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleContentData__bindgen_ty_1 { + pub mString: root::__BindgenUnionField<*mut u16>, + pub mImage: root::__BindgenUnionField<*mut root::nsStyleImageRequest>, + pub mCounters: root::__BindgenUnionField<*mut root::nsStyleContentData_CounterFunction>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsStyleContentData__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsStyleContentData__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(nsStyleContentData__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleContentData__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsStyleContentData__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleContentData__bindgen_ty_1>())).mString as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData__bindgen_ty_1), + "::", + stringify!(mString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleContentData__bindgen_ty_1>())).mImage as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData__bindgen_ty_1), + "::", + stringify!(mImage) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleContentData__bindgen_ty_1>())).mCounters as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData__bindgen_ty_1), + "::", + stringify!(mCounters) + ) + ); + } + impl Clone for nsStyleContentData__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsStyleContentData() { + assert_eq!( + ::std::mem::size_of::<nsStyleContentData>(), + 16usize, + concat!("Size of: ", stringify!(nsStyleContentData)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleContentData>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleContentData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleContentData>())).mType as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleContentData>())).mContent as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContentData), + "::", + stringify!(mContent) + ) + ); + } + #[repr(C)] + pub struct nsStyleCounterData { + pub mCounter: ::nsstring::nsStringRepr, + pub mValue: i32, + } + #[test] + fn bindgen_test_layout_nsStyleCounterData() { + assert_eq!( + ::std::mem::size_of::<nsStyleCounterData>(), + 24usize, + concat!("Size of: ", stringify!(nsStyleCounterData)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleCounterData>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleCounterData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleCounterData>())).mCounter as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCounterData), + "::", + stringify!(mCounter) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleCounterData>())).mValue as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleCounterData), + "::", + stringify!(mValue) + ) + ); + } + #[repr(C)] + pub struct nsStyleContent { + pub mContents: root::nsTArray<root::nsStyleContentData>, + pub mIncrements: root::nsTArray<root::nsStyleCounterData>, + pub mResets: root::nsTArray<root::nsStyleCounterData>, + } + pub const nsStyleContent_kHasFinishStyle: bool = true; + #[test] + fn bindgen_test_layout_nsStyleContent() { + assert_eq!( + ::std::mem::size_of::<nsStyleContent>(), + 24usize, + concat!("Size of: ", stringify!(nsStyleContent)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleContent>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleContent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleContent>())).mContents as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContent), + "::", + stringify!(mContents) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleContent>())).mIncrements as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContent), + "::", + stringify!(mIncrements) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleContent>())).mResets as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContent), + "::", + stringify!(mResets) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleUIReset { + pub mUserSelect: root::mozilla::StyleUserSelect, + pub mForceBrokenImageIcon: u8, + pub mIMEMode: u8, + pub mWindowDragging: root::mozilla::StyleWindowDragging, + pub mWindowShadow: u8, + pub mWindowOpacity: f32, + pub mSpecifiedWindowTransform: root::RefPtr<root::nsCSSValueSharedList>, + pub mWindowTransformOrigin: [root::nsStyleCoord; 2usize], + } + pub const nsStyleUIReset_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleUIReset() { + assert_eq!( + ::std::mem::size_of::<nsStyleUIReset>(), + 56usize, + concat!("Size of: ", stringify!(nsStyleUIReset)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleUIReset>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleUIReset)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleUIReset>())).mUserSelect as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUIReset), + "::", + stringify!(mUserSelect) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUIReset>())).mForceBrokenImageIcon as *const _ + as usize + }, + 1usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUIReset), + "::", + stringify!(mForceBrokenImageIcon) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleUIReset>())).mIMEMode as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUIReset), + "::", + stringify!(mIMEMode) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUIReset>())).mWindowDragging as *const _ as usize + }, + 3usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUIReset), + "::", + stringify!(mWindowDragging) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUIReset>())).mWindowShadow as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUIReset), + "::", + stringify!(mWindowShadow) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUIReset>())).mWindowOpacity as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUIReset), + "::", + stringify!(mWindowOpacity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUIReset>())).mSpecifiedWindowTransform as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUIReset), + "::", + stringify!(mSpecifiedWindowTransform) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUIReset>())).mWindowTransformOrigin as *const _ + as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUIReset), + "::", + stringify!(mWindowTransformOrigin) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCursorImage { + pub mHaveHotspot: bool, + pub mHotspotX: f32, + pub mHotspotY: f32, + pub mImage: root::RefPtr<root::nsStyleImageRequest>, + } + #[test] + fn bindgen_test_layout_nsCursorImage() { + assert_eq!( + ::std::mem::size_of::<nsCursorImage>(), + 24usize, + concat!("Size of: ", stringify!(nsCursorImage)) + ); + assert_eq!( + ::std::mem::align_of::<nsCursorImage>(), + 8usize, + concat!("Alignment of ", stringify!(nsCursorImage)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCursorImage>())).mHaveHotspot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsCursorImage), + "::", + stringify!(mHaveHotspot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCursorImage>())).mHotspotX as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsCursorImage), + "::", + stringify!(mHotspotX) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCursorImage>())).mHotspotY as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsCursorImage), + "::", + stringify!(mHotspotY) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCursorImage>())).mImage as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsCursorImage), + "::", + stringify!(mImage) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleUserInterface { + pub mUserInput: root::mozilla::StyleUserInput, + pub mUserModify: root::mozilla::StyleUserModify, + pub mUserFocus: root::mozilla::StyleUserFocus, + pub mPointerEvents: u8, + pub mCursor: u8, + pub mCursorImages: root::nsTArray<root::nsCursorImage>, + pub mCaretColor: root::mozilla::StyleComplexColor, + } + pub const nsStyleUserInterface_kHasFinishStyle: bool = true; + #[test] + fn bindgen_test_layout_nsStyleUserInterface() { + assert_eq!( + ::std::mem::size_of::<nsStyleUserInterface>(), + 24usize, + concat!("Size of: ", stringify!(nsStyleUserInterface)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleUserInterface>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleUserInterface)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUserInterface>())).mUserInput as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUserInterface), + "::", + stringify!(mUserInput) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUserInterface>())).mUserModify as *const _ as usize + }, + 1usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUserInterface), + "::", + stringify!(mUserModify) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUserInterface>())).mUserFocus as *const _ as usize + }, + 2usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUserInterface), + "::", + stringify!(mUserFocus) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUserInterface>())).mPointerEvents as *const _ as usize + }, + 3usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUserInterface), + "::", + stringify!(mPointerEvents) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUserInterface>())).mCursor as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUserInterface), + "::", + stringify!(mCursor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUserInterface>())).mCursorImages as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUserInterface), + "::", + stringify!(mCursorImages) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleUserInterface>())).mCaretColor as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleUserInterface), + "::", + stringify!(mCaretColor) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleXUL { + pub mBoxFlex: f32, + pub mBoxOrdinal: u32, + pub mBoxAlign: root::mozilla::StyleBoxAlign, + pub mBoxDirection: root::mozilla::StyleBoxDirection, + pub mBoxOrient: root::mozilla::StyleBoxOrient, + pub mBoxPack: root::mozilla::StyleBoxPack, + pub mStackSizing: root::mozilla::StyleStackSizing, + } + pub const nsStyleXUL_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleXUL() { + assert_eq!( + ::std::mem::size_of::<nsStyleXUL>(), + 16usize, + concat!("Size of: ", stringify!(nsStyleXUL)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleXUL>(), + 4usize, + concat!("Alignment of ", stringify!(nsStyleXUL)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleXUL>())).mBoxFlex as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleXUL), + "::", + stringify!(mBoxFlex) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleXUL>())).mBoxOrdinal as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsStyleXUL), + "::", + stringify!(mBoxOrdinal) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleXUL>())).mBoxAlign as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleXUL), + "::", + stringify!(mBoxAlign) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleXUL>())).mBoxDirection as *const _ as usize }, + 9usize, + concat!( + "Offset of field: ", + stringify!(nsStyleXUL), + "::", + stringify!(mBoxDirection) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleXUL>())).mBoxOrient as *const _ as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(nsStyleXUL), + "::", + stringify!(mBoxOrient) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleXUL>())).mBoxPack as *const _ as usize }, + 11usize, + concat!( + "Offset of field: ", + stringify!(nsStyleXUL), + "::", + stringify!(mBoxPack) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleXUL>())).mStackSizing as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsStyleXUL), + "::", + stringify!(mStackSizing) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleColumn { + pub mColumnCount: u32, + pub mColumnWidth: root::nsStyleCoord, + pub mColumnGap: root::nsStyleCoord, + pub mColumnRuleColor: root::mozilla::StyleComplexColor, + pub mColumnRuleStyle: u8, + pub mColumnFill: u8, + pub mColumnSpan: u8, + pub mColumnRuleWidth: root::nscoord, + pub mTwipsPerPixel: root::nscoord, + } + pub const nsStyleColumn_kHasFinishStyle: bool = false; + pub const nsStyleColumn_kMaxColumnCount: u32 = 1000; + #[test] + fn bindgen_test_layout_nsStyleColumn() { + assert_eq!( + ::std::mem::size_of::<nsStyleColumn>(), + 64usize, + concat!("Size of: ", stringify!(nsStyleColumn)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleColumn>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleColumn)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleColumn>())).mColumnCount as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mColumnCount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleColumn>())).mColumnWidth as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mColumnWidth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleColumn>())).mColumnGap as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mColumnGap) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleColumn>())).mColumnRuleColor as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mColumnRuleColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleColumn>())).mColumnRuleStyle as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mColumnRuleStyle) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleColumn>())).mColumnFill as *const _ as usize }, + 49usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mColumnFill) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleColumn>())).mColumnSpan as *const _ as usize }, + 50usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mColumnSpan) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleColumn>())).mColumnRuleWidth as *const _ as usize + }, + 52usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mColumnRuleWidth) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleColumn>())).mTwipsPerPixel as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsStyleColumn), + "::", + stringify!(mTwipsPerPixel) + ) + ); + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleSVGPaintType { + eStyleSVGPaintType_None = 1, + eStyleSVGPaintType_Color = 2, + eStyleSVGPaintType_Server = 3, + eStyleSVGPaintType_ContextFill = 4, + eStyleSVGPaintType_ContextStroke = 5, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleSVGFallbackType { + eStyleSVGFallbackType_NotSet = 0, + eStyleSVGFallbackType_None = 1, + eStyleSVGFallbackType_Color = 2, + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsStyleSVGOpacitySource { + eStyleSVGOpacitySource_Normal = 0, + eStyleSVGOpacitySource_ContextFillOpacity = 1, + eStyleSVGOpacitySource_ContextStrokeOpacity = 2, + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleSVGPaint { + pub mPaint: root::nsStyleSVGPaint__bindgen_ty_1, + pub mType: root::nsStyleSVGPaintType, + pub mFallbackType: root::nsStyleSVGFallbackType, + pub mFallbackColor: root::nscolor, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleSVGPaint__bindgen_ty_1 { + pub mColor: root::__BindgenUnionField<root::nscolor>, + pub mPaintServer: root::__BindgenUnionField<*mut root::mozilla::css::URLValue>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsStyleSVGPaint__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsStyleSVGPaint__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(nsStyleSVGPaint__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleSVGPaint__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleSVGPaint__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGPaint__bindgen_ty_1>())).mColor as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGPaint__bindgen_ty_1), + "::", + stringify!(mColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGPaint__bindgen_ty_1>())).mPaintServer as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGPaint__bindgen_ty_1), + "::", + stringify!(mPaintServer) + ) + ); + } + impl Clone for nsStyleSVGPaint__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsStyleSVGPaint() { + assert_eq!( + ::std::mem::size_of::<nsStyleSVGPaint>(), + 16usize, + concat!("Size of: ", stringify!(nsStyleSVGPaint)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleSVGPaint>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleSVGPaint)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVGPaint>())).mPaint as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGPaint), + "::", + stringify!(mPaint) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVGPaint>())).mType as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGPaint), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGPaint>())).mFallbackType as *const _ as usize + }, + 9usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGPaint), + "::", + stringify!(mFallbackType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGPaint>())).mFallbackColor as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGPaint), + "::", + stringify!(mFallbackColor) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleSVG { + pub mFill: root::nsStyleSVGPaint, + pub mStroke: root::nsStyleSVGPaint, + pub mMarkerEnd: root::RefPtr<root::mozilla::css::URLValue>, + pub mMarkerMid: root::RefPtr<root::mozilla::css::URLValue>, + pub mMarkerStart: root::RefPtr<root::mozilla::css::URLValue>, + pub mStrokeDasharray: root::nsTArray<root::nsStyleCoord>, + pub mContextProps: root::nsTArray<root::RefPtr<root::nsAtom>>, + pub mStrokeDashoffset: root::nsStyleCoord, + pub mStrokeWidth: root::nsStyleCoord, + pub mFillOpacity: f32, + pub mStrokeMiterlimit: f32, + pub mStrokeOpacity: f32, + pub mClipRule: root::mozilla::StyleFillRule, + pub mColorInterpolation: u8, + pub mColorInterpolationFilters: u8, + pub mFillRule: root::mozilla::StyleFillRule, + pub mPaintOrder: u8, + pub mShapeRendering: u8, + pub mStrokeLinecap: u8, + pub mStrokeLinejoin: u8, + pub mTextAnchor: u8, + pub mContextPropsBits: u8, + pub mContextFlags: u8, + } + pub const nsStyleSVG_kHasFinishStyle: bool = false; + pub const nsStyleSVG_FILL_OPACITY_SOURCE_MASK: u8 = 3; + pub const nsStyleSVG_STROKE_OPACITY_SOURCE_MASK: u8 = 12; + pub const nsStyleSVG_STROKE_DASHARRAY_CONTEXT: u8 = 16; + pub const nsStyleSVG_STROKE_DASHOFFSET_CONTEXT: u8 = 32; + pub const nsStyleSVG_STROKE_WIDTH_CONTEXT: u8 = 64; + pub const nsStyleSVG_FILL_OPACITY_SOURCE_SHIFT: u8 = 0; + pub const nsStyleSVG_STROKE_OPACITY_SOURCE_SHIFT: u8 = 2; + #[test] + fn bindgen_test_layout_nsStyleSVG() { + assert_eq!( + ::std::mem::size_of::<nsStyleSVG>(), + 128usize, + concat!("Size of: ", stringify!(nsStyleSVG)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleSVG>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleSVG)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mFill as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mFill) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mStroke as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mStroke) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mMarkerEnd as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mMarkerEnd) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mMarkerMid as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mMarkerMid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mMarkerStart as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mMarkerStart) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mStrokeDasharray as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mStrokeDasharray) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mContextProps as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mContextProps) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVG>())).mStrokeDashoffset as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mStrokeDashoffset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mStrokeWidth as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mStrokeWidth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mFillOpacity as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mFillOpacity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVG>())).mStrokeMiterlimit as *const _ as usize + }, + 108usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mStrokeMiterlimit) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mStrokeOpacity as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mStrokeOpacity) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mClipRule as *const _ as usize }, + 116usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mClipRule) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVG>())).mColorInterpolation as *const _ as usize + }, + 117usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mColorInterpolation) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVG>())).mColorInterpolationFilters as *const _ + as usize + }, + 118usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mColorInterpolationFilters) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mFillRule as *const _ as usize }, + 119usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mFillRule) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mPaintOrder as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mPaintOrder) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mShapeRendering as *const _ as usize }, + 121usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mShapeRendering) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mStrokeLinecap as *const _ as usize }, + 122usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mStrokeLinecap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mStrokeLinejoin as *const _ as usize }, + 123usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mStrokeLinejoin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mTextAnchor as *const _ as usize }, + 124usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mTextAnchor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVG>())).mContextPropsBits as *const _ as usize + }, + 125usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mContextPropsBits) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVG>())).mContextFlags as *const _ as usize }, + 126usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVG), + "::", + stringify!(mContextFlags) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleFilter { + pub mType: u32, + pub mFilterParameter: root::nsStyleCoord, + pub __bindgen_anon_1: root::nsStyleFilter__bindgen_ty_1, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStyleFilter__bindgen_ty_1 { + pub mURL: root::__BindgenUnionField<*mut root::mozilla::css::URLValue>, + pub mDropShadow: root::__BindgenUnionField<*mut root::nsCSSShadowArray>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsStyleFilter__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsStyleFilter__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(nsStyleFilter__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleFilter__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleFilter__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleFilter__bindgen_ty_1>())).mURL as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFilter__bindgen_ty_1), + "::", + stringify!(mURL) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleFilter__bindgen_ty_1>())).mDropShadow as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFilter__bindgen_ty_1), + "::", + stringify!(mDropShadow) + ) + ); + } + impl Clone for nsStyleFilter__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + pub const nsStyleFilter_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleFilter() { + assert_eq!( + ::std::mem::size_of::<nsStyleFilter>(), + 32usize, + concat!("Size of: ", stringify!(nsStyleFilter)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleFilter>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleFilter)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleFilter>())).mType as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFilter), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleFilter>())).mFilterParameter as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleFilter), + "::", + stringify!(mFilterParameter) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleSVGReset { + pub mMask: root::nsStyleImageLayers, + pub mClipPath: root::mozilla::StyleShapeSource, + pub mStopColor: root::nscolor, + pub mFloodColor: root::nscolor, + pub mLightingColor: root::nscolor, + pub mStopOpacity: f32, + pub mFloodOpacity: f32, + pub mDominantBaseline: u8, + pub mVectorEffect: u8, + pub mMaskType: u8, + } + pub const nsStyleSVGReset_kHasFinishStyle: bool = true; + #[test] + fn bindgen_test_layout_nsStyleSVGReset() { + assert_eq!( + ::std::mem::size_of::<nsStyleSVGReset>(), + 200usize, + concat!("Size of: ", stringify!(nsStyleSVGReset)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleSVGReset>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleSVGReset)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVGReset>())).mMask as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mMask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVGReset>())).mClipPath as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mClipPath) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVGReset>())).mStopColor as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mStopColor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVGReset>())).mFloodColor as *const _ as usize }, + 180usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mFloodColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGReset>())).mLightingColor as *const _ as usize + }, + 184usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mLightingColor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGReset>())).mStopOpacity as *const _ as usize + }, + 188usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mStopOpacity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGReset>())).mFloodOpacity as *const _ as usize + }, + 192usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mFloodOpacity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGReset>())).mDominantBaseline as *const _ as usize + }, + 196usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mDominantBaseline) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleSVGReset>())).mVectorEffect as *const _ as usize + }, + 197usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mVectorEffect) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleSVGReset>())).mMaskType as *const _ as usize }, + 198usize, + concat!( + "Offset of field: ", + stringify!(nsStyleSVGReset), + "::", + stringify!(mMaskType) + ) + ); + } + #[repr(C)] + pub struct nsStyleVariables { + pub mVariables: root::mozilla::CSSVariableValues, + } + pub const nsStyleVariables_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleVariables() { + assert_eq!( + ::std::mem::size_of::<nsStyleVariables>(), + 40usize, + concat!("Size of: ", stringify!(nsStyleVariables)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleVariables>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleVariables)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleVariables>())).mVariables as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleVariables), + "::", + stringify!(mVariables) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleEffects { + pub mFilters: root::nsTArray<root::nsStyleFilter>, + pub mBoxShadow: root::RefPtr<root::nsCSSShadowArray>, + pub mClip: root::nsRect, + pub mOpacity: f32, + pub mClipFlags: u8, + pub mMixBlendMode: u8, + } + pub const nsStyleEffects_kHasFinishStyle: bool = false; + #[test] + fn bindgen_test_layout_nsStyleEffects() { + assert_eq!( + ::std::mem::size_of::<nsStyleEffects>(), + 40usize, + concat!("Size of: ", stringify!(nsStyleEffects)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleEffects>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleEffects)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleEffects>())).mFilters as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleEffects), + "::", + stringify!(mFilters) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleEffects>())).mBoxShadow as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleEffects), + "::", + stringify!(mBoxShadow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleEffects>())).mClip as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsStyleEffects), + "::", + stringify!(mClip) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleEffects>())).mOpacity as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsStyleEffects), + "::", + stringify!(mOpacity) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleEffects>())).mClipFlags as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(nsStyleEffects), + "::", + stringify!(mClipFlags) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsStyleEffects>())).mMixBlendMode as *const _ as usize + }, + 37usize, + concat!( + "Offset of field: ", + stringify!(nsStyleEffects), + "::", + stringify!(mMixBlendMode) + ) + ); + } + /// These *_Simple types are used to map Gecko types to layout-equivalent but /// simpler Rust types, to aid Rust binding generation. /// /// If something in this types or the assertions below needs to change, ask /// bholley, heycam or emilio before! /// - /// <div rustbindgen="true" replaces="nsPoint"> - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsPoint { pub x : root :: nscoord , pub y : root :: nscoord , } # [ test ] fn bindgen_test_layout_nsPoint ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsPoint > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsPoint ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsPoint > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsPoint ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPoint ) ) . x as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsPoint ) , "::" , stringify ! ( x ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsPoint ) ) . y as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsPoint ) , "::" , stringify ! ( y ) ) ) ; } impl Clone for nsPoint { fn clone ( & self ) -> Self { * self } } - /// <div rustbindgen="true" replaces="nsMargin"> - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsMargin { pub top : root :: nscoord , pub right : root :: nscoord , pub bottom : root :: nscoord , pub left : root :: nscoord , } # [ test ] fn bindgen_test_layout_nsMargin ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsMargin > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsMargin ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsMargin > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsMargin ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMargin ) ) . top as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsMargin ) , "::" , stringify ! ( top ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMargin ) ) . right as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsMargin ) , "::" , stringify ! ( right ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMargin ) ) . bottom as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsMargin ) , "::" , stringify ! ( bottom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMargin ) ) . left as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsMargin ) , "::" , stringify ! ( left ) ) ) ; } impl Clone for nsMargin { fn clone ( & self ) -> Self { * self } } - /// <div rustbindgen="true" replaces="nsRect"> - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsRect { pub x : root :: nscoord , pub y : root :: nscoord , pub width : root :: nscoord , pub height : root :: nscoord , } # [ test ] fn bindgen_test_layout_nsRect ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsRect > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsRect ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsRect > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsRect ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsRect ) ) . x as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsRect ) , "::" , stringify ! ( x ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsRect ) ) . y as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsRect ) , "::" , stringify ! ( y ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsRect ) ) . width as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsRect ) , "::" , stringify ! ( width ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsRect ) ) . height as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsRect ) , "::" , stringify ! ( height ) ) ) ; } impl Clone for nsRect { fn clone ( & self ) -> Self { * self } } - /// <div rustbindgen="true" replaces="nsSize"> - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsSize { pub width : root :: nscoord , pub height : root :: nscoord , } # [ test ] fn bindgen_test_layout_nsSize ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsSize > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsSize ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsSize > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( nsSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsSize ) ) . width as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsSize ) , "::" , stringify ! ( width ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsSize ) ) . height as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsSize ) , "::" , stringify ! ( height ) ) ) ; } impl Clone for nsSize { fn clone ( & self ) -> Self { * self } } - /// <div rustbindgen replaces="nsTArray"></div> - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsTArray < T > { pub mBuffer : * mut T , pub _phantom_0 : :: std :: marker :: PhantomData < :: std :: cell :: UnsafeCell < T > > , } - /// <div rustbindgen replaces="nsCOMArray"></div> - /// - /// mozilla::ArrayIterator doesn't work well with bindgen. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCOMArray { pub mBuffer : root :: nsTArray < * mut root :: nsISupports > , } pub const ThemeWidgetType_NS_THEME_NONE : root :: ThemeWidgetType = 0 ; pub const ThemeWidgetType_NS_THEME_BUTTON : root :: ThemeWidgetType = 1 ; pub const ThemeWidgetType_NS_THEME_RADIO : root :: ThemeWidgetType = 2 ; pub const ThemeWidgetType_NS_THEME_CHECKBOX : root :: ThemeWidgetType = 3 ; pub const ThemeWidgetType_NS_THEME_BUTTON_BEVEL : root :: ThemeWidgetType = 4 ; pub const ThemeWidgetType_NS_THEME_FOCUS_OUTLINE : root :: ThemeWidgetType = 5 ; pub const ThemeWidgetType_NS_THEME_TOOLBOX : root :: ThemeWidgetType = 6 ; pub const ThemeWidgetType_NS_THEME_TOOLBAR : root :: ThemeWidgetType = 7 ; pub const ThemeWidgetType_NS_THEME_TOOLBARBUTTON : root :: ThemeWidgetType = 8 ; pub const ThemeWidgetType_NS_THEME_DUALBUTTON : root :: ThemeWidgetType = 9 ; pub const ThemeWidgetType_NS_THEME_TOOLBARBUTTON_DROPDOWN : root :: ThemeWidgetType = 10 ; pub const ThemeWidgetType_NS_THEME_BUTTON_ARROW_UP : root :: ThemeWidgetType = 11 ; pub const ThemeWidgetType_NS_THEME_BUTTON_ARROW_DOWN : root :: ThemeWidgetType = 12 ; pub const ThemeWidgetType_NS_THEME_BUTTON_ARROW_NEXT : root :: ThemeWidgetType = 13 ; pub const ThemeWidgetType_NS_THEME_BUTTON_ARROW_PREVIOUS : root :: ThemeWidgetType = 14 ; pub const ThemeWidgetType_NS_THEME_SEPARATOR : root :: ThemeWidgetType = 15 ; pub const ThemeWidgetType_NS_THEME_TOOLBARGRIPPER : root :: ThemeWidgetType = 16 ; pub const ThemeWidgetType_NS_THEME_SPLITTER : root :: ThemeWidgetType = 17 ; pub const ThemeWidgetType_NS_THEME_STATUSBAR : root :: ThemeWidgetType = 18 ; pub const ThemeWidgetType_NS_THEME_STATUSBARPANEL : root :: ThemeWidgetType = 19 ; pub const ThemeWidgetType_NS_THEME_RESIZERPANEL : root :: ThemeWidgetType = 20 ; pub const ThemeWidgetType_NS_THEME_RESIZER : root :: ThemeWidgetType = 21 ; pub const ThemeWidgetType_NS_THEME_LISTBOX : root :: ThemeWidgetType = 22 ; pub const ThemeWidgetType_NS_THEME_LISTITEM : root :: ThemeWidgetType = 23 ; pub const ThemeWidgetType_NS_THEME_TREEVIEW : root :: ThemeWidgetType = 24 ; pub const ThemeWidgetType_NS_THEME_TREEITEM : root :: ThemeWidgetType = 25 ; pub const ThemeWidgetType_NS_THEME_TREETWISTY : root :: ThemeWidgetType = 26 ; pub const ThemeWidgetType_NS_THEME_TREELINE : root :: ThemeWidgetType = 27 ; pub const ThemeWidgetType_NS_THEME_TREEHEADER : root :: ThemeWidgetType = 28 ; pub const ThemeWidgetType_NS_THEME_TREEHEADERCELL : root :: ThemeWidgetType = 29 ; pub const ThemeWidgetType_NS_THEME_TREEHEADERSORTARROW : root :: ThemeWidgetType = 30 ; pub const ThemeWidgetType_NS_THEME_TREETWISTYOPEN : root :: ThemeWidgetType = 31 ; pub const ThemeWidgetType_NS_THEME_PROGRESSBAR : root :: ThemeWidgetType = 32 ; pub const ThemeWidgetType_NS_THEME_PROGRESSCHUNK : root :: ThemeWidgetType = 33 ; pub const ThemeWidgetType_NS_THEME_PROGRESSBAR_VERTICAL : root :: ThemeWidgetType = 34 ; pub const ThemeWidgetType_NS_THEME_PROGRESSCHUNK_VERTICAL : root :: ThemeWidgetType = 35 ; pub const ThemeWidgetType_NS_THEME_METERBAR : root :: ThemeWidgetType = 36 ; pub const ThemeWidgetType_NS_THEME_METERCHUNK : root :: ThemeWidgetType = 37 ; pub const ThemeWidgetType_NS_THEME_TAB : root :: ThemeWidgetType = 38 ; pub const ThemeWidgetType_NS_THEME_TABPANEL : root :: ThemeWidgetType = 39 ; pub const ThemeWidgetType_NS_THEME_TABPANELS : root :: ThemeWidgetType = 40 ; pub const ThemeWidgetType_NS_THEME_TAB_SCROLL_ARROW_BACK : root :: ThemeWidgetType = 41 ; pub const ThemeWidgetType_NS_THEME_TAB_SCROLL_ARROW_FORWARD : root :: ThemeWidgetType = 42 ; pub const ThemeWidgetType_NS_THEME_TOOLTIP : root :: ThemeWidgetType = 43 ; pub const ThemeWidgetType_NS_THEME_INNER_SPIN_BUTTON : root :: ThemeWidgetType = 44 ; pub const ThemeWidgetType_NS_THEME_SPINNER : root :: ThemeWidgetType = 45 ; pub const ThemeWidgetType_NS_THEME_SPINNER_UPBUTTON : root :: ThemeWidgetType = 46 ; pub const ThemeWidgetType_NS_THEME_SPINNER_DOWNBUTTON : root :: ThemeWidgetType = 47 ; pub const ThemeWidgetType_NS_THEME_SPINNER_TEXTFIELD : root :: ThemeWidgetType = 48 ; pub const ThemeWidgetType_NS_THEME_NUMBER_INPUT : root :: ThemeWidgetType = 49 ; pub const ThemeWidgetType_NS_THEME_SCROLLBAR : root :: ThemeWidgetType = 50 ; pub const ThemeWidgetType_NS_THEME_SCROLLBAR_SMALL : root :: ThemeWidgetType = 51 ; pub const ThemeWidgetType_NS_THEME_SCROLLBAR_HORIZONTAL : root :: ThemeWidgetType = 52 ; pub const ThemeWidgetType_NS_THEME_SCROLLBAR_VERTICAL : root :: ThemeWidgetType = 53 ; pub const ThemeWidgetType_NS_THEME_SCROLLBARBUTTON_UP : root :: ThemeWidgetType = 54 ; pub const ThemeWidgetType_NS_THEME_SCROLLBARBUTTON_DOWN : root :: ThemeWidgetType = 55 ; pub const ThemeWidgetType_NS_THEME_SCROLLBARBUTTON_LEFT : root :: ThemeWidgetType = 56 ; pub const ThemeWidgetType_NS_THEME_SCROLLBARBUTTON_RIGHT : root :: ThemeWidgetType = 57 ; pub const ThemeWidgetType_NS_THEME_SCROLLBARTRACK_HORIZONTAL : root :: ThemeWidgetType = 58 ; pub const ThemeWidgetType_NS_THEME_SCROLLBARTRACK_VERTICAL : root :: ThemeWidgetType = 59 ; pub const ThemeWidgetType_NS_THEME_SCROLLBARTHUMB_HORIZONTAL : root :: ThemeWidgetType = 60 ; pub const ThemeWidgetType_NS_THEME_SCROLLBARTHUMB_VERTICAL : root :: ThemeWidgetType = 61 ; pub const ThemeWidgetType_NS_THEME_SCROLLBAR_NON_DISAPPEARING : root :: ThemeWidgetType = 62 ; pub const ThemeWidgetType_NS_THEME_TEXTFIELD : root :: ThemeWidgetType = 63 ; pub const ThemeWidgetType_NS_THEME_CARET : root :: ThemeWidgetType = 64 ; pub const ThemeWidgetType_NS_THEME_TEXTFIELD_MULTILINE : root :: ThemeWidgetType = 65 ; pub const ThemeWidgetType_NS_THEME_SEARCHFIELD : root :: ThemeWidgetType = 66 ; pub const ThemeWidgetType_NS_THEME_MENULIST : root :: ThemeWidgetType = 67 ; pub const ThemeWidgetType_NS_THEME_MENULIST_BUTTON : root :: ThemeWidgetType = 68 ; pub const ThemeWidgetType_NS_THEME_MENULIST_TEXT : root :: ThemeWidgetType = 69 ; pub const ThemeWidgetType_NS_THEME_MENULIST_TEXTFIELD : root :: ThemeWidgetType = 70 ; pub const ThemeWidgetType_NS_THEME_SCALE_HORIZONTAL : root :: ThemeWidgetType = 71 ; pub const ThemeWidgetType_NS_THEME_SCALE_VERTICAL : root :: ThemeWidgetType = 72 ; pub const ThemeWidgetType_NS_THEME_SCALETHUMB_HORIZONTAL : root :: ThemeWidgetType = 73 ; pub const ThemeWidgetType_NS_THEME_SCALETHUMB_VERTICAL : root :: ThemeWidgetType = 74 ; pub const ThemeWidgetType_NS_THEME_SCALETHUMBSTART : root :: ThemeWidgetType = 75 ; pub const ThemeWidgetType_NS_THEME_SCALETHUMBEND : root :: ThemeWidgetType = 76 ; pub const ThemeWidgetType_NS_THEME_SCALETHUMBTICK : root :: ThemeWidgetType = 77 ; pub const ThemeWidgetType_NS_THEME_RANGE : root :: ThemeWidgetType = 78 ; pub const ThemeWidgetType_NS_THEME_RANGE_THUMB : root :: ThemeWidgetType = 79 ; pub const ThemeWidgetType_NS_THEME_GROUPBOX : root :: ThemeWidgetType = 80 ; pub const ThemeWidgetType_NS_THEME_CHECKBOX_CONTAINER : root :: ThemeWidgetType = 81 ; pub const ThemeWidgetType_NS_THEME_RADIO_CONTAINER : root :: ThemeWidgetType = 82 ; pub const ThemeWidgetType_NS_THEME_CHECKBOX_LABEL : root :: ThemeWidgetType = 83 ; pub const ThemeWidgetType_NS_THEME_RADIO_LABEL : root :: ThemeWidgetType = 84 ; pub const ThemeWidgetType_NS_THEME_BUTTON_FOCUS : root :: ThemeWidgetType = 85 ; pub const ThemeWidgetType_NS_THEME_WINDOW : root :: ThemeWidgetType = 86 ; pub const ThemeWidgetType_NS_THEME_DIALOG : root :: ThemeWidgetType = 87 ; pub const ThemeWidgetType_NS_THEME_MENUBAR : root :: ThemeWidgetType = 88 ; pub const ThemeWidgetType_NS_THEME_MENUPOPUP : root :: ThemeWidgetType = 89 ; pub const ThemeWidgetType_NS_THEME_MENUITEM : root :: ThemeWidgetType = 90 ; pub const ThemeWidgetType_NS_THEME_CHECKMENUITEM : root :: ThemeWidgetType = 91 ; pub const ThemeWidgetType_NS_THEME_RADIOMENUITEM : root :: ThemeWidgetType = 92 ; pub const ThemeWidgetType_NS_THEME_MENUCHECKBOX : root :: ThemeWidgetType = 93 ; pub const ThemeWidgetType_NS_THEME_MENURADIO : root :: ThemeWidgetType = 94 ; pub const ThemeWidgetType_NS_THEME_MENUSEPARATOR : root :: ThemeWidgetType = 95 ; pub const ThemeWidgetType_NS_THEME_MENUARROW : root :: ThemeWidgetType = 96 ; pub const ThemeWidgetType_NS_THEME_MENUIMAGE : root :: ThemeWidgetType = 97 ; pub const ThemeWidgetType_NS_THEME_MENUITEMTEXT : root :: ThemeWidgetType = 98 ; pub const ThemeWidgetType_NS_THEME_WIN_COMMUNICATIONS_TOOLBOX : root :: ThemeWidgetType = 99 ; pub const ThemeWidgetType_NS_THEME_WIN_MEDIA_TOOLBOX : root :: ThemeWidgetType = 100 ; pub const ThemeWidgetType_NS_THEME_WIN_BROWSERTABBAR_TOOLBOX : root :: ThemeWidgetType = 101 ; pub const ThemeWidgetType_NS_THEME_MAC_FULLSCREEN_BUTTON : root :: ThemeWidgetType = 102 ; pub const ThemeWidgetType_NS_THEME_MAC_HELP_BUTTON : root :: ThemeWidgetType = 103 ; pub const ThemeWidgetType_NS_THEME_WIN_BORDERLESS_GLASS : root :: ThemeWidgetType = 104 ; pub const ThemeWidgetType_NS_THEME_WIN_GLASS : root :: ThemeWidgetType = 105 ; pub const ThemeWidgetType_NS_THEME_WINDOW_TITLEBAR : root :: ThemeWidgetType = 106 ; pub const ThemeWidgetType_NS_THEME_WINDOW_TITLEBAR_MAXIMIZED : root :: ThemeWidgetType = 107 ; pub const ThemeWidgetType_NS_THEME_WINDOW_FRAME_LEFT : root :: ThemeWidgetType = 108 ; pub const ThemeWidgetType_NS_THEME_WINDOW_FRAME_RIGHT : root :: ThemeWidgetType = 109 ; pub const ThemeWidgetType_NS_THEME_WINDOW_FRAME_BOTTOM : root :: ThemeWidgetType = 110 ; pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_CLOSE : root :: ThemeWidgetType = 111 ; pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_MINIMIZE : root :: ThemeWidgetType = 112 ; pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_MAXIMIZE : root :: ThemeWidgetType = 113 ; pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_RESTORE : root :: ThemeWidgetType = 114 ; pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_BOX : root :: ThemeWidgetType = 115 ; pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_BOX_MAXIMIZED : root :: ThemeWidgetType = 116 ; pub const ThemeWidgetType_NS_THEME_WIN_EXCLUDE_GLASS : root :: ThemeWidgetType = 117 ; pub const ThemeWidgetType_NS_THEME_MAC_VIBRANCY_LIGHT : root :: ThemeWidgetType = 118 ; pub const ThemeWidgetType_NS_THEME_MAC_VIBRANCY_DARK : root :: ThemeWidgetType = 119 ; pub const ThemeWidgetType_NS_THEME_MAC_VIBRANT_TITLEBAR_LIGHT : root :: ThemeWidgetType = 120 ; pub const ThemeWidgetType_NS_THEME_MAC_VIBRANT_TITLEBAR_DARK : root :: ThemeWidgetType = 121 ; pub const ThemeWidgetType_NS_THEME_MAC_DISCLOSURE_BUTTON_OPEN : root :: ThemeWidgetType = 122 ; pub const ThemeWidgetType_NS_THEME_MAC_DISCLOSURE_BUTTON_CLOSED : root :: ThemeWidgetType = 123 ; pub const ThemeWidgetType_NS_THEME_GTK_INFO_BAR : root :: ThemeWidgetType = 124 ; pub const ThemeWidgetType_NS_THEME_MAC_SOURCE_LIST : root :: ThemeWidgetType = 125 ; pub const ThemeWidgetType_NS_THEME_MAC_SOURCE_LIST_SELECTION : root :: ThemeWidgetType = 126 ; pub const ThemeWidgetType_NS_THEME_MAC_ACTIVE_SOURCE_LIST_SELECTION : root :: ThemeWidgetType = 127 ; pub const ThemeWidgetType_ThemeWidgetType_COUNT : root :: ThemeWidgetType = 128 ; pub type ThemeWidgetType = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIConsoleReportCollector { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMElement { pub _base : root :: nsIDOMNode , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMElement_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMElement ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMElement > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMElement ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMElement > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMElement ) ) ) ; } impl Clone for nsIDOMElement { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMHTMLElement { pub _base : root :: nsIDOMElement , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMHTMLElement_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMHTMLElement ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMHTMLElement > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMHTMLElement ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMHTMLElement > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMHTMLElement ) ) ) ; } impl Clone for nsIDOMHTMLElement { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAttrName { pub mBits : usize , } # [ test ] fn bindgen_test_layout_nsAttrName ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAttrName > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsAttrName ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAttrName > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAttrName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrName ) ) . mBits as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrName ) , "::" , stringify ! ( mBits ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAttrValue { pub mBits : usize , } pub const nsAttrValue_ValueType_eString : root :: nsAttrValue_ValueType = 0 ; pub const nsAttrValue_ValueType_eAtom : root :: nsAttrValue_ValueType = 2 ; pub const nsAttrValue_ValueType_eInteger : root :: nsAttrValue_ValueType = 3 ; pub const nsAttrValue_ValueType_eColor : root :: nsAttrValue_ValueType = 7 ; pub const nsAttrValue_ValueType_eEnum : root :: nsAttrValue_ValueType = 11 ; pub const nsAttrValue_ValueType_ePercent : root :: nsAttrValue_ValueType = 15 ; pub const nsAttrValue_ValueType_eCSSDeclaration : root :: nsAttrValue_ValueType = 16 ; pub const nsAttrValue_ValueType_eURL : root :: nsAttrValue_ValueType = 17 ; pub const nsAttrValue_ValueType_eImage : root :: nsAttrValue_ValueType = 18 ; pub const nsAttrValue_ValueType_eAtomArray : root :: nsAttrValue_ValueType = 19 ; pub const nsAttrValue_ValueType_eDoubleValue : root :: nsAttrValue_ValueType = 20 ; pub const nsAttrValue_ValueType_eIntMarginValue : root :: nsAttrValue_ValueType = 21 ; pub const nsAttrValue_ValueType_eSVGAngle : root :: nsAttrValue_ValueType = 22 ; pub const nsAttrValue_ValueType_eSVGTypesBegin : root :: nsAttrValue_ValueType = 22 ; pub const nsAttrValue_ValueType_eSVGIntegerPair : root :: nsAttrValue_ValueType = 23 ; pub const nsAttrValue_ValueType_eSVGLength : root :: nsAttrValue_ValueType = 24 ; pub const nsAttrValue_ValueType_eSVGLengthList : root :: nsAttrValue_ValueType = 25 ; pub const nsAttrValue_ValueType_eSVGNumberList : root :: nsAttrValue_ValueType = 26 ; pub const nsAttrValue_ValueType_eSVGNumberPair : root :: nsAttrValue_ValueType = 27 ; pub const nsAttrValue_ValueType_eSVGPathData : root :: nsAttrValue_ValueType = 28 ; pub const nsAttrValue_ValueType_eSVGPointList : root :: nsAttrValue_ValueType = 29 ; pub const nsAttrValue_ValueType_eSVGPreserveAspectRatio : root :: nsAttrValue_ValueType = 30 ; pub const nsAttrValue_ValueType_eSVGStringList : root :: nsAttrValue_ValueType = 31 ; pub const nsAttrValue_ValueType_eSVGTransformList : root :: nsAttrValue_ValueType = 32 ; pub const nsAttrValue_ValueType_eSVGViewBox : root :: nsAttrValue_ValueType = 33 ; pub const nsAttrValue_ValueType_eSVGTypesEnd : root :: nsAttrValue_ValueType = 33 ; pub type nsAttrValue_ValueType = :: std :: os :: raw :: c_uint ; - /// Structure for a mapping from int (enum) values to strings. When you use + /// <div rustbindgen="true" replaces="nsPoint"> + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsPoint { + pub x: root::nscoord, + pub y: root::nscoord, + } + #[test] + fn bindgen_test_layout_nsPoint() { + assert_eq!( + ::std::mem::size_of::<nsPoint>(), + 8usize, + concat!("Size of: ", stringify!(nsPoint)) + ); + assert_eq!( + ::std::mem::align_of::<nsPoint>(), + 4usize, + concat!("Alignment of ", stringify!(nsPoint)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPoint>())).x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsPoint), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsPoint>())).y as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsPoint), + "::", + stringify!(y) + ) + ); + } + impl Clone for nsPoint { + fn clone(&self) -> Self { + *self + } + } + /// <div rustbindgen="true" replaces="nsMargin"> + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsMargin { + pub top: root::nscoord, + pub right: root::nscoord, + pub bottom: root::nscoord, + pub left: root::nscoord, + } + #[test] + fn bindgen_test_layout_nsMargin() { + assert_eq!( + ::std::mem::size_of::<nsMargin>(), + 16usize, + concat!("Size of: ", stringify!(nsMargin)) + ); + assert_eq!( + ::std::mem::align_of::<nsMargin>(), + 4usize, + concat!("Alignment of ", stringify!(nsMargin)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMargin>())).top as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsMargin), + "::", + stringify!(top) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMargin>())).right as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsMargin), + "::", + stringify!(right) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMargin>())).bottom as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsMargin), + "::", + stringify!(bottom) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMargin>())).left as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsMargin), + "::", + stringify!(left) + ) + ); + } + impl Clone for nsMargin { + fn clone(&self) -> Self { + *self + } + } + /// <div rustbindgen="true" replaces="nsRect"> + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsRect { + pub x: root::nscoord, + pub y: root::nscoord, + pub width: root::nscoord, + pub height: root::nscoord, + } + #[test] + fn bindgen_test_layout_nsRect() { + assert_eq!( + ::std::mem::size_of::<nsRect>(), + 16usize, + concat!("Size of: ", stringify!(nsRect)) + ); + assert_eq!( + ::std::mem::align_of::<nsRect>(), + 4usize, + concat!("Alignment of ", stringify!(nsRect)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsRect>())).x as *const _ as usize }, + 0usize, + concat!("Offset of field: ", stringify!(nsRect), "::", stringify!(x)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsRect>())).y as *const _ as usize }, + 4usize, + concat!("Offset of field: ", stringify!(nsRect), "::", stringify!(y)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsRect>())).width as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsRect), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsRect>())).height as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsRect), + "::", + stringify!(height) + ) + ); + } + impl Clone for nsRect { + fn clone(&self) -> Self { + *self + } + } + /// <div rustbindgen="true" replaces="nsSize"> + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsSize { + pub width: root::nscoord, + pub height: root::nscoord, + } + #[test] + fn bindgen_test_layout_nsSize() { + assert_eq!( + ::std::mem::size_of::<nsSize>(), + 8usize, + concat!("Size of: ", stringify!(nsSize)) + ); + assert_eq!( + ::std::mem::align_of::<nsSize>(), + 4usize, + concat!("Alignment of ", stringify!(nsSize)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsSize>())).width as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsSize), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsSize>())).height as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsSize), + "::", + stringify!(height) + ) + ); + } + impl Clone for nsSize { + fn clone(&self) -> Self { + *self + } + } + /// <div rustbindgen replaces="nsTArray"></div> + #[repr(C)] + #[derive(Debug)] + pub struct nsTArray<T> { + pub mBuffer: *mut T, + pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>, + } + /// <div rustbindgen replaces="nsCOMArray"></div> + /// + /// mozilla::ArrayIterator doesn't work well with bindgen. + #[repr(C)] + #[derive(Debug)] + pub struct nsCOMArray { + pub mBuffer: root::nsTArray<*mut root::nsISupports>, + } + pub const ThemeWidgetType_NS_THEME_NONE: root::ThemeWidgetType = 0; + pub const ThemeWidgetType_NS_THEME_BUTTON: root::ThemeWidgetType = 1; + pub const ThemeWidgetType_NS_THEME_RADIO: root::ThemeWidgetType = 2; + pub const ThemeWidgetType_NS_THEME_CHECKBOX: root::ThemeWidgetType = 3; + pub const ThemeWidgetType_NS_THEME_BUTTON_BEVEL: root::ThemeWidgetType = 4; + pub const ThemeWidgetType_NS_THEME_FOCUS_OUTLINE: root::ThemeWidgetType = 5; + pub const ThemeWidgetType_NS_THEME_TOOLBOX: root::ThemeWidgetType = 6; + pub const ThemeWidgetType_NS_THEME_TOOLBAR: root::ThemeWidgetType = 7; + pub const ThemeWidgetType_NS_THEME_TOOLBARBUTTON: root::ThemeWidgetType = 8; + pub const ThemeWidgetType_NS_THEME_DUALBUTTON: root::ThemeWidgetType = 9; + pub const ThemeWidgetType_NS_THEME_TOOLBARBUTTON_DROPDOWN: root::ThemeWidgetType = 10; + pub const ThemeWidgetType_NS_THEME_BUTTON_ARROW_UP: root::ThemeWidgetType = 11; + pub const ThemeWidgetType_NS_THEME_BUTTON_ARROW_DOWN: root::ThemeWidgetType = 12; + pub const ThemeWidgetType_NS_THEME_BUTTON_ARROW_NEXT: root::ThemeWidgetType = 13; + pub const ThemeWidgetType_NS_THEME_BUTTON_ARROW_PREVIOUS: root::ThemeWidgetType = 14; + pub const ThemeWidgetType_NS_THEME_SEPARATOR: root::ThemeWidgetType = 15; + pub const ThemeWidgetType_NS_THEME_TOOLBARGRIPPER: root::ThemeWidgetType = 16; + pub const ThemeWidgetType_NS_THEME_SPLITTER: root::ThemeWidgetType = 17; + pub const ThemeWidgetType_NS_THEME_STATUSBAR: root::ThemeWidgetType = 18; + pub const ThemeWidgetType_NS_THEME_STATUSBARPANEL: root::ThemeWidgetType = 19; + pub const ThemeWidgetType_NS_THEME_RESIZERPANEL: root::ThemeWidgetType = 20; + pub const ThemeWidgetType_NS_THEME_RESIZER: root::ThemeWidgetType = 21; + pub const ThemeWidgetType_NS_THEME_LISTBOX: root::ThemeWidgetType = 22; + pub const ThemeWidgetType_NS_THEME_LISTITEM: root::ThemeWidgetType = 23; + pub const ThemeWidgetType_NS_THEME_TREEVIEW: root::ThemeWidgetType = 24; + pub const ThemeWidgetType_NS_THEME_TREEITEM: root::ThemeWidgetType = 25; + pub const ThemeWidgetType_NS_THEME_TREETWISTY: root::ThemeWidgetType = 26; + pub const ThemeWidgetType_NS_THEME_TREELINE: root::ThemeWidgetType = 27; + pub const ThemeWidgetType_NS_THEME_TREEHEADER: root::ThemeWidgetType = 28; + pub const ThemeWidgetType_NS_THEME_TREEHEADERCELL: root::ThemeWidgetType = 29; + pub const ThemeWidgetType_NS_THEME_TREEHEADERSORTARROW: root::ThemeWidgetType = 30; + pub const ThemeWidgetType_NS_THEME_TREETWISTYOPEN: root::ThemeWidgetType = 31; + pub const ThemeWidgetType_NS_THEME_PROGRESSBAR: root::ThemeWidgetType = 32; + pub const ThemeWidgetType_NS_THEME_PROGRESSCHUNK: root::ThemeWidgetType = 33; + pub const ThemeWidgetType_NS_THEME_PROGRESSBAR_VERTICAL: root::ThemeWidgetType = 34; + pub const ThemeWidgetType_NS_THEME_PROGRESSCHUNK_VERTICAL: root::ThemeWidgetType = 35; + pub const ThemeWidgetType_NS_THEME_METERBAR: root::ThemeWidgetType = 36; + pub const ThemeWidgetType_NS_THEME_METERCHUNK: root::ThemeWidgetType = 37; + pub const ThemeWidgetType_NS_THEME_TAB: root::ThemeWidgetType = 38; + pub const ThemeWidgetType_NS_THEME_TABPANEL: root::ThemeWidgetType = 39; + pub const ThemeWidgetType_NS_THEME_TABPANELS: root::ThemeWidgetType = 40; + pub const ThemeWidgetType_NS_THEME_TAB_SCROLL_ARROW_BACK: root::ThemeWidgetType = 41; + pub const ThemeWidgetType_NS_THEME_TAB_SCROLL_ARROW_FORWARD: root::ThemeWidgetType = 42; + pub const ThemeWidgetType_NS_THEME_TOOLTIP: root::ThemeWidgetType = 43; + pub const ThemeWidgetType_NS_THEME_INNER_SPIN_BUTTON: root::ThemeWidgetType = 44; + pub const ThemeWidgetType_NS_THEME_SPINNER: root::ThemeWidgetType = 45; + pub const ThemeWidgetType_NS_THEME_SPINNER_UPBUTTON: root::ThemeWidgetType = 46; + pub const ThemeWidgetType_NS_THEME_SPINNER_DOWNBUTTON: root::ThemeWidgetType = 47; + pub const ThemeWidgetType_NS_THEME_SPINNER_TEXTFIELD: root::ThemeWidgetType = 48; + pub const ThemeWidgetType_NS_THEME_NUMBER_INPUT: root::ThemeWidgetType = 49; + pub const ThemeWidgetType_NS_THEME_SCROLLBAR: root::ThemeWidgetType = 50; + pub const ThemeWidgetType_NS_THEME_SCROLLBAR_SMALL: root::ThemeWidgetType = 51; + pub const ThemeWidgetType_NS_THEME_SCROLLBAR_HORIZONTAL: root::ThemeWidgetType = 52; + pub const ThemeWidgetType_NS_THEME_SCROLLBAR_VERTICAL: root::ThemeWidgetType = 53; + pub const ThemeWidgetType_NS_THEME_SCROLLBARBUTTON_UP: root::ThemeWidgetType = 54; + pub const ThemeWidgetType_NS_THEME_SCROLLBARBUTTON_DOWN: root::ThemeWidgetType = 55; + pub const ThemeWidgetType_NS_THEME_SCROLLBARBUTTON_LEFT: root::ThemeWidgetType = 56; + pub const ThemeWidgetType_NS_THEME_SCROLLBARBUTTON_RIGHT: root::ThemeWidgetType = 57; + pub const ThemeWidgetType_NS_THEME_SCROLLBARTRACK_HORIZONTAL: root::ThemeWidgetType = 58; + pub const ThemeWidgetType_NS_THEME_SCROLLBARTRACK_VERTICAL: root::ThemeWidgetType = 59; + pub const ThemeWidgetType_NS_THEME_SCROLLBARTHUMB_HORIZONTAL: root::ThemeWidgetType = 60; + pub const ThemeWidgetType_NS_THEME_SCROLLBARTHUMB_VERTICAL: root::ThemeWidgetType = 61; + pub const ThemeWidgetType_NS_THEME_SCROLLBAR_NON_DISAPPEARING: root::ThemeWidgetType = 62; + pub const ThemeWidgetType_NS_THEME_TEXTFIELD: root::ThemeWidgetType = 63; + pub const ThemeWidgetType_NS_THEME_CARET: root::ThemeWidgetType = 64; + pub const ThemeWidgetType_NS_THEME_TEXTFIELD_MULTILINE: root::ThemeWidgetType = 65; + pub const ThemeWidgetType_NS_THEME_SEARCHFIELD: root::ThemeWidgetType = 66; + pub const ThemeWidgetType_NS_THEME_MENULIST: root::ThemeWidgetType = 67; + pub const ThemeWidgetType_NS_THEME_MENULIST_BUTTON: root::ThemeWidgetType = 68; + pub const ThemeWidgetType_NS_THEME_MENULIST_TEXT: root::ThemeWidgetType = 69; + pub const ThemeWidgetType_NS_THEME_MENULIST_TEXTFIELD: root::ThemeWidgetType = 70; + pub const ThemeWidgetType_NS_THEME_SCALE_HORIZONTAL: root::ThemeWidgetType = 71; + pub const ThemeWidgetType_NS_THEME_SCALE_VERTICAL: root::ThemeWidgetType = 72; + pub const ThemeWidgetType_NS_THEME_SCALETHUMB_HORIZONTAL: root::ThemeWidgetType = 73; + pub const ThemeWidgetType_NS_THEME_SCALETHUMB_VERTICAL: root::ThemeWidgetType = 74; + pub const ThemeWidgetType_NS_THEME_SCALETHUMBSTART: root::ThemeWidgetType = 75; + pub const ThemeWidgetType_NS_THEME_SCALETHUMBEND: root::ThemeWidgetType = 76; + pub const ThemeWidgetType_NS_THEME_SCALETHUMBTICK: root::ThemeWidgetType = 77; + pub const ThemeWidgetType_NS_THEME_RANGE: root::ThemeWidgetType = 78; + pub const ThemeWidgetType_NS_THEME_RANGE_THUMB: root::ThemeWidgetType = 79; + pub const ThemeWidgetType_NS_THEME_GROUPBOX: root::ThemeWidgetType = 80; + pub const ThemeWidgetType_NS_THEME_CHECKBOX_CONTAINER: root::ThemeWidgetType = 81; + pub const ThemeWidgetType_NS_THEME_RADIO_CONTAINER: root::ThemeWidgetType = 82; + pub const ThemeWidgetType_NS_THEME_CHECKBOX_LABEL: root::ThemeWidgetType = 83; + pub const ThemeWidgetType_NS_THEME_RADIO_LABEL: root::ThemeWidgetType = 84; + pub const ThemeWidgetType_NS_THEME_BUTTON_FOCUS: root::ThemeWidgetType = 85; + pub const ThemeWidgetType_NS_THEME_WINDOW: root::ThemeWidgetType = 86; + pub const ThemeWidgetType_NS_THEME_DIALOG: root::ThemeWidgetType = 87; + pub const ThemeWidgetType_NS_THEME_MENUBAR: root::ThemeWidgetType = 88; + pub const ThemeWidgetType_NS_THEME_MENUPOPUP: root::ThemeWidgetType = 89; + pub const ThemeWidgetType_NS_THEME_MENUITEM: root::ThemeWidgetType = 90; + pub const ThemeWidgetType_NS_THEME_CHECKMENUITEM: root::ThemeWidgetType = 91; + pub const ThemeWidgetType_NS_THEME_RADIOMENUITEM: root::ThemeWidgetType = 92; + pub const ThemeWidgetType_NS_THEME_MENUCHECKBOX: root::ThemeWidgetType = 93; + pub const ThemeWidgetType_NS_THEME_MENURADIO: root::ThemeWidgetType = 94; + pub const ThemeWidgetType_NS_THEME_MENUSEPARATOR: root::ThemeWidgetType = 95; + pub const ThemeWidgetType_NS_THEME_MENUARROW: root::ThemeWidgetType = 96; + pub const ThemeWidgetType_NS_THEME_MENUIMAGE: root::ThemeWidgetType = 97; + pub const ThemeWidgetType_NS_THEME_MENUITEMTEXT: root::ThemeWidgetType = 98; + pub const ThemeWidgetType_NS_THEME_WIN_COMMUNICATIONS_TOOLBOX: root::ThemeWidgetType = 99; + pub const ThemeWidgetType_NS_THEME_WIN_MEDIA_TOOLBOX: root::ThemeWidgetType = 100; + pub const ThemeWidgetType_NS_THEME_WIN_BROWSERTABBAR_TOOLBOX: root::ThemeWidgetType = 101; + pub const ThemeWidgetType_NS_THEME_MAC_FULLSCREEN_BUTTON: root::ThemeWidgetType = 102; + pub const ThemeWidgetType_NS_THEME_MAC_HELP_BUTTON: root::ThemeWidgetType = 103; + pub const ThemeWidgetType_NS_THEME_WIN_BORDERLESS_GLASS: root::ThemeWidgetType = 104; + pub const ThemeWidgetType_NS_THEME_WIN_GLASS: root::ThemeWidgetType = 105; + pub const ThemeWidgetType_NS_THEME_WINDOW_TITLEBAR: root::ThemeWidgetType = 106; + pub const ThemeWidgetType_NS_THEME_WINDOW_TITLEBAR_MAXIMIZED: root::ThemeWidgetType = 107; + pub const ThemeWidgetType_NS_THEME_WINDOW_FRAME_LEFT: root::ThemeWidgetType = 108; + pub const ThemeWidgetType_NS_THEME_WINDOW_FRAME_RIGHT: root::ThemeWidgetType = 109; + pub const ThemeWidgetType_NS_THEME_WINDOW_FRAME_BOTTOM: root::ThemeWidgetType = 110; + pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_CLOSE: root::ThemeWidgetType = 111; + pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_MINIMIZE: root::ThemeWidgetType = 112; + pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_MAXIMIZE: root::ThemeWidgetType = 113; + pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_RESTORE: root::ThemeWidgetType = 114; + pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_BOX: root::ThemeWidgetType = 115; + pub const ThemeWidgetType_NS_THEME_WINDOW_BUTTON_BOX_MAXIMIZED: root::ThemeWidgetType = 116; + pub const ThemeWidgetType_NS_THEME_WIN_EXCLUDE_GLASS: root::ThemeWidgetType = 117; + pub const ThemeWidgetType_NS_THEME_MAC_VIBRANCY_LIGHT: root::ThemeWidgetType = 118; + pub const ThemeWidgetType_NS_THEME_MAC_VIBRANCY_DARK: root::ThemeWidgetType = 119; + pub const ThemeWidgetType_NS_THEME_MAC_VIBRANT_TITLEBAR_LIGHT: root::ThemeWidgetType = 120; + pub const ThemeWidgetType_NS_THEME_MAC_VIBRANT_TITLEBAR_DARK: root::ThemeWidgetType = 121; + pub const ThemeWidgetType_NS_THEME_MAC_DISCLOSURE_BUTTON_OPEN: root::ThemeWidgetType = 122; + pub const ThemeWidgetType_NS_THEME_MAC_DISCLOSURE_BUTTON_CLOSED: root::ThemeWidgetType = 123; + pub const ThemeWidgetType_NS_THEME_GTK_INFO_BAR: root::ThemeWidgetType = 124; + pub const ThemeWidgetType_NS_THEME_MAC_SOURCE_LIST: root::ThemeWidgetType = 125; + pub const ThemeWidgetType_NS_THEME_MAC_SOURCE_LIST_SELECTION: root::ThemeWidgetType = 126; + pub const ThemeWidgetType_NS_THEME_MAC_ACTIVE_SOURCE_LIST_SELECTION: root::ThemeWidgetType = + 127; + pub const ThemeWidgetType_ThemeWidgetType_COUNT: root::ThemeWidgetType = 128; + pub type ThemeWidgetType = u8; + /// Hashtable key class to use with nsTHashtable/nsBaseHashtable + #[repr(C)] + #[derive(Debug)] + pub struct nsURIHashKey { + pub _base: root::PLDHashEntryHdr, + pub mKey: root::nsCOMPtr, + } + pub type nsURIHashKey_KeyType = *mut root::nsIURI; + pub type nsURIHashKey_KeyTypePointer = *const root::nsIURI; + pub const nsURIHashKey_ALLOW_MEMMOVE: root::nsURIHashKey__bindgen_ty_1 = 1; + pub type nsURIHashKey__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsURIHashKey() { + assert_eq!( + ::std::mem::size_of::<nsURIHashKey>(), + 16usize, + concat!("Size of: ", stringify!(nsURIHashKey)) + ); + assert_eq!( + ::std::mem::align_of::<nsURIHashKey>(), + 8usize, + concat!("Alignment of ", stringify!(nsURIHashKey)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsURIHashKey>())).mKey as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsURIHashKey), + "::", + stringify!(mKey) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIConsoleReportCollector { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIDOMElement { + pub _base: root::nsIDOMNode, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDOMElement_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIDOMElement() { + assert_eq!( + ::std::mem::size_of::<nsIDOMElement>(), + 8usize, + concat!("Size of: ", stringify!(nsIDOMElement)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDOMElement>(), + 8usize, + concat!("Alignment of ", stringify!(nsIDOMElement)) + ); + } + impl Clone for nsIDOMElement { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIDOMHTMLElement { + pub _base: root::nsIDOMElement, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIDOMHTMLElement_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIDOMHTMLElement() { + assert_eq!( + ::std::mem::size_of::<nsIDOMHTMLElement>(), + 8usize, + concat!("Size of: ", stringify!(nsIDOMHTMLElement)) + ); + assert_eq!( + ::std::mem::align_of::<nsIDOMHTMLElement>(), + 8usize, + concat!("Alignment of ", stringify!(nsIDOMHTMLElement)) + ); + } + impl Clone for nsIDOMHTMLElement { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug)] + pub struct nsAttrName { + pub mBits: usize, + } + #[test] + fn bindgen_test_layout_nsAttrName() { + assert_eq!( + ::std::mem::size_of::<nsAttrName>(), + 8usize, + concat!("Size of: ", stringify!(nsAttrName)) + ); + assert_eq!( + ::std::mem::align_of::<nsAttrName>(), + 8usize, + concat!("Alignment of ", stringify!(nsAttrName)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAttrName>())).mBits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAttrName), + "::", + stringify!(mBits) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsAttrValue { + pub mBits: usize, + } + pub const nsAttrValue_ValueType_eString: root::nsAttrValue_ValueType = 0; + pub const nsAttrValue_ValueType_eAtom: root::nsAttrValue_ValueType = 2; + pub const nsAttrValue_ValueType_eInteger: root::nsAttrValue_ValueType = 3; + pub const nsAttrValue_ValueType_eColor: root::nsAttrValue_ValueType = 7; + pub const nsAttrValue_ValueType_eEnum: root::nsAttrValue_ValueType = 11; + pub const nsAttrValue_ValueType_ePercent: root::nsAttrValue_ValueType = 15; + pub const nsAttrValue_ValueType_eCSSDeclaration: root::nsAttrValue_ValueType = 16; + pub const nsAttrValue_ValueType_eURL: root::nsAttrValue_ValueType = 17; + pub const nsAttrValue_ValueType_eImage: root::nsAttrValue_ValueType = 18; + pub const nsAttrValue_ValueType_eAtomArray: root::nsAttrValue_ValueType = 19; + pub const nsAttrValue_ValueType_eDoubleValue: root::nsAttrValue_ValueType = 20; + pub const nsAttrValue_ValueType_eIntMarginValue: root::nsAttrValue_ValueType = 21; + pub const nsAttrValue_ValueType_eSVGAngle: root::nsAttrValue_ValueType = 22; + pub const nsAttrValue_ValueType_eSVGTypesBegin: root::nsAttrValue_ValueType = 22; + pub const nsAttrValue_ValueType_eSVGIntegerPair: root::nsAttrValue_ValueType = 23; + pub const nsAttrValue_ValueType_eSVGLength: root::nsAttrValue_ValueType = 24; + pub const nsAttrValue_ValueType_eSVGLengthList: root::nsAttrValue_ValueType = 25; + pub const nsAttrValue_ValueType_eSVGNumberList: root::nsAttrValue_ValueType = 26; + pub const nsAttrValue_ValueType_eSVGNumberPair: root::nsAttrValue_ValueType = 27; + pub const nsAttrValue_ValueType_eSVGPathData: root::nsAttrValue_ValueType = 28; + pub const nsAttrValue_ValueType_eSVGPointList: root::nsAttrValue_ValueType = 29; + pub const nsAttrValue_ValueType_eSVGPreserveAspectRatio: root::nsAttrValue_ValueType = 30; + pub const nsAttrValue_ValueType_eSVGStringList: root::nsAttrValue_ValueType = 31; + pub const nsAttrValue_ValueType_eSVGTransformList: root::nsAttrValue_ValueType = 32; + pub const nsAttrValue_ValueType_eSVGViewBox: root::nsAttrValue_ValueType = 33; + pub const nsAttrValue_ValueType_eSVGTypesEnd: root::nsAttrValue_ValueType = 33; + pub type nsAttrValue_ValueType = u32; + /// Structure for a mapping from int (enum) values to strings. When you use /// it you generally create an array of them. /// Instantiate like this: /// EnumTable myTable[] = { /// { "string1", 1 }, /// { "string2", 2 }, /// { nullptr, 0 } - /// } - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsAttrValue_EnumTable { - /// The string the value maps to - pub tag : * const :: std :: os :: raw :: c_char , - /// The enum value that maps to this string - pub value : i16 , } # [ test ] fn bindgen_test_layout_nsAttrValue_EnumTable ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAttrValue_EnumTable > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsAttrValue_EnumTable ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAttrValue_EnumTable > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAttrValue_EnumTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrValue_EnumTable ) ) . tag as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrValue_EnumTable ) , "::" , stringify ! ( tag ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrValue_EnumTable ) ) . value as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrValue_EnumTable ) , "::" , stringify ! ( value ) ) ) ; } impl Clone for nsAttrValue_EnumTable { fn clone ( & self ) -> Self { * self } } pub const nsAttrValue_ValueBaseType_eStringBase : root :: nsAttrValue_ValueBaseType = 0 ; pub const nsAttrValue_ValueBaseType_eOtherBase : root :: nsAttrValue_ValueBaseType = 1 ; pub const nsAttrValue_ValueBaseType_eAtomBase : root :: nsAttrValue_ValueBaseType = 2 ; pub const nsAttrValue_ValueBaseType_eIntegerBase : root :: nsAttrValue_ValueBaseType = 3 ; pub type nsAttrValue_ValueBaseType = :: std :: os :: raw :: c_uint ; extern "C" { - # [ link_name = "\u{1}_ZN11nsAttrValue15sEnumTableArrayE" ] - pub static mut nsAttrValue_sEnumTableArray : * mut root :: nsTArray < * const root :: nsAttrValue_EnumTable > ; -} # [ test ] fn bindgen_test_layout_nsAttrValue ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAttrValue > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsAttrValue ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAttrValue > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAttrValue ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrValue ) ) . mBits as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrValue ) , "::" , stringify ! ( mBits ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsMappedAttributes { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAttrAndChildArray { pub mImpl : * mut root :: nsAttrAndChildArray_Impl , } pub type nsAttrAndChildArray_BorrowedAttrInfo = root :: mozilla :: dom :: BorrowedAttrInfo ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAttrAndChildArray_InternalAttr { pub mName : root :: nsAttrName , pub mValue : root :: nsAttrValue , } # [ test ] fn bindgen_test_layout_nsAttrAndChildArray_InternalAttr ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAttrAndChildArray_InternalAttr > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsAttrAndChildArray_InternalAttr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAttrAndChildArray_InternalAttr > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAttrAndChildArray_InternalAttr ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrAndChildArray_InternalAttr ) ) . mName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrAndChildArray_InternalAttr ) , "::" , stringify ! ( mName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrAndChildArray_InternalAttr ) ) . mValue as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrAndChildArray_InternalAttr ) , "::" , stringify ! ( mValue ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsAttrAndChildArray_Impl { pub mAttrAndChildCount : u32 , pub mBufferSize : u32 , pub mMappedAttrs : * mut root :: nsMappedAttributes , pub mBuffer : [ * mut :: std :: os :: raw :: c_void ; 1usize ] , } # [ test ] fn bindgen_test_layout_nsAttrAndChildArray_Impl ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAttrAndChildArray_Impl > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsAttrAndChildArray_Impl ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAttrAndChildArray_Impl > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAttrAndChildArray_Impl ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrAndChildArray_Impl ) ) . mAttrAndChildCount as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrAndChildArray_Impl ) , "::" , stringify ! ( mAttrAndChildCount ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrAndChildArray_Impl ) ) . mBufferSize as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrAndChildArray_Impl ) , "::" , stringify ! ( mBufferSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrAndChildArray_Impl ) ) . mMappedAttrs as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrAndChildArray_Impl ) , "::" , stringify ! ( mMappedAttrs ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrAndChildArray_Impl ) ) . mBuffer as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrAndChildArray_Impl ) , "::" , stringify ! ( mBuffer ) ) ) ; } impl Clone for nsAttrAndChildArray_Impl { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsAttrAndChildArray ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAttrAndChildArray > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsAttrAndChildArray ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAttrAndChildArray > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAttrAndChildArray ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrAndChildArray ) ) . mImpl as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrAndChildArray ) , "::" , stringify ! ( mImpl ) ) ) ; } - /// An internal interface - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIHTMLCollection { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIHTMLCollection_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIHTMLCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIHTMLCollection > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIHTMLCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIHTMLCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIHTMLCollection ) ) ) ; } impl Clone for nsIHTMLCollection { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsXBLDocumentInfo { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIStyleRuleProcessor { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIStyleRuleProcessor_COMTypeInfo { pub _address : u8 , } pub type nsIStyleRuleProcessor_EnumFunc = :: std :: option :: Option < unsafe extern "C" fn ( arg1 : * mut root :: nsIStyleRuleProcessor , arg2 : * mut :: std :: os :: raw :: c_void ) -> bool > ; # [ test ] fn bindgen_test_layout_nsIStyleRuleProcessor ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIStyleRuleProcessor > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIStyleRuleProcessor ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIStyleRuleProcessor > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIStyleRuleProcessor ) ) ) ; } impl Clone for nsIStyleRuleProcessor { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsXBLPrototypeBinding { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsAnonymousContentList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] pub struct nsXBLBinding { pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mMarkedForDeath : bool , pub mUsingContentXBLScope : bool , pub mIsShadowRootBinding : bool , pub mPrototypeBinding : * mut root :: nsXBLPrototypeBinding , pub mContent : root :: nsCOMPtr , pub mNextBinding : root :: RefPtr < root :: nsXBLBinding > , pub mBoundElement : * mut root :: mozilla :: dom :: Element , pub mDefaultInsertionPoint : root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > , pub mInsertionPoints : root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > , pub mAnonymousContentList : root :: RefPtr < root :: nsAnonymousContentList > , } pub type nsXBLBinding_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsXBLBinding_cycleCollection { pub _base : root :: nsCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_nsXBLBinding_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsXBLBinding_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsXBLBinding_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsXBLBinding_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsXBLBinding_cycleCollection ) ) ) ; } impl Clone for nsXBLBinding_cycleCollection { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN12nsXBLBinding21_cycleCollectorGlobalE" ] - pub static mut nsXBLBinding__cycleCollectorGlobal : root :: nsXBLBinding_cycleCollection ; -} # [ test ] fn bindgen_test_layout_nsXBLBinding ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsXBLBinding > ( ) , 72usize , concat ! ( "Size of: " , stringify ! ( nsXBLBinding ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsXBLBinding > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsXBLBinding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mRefCnt as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mMarkedForDeath as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mMarkedForDeath ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mUsingContentXBLScope as * const _ as usize } , 9usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mUsingContentXBLScope ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mIsShadowRootBinding as * const _ as usize } , 10usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mIsShadowRootBinding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mPrototypeBinding as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mPrototypeBinding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mContent as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mContent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mNextBinding as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mNextBinding ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mBoundElement as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mBoundElement ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mDefaultInsertionPoint as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mDefaultInsertionPoint ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mInsertionPoints as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mInsertionPoints ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsXBLBinding ) ) . mAnonymousContentList as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsXBLBinding ) , "::" , stringify ! ( mAnonymousContentList ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsLabelsNodeList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsDOMTokenList { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsDOMStringMap { _unused : [ u8 ; 0 ] } - /// A class that implements nsIWeakReference - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsNodeWeakReference { pub _base : root :: nsIWeakReference , pub mRefCnt : root :: nsAutoRefCnt , } pub type nsNodeWeakReference_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ test ] fn bindgen_test_layout_nsNodeWeakReference ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsNodeWeakReference > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsNodeWeakReference ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsNodeWeakReference > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsNodeWeakReference ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNodeWeakReference ) ) . mRefCnt as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsNodeWeakReference ) , "::" , stringify ! ( mRefCnt ) ) ) ; } - /// Interface used for handling clicks on links - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsILinkHandler { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsILinkHandler_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsILinkHandler ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsILinkHandler > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsILinkHandler ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsILinkHandler > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsILinkHandler ) ) ) ; } impl Clone for nsILinkHandler { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] pub struct nsIAttribute { pub _base : root :: nsINode , pub mAttrMap : root :: RefPtr < root :: nsDOMAttributeMap > , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIAttribute_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIAttribute ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIAttribute > ( ) , 96usize , concat ! ( "Size of: " , stringify ! ( nsIAttribute ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIAttribute > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIAttribute ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIAttribute ) ) . mAttrMap as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsIAttribute ) , "::" , stringify ! ( mAttrMap ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMAttr { pub _base : root :: nsIDOMNode , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMAttr_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMAttr ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMAttr > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMAttr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMAttr > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMAttr ) ) ) ; } impl Clone for nsIDOMAttr { fn clone ( & self ) -> Self { * self } } - /// There are two advantages to inheriting from nsStubMutationObserver + /// } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsAttrValue_EnumTable { + /// The string the value maps to + pub tag: *const ::std::os::raw::c_char, + /// The enum value that maps to this string + pub value: i16, + } + #[test] + fn bindgen_test_layout_nsAttrValue_EnumTable() { + assert_eq!( + ::std::mem::size_of::<nsAttrValue_EnumTable>(), + 16usize, + concat!("Size of: ", stringify!(nsAttrValue_EnumTable)) + ); + assert_eq!( + ::std::mem::align_of::<nsAttrValue_EnumTable>(), + 8usize, + concat!("Alignment of ", stringify!(nsAttrValue_EnumTable)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAttrValue_EnumTable>())).tag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAttrValue_EnumTable), + "::", + stringify!(tag) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAttrValue_EnumTable>())).value as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsAttrValue_EnumTable), + "::", + stringify!(value) + ) + ); + } + impl Clone for nsAttrValue_EnumTable { + fn clone(&self) -> Self { + *self + } + } + pub const nsAttrValue_ValueBaseType_eStringBase: root::nsAttrValue_ValueBaseType = 0; + pub const nsAttrValue_ValueBaseType_eOtherBase: root::nsAttrValue_ValueBaseType = 1; + pub const nsAttrValue_ValueBaseType_eAtomBase: root::nsAttrValue_ValueBaseType = 2; + pub const nsAttrValue_ValueBaseType_eIntegerBase: root::nsAttrValue_ValueBaseType = 3; + pub type nsAttrValue_ValueBaseType = u32; + extern "C" { + #[link_name = "\u{1}_ZN11nsAttrValue15sEnumTableArrayE"] + pub static mut nsAttrValue_sEnumTableArray: + *mut root::nsTArray<*const root::nsAttrValue_EnumTable>; + } + #[test] + fn bindgen_test_layout_nsAttrValue() { + assert_eq!( + ::std::mem::size_of::<nsAttrValue>(), + 8usize, + concat!("Size of: ", stringify!(nsAttrValue)) + ); + assert_eq!( + ::std::mem::align_of::<nsAttrValue>(), + 8usize, + concat!("Alignment of ", stringify!(nsAttrValue)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAttrValue>())).mBits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAttrValue), + "::", + stringify!(mBits) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsMappedAttributes { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug)] + pub struct nsAttrAndChildArray { + pub mImpl: *mut root::nsAttrAndChildArray_Impl, + } + pub type nsAttrAndChildArray_BorrowedAttrInfo = root::mozilla::dom::BorrowedAttrInfo; + #[repr(C)] + #[derive(Debug)] + pub struct nsAttrAndChildArray_InternalAttr { + pub mName: root::nsAttrName, + pub mValue: root::nsAttrValue, + } + #[test] + fn bindgen_test_layout_nsAttrAndChildArray_InternalAttr() { + assert_eq!( + ::std::mem::size_of::<nsAttrAndChildArray_InternalAttr>(), + 16usize, + concat!("Size of: ", stringify!(nsAttrAndChildArray_InternalAttr)) + ); + assert_eq!( + ::std::mem::align_of::<nsAttrAndChildArray_InternalAttr>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsAttrAndChildArray_InternalAttr) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsAttrAndChildArray_InternalAttr>())).mName as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAttrAndChildArray_InternalAttr), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsAttrAndChildArray_InternalAttr>())).mValue as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsAttrAndChildArray_InternalAttr), + "::", + stringify!(mValue) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsAttrAndChildArray_Impl { + pub mAttrAndChildCount: u32, + pub mBufferSize: u32, + pub mMappedAttrs: *mut root::nsMappedAttributes, + pub mBuffer: [*mut ::std::os::raw::c_void; 1usize], + } + #[test] + fn bindgen_test_layout_nsAttrAndChildArray_Impl() { + assert_eq!( + ::std::mem::size_of::<nsAttrAndChildArray_Impl>(), + 24usize, + concat!("Size of: ", stringify!(nsAttrAndChildArray_Impl)) + ); + assert_eq!( + ::std::mem::align_of::<nsAttrAndChildArray_Impl>(), + 8usize, + concat!("Alignment of ", stringify!(nsAttrAndChildArray_Impl)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsAttrAndChildArray_Impl>())).mAttrAndChildCount as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAttrAndChildArray_Impl), + "::", + stringify!(mAttrAndChildCount) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsAttrAndChildArray_Impl>())).mBufferSize as *const _ + as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsAttrAndChildArray_Impl), + "::", + stringify!(mBufferSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsAttrAndChildArray_Impl>())).mMappedAttrs as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsAttrAndChildArray_Impl), + "::", + stringify!(mMappedAttrs) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsAttrAndChildArray_Impl>())).mBuffer as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsAttrAndChildArray_Impl), + "::", + stringify!(mBuffer) + ) + ); + } + impl Clone for nsAttrAndChildArray_Impl { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsAttrAndChildArray() { + assert_eq!( + ::std::mem::size_of::<nsAttrAndChildArray>(), + 8usize, + concat!("Size of: ", stringify!(nsAttrAndChildArray)) + ); + assert_eq!( + ::std::mem::align_of::<nsAttrAndChildArray>(), + 8usize, + concat!("Alignment of ", stringify!(nsAttrAndChildArray)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAttrAndChildArray>())).mImpl as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAttrAndChildArray), + "::", + stringify!(mImpl) + ) + ); + } + /// An internal interface + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIHTMLCollection { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIHTMLCollection_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIHTMLCollection() { + assert_eq!( + ::std::mem::size_of::<nsIHTMLCollection>(), + 8usize, + concat!("Size of: ", stringify!(nsIHTMLCollection)) + ); + assert_eq!( + ::std::mem::align_of::<nsIHTMLCollection>(), + 8usize, + concat!("Alignment of ", stringify!(nsIHTMLCollection)) + ); + } + impl Clone for nsIHTMLCollection { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsXBLDocumentInfo { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsIStyleRuleProcessor { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIStyleRuleProcessor_COMTypeInfo { + pub _address: u8, + } + pub type nsIStyleRuleProcessor_EnumFunc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut root::nsIStyleRuleProcessor, + arg2: *mut ::std::os::raw::c_void, + ) -> bool, + >; + #[test] + fn bindgen_test_layout_nsIStyleRuleProcessor() { + assert_eq!( + ::std::mem::size_of::<nsIStyleRuleProcessor>(), + 8usize, + concat!("Size of: ", stringify!(nsIStyleRuleProcessor)) + ); + assert_eq!( + ::std::mem::align_of::<nsIStyleRuleProcessor>(), + 8usize, + concat!("Alignment of ", stringify!(nsIStyleRuleProcessor)) + ); + } + impl Clone for nsIStyleRuleProcessor { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsXBLPrototypeBinding { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsAnonymousContentList { + _unused: [u8; 0], + } + #[repr(C)] + pub struct nsXBLBinding { + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mMarkedForDeath: bool, + pub mUsingContentXBLScope: bool, + pub mIsShadowRootBinding: bool, + pub mPrototypeBinding: *mut root::nsXBLPrototypeBinding, + pub mContent: root::nsCOMPtr, + pub mNextBinding: root::RefPtr<root::nsXBLBinding>, + pub mBoundElement: *mut root::mozilla::dom::Element, + pub mDefaultInsertionPoint: root::RefPtr<root::mozilla::dom::XBLChildrenElement>, + pub mInsertionPoints: root::nsTArray<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>, + pub mAnonymousContentList: root::RefPtr<root::nsAnonymousContentList>, + } + pub type nsXBLBinding_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsXBLBinding_cycleCollection { + pub _base: root::nsCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_nsXBLBinding_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<nsXBLBinding_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(nsXBLBinding_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<nsXBLBinding_cycleCollection>(), + 8usize, + concat!("Alignment of ", stringify!(nsXBLBinding_cycleCollection)) + ); + } + impl Clone for nsXBLBinding_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN12nsXBLBinding21_cycleCollectorGlobalE"] + pub static mut nsXBLBinding__cycleCollectorGlobal: root::nsXBLBinding_cycleCollection; + } + #[test] + fn bindgen_test_layout_nsXBLBinding() { + assert_eq!( + ::std::mem::size_of::<nsXBLBinding>(), + 72usize, + concat!("Size of: ", stringify!(nsXBLBinding)) + ); + assert_eq!( + ::std::mem::align_of::<nsXBLBinding>(), + 8usize, + concat!("Alignment of ", stringify!(nsXBLBinding)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsXBLBinding>())).mRefCnt as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsXBLBinding>())).mMarkedForDeath as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mMarkedForDeath) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsXBLBinding>())).mUsingContentXBLScope as *const _ as usize + }, + 9usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mUsingContentXBLScope) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsXBLBinding>())).mIsShadowRootBinding as *const _ as usize + }, + 10usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mIsShadowRootBinding) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsXBLBinding>())).mPrototypeBinding as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mPrototypeBinding) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsXBLBinding>())).mContent as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mContent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsXBLBinding>())).mNextBinding as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mNextBinding) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsXBLBinding>())).mBoundElement as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mBoundElement) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsXBLBinding>())).mDefaultInsertionPoint as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mDefaultInsertionPoint) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsXBLBinding>())).mInsertionPoints as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mInsertionPoints) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsXBLBinding>())).mAnonymousContentList as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsXBLBinding), + "::", + stringify!(mAnonymousContentList) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsLabelsNodeList { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsDOMTokenList { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsDOMStringMap { + _unused: [u8; 0], + } + /// A class that implements nsIWeakReference + #[repr(C)] + #[derive(Debug)] + pub struct nsNodeWeakReference { + pub _base: root::nsIWeakReference, + pub mRefCnt: root::nsAutoRefCnt, + } + pub type nsNodeWeakReference_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[test] + fn bindgen_test_layout_nsNodeWeakReference() { + assert_eq!( + ::std::mem::size_of::<nsNodeWeakReference>(), + 24usize, + concat!("Size of: ", stringify!(nsNodeWeakReference)) + ); + assert_eq!( + ::std::mem::align_of::<nsNodeWeakReference>(), + 8usize, + concat!("Alignment of ", stringify!(nsNodeWeakReference)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsNodeWeakReference>())).mRefCnt as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsNodeWeakReference), + "::", + stringify!(mRefCnt) + ) + ); + } + /// Interface used for handling clicks on links + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsILinkHandler { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsILinkHandler_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsILinkHandler() { + assert_eq!( + ::std::mem::size_of::<nsILinkHandler>(), + 8usize, + concat!("Size of: ", stringify!(nsILinkHandler)) + ); + assert_eq!( + ::std::mem::align_of::<nsILinkHandler>(), + 8usize, + concat!("Alignment of ", stringify!(nsILinkHandler)) + ); + } + impl Clone for nsILinkHandler { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + pub struct nsIAttribute { + pub _base: root::nsINode, + pub mAttrMap: root::RefPtr<root::nsDOMAttributeMap>, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIAttribute_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsIAttribute() { + assert_eq!( + ::std::mem::size_of::<nsIAttribute>(), + 96usize, + concat!("Size of: ", stringify!(nsIAttribute)) + ); + assert_eq!( + ::std::mem::align_of::<nsIAttribute>(), + 8usize, + concat!("Alignment of ", stringify!(nsIAttribute)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsIAttribute>())).mAttrMap as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsIAttribute), + "::", + stringify!(mAttrMap) + ) + ); + } + /// There are two advantages to inheriting from nsStubMutationObserver /// rather than directly from nsIMutationObserver: /// 1. smaller compiled code size (since there's no need for the code /// for the empty virtual function implementations for every @@ -1677,34 +36128,214 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// 2. the performance of document's loop over observers benefits from /// the fact that more of the functions called are the same (which /// can reduce instruction cache misses and perhaps improve branch - /// prediction) - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsStubMutationObserver { pub _base : root :: nsIMutationObserver , } # [ test ] fn bindgen_test_layout_nsStubMutationObserver ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStubMutationObserver > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsStubMutationObserver ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStubMutationObserver > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStubMutationObserver ) ) ) ; } impl Clone for nsStubMutationObserver { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMMozNamedAttrMap { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMMozNamedAttrMap_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMMozNamedAttrMap ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMMozNamedAttrMap > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMMozNamedAttrMap ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMMozNamedAttrMap > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMMozNamedAttrMap ) ) ) ; } impl Clone for nsIDOMMozNamedAttrMap { fn clone ( & self ) -> Self { * self } } - /// Structure used as a key for caching Attrs in nsDOMAttributeMap's mAttributeCache. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsAttrKey { - /// The namespace of the attribute - pub mNamespaceID : i32 , - /// The atom for attribute, stored as void*, to make sure that we only use it - /// for the hashcode, and we can never dereference it. - pub mLocalName : * mut :: std :: os :: raw :: c_void , } # [ test ] fn bindgen_test_layout_nsAttrKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAttrKey > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsAttrKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAttrKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAttrKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrKey ) ) . mNamespaceID as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrKey ) , "::" , stringify ! ( mNamespaceID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrKey ) ) . mLocalName as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrKey ) , "::" , stringify ! ( mLocalName ) ) ) ; } impl Clone for nsAttrKey { fn clone ( & self ) -> Self { * self } } - /// PLDHashEntryHdr implementation for nsAttrKey. - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsAttrHashKey { pub _base : root :: PLDHashEntryHdr , pub mKey : root :: nsAttrKey , } pub type nsAttrHashKey_KeyType = * const root :: nsAttrKey ; pub type nsAttrHashKey_KeyTypePointer = * const root :: nsAttrKey ; pub const nsAttrHashKey_ALLOW_MEMMOVE : root :: nsAttrHashKey__bindgen_ty_1 = 1 ; pub type nsAttrHashKey__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsAttrHashKey ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsAttrHashKey > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( nsAttrHashKey ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsAttrHashKey > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsAttrHashKey ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsAttrHashKey ) ) . mKey as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsAttrHashKey ) , "::" , stringify ! ( mKey ) ) ) ; } # [ repr ( C ) ] pub struct nsDOMAttributeMap { pub _base : root :: nsIDOMMozNamedAttrMap , pub _base_1 : root :: nsWrapperCache , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mContent : root :: nsCOMPtr , - /// Cache of Attrs. - pub mAttributeCache : root :: nsDOMAttributeMap_AttrCache , } pub type nsDOMAttributeMap_Attr = root :: mozilla :: dom :: Attr ; pub type nsDOMAttributeMap_DocGroup = root :: mozilla :: dom :: DocGroup ; pub type nsDOMAttributeMap_Element = root :: mozilla :: dom :: Element ; pub type nsDOMAttributeMap_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsDOMAttributeMap_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_nsDOMAttributeMap_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsDOMAttributeMap_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsDOMAttributeMap_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsDOMAttributeMap_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsDOMAttributeMap_cycleCollection ) ) ) ; } impl Clone for nsDOMAttributeMap_cycleCollection { fn clone ( & self ) -> Self { * self } } pub type nsDOMAttributeMap_AttrCache = [ u64 ; 4usize ] ; extern "C" { - # [ link_name = "\u{1}_ZN17nsDOMAttributeMap21_cycleCollectorGlobalE" ] - pub static mut nsDOMAttributeMap__cycleCollectorGlobal : root :: nsDOMAttributeMap_cycleCollection ; -} # [ test ] fn bindgen_test_layout_nsDOMAttributeMap ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsDOMAttributeMap > ( ) , 80usize , concat ! ( "Size of: " , stringify ! ( nsDOMAttributeMap ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsDOMAttributeMap > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsDOMAttributeMap ) ) ) ; } # [ repr ( C ) ] pub struct nsISMILAttr__bindgen_vtable ( :: std :: os :: raw :: c_void ) ; - /// - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsISMILAttr { pub vtable_ : * const nsISMILAttr__bindgen_vtable , } # [ test ] fn bindgen_test_layout_nsISMILAttr ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsISMILAttr > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsISMILAttr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsISMILAttr > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsISMILAttr ) ) ) ; } - /// nsITheme is a service that provides platform-specific native + /// prediction) + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsStubMutationObserver { + pub _base: root::nsIMutationObserver, + } + #[test] + fn bindgen_test_layout_nsStubMutationObserver() { + assert_eq!( + ::std::mem::size_of::<nsStubMutationObserver>(), + 8usize, + concat!("Size of: ", stringify!(nsStubMutationObserver)) + ); + assert_eq!( + ::std::mem::align_of::<nsStubMutationObserver>(), + 8usize, + concat!("Alignment of ", stringify!(nsStubMutationObserver)) + ); + } + impl Clone for nsStubMutationObserver { + fn clone(&self) -> Self { + *self + } + } + /// Structure used as a key for caching Attrs in nsDOMAttributeMap's mAttributeCache. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsAttrKey { + /// The namespace of the attribute + pub mNamespaceID: i32, + /// The atom for attribute, stored as void*, to make sure that we only use it + /// for the hashcode, and we can never dereference it. + pub mLocalName: *mut ::std::os::raw::c_void, + } + #[test] + fn bindgen_test_layout_nsAttrKey() { + assert_eq!( + ::std::mem::size_of::<nsAttrKey>(), + 16usize, + concat!("Size of: ", stringify!(nsAttrKey)) + ); + assert_eq!( + ::std::mem::align_of::<nsAttrKey>(), + 8usize, + concat!("Alignment of ", stringify!(nsAttrKey)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAttrKey>())).mNamespaceID as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsAttrKey), + "::", + stringify!(mNamespaceID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAttrKey>())).mLocalName as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsAttrKey), + "::", + stringify!(mLocalName) + ) + ); + } + impl Clone for nsAttrKey { + fn clone(&self) -> Self { + *self + } + } + /// PLDHashEntryHdr implementation for nsAttrKey. + #[repr(C)] + #[derive(Debug)] + pub struct nsAttrHashKey { + pub _base: root::PLDHashEntryHdr, + pub mKey: root::nsAttrKey, + } + pub type nsAttrHashKey_KeyType = *const root::nsAttrKey; + pub type nsAttrHashKey_KeyTypePointer = *const root::nsAttrKey; + pub const nsAttrHashKey_ALLOW_MEMMOVE: root::nsAttrHashKey__bindgen_ty_1 = 1; + pub type nsAttrHashKey__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsAttrHashKey() { + assert_eq!( + ::std::mem::size_of::<nsAttrHashKey>(), + 24usize, + concat!("Size of: ", stringify!(nsAttrHashKey)) + ); + assert_eq!( + ::std::mem::align_of::<nsAttrHashKey>(), + 8usize, + concat!("Alignment of ", stringify!(nsAttrHashKey)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsAttrHashKey>())).mKey as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsAttrHashKey), + "::", + stringify!(mKey) + ) + ); + } + #[repr(C)] + pub struct nsDOMAttributeMap { + pub _base: root::nsISupports, + pub _base_1: root::nsWrapperCache, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mContent: root::nsCOMPtr, + /// Cache of Attrs. + pub mAttributeCache: root::nsDOMAttributeMap_AttrCache, + } + pub type nsDOMAttributeMap_Attr = root::mozilla::dom::Attr; + pub type nsDOMAttributeMap_DocGroup = root::mozilla::dom::DocGroup; + pub type nsDOMAttributeMap_Element = root::mozilla::dom::Element; + pub type nsDOMAttributeMap_HasThreadSafeRefCnt = root::mozilla::FalseType; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsDOMAttributeMap_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_nsDOMAttributeMap_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<nsDOMAttributeMap_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(nsDOMAttributeMap_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<nsDOMAttributeMap_cycleCollection>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsDOMAttributeMap_cycleCollection) + ) + ); + } + impl Clone for nsDOMAttributeMap_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + pub type nsDOMAttributeMap_AttrCache = [u64; 4usize]; + extern "C" { + #[link_name = "\u{1}_ZN17nsDOMAttributeMap21_cycleCollectorGlobalE"] + pub static mut nsDOMAttributeMap__cycleCollectorGlobal: + root::nsDOMAttributeMap_cycleCollection; + } + #[test] + fn bindgen_test_layout_nsDOMAttributeMap() { + assert_eq!( + ::std::mem::size_of::<nsDOMAttributeMap>(), + 80usize, + concat!("Size of: ", stringify!(nsDOMAttributeMap)) + ); + assert_eq!( + ::std::mem::align_of::<nsDOMAttributeMap>(), + 8usize, + concat!("Alignment of ", stringify!(nsDOMAttributeMap)) + ); + } + #[repr(C)] + pub struct nsISMILAttr__bindgen_vtable(::std::os::raw::c_void); + /// + #[repr(C)] + #[derive(Debug)] + pub struct nsISMILAttr { + pub vtable_: *const nsISMILAttr__bindgen_vtable, + } + #[test] + fn bindgen_test_layout_nsISMILAttr() { + assert_eq!( + ::std::mem::size_of::<nsISMILAttr>(), + 8usize, + concat!("Size of: ", stringify!(nsISMILAttr)) + ); + assert_eq!( + ::std::mem::align_of::<nsISMILAttr>(), + 8usize, + concat!("Alignment of ", stringify!(nsISMILAttr)) + ); + } + /// nsITheme is a service that provides platform-specific native /// rendering for widgets. In other words, it provides the necessary /// operations to draw a rendering object (an nsIFrame) as a native /// widget. /// /// All the methods on nsITheme take a rendering context or device /// context, a frame (the rendering object), and a widget type (one of - /// the constants in nsThemeConstants.h). - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsITheme { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsITheme_COMTypeInfo { pub _address : u8 , } pub const nsITheme_Transparency_eOpaque : root :: nsITheme_Transparency = 0 ; pub const nsITheme_Transparency_eTransparent : root :: nsITheme_Transparency = 1 ; pub const nsITheme_Transparency_eUnknownTransparency : root :: nsITheme_Transparency = 2 ; pub type nsITheme_Transparency = :: std :: os :: raw :: c_uint ; - /// ThemeGeometryType values are used for describing themed nsIFrames in + /// the constants in nsThemeConstants.h). + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsITheme { + pub _base: root::nsISupports, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsITheme_COMTypeInfo { + pub _address: u8, + } + pub const nsITheme_Transparency_eOpaque: root::nsITheme_Transparency = 0; + pub const nsITheme_Transparency_eTransparent: root::nsITheme_Transparency = 1; + pub const nsITheme_Transparency_eUnknownTransparency: root::nsITheme_Transparency = 2; + pub type nsITheme_Transparency = u32; + /// ThemeGeometryType values are used for describing themed nsIFrames in /// calls to nsIWidget::UpdateThemeGeometries. We don't simply pass the /// -moz-appearance value ("widget type") of the frame because the widget may /// want to treat different frames with the same -moz-appearance differently @@ -1713,9 +36344,174 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// returned ThemeGeometryType along to the widget. /// Each theme backend defines the ThemeGeometryType values it needs in its /// own nsITheme subclass. eThemeGeometryTypeUnknown is the only value that's - /// shared between backends. - pub type nsITheme_ThemeGeometryType = u8 ; pub const nsITheme_eThemeGeometryTypeUnknown : root :: nsITheme__bindgen_ty_1 = 0 ; pub type nsITheme__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsITheme ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsITheme > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsITheme ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsITheme > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsITheme ) ) ) ; } impl Clone for nsITheme { fn clone ( & self ) -> Self { * self } } pub type nsIWidget_LayoutDeviceIntPoint = root :: mozilla :: LayoutDeviceIntPoint ; # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsIWidget_LongTapInfo { pub mPointerId : i32 , pub mPosition : root :: nsIWidget_LayoutDeviceIntPoint , pub mDuration : root :: mozilla :: TimeDuration , pub mObserver : root :: nsCOMPtr , pub mStamp : root :: mozilla :: TimeStamp , } # [ test ] fn bindgen_test_layout_nsIWidget_LongTapInfo ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIWidget_LongTapInfo > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsIWidget_LongTapInfo ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIWidget_LongTapInfo > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIWidget_LongTapInfo ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIWidget_LongTapInfo ) ) . mPointerId as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsIWidget_LongTapInfo ) , "::" , stringify ! ( mPointerId ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIWidget_LongTapInfo ) ) . mPosition as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( nsIWidget_LongTapInfo ) , "::" , stringify ! ( mPosition ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIWidget_LongTapInfo ) ) . mDuration as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsIWidget_LongTapInfo ) , "::" , stringify ! ( mDuration ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIWidget_LongTapInfo ) ) . mObserver as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsIWidget_LongTapInfo ) , "::" , stringify ! ( mObserver ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsIWidget_LongTapInfo ) ) . mStamp as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsIWidget_LongTapInfo ) , "::" , stringify ! ( mStamp ) ) ) ; } pub const ELEMENT_SHARED_RESTYLE_BIT_1 : root :: _bindgen_ty_79 = 8388608 ; pub const ELEMENT_SHARED_RESTYLE_BIT_2 : root :: _bindgen_ty_79 = 16777216 ; pub const ELEMENT_SHARED_RESTYLE_BIT_3 : root :: _bindgen_ty_79 = 33554432 ; pub const ELEMENT_SHARED_RESTYLE_BIT_4 : root :: _bindgen_ty_79 = 67108864 ; pub const ELEMENT_SHARED_RESTYLE_BITS : root :: _bindgen_ty_79 = 125829120 ; pub const ELEMENT_HAS_DIRTY_DESCENDANTS_FOR_SERVO : root :: _bindgen_ty_79 = 8388608 ; pub const ELEMENT_HAS_ANIMATION_ONLY_DIRTY_DESCENDANTS_FOR_SERVO : root :: _bindgen_ty_79 = 16777216 ; pub const ELEMENT_HAS_SNAPSHOT : root :: _bindgen_ty_79 = 33554432 ; pub const ELEMENT_HANDLED_SNAPSHOT : root :: _bindgen_ty_79 = 67108864 ; pub const ELEMENT_HAS_PENDING_RESTYLE : root :: _bindgen_ty_79 = 8388608 ; pub const ELEMENT_IS_POTENTIAL_RESTYLE_ROOT : root :: _bindgen_ty_79 = 16777216 ; pub const ELEMENT_HAS_PENDING_ANIMATION_ONLY_RESTYLE : root :: _bindgen_ty_79 = 33554432 ; pub const ELEMENT_IS_POTENTIAL_ANIMATION_ONLY_RESTYLE_ROOT : root :: _bindgen_ty_79 = 67108864 ; pub const ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR : root :: _bindgen_ty_79 = 134217728 ; pub const ELEMENT_HAS_CHILD_WITH_LATER_SIBLINGS_HINT : root :: _bindgen_ty_79 = 268435456 ; pub const ELEMENT_PENDING_RESTYLE_FLAGS : root :: _bindgen_ty_79 = 41943040 ; pub const ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS : root :: _bindgen_ty_79 = 83886080 ; pub const ELEMENT_ALL_RESTYLE_FLAGS : root :: _bindgen_ty_79 = 260046848 ; pub const ELEMENT_TYPE_SPECIFIC_BITS_OFFSET : root :: _bindgen_ty_79 = 27 ; pub type _bindgen_ty_79 = :: std :: os :: raw :: c_uint ; pub type nsStyledElementBase = root :: mozilla :: dom :: Element ; # [ repr ( C ) ] pub struct nsStyledElement { pub _base : root :: nsStyledElementBase , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsStyledElement_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsStyledElement ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyledElement > ( ) , 120usize , concat ! ( "Size of: " , stringify ! ( nsStyledElement ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyledElement > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyledElement ) ) ) ; } pub type nsMappedAttributeElementBase = root :: nsStyledElement ; # [ repr ( C ) ] pub struct nsMappedAttributeElement { pub _base : root :: nsMappedAttributeElementBase , } # [ test ] fn bindgen_test_layout_nsMappedAttributeElement ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsMappedAttributeElement > ( ) , 120usize , concat ! ( "Size of: " , stringify ! ( nsMappedAttributeElement ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsMappedAttributeElement > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsMappedAttributeElement ) ) ) ; } - /// The Name Space Manager tracks the association between a NameSpace + /// shared between backends. + pub type nsITheme_ThemeGeometryType = u8; + pub const nsITheme_eThemeGeometryTypeUnknown: root::nsITheme__bindgen_ty_1 = 0; + pub type nsITheme__bindgen_ty_1 = u32; + #[test] + fn bindgen_test_layout_nsITheme() { + assert_eq!( + ::std::mem::size_of::<nsITheme>(), + 8usize, + concat!("Size of: ", stringify!(nsITheme)) + ); + assert_eq!( + ::std::mem::align_of::<nsITheme>(), + 8usize, + concat!("Alignment of ", stringify!(nsITheme)) + ); + } + impl Clone for nsITheme { + fn clone(&self) -> Self { + *self + } + } + pub type nsIWidget_LayoutDeviceIntPoint = root::mozilla::LayoutDeviceIntPoint; + #[repr(C)] + #[derive(Debug)] + pub struct nsIWidget_LongTapInfo { + pub mPointerId: i32, + pub mPosition: root::nsIWidget_LayoutDeviceIntPoint, + pub mDuration: root::mozilla::TimeDuration, + pub mObserver: root::nsCOMPtr, + pub mStamp: root::mozilla::TimeStamp, + } + #[test] + fn bindgen_test_layout_nsIWidget_LongTapInfo() { + assert_eq!( + ::std::mem::size_of::<nsIWidget_LongTapInfo>(), + 40usize, + concat!("Size of: ", stringify!(nsIWidget_LongTapInfo)) + ); + assert_eq!( + ::std::mem::align_of::<nsIWidget_LongTapInfo>(), + 8usize, + concat!("Alignment of ", stringify!(nsIWidget_LongTapInfo)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIWidget_LongTapInfo>())).mPointerId as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsIWidget_LongTapInfo), + "::", + stringify!(mPointerId) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIWidget_LongTapInfo>())).mPosition as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(nsIWidget_LongTapInfo), + "::", + stringify!(mPosition) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIWidget_LongTapInfo>())).mDuration as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsIWidget_LongTapInfo), + "::", + stringify!(mDuration) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIWidget_LongTapInfo>())).mObserver as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsIWidget_LongTapInfo), + "::", + stringify!(mObserver) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsIWidget_LongTapInfo>())).mStamp as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsIWidget_LongTapInfo), + "::", + stringify!(mStamp) + ) + ); + } + pub const ELEMENT_SHARED_RESTYLE_BIT_1: root::_bindgen_ty_79 = 8388608; + pub const ELEMENT_SHARED_RESTYLE_BIT_2: root::_bindgen_ty_79 = 16777216; + pub const ELEMENT_SHARED_RESTYLE_BIT_3: root::_bindgen_ty_79 = 33554432; + pub const ELEMENT_SHARED_RESTYLE_BIT_4: root::_bindgen_ty_79 = 67108864; + pub const ELEMENT_SHARED_RESTYLE_BITS: root::_bindgen_ty_79 = 125829120; + pub const ELEMENT_HAS_DIRTY_DESCENDANTS_FOR_SERVO: root::_bindgen_ty_79 = 8388608; + pub const ELEMENT_HAS_ANIMATION_ONLY_DIRTY_DESCENDANTS_FOR_SERVO: root::_bindgen_ty_79 = + 16777216; + pub const ELEMENT_HAS_SNAPSHOT: root::_bindgen_ty_79 = 33554432; + pub const ELEMENT_HANDLED_SNAPSHOT: root::_bindgen_ty_79 = 67108864; + pub const ELEMENT_HAS_PENDING_RESTYLE: root::_bindgen_ty_79 = 8388608; + pub const ELEMENT_IS_POTENTIAL_RESTYLE_ROOT: root::_bindgen_ty_79 = 16777216; + pub const ELEMENT_HAS_PENDING_ANIMATION_ONLY_RESTYLE: root::_bindgen_ty_79 = 33554432; + pub const ELEMENT_IS_POTENTIAL_ANIMATION_ONLY_RESTYLE_ROOT: root::_bindgen_ty_79 = 67108864; + pub const ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR: root::_bindgen_ty_79 = 134217728; + pub const ELEMENT_HAS_CHILD_WITH_LATER_SIBLINGS_HINT: root::_bindgen_ty_79 = 268435456; + pub const ELEMENT_PENDING_RESTYLE_FLAGS: root::_bindgen_ty_79 = 41943040; + pub const ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS: root::_bindgen_ty_79 = 83886080; + pub const ELEMENT_ALL_RESTYLE_FLAGS: root::_bindgen_ty_79 = 260046848; + pub const ELEMENT_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_79 = 27; + pub type _bindgen_ty_79 = u32; + pub type nsStyledElementBase = root::mozilla::dom::Element; + #[repr(C)] + pub struct nsStyledElement { + pub _base: root::nsStyledElementBase, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsStyledElement_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsStyledElement() { + assert_eq!( + ::std::mem::size_of::<nsStyledElement>(), + 120usize, + concat!("Size of: ", stringify!(nsStyledElement)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyledElement>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyledElement)) + ); + } + pub type nsMappedAttributeElementBase = root::nsStyledElement; + #[repr(C)] + pub struct nsMappedAttributeElement { + pub _base: root::nsMappedAttributeElementBase, + } + #[test] + fn bindgen_test_layout_nsMappedAttributeElement() { + assert_eq!( + ::std::mem::size_of::<nsMappedAttributeElement>(), + 120usize, + concat!("Size of: ", stringify!(nsMappedAttributeElement)) + ); + assert_eq!( + ::std::mem::align_of::<nsMappedAttributeElement>(), + 8usize, + concat!("Alignment of ", stringify!(nsMappedAttributeElement)) + ); + } + /// The Name Space Manager tracks the association between a NameSpace /// URI and the int32_t runtime id. Mappings between NameSpaces and /// NameSpace prefixes are managed by nsINameSpaces. /// @@ -1725,50 +36521,726 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// /// The nsNameSpaceManager needs to have a live reference for as long as /// the NameSpace IDs are needed. - /// - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsNameSpaceManager { pub _base : root :: nsIObserver , pub mRefCnt : root :: nsAutoRefCnt , pub mMathMLDisabled : bool , pub mSVGDisabled : bool , pub mURIToIDTable : [ u64 ; 4usize ] , pub mDisabledURIToIDTable : [ u64 ; 4usize ] , pub mURIArray : root :: nsTArray < root :: RefPtr < root :: nsAtom > > , } pub type nsNameSpaceManager_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; extern "C" { - # [ link_name = "\u{1}_ZN18nsNameSpaceManager9sInstanceE" ] - pub static mut nsNameSpaceManager_sInstance : root :: mozilla :: StaticRefPtr < root :: nsNameSpaceManager > ; -} # [ test ] fn bindgen_test_layout_nsNameSpaceManager ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsNameSpaceManager > ( ) , 96usize , concat ! ( "Size of: " , stringify ! ( nsNameSpaceManager ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsNameSpaceManager > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsNameSpaceManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNameSpaceManager ) ) . mRefCnt as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsNameSpaceManager ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNameSpaceManager ) ) . mMathMLDisabled as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsNameSpaceManager ) , "::" , stringify ! ( mMathMLDisabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNameSpaceManager ) ) . mSVGDisabled as * const _ as usize } , 17usize , concat ! ( "Alignment of field: " , stringify ! ( nsNameSpaceManager ) , "::" , stringify ! ( mSVGDisabled ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNameSpaceManager ) ) . mURIToIDTable as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsNameSpaceManager ) , "::" , stringify ! ( mURIToIDTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNameSpaceManager ) ) . mDisabledURIToIDTable as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsNameSpaceManager ) , "::" , stringify ! ( mDisabledURIToIDTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsNameSpaceManager ) ) . mURIArray as * const _ as usize } , 88usize , concat ! ( "Alignment of field: " , stringify ! ( nsNameSpaceManager ) , "::" , stringify ! ( mURIArray ) ) ) ; } pub type nsGenericHTMLElementBase = root :: nsMappedAttributeElement ; - /// A common superclass for HTML elements - # [ repr ( C ) ] pub struct nsGenericHTMLElement { pub _base : root :: nsGenericHTMLElementBase , pub _base_1 : root :: nsIDOMHTMLElement , } pub type nsGenericHTMLElement_Element = root :: mozilla :: dom :: Element ; pub const nsGenericHTMLElement_PresContextFor_eForComposedDoc : root :: nsGenericHTMLElement_PresContextFor = 0 ; pub const nsGenericHTMLElement_PresContextFor_eForUncomposedDoc : root :: nsGenericHTMLElement_PresContextFor = 1 ; pub type nsGenericHTMLElement_PresContextFor = :: std :: os :: raw :: c_uint ; pub const nsGenericHTMLElement_ContentEditableTristate_eInherit : root :: nsGenericHTMLElement_ContentEditableTristate = -1 ; pub const nsGenericHTMLElement_ContentEditableTristate_eFalse : root :: nsGenericHTMLElement_ContentEditableTristate = 0 ; pub const nsGenericHTMLElement_ContentEditableTristate_eTrue : root :: nsGenericHTMLElement_ContentEditableTristate = 1 ; pub type nsGenericHTMLElement_ContentEditableTristate = :: std :: os :: raw :: c_int ; extern "C" { - # [ link_name = "\u{1}_ZN20nsGenericHTMLElement19sCommonAttributeMapE" ] - pub static mut nsGenericHTMLElement_sCommonAttributeMap : [ root :: mozilla :: dom :: Element_MappedAttributeEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN20nsGenericHTMLElement28sImageMarginSizeAttributeMapE" ] - pub static mut nsGenericHTMLElement_sImageMarginSizeAttributeMap : [ root :: mozilla :: dom :: Element_MappedAttributeEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN20nsGenericHTMLElement24sImageBorderAttributeMapE" ] - pub static mut nsGenericHTMLElement_sImageBorderAttributeMap : [ root :: mozilla :: dom :: Element_MappedAttributeEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN20nsGenericHTMLElement23sImageAlignAttributeMapE" ] - pub static mut nsGenericHTMLElement_sImageAlignAttributeMap : [ root :: mozilla :: dom :: Element_MappedAttributeEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN20nsGenericHTMLElement21sDivAlignAttributeMapE" ] - pub static mut nsGenericHTMLElement_sDivAlignAttributeMap : [ root :: mozilla :: dom :: Element_MappedAttributeEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN20nsGenericHTMLElement23sBackgroundAttributeMapE" ] - pub static mut nsGenericHTMLElement_sBackgroundAttributeMap : [ root :: mozilla :: dom :: Element_MappedAttributeEntry ; 0usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN20nsGenericHTMLElement28sBackgroundColorAttributeMapE" ] - pub static mut nsGenericHTMLElement_sBackgroundColorAttributeMap : [ root :: mozilla :: dom :: Element_MappedAttributeEntry ; 0usize ] ; -} # [ test ] fn bindgen_test_layout_nsGenericHTMLElement ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsGenericHTMLElement > ( ) , 128usize , concat ! ( "Size of: " , stringify ! ( nsGenericHTMLElement ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsGenericHTMLElement > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsGenericHTMLElement ) ) ) ; } - /// Utility class to provide scaling defined in a keySplines element. - # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsSMILKeySpline { pub mX1 : f64 , pub mY1 : f64 , pub mX2 : f64 , pub mY2 : f64 , pub mSampleValues : [ f64 ; 11usize ] , } pub const nsSMILKeySpline_kSplineTableSize : root :: nsSMILKeySpline__bindgen_ty_1 = 11 ; pub type nsSMILKeySpline__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; extern "C" { - # [ link_name = "\u{1}_ZN15nsSMILKeySpline15kSampleStepSizeE" ] - pub static mut nsSMILKeySpline_kSampleStepSize : f64 ; -} # [ test ] fn bindgen_test_layout_nsSMILKeySpline ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsSMILKeySpline > ( ) , 120usize , concat ! ( "Size of: " , stringify ! ( nsSMILKeySpline ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsSMILKeySpline > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsSMILKeySpline ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsSMILKeySpline ) ) . mX1 as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsSMILKeySpline ) , "::" , stringify ! ( mX1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsSMILKeySpline ) ) . mY1 as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsSMILKeySpline ) , "::" , stringify ! ( mY1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsSMILKeySpline ) ) . mX2 as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsSMILKeySpline ) , "::" , stringify ! ( mX2 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsSMILKeySpline ) ) . mY2 as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsSMILKeySpline ) , "::" , stringify ! ( mY2 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsSMILKeySpline ) ) . mSampleValues as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsSMILKeySpline ) , "::" , stringify ! ( mSampleValues ) ) ) ; } impl Clone for nsSMILKeySpline { fn clone ( & self ) -> Self { * self } } pub const GECKO_IS_NIGHTLY : bool = true ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct ServoBundledURI { pub mURLString : * const u8 , pub mURLStringLength : u32 , pub mExtraData : * mut root :: mozilla :: URLExtraData , } # [ test ] fn bindgen_test_layout_ServoBundledURI ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ServoBundledURI > ( ) , 24usize , concat ! ( "Size of: " , stringify ! ( ServoBundledURI ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ServoBundledURI > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( ServoBundledURI ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoBundledURI ) ) . mURLString as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( ServoBundledURI ) , "::" , stringify ! ( mURLString ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoBundledURI ) ) . mURLStringLength as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( ServoBundledURI ) , "::" , stringify ! ( mURLStringLength ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const ServoBundledURI ) ) . mExtraData as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( ServoBundledURI ) , "::" , stringify ! ( mExtraData ) ) ) ; } impl Clone for ServoBundledURI { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct FontSizePrefs { pub mDefaultVariableSize : root :: nscoord , pub mDefaultFixedSize : root :: nscoord , pub mDefaultSerifSize : root :: nscoord , pub mDefaultSansSerifSize : root :: nscoord , pub mDefaultMonospaceSize : root :: nscoord , pub mDefaultCursiveSize : root :: nscoord , pub mDefaultFantasySize : root :: nscoord , } # [ test ] fn bindgen_test_layout_FontSizePrefs ( ) { assert_eq ! ( :: std :: mem :: size_of :: < FontSizePrefs > ( ) , 28usize , concat ! ( "Size of: " , stringify ! ( FontSizePrefs ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < FontSizePrefs > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( FontSizePrefs ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontSizePrefs ) ) . mDefaultVariableSize as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( FontSizePrefs ) , "::" , stringify ! ( mDefaultVariableSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontSizePrefs ) ) . mDefaultFixedSize as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( FontSizePrefs ) , "::" , stringify ! ( mDefaultFixedSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontSizePrefs ) ) . mDefaultSerifSize as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( FontSizePrefs ) , "::" , stringify ! ( mDefaultSerifSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontSizePrefs ) ) . mDefaultSansSerifSize as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( FontSizePrefs ) , "::" , stringify ! ( mDefaultSansSerifSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontSizePrefs ) ) . mDefaultMonospaceSize as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( FontSizePrefs ) , "::" , stringify ! ( mDefaultMonospaceSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontSizePrefs ) ) . mDefaultCursiveSize as * const _ as usize } , 20usize , concat ! ( "Alignment of field: " , stringify ! ( FontSizePrefs ) , "::" , stringify ! ( mDefaultCursiveSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const FontSizePrefs ) ) . mDefaultFantasySize as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( FontSizePrefs ) , "::" , stringify ! ( mDefaultFantasySize ) ) ) ; } impl Clone for FontSizePrefs { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct GeckoFontMetrics { pub mChSize : root :: nscoord , pub mXSize : root :: nscoord , } # [ test ] fn bindgen_test_layout_GeckoFontMetrics ( ) { assert_eq ! ( :: std :: mem :: size_of :: < GeckoFontMetrics > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( GeckoFontMetrics ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < GeckoFontMetrics > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( GeckoFontMetrics ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoFontMetrics ) ) . mChSize as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoFontMetrics ) , "::" , stringify ! ( mChSize ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const GeckoFontMetrics ) ) . mXSize as * const _ as usize } , 4usize , concat ! ( "Alignment of field: " , stringify ! ( GeckoFontMetrics ) , "::" , stringify ! ( mXSize ) ) ) ; } impl Clone for GeckoFontMetrics { fn clone ( & self ) -> Self { * self } } pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_after : u32 = 65 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_before : u32 = 65 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_backdrop : u32 = 0 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_cue : u32 = 36 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_firstLetter : u32 = 3 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_firstLine : u32 = 3 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozSelection : u32 = 2 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozFocusInner : u32 = 0 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozFocusOuter : u32 = 0 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozListBullet : u32 = 0 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozListNumber : u32 = 0 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozMathAnonymous : u32 = 0 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberWrapper : u32 = 24 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberText : u32 = 24 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberSpinBox : u32 = 24 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberSpinUp : u32 = 24 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberSpinDown : u32 = 24 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozProgressBar : u32 = 8 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozRangeTrack : u32 = 8 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozRangeProgress : u32 = 8 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozRangeThumb : u32 = 8 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozMeterBar : u32 = 8 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozPlaceholder : u32 = 8 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_placeholder : u32 = 8 ; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozColorSwatch : u32 = 12 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMMediaList { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMMediaList_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMMediaList ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMMediaList > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMMediaList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMMediaList > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMMediaList ) ) ) ; } impl Clone for nsIDOMMediaList { fn clone ( & self ) -> Self { * self } } pub type nsCSSAnonBoxes_NonInheritingBase = u8 ; pub const nsCSSAnonBoxes_NonInheriting_oofPlaceholder : root :: nsCSSAnonBoxes_NonInheriting = 0 ; pub const nsCSSAnonBoxes_NonInheriting_horizontalFramesetBorder : root :: nsCSSAnonBoxes_NonInheriting = 1 ; pub const nsCSSAnonBoxes_NonInheriting_verticalFramesetBorder : root :: nsCSSAnonBoxes_NonInheriting = 2 ; pub const nsCSSAnonBoxes_NonInheriting_framesetBlank : root :: nsCSSAnonBoxes_NonInheriting = 3 ; pub const nsCSSAnonBoxes_NonInheriting_tableColGroup : root :: nsCSSAnonBoxes_NonInheriting = 4 ; pub const nsCSSAnonBoxes_NonInheriting_tableCol : root :: nsCSSAnonBoxes_NonInheriting = 5 ; pub const nsCSSAnonBoxes_NonInheriting_pageBreak : root :: nsCSSAnonBoxes_NonInheriting = 6 ; pub const nsCSSAnonBoxes_NonInheriting__Count : root :: nsCSSAnonBoxes_NonInheriting = 7 ; pub type nsCSSAnonBoxes_NonInheriting = root :: nsCSSAnonBoxes_NonInheritingBase ; - /// templated hashtable class maps keys to interface pointers. + /// + #[repr(C)] + #[derive(Debug)] + pub struct nsNameSpaceManager { + pub _base: root::nsIObserver, + pub mRefCnt: root::nsAutoRefCnt, + pub mMathMLDisabled: bool, + pub mSVGDisabled: bool, + pub mURIToIDTable: [u64; 4usize], + pub mDisabledURIToIDTable: [u64; 4usize], + pub mURIArray: root::nsTArray<root::RefPtr<root::nsAtom>>, + } + pub type nsNameSpaceManager_HasThreadSafeRefCnt = root::mozilla::FalseType; + extern "C" { + #[link_name = "\u{1}_ZN18nsNameSpaceManager9sInstanceE"] + pub static mut nsNameSpaceManager_sInstance: + root::mozilla::StaticRefPtr<root::nsNameSpaceManager>; + } + #[test] + fn bindgen_test_layout_nsNameSpaceManager() { + assert_eq!( + ::std::mem::size_of::<nsNameSpaceManager>(), + 96usize, + concat!("Size of: ", stringify!(nsNameSpaceManager)) + ); + assert_eq!( + ::std::mem::align_of::<nsNameSpaceManager>(), + 8usize, + concat!("Alignment of ", stringify!(nsNameSpaceManager)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsNameSpaceManager>())).mRefCnt as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsNameSpaceManager), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNameSpaceManager>())).mMathMLDisabled as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsNameSpaceManager), + "::", + stringify!(mMathMLDisabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNameSpaceManager>())).mSVGDisabled as *const _ as usize + }, + 17usize, + concat!( + "Offset of field: ", + stringify!(nsNameSpaceManager), + "::", + stringify!(mSVGDisabled) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNameSpaceManager>())).mURIToIDTable as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsNameSpaceManager), + "::", + stringify!(mURIToIDTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNameSpaceManager>())).mDisabledURIToIDTable as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsNameSpaceManager), + "::", + stringify!(mDisabledURIToIDTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsNameSpaceManager>())).mURIArray as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(nsNameSpaceManager), + "::", + stringify!(mURIArray) + ) + ); + } + pub type nsGenericHTMLElementBase = root::nsMappedAttributeElement; + /// A common superclass for HTML elements + #[repr(C)] + pub struct nsGenericHTMLElement { + pub _base: root::nsGenericHTMLElementBase, + pub _base_1: root::nsIDOMHTMLElement, + } + pub type nsGenericHTMLElement_Element = root::mozilla::dom::Element; + pub const nsGenericHTMLElement_PresContextFor_eForComposedDoc: + root::nsGenericHTMLElement_PresContextFor = 0; + pub const nsGenericHTMLElement_PresContextFor_eForUncomposedDoc: + root::nsGenericHTMLElement_PresContextFor = 1; + pub type nsGenericHTMLElement_PresContextFor = u32; + pub const nsGenericHTMLElement_ContentEditableTristate_eInherit: + root::nsGenericHTMLElement_ContentEditableTristate = -1; + pub const nsGenericHTMLElement_ContentEditableTristate_eFalse: + root::nsGenericHTMLElement_ContentEditableTristate = 0; + pub const nsGenericHTMLElement_ContentEditableTristate_eTrue: + root::nsGenericHTMLElement_ContentEditableTristate = 1; + pub type nsGenericHTMLElement_ContentEditableTristate = i32; + extern "C" { + #[link_name = "\u{1}_ZN20nsGenericHTMLElement19sCommonAttributeMapE"] + pub static mut nsGenericHTMLElement_sCommonAttributeMap: + [root::mozilla::dom::Element_MappedAttributeEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN20nsGenericHTMLElement28sImageMarginSizeAttributeMapE"] + pub static mut nsGenericHTMLElement_sImageMarginSizeAttributeMap: + [root::mozilla::dom::Element_MappedAttributeEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN20nsGenericHTMLElement24sImageBorderAttributeMapE"] + pub static mut nsGenericHTMLElement_sImageBorderAttributeMap: + [root::mozilla::dom::Element_MappedAttributeEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN20nsGenericHTMLElement23sImageAlignAttributeMapE"] + pub static mut nsGenericHTMLElement_sImageAlignAttributeMap: + [root::mozilla::dom::Element_MappedAttributeEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN20nsGenericHTMLElement21sDivAlignAttributeMapE"] + pub static mut nsGenericHTMLElement_sDivAlignAttributeMap: + [root::mozilla::dom::Element_MappedAttributeEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN20nsGenericHTMLElement23sBackgroundAttributeMapE"] + pub static mut nsGenericHTMLElement_sBackgroundAttributeMap: + [root::mozilla::dom::Element_MappedAttributeEntry; 0usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN20nsGenericHTMLElement28sBackgroundColorAttributeMapE"] + pub static mut nsGenericHTMLElement_sBackgroundColorAttributeMap: + [root::mozilla::dom::Element_MappedAttributeEntry; 0usize]; + } + #[test] + fn bindgen_test_layout_nsGenericHTMLElement() { + assert_eq!( + ::std::mem::size_of::<nsGenericHTMLElement>(), + 128usize, + concat!("Size of: ", stringify!(nsGenericHTMLElement)) + ); + assert_eq!( + ::std::mem::align_of::<nsGenericHTMLElement>(), + 8usize, + concat!("Alignment of ", stringify!(nsGenericHTMLElement)) + ); + } + /// Utility class to provide scaling defined in a keySplines element. + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsSMILKeySpline { + pub mX1: f64, + pub mY1: f64, + pub mX2: f64, + pub mY2: f64, + pub mSampleValues: [f64; 11usize], + } + pub const nsSMILKeySpline_kSplineTableSize: root::nsSMILKeySpline__bindgen_ty_1 = 11; + pub type nsSMILKeySpline__bindgen_ty_1 = u32; + extern "C" { + #[link_name = "\u{1}_ZN15nsSMILKeySpline15kSampleStepSizeE"] + pub static mut nsSMILKeySpline_kSampleStepSize: f64; + } + #[test] + fn bindgen_test_layout_nsSMILKeySpline() { + assert_eq!( + ::std::mem::size_of::<nsSMILKeySpline>(), + 120usize, + concat!("Size of: ", stringify!(nsSMILKeySpline)) + ); + assert_eq!( + ::std::mem::align_of::<nsSMILKeySpline>(), + 8usize, + concat!("Alignment of ", stringify!(nsSMILKeySpline)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsSMILKeySpline>())).mX1 as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsSMILKeySpline), + "::", + stringify!(mX1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsSMILKeySpline>())).mY1 as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsSMILKeySpline), + "::", + stringify!(mY1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsSMILKeySpline>())).mX2 as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsSMILKeySpline), + "::", + stringify!(mX2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsSMILKeySpline>())).mY2 as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsSMILKeySpline), + "::", + stringify!(mY2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsSMILKeySpline>())).mSampleValues as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsSMILKeySpline), + "::", + stringify!(mSampleValues) + ) + ); + } + impl Clone for nsSMILKeySpline { + fn clone(&self) -> Self { + *self + } + } + pub const GECKO_IS_NIGHTLY: bool = true; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct ServoBundledURI { + pub mURLString: *const u8, + pub mURLStringLength: u32, + pub mExtraData: *mut root::mozilla::URLExtraData, + } + #[test] + fn bindgen_test_layout_ServoBundledURI() { + assert_eq!( + ::std::mem::size_of::<ServoBundledURI>(), + 24usize, + concat!("Size of: ", stringify!(ServoBundledURI)) + ); + assert_eq!( + ::std::mem::align_of::<ServoBundledURI>(), + 8usize, + concat!("Alignment of ", stringify!(ServoBundledURI)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoBundledURI>())).mURLString as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ServoBundledURI), + "::", + stringify!(mURLString) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<ServoBundledURI>())).mURLStringLength as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ServoBundledURI), + "::", + stringify!(mURLStringLength) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<ServoBundledURI>())).mExtraData as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ServoBundledURI), + "::", + stringify!(mExtraData) + ) + ); + } + impl Clone for ServoBundledURI { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct FontSizePrefs { + pub mDefaultVariableSize: root::nscoord, + pub mDefaultFixedSize: root::nscoord, + pub mDefaultSerifSize: root::nscoord, + pub mDefaultSansSerifSize: root::nscoord, + pub mDefaultMonospaceSize: root::nscoord, + pub mDefaultCursiveSize: root::nscoord, + pub mDefaultFantasySize: root::nscoord, + } + #[test] + fn bindgen_test_layout_FontSizePrefs() { + assert_eq!( + ::std::mem::size_of::<FontSizePrefs>(), + 28usize, + concat!("Size of: ", stringify!(FontSizePrefs)) + ); + assert_eq!( + ::std::mem::align_of::<FontSizePrefs>(), + 4usize, + concat!("Alignment of ", stringify!(FontSizePrefs)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontSizePrefs>())).mDefaultVariableSize as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(FontSizePrefs), + "::", + stringify!(mDefaultVariableSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontSizePrefs>())).mDefaultFixedSize as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(FontSizePrefs), + "::", + stringify!(mDefaultFixedSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontSizePrefs>())).mDefaultSerifSize as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(FontSizePrefs), + "::", + stringify!(mDefaultSerifSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontSizePrefs>())).mDefaultSansSerifSize as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(FontSizePrefs), + "::", + stringify!(mDefaultSansSerifSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontSizePrefs>())).mDefaultMonospaceSize as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(FontSizePrefs), + "::", + stringify!(mDefaultMonospaceSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontSizePrefs>())).mDefaultCursiveSize as *const _ as usize + }, + 20usize, + concat!( + "Offset of field: ", + stringify!(FontSizePrefs), + "::", + stringify!(mDefaultCursiveSize) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<FontSizePrefs>())).mDefaultFantasySize as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(FontSizePrefs), + "::", + stringify!(mDefaultFantasySize) + ) + ); + } + impl Clone for FontSizePrefs { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct GeckoFontMetrics { + pub mChSize: root::nscoord, + pub mXSize: root::nscoord, + } + #[test] + fn bindgen_test_layout_GeckoFontMetrics() { + assert_eq!( + ::std::mem::size_of::<GeckoFontMetrics>(), + 8usize, + concat!("Size of: ", stringify!(GeckoFontMetrics)) + ); + assert_eq!( + ::std::mem::align_of::<GeckoFontMetrics>(), + 4usize, + concat!("Alignment of ", stringify!(GeckoFontMetrics)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoFontMetrics>())).mChSize as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(GeckoFontMetrics), + "::", + stringify!(mChSize) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<GeckoFontMetrics>())).mXSize as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(GeckoFontMetrics), + "::", + stringify!(mXSize) + ) + ); + } + impl Clone for GeckoFontMetrics { + fn clone(&self) -> Self { + *self + } + } + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_after: u32 = 65; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_before: u32 = 65; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_backdrop: u32 = 0; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_cue: u32 = 36; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_firstLetter: u32 = 3; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_firstLine: u32 = 3; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozSelection: u32 = 2; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozFocusInner: u32 = 0; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozFocusOuter: u32 = 0; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozListBullet: u32 = 0; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozListNumber: u32 = 0; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozMathAnonymous: u32 = 0; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberWrapper: u32 = 24; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberText: u32 = 24; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberSpinBox: u32 = 24; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberSpinUp: u32 = 24; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozNumberSpinDown: u32 = 24; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozProgressBar: u32 = 8; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozRangeTrack: u32 = 8; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozRangeProgress: u32 = 8; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozRangeThumb: u32 = 8; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozMeterBar: u32 = 8; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozPlaceholder: u32 = 8; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_placeholder: u32 = 8; + pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozColorSwatch: u32 = 12; + pub type nsCSSAnonBoxes_NonInheritingBase = u8; + pub const nsCSSAnonBoxes_NonInheriting_oofPlaceholder: root::nsCSSAnonBoxes_NonInheriting = 0; + pub const nsCSSAnonBoxes_NonInheriting_horizontalFramesetBorder: + root::nsCSSAnonBoxes_NonInheriting = 1; + pub const nsCSSAnonBoxes_NonInheriting_verticalFramesetBorder: + root::nsCSSAnonBoxes_NonInheriting = 2; + pub const nsCSSAnonBoxes_NonInheriting_framesetBlank: root::nsCSSAnonBoxes_NonInheriting = 3; + pub const nsCSSAnonBoxes_NonInheriting_tableColGroup: root::nsCSSAnonBoxes_NonInheriting = 4; + pub const nsCSSAnonBoxes_NonInheriting_tableCol: root::nsCSSAnonBoxes_NonInheriting = 5; + pub const nsCSSAnonBoxes_NonInheriting_pageBreak: root::nsCSSAnonBoxes_NonInheriting = 6; + pub const nsCSSAnonBoxes_NonInheriting__Count: root::nsCSSAnonBoxes_NonInheriting = 7; + pub type nsCSSAnonBoxes_NonInheriting = u8; + /// templated hashtable class maps keys to interface pointers. /// See nsBaseHashtable for complete declaration. /// @param KeyClass a wrapper-class for the hashtable key, see nsHashKeys.h /// for a complete specification. /// @param Interface the interface-type being wrapped - /// @see nsDataHashtable, nsClassHashtable - # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsInterfaceHashtable { pub _address : u8 , } pub type nsInterfaceHashtable_KeyType = [ u8 ; 0usize ] ; pub type nsInterfaceHashtable_UserDataType < Interface > = * mut Interface ; pub type nsInterfaceHashtable_base_type = u8 ; pub type nsBindingList = root :: nsTArray < root :: RefPtr < root :: nsXBLBinding > > ; # [ repr ( C ) ] pub struct nsBindingManager { pub _base : root :: nsStubMutationObserver , pub mRefCnt : root :: nsCycleCollectingAutoRefCnt , pub mBoundContentSet : u64 , pub mWrapperTable : root :: nsAutoPtr < root :: nsBindingManager_WrapperHashtable > , pub mDocumentTable : u64 , pub mLoadingDocTable : u64 , pub mAttachedStack : root :: nsBindingList , pub mProcessingAttachedStack : bool , pub mDestroyed : bool , pub mAttachedStackSizeOnOutermost : u32 , pub mProcessAttachedQueueEvent : u64 , pub mDocument : * mut root :: nsIDocument , } pub type nsBindingManager_HasThreadSafeRefCnt = root :: mozilla :: FalseType ; pub const nsBindingManager_DestructorHandling_eRunDtor : root :: nsBindingManager_DestructorHandling = 0 ; pub const nsBindingManager_DestructorHandling_eDoNotRunDtor : root :: nsBindingManager_DestructorHandling = 1 ; pub type nsBindingManager_DestructorHandling = :: std :: os :: raw :: c_uint ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsBindingManager_cycleCollection { pub _base : root :: nsXPCOMCycleCollectionParticipant , } # [ test ] fn bindgen_test_layout_nsBindingManager_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsBindingManager_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsBindingManager_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsBindingManager_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsBindingManager_cycleCollection ) ) ) ; } impl Clone for nsBindingManager_cycleCollection { fn clone ( & self ) -> Self { * self } } pub type nsBindingManager_BoundContentBindingCallback = root :: std :: function ; pub type nsBindingManager_WrapperHashtable = u8 ; extern "C" { - # [ link_name = "\u{1}_ZN16nsBindingManager21_cycleCollectorGlobalE" ] - pub static mut nsBindingManager__cycleCollectorGlobal : root :: nsBindingManager_cycleCollection ; -} # [ test ] fn bindgen_test_layout_nsBindingManager ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsBindingManager > ( ) , 80usize , concat ! ( "Size of: " , stringify ! ( nsBindingManager ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsBindingManager > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsBindingManager ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mRefCnt as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mRefCnt ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mBoundContentSet as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mBoundContentSet ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mWrapperTable as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mWrapperTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mDocumentTable as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mDocumentTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mLoadingDocTable as * const _ as usize } , 40usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mLoadingDocTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mAttachedStack as * const _ as usize } , 48usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mAttachedStack ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mProcessingAttachedStack as * const _ as usize } , 56usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mProcessingAttachedStack ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mDestroyed as * const _ as usize } , 57usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mDestroyed ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mAttachedStackSizeOnOutermost as * const _ as usize } , 60usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mAttachedStackSizeOnOutermost ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mProcessAttachedQueueEvent as * const _ as usize } , 64usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mProcessAttachedQueueEvent ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsBindingManager ) ) . mDocument as * const _ as usize } , 72usize , concat ! ( "Alignment of field: " , stringify ! ( nsBindingManager ) , "::" , stringify ! ( mDocument ) ) ) ; } - /// An nsStyleContext represents the computed style data for an element. + /// @see nsDataHashtable, nsClassHashtable + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsInterfaceHashtable { + pub _address: u8, + } + pub type nsInterfaceHashtable_KeyType = [u8; 0usize]; + pub type nsInterfaceHashtable_UserDataType<Interface> = *mut Interface; + pub type nsInterfaceHashtable_base_type = u8; + pub type nsBindingList = root::nsTArray<root::RefPtr<root::nsXBLBinding>>; + #[repr(C)] + pub struct nsBindingManager { + pub _base: root::nsStubMutationObserver, + pub mRefCnt: root::nsCycleCollectingAutoRefCnt, + pub mBoundContentSet: u64, + pub mWrapperTable: root::nsAutoPtr<root::nsBindingManager_WrapperHashtable>, + pub mDocumentTable: u64, + pub mLoadingDocTable: u64, + pub mAttachedStack: root::nsBindingList, + pub mProcessingAttachedStack: bool, + pub mDestroyed: bool, + pub mAttachedStackSizeOnOutermost: u32, + pub mProcessAttachedQueueEvent: u64, + pub mDocument: *mut root::nsIDocument, + } + pub type nsBindingManager_HasThreadSafeRefCnt = root::mozilla::FalseType; + pub const nsBindingManager_DestructorHandling_eRunDtor: + root::nsBindingManager_DestructorHandling = 0; + pub const nsBindingManager_DestructorHandling_eDoNotRunDtor: + root::nsBindingManager_DestructorHandling = 1; + pub type nsBindingManager_DestructorHandling = u32; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsBindingManager_cycleCollection { + pub _base: root::nsXPCOMCycleCollectionParticipant, + } + #[test] + fn bindgen_test_layout_nsBindingManager_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<nsBindingManager_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(nsBindingManager_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<nsBindingManager_cycleCollection>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsBindingManager_cycleCollection) + ) + ); + } + impl Clone for nsBindingManager_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + pub type nsBindingManager_BoundContentBindingCallback = root::std::function; + pub type nsBindingManager_WrapperHashtable = u8; + extern "C" { + #[link_name = "\u{1}_ZN16nsBindingManager21_cycleCollectorGlobalE"] + pub static mut nsBindingManager__cycleCollectorGlobal: + root::nsBindingManager_cycleCollection; + } + #[test] + fn bindgen_test_layout_nsBindingManager() { + assert_eq!( + ::std::mem::size_of::<nsBindingManager>(), + 80usize, + concat!("Size of: ", stringify!(nsBindingManager)) + ); + assert_eq!( + ::std::mem::align_of::<nsBindingManager>(), + 8usize, + concat!("Alignment of ", stringify!(nsBindingManager)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsBindingManager>())).mRefCnt as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mRefCnt) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsBindingManager>())).mBoundContentSet as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mBoundContentSet) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsBindingManager>())).mWrapperTable as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mWrapperTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsBindingManager>())).mDocumentTable as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mDocumentTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsBindingManager>())).mLoadingDocTable as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mLoadingDocTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsBindingManager>())).mAttachedStack as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mAttachedStack) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsBindingManager>())).mProcessingAttachedStack as *const _ + as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mProcessingAttachedStack) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsBindingManager>())).mDestroyed as *const _ as usize }, + 57usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mDestroyed) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsBindingManager>())).mAttachedStackSizeOnOutermost + as *const _ as usize + }, + 60usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mAttachedStackSizeOnOutermost) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsBindingManager>())).mProcessAttachedQueueEvent as *const _ + as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mProcessAttachedQueueEvent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsBindingManager>())).mDocument as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsBindingManager), + "::", + stringify!(mDocument) + ) + ); + } + /// An nsStyleContext represents the computed style data for an element. /// The computed style data are stored in a set of structs (see /// nsStyleStruct.h) that are cached either on the style context or in /// the rule tree (see nsRuleNode.h for a description of this caching and @@ -1784,254 +37256,8089 @@ pub type ServoStyleContextStrong = ::gecko_bindings::sugar::ownership::Strong<:: /// by: /// 1. the |nsIFrame|s that are using the style context and /// 2. any *child* style contexts (this might be the reverse of - /// expectation, but it makes sense in this case) - # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsStyleContext { pub mPseudoTag : root :: RefPtr < root :: nsAtom > , pub mBits : u64 , } # [ test ] fn bindgen_test_layout_nsStyleContext ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsStyleContext > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsStyleContext ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsStyleContext > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsStyleContext ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContext ) ) . mPseudoTag as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContext ) , "::" , stringify ! ( mPseudoTag ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsStyleContext ) ) . mBits as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsStyleContext ) , "::" , stringify ! ( mBits ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMCSSRule { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMCSSRule_COMTypeInfo { pub _address : u8 , } pub const nsIDOMCSSRule_UNKNOWN_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 0 ; pub const nsIDOMCSSRule_STYLE_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 1 ; pub const nsIDOMCSSRule_CHARSET_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 2 ; pub const nsIDOMCSSRule_IMPORT_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 3 ; pub const nsIDOMCSSRule_MEDIA_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 4 ; pub const nsIDOMCSSRule_FONT_FACE_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 5 ; pub const nsIDOMCSSRule_PAGE_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 6 ; pub const nsIDOMCSSRule_KEYFRAMES_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 7 ; pub const nsIDOMCSSRule_KEYFRAME_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 8 ; pub const nsIDOMCSSRule_MOZ_KEYFRAMES_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 7 ; pub const nsIDOMCSSRule_MOZ_KEYFRAME_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 8 ; pub const nsIDOMCSSRule_NAMESPACE_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 10 ; pub const nsIDOMCSSRule_COUNTER_STYLE_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 11 ; pub const nsIDOMCSSRule_SUPPORTS_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 12 ; pub const nsIDOMCSSRule_DOCUMENT_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 13 ; pub const nsIDOMCSSRule_FONT_FEATURE_VALUES_RULE : root :: nsIDOMCSSRule__bindgen_ty_1 = 14 ; pub type nsIDOMCSSRule__bindgen_ty_1 = :: std :: os :: raw :: c_uint ; # [ test ] fn bindgen_test_layout_nsIDOMCSSRule ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMCSSRule > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMCSSRule ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMCSSRule > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMCSSRule ) ) ) ; } impl Clone for nsIDOMCSSRule { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMCSSCounterStyleRule { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMCSSCounterStyleRule_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMCSSCounterStyleRule ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMCSSCounterStyleRule > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMCSSCounterStyleRule ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMCSSCounterStyleRule > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMCSSCounterStyleRule ) ) ) ; } impl Clone for nsIDOMCSSCounterStyleRule { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSCounterStyleRule { pub _base : root :: mozilla :: css :: Rule , pub _base_1 : root :: nsIDOMCSSCounterStyleRule , pub mName : root :: RefPtr < root :: nsAtom > , pub mValues : [ root :: nsCSSValue ; 10usize ] , pub mGeneration : u32 , } pub type nsCSSCounterStyleRule_Getter = :: std :: option :: Option < unsafe extern "C" fn ( ) -> root :: nsresult > ; extern "C" { - # [ link_name = "\u{1}_ZN21nsCSSCounterStyleRule8kGettersE" ] - pub static mut nsCSSCounterStyleRule_kGetters : [ root :: nsCSSCounterStyleRule_Getter ; 0usize ] ; -} # [ test ] fn bindgen_test_layout_nsCSSCounterStyleRule ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSCounterStyleRule > ( ) , 248usize , concat ! ( "Size of: " , stringify ! ( nsCSSCounterStyleRule ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSCounterStyleRule > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSCounterStyleRule ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMCSSStyleDeclaration { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMCSSStyleDeclaration_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMCSSStyleDeclaration ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMCSSStyleDeclaration > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMCSSStyleDeclaration ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMCSSStyleDeclaration > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMCSSStyleDeclaration ) ) ) ; } impl Clone for nsIDOMCSSStyleDeclaration { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsICSSDeclaration { pub _base : root :: nsIDOMCSSStyleDeclaration , pub _base_1 : root :: nsWrapperCache , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsICSSDeclaration_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsICSSDeclaration ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsICSSDeclaration > ( ) , 32usize , concat ! ( "Size of: " , stringify ! ( nsICSSDeclaration ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsICSSDeclaration > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsICSSDeclaration ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsIDOMCSSFontFaceRule { pub _base : root :: nsISupports , } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIDOMCSSFontFaceRule_COMTypeInfo { pub _address : u8 , } # [ test ] fn bindgen_test_layout_nsIDOMCSSFontFaceRule ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsIDOMCSSFontFaceRule > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsIDOMCSSFontFaceRule ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsIDOMCSSFontFaceRule > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsIDOMCSSFontFaceRule ) ) ) ; } impl Clone for nsIDOMCSSFontFaceRule { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSFontFaceStyleDecl { pub _base : root :: nsICSSDeclaration , pub mDescriptors : root :: mozilla :: CSSFontFaceDescriptors , } # [ test ] fn bindgen_test_layout_nsCSSFontFaceStyleDecl ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSFontFaceStyleDecl > ( ) , 176usize , concat ! ( "Size of: " , stringify ! ( nsCSSFontFaceStyleDecl ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSFontFaceStyleDecl > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSFontFaceStyleDecl ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsCSSFontFaceStyleDecl ) ) . mDescriptors as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsCSSFontFaceStyleDecl ) , "::" , stringify ! ( mDescriptors ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsCSSFontFaceRule { pub _base : root :: mozilla :: css :: Rule , pub _base_1 : root :: nsIDOMCSSFontFaceRule , pub mDecl : root :: nsCSSFontFaceStyleDecl , } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsCSSFontFaceRule_cycleCollection { pub _base : root :: mozilla :: css :: Rule_cycleCollection , } # [ test ] fn bindgen_test_layout_nsCSSFontFaceRule_cycleCollection ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSFontFaceRule_cycleCollection > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsCSSFontFaceRule_cycleCollection ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSFontFaceRule_cycleCollection > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSFontFaceRule_cycleCollection ) ) ) ; } impl Clone for nsCSSFontFaceRule_cycleCollection { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN17nsCSSFontFaceRule21_cycleCollectorGlobalE" ] - pub static mut nsCSSFontFaceRule__cycleCollectorGlobal : root :: nsCSSFontFaceRule_cycleCollection ; -} # [ test ] fn bindgen_test_layout_nsCSSFontFaceRule ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsCSSFontFaceRule > ( ) , 248usize , concat ! ( "Size of: " , stringify ! ( nsCSSFontFaceRule ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsCSSFontFaceRule > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSFontFaceRule ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug ) ] pub struct nsFontFaceRuleContainer { pub mRule : root :: RefPtr < root :: nsCSSFontFaceRule > , pub mSheetType : root :: mozilla :: SheetType , } # [ test ] fn bindgen_test_layout_nsFontFaceRuleContainer ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsFontFaceRuleContainer > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( nsFontFaceRuleContainer ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsFontFaceRuleContainer > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsFontFaceRuleContainer ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFontFaceRuleContainer ) ) . mRule as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsFontFaceRuleContainer ) , "::" , stringify ! ( mRule ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsFontFaceRuleContainer ) ) . mSheetType as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsFontFaceRuleContainer ) , "::" , stringify ! ( mSheetType ) ) ) ; } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsHtml5StringParser { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIConsoleService { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIFragmentContentSink { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIStringBundle { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsIBidiKeyboard { _unused : [ u8 ; 0 ] } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct EventNameMapping { pub mAtom : * mut root :: nsAtom , pub mType : i32 , pub mMessage : root :: mozilla :: EventMessage , pub mEventClassID : root :: mozilla :: EventClassID , pub mMaybeSpecialSVGorSMILEvent : bool , } # [ test ] fn bindgen_test_layout_EventNameMapping ( ) { assert_eq ! ( :: std :: mem :: size_of :: < EventNameMapping > ( ) , 16usize , concat ! ( "Size of: " , stringify ! ( EventNameMapping ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < EventNameMapping > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( EventNameMapping ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EventNameMapping ) ) . mAtom as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( EventNameMapping ) , "::" , stringify ! ( mAtom ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EventNameMapping ) ) . mType as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( EventNameMapping ) , "::" , stringify ! ( mType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EventNameMapping ) ) . mMessage as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( EventNameMapping ) , "::" , stringify ! ( mMessage ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EventNameMapping ) ) . mEventClassID as * const _ as usize } , 14usize , concat ! ( "Alignment of field: " , stringify ! ( EventNameMapping ) , "::" , stringify ! ( mEventClassID ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const EventNameMapping ) ) . mMaybeSpecialSVGorSMILEvent as * const _ as usize } , 15usize , concat ! ( "Alignment of field: " , stringify ! ( EventNameMapping ) , "::" , stringify ! ( mMaybeSpecialSVGorSMILEvent ) ) ) ; } impl Clone for EventNameMapping { fn clone ( & self ) -> Self { * self } } extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils10sXPConnectE" ] - pub static mut nsContentUtils_sXPConnect : * mut root :: nsIXPConnect ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils16sSecurityManagerE" ] - pub static mut nsContentUtils_sSecurityManager : * mut root :: nsIScriptSecurityManager ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils16sSystemPrincipalE" ] - pub static mut nsContentUtils_sSystemPrincipal : * mut root :: nsIPrincipal ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sNullSubjectPrincipalE" ] - pub static mut nsContentUtils_sNullSubjectPrincipal : * mut root :: nsIPrincipal ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils17sNameSpaceManagerE" ] - pub static mut nsContentUtils_sNameSpaceManager : * mut root :: nsNameSpaceManager ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils10sIOServiceE" ] - pub static mut nsContentUtils_sIOService : * mut root :: nsIIOService ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils14sUUIDGeneratorE" ] - pub static mut nsContentUtils_sUUIDGenerator : * mut root :: nsIUUIDGenerator ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils15sConsoleServiceE" ] - pub static mut nsContentUtils_sConsoleService : * mut root :: nsIConsoleService ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils15sAtomEventTableE" ] - pub static mut nsContentUtils_sAtomEventTable : * mut u8 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils17sStringEventTableE" ] - pub static mut nsContentUtils_sStringEventTable : * mut u8 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils18sUserDefinedEventsE" ] - pub static mut nsContentUtils_sUserDefinedEvents : * mut root :: nsTArray < root :: RefPtr < root :: nsAtom > > ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils20sStringBundleServiceE" ] - pub static mut nsContentUtils_sStringBundleService : * mut root :: nsIStringBundleService ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils14sStringBundlesE" ] - pub static mut nsContentUtils_sStringBundles : [ * mut root :: nsIStringBundle ; 14usize ] ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sContentPolicyServiceE" ] - pub static mut nsContentUtils_sContentPolicyService : * mut root :: nsIContentPolicy ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils24sTriedToGetContentPolicyE" ] - pub static mut nsContentUtils_sTriedToGetContentPolicy : bool ; -} # [ test ] fn __bindgen_test_layout_RefPtr_open0_LineBreaker_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: intl :: LineBreaker > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: intl :: LineBreaker > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: intl :: LineBreaker > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: intl :: LineBreaker > ) ) ) ; } extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils12sLineBreakerE" ] - pub static mut nsContentUtils_sLineBreaker : root :: RefPtr < root :: mozilla :: intl :: LineBreaker > ; -} # [ test ] fn __bindgen_test_layout_RefPtr_open0_WordBreaker_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: intl :: WordBreaker > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: intl :: WordBreaker > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: intl :: WordBreaker > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: intl :: WordBreaker > ) ) ) ; } extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils12sWordBreakerE" ] - pub static mut nsContentUtils_sWordBreaker : root :: RefPtr < root :: mozilla :: intl :: WordBreaker > ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils13sBidiKeyboardE" ] - pub static mut nsContentUtils_sBidiKeyboard : * mut root :: nsIBidiKeyboard ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils12sInitializedE" ] - pub static mut nsContentUtils_sInitialized : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils19sScriptBlockerCountE" ] - pub static mut nsContentUtils_sScriptBlockerCount : u32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils28sDOMNodeRemovedSuppressCountE" ] - pub static mut nsContentUtils_sDOMNodeRemovedSuppressCount : u32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sBlockedScriptRunnersE" ] - pub static mut nsContentUtils_sBlockedScriptRunners : * mut u8 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils27sRunnersCountAtFirstBlockerE" ] - pub static mut nsContentUtils_sRunnersCountAtFirstBlocker : u32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils40sScriptBlockerCountWhereRunnersPreventedE" ] - pub static mut nsContentUtils_sScriptBlockerCountWhereRunnersPrevented : u32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils18sSameOriginCheckerE" ] - pub static mut nsContentUtils_sSameOriginChecker : * mut root :: nsIInterfaceRequestor ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils24sIsHandlingKeyBoardEventE" ] - pub static mut nsContentUtils_sIsHandlingKeyBoardEvent : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sAllowXULXBL_for_fileE" ] - pub static mut nsContentUtils_sAllowXULXBL_for_file : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils23sIsFullScreenApiEnabledE" ] - pub static mut nsContentUtils_sIsFullScreenApiEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils33sIsUnprefixedFullscreenApiEnabledE" ] - pub static mut nsContentUtils_sIsUnprefixedFullscreenApiEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils22sTrustedFullScreenOnlyE" ] - pub static mut nsContentUtils_sTrustedFullScreenOnly : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils17sIsCutCopyAllowedE" ] - pub static mut nsContentUtils_sIsCutCopyAllowed : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sHandlingInputTimeoutE" ] - pub static mut nsContentUtils_sHandlingInputTimeout : u32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils27sIsPerformanceTimingEnabledE" ] - pub static mut nsContentUtils_sIsPerformanceTimingEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils24sIsResourceTimingEnabledE" ] - pub static mut nsContentUtils_sIsResourceTimingEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils37sIsPerformanceNavigationTimingEnabledE" ] - pub static mut nsContentUtils_sIsPerformanceNavigationTimingEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils27sIsUserTimingLoggingEnabledE" ] - pub static mut nsContentUtils_sIsUserTimingLoggingEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils25sIsFrameTimingPrefEnabledE" ] - pub static mut nsContentUtils_sIsFrameTimingPrefEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils34sIsFormAutofillAutocompleteEnabledE" ] - pub static mut nsContentUtils_sIsFormAutofillAutocompleteEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils23sIsShadowDOMEnabledE" ] - pub static mut nsContentUtils_sIsShadowDOMEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils24sIsCustomElementsEnabledE" ] - pub static mut nsContentUtils_sIsCustomElementsEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils16sDevToolsEnabledE" ] - pub static mut nsContentUtils_sDevToolsEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils35sSendPerformanceTimingNotificationsE" ] - pub static mut nsContentUtils_sSendPerformanceTimingNotifications : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils18sUseActivityCursorE" ] - pub static mut nsContentUtils_sUseActivityCursor : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils25sAnimationsAPICoreEnabledE" ] - pub static mut nsContentUtils_sAnimationsAPICoreEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils35sAnimationsAPIElementAnimateEnabledE" ] - pub static mut nsContentUtils_sAnimationsAPIElementAnimateEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils34sAnimationsAPIPendingMemberEnabledE" ] - pub static mut nsContentUtils_sAnimationsAPIPendingMemberEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils19sGetBoxQuadsEnabledE" ] - pub static mut nsContentUtils_sGetBoxQuadsEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils30sSkipCursorMoveForSameValueSetE" ] - pub static mut nsContentUtils_sSkipCursorMoveForSameValueSet : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils27sRequestIdleCallbackEnabledE" ] - pub static mut nsContentUtils_sRequestIdleCallbackEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sLowerNetworkPriorityE" ] - pub static mut nsContentUtils_sLowerNetworkPriority : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils15sTailingEnabledE" ] - pub static mut nsContentUtils_sTailingEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils28sShowInputPlaceholderOnFocusE" ] - pub static mut nsContentUtils_sShowInputPlaceholderOnFocus : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils17sAutoFocusEnabledE" ] - pub static mut nsContentUtils_sAutoFocusEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils23sBypassCSSOMOriginCheckE" ] - pub static mut nsContentUtils_sBypassCSSOMOriginCheck : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sIsScopedStyleEnabledE" ] - pub static mut nsContentUtils_sIsScopedStyleEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils23sIsBytecodeCacheEnabledE" ] - pub static mut nsContentUtils_sIsBytecodeCacheEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils22sBytecodeCacheStrategyE" ] - pub static mut nsContentUtils_sBytecodeCacheStrategy : i32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils22sCookiesLifetimePolicyE" ] - pub static mut nsContentUtils_sCookiesLifetimePolicy : u32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils16sCookiesBehaviorE" ] - pub static mut nsContentUtils_sCookiesBehavior : u32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils20sShortcutsCustomizedE" ] - pub static mut nsContentUtils_sShortcutsCustomized : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sPrivacyMaxInnerWidthE" ] - pub static mut nsContentUtils_sPrivacyMaxInnerWidth : i32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils22sPrivacyMaxInnerHeightE" ] - pub static mut nsContentUtils_sPrivacyMaxInnerHeight : i32 ; -} # [ repr ( C ) ] # [ derive ( Debug , Copy , Clone ) ] pub struct nsContentUtils_UserInteractionObserver { _unused : [ u8 ; 0 ] } extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils24sUserInteractionObserverE" ] - pub static mut nsContentUtils_sUserInteractionObserver : * mut root :: nsContentUtils_UserInteractionObserver ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils19sHTMLFragmentParserE" ] - pub static mut nsContentUtils_sHTMLFragmentParser : * mut root :: nsHtml5StringParser ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils18sXMLFragmentParserE" ] - pub static mut nsContentUtils_sXMLFragmentParser : * mut root :: nsIParser ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils16sXMLFragmentSinkE" ] - pub static mut nsContentUtils_sXMLFragmentSink : * mut root :: nsIFragmentContentSink ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils22sFragmentParsingActiveE" ] - pub static mut nsContentUtils_sFragmentParsingActive : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils10sShiftTextE" ] - pub static mut nsContentUtils_sShiftText : * mut ::nsstring::nsStringRepr ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils12sControlTextE" ] - pub static mut nsContentUtils_sControlText : * mut ::nsstring::nsStringRepr ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils9sMetaTextE" ] - pub static mut nsContentUtils_sMetaText : * mut ::nsstring::nsStringRepr ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils7sOSTextE" ] - pub static mut nsContentUtils_sOSText : * mut ::nsstring::nsStringRepr ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils8sAltTextE" ] - pub static mut nsContentUtils_sAltText : * mut ::nsstring::nsStringRepr ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils18sModifierSeparatorE" ] - pub static mut nsContentUtils_sModifierSeparator : * mut ::nsstring::nsStringRepr ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils19sJSBytecodeMimeTypeE" ] - pub static mut nsContentUtils_sJSBytecodeMimeType : * mut root :: nsCString ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils21sDOMWindowDumpEnabledE" ] - pub static mut nsContentUtils_sDOMWindowDumpEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils18sDoNotTrackEnabledE" ] - pub static mut nsContentUtils_sDoNotTrackEnabled : bool ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils11sDOMDumpLogE" ] - pub static mut nsContentUtils_sDOMDumpLog : root :: mozilla :: LazyLogModule ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils18sPopupControlStateE" ] - pub static mut nsContentUtils_sPopupControlState : root :: PopupControlState ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils24sInnerOrOuterWindowCountE" ] - pub static mut nsContentUtils_sInnerOrOuterWindowCount : i32 ; -} extern "C" { - # [ link_name = "\u{1}_ZN14nsContentUtils32sInnerOrOuterWindowSerialCounterE" ] - pub static mut nsContentUtils_sInnerOrOuterWindowSerialCounter : u32 ; -} pub type nsMediaFeatureValueGetter = :: std :: option :: Option < unsafe extern "C" fn ( aDocument : * mut root :: nsIDocument, aFeature : * const root :: nsMediaFeature , aResult : * mut root :: nsCSSValue ) > ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsMediaFeature { pub mName : * mut * mut root :: nsStaticAtom , pub mRangeType : root :: nsMediaFeature_RangeType , pub mValueType : root :: nsMediaFeature_ValueType , pub mReqFlags : u8 , pub mData : root :: nsMediaFeature__bindgen_ty_1 , pub mGetter : root :: nsMediaFeatureValueGetter , } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsMediaFeature_RangeType { eMinMaxAllowed = 0 , eMinMaxNotAllowed = 1 , } # [ repr ( u32 ) ] # [ derive ( Debug , Copy , Clone , PartialEq , Eq , Hash ) ] pub enum nsMediaFeature_ValueType { eLength = 0 , eInteger = 1 , eFloat = 2 , eBoolInteger = 3 , eIntRatio = 4 , eResolution = 5 , eEnumerated = 6 , eIdent = 7 , } pub const nsMediaFeature_RequirementFlags_eNoRequirements : root :: nsMediaFeature_RequirementFlags = 0 ; pub const nsMediaFeature_RequirementFlags_eHasWebkitPrefix : root :: nsMediaFeature_RequirementFlags = 1 ; pub const nsMediaFeature_RequirementFlags_eWebkitDevicePixelRatioPrefEnabled : root :: nsMediaFeature_RequirementFlags = 2 ; pub const nsMediaFeature_RequirementFlags_eUserAgentAndChromeOnly : root :: nsMediaFeature_RequirementFlags = 4 ; pub type nsMediaFeature_RequirementFlags = u8 ; # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsMediaFeature__bindgen_ty_1 { pub mInitializer_ : root :: __BindgenUnionField < * const :: std :: os :: raw :: c_void > , pub mKeywordTable : root :: __BindgenUnionField < * const root :: nsCSSProps_KTableEntry > , pub mMetric : root :: __BindgenUnionField < * const * const root :: nsAtom > , pub bindgen_union_field : u64 , } # [ test ] fn bindgen_test_layout_nsMediaFeature__bindgen_ty_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsMediaFeature__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( nsMediaFeature__bindgen_ty_1 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsMediaFeature__bindgen_ty_1 > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsMediaFeature__bindgen_ty_1 ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature__bindgen_ty_1 ) ) . mInitializer_ as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature__bindgen_ty_1 ) , "::" , stringify ! ( mInitializer_ ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature__bindgen_ty_1 ) ) . mKeywordTable as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature__bindgen_ty_1 ) , "::" , stringify ! ( mKeywordTable ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature__bindgen_ty_1 ) ) . mMetric as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature__bindgen_ty_1 ) , "::" , stringify ! ( mMetric ) ) ) ; } impl Clone for nsMediaFeature__bindgen_ty_1 { fn clone ( & self ) -> Self { * self } } # [ test ] fn bindgen_test_layout_nsMediaFeature ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsMediaFeature > ( ) , 40usize , concat ! ( "Size of: " , stringify ! ( nsMediaFeature ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsMediaFeature > ( ) , 8usize , concat ! ( "Alignment of " , stringify ! ( nsMediaFeature ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature ) ) . mName as * const _ as usize } , 0usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature ) , "::" , stringify ! ( mName ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature ) ) . mRangeType as * const _ as usize } , 8usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature ) , "::" , stringify ! ( mRangeType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature ) ) . mValueType as * const _ as usize } , 12usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature ) , "::" , stringify ! ( mValueType ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature ) ) . mReqFlags as * const _ as usize } , 16usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature ) , "::" , stringify ! ( mReqFlags ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature ) ) . mData as * const _ as usize } , 24usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature ) , "::" , stringify ! ( mData ) ) ) ; assert_eq ! ( unsafe { & ( * ( 0 as * const nsMediaFeature ) ) . mGetter as * const _ as usize } , 32usize , concat ! ( "Alignment of field: " , stringify ! ( nsMediaFeature ) , "::" , stringify ! ( mGetter ) ) ) ; } impl Clone for nsMediaFeature { fn clone ( & self ) -> Self { * self } } # [ repr ( C ) ] # [ derive ( Debug , Copy ) ] pub struct nsMediaFeatures { pub _address : u8 , } extern "C" { - # [ link_name = "\u{1}_ZN15nsMediaFeatures8featuresE" ] - pub static mut nsMediaFeatures_features : [ root :: nsMediaFeature ; 0usize ] ; -} # [ test ] fn bindgen_test_layout_nsMediaFeatures ( ) { assert_eq ! ( :: std :: mem :: size_of :: < nsMediaFeatures > ( ) , 1usize , concat ! ( "Size of: " , stringify ! ( nsMediaFeatures ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < nsMediaFeatures > ( ) , 1usize , concat ! ( "Alignment of " , stringify ! ( nsMediaFeatures ) ) ) ; } impl Clone for nsMediaFeatures { fn clone ( & self ) -> Self { * self } } # [ test ] fn __bindgen_test_layout_nsTSubstring_open0_char16_t_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTSubstring < u16 > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTSubstring < u16 > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTSubstring < u16 > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTSubstring < u16 > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTString_open0_char16_t_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < ::nsstring::nsStringRepr > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( ::nsstring::nsStringRepr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < ::nsstring::nsStringRepr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( ::nsstring::nsStringRepr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTSubstring_open0_char_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTSubstring < :: std :: os :: raw :: c_char > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTSubstring < :: std :: os :: raw :: c_char > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTSubstring < :: std :: os :: raw :: c_char > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTSubstring < :: std :: os :: raw :: c_char > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTString_open0_char_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTString < :: std :: os :: raw :: c_char > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTString < :: std :: os :: raw :: c_char > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTString < :: std :: os :: raw :: c_char > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTString < :: std :: os :: raw :: c_char > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsISupports_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_CSSVariableValues_Variable_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: CSSVariableValues_Variable > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: CSSVariableValues_Variable > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: CSSVariableValues_Variable > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: CSSVariableValues_Variable > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_FontFamilyName_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: FontFamilyName > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: FontFamilyName > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: FontFamilyName > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: FontFamilyName > ) ) ) ; } # [ test ] fn __bindgen_test_layout_NotNull_open0_RefPtr_open1_SharedFontList_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: NotNull < root :: RefPtr < root :: mozilla :: SharedFontList > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: NotNull < root :: RefPtr < root :: mozilla :: SharedFontList > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: NotNull < root :: RefPtr < root :: mozilla :: SharedFontList > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: NotNull < root :: RefPtr < root :: mozilla :: SharedFontList > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_SharedFontList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: SharedFontList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: SharedFontList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: SharedFontList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: SharedFontList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_uint32_t_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < u32 > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < u32 > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < u32 > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < u32 > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_gfxFontFeatureValueSet_ValueList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: gfxFontFeatureValueSet_ValueList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: gfxFontFeatureValueSet_ValueList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: gfxFontFeatureValueSet_ValueList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: gfxFontFeatureValueSet_ValueList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_uint32_t_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < u32 > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < u32 > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < u32 > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < u32 > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_gfxAlternateValue_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: gfxAlternateValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: gfxAlternateValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: gfxAlternateValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: gfxAlternateValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_gfxFontFeatureValueSet_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: gfxFontFeatureValueSet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: gfxFontFeatureValueSet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: gfxFontFeatureValueSet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: gfxFontFeatureValueSet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_gfxFontFeature_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: gfxFontFeature > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: gfxFontFeature > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: gfxFontFeature > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: gfxFontFeature > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_gfxFontVariation_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: gfxFontVariation > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: gfxFontVariation > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: gfxFontVariation > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: gfxFontVariation > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_BaseTimeDuration_open0_TimeDurationValueCalculator_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: BaseTimeDuration > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: BaseTimeDuration ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: BaseTimeDuration > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: BaseTimeDuration ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_DeletePolicy_open1_JSErrorNotes_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_iterator_open0_input_iterator_tag_UniquePtr_open1_JSErrorNotes_Note_DeletePolicy_open2_JSErrorNotes_Note_close2_close1_long_ptr_UniquePtr_ref_UniquePtr_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: std :: iterator > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: std :: iterator ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: std :: iterator > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: std :: iterator ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_5 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes_Note > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_5 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_DeletePolicy_open1_JSErrorNotes_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: JSErrorNotes > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: JSErrorNotes > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: JS :: DeletePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: JS :: DeletePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_MediaList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: MediaList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: MediaList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: MediaList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: MediaList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_StyleSetHandle_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: StyleSetHandle > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: StyleSetHandle > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: StyleSetHandle > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: StyleSetHandle > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_ProfilerBacktrace_ProfilerBacktraceDestructor_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: ProfilerBacktrace > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: ProfilerBacktrace > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: ProfilerBacktrace > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: ProfilerBacktrace > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsNodeInfoManager_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsNodeInfoManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsNodeInfoManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsNodeInfoManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsNodeInfoManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsBindingManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsBindingManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsBindingManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsBindingManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAttrChildContentList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAttrChildContentList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAttrChildContentList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAttrChildContentList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAttrChildContentList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_LinkedList_open1_nsRange_close1_DefaultDelete_open1_LinkedList_open2_nsRange_close2_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_LinkedList_open1_nsRange_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_LinkedList_open1_nsRange_close1_DefaultDelete_open1_LinkedList_open2_nsRange_close2_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: LinkedList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_LinkedList_open1_nsRange_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_NodeInfo_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: NodeInfo > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: NodeInfo > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: NodeInfo > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: NodeInfo > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIContent_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ShadowRoot_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_HTMLSlotElement_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: HTMLSlotElement > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: HTMLSlotElement > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: HTMLSlotElement > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: HTMLSlotElement > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsIContent_nsExtendedContentSlots_DefaultDelete_open1_nsIContent_nsExtendedContentSlots_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsIContent_nsExtendedContentSlots > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsIContent_nsExtendedContentSlots > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsIContent_nsExtendedContentSlots > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsIContent_nsExtendedContentSlots > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsIContent_nsExtendedContentSlots_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIWeakReference_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_ptr_void_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < * mut :: std :: os :: raw :: c_void > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < * mut :: std :: os :: raw :: c_void > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < * mut :: std :: os :: raw :: c_void > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < * mut :: std :: os :: raw :: c_void > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsPtrHashKey_open0_void_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsPtrHashKey < :: std :: os :: raw :: c_void > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsPtrHashKey < :: std :: os :: raw :: c_void > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsPtrHashKey < :: std :: os :: raw :: c_void > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsPtrHashKey < :: std :: os :: raw :: c_void > ) ) ) ; } # [ test ] fn __bindgen_test_layout_StaticRefPtr_open0_nsIContent_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: StaticRefPtr < root :: nsIContent > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: nsIContent > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: StaticRefPtr < root :: nsIContent > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: StaticRefPtr < root :: nsIContent > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsPresContext_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsPresContext > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsPresContext > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsPresContext > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsPresContext > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsFrameSelection_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsFrameSelection > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsFrameSelection > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsFrameSelection > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsFrameSelection > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsITimer_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsPtrHashKey_open0_WeakFrame_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsPtrHashKey < root :: WeakFrame > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsPtrHashKey < root :: WeakFrame > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsPtrHashKey < root :: WeakFrame > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsPtrHashKey < root :: WeakFrame > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsCString_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsCString > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCString > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsCString > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCString > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_EventTarget_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_EventTarget_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_Performance_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: Performance > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: Performance > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: Performance > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: Performance > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_TimeoutManager_DefaultDelete_open1_TimeoutManager_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: dom :: TimeoutManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: dom :: TimeoutManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: dom :: TimeoutManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: dom :: TimeoutManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_TimeoutManager_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsPIDOMWindowOuter_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIContent_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_ptr_AudioContext_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < * mut root :: mozilla :: dom :: AudioContext > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < * mut root :: mozilla :: dom :: AudioContext > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < * mut root :: mozilla :: dom :: AudioContext > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < * mut root :: mozilla :: dom :: AudioContext > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_TabGroup_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: TabGroup > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: TabGroup > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: TabGroup > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: TabGroup > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsPIDOMWindowInner_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_EventTarget_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_EventTarget_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_Element_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocShell_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_TabGroup_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: TabGroup > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: TabGroup > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: TabGroup > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: TabGroup > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsPIDOMWindowOuter_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsBaseContentList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsBaseContentList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsBaseContentList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsBaseContentList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsBaseContentList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_nsTHashtable_open1_nsIdentifierMapEntry_ChangeCallbackEntry_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < u64 > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( u64 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < u64 > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( u64 ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsIdentifierMapEntry_Element_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsIdentifierMapEntry_Element > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsIdentifierMapEntry_Element > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsIdentifierMapEntry_Element > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsIdentifierMapEntry_Element > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_StyleSheet_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_StyleSheetList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: StyleSheetList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: StyleSheetList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: StyleSheetList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: StyleSheetList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_RawServoAnimationValue_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: RawServoAnimationValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoAnimationValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: RawServoAnimationValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoAnimationValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_PropertyValuePair_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: PropertyValuePair > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: PropertyValuePair > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: PropertyValuePair > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: PropertyValuePair > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsStyleAutoArray_open0_StyleAnimation_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > > ( ) , 56usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_RawServoSelectorList_DefaultDelete_open1_RawServoSelectorList_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: RawServoSelectorList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: RawServoSelectorList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: RawServoSelectorList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: RawServoSelectorList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_RawServoSelectorList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsCSSSelectorList_DefaultDelete_open1_nsCSSSelectorList_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsCSSSelectorList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSSelectorList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsCSSSelectorList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSSelectorList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsCSSSelectorList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsCSSSelectorList_DefaultDelete_open1_nsCSSSelectorList_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsCSSSelectorList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSSelectorList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsCSSSelectorList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSSelectorList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsCSSSelectorList_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_RawServoSelectorList_DefaultDelete_open1_RawServoSelectorList_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: RawServoSelectorList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: RawServoSelectorList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: RawServoSelectorList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: RawServoSelectorList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_RawServoSelectorList_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIObserver_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsIDocument_SelectorCache_DefaultDelete_open1_nsIDocument_SelectorCache_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsIDocument_SelectorCache_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsIDocument_SelectorCache_DefaultDelete_open1_nsIDocument_SelectorCache_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsIDocument_SelectorCache > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsIDocument_SelectorCache_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_5 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_6 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_7 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_8 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_9 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_URLExtraData_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: URLExtraData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: URLExtraData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: URLExtraData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: URLExtraData > ) ) ) ; } # [ test ] fn __bindgen_test_layout_NotNull_open0_ptr_const_nsIDocument__Encoding_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: NotNull < * const root :: nsIDocument_Encoding > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: NotNull < * const root :: nsIDocument_Encoding > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: NotNull < * const root :: nsIDocument_Encoding > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: NotNull < * const root :: nsIDocument_Encoding > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_Loader_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: css :: Loader > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: Loader > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: css :: Loader > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: Loader > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ImageLoader_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: css :: ImageLoader > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: ImageLoader > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: css :: ImageLoader > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: ImageLoader > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsHTMLStyleSheet_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsHTMLStyleSheet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsHTMLStyleSheet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsHTMLStyleSheet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsHTMLStyleSheet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsHTMLCSSStyleSheet_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsHTMLCSSStyleSheet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsHTMLCSSStyleSheet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsHTMLCSSStyleSheet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsHTMLCSSStyleSheet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ImageTracker_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: ImageTracker > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: ImageTracker > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: ImageTracker > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: ImageTracker > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_nsTHashtable_open1_nsPtrHashKey_open2_nsISupports_close2_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < u64 > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( u64 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < u64 > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( u64 ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_Link_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsSMILAnimationController_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsSMILAnimationController > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsSMILAnimationController > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsSMILAnimationController > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsSMILAnimationController > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsAutoPtr_open1_nsPropertyTable_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsAutoPtr < root :: nsPropertyTable > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsAutoPtr < root :: nsPropertyTable > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsAutoPtr < root :: nsPropertyTable > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsAutoPtr < root :: nsPropertyTable > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIHTMLCollection_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_FontFaceSet_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: FontFaceSet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: FontFaceSet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: FontFaceSet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: FontFaceSet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIScriptGlobalObject_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIChannel_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsISupports_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIChannel_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMArray_open0_nsINode_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMArray > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMArray ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMArray > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMArray ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_5 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsWeakPtr_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsWeakPtr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsWeakPtr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsWeakPtr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsWeakPtr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocumentEncoder_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsIDocument_FrameRequest_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsIDocument_FrameRequest > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsIDocument_FrameRequest > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsIDocument_FrameRequest > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsIDocument_FrameRequest > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIStructuredCloneContainer_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIVariant_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_XPathEvaluator_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: XPathEvaluator > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: XPathEvaluator > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: XPathEvaluator > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: XPathEvaluator > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_AnonymousContent_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: AnonymousContent > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: AnonymousContent > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: AnonymousContent > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: AnonymousContent > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_LinkedList_open0_MediaQueryList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: LinkedList > ( ) , 24usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: LinkedList ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: LinkedList > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: LinkedList ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_DocGroup_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: DocGroup > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: DocGroup > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: DocGroup > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: DocGroup > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsCOMPtr_open1_nsIRunnable_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsCOMPtr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCOMPtr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsCOMPtr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCOMPtr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIRunnable_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsCOMPtr_open1_nsIPrincipal_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsCOMPtr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCOMPtr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsCOMPtr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCOMPtr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_uint64_t_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < u64 > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < u64 > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < u64 > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < u64 > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsINode_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_LangGroupFontPrefs_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsAutoPtr < root :: mozilla :: LangGroupFontPrefs > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: mozilla :: LangGroupFontPrefs > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsAutoPtr < root :: mozilla :: LangGroupFontPrefs > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: mozilla :: LangGroupFontPrefs > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_6 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsDeviceContext_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsDeviceContext > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsDeviceContext > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsDeviceContext > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsDeviceContext > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_EventStateManager_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: EventStateManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: EventStateManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: EventStateManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: EventStateManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsRefreshDriver_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsRefreshDriver > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsRefreshDriver > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsRefreshDriver > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsRefreshDriver > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_EffectCompositor_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: EffectCompositor > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: EffectCompositor > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: EffectCompositor > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: EffectCompositor > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsTransitionManager_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsTransitionManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsTransitionManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsTransitionManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsTransitionManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAnimationManager_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAnimationManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAnimationManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAnimationManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAnimationManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_RestyleManager_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: RestyleManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: RestyleManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: RestyleManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: RestyleManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_CounterStyleManager_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: CounterStyleManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: CounterStyleManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: CounterStyleManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: CounterStyleManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_gfxFontFeatureValueSet_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: gfxFontFeatureValueSet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: gfxFontFeatureValueSet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: gfxFontFeatureValueSet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: gfxFontFeatureValueSet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_5 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsITheme_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrintSettings_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsITimer_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsBidi_DefaultDelete_open1_nsBidi_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsBidi > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsBidi > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsBidi > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsBidi > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsBidi_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsRect_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsRect > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsRect > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsRect > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsRect > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_gfxTextPerfMetrics_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsAutoPtr < root :: gfxTextPerfMetrics > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: gfxTextPerfMetrics > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsAutoPtr < root :: gfxTextPerfMetrics > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: gfxTextPerfMetrics > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_gfxMissingFontRecorder_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsAutoPtr < root :: gfxMissingFontRecorder > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: gfxMissingFontRecorder > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsAutoPtr < root :: gfxMissingFontRecorder > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: gfxMissingFontRecorder > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_URLParams_Param_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: dom :: URLParams_Param > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: dom :: URLParams_Param > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: dom :: URLParams_Param > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: dom :: URLParams_Param > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_URLParams_DefaultDelete_open1_URLParams_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: dom :: URLParams > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: dom :: URLParams > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: dom :: URLParams > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: dom :: URLParams > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_URLParams_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_10 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_11 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_const_char_FreePolicy_open1_const_char_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < :: std :: os :: raw :: c_char > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < :: std :: os :: raw :: c_char > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < :: std :: os :: raw :: c_char > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < :: std :: os :: raw :: c_char > ) ) ) ; } # [ test ] fn __bindgen_test_layout_FreePolicy_open0_const_char_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: detail :: FreePolicy > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: detail :: FreePolicy ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: detail :: FreePolicy > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: detail :: FreePolicy ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIEventTarget_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsMainThreadPtrHandle_open0_nsIURI_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsMainThreadPtrHandle < root :: nsIURI > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsMainThreadPtrHandle < root :: nsIURI > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsMainThreadPtrHandle < root :: nsIURI > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsMainThreadPtrHandle < root :: nsIURI > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_URLExtraData_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: URLExtraData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: URLExtraData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: URLExtraData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: URLExtraData > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsPtrHashKey_open0_nsIDocument_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsPtrHashKey < root :: nsIDocument > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsPtrHashKey < root :: nsIDocument > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsPtrHashKey < root :: nsIDocument > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsPtrHashKey < root :: nsIDocument > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_GridNamedArea_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: css :: GridNamedArea > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: css :: GridNamedArea > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: css :: GridNamedArea > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: css :: GridNamedArea > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsCSSValueList_DefaultDelete_open1_nsCSSValueList_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsCSSValueList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSValueList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsCSSValueList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSValueList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsCSSValueList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsCSSValuePairList_DefaultDelete_open1_nsCSSValuePairList_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsCSSValuePairList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSValuePairList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsCSSValuePairList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSValuePairList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsCSSValuePairList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsCSSValueGradientStop_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsCSSValueGradientStop > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCSSValueGradientStop > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsCSSValueGradientStop > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCSSValueGradientStop > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_12 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_13 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_imgRequestProxy_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: imgRequestProxy > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: imgRequestProxy > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: imgRequestProxy > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: imgRequestProxy > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_ProxyBehaviour_DefaultDelete_open1_ProxyBehaviour_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: ProxyBehaviour > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: ProxyBehaviour > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: ProxyBehaviour > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: ProxyBehaviour > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_ProxyBehaviour_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_imgRequestProxy_ImageURL_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: imgRequestProxy_ImageURL > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: imgRequestProxy_ImageURL > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: imgRequestProxy_ImageURL > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: imgRequestProxy_ImageURL > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsILoadGroup_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_TabGroup_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: TabGroup > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: TabGroup > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: TabGroup > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: TabGroup > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIEventTarget_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_ptr_CounterStyle_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < * mut root :: mozilla :: CounterStyle > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < * mut root :: mozilla :: CounterStyle > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < * mut root :: mozilla :: CounterStyle > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < * mut root :: mozilla :: CounterStyle > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_6 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleGradientStop_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleGradientStop > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleGradientStop > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleGradientStop > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleGradientStop > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_imgRequestProxy_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: imgRequestProxy > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: imgRequestProxy > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: imgRequestProxy > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: imgRequestProxy > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ImageValue_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: css :: ImageValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: ImageValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: css :: ImageValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: ImageValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ImageTracker_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: ImageTracker > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: ImageTracker > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: ImageTracker > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: ImageTracker > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_DocGroup_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: DocGroup > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: DocGroup > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: DocGroup > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: DocGroup > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMArray_open0_imgIContainer_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMArray > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMArray ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMArray > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMArray ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleSides_DefaultDelete_open1_nsStyleSides_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleSides > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleSides > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleSides > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleSides > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleSides_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleSides_DefaultDelete_open1_nsStyleSides_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleSides > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleSides > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleSides > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleSides > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleSides_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_CachedBorderImageData_DefaultDelete_open1_CachedBorderImageData_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: CachedBorderImageData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: CachedBorderImageData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: CachedBorderImageData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: CachedBorderImageData > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_CachedBorderImageData_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleSides_DefaultDelete_open1_nsStyleSides_close1_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleSides > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleSides > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleSides > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleSides > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleSides_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsStyleAutoArray_open0_nsStyleImageLayers_Layer_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsStyleAutoArray < root :: nsStyleImageLayers_Layer > > ( ) , 104usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsStyleAutoArray < root :: nsStyleImageLayers_Layer > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsStyleAutoArray < root :: nsStyleImageLayers_Layer > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsStyleAutoArray < root :: nsStyleImageLayers_Layer > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nscolor_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nscolor > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nscolor > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nscolor > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nscolor > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsBorderColors_DefaultDelete_open1_nsBorderColors_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsBorderColors > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsBorderColors > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsBorderColors > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsBorderColors > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsBorderColors_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_pair_open1_nsString_nsString_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_pair_open0_nsString_nsString_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > ( ) , 32usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsStyleImageRequest_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsStyleImageRequest > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsStyleImageRequest > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsStyleImageRequest > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsStyleImageRequest > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsStyleQuoteValues_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsStyleQuoteValues > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsStyleQuoteValues > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsStyleQuoteValues > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsStyleQuoteValues > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsTArray_open1_nsString_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsTArray < ::nsstring::nsStringRepr > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsTArray < ::nsstring::nsStringRepr > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsTArray < ::nsstring::nsStringRepr > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsTArray < ::nsstring::nsStringRepr > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleCoord_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleCoord > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCoord > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleCoord > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCoord > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleCoord_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleCoord > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCoord > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleCoord > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCoord > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < ::nsstring::nsStringRepr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < ::nsstring::nsStringRepr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleGridTemplate_DefaultDelete_open1_nsStyleGridTemplate_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleGridTemplate_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleGridTemplate_DefaultDelete_open1_nsStyleGridTemplate_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleGridTemplate_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_GridTemplateAreasValue_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: css :: GridTemplateAreasValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: GridTemplateAreasValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: css :: GridTemplateAreasValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: GridTemplateAreasValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsCSSShadowArray_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsCSSShadowArray > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSShadowArray > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsCSSShadowArray > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSShadowArray > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_7 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_8 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleCoord_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleCoord > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCoord > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleCoord > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCoord > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleImage_DefaultDelete_open1_nsStyleImage_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleImage > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleImage > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleImage > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleImage > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleImage_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleImage_DefaultDelete_open1_nsStyleImage_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleImage > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleImage > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleImage > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleImage > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleImage_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_StyleBasicShape_DefaultDelete_open1_StyleBasicShape_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_StyleBasicShape_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_StyleBasicShape_DefaultDelete_open1_StyleBasicShape_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_StyleBasicShape_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_StyleBasicShape_DefaultDelete_open1_StyleBasicShape_close1_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: StyleBasicShape > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_StyleBasicShape_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleImage_DefaultDelete_open1_nsStyleImage_close1_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleImage > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleImage > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleImage > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleImage > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleImage_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_URLValue_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: css :: URLValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: URLValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: css :: URLValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: URLValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_9 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_Position_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: Position > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: Position > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: Position > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: Position > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsCSSValueSharedList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsCSSValueSharedList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSValueSharedList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsCSSValueSharedList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSValueSharedList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsStyleAutoArray_open0_StyleTransition_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsStyleAutoArray < root :: mozilla :: StyleTransition > > ( ) , 48usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsStyleAutoArray < root :: mozilla :: StyleTransition > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsStyleAutoArray < root :: mozilla :: StyleTransition > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsStyleAutoArray < root :: mozilla :: StyleTransition > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsStyleAutoArray_open0_StyleAnimation_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > > ( ) , 56usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsStyleAutoArray < root :: mozilla :: StyleAnimation > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleContentData_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleContentData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleContentData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleContentData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleContentData > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleCounterData_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleCounterData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCounterData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleCounterData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCounterData > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleCounterData_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleCounterData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCounterData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleCounterData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCounterData > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsCSSValueSharedList_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsCSSValueSharedList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSValueSharedList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsCSSValueSharedList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSValueSharedList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsStyleImageRequest_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsStyleImageRequest > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsStyleImageRequest > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsStyleImageRequest > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsStyleImageRequest > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsCursorImage_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsCursorImage > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCursorImage > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsCursorImage > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCursorImage > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_URLValue_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: css :: URLValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: URLValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: css :: URLValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: URLValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_URLValue_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: css :: URLValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: URLValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: css :: URLValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: URLValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_URLValue_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: css :: URLValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: URLValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: css :: URLValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: css :: URLValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleCoord_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleCoord > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCoord > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleCoord > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleCoord > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_10 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsStyleFilter_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsStyleFilter > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleFilter > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsStyleFilter > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsStyleFilter > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsCSSShadowArray_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsCSSShadowArray > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSShadowArray > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsCSSShadowArray > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSShadowArray > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_ptr_nsISupports_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < * mut root :: nsISupports > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < * mut root :: nsISupports > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < * mut root :: nsISupports > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < * mut root :: nsISupports > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsCSSValueList_DefaultDelete_open1_nsCSSValueList_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsCSSValueList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSValueList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsCSSValueList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSValueList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsCSSValueList_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsCSSValuePairList_DefaultDelete_open1_nsCSSValuePairList_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsCSSValuePairList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSValuePairList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsCSSValuePairList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsCSSValuePairList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsCSSValuePairList_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_RawServoAnimationValue_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: RawServoAnimationValue > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoAnimationValue > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: RawServoAnimationValue > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoAnimationValue > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_nsCString_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: nsCString > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCString > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: nsCString > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: nsCString > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_14 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_15 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_16 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_5 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_RawServoStyleSheetContents_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: RawServoStyleSheetContents > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoStyleSheetContents > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: RawServoStyleSheetContents > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoStyleSheetContents > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_URLExtraData_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: URLExtraData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: URLExtraData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: URLExtraData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: URLExtraData > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ServoCSSRuleList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: ServoCSSRuleList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: ServoCSSRuleList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: ServoCSSRuleList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: ServoCSSRuleList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_6 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_StyleSheet_close1_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: StyleSheet > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_SheetLoadData_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_5 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: StyleSheet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: StyleSheet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_Loader_Sheets_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsAutoPtr < root :: mozilla :: css :: Loader_Sheets > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: mozilla :: css :: Loader_Sheets > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsAutoPtr < root :: mozilla :: css :: Loader_Sheets > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: mozilla :: css :: Loader_Sheets > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_DocGroup_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: DocGroup > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: DocGroup > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: DocGroup > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: DocGroup > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIConsoleReportCollector_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIContent_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsXBLBinding_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsXBLBinding > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsXBLBinding > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsXBLBinding > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsXBLBinding > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_XBLChildrenElement_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_XBLChildrenElement_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_XBLChildrenElement_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: XBLChildrenElement > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAnonymousContentList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAnonymousContentList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAnonymousContentList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAnonymousContentList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAnonymousContentList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsICSSDeclaration_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_DeclarationBlock_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: DeclarationBlock > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: DeclarationBlock > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: DeclarationBlock > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: DeclarationBlock > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIControllers_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsLabelsNodeList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsLabelsNodeList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsLabelsNodeList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsLabelsNodeList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsLabelsNodeList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ShadowRoot_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: ShadowRoot > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsXBLBinding_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsXBLBinding > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsXBLBinding > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsXBLBinding > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsXBLBinding > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_CustomElementData_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: CustomElementData > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: CustomElementData > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: CustomElementData > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: CustomElementData > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsISupports_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsICSSDeclaration_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsDOMAttributeMap_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsDOMAttributeMap > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsDOMAttributeMap > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsDOMAttributeMap > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsDOMAttributeMap > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsContentList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsContentList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsContentList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsContentList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsContentList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsDOMTokenList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsDOMTokenList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsDOMTokenList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsDOMTokenList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsDOMTokenList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsDOMAttributeMap_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsDOMAttributeMap > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsDOMAttributeMap > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsDOMAttributeMap > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsDOMAttributeMap > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsDOMAttributeMap_Element_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsISupports_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIObserver_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsIWidget_LongTapInfo_DefaultDelete_open1_nsIWidget_LongTapInfo_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsIWidget_LongTapInfo > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsIWidget_LongTapInfo > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsIWidget_LongTapInfo > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsIWidget_LongTapInfo > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsIWidget_LongTapInfo_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsISMILAttr_DefaultDelete_open1_nsISMILAttr_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsISMILAttr > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsISMILAttr > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsISMILAttr > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsISMILAttr > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsISMILAttr_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_11 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsINode_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: nsINode > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsINode > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: nsINode > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsINode > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsINode_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsINode > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsINode > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsINode > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsINode > ) ) ) ; } # [ test ] fn __bindgen_test_layout_BaseTimeDuration_open0_StickyTimeDurationValueCalculator_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: BaseTimeDuration > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: BaseTimeDuration ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: BaseTimeDuration > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: BaseTimeDuration ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_RawServoDeclarationBlock_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: RawServoDeclarationBlock > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoDeclarationBlock > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: RawServoDeclarationBlock > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoDeclarationBlock > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_PropertyValuePair_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: PropertyValuePair > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: PropertyValuePair > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: PropertyValuePair > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: PropertyValuePair > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_ServoAttrSnapshot_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: ServoAttrSnapshot > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: ServoAttrSnapshot > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: ServoAttrSnapshot > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: ServoAttrSnapshot > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsRefPtrHashKey_open0_Element_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsRefPtrHashKey < root :: mozilla :: dom :: Element > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: mozilla :: dom :: Element > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsRefPtrHashKey < root :: mozilla :: dom :: Element > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: mozilla :: dom :: Element > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_ptr_nsIContent_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < * mut root :: nsIContent > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < * mut root :: nsIContent > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < * mut root :: nsIContent > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < * mut root :: nsIContent > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_Element_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: dom :: Element > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: Element > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: dom :: Element > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: dom :: Element > ) ) ) ; } # [ test ] fn __bindgen_test_layout_OwningNonNull_open0_EffectCompositor_AnimationStyleRuleProcessor_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: OwningNonNull < root :: mozilla :: EffectCompositor_AnimationStyleRuleProcessor > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: OwningNonNull < root :: mozilla :: EffectCompositor_AnimationStyleRuleProcessor > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: OwningNonNull < root :: mozilla :: EffectCompositor_AnimationStyleRuleProcessor > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: OwningNonNull < root :: mozilla :: EffectCompositor_AnimationStyleRuleProcessor > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleGridTemplate_DefaultDelete_open1_nsStyleGridTemplate_close1_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleGridTemplate_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_nsStyleGridTemplate_DefaultDelete_open1_nsStyleGridTemplate_close1_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: nsStyleGridTemplate > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_nsStyleGridTemplate_close0_instantiation_3 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_RawServoMediaList_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: RawServoMediaList > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoMediaList > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: RawServoMediaList > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoMediaList > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_RawServoStyleSet_DefaultDelete_open1_RawServoStyleSet_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: RawServoStyleSet > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: RawServoStyleSet > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: RawServoStyleSet > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: RawServoStyleSet > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_RawServoStyleSet_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_ServoStyleSheet_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: ServoStyleSheet > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: ServoStyleSheet > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: ServoStyleSheet > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: ServoStyleSheet > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ServoStyleContext_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: ServoStyleContext > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: ServoStyleContext > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: ServoStyleContext > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: ServoStyleContext > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_PostTraversalTask_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: mozilla :: PostTraversalTask > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: PostTraversalTask > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: mozilla :: PostTraversalTask > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: mozilla :: PostTraversalTask > ) ) ) ; } # [ test ] fn __bindgen_test_layout_UniquePtr_open0_ServoStyleRuleMap_DefaultDelete_open1_ServoStyleRuleMap_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: ServoStyleRuleMap > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: ServoStyleRuleMap > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: UniquePtr < root :: mozilla :: ServoStyleRuleMap > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: UniquePtr < root :: mozilla :: ServoStyleRuleMap > ) ) ) ; } # [ test ] fn __bindgen_test_layout_DefaultDelete_open0_ServoStyleRuleMap_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: mozilla :: DefaultDelete > ( ) , 1usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: mozilla :: DefaultDelete ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsBindingManager > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsBindingManager > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsBindingManager > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsBindingManager > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsXBLBinding_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: nsXBLBinding > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsXBLBinding > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: nsXBLBinding > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsXBLBinding > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsXBLBinding_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsXBLBinding > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsXBLBinding > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsXBLBinding > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsXBLBinding > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_nsTHashtable_open1_nsRefPtrHashKey_open2_nsIContent_close2_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < u64 > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( u64 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < u64 > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( u64 ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsIContent_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsRefPtrHashKey < root :: nsIContent > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsIContent > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsRefPtrHashKey < root :: nsIContent > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsIContent > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_nsBindingManager_WrapperHashtable_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsAutoPtr < root :: nsBindingManager_WrapperHashtable > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: nsBindingManager_WrapperHashtable > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsAutoPtr < root :: nsBindingManager_WrapperHashtable > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsAutoPtr < root :: nsBindingManager_WrapperHashtable > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_nsRefPtrHashtable_open1_nsURIHashKey_nsXBLDocumentInfo_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < u64 > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( u64 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < u64 > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( u64 ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsAutoPtr_open0_nsInterfaceHashtable_open1_nsURIHashKey_nsIStreamListener_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < u64 > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( u64 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < u64 > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( u64 ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsRunnableMethod_open1_nsBindingManager_void_close1_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < u64 > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( u64 ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < u64 > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( u64 ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_12 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ServoStyleContext_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: ServoStyleContext > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: ServoStyleContext > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: ServoStyleContext > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: ServoStyleContext > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_ServoStyleContext_close0_instantiation_2 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: mozilla :: ServoStyleContext > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: ServoStyleContext > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: mozilla :: ServoStyleContext > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: mozilla :: ServoStyleContext > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_RawServoDeclarationBlock_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: RawServoDeclarationBlock > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoDeclarationBlock > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: RawServoDeclarationBlock > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: RawServoDeclarationBlock > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_13 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsCSSFontFaceRule_close0_instantiation ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsCSSFontFaceRule > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSFontFaceRule > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsCSSFontFaceRule > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsCSSFontFaceRule > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_5 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 16usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsRefPtrHashKey < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsRefPtrHashKey < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation_4 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: nsAtom > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: nsAtom > > ) ) ) ; } # [ test ] fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_14 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: RefPtr < root :: nsAtom > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: RefPtr < root :: nsAtom > ) ) ) ; } # [ test ] fn __bindgen_test_layout_nsCOMPtr_open0_nsIRunnable_close0_instantiation_1 ( ) { assert_eq ! ( :: std :: mem :: size_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; assert_eq ! ( :: std :: mem :: align_of :: < root :: nsCOMPtr > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsCOMPtr ) ) ) ; } } + /// expectation, but it makes sense in this case) + #[repr(C)] + #[derive(Debug)] + pub struct nsStyleContext { + pub mPseudoTag: root::RefPtr<root::nsAtom>, + pub mBits: u64, + } + #[test] + fn bindgen_test_layout_nsStyleContext() { + assert_eq!( + ::std::mem::size_of::<nsStyleContext>(), + 16usize, + concat!("Size of: ", stringify!(nsStyleContext)) + ); + assert_eq!( + ::std::mem::align_of::<nsStyleContext>(), + 8usize, + concat!("Alignment of ", stringify!(nsStyleContext)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleContext>())).mPseudoTag as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContext), + "::", + stringify!(mPseudoTag) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsStyleContext>())).mBits as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsStyleContext), + "::", + stringify!(mBits) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSCounterStyleRule { + pub _base: root::mozilla::css::Rule, + pub mName: root::RefPtr<root::nsAtom>, + pub mValues: [root::nsCSSValue; 10usize], + pub mGeneration: u32, + } + pub type nsCSSCounterStyleRule_Getter = [u64; 2usize]; + extern "C" { + #[link_name = "\u{1}_ZN21nsCSSCounterStyleRule8kGettersE"] + pub static mut nsCSSCounterStyleRule_kGetters: [root::nsCSSCounterStyleRule_Getter; 0usize]; + } + #[test] + fn bindgen_test_layout_nsCSSCounterStyleRule() { + assert_eq!( + ::std::mem::size_of::<nsCSSCounterStyleRule>(), + 240usize, + concat!("Size of: ", stringify!(nsCSSCounterStyleRule)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSCounterStyleRule>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSCounterStyleRule)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSCounterStyleRule>())).mName as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsCSSCounterStyleRule), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSCounterStyleRule>())).mValues as *const _ as usize + }, + 72usize, + concat!( + "Offset of field: ", + stringify!(nsCSSCounterStyleRule), + "::", + stringify!(mValues) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSCounterStyleRule>())).mGeneration as *const _ as usize + }, + 232usize, + concat!( + "Offset of field: ", + stringify!(nsCSSCounterStyleRule), + "::", + stringify!(mGeneration) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsICSSDeclaration { + pub _base: root::nsISupports, + pub _base_1: root::nsWrapperCache, + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsICSSDeclaration_COMTypeInfo { + pub _address: u8, + } + #[test] + fn bindgen_test_layout_nsICSSDeclaration() { + assert_eq!( + ::std::mem::size_of::<nsICSSDeclaration>(), + 32usize, + concat!("Size of: ", stringify!(nsICSSDeclaration)) + ); + assert_eq!( + ::std::mem::align_of::<nsICSSDeclaration>(), + 8usize, + concat!("Alignment of ", stringify!(nsICSSDeclaration)) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSFontFaceStyleDecl { + pub _base: root::nsICSSDeclaration, + pub mDescriptors: root::mozilla::CSSFontFaceDescriptors, + } + #[test] + fn bindgen_test_layout_nsCSSFontFaceStyleDecl() { + assert_eq!( + ::std::mem::size_of::<nsCSSFontFaceStyleDecl>(), + 176usize, + concat!("Size of: ", stringify!(nsCSSFontFaceStyleDecl)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSFontFaceStyleDecl>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSFontFaceStyleDecl)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsCSSFontFaceStyleDecl>())).mDescriptors as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsCSSFontFaceStyleDecl), + "::", + stringify!(mDescriptors) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsCSSFontFaceRule { + pub _base: root::mozilla::css::Rule, + pub mDecl: root::nsCSSFontFaceStyleDecl, + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsCSSFontFaceRule_cycleCollection { + pub _base: root::mozilla::css::Rule_cycleCollection, + } + #[test] + fn bindgen_test_layout_nsCSSFontFaceRule_cycleCollection() { + assert_eq!( + ::std::mem::size_of::<nsCSSFontFaceRule_cycleCollection>(), + 16usize, + concat!("Size of: ", stringify!(nsCSSFontFaceRule_cycleCollection)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSFontFaceRule_cycleCollection>(), + 8usize, + concat!( + "Alignment of ", + stringify!(nsCSSFontFaceRule_cycleCollection) + ) + ); + } + impl Clone for nsCSSFontFaceRule_cycleCollection { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN17nsCSSFontFaceRule21_cycleCollectorGlobalE"] + pub static mut nsCSSFontFaceRule__cycleCollectorGlobal: + root::nsCSSFontFaceRule_cycleCollection; + } + #[test] + fn bindgen_test_layout_nsCSSFontFaceRule() { + assert_eq!( + ::std::mem::size_of::<nsCSSFontFaceRule>(), + 240usize, + concat!("Size of: ", stringify!(nsCSSFontFaceRule)) + ); + assert_eq!( + ::std::mem::align_of::<nsCSSFontFaceRule>(), + 8usize, + concat!("Alignment of ", stringify!(nsCSSFontFaceRule)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsCSSFontFaceRule>())).mDecl as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(nsCSSFontFaceRule), + "::", + stringify!(mDecl) + ) + ); + } + #[repr(C)] + #[derive(Debug)] + pub struct nsFontFaceRuleContainer { + pub mRule: root::RefPtr<root::nsCSSFontFaceRule>, + pub mSheetType: root::mozilla::SheetType, + } + #[test] + fn bindgen_test_layout_nsFontFaceRuleContainer() { + assert_eq!( + ::std::mem::size_of::<nsFontFaceRuleContainer>(), + 16usize, + concat!("Size of: ", stringify!(nsFontFaceRuleContainer)) + ); + assert_eq!( + ::std::mem::align_of::<nsFontFaceRuleContainer>(), + 8usize, + concat!("Alignment of ", stringify!(nsFontFaceRuleContainer)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFontFaceRuleContainer>())).mRule as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsFontFaceRuleContainer), + "::", + stringify!(mRule) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsFontFaceRuleContainer>())).mSheetType as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsFontFaceRuleContainer), + "::", + stringify!(mSheetType) + ) + ); + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsHtml5StringParser { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIConsoleService { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIFragmentContentSink { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIStringBundle { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsIBidiKeyboard { + _unused: [u8; 0], + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct EventNameMapping { + pub mAtom: *mut root::nsAtom, + pub mType: i32, + pub mMessage: root::mozilla::EventMessage, + pub mEventClassID: root::mozilla::EventClassID, + pub mMaybeSpecialSVGorSMILEvent: bool, + } + #[test] + fn bindgen_test_layout_EventNameMapping() { + assert_eq!( + ::std::mem::size_of::<EventNameMapping>(), + 16usize, + concat!("Size of: ", stringify!(EventNameMapping)) + ); + assert_eq!( + ::std::mem::align_of::<EventNameMapping>(), + 8usize, + concat!("Alignment of ", stringify!(EventNameMapping)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<EventNameMapping>())).mAtom as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(EventNameMapping), + "::", + stringify!(mAtom) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<EventNameMapping>())).mType as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(EventNameMapping), + "::", + stringify!(mType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<EventNameMapping>())).mMessage as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(EventNameMapping), + "::", + stringify!(mMessage) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EventNameMapping>())).mEventClassID as *const _ as usize + }, + 14usize, + concat!( + "Offset of field: ", + stringify!(EventNameMapping), + "::", + stringify!(mEventClassID) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<EventNameMapping>())).mMaybeSpecialSVGorSMILEvent as *const _ + as usize + }, + 15usize, + concat!( + "Offset of field: ", + stringify!(EventNameMapping), + "::", + stringify!(mMaybeSpecialSVGorSMILEvent) + ) + ); + } + impl Clone for EventNameMapping { + fn clone(&self) -> Self { + *self + } + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils10sXPConnectE"] + pub static mut nsContentUtils_sXPConnect: *mut root::nsIXPConnect; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils16sSecurityManagerE"] + pub static mut nsContentUtils_sSecurityManager: *mut root::nsIScriptSecurityManager; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils16sSystemPrincipalE"] + pub static mut nsContentUtils_sSystemPrincipal: *mut root::nsIPrincipal; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils21sNullSubjectPrincipalE"] + pub static mut nsContentUtils_sNullSubjectPrincipal: *mut root::nsIPrincipal; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils17sNameSpaceManagerE"] + pub static mut nsContentUtils_sNameSpaceManager: *mut root::nsNameSpaceManager; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils10sIOServiceE"] + pub static mut nsContentUtils_sIOService: *mut root::nsIIOService; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils14sUUIDGeneratorE"] + pub static mut nsContentUtils_sUUIDGenerator: *mut root::nsIUUIDGenerator; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils15sConsoleServiceE"] + pub static mut nsContentUtils_sConsoleService: *mut root::nsIConsoleService; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils15sAtomEventTableE"] + pub static mut nsContentUtils_sAtomEventTable: *mut u8; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils17sStringEventTableE"] + pub static mut nsContentUtils_sStringEventTable: *mut u8; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils18sUserDefinedEventsE"] + pub static mut nsContentUtils_sUserDefinedEvents: + *mut root::nsTArray<root::RefPtr<root::nsAtom>>; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils20sStringBundleServiceE"] + pub static mut nsContentUtils_sStringBundleService: *mut root::nsIStringBundleService; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils14sStringBundlesE"] + pub static mut nsContentUtils_sStringBundles: [*mut root::nsIStringBundle; 14usize]; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils21sContentPolicyServiceE"] + pub static mut nsContentUtils_sContentPolicyService: *mut root::nsIContentPolicy; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils24sTriedToGetContentPolicyE"] + pub static mut nsContentUtils_sTriedToGetContentPolicy: bool; + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_LineBreaker_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::intl::LineBreaker>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::intl::LineBreaker>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::intl::LineBreaker>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::intl::LineBreaker>) + ) + ); + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils12sLineBreakerE"] + pub static mut nsContentUtils_sLineBreaker: root::RefPtr<root::mozilla::intl::LineBreaker>; + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_WordBreaker_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::intl::WordBreaker>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::intl::WordBreaker>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::intl::WordBreaker>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::intl::WordBreaker>) + ) + ); + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils12sWordBreakerE"] + pub static mut nsContentUtils_sWordBreaker: root::RefPtr<root::mozilla::intl::WordBreaker>; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils13sBidiKeyboardE"] + pub static mut nsContentUtils_sBidiKeyboard: *mut root::nsIBidiKeyboard; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils12sInitializedE"] + pub static mut nsContentUtils_sInitialized: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils19sScriptBlockerCountE"] + pub static mut nsContentUtils_sScriptBlockerCount: u32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils28sDOMNodeRemovedSuppressCountE"] + pub static mut nsContentUtils_sDOMNodeRemovedSuppressCount: u32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils21sBlockedScriptRunnersE"] + pub static mut nsContentUtils_sBlockedScriptRunners: *mut u8; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils27sRunnersCountAtFirstBlockerE"] + pub static mut nsContentUtils_sRunnersCountAtFirstBlocker: u32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils40sScriptBlockerCountWhereRunnersPreventedE"] + pub static mut nsContentUtils_sScriptBlockerCountWhereRunnersPrevented: u32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils18sSameOriginCheckerE"] + pub static mut nsContentUtils_sSameOriginChecker: *mut root::nsIInterfaceRequestor; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils24sIsHandlingKeyBoardEventE"] + pub static mut nsContentUtils_sIsHandlingKeyBoardEvent: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils21sAllowXULXBL_for_fileE"] + pub static mut nsContentUtils_sAllowXULXBL_for_file: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils23sIsFullScreenApiEnabledE"] + pub static mut nsContentUtils_sIsFullScreenApiEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils33sIsUnprefixedFullscreenApiEnabledE"] + pub static mut nsContentUtils_sIsUnprefixedFullscreenApiEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils22sTrustedFullScreenOnlyE"] + pub static mut nsContentUtils_sTrustedFullScreenOnly: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils17sIsCutCopyAllowedE"] + pub static mut nsContentUtils_sIsCutCopyAllowed: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils21sHandlingInputTimeoutE"] + pub static mut nsContentUtils_sHandlingInputTimeout: u32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils27sIsPerformanceTimingEnabledE"] + pub static mut nsContentUtils_sIsPerformanceTimingEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils24sIsResourceTimingEnabledE"] + pub static mut nsContentUtils_sIsResourceTimingEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils37sIsPerformanceNavigationTimingEnabledE"] + pub static mut nsContentUtils_sIsPerformanceNavigationTimingEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils25sIsFrameTimingPrefEnabledE"] + pub static mut nsContentUtils_sIsFrameTimingPrefEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils34sIsFormAutofillAutocompleteEnabledE"] + pub static mut nsContentUtils_sIsFormAutofillAutocompleteEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils19sIsShadowDOMEnabledE"] + pub static mut nsContentUtils_sIsShadowDOMEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils24sIsCustomElementsEnabledE"] + pub static mut nsContentUtils_sIsCustomElementsEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils35sSendPerformanceTimingNotificationsE"] + pub static mut nsContentUtils_sSendPerformanceTimingNotifications: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils18sUseActivityCursorE"] + pub static mut nsContentUtils_sUseActivityCursor: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils25sAnimationsAPICoreEnabledE"] + pub static mut nsContentUtils_sAnimationsAPICoreEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils35sAnimationsAPIElementAnimateEnabledE"] + pub static mut nsContentUtils_sAnimationsAPIElementAnimateEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils34sAnimationsAPIPendingMemberEnabledE"] + pub static mut nsContentUtils_sAnimationsAPIPendingMemberEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils19sGetBoxQuadsEnabledE"] + pub static mut nsContentUtils_sGetBoxQuadsEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils30sSkipCursorMoveForSameValueSetE"] + pub static mut nsContentUtils_sSkipCursorMoveForSameValueSet: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils27sRequestIdleCallbackEnabledE"] + pub static mut nsContentUtils_sRequestIdleCallbackEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils21sLowerNetworkPriorityE"] + pub static mut nsContentUtils_sLowerNetworkPriority: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils15sTailingEnabledE"] + pub static mut nsContentUtils_sTailingEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils28sShowInputPlaceholderOnFocusE"] + pub static mut nsContentUtils_sShowInputPlaceholderOnFocus: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils17sAutoFocusEnabledE"] + pub static mut nsContentUtils_sAutoFocusEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils23sBypassCSSOMOriginCheckE"] + pub static mut nsContentUtils_sBypassCSSOMOriginCheck: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils21sIsScopedStyleEnabledE"] + pub static mut nsContentUtils_sIsScopedStyleEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils23sIsBytecodeCacheEnabledE"] + pub static mut nsContentUtils_sIsBytecodeCacheEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils22sBytecodeCacheStrategyE"] + pub static mut nsContentUtils_sBytecodeCacheStrategy: i32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils22sCookiesLifetimePolicyE"] + pub static mut nsContentUtils_sCookiesLifetimePolicy: u32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils16sCookiesBehaviorE"] + pub static mut nsContentUtils_sCookiesBehavior: u32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils20sShortcutsCustomizedE"] + pub static mut nsContentUtils_sShortcutsCustomized: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils21sPrivacyMaxInnerWidthE"] + pub static mut nsContentUtils_sPrivacyMaxInnerWidth: i32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils22sPrivacyMaxInnerHeightE"] + pub static mut nsContentUtils_sPrivacyMaxInnerHeight: i32; + } + #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct nsContentUtils_UserInteractionObserver { + _unused: [u8; 0], + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils24sUserInteractionObserverE"] + pub static mut nsContentUtils_sUserInteractionObserver: + *mut root::nsContentUtils_UserInteractionObserver; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils19sHTMLFragmentParserE"] + pub static mut nsContentUtils_sHTMLFragmentParser: *mut root::nsHtml5StringParser; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils18sXMLFragmentParserE"] + pub static mut nsContentUtils_sXMLFragmentParser: *mut root::nsIParser; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils16sXMLFragmentSinkE"] + pub static mut nsContentUtils_sXMLFragmentSink: *mut root::nsIFragmentContentSink; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils22sFragmentParsingActiveE"] + pub static mut nsContentUtils_sFragmentParsingActive: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils10sShiftTextE"] + pub static mut nsContentUtils_sShiftText: *mut ::nsstring::nsStringRepr; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils12sControlTextE"] + pub static mut nsContentUtils_sControlText: *mut ::nsstring::nsStringRepr; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils9sMetaTextE"] + pub static mut nsContentUtils_sMetaText: *mut ::nsstring::nsStringRepr; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils7sOSTextE"] + pub static mut nsContentUtils_sOSText: *mut ::nsstring::nsStringRepr; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils8sAltTextE"] + pub static mut nsContentUtils_sAltText: *mut ::nsstring::nsStringRepr; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils18sModifierSeparatorE"] + pub static mut nsContentUtils_sModifierSeparator: *mut ::nsstring::nsStringRepr; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils19sJSBytecodeMimeTypeE"] + pub static mut nsContentUtils_sJSBytecodeMimeType: *mut root::nsCString; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils18sDoNotTrackEnabledE"] + pub static mut nsContentUtils_sDoNotTrackEnabled: bool; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils11sDOMDumpLogE"] + pub static mut nsContentUtils_sDOMDumpLog: root::mozilla::LazyLogModule; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils18sPopupControlStateE"] + pub static mut nsContentUtils_sPopupControlState: root::PopupControlState; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils24sInnerOrOuterWindowCountE"] + pub static mut nsContentUtils_sInnerOrOuterWindowCount: i32; + } + extern "C" { + #[link_name = "\u{1}_ZN14nsContentUtils32sInnerOrOuterWindowSerialCounterE"] + pub static mut nsContentUtils_sInnerOrOuterWindowSerialCounter: u32; + } + pub type nsMediaFeatureValueGetter = ::std::option::Option< + unsafe extern "C" fn( + aDocument: *mut root::nsIDocument, + aFeature: *const root::nsMediaFeature, + aResult: *mut root::nsCSSValue, + ), + >; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsMediaFeature { + pub mName: *mut *mut root::nsStaticAtom, + pub mRangeType: root::nsMediaFeature_RangeType, + pub mValueType: root::nsMediaFeature_ValueType, + pub mReqFlags: u8, + pub mData: root::nsMediaFeature__bindgen_ty_1, + pub mGetter: root::nsMediaFeatureValueGetter, + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsMediaFeature_RangeType { + eMinMaxAllowed = 0, + eMinMaxNotAllowed = 1, + } + #[repr(u32)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsMediaFeature_ValueType { + eLength = 0, + eInteger = 1, + eFloat = 2, + eBoolInteger = 3, + eIntRatio = 4, + eResolution = 5, + eEnumerated = 6, + eIdent = 7, + } + pub const nsMediaFeature_RequirementFlags_eNoRequirements: + root::nsMediaFeature_RequirementFlags = 0; + pub const nsMediaFeature_RequirementFlags_eHasWebkitPrefix: + root::nsMediaFeature_RequirementFlags = 1; + pub const nsMediaFeature_RequirementFlags_eWebkitDevicePixelRatioPrefEnabled: + root::nsMediaFeature_RequirementFlags = 2; + pub const nsMediaFeature_RequirementFlags_eUserAgentAndChromeOnly: + root::nsMediaFeature_RequirementFlags = 4; + pub type nsMediaFeature_RequirementFlags = u8; + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsMediaFeature__bindgen_ty_1 { + pub mInitializer_: root::__BindgenUnionField<*const ::std::os::raw::c_void>, + pub mKeywordTable: root::__BindgenUnionField<*const root::nsCSSProps_KTableEntry>, + pub mMetric: root::__BindgenUnionField<*const *const root::nsAtom>, + pub bindgen_union_field: u64, + } + #[test] + fn bindgen_test_layout_nsMediaFeature__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<nsMediaFeature__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(nsMediaFeature__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<nsMediaFeature__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(nsMediaFeature__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsMediaFeature__bindgen_ty_1>())).mInitializer_ as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature__bindgen_ty_1), + "::", + stringify!(mInitializer_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsMediaFeature__bindgen_ty_1>())).mKeywordTable as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature__bindgen_ty_1), + "::", + stringify!(mKeywordTable) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<nsMediaFeature__bindgen_ty_1>())).mMetric as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature__bindgen_ty_1), + "::", + stringify!(mMetric) + ) + ); + } + impl Clone for nsMediaFeature__bindgen_ty_1 { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn bindgen_test_layout_nsMediaFeature() { + assert_eq!( + ::std::mem::size_of::<nsMediaFeature>(), + 40usize, + concat!("Size of: ", stringify!(nsMediaFeature)) + ); + assert_eq!( + ::std::mem::align_of::<nsMediaFeature>(), + 8usize, + concat!("Alignment of ", stringify!(nsMediaFeature)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMediaFeature>())).mName as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature), + "::", + stringify!(mName) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMediaFeature>())).mRangeType as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature), + "::", + stringify!(mRangeType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMediaFeature>())).mValueType as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature), + "::", + stringify!(mValueType) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMediaFeature>())).mReqFlags as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature), + "::", + stringify!(mReqFlags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMediaFeature>())).mData as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature), + "::", + stringify!(mData) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<nsMediaFeature>())).mGetter as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(nsMediaFeature), + "::", + stringify!(mGetter) + ) + ); + } + impl Clone for nsMediaFeature { + fn clone(&self) -> Self { + *self + } + } + #[repr(C)] + #[derive(Debug, Copy)] + pub struct nsMediaFeatures { + pub _address: u8, + } + extern "C" { + #[link_name = "\u{1}_ZN15nsMediaFeatures8featuresE"] + pub static mut nsMediaFeatures_features: [root::nsMediaFeature; 0usize]; + } + #[test] + fn bindgen_test_layout_nsMediaFeatures() { + assert_eq!( + ::std::mem::size_of::<nsMediaFeatures>(), + 1usize, + concat!("Size of: ", stringify!(nsMediaFeatures)) + ); + assert_eq!( + ::std::mem::align_of::<nsMediaFeatures>(), + 1usize, + concat!("Alignment of ", stringify!(nsMediaFeatures)) + ); + } + impl Clone for nsMediaFeatures { + fn clone(&self) -> Self { + *self + } + } + #[test] + fn __bindgen_test_layout_nsTSubstring_open0_char16_t_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTSubstring<u16>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTSubstring<u16>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTSubstring<u16>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTSubstring<u16>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTString_open0_char16_t_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<::nsstring::nsStringRepr>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(::nsstring::nsStringRepr) + ) + ); + assert_eq!( + ::std::mem::align_of::<::nsstring::nsStringRepr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(::nsstring::nsStringRepr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTSubstring_open0_char_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTSubstring<::std::os::raw::c_char>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTSubstring<::std::os::raw::c_char>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTSubstring<::std::os::raw::c_char>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTSubstring<::std::os::raw::c_char>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTString_open0_char_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTString<::std::os::raw::c_char>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTString<::std::os::raw::c_char>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTString<::std::os::raw::c_char>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTString<::std::os::raw::c_char>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsISupports_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_CSSVariableValues_Variable_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::CSSVariableValues_Variable>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::CSSVariableValues_Variable>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::CSSVariableValues_Variable>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::CSSVariableValues_Variable>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_FontFamilyName_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::FontFamilyName>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::FontFamilyName>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::FontFamilyName>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::FontFamilyName>) + ) + ); + } + #[test] + fn __bindgen_test_layout_NotNull_open0_RefPtr_open1_SharedFontList_close1_close0_instantiation() + { + assert_eq!( + ::std::mem::size_of::< + root::mozilla::NotNull<root::RefPtr<root::mozilla::SharedFontList>>, + >(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::NotNull<root::RefPtr<root::mozilla::SharedFontList>>) + ) + ); + assert_eq!( + ::std::mem::align_of::< + root::mozilla::NotNull<root::RefPtr<root::mozilla::SharedFontList>>, + >(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::NotNull<root::RefPtr<root::mozilla::SharedFontList>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_SharedFontList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::SharedFontList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::SharedFontList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::SharedFontList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::SharedFontList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_uint32_t_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<u32>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<u32>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<u32>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<u32>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_gfxFontFeatureValueSet_ValueList_close0_instantiation() + { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::gfxFontFeatureValueSet_ValueList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::gfxFontFeatureValueSet_ValueList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::gfxFontFeatureValueSet_ValueList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::gfxFontFeatureValueSet_ValueList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_uint32_t_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<u32>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<u32>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<u32>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<u32>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_gfxAlternateValue_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::gfxAlternateValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::gfxAlternateValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::gfxAlternateValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::gfxAlternateValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_gfxFontFeatureValueSet_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::gfxFontFeatureValueSet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::gfxFontFeatureValueSet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::gfxFontFeatureValueSet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::gfxFontFeatureValueSet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_gfxFontFeature_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::gfxFontFeature>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::gfxFontFeature>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::gfxFontFeature>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::gfxFontFeature>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_gfxFontVariation_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::gfxFontVariation>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::gfxFontVariation>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::gfxFontVariation>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::gfxFontVariation>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_BaseTimeDuration_open0_TimeDurationValueCalculator_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::BaseTimeDuration>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::BaseTimeDuration) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::BaseTimeDuration>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::BaseTimeDuration) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_DeletePolicy_open1_JSErrorNotes_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::JSErrorNotes>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::JSErrorNotes>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_iterator_open0_input_iterator_tag_UniquePtr_open1_JSErrorNotes_Note_DeletePolicy_open2_JSErrorNotes_Note_close2_close1_long_ptr_UniquePtr_ref_UniquePtr_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::std::iterator>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::std::iterator) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::std::iterator>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::std::iterator) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_2( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_3( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_4( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_Note_DeletePolicy_open1_JSErrorNotes_Note_close1_close0_instantiation_5( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::JSErrorNotes_Note>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes_Note>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_Note_close0_instantiation_5() { + assert_eq!( + ::std::mem::size_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_JSErrorNotes_DeletePolicy_open1_JSErrorNotes_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::JSErrorNotes>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::JSErrorNotes>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::JSErrorNotes>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DeletePolicy_open0_JSErrorNotes_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::JS::DeletePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::JS::DeletePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_MediaList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::MediaList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::MediaList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::MediaList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::MediaList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_StyleSetHandle_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::StyleSetHandle>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::StyleSetHandle>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::StyleSetHandle>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::StyleSetHandle>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_ProfilerBacktrace_ProfilerBacktraceDestructor_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::ProfilerBacktrace>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::ProfilerBacktrace>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::ProfilerBacktrace>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::ProfilerBacktrace>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsNodeInfoManager_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsNodeInfoManager>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsNodeInfoManager>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsNodeInfoManager>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsNodeInfoManager>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsBindingManager>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsBindingManager>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsBindingManager>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsBindingManager>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAttrChildContentList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAttrChildContentList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAttrChildContentList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAttrChildContentList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAttrChildContentList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_LinkedList_open1_nsRange_close1_DefaultDelete_open1_LinkedList_open2_nsRange_close2_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::LinkedList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::LinkedList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::LinkedList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::LinkedList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_LinkedList_open1_nsRange_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_LinkedList_open1_nsRange_close1_DefaultDelete_open1_LinkedList_open2_nsRange_close2_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::LinkedList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::LinkedList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::LinkedList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::LinkedList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_LinkedList_open1_nsRange_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_NodeInfo_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::NodeInfo>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::NodeInfo>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::NodeInfo>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::NodeInfo>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIContent_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ShadowRoot_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::ShadowRoot>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::ShadowRoot>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::ShadowRoot>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::ShadowRoot>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_HTMLSlotElement_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::HTMLSlotElement>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::HTMLSlotElement>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::HTMLSlotElement>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::HTMLSlotElement>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsIContent_nsExtendedContentSlots_DefaultDelete_open1_nsIContent_nsExtendedContentSlots_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::< + root::mozilla::UniquePtr<root::nsIContent_nsExtendedContentSlots>, + >(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsIContent_nsExtendedContentSlots>) + ) + ); + assert_eq!( + ::std::mem::align_of::< + root::mozilla::UniquePtr<root::nsIContent_nsExtendedContentSlots>, + >(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsIContent_nsExtendedContentSlots>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsIContent_nsExtendedContentSlots_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIWeakReference_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_ptr_void_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<*mut ::std::os::raw::c_void>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<*mut ::std::os::raw::c_void>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<*mut ::std::os::raw::c_void>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<*mut ::std::os::raw::c_void>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsPtrHashKey_open0_void_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsPtrHashKey<::std::os::raw::c_void>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsPtrHashKey<::std::os::raw::c_void>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsPtrHashKey<::std::os::raw::c_void>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsPtrHashKey<::std::os::raw::c_void>) + ) + ); + } + #[test] + fn __bindgen_test_layout_StaticRefPtr_open0_nsIContent_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::StaticRefPtr<root::nsIContent>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::nsIContent>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::StaticRefPtr<root::nsIContent>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::StaticRefPtr<root::nsIContent>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsPresContext_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsPresContext>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsPresContext>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsPresContext>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsPresContext>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsFrameSelection_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsFrameSelection>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsFrameSelection>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsFrameSelection>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsFrameSelection>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsITimer_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsPtrHashKey_open0_WeakFrame_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsPtrHashKey<root::WeakFrame>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsPtrHashKey<root::WeakFrame>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsPtrHashKey<root::WeakFrame>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsPtrHashKey<root::WeakFrame>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_IPCClientInfo_DefaultDelete_open1_IPCClientInfo_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::dom::IPCClientInfo>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::dom::IPCClientInfo>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::dom::IPCClientInfo>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::dom::IPCClientInfo>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_IPCClientInfo_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_IPCServiceWorkerDescriptor_DefaultDelete_open1_IPCServiceWorkerDescriptor_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::< + root::mozilla::UniquePtr<root::mozilla::dom::IPCServiceWorkerDescriptor>, + >(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr< + root::mozilla::dom::IPCServiceWorkerDescriptor, + >) + ) + ); + assert_eq!( + ::std::mem::align_of::< + root::mozilla::UniquePtr<root::mozilla::dom::IPCServiceWorkerDescriptor>, + >(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr< + root::mozilla::dom::IPCServiceWorkerDescriptor, + >) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_IPCServiceWorkerDescriptor_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsCString_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsCString>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsCString>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsCString>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsCString>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_EventTarget_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_EventTarget_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_Performance_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::Performance>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::Performance>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::Performance>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::Performance>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_TimeoutManager_DefaultDelete_open1_TimeoutManager_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::dom::TimeoutManager>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::dom::TimeoutManager>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::dom::TimeoutManager>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::dom::TimeoutManager>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_TimeoutManager_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsPIDOMWindowOuter_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIContent_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_ptr_AudioContext_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<*mut root::mozilla::dom::AudioContext>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<*mut root::mozilla::dom::AudioContext>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<*mut root::mozilla::dom::AudioContext>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<*mut root::mozilla::dom::AudioContext>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_TabGroup_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::TabGroup>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::TabGroup>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::TabGroup>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::TabGroup>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsPIDOMWindowInner_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_EventTarget_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_EventTarget_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_Element_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocShell_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_TabGroup_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::TabGroup>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::TabGroup>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::TabGroup>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::TabGroup>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsPIDOMWindowOuter_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsBaseContentList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsBaseContentList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsBaseContentList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsBaseContentList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsBaseContentList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_nsTHashtable_open1_nsIdentifierMapEntry_ChangeCallbackEntry_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<u64>(), + 8usize, + concat!("Size of template specialization: ", stringify!(u64)) + ); + assert_eq!( + ::std::mem::align_of::<u64>(), + 8usize, + concat!("Alignment of template specialization: ", stringify!(u64)) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsIdentifierMapEntry_Element_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsIdentifierMapEntry_Element>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsIdentifierMapEntry_Element>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsIdentifierMapEntry_Element>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsIdentifierMapEntry_Element>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_StyleSheet_close1_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_StyleSheetList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::StyleSheetList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::StyleSheetList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::StyleSheetList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::StyleSheetList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_RawServoAnimationValue_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::RawServoAnimationValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::RawServoAnimationValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::RawServoAnimationValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::RawServoAnimationValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_PropertyValuePair_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::PropertyValuePair>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::PropertyValuePair>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::PropertyValuePair>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::PropertyValuePair>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsStyleAutoArray_open0_StyleAnimation_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsStyleAutoArray<root::mozilla::StyleAnimation>>(), + 56usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsStyleAutoArray<root::mozilla::StyleAnimation>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsStyleAutoArray<root::mozilla::StyleAnimation>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsStyleAutoArray<root::mozilla::StyleAnimation>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_RawServoSelectorList_DefaultDelete_open1_RawServoSelectorList_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::RawServoSelectorList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::RawServoSelectorList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::RawServoSelectorList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::RawServoSelectorList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_RawServoSelectorList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsCSSSelectorList_DefaultDelete_open1_nsCSSSelectorList_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsCSSSelectorList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSSelectorList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsCSSSelectorList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSSelectorList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsCSSSelectorList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsCSSSelectorList_DefaultDelete_open1_nsCSSSelectorList_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsCSSSelectorList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSSelectorList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsCSSSelectorList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSSelectorList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsCSSSelectorList_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_RawServoSelectorList_DefaultDelete_open1_RawServoSelectorList_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::RawServoSelectorList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::RawServoSelectorList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::RawServoSelectorList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::RawServoSelectorList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_RawServoSelectorList_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIObserver_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsIDocument_SelectorCache_DefaultDelete_open1_nsIDocument_SelectorCache_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsIDocument_SelectorCache_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsIDocument_SelectorCache_DefaultDelete_open1_nsIDocument_SelectorCache_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsIDocument_SelectorCache>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsIDocument_SelectorCache_close0_instantiation_1() + { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_5() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_6() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_7() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_8() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_URLExtraData_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::URLExtraData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::URLExtraData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::URLExtraData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::URLExtraData>) + ) + ); + } + #[test] + fn __bindgen_test_layout_NotNull_open0_ptr_const_nsIDocument__Encoding_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::NotNull<*const root::nsIDocument_Encoding>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::NotNull<*const root::nsIDocument_Encoding>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::NotNull<*const root::nsIDocument_Encoding>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::NotNull<*const root::nsIDocument_Encoding>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_Loader_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::css::Loader>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::Loader>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::css::Loader>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::Loader>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ImageLoader_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::css::ImageLoader>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::ImageLoader>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::css::ImageLoader>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::ImageLoader>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsHTMLStyleSheet_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsHTMLStyleSheet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsHTMLStyleSheet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsHTMLStyleSheet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsHTMLStyleSheet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsHTMLCSSStyleSheet_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsHTMLCSSStyleSheet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsHTMLCSSStyleSheet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsHTMLCSSStyleSheet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsHTMLCSSStyleSheet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ImageTracker_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::ImageTracker>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::ImageTracker>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::ImageTracker>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::ImageTracker>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_nsTHashtable_open1_nsPtrHashKey_open2_nsISupports_close2_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<u64>(), + 8usize, + concat!("Size of template specialization: ", stringify!(u64)) + ); + assert_eq!( + ::std::mem::align_of::<u64>(), + 8usize, + concat!("Alignment of template specialization: ", stringify!(u64)) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_Link_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsSMILAnimationController_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsSMILAnimationController>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsSMILAnimationController>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsSMILAnimationController>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsSMILAnimationController>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsAutoPtr_open1_nsPropertyTable_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsAutoPtr<root::nsPropertyTable>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsAutoPtr<root::nsPropertyTable>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsAutoPtr<root::nsPropertyTable>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsAutoPtr<root::nsPropertyTable>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIHTMLCollection_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_FontFaceSet_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::FontFaceSet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::FontFaceSet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::FontFaceSet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::FontFaceSet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIScriptGlobalObject_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIChannel_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsISupports_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIChannel_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMArray_open0_nsINode_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMArray>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMArray) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMArray>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMArray) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_5() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsWeakPtr_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsWeakPtr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsWeakPtr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsWeakPtr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsWeakPtr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocumentEncoder_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsIDocument_FrameRequest_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsIDocument_FrameRequest>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsIDocument_FrameRequest>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsIDocument_FrameRequest>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsIDocument_FrameRequest>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIStructuredCloneContainer_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIVariant_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_XPathEvaluator_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::XPathEvaluator>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::XPathEvaluator>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::XPathEvaluator>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::XPathEvaluator>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_AnonymousContent_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::< + root::nsTArray<root::RefPtr<root::mozilla::dom::AnonymousContent>>, + >(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::dom::AnonymousContent>>) + ) + ); + assert_eq!( + ::std::mem::align_of::< + root::nsTArray<root::RefPtr<root::mozilla::dom::AnonymousContent>>, + >(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::dom::AnonymousContent>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_LinkedList_open0_MediaQueryList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::LinkedList>(), + 24usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::LinkedList) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::LinkedList>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::LinkedList) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_DocGroup_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::DocGroup>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::DocGroup>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::DocGroup>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::DocGroup>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsCOMPtr_open1_nsIRunnable_close1_close0_instantiation() + { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsCOMPtr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsCOMPtr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsCOMPtr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsCOMPtr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIRunnable_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsCOMPtr_open1_nsIPrincipal_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsCOMPtr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsCOMPtr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsCOMPtr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsCOMPtr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_uint64_t_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<u64>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<u64>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<u64>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<u64>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsINode_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_LangGroupFontPrefs_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsAutoPtr<root::mozilla::LangGroupFontPrefs>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsAutoPtr<root::mozilla::LangGroupFontPrefs>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsAutoPtr<root::mozilla::LangGroupFontPrefs>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsAutoPtr<root::mozilla::LangGroupFontPrefs>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIDocument_close0_instantiation_6() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsDeviceContext_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsDeviceContext>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsDeviceContext>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsDeviceContext>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsDeviceContext>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_EventStateManager_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::EventStateManager>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::EventStateManager>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::EventStateManager>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::EventStateManager>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsRefreshDriver_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsRefreshDriver>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsRefreshDriver>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsRefreshDriver>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsRefreshDriver>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_EffectCompositor_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::EffectCompositor>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::EffectCompositor>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::EffectCompositor>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::EffectCompositor>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsTransitionManager_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsTransitionManager>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsTransitionManager>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsTransitionManager>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsTransitionManager>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAnimationManager_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAnimationManager>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAnimationManager>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAnimationManager>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAnimationManager>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_RestyleManager_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::RestyleManager>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::RestyleManager>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::RestyleManager>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::RestyleManager>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_CounterStyleManager_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::CounterStyleManager>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::CounterStyleManager>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::CounterStyleManager>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::CounterStyleManager>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_gfxFontFeatureValueSet_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::gfxFontFeatureValueSet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::gfxFontFeatureValueSet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::gfxFontFeatureValueSet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::gfxFontFeatureValueSet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_5() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsITheme_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrintSettings_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsITimer_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsBidi_DefaultDelete_open1_nsBidi_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsBidi>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsBidi>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsBidi>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsBidi>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsBidi_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsRect_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsRect>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsRect>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsRect>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsRect>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_gfxTextPerfMetrics_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsAutoPtr<root::gfxTextPerfMetrics>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsAutoPtr<root::gfxTextPerfMetrics>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsAutoPtr<root::gfxTextPerfMetrics>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsAutoPtr<root::gfxTextPerfMetrics>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_gfxMissingFontRecorder_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsAutoPtr<root::gfxMissingFontRecorder>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsAutoPtr<root::gfxMissingFontRecorder>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsAutoPtr<root::gfxMissingFontRecorder>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsAutoPtr<root::gfxMissingFontRecorder>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_URLParams_Param_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::dom::URLParams_Param>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::dom::URLParams_Param>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::dom::URLParams_Param>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::dom::URLParams_Param>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_URLParams_DefaultDelete_open1_URLParams_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::dom::URLParams>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::dom::URLParams>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::dom::URLParams>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::dom::URLParams>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_URLParams_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_9() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_10() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_const_char_FreePolicy_open1_const_char_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<::std::os::raw::c_char>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<::std::os::raw::c_char>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<::std::os::raw::c_char>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<::std::os::raw::c_char>) + ) + ); + } + #[test] + fn __bindgen_test_layout_FreePolicy_open0_const_char_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::detail::FreePolicy>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::detail::FreePolicy) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::detail::FreePolicy>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::detail::FreePolicy) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIEventTarget_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsMainThreadPtrHandle_open0_nsIURI_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsMainThreadPtrHandle<root::nsIURI>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsMainThreadPtrHandle<root::nsIURI>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsMainThreadPtrHandle<root::nsIURI>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsMainThreadPtrHandle<root::nsIURI>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_URLExtraData_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::URLExtraData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::URLExtraData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::URLExtraData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::URLExtraData>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsPtrHashKey_open0_nsIDocument_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsPtrHashKey<root::nsIDocument>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsPtrHashKey<root::nsIDocument>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsPtrHashKey<root::nsIDocument>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsPtrHashKey<root::nsIDocument>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_GridNamedArea_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::css::GridNamedArea>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::css::GridNamedArea>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::css::GridNamedArea>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::css::GridNamedArea>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsCSSValueList_DefaultDelete_open1_nsCSSValueList_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsCSSValueList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSValueList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsCSSValueList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSValueList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsCSSValueList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsCSSValuePairList_DefaultDelete_open1_nsCSSValuePairList_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsCSSValuePairList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSValuePairList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsCSSValuePairList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSValuePairList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsCSSValuePairList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsCSSValueGradientStop_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsCSSValueGradientStop>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsCSSValueGradientStop>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsCSSValueGradientStop>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsCSSValueGradientStop>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_11() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_12() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_imgRequestProxy_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::imgRequestProxy>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::imgRequestProxy>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::imgRequestProxy>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::imgRequestProxy>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_ProxyBehaviour_DefaultDelete_open1_ProxyBehaviour_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::ProxyBehaviour>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::ProxyBehaviour>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::ProxyBehaviour>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::ProxyBehaviour>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_ProxyBehaviour_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_imgRequestProxy_ImageURL_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::imgRequestProxy_ImageURL>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::imgRequestProxy_ImageURL>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::imgRequestProxy_ImageURL>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::imgRequestProxy_ImageURL>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsILoadGroup_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_TabGroup_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::TabGroup>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::TabGroup>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::TabGroup>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::TabGroup>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIEventTarget_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_ptr_CounterStyle_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<*mut root::mozilla::CounterStyle>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<*mut root::mozilla::CounterStyle>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<*mut root::mozilla::CounterStyle>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<*mut root::mozilla::CounterStyle>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_6() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleGradientStop_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleGradientStop>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleGradientStop>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleGradientStop>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleGradientStop>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_imgRequestProxy_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::imgRequestProxy>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::imgRequestProxy>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::imgRequestProxy>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::imgRequestProxy>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ImageValue_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::css::ImageValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::ImageValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::css::ImageValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::ImageValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ImageTracker_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::ImageTracker>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::ImageTracker>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::ImageTracker>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::ImageTracker>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_DocGroup_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::DocGroup>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::DocGroup>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::DocGroup>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::DocGroup>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMArray_open0_imgIContainer_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMArray>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMArray) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMArray>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMArray) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleSides_DefaultDelete_open1_nsStyleSides_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleSides>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleSides>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleSides>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleSides>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleSides_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleSides_DefaultDelete_open1_nsStyleSides_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleSides>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleSides>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleSides>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleSides>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleSides_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_CachedBorderImageData_DefaultDelete_open1_CachedBorderImageData_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::CachedBorderImageData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::CachedBorderImageData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::CachedBorderImageData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::CachedBorderImageData>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_CachedBorderImageData_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleSides_DefaultDelete_open1_nsStyleSides_close1_close0_instantiation_2( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleSides>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleSides>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleSides>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleSides>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleSides_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsStyleAutoArray_open0_nsStyleImageLayers_Layer_close0_instantiation() + { + assert_eq!( + ::std::mem::size_of::<root::nsStyleAutoArray<root::nsStyleImageLayers_Layer>>(), + 104usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsStyleAutoArray<root::nsStyleImageLayers_Layer>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsStyleAutoArray<root::nsStyleImageLayers_Layer>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsStyleAutoArray<root::nsStyleImageLayers_Layer>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_pair_open1_nsString_nsString_close1_close0_instantiation( +) { + assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > ) ) ); + assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > > ) ) ); + } + #[test] + fn __bindgen_test_layout_pair_open0_nsString_nsString_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::std::pair<::nsstring::nsStringRepr, ::nsstring::nsStringRepr>>(), + 32usize, + concat!( + "Size of template specialization: ", + stringify ! ( root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > ) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::std::pair<::nsstring::nsStringRepr, ::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify ! ( root :: std :: pair < ::nsstring::nsStringRepr , ::nsstring::nsStringRepr > ) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsStyleImageRequest_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsStyleImageRequest>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsStyleImageRequest>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsStyleImageRequest>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsStyleImageRequest>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsStyleQuoteValues_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsStyleQuoteValues>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsStyleQuoteValues>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsStyleQuoteValues>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsStyleQuoteValues>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsTArray_open1_nsString_close1_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsTArray<::nsstring::nsStringRepr>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsTArray<::nsstring::nsStringRepr>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsTArray<::nsstring::nsStringRepr>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsTArray<::nsstring::nsStringRepr>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleCoord_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleCoord>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCoord>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleCoord>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCoord>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleCoord_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleCoord>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCoord>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleCoord>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCoord>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsString_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<::nsstring::nsStringRepr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<::nsstring::nsStringRepr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleGridTemplate_DefaultDelete_open1_nsStyleGridTemplate_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleGridTemplate>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleGridTemplate>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleGridTemplate>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleGridTemplate>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleGridTemplate_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleGridTemplate_DefaultDelete_open1_nsStyleGridTemplate_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleGridTemplate>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleGridTemplate>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleGridTemplate>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleGridTemplate>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleGridTemplate_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_GridTemplateAreasValue_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::css::GridTemplateAreasValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::GridTemplateAreasValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::css::GridTemplateAreasValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::GridTemplateAreasValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsCSSShadowArray_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsCSSShadowArray>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsCSSShadowArray>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsCSSShadowArray>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsCSSShadowArray>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_7() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_8() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleCoord_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleCoord>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCoord>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleCoord>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCoord>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleImage_DefaultDelete_open1_nsStyleImage_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleImage>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleImage>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleImage>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleImage>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleImage_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleImage_DefaultDelete_open1_nsStyleImage_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleImage>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleImage>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleImage>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleImage>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleImage_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_StyleBasicShape_DefaultDelete_open1_StyleBasicShape_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_StyleBasicShape_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_StyleBasicShape_DefaultDelete_open1_StyleBasicShape_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_StyleBasicShape_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_StyleBasicShape_DefaultDelete_open1_StyleBasicShape_close1_close0_instantiation_2( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::StyleBasicShape>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_StyleBasicShape_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleImage_DefaultDelete_open1_nsStyleImage_close1_close0_instantiation_2( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleImage>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleImage>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleImage>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleImage>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleImage_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_URLValue_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::css::URLValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::URLValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::css::URLValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::URLValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_9() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_Position_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::Position>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::Position>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::Position>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::Position>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsCSSValueSharedList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsCSSValueSharedList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsCSSValueSharedList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsCSSValueSharedList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsCSSValueSharedList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsStyleAutoArray_open0_StyleTransition_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsStyleAutoArray<root::mozilla::StyleTransition>>(), + 48usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsStyleAutoArray<root::mozilla::StyleTransition>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsStyleAutoArray<root::mozilla::StyleTransition>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsStyleAutoArray<root::mozilla::StyleTransition>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsStyleAutoArray_open0_StyleAnimation_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsStyleAutoArray<root::mozilla::StyleAnimation>>(), + 56usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsStyleAutoArray<root::mozilla::StyleAnimation>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsStyleAutoArray<root::mozilla::StyleAnimation>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsStyleAutoArray<root::mozilla::StyleAnimation>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleContentData_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleContentData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleContentData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleContentData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleContentData>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleCounterData_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleCounterData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCounterData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleCounterData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCounterData>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleCounterData_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleCounterData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCounterData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleCounterData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCounterData>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsCSSValueSharedList_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsCSSValueSharedList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsCSSValueSharedList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsCSSValueSharedList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsCSSValueSharedList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsStyleImageRequest_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsStyleImageRequest>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsStyleImageRequest>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsStyleImageRequest>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsStyleImageRequest>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsCursorImage_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsCursorImage>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsCursorImage>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsCursorImage>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsCursorImage>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_URLValue_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::css::URLValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::URLValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::css::URLValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::URLValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_URLValue_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::css::URLValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::URLValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::css::URLValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::URLValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_URLValue_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::css::URLValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::URLValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::css::URLValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::css::URLValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleCoord_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleCoord>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCoord>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleCoord>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleCoord>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_10() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsStyleFilter_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsStyleFilter>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsStyleFilter>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsStyleFilter>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsStyleFilter>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsCSSShadowArray_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsCSSShadowArray>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsCSSShadowArray>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsCSSShadowArray>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsCSSShadowArray>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_ptr_nsISupports_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<*mut root::nsISupports>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<*mut root::nsISupports>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<*mut root::nsISupports>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<*mut root::nsISupports>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsCSSValueList_DefaultDelete_open1_nsCSSValueList_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsCSSValueList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSValueList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsCSSValueList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSValueList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsCSSValueList_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsCSSValuePairList_DefaultDelete_open1_nsCSSValuePairList_close1_close0_instantiation_1( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsCSSValuePairList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSValuePairList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsCSSValuePairList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsCSSValuePairList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsCSSValuePairList_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_RawServoAnimationValue_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::RawServoAnimationValue>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::RawServoAnimationValue>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::RawServoAnimationValue>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::RawServoAnimationValue>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_13() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_nsCString_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::nsCString>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::nsCString>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::nsCString>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::nsCString>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_14() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_15() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIURI_close0_instantiation_16() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_5() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_RawServoStyleSheetContents_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::RawServoStyleSheetContents>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::RawServoStyleSheetContents>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::RawServoStyleSheetContents>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::RawServoStyleSheetContents>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_URLExtraData_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::URLExtraData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::URLExtraData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::URLExtraData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::URLExtraData>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ServoCSSRuleList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::ServoCSSRuleList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::ServoCSSRuleList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::ServoCSSRuleList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::ServoCSSRuleList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIPrincipal_close0_instantiation_6() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_StyleSheet_close1_close0_instantiation_1() + { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_SheetLoadData_close1_close0_instantiation() + { + assert_eq ! ( :: std :: mem :: size_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > > ( ) , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > ) ) ); + assert_eq ! ( :: std :: mem :: align_of :: < root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > > ( ) , 8usize , concat ! ( "Alignment of template specialization: " , stringify ! ( root :: nsTArray < root :: RefPtr < root :: mozilla :: css :: SheetLoadData > > ) ) ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_StyleSheet_close0_instantiation_5() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::StyleSheet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::StyleSheet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_Loader_Sheets_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsAutoPtr<root::mozilla::css::Loader_Sheets>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsAutoPtr<root::mozilla::css::Loader_Sheets>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsAutoPtr<root::mozilla::css::Loader_Sheets>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsAutoPtr<root::mozilla::css::Loader_Sheets>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_DocGroup_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::DocGroup>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::DocGroup>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::DocGroup>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::DocGroup>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIConsoleReportCollector_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIContent_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsXBLBinding_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsXBLBinding>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsXBLBinding>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsXBLBinding>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsXBLBinding>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_XBLChildrenElement_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::XBLChildrenElement>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::XBLChildrenElement>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_XBLChildrenElement_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::< + root::nsTArray<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>, + >(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>) + ) + ); + assert_eq!( + ::std::mem::align_of::< + root::nsTArray<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>, + >(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_XBLChildrenElement_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::XBLChildrenElement>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::XBLChildrenElement>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::XBLChildrenElement>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAnonymousContentList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAnonymousContentList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAnonymousContentList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAnonymousContentList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAnonymousContentList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsICSSDeclaration_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_DeclarationBlock_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::DeclarationBlock>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::DeclarationBlock>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::DeclarationBlock>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::DeclarationBlock>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIControllers_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsLabelsNodeList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsLabelsNodeList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsLabelsNodeList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsLabelsNodeList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsLabelsNodeList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ShadowRoot_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::ShadowRoot>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::ShadowRoot>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::ShadowRoot>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::ShadowRoot>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsXBLBinding_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsXBLBinding>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsXBLBinding>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsXBLBinding>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsXBLBinding>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_CustomElementData_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::CustomElementData>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::CustomElementData>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::CustomElementData>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::CustomElementData>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsISupports_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsICSSDeclaration_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsDOMAttributeMap_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsDOMAttributeMap>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsDOMAttributeMap>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsDOMAttributeMap>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsDOMAttributeMap>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsContentList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsContentList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsContentList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsContentList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsContentList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsDOMTokenList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsDOMTokenList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsDOMTokenList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsDOMTokenList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsDOMTokenList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsDOMAttributeMap_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsDOMAttributeMap>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsDOMAttributeMap>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsDOMAttributeMap>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsDOMAttributeMap>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsDOMAttributeMap_Element_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsISupports_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIObserver_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsIWidget_LongTapInfo_DefaultDelete_open1_nsIWidget_LongTapInfo_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsIWidget_LongTapInfo>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsIWidget_LongTapInfo>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsIWidget_LongTapInfo>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsIWidget_LongTapInfo>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsIWidget_LongTapInfo_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsISMILAttr_DefaultDelete_open1_nsISMILAttr_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsISMILAttr>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsISMILAttr>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsISMILAttr>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsISMILAttr>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsISMILAttr_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_11() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsINode_close1_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::nsINode>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsINode>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::nsINode>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsINode>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsINode_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsINode>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsINode>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsINode>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsINode>) + ) + ); + } + #[test] + fn __bindgen_test_layout_BaseTimeDuration_open0_StickyTimeDurationValueCalculator_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::BaseTimeDuration>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::BaseTimeDuration) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::BaseTimeDuration>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::BaseTimeDuration) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_RawServoDeclarationBlock_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::RawServoDeclarationBlock>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::RawServoDeclarationBlock>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::RawServoDeclarationBlock>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::RawServoDeclarationBlock>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_PropertyValuePair_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::PropertyValuePair>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::PropertyValuePair>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::PropertyValuePair>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::PropertyValuePair>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_ServoAttrSnapshot_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::ServoAttrSnapshot>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::ServoAttrSnapshot>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::ServoAttrSnapshot>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::ServoAttrSnapshot>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsRefPtrHashKey_open0_Element_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsRefPtrHashKey<root::mozilla::dom::Element>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::mozilla::dom::Element>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsRefPtrHashKey<root::mozilla::dom::Element>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::mozilla::dom::Element>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_ptr_nsIContent_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<*mut root::nsIContent>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<*mut root::nsIContent>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<*mut root::nsIContent>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<*mut root::nsIContent>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_Element_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::dom::Element>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::Element>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::dom::Element>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::dom::Element>) + ) + ); + } + #[test] + fn __bindgen_test_layout_OwningNonNull_open0_EffectCompositor_AnimationStyleRuleProcessor_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::< + root::mozilla::OwningNonNull< + root::mozilla::EffectCompositor_AnimationStyleRuleProcessor, + >, + >(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::OwningNonNull< + root::mozilla::EffectCompositor_AnimationStyleRuleProcessor, + >) + ) + ); + assert_eq!( + ::std::mem::align_of::< + root::mozilla::OwningNonNull< + root::mozilla::EffectCompositor_AnimationStyleRuleProcessor, + >, + >(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::OwningNonNull< + root::mozilla::EffectCompositor_AnimationStyleRuleProcessor, + >) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleGridTemplate_DefaultDelete_open1_nsStyleGridTemplate_close1_close0_instantiation_2( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleGridTemplate>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleGridTemplate>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleGridTemplate>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleGridTemplate>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleGridTemplate_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_nsStyleGridTemplate_DefaultDelete_open1_nsStyleGridTemplate_close1_close0_instantiation_3( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::nsStyleGridTemplate>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleGridTemplate>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::nsStyleGridTemplate>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::nsStyleGridTemplate>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_nsStyleGridTemplate_close0_instantiation_3() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_RawServoMediaList_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::RawServoMediaList>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::RawServoMediaList>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::RawServoMediaList>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::RawServoMediaList>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_RawServoStyleSet_DefaultDelete_open1_RawServoStyleSet_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::RawServoStyleSet>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::RawServoStyleSet>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::RawServoStyleSet>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::RawServoStyleSet>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_RawServoStyleSet_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_ServoStyleSheet_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::mozilla::ServoStyleSheet>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::ServoStyleSheet>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::mozilla::ServoStyleSheet>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::mozilla::ServoStyleSheet>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ServoStyleContext_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::ServoStyleContext>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::ServoStyleContext>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::ServoStyleContext>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::ServoStyleContext>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_PostTraversalTask_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::mozilla::PostTraversalTask>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::mozilla::PostTraversalTask>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::mozilla::PostTraversalTask>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::mozilla::PostTraversalTask>) + ) + ); + } + #[test] + fn __bindgen_test_layout_UniquePtr_open0_ServoStyleRuleMap_DefaultDelete_open1_ServoStyleRuleMap_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::mozilla::UniquePtr<root::mozilla::ServoStyleRuleMap>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::ServoStyleRuleMap>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::UniquePtr<root::mozilla::ServoStyleRuleMap>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::UniquePtr<root::mozilla::ServoStyleRuleMap>) + ) + ); + } + #[test] + fn __bindgen_test_layout_DefaultDelete_open0_ServoStyleRuleMap_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Size of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::mozilla::DefaultDelete>(), + 1usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::mozilla::DefaultDelete) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsXBLBinding_close1_close0_instantiation() + { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::nsXBLBinding>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsXBLBinding>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::nsXBLBinding>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsXBLBinding>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsXBLBinding_close0_instantiation_2() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsXBLBinding>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsXBLBinding>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsXBLBinding>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsXBLBinding>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_nsTHashtable_open1_nsRefPtrHashKey_open2_nsIContent_close2_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<u64>(), + 8usize, + concat!("Size of template specialization: ", stringify!(u64)) + ); + assert_eq!( + ::std::mem::align_of::<u64>(), + 8usize, + concat!("Alignment of template specialization: ", stringify!(u64)) + ); + } + #[test] + fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsIContent_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::nsRefPtrHashKey<root::nsIContent>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsIContent>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsRefPtrHashKey<root::nsIContent>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsIContent>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_nsBindingManager_WrapperHashtable_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<root::nsAutoPtr<root::nsBindingManager_WrapperHashtable>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsAutoPtr<root::nsBindingManager_WrapperHashtable>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsAutoPtr<root::nsBindingManager_WrapperHashtable>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsAutoPtr<root::nsBindingManager_WrapperHashtable>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_nsRefPtrHashtable_open1_nsURIHashKey_nsXBLDocumentInfo_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<u64>(), + 8usize, + concat!("Size of template specialization: ", stringify!(u64)) + ); + assert_eq!( + ::std::mem::align_of::<u64>(), + 8usize, + concat!("Alignment of template specialization: ", stringify!(u64)) + ); + } + #[test] + fn __bindgen_test_layout_nsAutoPtr_open0_nsInterfaceHashtable_open1_nsURIHashKey_nsIStreamListener_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<u64>(), + 8usize, + concat!("Size of template specialization: ", stringify!(u64)) + ); + assert_eq!( + ::std::mem::align_of::<u64>(), + 8usize, + concat!("Alignment of template specialization: ", stringify!(u64)) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsRunnableMethod_open1_nsBindingManager_void_close1_close0_instantiation( +) { + assert_eq!( + ::std::mem::size_of::<u64>(), + 8usize, + concat!("Size of template specialization: ", stringify!(u64)) + ); + assert_eq!( + ::std::mem::align_of::<u64>(), + 8usize, + concat!("Alignment of template specialization: ", stringify!(u64)) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_12() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_ServoStyleContext_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::mozilla::ServoStyleContext>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::mozilla::ServoStyleContext>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::mozilla::ServoStyleContext>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::mozilla::ServoStyleContext>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_RawServoDeclarationBlock_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::RawServoDeclarationBlock>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::RawServoDeclarationBlock>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::RawServoDeclarationBlock>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::RawServoDeclarationBlock>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_13() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsCSSFontFaceRule_close0_instantiation() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsCSSFontFaceRule>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsCSSFontFaceRule>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsCSSFontFaceRule>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsCSSFontFaceRule>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsRefPtrHashKey_open0_nsAtom_close0_instantiation_5() { + assert_eq!( + ::std::mem::size_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 16usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsRefPtrHashKey<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsRefPtrHashKey<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_nsAtom_close1_close0_instantiation_4() { + assert_eq!( + ::std::mem::size_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsTArray<root::RefPtr<root::nsAtom>>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsTArray<root::RefPtr<root::nsAtom>>) + ) + ); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsAtom_close0_instantiation_14() { + assert_eq!( + ::std::mem::size_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::RefPtr<root::nsAtom>>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::RefPtr<root::nsAtom>) + ) + ); + } + #[test] + fn __bindgen_test_layout_nsCOMPtr_open0_nsIRunnable_close0_instantiation_1() { + assert_eq!( + ::std::mem::size_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Size of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + assert_eq!( + ::std::mem::align_of::<root::nsCOMPtr>(), + 8usize, + concat!( + "Alignment of template specialization: ", + stringify!(root::nsCOMPtr) + ) + ); + } +} diff --git a/components/style/gecko/media_queries.rs b/components/style/gecko/media_queries.rs index bbecaff7905..69ad65ac70c 100644 --- a/components/style/gecko/media_queries.rs +++ b/components/style/gecko/media_queries.rs @@ -24,7 +24,7 @@ use std::fmt::{self, Write}; use std::sync::atomic::{AtomicBool, AtomicIsize, AtomicUsize, Ordering}; use str::starts_with_ignore_ascii_case; use string_cache::Atom; -use style_traits::{CSSPixel, DevicePixel}; +use style_traits::{CSSPixel, CssWriter, DevicePixel}; use style_traits::{ToCss, ParseError, StyleParseErrorKind}; use style_traits::viewport::ViewportConstraints; use stylesheets::Origin; @@ -236,7 +236,7 @@ pub struct Expression { } impl ToCss for Expression { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write, { dest.write_str("(")?; @@ -408,7 +408,7 @@ impl MediaExpressionValue { } impl MediaExpressionValue { - fn to_css<W>(&self, dest: &mut W, for_expr: &Expression) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>, for_expr: &Expression) -> fmt::Result where W: fmt::Write, { match *self { diff --git a/components/style/gecko/pseudo_element.rs b/components/style/gecko/pseudo_element.rs index 852498ab9ec..ab38bdff798 100644 --- a/components/style/gecko/pseudo_element.rs +++ b/components/style/gecko/pseudo_element.rs @@ -10,7 +10,7 @@ use cssparser::{ToCss, serialize_identifier}; use gecko_bindings::structs::{self, CSSPseudoElementType}; -use properties::{ComputedValues, PropertyFlags}; +use properties::{CascadeFlags, ComputedValues, PropertyFlags}; use properties::longhands::display::computed_value::T as Display; use selector_parser::{NonTSPseudoClass, PseudoElementCascadeType, SelectorImpl}; use std::fmt; @@ -51,6 +51,15 @@ impl PseudoElement { PseudoElementCascadeType::Lazy } + /// The CascadeFlags needed to cascade this pseudo-element. + /// + /// This is only needed to support the broken INHERIT_ALL pseudo mode for + /// Servo. + #[inline] + pub fn cascade_flags(&self) -> CascadeFlags { + CascadeFlags::empty() + } + /// Whether the pseudo-element should inherit from the default computed /// values instead of from the parent element. /// @@ -128,7 +137,7 @@ impl PseudoElement { /// Whether this pseudo-element skips flex/grid container display-based /// fixup. #[inline] - pub fn skip_item_based_display_fixup(&self) -> bool { + pub fn skip_item_display_fixup(&self) -> bool { (self.flags() & structs::CSS_PSEUDO_ELEMENT_IS_FLEX_OR_GRID_ITEM) == 0 } diff --git a/components/style/gecko/rules.rs b/components/style/gecko/rules.rs index 64d30b44883..75701476827 100644 --- a/components/style/gecko/rules.rs +++ b/components/style/gecko/rules.rs @@ -17,7 +17,9 @@ use gecko_bindings::sugar::refptr::{RefPtr, UniqueRefPtr}; use nsstring::nsString; use properties::longhands::font_language_override; use shared_lock::{ToCssWithGuard, SharedRwLockReadGuard}; -use std::{fmt, str}; +use std::fmt::{self, Write}; +use std::str; +use str::CssStringWriter; use values::computed::font::FamilyName; use values::generics::FontSettings; @@ -200,8 +202,7 @@ impl From<FontFaceRuleData> for FontFaceRule { } impl ToCssWithGuard for FontFaceRule { - fn to_css<W>(&self, _guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, _guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { let mut css_text = nsString::new(); unsafe { bindings::Gecko_CSSFontFaceRule_GetCssText(self.get(), &mut *css_text); @@ -237,8 +238,7 @@ impl From<counter_style::CounterStyleRuleData> for CounterStyleRule { } impl ToCssWithGuard for CounterStyleRule { - fn to_css<W>(&self, _guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, _guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { let mut css_text = nsString::new(); unsafe { bindings::Gecko_CSSCounterStyle_GetCssText(self.get(), &mut *css_text); diff --git a/components/style/gecko/selector_parser.rs b/components/style/gecko/selector_parser.rs index cb57d9b21fb..985bd453b4c 100644 --- a/components/style/gecko/selector_parser.rs +++ b/components/style/gecko/selector_parser.rs @@ -16,7 +16,7 @@ use selectors::parser::{self as selector_parser, Selector, Visit, SelectorParseE use selectors::visitor::SelectorVisitor; use std::fmt; use string_cache::{Atom, Namespace, WeakAtom, WeakNamespace}; -use style_traits::{ParseError, StyleParseErrorKind, ToCss as ToCss_}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss as ToCss_}; pub use gecko::pseudo_element::{PseudoElement, EAGER_PSEUDOS, EAGER_PSEUDO_COUNT, PSEUDO_COUNT}; pub use gecko::snapshot::SnapshotMap; @@ -86,12 +86,12 @@ impl ToCss for NonTSPseudoClass { }, )* NonTSPseudoClass::MozLocaleDir(ref dir) => { dest.write_str(":-moz-locale-dir(")?; - dir.to_css(dest)?; + dir.to_css(&mut CssWriter::new(dest))?; return dest.write_char(')') }, NonTSPseudoClass::Dir(ref dir) => { dest.write_str(":dir(")?; - dir.to_css(dest)?; + dir.to_css(&mut CssWriter::new(dest))?; return dest.write_char(')') }, NonTSPseudoClass::MozAny(ref selectors) => { diff --git a/components/style/gecko/url.rs b/components/style/gecko/url.rs index 64eda812f45..b18d00a559c 100644 --- a/components/style/gecko/url.rs +++ b/components/style/gecko/url.rs @@ -12,9 +12,9 @@ use gecko_bindings::sugar::refptr::RefPtr; use malloc_size_of::{MallocSizeOf, MallocSizeOfOps}; use parser::ParserContext; use servo_arc::{Arc, RawOffsetArc}; -use std::fmt; +use std::fmt::{self, Write}; use std::mem; -use style_traits::{ToCss, ParseError}; +use style_traits::{CssWriter, ToCss, ParseError}; /// A specified url() value for gecko. Gecko does not eagerly resolve SpecifiedUrls. #[derive(Clone, Debug, PartialEq)] @@ -136,7 +136,10 @@ impl SpecifiedUrl { } impl ToCss for SpecifiedUrl { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("url(")?; self.serialization.to_css(dest)?; dest.write_str(")") diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index 0f8626eaa0e..92aedc3b5d7 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -1285,15 +1285,11 @@ impl<'le> TElement for GeckoElement<'le> { } #[inline] - fn skip_root_and_item_based_display_fixup(&self) -> bool { - if !self.is_native_anonymous() { - return false; - } - - if let Some(p) = self.implemented_pseudo_element() { - return p.skip_item_based_display_fixup(); - } - + fn skip_item_display_fixup(&self) -> bool { + debug_assert!( + self.implemented_pseudo_element().is_none(), + "Just don't call me if I'm a pseudo, you should know the answer already" + ); self.is_root_of_native_anonymous_subtree() } @@ -1997,7 +1993,6 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { &self, pseudo_class: &NonTSPseudoClass, context: &mut MatchingContext<Self::Impl>, - visited_handling: VisitedHandlingMode, flags_setter: &mut F, ) -> bool where @@ -2057,10 +2052,10 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { }, NonTSPseudoClass::AnyLink => self.is_link(), NonTSPseudoClass::Link => { - self.is_link() && visited_handling.matches_unvisited() + self.is_link() && context.visited_handling().matches_unvisited() } NonTSPseudoClass::Visited => { - self.is_link() && visited_handling.matches_visited() + self.is_link() && context.visited_handling().matches_visited() } NonTSPseudoClass::MozFirstNode => { flags_setter(self, ElementSelectorFlags::HAS_EDGE_CHILD_SELECTOR); @@ -2112,19 +2107,18 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { NonTSPseudoClass::MozWindowInactive => { let state_bit = DocumentState::NS_DOCUMENT_STATE_WINDOW_INACTIVE; if context.extra_data.document_state.intersects(state_bit) { - return true; + return !context.in_negation(); } self.document_state().contains(state_bit) } NonTSPseudoClass::MozPlaceholder => false, NonTSPseudoClass::MozAny(ref sels) => { - context.nesting_level += 1; - let result = sels.iter().any(|s| { - matches_complex_selector(s.iter(), self, context, flags_setter) - }); - context.nesting_level -= 1; - result + context.nest(|context| { + sels.iter().any(|s| { + matches_complex_selector(s.iter(), self, context, flags_setter) + }) + }) } NonTSPseudoClass::Lang(ref lang_arg) => { self.match_element_lang(None, lang_arg) @@ -2134,7 +2128,7 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { if context.extra_data.document_state.intersects(state_bit) { // NOTE(emilio): We could still return false for // Direction::Other(..), but we don't bother. - return true; + return !context.in_negation(); } let doc_is_rtl = self.document_state().contains(state_bit); diff --git a/components/style/invalidation/element/element_wrapper.rs b/components/style/invalidation/element/element_wrapper.rs index 65f3ea89c19..afd5bbcb2cb 100644 --- a/components/style/invalidation/element/element_wrapper.rs +++ b/components/style/invalidation/element/element_wrapper.rs @@ -11,7 +11,6 @@ use element_state::ElementState; use selector_parser::{NonTSPseudoClass, PseudoElement, SelectorImpl, Snapshot, SnapshotMap, AttrValue}; use selectors::{Element, OpaqueElement}; use selectors::attr::{AttrSelectorOperation, CaseSensitivity, NamespaceConstraint}; -use selectors::context::VisitedHandlingMode; use selectors::matching::{ElementSelectorFlags, MatchingContext}; use std::cell::Cell; use std::fmt; @@ -150,7 +149,6 @@ impl<'a, E> Element for ElementWrapper<'a, E> &self, pseudo_class: &NonTSPseudoClass, context: &mut MatchingContext<Self::Impl>, - visited_handling: VisitedHandlingMode, _setter: &mut F, ) -> bool where @@ -162,12 +160,11 @@ impl<'a, E> Element for ElementWrapper<'a, E> #[cfg(feature = "gecko")] NonTSPseudoClass::MozAny(ref selectors) => { use selectors::matching::matches_complex_selector; - context.nesting_level += 1; - let result = selectors.iter().any(|s| { - matches_complex_selector(s.iter(), self, context, _setter) + return context.nest(|context| { + selectors.iter().any(|s| { + matches_complex_selector(s.iter(), self, context, _setter) + }) }); - context.nesting_level -= 1; - return result } // :dir is implemented in terms of state flags, but which state flag @@ -199,10 +196,10 @@ impl<'a, E> Element for ElementWrapper<'a, E> // Instead, we use the `visited_handling` to determine if they // match. NonTSPseudoClass::Link => { - return self.is_link() && visited_handling.matches_unvisited() + return self.is_link() && context.visited_handling().matches_unvisited() } NonTSPseudoClass::Visited => { - return self.is_link() && visited_handling.matches_visited() + return self.is_link() && context.visited_handling().matches_visited() } #[cfg(feature = "gecko")] @@ -237,7 +234,6 @@ impl<'a, E> Element for ElementWrapper<'a, E> return self.element.match_non_ts_pseudo_class( pseudo_class, context, - visited_handling, &mut |_, _| {}, ) } @@ -247,7 +243,6 @@ impl<'a, E> Element for ElementWrapper<'a, E> self.element.match_non_ts_pseudo_class( pseudo_class, context, - visited_handling, &mut |_, _| {}, ) } diff --git a/components/style/lib.rs b/components/style/lib.rs index d4d3855a481..d789c1d3305 100644 --- a/components/style/lib.rs +++ b/components/style/lib.rs @@ -134,8 +134,8 @@ pub mod traversal_flags; #[allow(non_camel_case_types)] pub mod values; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; #[cfg(feature = "gecko")] pub use gecko_string_cache as string_cache; #[cfg(feature = "gecko")] pub use gecko_string_cache::Atom; @@ -181,11 +181,13 @@ longhand_properties_idents!(reexport_computed_values); /// Serializes as CSS a comma-separated list of any `T` that supports being /// serialized as CSS. -pub fn serialize_comma_separated_list<W, T>(dest: &mut W, - list: &[T]) - -> fmt::Result - where W: fmt::Write, - T: ToCss, +pub fn serialize_comma_separated_list<W, T>( + dest: &mut CssWriter<W>, + list: &[T], +) -> fmt::Result +where + W: Write, + T: ToCss, { if list.is_empty() { return Ok(()); diff --git a/components/style/macros.rs b/components/style/macros.rs index aa505498d3b..ac795bdb09f 100644 --- a/components/style/macros.rs +++ b/components/style/macros.rs @@ -91,8 +91,11 @@ macro_rules! define_numbered_css_keyword_enum { } } - impl ::style_traits::values::ToCss for $name { - fn to_css<W>(&self, dest: &mut W) -> ::std::fmt::Result + impl ::style_traits::ToCss for $name { + fn to_css<W>( + &self, + dest: &mut ::style_traits::CssWriter<W>, + ) -> ::std::fmt::Result where W: ::std::fmt::Write, { diff --git a/components/style/matching.rs b/components/style/matching.rs index 37694bc0538..5145e26ec36 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -460,10 +460,12 @@ trait PrivateMatchMethods: TElement { // See #12171 and the associated PR for an example where this // happened while debugging other release panic. if !running_animation.is_expired() { - animation::update_style_for_animation(context, - running_animation, - style, - font_metrics); + animation::update_style_for_animation::<Self>( + context, + running_animation, + style, + font_metrics, + ); if let Animation::Transition(_, _, ref frame, _) = *running_animation { possibly_expired_animations.push(frame.property_animation.clone()) } diff --git a/components/style/media_queries.rs b/components/style/media_queries.rs index 42a72ba2d58..8941b21a30a 100644 --- a/components/style/media_queries.rs +++ b/components/style/media_queries.rs @@ -14,9 +14,9 @@ use error_reporting::{ContextualParseError, ParseErrorReporter}; use parser::{ParserContext, ParserErrorContext}; use selectors::parser::SelectorParseErrorKind; use serialize_comma_separated_list; -use std::fmt; +use std::fmt::{self, Write}; use str::string_as_ascii_lowercase; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use style_traits::{CssWriter, ToCss, ParseError, StyleParseErrorKind}; use values::CustomIdent; #[cfg(feature = "servo")] @@ -33,8 +33,9 @@ pub struct MediaList { } impl ToCss for MediaList { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { serialize_comma_separated_list(dest, &self.media_queries) } @@ -86,8 +87,9 @@ impl MediaQuery { } impl ToCss for MediaQuery { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { if let Some(qual) = self.qualifier { qual.to_css(dest)?; diff --git a/components/style/properties/declaration_block.rs b/components/style/properties/declaration_block.rs index c28ed5555f7..284c8230b5d 100644 --- a/components/style/properties/declaration_block.rs +++ b/components/style/properties/declaration_block.rs @@ -16,10 +16,11 @@ use properties::animated_properties::AnimationValue; use shared_lock::Locked; use smallbitvec::{self, SmallBitVec}; use smallvec::SmallVec; -use std::fmt; +use std::fmt::{self, Write}; use std::iter::{DoubleEndedIterator, Zip}; use std::slice::Iter; -use style_traits::{ToCss, ParseError, ParsingMode, StyleParseErrorKind}; +use str::{CssString, CssStringBorrow, CssStringWriter}; +use style_traits::{CssWriter, ParseError, ParsingMode, StyleParseErrorKind, ToCss}; use stylesheets::{CssRuleType, Origin, UrlExtraData}; use super::*; use values::computed::Context; @@ -306,9 +307,7 @@ impl PropertyDeclarationBlock { /// Find the value of the given property in this block and serialize it /// /// <https://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-getpropertyvalue> - pub fn property_value_to_css<W>(&self, property: &PropertyId, dest: &mut W) -> fmt::Result - where W: fmt::Write, - { + pub fn property_value_to_css(&self, property: &PropertyId, dest: &mut CssStringWriter) -> fmt::Result { // Step 1.1: done when parsing a string to PropertyId // Step 1.2 @@ -608,15 +607,13 @@ impl PropertyDeclarationBlock { } /// Take a declaration block known to contain a single property and serialize it. - pub fn single_value_to_css<W>( + pub fn single_value_to_css( &self, property: &PropertyId, - dest: &mut W, + dest: &mut CssStringWriter, computed_values: Option<&ComputedValues>, custom_properties_block: Option<&PropertyDeclarationBlock>, ) -> fmt::Result - where - W: fmt::Write, { match property.as_shorthand() { Err(_longhand_or_custom) => { @@ -664,10 +661,10 @@ impl PropertyDeclarationBlock { let iter = self.declarations.iter(); match shorthand.get_shorthand_appendable_value(iter) { Some(AppendableValue::Css { css, .. }) => { - dest.write_str(css) + css.append_to(dest) }, Some(AppendableValue::DeclarationsForShorthand(_, decls)) => { - shorthand.longhands_to_css(decls, dest) + shorthand.longhands_to_css(decls, &mut CssWriter::new(dest)) } _ => Ok(()) } @@ -738,11 +735,13 @@ impl PropertyDeclarationBlock { } } -impl ToCss for PropertyDeclarationBlock { - // https://drafts.csswg.org/cssom/#serialize-a-css-declaration-block - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, - { +impl PropertyDeclarationBlock { + /// Like the method on ToCss, but without the type parameter to avoid + /// accidentally monomorphizing this large function multiple times for + /// different writers. + /// + /// https://drafts.csswg.org/cssom/#serialize-a-css-declaration-block + pub fn to_css(&self, dest: &mut CssStringWriter) -> fmt::Result { let mut is_first_serialization = true; // trailing serializations should have a prepended space // Step 1 -> dest = result list @@ -835,7 +834,7 @@ impl ToCss for PropertyDeclarationBlock { // We avoid re-serializing if we're already an // AppendableValue::Css. - let mut v = String::new(); + let mut v = CssString::new(); let value = match (appendable_value, found_system) { (AppendableValue::Css { css, with_variables }, _) => { debug_assert!(!css.is_empty()); @@ -846,9 +845,9 @@ impl ToCss for PropertyDeclarationBlock { } #[cfg(feature = "gecko")] (_, Some(sys)) => { - sys.to_css(&mut v)?; + sys.to_css(&mut CssWriter::new(&mut v))?; AppendableValue::Css { - css: &v, + css: CssStringBorrow::from(&v), with_variables: false, } } @@ -861,7 +860,7 @@ impl ToCss for PropertyDeclarationBlock { } AppendableValue::Css { - css: &v, + css: CssStringBorrow::from(&v), with_variables: false, } } @@ -871,14 +870,14 @@ impl ToCss for PropertyDeclarationBlock { // We need to check the shorthand whether it's an alias property or not. // If it's an alias property, it should be serialized like its longhand. if shorthand.flags().contains(PropertyFlags::SHORTHAND_ALIAS_PROPERTY) { - append_serialization::<_, Cloned<slice::Iter< _>>, _>( + append_serialization::<Cloned<slice::Iter< _>>, _>( dest, &property, value, importance, &mut is_first_serialization)?; } else { - append_serialization::<_, Cloned<slice::Iter< _>>, _>( + append_serialization::<Cloned<slice::Iter< _>>, _>( dest, &shorthand, value, @@ -913,7 +912,7 @@ impl ToCss for PropertyDeclarationBlock { // "error: unable to infer enough type information about `_`; // type annotations or generic parameter binding required [E0282]" // Use the same type as earlier call to reuse generated code. - append_serialization::<_, Cloned<slice::Iter<_>>, _>( + append_serialization::<Cloned<slice::Iter<_>>, _>( dest, &property, AppendableValue::Declaration(declaration), @@ -945,17 +944,19 @@ pub enum AppendableValue<'a, I> /// or when storing a serialized shorthand value before appending directly. Css { /// The raw CSS string. - css: &'a str, + css: CssStringBorrow<'a>, /// Whether the original serialization contained variables or not. with_variables: bool, } } /// Potentially appends whitespace after the first (property: value;) pair. -fn handle_first_serialization<W>(dest: &mut W, - is_first_serialization: &mut bool) - -> fmt::Result - where W: fmt::Write, +fn handle_first_serialization<W>( + dest: &mut W, + is_first_serialization: &mut bool, +) -> fmt::Result +where + W: Write, { if !*is_first_serialization { dest.write_str(" ") @@ -966,39 +967,41 @@ fn handle_first_serialization<W>(dest: &mut W, } /// Append a given kind of appendable value to a serialization. -pub fn append_declaration_value<'a, W, I>(dest: &mut W, - appendable_value: AppendableValue<'a, I>) - -> fmt::Result - where W: fmt::Write, - I: Iterator<Item=&'a PropertyDeclaration>, +pub fn append_declaration_value<'a, I>( + dest: &mut CssStringWriter, + appendable_value: AppendableValue<'a, I>, +) -> fmt::Result +where + I: Iterator<Item=&'a PropertyDeclaration>, { match appendable_value { AppendableValue::Css { css, .. } => { - dest.write_str(css) + css.append_to(dest) }, AppendableValue::Declaration(decl) => { decl.to_css(dest) }, AppendableValue::DeclarationsForShorthand(shorthand, decls) => { - shorthand.longhands_to_css(decls, dest) + shorthand.longhands_to_css(decls, &mut CssWriter::new(dest)) } } } /// Append a given property and value pair to a serialization. -pub fn append_serialization<'a, W, I, N>(dest: &mut W, - property_name: &N, - appendable_value: AppendableValue<'a, I>, - importance: Importance, - is_first_serialization: &mut bool) - -> fmt::Result - where W: fmt::Write, - I: Iterator<Item=&'a PropertyDeclaration>, - N: ToCss, +pub fn append_serialization<'a, I, N>( + dest: &mut CssStringWriter, + property_name: &N, + appendable_value: AppendableValue<'a, I>, + importance: Importance, + is_first_serialization: &mut bool +) -> fmt::Result +where + I: Iterator<Item=&'a PropertyDeclaration>, + N: ToCss, { handle_first_serialization(dest, is_first_serialization)?; - property_name.to_css(dest)?; + property_name.to_css(&mut CssWriter::new(dest))?; dest.write_char(':')?; // for normal parsed values, add a space between key: and value diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index f21f33bfd63..b40fb81bcb4 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -1616,57 +1616,9 @@ fn static_assert() { ["border-{0}-radius".format(x.ident.replace("_", "-")) for x in CORNERS]) %> -<% skip_moz_border_color_longhands = " ".join("-moz-border-{0}-colors".format(x.ident) - for x in SIDES) %> <%self:impl_trait style_struct_name="Border" skip_longhands="${skip_border_longhands} border-image-source border-image-outset - border-image-repeat border-image-width border-image-slice - ${skip_moz_border_color_longhands}"> - - fn set_moz_border_colors(&mut self, side: structs::Side, v: Option<Vec<::cssparser::RGBA>>) { - match v { - None => { - let ptr = self.gecko.mBorderColors.mPtr; - if let Some(colors) = unsafe { ptr.as_mut() } { - unsafe { colors.mColors[side as usize].clear() }; - } - } - Some(ref colors) => { - unsafe { bindings::Gecko_EnsureMozBorderColors(&mut self.gecko) }; - let border_colors = unsafe { self.gecko.mBorderColors.mPtr.as_mut().unwrap() }; - let dest_colors = &mut border_colors.mColors[side as usize]; - unsafe { dest_colors.set_len_pod(colors.len() as u32) }; - for (dst, src) in dest_colors.iter_mut().zip(colors.into_iter()) { - *dst = convert_rgba_to_nscolor(src); - } - } - } - } - - fn copy_moz_border_colors_from(&mut self, other: &Self, side: structs::Side) { - if let Some(dest) = unsafe { self.gecko.mBorderColors.mPtr.as_mut() } { - dest.mColors[side as usize].clear_pod(); - } - if let Some(src) = unsafe { other.gecko.mBorderColors.mPtr.as_ref() } { - let src = &src.mColors[side as usize]; - if !src.is_empty() { - unsafe { bindings::Gecko_EnsureMozBorderColors(&mut self.gecko) }; - let dest = unsafe { self.gecko.mBorderColors.mPtr.as_mut().unwrap() }; - let dest = &mut dest.mColors[side as usize]; - unsafe { dest.set_len_pod(src.len() as u32) }; - dest.copy_from_slice(&src); - } - } - } - - fn clone_moz_border_colors(&self, side: structs::Side) -> Option<Vec<::cssparser::RGBA>> { - unsafe { self.gecko.mBorderColors.mPtr.as_ref() }.map(|colors| { - colors.mColors[side as usize].iter() - .map(|color| convert_nscolor_to_rgba(*color)) - .collect() - }) - } - + border-image-repeat border-image-width border-image-slice"> % for side in SIDES: <% impl_keyword("border_%s_style" % side.ident, "mBorderStyle[%s]" % side.index, @@ -1713,29 +1665,6 @@ fn static_assert() { pub fn border_${side.ident}_has_nonzero_width(&self) -> bool { self.gecko.mComputedBorder.${side.ident} != 0 } - - #[allow(non_snake_case)] - pub fn set__moz_border_${side.ident}_colors(&mut self, - v: longhands::_moz_border_${side.ident}_colors::computed_value::T) { - self.set_moz_border_colors(structs::Side::eSide${to_camel_case(side.ident)}, v.0); - } - - #[allow(non_snake_case)] - pub fn copy__moz_border_${side.ident}_colors_from(&mut self, other: &Self) { - self.copy_moz_border_colors_from(other, structs::Side::eSide${to_camel_case(side.ident)}); - } - - #[allow(non_snake_case)] - pub fn reset__moz_border_${side.ident}_colors(&mut self, other: &Self) { - self.copy__moz_border_${side.ident}_colors_from(other) - } - - #[allow(non_snake_case)] - pub fn clone__moz_border_${side.ident}_colors(&self) - -> longhands::_moz_border_${side.ident}_colors::computed_value::T { - use self::longhands::_moz_border_${side.ident}_colors::computed_value::T; - T(self.clone_moz_border_colors(structs::Side::eSide${to_camel_case(side.ident)})) - } % endfor % for corner in CORNERS: @@ -5302,53 +5231,50 @@ clip-path <%self:impl_trait style_struct_name="Pointing" skip_longhands="cursor caret-color"> pub fn set_cursor(&mut self, v: longhands::cursor::computed_value::T) { - use properties::longhands::cursor::computed_value::Keyword; - use style_traits::cursor::Cursor; + use style_traits::cursor::CursorKind; self.gecko.mCursor = match v.keyword { - Keyword::Auto => structs::NS_STYLE_CURSOR_AUTO, - Keyword::Cursor(cursor) => match cursor { - Cursor::None => structs::NS_STYLE_CURSOR_NONE, - Cursor::Default => structs::NS_STYLE_CURSOR_DEFAULT, - Cursor::Pointer => structs::NS_STYLE_CURSOR_POINTER, - Cursor::ContextMenu => structs::NS_STYLE_CURSOR_CONTEXT_MENU, - Cursor::Help => structs::NS_STYLE_CURSOR_HELP, - Cursor::Progress => structs::NS_STYLE_CURSOR_SPINNING, - Cursor::Wait => structs::NS_STYLE_CURSOR_WAIT, - Cursor::Cell => structs::NS_STYLE_CURSOR_CELL, - Cursor::Crosshair => structs::NS_STYLE_CURSOR_CROSSHAIR, - Cursor::Text => structs::NS_STYLE_CURSOR_TEXT, - Cursor::VerticalText => structs::NS_STYLE_CURSOR_VERTICAL_TEXT, - Cursor::Alias => structs::NS_STYLE_CURSOR_ALIAS, - Cursor::Copy => structs::NS_STYLE_CURSOR_COPY, - Cursor::Move => structs::NS_STYLE_CURSOR_MOVE, - Cursor::NoDrop => structs::NS_STYLE_CURSOR_NO_DROP, - Cursor::NotAllowed => structs::NS_STYLE_CURSOR_NOT_ALLOWED, - Cursor::Grab => structs::NS_STYLE_CURSOR_GRAB, - Cursor::Grabbing => structs::NS_STYLE_CURSOR_GRABBING, - Cursor::EResize => structs::NS_STYLE_CURSOR_E_RESIZE, - Cursor::NResize => structs::NS_STYLE_CURSOR_N_RESIZE, - Cursor::NeResize => structs::NS_STYLE_CURSOR_NE_RESIZE, - Cursor::NwResize => structs::NS_STYLE_CURSOR_NW_RESIZE, - Cursor::SResize => structs::NS_STYLE_CURSOR_S_RESIZE, - Cursor::SeResize => structs::NS_STYLE_CURSOR_SE_RESIZE, - Cursor::SwResize => structs::NS_STYLE_CURSOR_SW_RESIZE, - Cursor::WResize => structs::NS_STYLE_CURSOR_W_RESIZE, - Cursor::EwResize => structs::NS_STYLE_CURSOR_EW_RESIZE, - Cursor::NsResize => structs::NS_STYLE_CURSOR_NS_RESIZE, - Cursor::NeswResize => structs::NS_STYLE_CURSOR_NESW_RESIZE, - Cursor::NwseResize => structs::NS_STYLE_CURSOR_NWSE_RESIZE, - Cursor::ColResize => structs::NS_STYLE_CURSOR_COL_RESIZE, - Cursor::RowResize => structs::NS_STYLE_CURSOR_ROW_RESIZE, - Cursor::AllScroll => structs::NS_STYLE_CURSOR_ALL_SCROLL, - Cursor::ZoomIn => structs::NS_STYLE_CURSOR_ZOOM_IN, - Cursor::ZoomOut => structs::NS_STYLE_CURSOR_ZOOM_OUT, - // note: the following properties are gecko-only. - Cursor::MozGrab => structs::NS_STYLE_CURSOR_GRAB, - Cursor::MozGrabbing => structs::NS_STYLE_CURSOR_GRABBING, - Cursor::MozZoomIn => structs::NS_STYLE_CURSOR_ZOOM_IN, - Cursor::MozZoomOut => structs::NS_STYLE_CURSOR_ZOOM_OUT, - } + CursorKind::Auto => structs::NS_STYLE_CURSOR_AUTO, + CursorKind::None => structs::NS_STYLE_CURSOR_NONE, + CursorKind::Default => structs::NS_STYLE_CURSOR_DEFAULT, + CursorKind::Pointer => structs::NS_STYLE_CURSOR_POINTER, + CursorKind::ContextMenu => structs::NS_STYLE_CURSOR_CONTEXT_MENU, + CursorKind::Help => structs::NS_STYLE_CURSOR_HELP, + CursorKind::Progress => structs::NS_STYLE_CURSOR_SPINNING, + CursorKind::Wait => structs::NS_STYLE_CURSOR_WAIT, + CursorKind::Cell => structs::NS_STYLE_CURSOR_CELL, + CursorKind::Crosshair => structs::NS_STYLE_CURSOR_CROSSHAIR, + CursorKind::Text => structs::NS_STYLE_CURSOR_TEXT, + CursorKind::VerticalText => structs::NS_STYLE_CURSOR_VERTICAL_TEXT, + CursorKind::Alias => structs::NS_STYLE_CURSOR_ALIAS, + CursorKind::Copy => structs::NS_STYLE_CURSOR_COPY, + CursorKind::Move => structs::NS_STYLE_CURSOR_MOVE, + CursorKind::NoDrop => structs::NS_STYLE_CURSOR_NO_DROP, + CursorKind::NotAllowed => structs::NS_STYLE_CURSOR_NOT_ALLOWED, + CursorKind::Grab => structs::NS_STYLE_CURSOR_GRAB, + CursorKind::Grabbing => structs::NS_STYLE_CURSOR_GRABBING, + CursorKind::EResize => structs::NS_STYLE_CURSOR_E_RESIZE, + CursorKind::NResize => structs::NS_STYLE_CURSOR_N_RESIZE, + CursorKind::NeResize => structs::NS_STYLE_CURSOR_NE_RESIZE, + CursorKind::NwResize => structs::NS_STYLE_CURSOR_NW_RESIZE, + CursorKind::SResize => structs::NS_STYLE_CURSOR_S_RESIZE, + CursorKind::SeResize => structs::NS_STYLE_CURSOR_SE_RESIZE, + CursorKind::SwResize => structs::NS_STYLE_CURSOR_SW_RESIZE, + CursorKind::WResize => structs::NS_STYLE_CURSOR_W_RESIZE, + CursorKind::EwResize => structs::NS_STYLE_CURSOR_EW_RESIZE, + CursorKind::NsResize => structs::NS_STYLE_CURSOR_NS_RESIZE, + CursorKind::NeswResize => structs::NS_STYLE_CURSOR_NESW_RESIZE, + CursorKind::NwseResize => structs::NS_STYLE_CURSOR_NWSE_RESIZE, + CursorKind::ColResize => structs::NS_STYLE_CURSOR_COL_RESIZE, + CursorKind::RowResize => structs::NS_STYLE_CURSOR_ROW_RESIZE, + CursorKind::AllScroll => structs::NS_STYLE_CURSOR_ALL_SCROLL, + CursorKind::ZoomIn => structs::NS_STYLE_CURSOR_ZOOM_IN, + CursorKind::ZoomOut => structs::NS_STYLE_CURSOR_ZOOM_OUT, + // note: the following properties are gecko-only. + CursorKind::MozGrab => structs::NS_STYLE_CURSOR_GRAB, + CursorKind::MozGrabbing => structs::NS_STYLE_CURSOR_GRABBING, + CursorKind::MozZoomIn => structs::NS_STYLE_CURSOR_ZOOM_IN, + CursorKind::MozZoomOut => structs::NS_STYLE_CURSOR_ZOOM_OUT, } as u8; unsafe { @@ -5390,47 +5316,47 @@ clip-path } pub fn clone_cursor(&self) -> longhands::cursor::computed_value::T { - use properties::longhands::cursor::computed_value::{Keyword, Image}; - use style_traits::cursor::Cursor; + use values::computed::pointing::CursorImage; + use style_traits::cursor::CursorKind; use values::specified::url::SpecifiedUrl; let keyword = match self.gecko.mCursor as u32 { - structs::NS_STYLE_CURSOR_AUTO => Keyword::Auto, - structs::NS_STYLE_CURSOR_NONE => Keyword::Cursor(Cursor::None), - structs::NS_STYLE_CURSOR_DEFAULT => Keyword::Cursor(Cursor::Default), - structs::NS_STYLE_CURSOR_POINTER => Keyword::Cursor(Cursor::Pointer), - structs::NS_STYLE_CURSOR_CONTEXT_MENU => Keyword::Cursor(Cursor::ContextMenu), - structs::NS_STYLE_CURSOR_HELP => Keyword::Cursor(Cursor::Help), - structs::NS_STYLE_CURSOR_SPINNING => Keyword::Cursor(Cursor::Progress), - structs::NS_STYLE_CURSOR_WAIT => Keyword::Cursor(Cursor::Wait), - structs::NS_STYLE_CURSOR_CELL => Keyword::Cursor(Cursor::Cell), - structs::NS_STYLE_CURSOR_CROSSHAIR => Keyword::Cursor(Cursor::Crosshair), - structs::NS_STYLE_CURSOR_TEXT => Keyword::Cursor(Cursor::Text), - structs::NS_STYLE_CURSOR_VERTICAL_TEXT => Keyword::Cursor(Cursor::VerticalText), - structs::NS_STYLE_CURSOR_ALIAS => Keyword::Cursor(Cursor::Alias), - structs::NS_STYLE_CURSOR_COPY => Keyword::Cursor(Cursor::Copy), - structs::NS_STYLE_CURSOR_MOVE => Keyword::Cursor(Cursor::Move), - structs::NS_STYLE_CURSOR_NO_DROP => Keyword::Cursor(Cursor::NoDrop), - structs::NS_STYLE_CURSOR_NOT_ALLOWED => Keyword::Cursor(Cursor::NotAllowed), - structs::NS_STYLE_CURSOR_GRAB => Keyword::Cursor(Cursor::Grab), - structs::NS_STYLE_CURSOR_GRABBING => Keyword::Cursor(Cursor::Grabbing), - structs::NS_STYLE_CURSOR_E_RESIZE => Keyword::Cursor(Cursor::EResize), - structs::NS_STYLE_CURSOR_N_RESIZE => Keyword::Cursor(Cursor::NResize), - structs::NS_STYLE_CURSOR_NE_RESIZE => Keyword::Cursor(Cursor::NeResize), - structs::NS_STYLE_CURSOR_NW_RESIZE => Keyword::Cursor(Cursor::NwResize), - structs::NS_STYLE_CURSOR_S_RESIZE => Keyword::Cursor(Cursor::SResize), - structs::NS_STYLE_CURSOR_SE_RESIZE => Keyword::Cursor(Cursor::SeResize), - structs::NS_STYLE_CURSOR_SW_RESIZE => Keyword::Cursor(Cursor::SwResize), - structs::NS_STYLE_CURSOR_W_RESIZE => Keyword::Cursor(Cursor::WResize), - structs::NS_STYLE_CURSOR_EW_RESIZE => Keyword::Cursor(Cursor::EwResize), - structs::NS_STYLE_CURSOR_NS_RESIZE => Keyword::Cursor(Cursor::NsResize), - structs::NS_STYLE_CURSOR_NESW_RESIZE => Keyword::Cursor(Cursor::NeswResize), - structs::NS_STYLE_CURSOR_NWSE_RESIZE => Keyword::Cursor(Cursor::NwseResize), - structs::NS_STYLE_CURSOR_COL_RESIZE => Keyword::Cursor(Cursor::ColResize), - structs::NS_STYLE_CURSOR_ROW_RESIZE => Keyword::Cursor(Cursor::RowResize), - structs::NS_STYLE_CURSOR_ALL_SCROLL => Keyword::Cursor(Cursor::AllScroll), - structs::NS_STYLE_CURSOR_ZOOM_IN => Keyword::Cursor(Cursor::ZoomIn), - structs::NS_STYLE_CURSOR_ZOOM_OUT => Keyword::Cursor(Cursor::ZoomOut), + structs::NS_STYLE_CURSOR_AUTO => CursorKind::Auto, + structs::NS_STYLE_CURSOR_NONE => CursorKind::None, + structs::NS_STYLE_CURSOR_DEFAULT => CursorKind::Default, + structs::NS_STYLE_CURSOR_POINTER => CursorKind::Pointer, + structs::NS_STYLE_CURSOR_CONTEXT_MENU => CursorKind::ContextMenu, + structs::NS_STYLE_CURSOR_HELP => CursorKind::Help, + structs::NS_STYLE_CURSOR_SPINNING => CursorKind::Progress, + structs::NS_STYLE_CURSOR_WAIT => CursorKind::Wait, + structs::NS_STYLE_CURSOR_CELL => CursorKind::Cell, + structs::NS_STYLE_CURSOR_CROSSHAIR => CursorKind::Crosshair, + structs::NS_STYLE_CURSOR_TEXT => CursorKind::Text, + structs::NS_STYLE_CURSOR_VERTICAL_TEXT => CursorKind::VerticalText, + structs::NS_STYLE_CURSOR_ALIAS => CursorKind::Alias, + structs::NS_STYLE_CURSOR_COPY => CursorKind::Copy, + structs::NS_STYLE_CURSOR_MOVE => CursorKind::Move, + structs::NS_STYLE_CURSOR_NO_DROP => CursorKind::NoDrop, + structs::NS_STYLE_CURSOR_NOT_ALLOWED => CursorKind::NotAllowed, + structs::NS_STYLE_CURSOR_GRAB => CursorKind::Grab, + structs::NS_STYLE_CURSOR_GRABBING => CursorKind::Grabbing, + structs::NS_STYLE_CURSOR_E_RESIZE => CursorKind::EResize, + structs::NS_STYLE_CURSOR_N_RESIZE => CursorKind::NResize, + structs::NS_STYLE_CURSOR_NE_RESIZE => CursorKind::NeResize, + structs::NS_STYLE_CURSOR_NW_RESIZE => CursorKind::NwResize, + structs::NS_STYLE_CURSOR_S_RESIZE => CursorKind::SResize, + structs::NS_STYLE_CURSOR_SE_RESIZE => CursorKind::SeResize, + structs::NS_STYLE_CURSOR_SW_RESIZE => CursorKind::SwResize, + structs::NS_STYLE_CURSOR_W_RESIZE => CursorKind::WResize, + structs::NS_STYLE_CURSOR_EW_RESIZE => CursorKind::EwResize, + structs::NS_STYLE_CURSOR_NS_RESIZE => CursorKind::NsResize, + structs::NS_STYLE_CURSOR_NESW_RESIZE => CursorKind::NeswResize, + structs::NS_STYLE_CURSOR_NWSE_RESIZE => CursorKind::NwseResize, + structs::NS_STYLE_CURSOR_COL_RESIZE => CursorKind::ColResize, + structs::NS_STYLE_CURSOR_ROW_RESIZE => CursorKind::RowResize, + structs::NS_STYLE_CURSOR_ALL_SCROLL => CursorKind::AllScroll, + structs::NS_STYLE_CURSOR_ZOOM_IN => CursorKind::ZoomIn, + structs::NS_STYLE_CURSOR_ZOOM_OUT => CursorKind::ZoomOut, _ => panic!("Found unexpected value in style struct for cursor property"), }; @@ -5448,8 +5374,8 @@ clip-path None }; - Image { url, hotspot } - }).collect(); + CursorImage { url, hotspot } + }).collect::<Vec<_>>().into_boxed_slice(); longhands::cursor::computed_value::T { images, keyword } } diff --git a/components/style/properties/helpers.mako.rs b/components/style/properties/helpers.mako.rs index becef724657..4d7c1ff19ad 100644 --- a/components/style/properties/helpers.mako.rs +++ b/components/style/properties/helpers.mako.rs @@ -82,8 +82,8 @@ need_animatable=need_animatable, **kwargs)"> #[allow(unused_imports)] use smallvec::SmallVec; - use std::fmt; - use style_traits::{Separator, ToCss}; + use std::fmt::{self, Write}; + use style_traits::{CssWriter, Separator, ToCss}; pub mod single_value { #[allow(unused_imports)] @@ -154,8 +154,9 @@ } impl ToCss for computed_value::T { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { let mut iter = self.0.iter(); if let Some(val) = iter.next() { @@ -180,8 +181,9 @@ pub struct SpecifiedValue(pub Vec<single_value::SpecifiedValue>); impl ToCss for SpecifiedValue { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { let mut iter = self.0.iter(); if let Some(val) = iter.next() { @@ -682,11 +684,11 @@ #[allow(unused_imports)] use selectors::parser::SelectorParseErrorKind; #[allow(unused_imports)] - use std::fmt; + use std::fmt::{self, Write}; #[allow(unused_imports)] use style_traits::{ParseError, StyleParseErrorKind}; #[allow(unused_imports)] - use style_traits::ToCss; + use style_traits::{CssWriter, ToCss}; pub struct Longhands { % for sub_property in shorthand.sub_properties: @@ -806,7 +808,10 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let rect = Rect::new( % for side in ["top", "right", "bottom", "left"]: &self.${to_rust_ident(sub_property_pattern % side)}, diff --git a/components/style/properties/helpers/animated_properties.mako.rs b/components/style/properties/helpers/animated_properties.mako.rs index a4581f1c31e..6a76f0a84e1 100644 --- a/components/style/properties/helpers/animated_properties.mako.rs +++ b/components/style/properties/helpers/animated_properties.mako.rs @@ -27,9 +27,9 @@ use selectors::parser::SelectorParseErrorKind; use servo_arc::Arc; use smallvec::SmallVec; use std::cmp; -use std::fmt; +use std::fmt::{self, Write}; #[cfg(feature = "gecko")] use hash::FnvHashMap; -use style_traits::{ParseError, ToCss}; +use style_traits::{CssWriter, ParseError, ToCss}; use super::ComputedValues; use values::{CSSFloat, CustomIdent, Either}; use values::animated::{Animate, Procedure, ToAnimatedValue, ToAnimatedZero}; @@ -94,7 +94,10 @@ pub enum TransitionProperty { } impl ToCss for TransitionProperty { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { TransitionProperty::All => dest.write_str("all"), TransitionProperty::Shorthand(ref id) => dest.write_str(id.name()), diff --git a/components/style/properties/longhand/border.mako.rs b/components/style/properties/longhand/border.mako.rs index 11fdf30b983..a24c31acf88 100644 --- a/components/style/properties/longhand/border.mako.rs +++ b/components/style/properties/longhand/border.mako.rs @@ -67,129 +67,6 @@ ${helpers.gecko_keyword_conversion(Keyword('border-style', animation_value_type="BorderCornerRadius")} % endfor -/// -moz-border-*-colors: color, string, enum, none, inherit/initial -/// These non-spec properties are just for Gecko (Stylo) internal use. -% for side in PHYSICAL_SIDES: - <%helpers:longhand name="-moz-border-${side}-colors" animation_value_type="discrete" - spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-border-*-colors)" - products="gecko" - flags="APPLIES_TO_FIRST_LETTER" - enabled_in="chrome" - ignored_when_colors_disabled="True"> - use std::fmt; - use style_traits::ToCss; - use values::specified::RGBAColor; - - pub mod computed_value { - use cssparser::RGBA; - #[derive(Clone, Debug, MallocSizeOf, PartialEq)] - pub struct T(pub Option<Vec<RGBA>>); - } - - #[derive(Clone, Debug, MallocSizeOf, PartialEq)] - pub enum SpecifiedValue { - None, - Colors(Vec<RGBAColor>), - } - - impl ToCss for computed_value::T { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - match self.0 { - None => return dest.write_str("none"), - Some(ref vec) => { - let mut first = true; - for ref color in vec { - if !first { - dest.write_str(" ")?; - } - first = false; - color.to_css(dest)? - } - Ok(()) - } - } - } - } - - impl ToCss for SpecifiedValue { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - match *self { - SpecifiedValue::None => return dest.write_str("none"), - SpecifiedValue::Colors(ref vec) => { - let mut first = true; - for ref color in vec { - if !first { - dest.write_str(" ")?; - } - first = false; - color.to_css(dest)? - } - Ok(()) - } - } - } - } - - #[inline] pub fn get_initial_value() -> computed_value::T { - computed_value::T(None) - } - - #[inline] pub fn get_initial_specified_value() -> SpecifiedValue { - SpecifiedValue::None - } - - impl ToComputedValue for SpecifiedValue { - type ComputedValue = computed_value::T; - - #[inline] - fn to_computed_value(&self, context: &Context) -> computed_value::T { - match *self { - SpecifiedValue::Colors(ref vec) => { - computed_value::T(Some(vec.iter() - .map(|c| c.to_computed_value(context)) - .collect())) - }, - SpecifiedValue::None => { - computed_value::T(None) - } - } - } - #[inline] - fn from_computed_value(computed: &computed_value::T) -> Self { - match *computed { - computed_value::T(Some(ref vec)) => { - SpecifiedValue::Colors(vec.iter() - .map(ToComputedValue::from_computed_value) - .collect()) - }, - computed_value::T(None) => { - SpecifiedValue::None - } - } - } - } - - #[inline] - pub fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result<SpecifiedValue, ParseError<'i>> { - if input.try(|input| input.expect_ident_matching("none")).is_ok() { - return Ok(SpecifiedValue::None) - } - - let mut result = Vec::new(); - while let Ok(value) = input.try(|i| RGBAColor::parse(context, i)) { - result.push(value); - } - - if !result.is_empty() { - Ok(SpecifiedValue::Colors(result)) - } else { - Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError)) - } - } - </%helpers:longhand> -% endfor - ${helpers.single_keyword("box-decoration-break", "slice clone", gecko_enum_prefix="StyleBoxDecorationBreak", gecko_pref="layout.css.box-decoration-break.enabled", diff --git a/components/style/properties/longhand/color.mako.rs b/components/style/properties/longhand/color.mako.rs index 459352fd59c..3dfc685f082 100644 --- a/components/style/properties/longhand/color.mako.rs +++ b/components/style/properties/longhand/color.mako.rs @@ -66,8 +66,8 @@ pub mod system_colors { use cssparser::Parser; use gecko_bindings::bindings::Gecko_GetLookAndFeelSystemColor; use gecko_bindings::structs::root::mozilla::LookAndFeel_ColorID; - use std::fmt; - use style_traits::ToCss; + use std::fmt::{self, Write}; + use style_traits::{CssWriter, ToCss}; use values::computed::{Context, ToComputedValue}; pub type SystemColor = LookAndFeel_ColorID; @@ -77,7 +77,10 @@ pub mod system_colors { malloc_size_of_is_0!(SystemColor); impl ToCss for SystemColor { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let s = match *self { % for color in system_colors + extra_colors: LookAndFeel_ColorID::eColorID_${to_rust_ident(color)} => "${color}", diff --git a/components/style/properties/longhand/counters.mako.rs b/components/style/properties/longhand/counters.mako.rs index c65a5ba3239..d55e880dcc9 100644 --- a/components/style/properties/longhand/counters.mako.rs +++ b/components/style/properties/longhand/counters.mako.rs @@ -23,8 +23,8 @@ pub mod computed_value { use cssparser; - use std::fmt; - use style_traits::ToCss; + use std::fmt::{self, Write}; + use style_traits::{CssWriter, ToCss}; #[cfg(feature = "gecko")] use values::specified::url::SpecifiedUrl; @@ -62,7 +62,10 @@ } impl ToCss for ContentItem { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { ContentItem::String(ref s) => s.to_css(dest), ContentItem::Counter(ref s, ref counter_style) => { @@ -106,7 +109,10 @@ } impl ToCss for T { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { T::Normal => dest.write_str("normal"), T::None => dest.write_str("none"), @@ -232,8 +238,8 @@ <%helpers:longhand name="counter-increment" animation_value_type="discrete" spec="https://drafts.csswg.org/css-lists/#propdef-counter-increment"> - use std::fmt; - use style_traits::ToCss; + use std::fmt::{self, Write}; + use style_traits::{CssWriter, ToCss}; use values::CustomIdent; #[cfg_attr(feature = "gecko", derive(MallocSizeOf))] @@ -241,16 +247,17 @@ pub struct SpecifiedValue(pub Vec<(CustomIdent, specified::Integer)>); pub mod computed_value { - use std::fmt; - use style_traits::ToCss; + use std::fmt::{self, Write}; + use style_traits::{CssWriter, ToCss}; use values::CustomIdent; #[derive(Clone, Debug, MallocSizeOf, PartialEq)] pub struct T(pub Vec<(CustomIdent, i32)>); impl ToCss for T { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { if self.0.is_empty() { return dest.write_str("none") @@ -292,10 +299,10 @@ computed_value::T(Vec::new()) } - impl ToCss for SpecifiedValue { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { if self.0.is_empty() { return dest.write_str("none"); diff --git a/components/style/properties/longhand/inherited_text.mako.rs b/components/style/properties/longhand/inherited_text.mako.rs index a9ae76fe9a3..c7ad330a274 100644 --- a/components/style/properties/longhand/inherited_text.mako.rs +++ b/components/style/properties/longhand/inherited_text.mako.rs @@ -193,8 +193,8 @@ ${helpers.predefined_type( animation_value_type="discrete" spec="https://drafts.csswg.org/css-text-decor/#propdef-text-emphasis-style"> use computed_values::writing_mode::T as WritingMode; - use std::fmt; - use style_traits::ToCss; + use std::fmt::{self, Write}; + use style_traits::{CssWriter, ToCss}; use unicode_segmentation::UnicodeSegmentation; @@ -229,7 +229,7 @@ ${helpers.predefined_type( } impl ToCss for KeywordValue { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if let Some(fill) = self.fill() { if fill { dest.write_str("filled")?; @@ -246,8 +246,12 @@ ${helpers.predefined_type( Ok(()) } } + impl ToCss for computed_value::KeywordValue { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.fill { dest.write_str("filled")?; } else { diff --git a/components/style/properties/longhand/pointing.mako.rs b/components/style/properties/longhand/pointing.mako.rs index 75731428a26..6361e394a09 100644 --- a/components/style/properties/longhand/pointing.mako.rs +++ b/components/style/properties/longhand/pointing.mako.rs @@ -6,142 +6,12 @@ <% data.new_style_struct("Pointing", inherited=True, gecko_name="UserInterface") %> -<%helpers:longhand name="cursor" boxed="${product == 'gecko'}" animation_value_type="discrete" - spec="https://drafts.csswg.org/css-ui/#cursor"> - pub use self::computed_value::T as SpecifiedValue; - #[cfg(feature = "gecko")] - use values::specified::url::SpecifiedUrl; - - pub mod computed_value { - #[cfg(feature = "gecko")] - use std::fmt; - #[cfg(feature = "gecko")] - use style_traits::ToCss; - use style_traits::cursor::Cursor; - #[cfg(feature = "gecko")] - use values::specified::url::SpecifiedUrl; - - #[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)] - pub enum Keyword { - Auto, - Cursor(Cursor), - } - - #[cfg(not(feature = "gecko"))] - pub type T = Keyword; - - #[cfg(feature = "gecko")] - #[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue)] - pub struct Image { - pub url: SpecifiedUrl, - pub hotspot: Option<(f32, f32)>, - } - - #[cfg(feature = "gecko")] - #[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue)] - pub struct T { - pub images: Vec<Image>, - pub keyword: Keyword, - } - - #[cfg(feature = "gecko")] - impl ToCss for Image { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - self.url.to_css(dest)?; - if let Some((x, y)) = self.hotspot { - dest.write_str(" ")?; - x.to_css(dest)?; - dest.write_str(" ")?; - y.to_css(dest)?; - } - Ok(()) - } - } - - #[cfg(feature = "gecko")] - impl ToCss for T { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - for url in &self.images { - url.to_css(dest)?; - dest.write_str(", ")?; - } - self.keyword.to_css(dest) - } - } - } - - #[cfg(not(feature = "gecko"))] - #[inline] - pub fn get_initial_value() -> computed_value::T { - computed_value::Keyword::Auto - } - - #[cfg(feature = "gecko")] - #[inline] - pub fn get_initial_value() -> computed_value::T { - computed_value::T { - images: vec![], - keyword: computed_value::Keyword::Auto - } - } - - impl Parse for computed_value::Keyword { - fn parse<'i, 't>(_context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result<computed_value::Keyword, ParseError<'i>> { - #[allow(unused_imports)] use std::ascii::AsciiExt; - use style_traits::cursor::Cursor; - let location = input.current_source_location(); - let ident = input.expect_ident()?; - if ident.eq_ignore_ascii_case("auto") { - Ok(computed_value::Keyword::Auto) - } else { - Cursor::from_css_keyword(&ident) - .map(computed_value::Keyword::Cursor) - .map_err(|()| location.new_custom_error(SelectorParseErrorKind::UnexpectedIdent(ident.clone()))) - } - } - } - - #[cfg(feature = "gecko")] - fn parse_image<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result<computed_value::Image, ParseError<'i>> { - Ok(computed_value::Image { - url: SpecifiedUrl::parse(context, input)?, - hotspot: match input.try(|input| input.expect_number()) { - Ok(number) => Some((number, input.expect_number()?)), - Err(_) => None, - }, - }) - } - - #[cfg(not(feature = "gecko"))] - pub fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result<SpecifiedValue, ParseError<'i>> { - computed_value::Keyword::parse(context, input) - } - - /// cursor: [<url> [<number> <number>]?]# [auto | default | ...] - #[cfg(feature = "gecko")] - pub fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) - -> Result<SpecifiedValue, ParseError<'i>> { - let mut images = vec![]; - loop { - match input.try(|input| parse_image(context, input)) { - Ok(mut image) => { - image.url.build_image_value(); - images.push(image) - } - Err(_) => break, - } - input.expect_comma()?; - } - - Ok(computed_value::T { - images: images, - keyword: computed_value::Keyword::parse(context, input)?, - }) - } -</%helpers:longhand> +${helpers.predefined_type("cursor", + "Cursor", + "computed::Cursor::auto()", + initial_specified_value="specified::Cursor::auto()", + animation_value_type="discrete", + spec="https://drafts.csswg.org/css-ui/#cursor")} // NB: `pointer-events: auto` (and use of `pointer-events` in anything that isn't SVG, in fact) // is nonstandard, slated for CSS4-UI. diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index 272aed29391..73c0cd6498c 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -12,12 +12,14 @@ #[cfg(feature = "servo")] use app_units::Au; +use dom::TElement; use custom_properties::CustomPropertiesBuilder; use servo_arc::{Arc, UniqueArc}; use smallbitvec::SmallBitVec; use std::borrow::Cow; -use std::{fmt, mem, ops}; +use std::{mem, ops}; use std::cell::RefCell; +use std::fmt::{self, Write}; #[cfg(feature = "servo")] use cssparser::RGBA; use cssparser::{CowRcStr, Parser, TokenSerializationType, serialize_identifier}; @@ -38,7 +40,7 @@ use selector_parser::PseudoElement; use selectors::parser::SelectorParseErrorKind; #[cfg(feature = "servo")] use servo_config::prefs::PREFS; use shared_lock::StylesheetGuards; -use style_traits::{ParsingMode, ToCss, ParseError, StyleParseErrorKind}; +use style_traits::{CssWriter, ParseError, ParsingMode, StyleParseErrorKind, ToCss}; use stylesheets::{CssRuleType, Origin, UrlExtraData}; #[cfg(feature = "servo")] use values::Either; use values::generics::text::LineHeight; @@ -46,6 +48,7 @@ use values::computed; use values::computed::NonNegativeLength; use rule_tree::{CascadeLevel, StrongRuleNode}; use self::computed_value_flags::*; +use str::{CssString, CssStringBorrow, CssStringWriter}; use style_adjuster::StyleAdjuster; pub use self::declaration_block::*; @@ -793,10 +796,6 @@ impl LonghandId { LonghandId::BorderImageSource | LonghandId::BoxShadow | LonghandId::MaskImage | - LonghandId::MozBorderBottomColors | - LonghandId::MozBorderLeftColors | - LonghandId::MozBorderRightColors | - LonghandId::MozBorderTopColors | LonghandId::TextShadow ) % else: @@ -856,9 +855,14 @@ impl ShorthandId { /// /// Returns an error if writing to the stream fails, or if the declarations /// do not map to a shorthand. - pub fn longhands_to_css<'a, W, I>(&self, declarations: I, dest: &mut W) -> fmt::Result - where W: fmt::Write, - I: Iterator<Item=&'a PropertyDeclaration>, + pub fn longhands_to_css<'a, W, I>( + &self, + declarations: I, + dest: &mut CssWriter<W>, + ) -> fmt::Result + where + W: Write, + I: Iterator<Item=&'a PropertyDeclaration>, { match *self { ShorthandId::All => { @@ -902,7 +906,7 @@ impl ShorthandId { if let Some(css) = first_declaration.with_variables_from_shorthand(self) { if declarations2.all(|d| d.with_variables_from_shorthand(self) == Some(css)) { return Some(AppendableValue::Css { - css: css, + css: CssStringBorrow::from(css), with_variables: true, }); } @@ -913,7 +917,7 @@ impl ShorthandId { if let Some(keyword) = first_declaration.get_css_wide_keyword() { if declarations2.all(|d| d.get_css_wide_keyword() == Some(keyword)) { return Some(AppendableValue::Css { - css: keyword.to_str(), + css: CssStringBorrow::from(keyword.to_str()), with_variables: false, }); } @@ -1076,8 +1080,9 @@ impl UnparsedValue { } impl<'a, T: ToCss> ToCss for DeclaredValue<'a, T> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { match *self { DeclaredValue::Value(ref inner) => inner.to_css(dest), @@ -1105,8 +1110,9 @@ pub enum PropertyDeclarationId<'a> { } impl<'a> ToCss for PropertyDeclarationId<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { match *self { PropertyDeclarationId::Longhand(id) => dest.write_str(id.name()), @@ -1151,7 +1157,6 @@ impl<'a> PropertyDeclarationId<'a> { match *self { PropertyDeclarationId::Longhand(id) => id.name().into(), PropertyDeclarationId::Custom(name) => { - use std::fmt::Write; let mut s = String::new(); write!(&mut s, "--{}", name).unwrap(); s.into() @@ -1178,13 +1183,14 @@ pub enum PropertyId { impl fmt::Debug for PropertyId { fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - self.to_css(formatter) + self.to_css(&mut CssWriter::new(formatter)) } } impl ToCss for PropertyId { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { match *self { PropertyId::Longhand(id) => dest.write_str(id.name()), @@ -1332,7 +1338,6 @@ impl PropertyId { PropertyId::LonghandAlias(id, _) | PropertyId::Longhand(id) => id.name().into(), PropertyId::Custom(ref name) => { - use std::fmt::Write; let mut s = String::new(); write!(&mut s, "--{}", name).unwrap(); s.into() @@ -1465,22 +1470,32 @@ pub enum PropertyDeclaration { impl fmt::Debug for PropertyDeclaration { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - self.id().to_css(f)?; + self.id().to_css(&mut CssWriter::new(f))?; f.write_str(": ")?; - self.to_css(f) + + // Because PropertyDeclaration::to_css requires CssStringWriter, we can't write + // it directly to f, and need to allocate an intermediate string. This is + // fine for debug-only code. + let mut s = CssString::new(); + self.to_css(&mut s)?; + write!(f, "{}", s) } } -impl ToCss for PropertyDeclaration { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, - { +impl PropertyDeclaration { + /// Like the method on ToCss, but without the type parameter to avoid + /// accidentally monomorphizing this large function multiple times for + /// different writers. + pub fn to_css(&self, dest: &mut CssStringWriter) -> fmt::Result { match *self { % for property in data.longhands: - PropertyDeclaration::${property.camel_case}(ref value) => - value.to_css(dest), + PropertyDeclaration::${property.camel_case}(ref value) => { + value.to_css(&mut CssWriter::new(dest)) + } % endfor - PropertyDeclaration::CSSWideKeyword(_, keyword) => keyword.to_css(dest), + PropertyDeclaration::CSSWideKeyword(_, keyword) => { + keyword.to_css(&mut CssWriter::new(dest)) + }, PropertyDeclaration::WithVariables(_, ref with_variables) => { // https://drafts.csswg.org/css-variables/#variables-in-shorthands match with_variables.from_shorthand { @@ -1494,7 +1509,9 @@ impl ToCss for PropertyDeclaration { } Ok(()) }, - PropertyDeclaration::Custom(_, ref value) => value.borrow().to_css(dest), + PropertyDeclaration::Custom(_, ref value) => { + value.borrow().to_css(&mut CssWriter::new(dest)) + }, } } } @@ -3141,30 +3158,8 @@ bitflags! { /// present, non-inherited styles are reset to their initial values. const INHERIT_ALL = 1; - /// Whether to skip any display style fixup for root element, flex/grid - /// item, and ruby descendants. - const SKIP_ROOT_AND_ITEM_BASED_DISPLAY_FIXUP = 1 << 1; - /// Whether to only cascade properties that are visited dependent. - const VISITED_DEPENDENT_ONLY = 1 << 2; - - /// Whether the given element we're styling is the document element, - /// that is, matches :root. - /// - /// Not set for native anonymous content since some NAC form their own - /// root, but share the device. - /// - /// This affects some style adjustments, like blockification, and means - /// that it may affect global state, like the Device's root font-size. - const IS_ROOT_ELEMENT = 1 << 3; - - /// Whether we're computing the style of a link, either visited or - /// unvisited. - const IS_LINK = 1 << 4; - - /// Whether we're computing the style of a link element that happens to - /// be visited. - const IS_VISITED_LINK = 1 << 5; + const VISITED_DEPENDENT_ONLY = 1 << 1; } } @@ -3182,7 +3177,7 @@ bitflags! { /// Returns the computed values. /// * `flags`: Various flags. /// -pub fn cascade( +pub fn cascade<E>( device: &Device, pseudo: Option<<&PseudoElement>, rule_node: &StrongRuleNode, @@ -3196,7 +3191,11 @@ pub fn cascade( quirks_mode: QuirksMode, rule_cache: Option<<&RuleCache>, rule_cache_conditions: &mut RuleCacheConditions, -) -> Arc<ComputedValues> { + element: Option<E>, +) -> Arc<ComputedValues> +where + E: TElement, +{ debug_assert_eq!(parent_style.is_some(), parent_style_ignoring_first_line.is_some()); let empty = SmallBitVec::new(); @@ -3255,12 +3254,13 @@ pub fn cascade( quirks_mode, rule_cache, rule_cache_conditions, + element, ) } /// NOTE: This function expects the declaration with more priority to appear /// first. -pub fn apply_declarations<'a, F, I>( +pub fn apply_declarations<'a, E, F, I>( device: &Device, pseudo: Option<<&PseudoElement>, rules: &StrongRuleNode, @@ -3275,8 +3275,10 @@ pub fn apply_declarations<'a, F, I>( quirks_mode: QuirksMode, rule_cache: Option<<&RuleCache>, rule_cache_conditions: &mut RuleCacheConditions, + element: Option<E>, ) -> Arc<ComputedValues> where + E: TElement, F: Fn() -> I, I: Iterator<Item = (&'a PropertyDeclaration, CascadeLevel)>, { @@ -3312,7 +3314,7 @@ where }; let mut context = computed::Context { - is_root_element: flags.contains(CascadeFlags::IS_ROOT_ELEMENT), + is_root_element: pseudo.is_none() && element.map_or(false, |e| e.is_root()), // We'd really like to own the rules here to avoid refcount traffic, but // animation's usage of `apply_declarations` make this tricky. See bug // 1375525. @@ -3596,8 +3598,11 @@ where builder.clear_modified_reset(); - StyleAdjuster::new(&mut builder) - .adjust(layout_parent_style, flags); + StyleAdjuster::new(&mut builder).adjust( + layout_parent_style, + element, + flags, + ); if builder.modified_reset() || !apply_reset { // If we adjusted any reset structs, we can't cache this ComputedValues. diff --git a/components/style/properties/shorthand/background.mako.rs b/components/style/properties/shorthand/background.mako.rs index 4fb5f2c10f4..8fd2101ecec 100644 --- a/components/style/properties/shorthand/background.mako.rs +++ b/components/style/properties/shorthand/background.mako.rs @@ -131,7 +131,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let len = self.background_image.0.len(); // There should be at least one declared value if len == 0 { @@ -228,7 +228,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let len = self.background_position_x.0.len(); if len == 0 || len != self.background_position_y.0.len() { return Ok(()); diff --git a/components/style/properties/shorthand/border.mako.rs b/components/style/properties/shorthand/border.mako.rs index 3d175350a90..0209ebb2376 100644 --- a/components/style/properties/shorthand/border.mako.rs +++ b/components/style/properties/shorthand/border.mako.rs @@ -34,7 +34,7 @@ ${helpers.four_sides_shorthand("border-style", "border-%s-style", } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { % for side in PHYSICAL_SIDES: let ${side} = &self.border_${side}_width; % endfor @@ -113,7 +113,7 @@ pub fn parse_border<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { super::serialize_directional_border( dest, self.border_${to_rust_ident(side)}_width, @@ -156,7 +156,7 @@ pub fn parse_border<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let all_equal = { % for side in PHYSICAL_SIDES: let border_${side}_width = self.border_${side}_width; @@ -215,7 +215,7 @@ pub fn parse_border<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let LonghandsToSerialize { border_top_left_radius: &BorderCornerRadius(ref tl), border_top_right_radius: &BorderCornerRadius(ref tr), @@ -315,7 +315,7 @@ pub fn parse_border<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.border_image_source.to_css(dest)?; dest.write_str(" ")?; self.border_image_slice.to_css(dest)?; diff --git a/components/style/properties/shorthand/box.mako.rs b/components/style/properties/shorthand/box.mako.rs index ca8523173f8..137599078ad 100644 --- a/components/style/properties/shorthand/box.mako.rs +++ b/components/style/properties/shorthand/box.mako.rs @@ -48,7 +48,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if self.overflow_x == self.overflow_y { self.overflow_x.to_css(dest) } else { @@ -83,7 +83,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.overflow_clip_box_block.to_css(dest)?; if self.overflow_clip_box_block != self.overflow_clip_box_inline { @@ -203,7 +203,7 @@ macro_rules! try_parse_one { } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let property_len = self.transition_property.0.len(); // There are two cases that we can do shorthand serialization: @@ -327,7 +327,7 @@ macro_rules! try_parse_one { } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let len = self.animation_name.0.len(); // There should be at least one declared value if len == 0 { @@ -376,7 +376,7 @@ macro_rules! try_parse_one { impl<'a> ToCss for LonghandsToSerialize<'a> { // Serializes into the single keyword value if both scroll-snap-type-x and scroll-snap-type-y are same. // Otherwise into an empty string. This is done to match Gecko's behaviour. - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if self.scroll_snap_type_x == self.scroll_snap_type_y { self.scroll_snap_type_x.to_css(dest) } else { @@ -406,7 +406,7 @@ macro_rules! try_parse_one { impl<'a> ToCss for LonghandsToSerialize<'a> { // Serializes into the single keyword value if both overscroll-behavior-x and overscroll-behavior-y are same. // Otherwise into two values separated by a space. - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.overscroll_behavior_x.to_css(dest)?; if self.overscroll_behavior_y != self.overscroll_behavior_x { dest.write_str(" ")?; diff --git a/components/style/properties/shorthand/font.mako.rs b/components/style/properties/shorthand/font.mako.rs index b40505e3c86..22bbe7d71ff 100644 --- a/components/style/properties/shorthand/font.mako.rs +++ b/components/style/properties/shorthand/font.mako.rs @@ -151,9 +151,14 @@ } impl<'a> LonghandsToSerialize<'a> { - fn to_css_for<W>(&self, - serialize_for: SerializeFor, - dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css_for<W>( + &self, + serialize_for: SerializeFor, + dest: &mut CssWriter<W>, + ) -> fmt::Result + where + W: Write, + { % if product == "gecko": match self.check_system() { CheckSystemResult::AllSystem(sys) => return sys.to_css(dest), @@ -226,7 +231,7 @@ } /// Serialize the shorthand value for canvas font attribute. - pub fn to_css_for_canvas<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + pub fn to_css_for_canvas<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.to_css_for(SerializeFor::Canvas, dest) } % endif @@ -234,7 +239,7 @@ // This may be a bit off, unsure, possibly needs changes impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.to_css_for(SerializeFor::Normal, dest) } } @@ -309,7 +314,7 @@ impl<'a> ToCss for LonghandsToSerialize<'a> { #[allow(unused_assignments)] - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let has_none_ligatures = % if product == "gecko": diff --git a/components/style/properties/shorthand/inherited_svg.mako.rs b/components/style/properties/shorthand/inherited_svg.mako.rs index 76f1c840f0e..1742ef28ed7 100644 --- a/components/style/properties/shorthand/inherited_svg.mako.rs +++ b/components/style/properties/shorthand/inherited_svg.mako.rs @@ -22,7 +22,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if self.marker_start == self.marker_mid && self.marker_mid == self.marker_end { self.marker_start.to_css(dest) } else { diff --git a/components/style/properties/shorthand/mask.mako.rs b/components/style/properties/shorthand/mask.mako.rs index 87feba23d16..483ce9b50f8 100644 --- a/components/style/properties/shorthand/mask.mako.rs +++ b/components/style/properties/shorthand/mask.mako.rs @@ -121,7 +121,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { use properties::longhands::mask_origin::single_value::computed_value::T as Origin; use properties::longhands::mask_clip::single_value::computed_value::T as Clip; @@ -214,7 +214,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let len = self.mask_position_x.0.len(); if len == 0 || self.mask_position_y.0.len() != len { return Ok(()); diff --git a/components/style/properties/shorthand/outline.mako.rs b/components/style/properties/shorthand/outline.mako.rs index 0fe8a11118b..95d6b0be28a 100644 --- a/components/style/properties/shorthand/outline.mako.rs +++ b/components/style/properties/shorthand/outline.mako.rs @@ -76,7 +76,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { use values::generics::border::BorderCornerRadius; let LonghandsToSerialize { diff --git a/components/style/properties/shorthand/position.mako.rs b/components/style/properties/shorthand/position.mako.rs index 1bddeeb8b33..95a4c183e20 100644 --- a/components/style/properties/shorthand/position.mako.rs +++ b/components/style/properties/shorthand/position.mako.rs @@ -119,7 +119,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if self.grid_row_gap == self.grid_column_gap { self.grid_row_gap.to_css(dest) } else { @@ -163,7 +163,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.grid_${kind}_start.to_css(dest)?; dest.write_str(" / ")?; self.grid_${kind}_end.to_css(dest) @@ -224,7 +224,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.grid_row_start.to_css(dest)?; let values = [&self.grid_column_start, &self.grid_row_end, &self.grid_column_end]; for value in &values { @@ -362,10 +362,14 @@ } /// Serialization for `<grid-template>` shorthand (also used by `grid` shorthand). - pub fn serialize_grid_template<W>(template_rows: &GridTemplateComponent, - template_columns: &GridTemplateComponent, - template_areas: &Either<TemplateAreas, None_>, - dest: &mut W) -> fmt::Result where W: fmt::Write { + pub fn serialize_grid_template<W>( + template_rows: &GridTemplateComponent, + template_columns: &GridTemplateComponent, + template_areas: &Either<TemplateAreas, None_>, + dest: &mut CssWriter<W>, + ) -> fmt::Result + where + W: Write { match *template_areas { Either::Second(_none) => { template_rows.to_css(dest)?; @@ -451,7 +455,7 @@ impl<'a> ToCss for LonghandsToSerialize<'a> { #[inline] - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { serialize_grid_template(self.grid_template_rows, self.grid_template_columns, self.grid_template_areas, dest) } @@ -542,7 +546,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if *self.grid_template_areas != Either::Second(None_) || (*self.grid_template_rows != GridTemplateComponent::None && *self.grid_template_columns != GridTemplateComponent::None) || @@ -635,7 +639,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.align_content.to_css(dest)?; if self.align_content != self.justify_content { dest.write_str(" ")?; @@ -670,7 +674,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if self.align_self == self.justify_self { self.align_self.to_css(dest) } else { @@ -713,7 +717,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if self.align_items.0 == self.justify_items.0 { self.align_items.to_css(dest) } else { diff --git a/components/style/properties/shorthand/serialize.mako.rs b/components/style/properties/shorthand/serialize.mako.rs index a86704a5488..afcbe3c488b 100644 --- a/components/style/properties/shorthand/serialize.mako.rs +++ b/components/style/properties/shorthand/serialize.mako.rs @@ -2,15 +2,20 @@ * 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/. */ -use style_traits::ToCss; +use style_traits::{CssWriter, ToCss}; use values::specified::{BorderStyle, Color}; -use std::fmt; +use std::fmt::{self, Write}; -fn serialize_directional_border<W, I,>(dest: &mut W, - width: &I, - style: &BorderStyle, - color: &Color) - -> fmt::Result where W: fmt::Write, I: ToCss { +fn serialize_directional_border<W, I,>( + dest: &mut CssWriter<W>, + width: &I, + style: &BorderStyle, + color: &Color, +) -> fmt::Result +where + W: Write, + I: ToCss, +{ width.to_css(dest)?; dest.write_str(" ")?; style.to_css(dest)?; diff --git a/components/style/properties/shorthand/text.mako.rs b/components/style/properties/shorthand/text.mako.rs index 2c21d1971bf..c53f1b8b27e 100644 --- a/components/style/properties/shorthand/text.mako.rs +++ b/components/style/properties/shorthand/text.mako.rs @@ -62,7 +62,7 @@ } impl<'a> ToCss for LonghandsToSerialize<'a> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.text_decoration_line.to_css(dest)?; % if product == "gecko": diff --git a/components/style/rule_tree/mod.rs b/components/style/rule_tree/mod.rs index e5b7e273885..2a137d7eb79 100644 --- a/components/style/rule_tree/mod.rs +++ b/components/style/rule_tree/mod.rs @@ -828,6 +828,8 @@ impl MallocSizeOf for RuleNode { } } +// FIXME: use std::ptr::NonNull when Firefox requires Rust 1.25+ + #[derive(Clone)] struct WeakRuleNode { p: NonZeroPtrMut<RuleNode>, diff --git a/components/style/selector_map.rs b/components/style/selector_map.rs index 1ebf5cea6b6..0678f0ec922 100644 --- a/components/style/selector_map.rs +++ b/components/style/selector_map.rs @@ -159,7 +159,6 @@ impl SelectorMap<Rule> { rule_hash_target: E, matching_rules_list: &mut ApplicableDeclarationList, context: &mut MatchingContext<E::Impl>, - quirks_mode: QuirksMode, flags_setter: &mut F, cascade_level: CascadeLevel, ) @@ -171,45 +170,56 @@ impl SelectorMap<Rule> { return } - // At the end, we're going to sort the rules that we added, so remember where we began. + let quirks_mode = context.quirks_mode(); + + // At the end, we're going to sort the rules that we added, so remember + // where we began. let init_len = matching_rules_list.len(); if let Some(id) = rule_hash_target.get_id() { if let Some(rules) = self.id_hash.get(&id, quirks_mode) { - SelectorMap::get_matching_rules(element, - rules, - matching_rules_list, - context, - flags_setter, - cascade_level) + SelectorMap::get_matching_rules( + element, + rules, + matching_rules_list, + context, + flags_setter, + cascade_level, + ) } } rule_hash_target.each_class(|class| { if let Some(rules) = self.class_hash.get(&class, quirks_mode) { - SelectorMap::get_matching_rules(element, - rules, - matching_rules_list, - context, - flags_setter, - cascade_level) + SelectorMap::get_matching_rules( + element, + rules, + matching_rules_list, + context, + flags_setter, + cascade_level, + ) } }); if let Some(rules) = self.local_name_hash.get(rule_hash_target.get_local_name()) { - SelectorMap::get_matching_rules(element, - rules, - matching_rules_list, - context, - flags_setter, - cascade_level) + SelectorMap::get_matching_rules( + element, + rules, + matching_rules_list, + context, + flags_setter, + cascade_level, + ) } - SelectorMap::get_matching_rules(element, - &self.other, - matching_rules_list, - context, - flags_setter, - cascade_level); + SelectorMap::get_matching_rules( + element, + &self.other, + matching_rules_list, + context, + flags_setter, + cascade_level, + ); // Sort only the rules we just added. matching_rules_list[init_len..].sort_unstable_by_key(|block| (block.specificity, block.source_order())); @@ -247,7 +257,7 @@ impl<T: SelectorMapEntry> SelectorMap<T> { pub fn insert( &mut self, entry: T, - quirks_mode: QuirksMode + quirks_mode: QuirksMode, ) -> Result<(), FailedAllocationError> { self.count += 1; diff --git a/components/style/selector_parser.rs b/components/style/selector_parser.rs index 54978d284b7..e68aded1c9a 100644 --- a/components/style/selector_parser.rs +++ b/components/style/selector_parser.rs @@ -9,7 +9,7 @@ use cssparser::{Parser as CssParser, ParserInput}; use selectors::parser::SelectorList; use std::fmt::{self, Debug, Write}; -use style_traits::{ParseError, ToCss}; +use style_traits::{CssWriter, ParseError, ToCss}; use stylesheets::{Origin, Namespaces, UrlExtraData}; /// A convenient alias for the type that represents an attribute value used for @@ -201,7 +201,7 @@ impl Direction { } impl ToCss for Direction { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write { let dir_str = match *self { Direction::Rtl => "rtl", Direction::Ltr => "ltr", diff --git a/components/style/servo/media_queries.rs b/components/style/servo/media_queries.rs index ea71ee84ab0..79bc288b775 100644 --- a/components/style/servo/media_queries.rs +++ b/components/style/servo/media_queries.rs @@ -12,9 +12,9 @@ use media_queries::MediaType; use parser::ParserContext; use properties::ComputedValues; use selectors::parser::SelectorParseErrorKind; -use std::fmt; +use std::fmt::{self, Write}; use std::sync::atomic::{AtomicBool, AtomicIsize, Ordering}; -use style_traits::{CSSPixel, DevicePixel, ToCss, ParseError}; +use style_traits::{CSSPixel, CssWriter, DevicePixel, ToCss, ParseError}; use style_traits::viewport::ViewportConstraints; use values::computed::{self, ToComputedValue}; use values::computed::font::FontSize; @@ -218,8 +218,9 @@ impl Expression { } impl ToCss for Expression { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { let (s, l) = match self.0 { ExpressionKind::Width(Range::Min(ref l)) => ("(min-width: ", l), diff --git a/components/style/servo/selector_parser.rs b/components/style/servo/selector_parser.rs index bc6cc31cf7d..04c164e290d 100644 --- a/components/style/servo/selector_parser.rs +++ b/components/style/servo/selector_parser.rs @@ -14,8 +14,7 @@ use element_state::{DocumentState, ElementState}; use fnv::FnvHashMap; use invalidation::element::document_state::InvalidationMatchingData; use invalidation::element::element_wrapper::ElementSnapshot; -use properties::ComputedValues; -use properties::PropertyFlags; +use properties::{CascadeFlags, ComputedValues, PropertyFlags}; use properties::longhands::display::computed_value::T as Display; use selector_parser::{AttrValue as SelectorAttrValue, PseudoElementCascadeType, SelectorParser}; use selectors::attr::{AttrSelectorOperation, NamespaceConstraint, CaseSensitivity}; @@ -174,10 +173,10 @@ impl PseudoElement { self.is_precomputed() } - /// Whether this pseudo-element skips flex/grid container - /// display-based fixup. + /// Whether this pseudo-element skips flex/grid container display-based + /// fixup. #[inline] - pub fn skip_item_based_display_fixup(&self) -> bool { + pub fn skip_item_display_fixup(&self) -> bool { !self.is_before_or_after() } @@ -213,6 +212,43 @@ impl PseudoElement { } } + /// For most (but not all) anon-boxes, we inherit all values from the + /// parent, this is the hook in the style system to allow this. + /// + /// FIXME(emilio): It's likely that this is broken in a variety of + /// situations, and what it really wants is just inherit some reset + /// properties... Also, I guess it just could do all: inherit on the + /// stylesheet, though chances are that'd be kinda slow if we don't cache + /// them... + pub fn cascade_flags(&self) -> CascadeFlags { + match *self { + PseudoElement::After | + PseudoElement::Before | + PseudoElement::Selection | + PseudoElement::DetailsContent | + PseudoElement::DetailsSummary => CascadeFlags::empty(), + // Anonymous table flows shouldn't inherit their parents properties in order + // to avoid doubling up styles such as transformations. + PseudoElement::ServoAnonymousTableCell | + PseudoElement::ServoAnonymousTableRow | + PseudoElement::ServoText | + PseudoElement::ServoInputText => CascadeFlags::empty(), + + // For tables, we do want style to inherit, because TableWrapper is + // responsible for handling clipping and scrolling, while Table is + // responsible for creating stacking contexts. + // + // StackingContextCollectionFlags makes sure this is processed + // properly. + PseudoElement::ServoAnonymousTable | + PseudoElement::ServoAnonymousTableWrapper | + PseudoElement::ServoTableWrapper | + PseudoElement::ServoAnonymousBlock | + PseudoElement::ServoInlineBlockWrapper | + PseudoElement::ServoInlineAbsolute => CascadeFlags::INHERIT_ALL, + } + } + /// Covert non-canonical pseudo-element to canonical one, and keep a /// canonical one as it is. pub fn canonical(&self) -> PseudoElement { diff --git a/components/style/servo/url.rs b/components/style/servo/url.rs index 6dc1d46d2aa..25a4aa5297d 100644 --- a/components/style/servo/url.rs +++ b/components/style/servo/url.rs @@ -6,12 +6,12 @@ use parser::ParserContext; use servo_url::ServoUrl; -use std::fmt; +use std::fmt::{self, Write}; // Note: We use std::sync::Arc rather than servo_arc::Arc here because the // nonzero optimization is important in keeping the size of SpecifiedUrl below // the threshold. use std::sync::Arc; -use style_traits::{ToCss, ParseError}; +use style_traits::{CssWriter, ParseError, ToCss}; use values::computed::{Context, ToComputedValue, ComputedUrl}; /// A specified url() value for servo. @@ -111,7 +111,10 @@ impl PartialEq for SpecifiedUrl { } impl ToCss for SpecifiedUrl { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let string = match self.original { Some(ref original) => &**original, None => match self.resolved { diff --git a/components/style/shared_lock.rs b/components/style/shared_lock.rs index 29b92b29d36..fac98e98b6b 100644 --- a/components/style/shared_lock.rs +++ b/components/style/shared_lock.rs @@ -13,6 +13,7 @@ use std::cell::UnsafeCell; use std::fmt; #[cfg(feature = "gecko")] use std::ptr; +use str::{CssString, CssStringWriter}; use stylesheets::Origin; /// A shared read/write lock that can protect multiple objects. @@ -219,18 +220,18 @@ mod compile_time_assert { impl<'a> Marker2 for SharedRwLockWriteGuard<'a> {} // Assert SharedRwLockWriteGuard: !Copy } -/// Like ToCss, but with a lock guard given by the caller. +/// Like ToCss, but with a lock guard given by the caller, and with the writer specified +/// concretely rather than with a parameter. pub trait ToCssWithGuard { /// Serialize `self` in CSS syntax, writing to `dest`, using the given lock guard. - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write; + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result; /// Serialize `self` in CSS syntax using the given lock guard and return a string. /// /// (This is a convenience wrapper for `to_css` and probably should not be overridden.) #[inline] - fn to_css_string(&self, guard: &SharedRwLockReadGuard) -> String { - let mut s = String::new(); + fn to_css_string(&self, guard: &SharedRwLockReadGuard) -> CssString { + let mut s = CssString::new(); self.to_css(guard, &mut s).unwrap(); s } diff --git a/components/style/str.rs b/components/style/str.rs index 641f5501d89..a91505ae6ed 100644 --- a/components/style/str.rs +++ b/components/style/str.rs @@ -10,6 +10,7 @@ use num_traits::ToPrimitive; #[allow(unused_imports)] use std::ascii::AsciiExt; use std::borrow::Cow; use std::convert::AsRef; +use std::fmt::{self, Write}; use std::iter::{Filter, Peekable}; use std::str::Split; @@ -163,3 +164,101 @@ pub fn string_as_ascii_lowercase<'a>(input: &'a str) -> Cow<'a, str> { Cow::Borrowed(input) } } + +/// To avoid accidentally instantiating multiple monomorphizations of large +/// serialization routines, we define explicit concrete types and require +/// them in those routines. This primarily avoids accidental mixing of UTF8 +/// with UTF16 serializations in Gecko. +#[cfg(feature = "gecko")] +pub type CssStringWriter = ::nsstring::nsAString; + +/// String type that coerces to CssStringWriter, used when serialization code +/// needs to allocate a temporary string. +#[cfg(feature = "gecko")] +pub type CssString = ::nsstring::nsString; + +/// Certain serialization code needs to interact with borrowed strings, which +/// are sometimes native UTF8 Rust strings, and other times serialized UTF16 +/// strings. This enum multiplexes the two cases. +#[cfg(feature = "gecko")] +pub enum CssStringBorrow<'a> { + /// A borrow of a UTF16 CssString. + UTF16(&'a ::nsstring::nsString), + /// A borrow of a regular Rust UTF8 string. + UTF8(&'a str), +} + +#[cfg(feature = "gecko")] +impl<'a> CssStringBorrow<'a> { + /// Writes the borrowed string to the provided writer. + pub fn append_to(&self, dest: &mut CssStringWriter) -> fmt::Result { + match *self { + CssStringBorrow::UTF16(s) => { + dest.append(s); + Ok(()) + }, + CssStringBorrow::UTF8(s) => dest.write_str(s), + } + } + + /// Returns true of the borrowed string is empty. + pub fn is_empty(&self) -> bool { + match *self { + CssStringBorrow::UTF16(s) => s.is_empty(), + CssStringBorrow::UTF8(s) => s.is_empty(), + } + } +} + +#[cfg(feature = "gecko")] +impl<'a> From<&'a str> for CssStringBorrow<'a> { + fn from(s: &'a str) -> Self { + CssStringBorrow::UTF8(s) + } +} + +#[cfg(feature = "gecko")] +impl<'a> From<&'a ::nsstring::nsString> for CssStringBorrow<'a> { + fn from(s: &'a ::nsstring::nsString) -> Self { + CssStringBorrow::UTF16(s) + } +} + +/// String. The comments for the Gecko types explain the need for this abstraction. +#[cfg(feature = "servo")] +pub type CssStringWriter = String; + +/// String. The comments for the Gecko types explain the need for this abstraction. +#[cfg(feature = "servo")] +pub type CssString = String; + +/// Borrowed string. The comments for the Gecko types explain the need for this abstraction. +#[cfg(feature = "servo")] +pub struct CssStringBorrow<'a>(&'a str); + +#[cfg(feature = "servo")] +impl<'a> CssStringBorrow<'a> { + /// Appends the borrowed string to the given string. + pub fn append_to(&self, dest: &mut CssStringWriter) -> fmt::Result { + dest.write_str(self.0) + } + + /// Returns true if the borrowed string is empty. + pub fn is_empty(&self) -> bool { + self.0.is_empty() + } +} + +#[cfg(feature = "servo")] +impl<'a> From<&'a str> for CssStringBorrow<'a> { + fn from(s: &'a str) -> Self { + CssStringBorrow(s) + } +} + +#[cfg(feature = "servo")] +impl<'a> From<&'a String> for CssStringBorrow<'a> { + fn from(s: &'a String) -> Self { + CssStringBorrow(&*s) + } +} diff --git a/components/style/style_adjuster.rs b/components/style/style_adjuster.rs index 052d80dbe22..7f805bb3f5c 100644 --- a/components/style/style_adjuster.rs +++ b/components/style/style_adjuster.rs @@ -6,6 +6,7 @@ //! a computed style needs in order for it to adhere to the CSS spec. use app_units::Au; +use dom::TElement; use properties::{self, CascadeFlags, ComputedValues, StyleBuilder}; use properties::longhands::display::computed_value::T as Display; use properties::longhands::float::computed_value::T as Float; @@ -50,13 +51,30 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { } } + /// Whether we should skip any item-based display property blockification on + /// this element. + fn skip_item_display_fixup<E>(&self, element: Option<E>) -> bool + where + E: TElement, + { + if let Some(pseudo) = self.style.pseudo { + return pseudo.skip_item_display_fixup(); + } + + element.map_or(false, |e| e.skip_item_display_fixup()) + } + + /// Apply the blockification rules based on the table in CSS 2.2 section 9.7. /// <https://drafts.csswg.org/css2/visuren.html#dis-pos-flo> - fn blockify_if_necessary( + fn blockify_if_necessary<E>( &mut self, layout_parent_style: &ComputedValues, - flags: CascadeFlags, - ) { + element: Option<E>, + ) + where + E: TElement, + { let mut blockify = false; macro_rules! blockify_if { ($if_what:expr) => { @@ -66,8 +84,9 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { } } - if !flags.contains(CascadeFlags::SKIP_ROOT_AND_ITEM_BASED_DISPLAY_FIXUP) { - blockify_if!(flags.contains(CascadeFlags::IS_ROOT_ELEMENT)); + let is_root = self.style.pseudo.is_none() && element.map_or(false, |e| e.is_root()); + blockify_if!(is_root); + if !self.skip_item_display_fixup(element) { blockify_if!(layout_parent_style.get_box().clone_display().is_item_container()); } @@ -81,8 +100,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { } let display = self.style.get_box().clone_display(); - let blockified_display = - display.equivalent_block_display(flags.contains(CascadeFlags::IS_ROOT_ELEMENT)); + let blockified_display = display.equivalent_block_display(is_root); if display != blockified_display { self.style.mutate_box().set_adjusted_display( blockified_display, @@ -477,12 +495,14 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// * suppress border and padding for ruby level containers, /// * correct unicode-bidi. #[cfg(feature = "gecko")] - fn adjust_for_ruby( + fn adjust_for_ruby<E>( &mut self, layout_parent_style: &ComputedValues, - flags: CascadeFlags, - ) { - use properties::CascadeFlags; + element: Option<E>, + ) + where + E: TElement, + { use properties::computed_value_flags::ComputedValueFlags; use properties::longhands::unicode_bidi::computed_value::T as UnicodeBidi; @@ -491,7 +511,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { if self.should_suppress_linebreak(layout_parent_style) { self.style.flags.insert(ComputedValueFlags::SHOULD_SUPPRESS_LINEBREAK); // Inlinify the display type if allowed. - if !flags.contains(CascadeFlags::SKIP_ROOT_AND_ITEM_BASED_DISPLAY_FIXUP) { + if !self.skip_item_display_fixup(element) { let inline_display = self_display.inlinify(); if self_display != inline_display { self.style.mutate_box().set_adjusted_display(inline_display, false); @@ -531,16 +551,22 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// /// FIXME(emilio): This isn't technically a style adjustment thingie, could /// it move somewhere else? - fn adjust_for_visited(&mut self, flags: CascadeFlags) { - use properties::CascadeFlags; + fn adjust_for_visited<E>(&mut self, element: Option<E>) + where + E: TElement, + { use properties::computed_value_flags::ComputedValueFlags; if !self.style.has_visited_style() { return; } - let relevant_link_visited = if flags.contains(CascadeFlags::IS_LINK) { - flags.contains(CascadeFlags::IS_VISITED_LINK) + let is_link_element = + self.style.pseudo.is_none() && + element.map_or(false, |e| e.is_link()); + + let relevant_link_visited = if is_link_element { + element.unwrap().is_visited_link() } else { self.style.inherited_flags().contains(ComputedValueFlags::IS_RELEVANT_LINK_VISITED) }; @@ -586,11 +612,35 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// When comparing to Gecko, this is similar to the work done by /// `nsStyleContext::ApplyStyleFixups`, plus some parts of /// `nsStyleSet::GetContext`. - pub fn adjust( + pub fn adjust<E>( &mut self, layout_parent_style: &ComputedValues, + element: Option<E>, flags: CascadeFlags, - ) { + ) + where + E: TElement, + { + if cfg!(debug_assertions) { + if element.and_then(|e| e.implemented_pseudo_element()).is_some() { + // It'd be nice to assert `self.style.pseudo == Some(&pseudo)`, + // but we do resolve ::-moz-list pseudos on ::before / ::after + // content, sigh. + debug_assert!( + self.style.pseudo.is_some(), + "Someone really messed up" + ); + } + } + // FIXME(emilio): The apply_declarations callsite in Servo's + // animation, and the font stuff for Gecko + // (Stylist::compute_for_declarations) should pass an element to + // cascade(), then we can make this assertion hold everywhere. + // debug_assert!( + // element.is_some() || self.style.pseudo.is_some(), + // "Should always have an element around for non-pseudo styles" + // ); + // Don't adjust visited styles, visited-dependent properties aren't // affected by these adjustments and it'd be just wasted work anyway. // @@ -600,14 +650,14 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { return; } - self.adjust_for_visited(flags); + self.adjust_for_visited(element); #[cfg(feature = "gecko")] { self.adjust_for_prohibited_display_contents(); self.adjust_for_fieldset_content(layout_parent_style); } self.adjust_for_top_layer(); - self.blockify_if_necessary(layout_parent_style, flags); + self.blockify_if_necessary(layout_parent_style, element); self.adjust_for_position(); self.adjust_for_overflow(); #[cfg(feature = "gecko")] @@ -627,7 +677,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { self.adjust_for_text_decoration_lines(layout_parent_style); #[cfg(feature = "gecko")] { - self.adjust_for_ruby(layout_parent_style, flags); + self.adjust_for_ruby(layout_parent_style, element); } #[cfg(feature = "servo")] { diff --git a/components/style/style_resolver.rs b/components/style/style_resolver.rs index ea3e8a6b9e3..b07dfb487b9 100644 --- a/components/style/style_resolver.rs +++ b/components/style/style_resolver.rs @@ -9,9 +9,8 @@ use context::{CascadeInputs, ElementCascadeInputs, StyleContext}; use data::{ElementStyles, EagerPseudoStyles}; use dom::TElement; use log::LogLevel::Trace; -use matching::{CascadeVisitedMode, MatchMethods}; -use properties::{AnimationRules, CascadeFlags, ComputedValues}; -use properties::cascade; +use matching::MatchMethods; +use properties::{AnimationRules, ComputedValues}; use properties::longhands::display::computed_value::T as Display; use rule_tree::StrongRuleNode; use selector_parser::{PseudoElement, SelectorImpl}; @@ -161,7 +160,8 @@ where parent_style.map_or(false, |s| s.visited_style().is_some()); let visited_rules = - if inside_link || self.element.is_link() { + if self.context.shared.visited_styles_enabled && + (inside_link || self.element.is_link()) { let visited_matching_results = self.match_primary(VisitedHandlingMode::RelevantLinkVisited); Some(visited_matching_results.rule_node) @@ -291,29 +291,37 @@ where layout_parent_style: Option<&ComputedValues>, pseudo: Option<&PseudoElement>, ) -> ResolvedStyle { - let mut style_if_visited = None; - if parent_style.map_or(false, |s| s.visited_style().is_some()) || - inputs.visited_rules.is_some() { - style_if_visited = Some(self.cascade_style( - inputs.visited_rules.as_ref().or(inputs.rules.as_ref()), - /* style_if_visited = */ None, - parent_style, - layout_parent_style, - CascadeVisitedMode::Visited, - pseudo, - )); - } + debug_assert!( + self.element.implemented_pseudo_element().is_none() || pseudo.is_none(), + "Pseudo-elements can't have other pseudos!" + ); + debug_assert!(pseudo.map_or(true, |p| p.is_eager())); - ResolvedStyle( - self.cascade_style( - inputs.rules.as_ref(), - style_if_visited, - parent_style, - layout_parent_style, - CascadeVisitedMode::Unvisited, - pseudo, - ) - ) + let implemented_pseudo = self.element.implemented_pseudo_element(); + let pseudo = pseudo.or(implemented_pseudo.as_ref()); + + let mut conditions = Default::default(); + let values = self.context.shared.stylist.cascade_style_and_visited( + Some(self.element), + pseudo, + inputs, + &self.context.shared.guards, + parent_style, + parent_style, + layout_parent_style, + &self.context.thread_local.font_metrics_provider, + Some(&self.context.thread_local.rule_cache), + &mut conditions, + ); + + self.context.thread_local.rule_cache.insert_if_possible( + &self.context.shared.guards, + &values, + pseudo, + &conditions + ); + + ResolvedStyle(values) } /// Cascade the element and pseudo-element styles with the default parents. @@ -469,7 +477,7 @@ where ) -> Option<StrongRuleNode> { debug!("Match pseudo {:?} for {:?}, visited: {:?}", self.element, pseudo_element, visited_handling); - debug_assert!(pseudo_element.is_eager() || pseudo_element.is_lazy()); + debug_assert!(pseudo_element.is_eager()); debug_assert!(self.element.implemented_pseudo_element().is_none(), "Element pseudos can't have any other pseudo."); @@ -524,86 +532,4 @@ where Some(rule_node) } - - fn cascade_style( - &mut self, - rules: Option<&StrongRuleNode>, - style_if_visited: Option<Arc<ComputedValues>>, - mut parent_style: Option<&ComputedValues>, - layout_parent_style: Option<&ComputedValues>, - cascade_visited: CascadeVisitedMode, - pseudo: Option<&PseudoElement>, - ) -> Arc<ComputedValues> { - debug_assert!( - self.element.implemented_pseudo_element().is_none() || pseudo.is_none(), - "Pseudo-elements can't have other pseudos!" - ); - debug_assert!(pseudo.map_or(true, |p| p.is_eager())); - - let mut cascade_flags = CascadeFlags::empty(); - - if self.element.skip_root_and_item_based_display_fixup() || - pseudo.map_or(false, |p| p.skip_item_based_display_fixup()) { - cascade_flags.insert(CascadeFlags::SKIP_ROOT_AND_ITEM_BASED_DISPLAY_FIXUP); - } - - if pseudo.is_none() && self.element.is_link() { - cascade_flags.insert(CascadeFlags::IS_LINK); - if self.element.is_visited_link() && - self.context.shared.visited_styles_enabled { - cascade_flags.insert(CascadeFlags::IS_VISITED_LINK); - } - } - - if cascade_visited.visited_dependent_only() { - // If this element is a link, we want its visited style to inherit - // from the regular style of its parent, because only the - // visitedness of the relevant link should influence style. - if pseudo.is_some() || !self.element.is_link() { - parent_style = parent_style.map(|s| { - s.visited_style().unwrap_or(s) - }); - } - cascade_flags.insert(CascadeFlags::VISITED_DEPENDENT_ONLY); - } - if !self.element.is_native_anonymous() && - pseudo.is_none() && - self.element.is_root() - { - cascade_flags.insert(CascadeFlags::IS_ROOT_ELEMENT); - } - - let implemented_pseudo = self.element.implemented_pseudo_element(); - let pseudo = pseudo.or(implemented_pseudo.as_ref()); - - let mut conditions = Default::default(); - let values = - cascade( - self.context.shared.stylist.device(), - pseudo, - rules.unwrap_or(self.context.shared.stylist.rule_tree().root()), - &self.context.shared.guards, - parent_style, - parent_style, - layout_parent_style, - style_if_visited, - &self.context.thread_local.font_metrics_provider, - cascade_flags, - self.context.shared.quirks_mode(), - Some(&self.context.thread_local.rule_cache), - &mut conditions, - ); - - self.context - .thread_local - .rule_cache - .insert_if_possible( - &self.context.shared.guards, - &values, - pseudo, - &conditions - ); - - values - } } diff --git a/components/style/stylesheets/document_rule.rs b/components/style/stylesheets/document_rule.rs index 61c8f2762ef..ab8382df069 100644 --- a/components/style/stylesheets/document_rule.rs +++ b/components/style/stylesheets/document_rule.rs @@ -13,8 +13,9 @@ use media_queries::Device; use parser::{Parse, ParserContext}; use servo_arc::Arc; use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use str::CssStringWriter; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use stylesheets::CssRules; use values::specified::url::SpecifiedUrl; @@ -40,10 +41,9 @@ impl DocumentRule { } impl ToCssWithGuard for DocumentRule { - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@-moz-document ")?; - self.condition.to_css(dest)?; + self.condition.to_css(&mut CssWriter::new(dest))?; dest.write_str(" {")?; for rule in self.rules.read_with(guard).0.iter() { dest.write_str(" ")?; @@ -167,8 +167,10 @@ impl UrlMatchingFunction { } impl ToCss for UrlMatchingFunction { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { UrlMatchingFunction::Url(ref url) => { url.to_css(dest) @@ -219,8 +221,10 @@ impl DocumentCondition { } impl ToCss for DocumentCondition { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let mut iter = self.0.iter(); let first = iter.next() .expect("Empty DocumentCondition, should contain at least one URL matching function"); diff --git a/components/style/stylesheets/font_feature_values_rule.rs b/components/style/stylesheets/font_feature_values_rule.rs index d2e6f7c87a1..35ac85c7469 100644 --- a/components/style/stylesheets/font_feature_values_rule.rs +++ b/components/style/stylesheets/font_feature_values_rule.rs @@ -16,8 +16,9 @@ use gecko_bindings::bindings::Gecko_AppendFeatureValueHashEntry; use gecko_bindings::structs::{self, gfxFontFeatureValueSet, nsTArray}; use parser::{ParserContext, ParserErrorContext, Parse}; use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; -use style_traits::{ParseError, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use str::CssStringWriter; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use stylesheets::CssRuleType; use values::computed::font::FamilyName; @@ -36,7 +37,10 @@ pub struct FFVDeclaration<T> { } impl<T: ToCss> ToCss for FFVDeclaration<T> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { serialize_identifier(&self.name.to_string(), dest)?; dest.write_str(": ")?; self.value.to_css(dest)?; @@ -52,7 +56,7 @@ pub trait ToGeckoFontFeatureValues { } /// A @font-feature-values block declaration value that keeps one value. -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, ToCss)] pub struct SingleValue(pub u32); impl Parse for SingleValue { @@ -66,12 +70,6 @@ impl Parse for SingleValue { } } -impl ToCss for SingleValue { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - self.0.to_css(dest) - } -} - #[cfg(feature = "gecko")] impl ToGeckoFontFeatureValues for SingleValue { fn to_gecko_font_feature_values(&self, array: &mut nsTArray<u32>) { @@ -106,7 +104,10 @@ impl Parse for PairValues { } impl ToCss for PairValues { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { self.0.to_css(dest)?; if let Some(second) = self.1 { dest.write_char(' ')?; @@ -158,7 +159,10 @@ impl Parse for VectorValues { } impl ToCss for VectorValues { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let mut iter = self.0.iter(); let first = iter.next(); if let Some(first) = first { @@ -285,7 +289,13 @@ macro_rules! font_feature_values_blocks { } /// Prints font family names. - pub fn font_family_to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + pub fn font_family_to_css<W>( + &self, + dest: &mut CssWriter<W>, + ) -> fmt::Result + where + W: Write, + { let mut iter = self.family_names.iter(); iter.next().unwrap().to_css(dest)?; for val in iter { @@ -296,7 +306,10 @@ macro_rules! font_feature_values_blocks { } /// Prints inside of `@font-feature-values` block. - pub fn value_to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + pub fn value_to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { $( if self.$ident.len() > 0 { dest.write_str(concat!("@", $name, " {\n"))?; @@ -347,13 +360,11 @@ macro_rules! font_feature_values_blocks { } impl ToCssWithGuard for FontFeatureValuesRule { - fn to_css<W>(&self, _guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write - { + fn to_css(&self, _guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@font-feature-values ")?; - self.font_family_to_css(dest)?; + self.font_family_to_css(&mut CssWriter::new(dest))?; dest.write_str(" {\n")?; - self.value_to_css(dest)?; + self.value_to_css(&mut CssWriter::new(dest))?; dest.write_str("}") } } diff --git a/components/style/stylesheets/import_rule.rs b/components/style/stylesheets/import_rule.rs index 8568012099a..c72800b4517 100644 --- a/components/style/stylesheets/import_rule.rs +++ b/components/style/stylesheets/import_rule.rs @@ -9,8 +9,9 @@ use cssparser::SourceLocation; use media_queries::MediaList; use shared_lock::{DeepCloneWithLock, DeepCloneParams, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use str::CssStringWriter; +use style_traits::{CssWriter, ToCss}; use stylesheets::{StylesheetContents, StylesheetInDocument}; use values::specified::url::SpecifiedUrl; @@ -107,16 +108,14 @@ impl DeepCloneWithLock for ImportRule { } impl ToCssWithGuard for ImportRule { - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write, - { + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@import ")?; - self.url.to_css(dest)?; + self.url.to_css(&mut CssWriter::new(dest))?; match self.stylesheet.media(guard) { Some(media) if !media.is_empty() => { dest.write_str(" ")?; - media.to_css(dest)?; + media.to_css(&mut CssWriter::new(dest))?; } _ => {}, }; diff --git a/components/style/stylesheets/keyframes_rule.rs b/components/style/stylesheets/keyframes_rule.rs index 60d7ee3f175..fe52edd60be 100644 --- a/components/style/stylesheets/keyframes_rule.rs +++ b/components/style/stylesheets/keyframes_rule.rs @@ -14,8 +14,9 @@ use properties::LonghandIdSet; use properties::longhands::transition_timing_function::single_value::SpecifiedValue as SpecifiedTimingFunction; use servo_arc::Arc; use shared_lock::{DeepCloneParams, DeepCloneWithLock, SharedRwLock, SharedRwLockReadGuard, Locked, ToCssWithGuard}; -use std::fmt; -use style_traits::{ParsingMode, ToCss, ParseError, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use str::CssStringWriter; +use style_traits::{CssWriter, ParseError, ParsingMode, StyleParseErrorKind, ToCss}; use stylesheets::{CssRuleType, StylesheetContents}; use stylesheets::rule_parser::VendorPrefix; use values::{KeyframesName, serialize_percentage}; @@ -37,11 +38,9 @@ pub struct KeyframesRule { impl ToCssWithGuard for KeyframesRule { // Serialization of KeyframesRule is not specced. - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write, - { + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@keyframes ")?; - self.name.to_css(dest)?; + self.name.to_css(&mut CssWriter::new(dest))?; dest.write_str(" {")?; let iter = self.keyframes.iter(); for lock in iter { @@ -110,7 +109,10 @@ impl ::std::cmp::Ord for KeyframePercentage { impl ::std::cmp::Eq for KeyframePercentage { } impl ToCss for KeyframePercentage { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { serialize_percentage(self.0, dest) } } @@ -147,7 +149,10 @@ impl KeyframePercentage { pub struct KeyframeSelector(Vec<KeyframePercentage>); impl ToCss for KeyframeSelector { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let mut iter = self.0.iter(); iter.next().unwrap().to_css(dest)?; for percentage in iter { @@ -194,9 +199,8 @@ pub struct Keyframe { } impl ToCssWithGuard for Keyframe { - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { - self.selector.to_css(dest)?; + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { + self.selector.to_css(&mut CssWriter::new(dest))?; dest.write_str(" { ")?; self.block.read_with(guard).to_css(dest)?; dest.write_str(" }")?; diff --git a/components/style/stylesheets/media_rule.rs b/components/style/stylesheets/media_rule.rs index 4c468b44cf6..20aa4329693 100644 --- a/components/style/stylesheets/media_rule.rs +++ b/components/style/stylesheets/media_rule.rs @@ -12,8 +12,9 @@ use malloc_size_of::{MallocSizeOfOps, MallocUnconditionalShallowSizeOf}; use media_queries::MediaList; use servo_arc::Arc; use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use str::CssStringWriter; +use style_traits::{CssWriter, ToCss}; use stylesheets::CssRules; /// An [`@media`][media] urle. @@ -42,10 +43,9 @@ impl MediaRule { impl ToCssWithGuard for MediaRule { // Serialization of MediaRule is not specced. // https://drafts.csswg.org/cssom/#serialize-a-css-rule CSSMediaRule - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@media ")?; - self.media_queries.read_with(guard).to_css(dest)?; + self.media_queries.read_with(guard).to_css(&mut CssWriter::new(dest))?; self.rules.read_with(guard).to_css_block(guard, dest) } } diff --git a/components/style/stylesheets/mod.rs b/components/style/stylesheets/mod.rs index f419b9602ed..a5873c8eb48 100644 --- a/components/style/stylesheets/mod.rs +++ b/components/style/stylesheets/mod.rs @@ -31,6 +31,7 @@ use parser::{ParserContext, ParserErrorContext}; use servo_arc::Arc; use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; use std::fmt; +use str::CssStringWriter; use style_traits::ParsingMode; pub use self::counter_style_rule::CounterStyleRule; @@ -347,8 +348,7 @@ impl DeepCloneWithLock for CssRule { impl ToCssWithGuard for CssRule { // https://drafts.csswg.org/cssom/#serialize-a-css-rule - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { match *self { CssRule::Namespace(ref lock) => lock.read_with(guard).to_css(guard, dest), CssRule::Import(ref lock) => lock.read_with(guard).to_css(guard, dest), diff --git a/components/style/stylesheets/namespace_rule.rs b/components/style/stylesheets/namespace_rule.rs index 6cfba1d7234..f28f2ba0881 100644 --- a/components/style/stylesheets/namespace_rule.rs +++ b/components/style/stylesheets/namespace_rule.rs @@ -7,7 +7,8 @@ use {Namespace, Prefix}; use cssparser::SourceLocation; use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; +use std::fmt::{self, Write}; +use str::CssStringWriter; /// A `@namespace` rule. #[derive(Clone, Debug, PartialEq)] @@ -23,8 +24,7 @@ pub struct NamespaceRule { impl ToCssWithGuard for NamespaceRule { // https://drafts.csswg.org/cssom/#serialize-a-css-rule CSSNamespaceRule - fn to_css<W>(&self, _guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, _guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@namespace ")?; if let Some(ref prefix) = self.prefix { dest.write_str(&*prefix.to_string())?; diff --git a/components/style/stylesheets/page_rule.rs b/components/style/stylesheets/page_rule.rs index ea8b93b1b8b..7b72f3e60c3 100644 --- a/components/style/stylesheets/page_rule.rs +++ b/components/style/stylesheets/page_rule.rs @@ -12,8 +12,8 @@ use malloc_size_of::{MallocSizeOf, MallocSizeOfOps, MallocUnconditionalShallowSi use properties::PropertyDeclarationBlock; use servo_arc::Arc; use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use str::CssStringWriter; /// A [`@page`][page] rule. /// @@ -44,9 +44,7 @@ impl PageRule { impl ToCssWithGuard for PageRule { /// Serialization of PageRule is not specced, adapted from steps for /// StyleRule. - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write, - { + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@page { ")?; let declaration_block = self.block.read_with(guard); declaration_block.to_css(dest)?; diff --git a/components/style/stylesheets/rule_list.rs b/components/style/stylesheets/rule_list.rs index fbceb6c1a0b..a6638e8bb17 100644 --- a/components/style/stylesheets/rule_list.rs +++ b/components/style/stylesheets/rule_list.rs @@ -9,7 +9,8 @@ use malloc_size_of::{MallocShallowSizeOf, MallocSizeOfOps}; use servo_arc::{Arc, RawOffsetArc}; use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked}; use shared_lock::{SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; +use std::fmt::{self, Write}; +use str::CssStringWriter; use stylesheets::{CssRule, RulesMutateError}; use stylesheets::loader::StylesheetLoader; use stylesheets::rule_parser::State; @@ -95,9 +96,7 @@ impl CssRules { /// /// This should be speced into CSSOM spec at some point. See /// <https://github.com/w3c/csswg-drafts/issues/1985> - pub fn to_css_block<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) - -> fmt::Result where W: fmt::Write - { + pub fn to_css_block(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str(" {")?; for rule in self.0.iter() { dest.write_str("\n ")?; diff --git a/components/style/stylesheets/style_rule.rs b/components/style/stylesheets/style_rule.rs index fbc391f6d2b..4a4ab3d58ed 100644 --- a/components/style/stylesheets/style_rule.rs +++ b/components/style/stylesheets/style_rule.rs @@ -12,8 +12,8 @@ use selector_parser::SelectorImpl; use selectors::SelectorList; use servo_arc::Arc; use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use str::CssStringWriter; /// A style rule, with selectors and declarations. #[derive(Debug)] @@ -67,9 +67,7 @@ impl StyleRule { impl ToCssWithGuard for StyleRule { /// https://drafts.csswg.org/cssom/#serialize-a-css-rule CSSStyleRule - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write, - { + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { use cssparser::ToCss; // Step 1 diff --git a/components/style/stylesheets/supports_rule.rs b/components/style/stylesheets/supports_rule.rs index d9870641e43..3780c18ede1 100644 --- a/components/style/stylesheets/supports_rule.rs +++ b/components/style/stylesheets/supports_rule.rs @@ -15,9 +15,10 @@ use servo_arc::Arc; use shared_lock::{DeepCloneParams, DeepCloneWithLock, Locked, SharedRwLock, SharedRwLockReadGuard, ToCssWithGuard}; #[allow(unused_imports)] use std::ascii::AsciiExt; use std::ffi::{CStr, CString}; -use std::fmt; +use std::fmt::{self, Write}; use std::str; -use style_traits::{ToCss, ParseError}; +use str::CssStringWriter; +use style_traits::{CssWriter, ParseError, ToCss}; use stylesheets::{CssRuleType, CssRules}; /// An [`@supports`][supports] rule. @@ -46,10 +47,9 @@ impl SupportsRule { } impl ToCssWithGuard for SupportsRule { - fn to_css<W>(&self, guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@supports ")?; - self.condition.to_css(dest)?; + self.condition.to_css(&mut CssWriter::new(dest))?; self.rules.read_with(guard).to_css_block(guard, dest) } } @@ -219,8 +219,9 @@ pub fn parse_condition_or_declaration<'i, 't>(input: &mut Parser<'i, 't>) } impl ToCss for SupportsCondition { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { match *self { SupportsCondition::Not(ref cond) => { @@ -276,7 +277,10 @@ impl ToCss for SupportsCondition { pub struct Declaration(pub String); impl ToCss for Declaration { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str(&self.0) } } diff --git a/components/style/stylesheets/viewport_rule.rs b/components/style/stylesheets/viewport_rule.rs index 6220d858745..e50d9f1720b 100644 --- a/components/style/stylesheets/viewport_rule.rs +++ b/components/style/stylesheets/viewport_rule.rs @@ -23,10 +23,11 @@ use shared_lock::{SharedRwLockReadGuard, StylesheetGuards, ToCssWithGuard}; #[allow(unused_imports)] use std::ascii::AsciiExt; use std::borrow::Cow; use std::cell::RefCell; -use std::fmt; +use std::fmt::{self, Write}; use std::iter::Enumerate; use std::str::Chars; -use style_traits::{PinchZoomFactor, ToCss, ParseError, StyleParseErrorKind}; +use str::CssStringWriter; +use style_traits::{CssWriter, ParseError, PinchZoomFactor, StyleParseErrorKind, ToCss}; use style_traits::viewport::{Orientation, UserZoom, ViewportConstraints, Zoom}; use stylesheets::{StylesheetInDocument, Origin}; use values::computed::{Context, ToComputedValue}; @@ -100,7 +101,10 @@ macro_rules! declare_viewport_descriptor_inner { } impl ToCss for ViewportDescriptor { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { $( ViewportDescriptor::$assigned_variant(ref val) => { @@ -148,8 +152,9 @@ pub enum ViewportLength { } impl ToCss for ViewportLength { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { match *self { ViewportLength::Specified(ref length) => length.to_css(dest), @@ -254,7 +259,10 @@ impl ViewportDescriptorDeclaration { } impl ToCss for ViewportDescriptorDeclaration { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { self.descriptor.to_css(dest)?; if self.important { dest.write_str(" !important")?; @@ -520,14 +528,13 @@ impl ViewportRule { impl ToCssWithGuard for ViewportRule { // Serialization of ViewportRule is not specced. - fn to_css<W>(&self, _guard: &SharedRwLockReadGuard, dest: &mut W) -> fmt::Result - where W: fmt::Write { + fn to_css(&self, _guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result { dest.write_str("@viewport { ")?; let mut iter = self.declarations.iter(); - iter.next().unwrap().to_css(dest)?; + iter.next().unwrap().to_css(&mut CssWriter::new(dest))?; for declaration in iter { dest.write_str(" ")?; - declaration.to_css(dest)?; + declaration.to_css(&mut CssWriter::new(dest))?; } dest.write_str(" }") } diff --git a/components/style/stylist.rs b/components/style/stylist.rs index 8234a0c7b3b..6ed2b36ac89 100644 --- a/components/style/stylist.rs +++ b/components/style/stylist.rs @@ -22,6 +22,7 @@ use malloc_size_of::MallocUnconditionalShallowSizeOf; use media_queries::Device; use properties::{self, CascadeFlags, ComputedValues}; use properties::{AnimationRules, PropertyDeclarationBlock}; +use rule_cache::{RuleCache, RuleCacheConditions}; use rule_tree::{CascadeLevel, RuleTree, StrongRuleNode, StyleSource}; use selector_map::{PrecomputedHashMap, SelectorMap, SelectorMapEntry}; use selector_parser::{SelectorImpl, PerPseudoElementMap, PseudoElement}; @@ -642,14 +643,19 @@ impl Stylist { /// parent; otherwise, non-inherited properties are reset to their initial /// values. The flow constructor uses this flag when constructing anonymous /// flows. - pub fn precomputed_values_for_pseudo( + /// + /// TODO(emilio): The type parameter could go away with a void type + /// implementing TElement. + pub fn precomputed_values_for_pseudo<E>( &self, guards: &StylesheetGuards, pseudo: &PseudoElement, parent: Option<&ComputedValues>, - cascade_flags: CascadeFlags, - font_metrics: &FontMetricsProvider - ) -> Arc<ComputedValues> { + font_metrics: &FontMetricsProvider, + ) -> Arc<ComputedValues> + where + E: TElement, + { debug_assert!(pseudo.is_precomputed()); let rule_node = self.rule_node_for_precomputed_pseudo( @@ -658,11 +664,10 @@ impl Stylist { None, ); - self.precomputed_values_for_pseudo_with_rule_node( + self.precomputed_values_for_pseudo_with_rule_node::<E>( guards, pseudo, parent, - cascade_flags, font_metrics, rule_node ) @@ -670,26 +675,31 @@ impl Stylist { /// Computes the style for a given "precomputed" pseudo-element with /// given rule node. - pub fn precomputed_values_for_pseudo_with_rule_node( + /// + /// TODO(emilio): The type parameter could go away with a void type + /// implementing TElement. + pub fn precomputed_values_for_pseudo_with_rule_node<E>( &self, guards: &StylesheetGuards, pseudo: &PseudoElement, parent: Option<&ComputedValues>, - cascade_flags: CascadeFlags, font_metrics: &FontMetricsProvider, - rule_node: StrongRuleNode - ) -> Arc<ComputedValues> { - self.compute_pseudo_element_style_with_inputs( - &CascadeInputs { - rules: Some(rule_node), + rules: StrongRuleNode + ) -> Arc<ComputedValues> + where + E: TElement, + { + self.compute_pseudo_element_style_with_inputs::<E>( + CascadeInputs { + rules: Some(rules), visited_rules: None, }, pseudo, guards, parent, font_metrics, - cascade_flags, - ).unwrap() + None, + ) } /// Returns the rule node for given precomputed pseudo-element. @@ -730,53 +740,25 @@ impl Stylist { } /// Returns the style for an anonymous box of the given type. + /// + /// TODO(emilio): The type parameter could go away with a void type + /// implementing TElement. #[cfg(feature = "servo")] - pub fn style_for_anonymous( + pub fn style_for_anonymous<E>( &self, guards: &StylesheetGuards, pseudo: &PseudoElement, - parent_style: &ComputedValues - ) -> Arc<ComputedValues> { + parent_style: &ComputedValues, + ) -> Arc<ComputedValues> + where + E: TElement, + { use font_metrics::ServoMetricsProvider; - - // For most (but not all) pseudo-elements, we inherit all values from the parent. - let inherit_all = match *pseudo { - // Anonymous table flows shouldn't inherit their parents properties in order - // to avoid doubling up styles such as transformations. - PseudoElement::ServoAnonymousTableCell | - PseudoElement::ServoAnonymousTableRow | - PseudoElement::ServoText | - PseudoElement::ServoInputText => false, - PseudoElement::ServoAnonymousBlock | - - // For tables, we do want style to inherit, because TableWrapper is responsible - // for handling clipping and scrolling, while Table is responsible for creating - // stacking contexts. StackingContextCollectionFlags makes sure this is processed - // properly. - PseudoElement::ServoAnonymousTable | - PseudoElement::ServoAnonymousTableWrapper | - - PseudoElement::ServoTableWrapper | - PseudoElement::ServoInlineBlockWrapper | - PseudoElement::ServoInlineAbsolute => true, - PseudoElement::Before | - PseudoElement::After | - PseudoElement::Selection | - PseudoElement::DetailsSummary | - PseudoElement::DetailsContent => { - unreachable!("That pseudo doesn't represent an anonymous box!") - } - }; - let mut cascade_flags = CascadeFlags::empty(); - if inherit_all { - cascade_flags.insert(CascadeFlags::INHERIT_ALL); - } - self.precomputed_values_for_pseudo( + self.precomputed_values_for_pseudo::<E>( guards, &pseudo, Some(parent_style), - cascade_flags, - &ServoMetricsProvider + &ServoMetricsProvider, ) } @@ -809,37 +791,34 @@ impl Stylist { is_probe, rule_inclusion, matching_fn - ); + )?; - self.compute_pseudo_element_style_with_inputs( - &cascade_inputs, + Some(self.compute_pseudo_element_style_with_inputs( + cascade_inputs, pseudo, guards, Some(parent_style), font_metrics, - CascadeFlags::empty(), - ) + Some(element), + )) } /// Computes a pseudo-element style lazily using the given CascadeInputs. /// This can be used for truly lazy pseudo-elements or to avoid redoing /// selector matching for eager pseudo-elements when we need to recompute /// their style with a new parent style. - pub fn compute_pseudo_element_style_with_inputs( + pub fn compute_pseudo_element_style_with_inputs<E>( &self, - inputs: &CascadeInputs, + inputs: CascadeInputs, pseudo: &PseudoElement, guards: &StylesheetGuards, parent_style: Option<&ComputedValues>, font_metrics: &FontMetricsProvider, - cascade_flags: CascadeFlags, - ) -> Option<Arc<ComputedValues>> { - // We may have only visited rules in cases when we are actually - // resolving, not probing, pseudo-element style. - if inputs.rules.is_none() && inputs.visited_rules.is_none() { - return None - } - + element: Option<E>, + ) -> Arc<ComputedValues> + where + E: TElement, + { // FIXME(emilio): The lack of layout_parent_style here could be // worrying, but we're probably dropping the display fixup for // pseudos other than before and after, so it's probably ok. @@ -852,16 +831,18 @@ impl Stylist { // <fieldset style="display: contents">. That is, the computed value of // display for the fieldset is "contents", even though it's not the used // value, so we don't need to adjust in a different way anyway. - Some(self.compute_style_with_inputs( - inputs, + self.cascade_style_and_visited( + element, Some(pseudo), + inputs, guards, parent_style, parent_style, parent_style, font_metrics, - cascade_flags, - )) + /* rule_cache = */ None, + &mut RuleCacheConditions::default(), + ) } /// Computes a style using the given CascadeInputs. This can be used to @@ -879,34 +860,43 @@ impl Stylist { /// /// is_link should be true if we're computing style for a link; that affects /// how :visited handling is done. - pub fn compute_style_with_inputs( + pub fn cascade_style_and_visited<E>( &self, - inputs: &CascadeInputs, + element: Option<E>, pseudo: Option<&PseudoElement>, + inputs: CascadeInputs, guards: &StylesheetGuards, parent_style: Option<&ComputedValues>, parent_style_ignoring_first_line: Option<&ComputedValues>, layout_parent_style: Option<&ComputedValues>, font_metrics: &FontMetricsProvider, - cascade_flags: CascadeFlags - ) -> Arc<ComputedValues> { + rule_cache: Option<&RuleCache>, + rule_cache_conditions: &mut RuleCacheConditions, + ) -> Arc<ComputedValues> + where + E: TElement, + { + debug_assert!(pseudo.is_some() || element.is_some(), "Huh?"); + + let cascade_flags = + pseudo.map_or(CascadeFlags::empty(), |p| p.cascade_flags()); + // We need to compute visited values if we have visited rules or if our // parent has visited values. let mut visited_values = None; if inputs.visited_rules.is_some() || parent_style.and_then(|s| s.visited_style()).is_some() { - // At this point inputs may have visited rules, or rules, or both, - // or neither (e.g. if it's a text style it may have neither). So - // we have to be a bit careful here. + // At this point inputs may have visited rules, or rules. let rule_node = match inputs.visited_rules.as_ref() { Some(rules) => rules, - None => inputs.rules.as_ref().unwrap_or(self.rule_tree().root()), + None => inputs.rules.as_ref().unwrap_or(self.rule_tree.root()), }; + let inherited_style; let inherited_style_ignoring_first_line; let layout_parent_style_for_visited; - if cascade_flags.contains(CascadeFlags::IS_LINK) { + if pseudo.is_none() && element.unwrap().is_link() { // We just want to use our parent style as our parent. inherited_style = parent_style; inherited_style_ignoring_first_line = parent_style_ignoring_first_line; @@ -928,7 +918,7 @@ impl Stylist { }); } - visited_values = Some(properties::cascade( + visited_values = Some(properties::cascade::<E>( &self.device, pseudo, rule_node, @@ -940,23 +930,22 @@ impl Stylist { font_metrics, cascade_flags | CascadeFlags::VISITED_DEPENDENT_ONLY, self.quirks_mode, - /* rule_cache = */ None, - &mut Default::default(), + rule_cache, + rule_cache_conditions, + element, )); } - // We may not have non-visited rules, if we only had visited ones. In - // that case we want to use the root rulenode for our non-visited rules. - let rules = inputs.rules.as_ref().unwrap_or(self.rule_tree.root()); - // Read the comment on `precomputed_values_for_pseudo` to see why it's // difficult to assert that display: contents nodes never arrive here // (tl;dr: It doesn't apply for replaced elements and such, but the // computed value is still "contents"). - properties::cascade( + // + // FIXME(emilio): We should assert that it holds if pseudo.is_none()! + properties::cascade::<E>( &self.device, pseudo, - rules, + inputs.rules.as_ref().unwrap_or(self.rule_tree.root()), guards, parent_style, parent_style_ignoring_first_line, @@ -965,8 +954,9 @@ impl Stylist { font_metrics, cascade_flags, self.quirks_mode, - /* rule_cache = */ None, - &mut Default::default(), + rule_cache, + rule_cache_conditions, + element, ) } @@ -983,7 +973,7 @@ impl Stylist { is_probe: bool, rule_inclusion: RuleInclusion, matching_fn: Option<&Fn(&PseudoElement) -> bool>, - ) -> CascadeInputs + ) -> Option<CascadeInputs> where E: TElement { @@ -1020,7 +1010,6 @@ impl Stylist { } }; - let mut inputs = CascadeInputs::default(); let mut declarations = ApplicableDeclarationList::new(); let mut matching_context = MatchingContext::new( MatchingMode::ForStatelessPseudoElement, @@ -1043,19 +1032,14 @@ impl Stylist { &mut set_selector_flags ); - if !declarations.is_empty() { - let rule_node = - self.rule_tree.compute_rule_node(&mut declarations, guards); - debug_assert!(rule_node != *self.rule_tree.root()); - inputs.rules = Some(rule_node); + if declarations.is_empty() && is_probe { + return None; } - if is_probe && inputs.rules.is_none() { - // When probing, don't compute visited styles if we have no - // unvisited styles. - return inputs; - } + let rules = + self.rule_tree.compute_rule_node(&mut declarations, guards); + let mut visited_rules = None; if parent_style.visited_style().is_some() { let mut declarations = ApplicableDeclarationList::new(); let mut matching_context = @@ -1083,14 +1067,15 @@ impl Stylist { let rule_node = self.rule_tree.insert_ordered_rules_with_important( declarations.drain().map(|a| a.order_and_level()), - guards); + guards, + ); if rule_node != *self.rule_tree.root() { - inputs.visited_rules = Some(rule_node); + visited_rules = Some(rule_node); } } } - inputs + Some(CascadeInputs { rules: Some(rules), visited_rules }) } /// Set a given device, which may change the styles that apply to the @@ -1236,7 +1221,6 @@ impl Stylist { rule_hash_target, applicable_declarations, context, - self.quirks_mode, flags_setter, CascadeLevel::UANormal ); @@ -1246,7 +1230,7 @@ impl Stylist { // Step 2: Presentational hints. let length_before_preshints = applicable_declarations.len(); element.synthesize_presentational_hints_for_legacy_attributes( - context.visited_handling, + context.visited_handling(), applicable_declarations ); if applicable_declarations.len() != length_before_preshints { @@ -1274,7 +1258,6 @@ impl Stylist { rule_hash_target, applicable_declarations, context, - self.quirks_mode, flags_setter, CascadeLevel::UserNormal, ); @@ -1305,7 +1288,6 @@ impl Stylist { rule_hash_target, applicable_declarations, context, - self.quirks_mode, flags_setter, CascadeLevel::AuthorNormal ); @@ -1327,7 +1309,7 @@ impl Stylist { // as `context`, write a test-case of :visited not working on // Shadow DOM and fix it! let mut matching_context = MatchingContext::new( - context.matching_mode, + context.matching_mode(), context.bloom_filter, context.nth_index_cache.as_mut().map(|s| &mut **s), stylist.quirks_mode, @@ -1339,7 +1321,6 @@ impl Stylist { rule_hash_target, applicable_declarations, &mut matching_context, - stylist.quirks_mode, flags_setter, CascadeLevel::AuthorNormal, ); @@ -1356,7 +1337,6 @@ impl Stylist { rule_hash_target, applicable_declarations, context, - self.quirks_mode, flags_setter, CascadeLevel::AuthorNormal ); @@ -1520,14 +1500,28 @@ impl Stylist { } /// Computes styles for a given declaration with parent_style. - pub fn compute_for_declarations( + /// + /// FIXME(emilio): the lack of pseudo / cascade flags look quite dubious, + /// hopefully this is only used for some canvas font stuff. + /// + /// TODO(emilio): The type parameter can go away when + /// https://github.com/rust-lang/rust/issues/35121 is fixed. + pub fn compute_for_declarations<E>( &self, guards: &StylesheetGuards, parent_style: &ComputedValues, declarations: Arc<Locked<PropertyDeclarationBlock>>, - ) -> Arc<ComputedValues> { + ) -> Arc<ComputedValues> + where + E: TElement, + { use font_metrics::get_metrics_provider_for_product; + // FIXME(emilio): Why do we even need the rule node? We should probably + // just avoid allocating it and calling `apply_declarations` directly, + // maybe... + // + // Also the `vec!` is super-wasteful. let v = vec![ApplicableDeclarationBlock::from_declarations( declarations.clone(), CascadeLevel::StyleAttributeNormal @@ -1542,7 +1536,7 @@ impl Stylist { let metrics = get_metrics_provider_for_product(); // FIXME(emilio): the pseudo bit looks quite dubious! - properties::cascade( + properties::cascade::<E>( &self.device, /* pseudo = */ None, &rule_node, @@ -1556,20 +1550,24 @@ impl Stylist { self.quirks_mode, /* rule_cache = */ None, &mut Default::default(), + /* element = */ None, ) } /// Accessor for a shared reference to the device. + #[inline] pub fn device(&self) -> &Device { &self.device } /// Accessor for a mutable reference to the device. + #[inline] pub fn device_mut(&mut self) -> &mut Device { &mut self.device } /// Accessor for a shared reference to the rule tree. + #[inline] pub fn rule_tree(&self) -> &RuleTree { &self.rule_tree } diff --git a/components/style/values/computed/align.rs b/components/style/values/computed/align.rs index f3caade67a5..85f8f70cb25 100644 --- a/components/style/values/computed/align.rs +++ b/components/style/values/computed/align.rs @@ -7,7 +7,7 @@ //! https://drafts.csswg.org/css-align/ use std::fmt; -use style_traits::ToCss; +use style_traits::{CssWriter, ToCss}; use values::computed::{Context, ToComputedValue}; use values::specified; @@ -26,7 +26,7 @@ pub struct JustifyItems { } impl ToCss for JustifyItems { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write, { self.computed.to_css(dest) diff --git a/components/style/values/computed/background.rs b/components/style/values/computed/background.rs index e71f208c984..7b7f7c4991b 100644 --- a/components/style/values/computed/background.rs +++ b/components/style/values/computed/background.rs @@ -6,8 +6,8 @@ use properties::animated_properties::RepeatableListAnimatable; use properties::longhands::background_size::computed_value::T as BackgroundSizeList; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::animated::{ToAnimatedValue, ToAnimatedZero}; use values::computed::{Context, ToComputedValue}; use values::computed::length::LengthOrPercentageOrAuto; @@ -96,9 +96,9 @@ impl BackgroundRepeat { } impl ToCss for BackgroundRepeat { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where - W: fmt::Write, + W: Write, { match (self.0, self.1) { (RepeatKeyword::Repeat, RepeatKeyword::NoRepeat) => dest.write_str("repeat-x"), diff --git a/components/style/values/computed/basic_shape.rs b/components/style/values/computed/basic_shape.rs index 20dcffec9c6..17c39741c81 100644 --- a/components/style/values/computed/basic_shape.rs +++ b/components/style/values/computed/basic_shape.rs @@ -7,8 +7,8 @@ //! //! [basic-shape]: https://drafts.csswg.org/css-shapes/#typedef-basic-shape -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::computed::{LengthOrPercentage, ComputedUrl, Image}; use values::generics::basic_shape::{BasicShape as GenericBasicShape}; use values::generics::basic_shape::{Circle as GenericCircle, ClippingShape as GenericClippingShape}; @@ -37,7 +37,10 @@ pub type Ellipse = GenericEllipse<LengthOrPercentage, LengthOrPercentage, Length pub type ShapeRadius = GenericShapeRadius<LengthOrPercentage>; impl ToCss for Circle { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("circle(")?; self.radius.to_css(dest)?; dest.write_str(" at ")?; @@ -47,7 +50,10 @@ impl ToCss for Circle { } impl ToCss for Ellipse { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("ellipse(")?; if (self.semiaxis_x, self.semiaxis_y) != Default::default() { self.semiaxis_x.to_css(dest)?; diff --git a/components/style/values/computed/color.rs b/components/style/values/computed/color.rs index 6327e734626..314c4bed266 100644 --- a/components/style/values/computed/color.rs +++ b/components/style/values/computed/color.rs @@ -6,7 +6,7 @@ use cssparser::{Color as CSSParserColor, RGBA}; use std::fmt; -use style_traits::ToCss; +use style_traits::{CssWriter, ToCss}; use values::animated::ToAnimatedValue; use values::animated::color::{Color as AnimatedColor, RGBA as AnimatedRGBA}; @@ -138,7 +138,7 @@ impl From<RGBA> for Color { } impl ToCss for Color { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { if self.is_numeric() { self.color.to_css(dest) } else if self.is_currentcolor() { diff --git a/components/style/values/computed/font.rs b/components/style/values/computed/font.rs index 407be16c203..20a41154ec9 100644 --- a/components/style/values/computed/font.rs +++ b/components/style/values/computed/font.rs @@ -19,7 +19,7 @@ use std::fmt::{self, Write}; use std::hash::{Hash, Hasher}; #[cfg(feature = "servo")] use std::slice; -use style_traits::{ToCss, ParseError}; +use style_traits::{CssWriter, ParseError, ToCss}; use values::CSSFloat; use values::animated::{ToAnimatedValue, ToAnimatedZero}; use values::computed::{Context, NonNegativeLength, ToComputedValue}; @@ -201,7 +201,7 @@ impl FontSize { } impl ToCss for FontSize { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { self.size.to_css(dest) } } @@ -257,7 +257,7 @@ impl MallocSizeOf for FontFamily { } impl ToCss for FontFamily { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { let mut iter = self.0.iter(); iter.next().unwrap().to_css(dest)?; for family in iter { @@ -279,7 +279,7 @@ pub struct FamilyName { } impl ToCss for FamilyName { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { match self.syntax { FamilyNameSyntax::Quoted => { dest.write_char('"')?; @@ -488,7 +488,7 @@ impl SingleFontFamily { } impl ToCss for SingleFontFamily { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { match *self { SingleFontFamily::FamilyName(ref name) => name.to_css(dest), @@ -731,7 +731,7 @@ impl FontLanguageOverride { } impl ToCss for FontLanguageOverride { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { use std::str; if self.0 == 0 { diff --git a/components/style/values/computed/image.rs b/components/style/values/computed/image.rs index 8972774aa77..93fa627a41d 100644 --- a/components/style/values/computed/image.rs +++ b/components/style/values/computed/image.rs @@ -9,8 +9,8 @@ use cssparser::RGBA; use std::f32::consts::PI; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::{Either, None_}; use values::computed::{Angle, ComputedUrl, Context, Length, LengthOrPercentage, NumberOrPercentage, ToComputedValue}; #[cfg(feature = "gecko")] @@ -99,8 +99,13 @@ impl GenericLineDirection for LineDirection { } } - fn to_css<W>(&self, dest: &mut W, compat_mode: CompatMode) -> fmt::Result - where W: fmt::Write + fn to_css<W>( + &self, + dest: &mut CssWriter<W>, + compat_mode: CompatMode, + ) -> fmt::Result + where + W: Write, { match *self { LineDirection::Angle(ref angle) => angle.to_css(dest), diff --git a/components/style/values/computed/inherited_box.rs b/components/style/values/computed/inherited_box.rs index 2fa4dd819a5..f6fe6ad7bf9 100644 --- a/components/style/values/computed/inherited_box.rs +++ b/components/style/values/computed/inherited_box.rs @@ -4,8 +4,8 @@ //! Computed values for inherited box -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::specified::Angle; /// An angle rounded and normalized per https://drafts.csswg.org/css-images/#propdef-image-orientation @@ -31,7 +31,10 @@ impl Orientation { } impl ToCss for Orientation { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { // Should agree with Angle::to_css. match *self { Orientation::Angle0 => dest.write_str("0deg"), @@ -60,7 +63,10 @@ impl ImageOrientation { } impl ToCss for ImageOrientation { - fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { ImageOrientation::FromImage => dest.write_str("from-image"), ImageOrientation::AngleWithFlipped(angle, flipped) => { diff --git a/components/style/values/computed/length.rs b/components/style/values/computed/length.rs index a0a92c713c2..49db7201a39 100644 --- a/components/style/values/computed/length.rs +++ b/components/style/values/computed/length.rs @@ -6,9 +6,9 @@ use app_units::Au; use ordered_float::NotNaN; -use std::fmt; +use std::fmt::{self, Write}; use std::ops::{Add, Neg}; -use style_traits::ToCss; +use style_traits::{CssWriter, ToCss}; use style_traits::values::specified::AllowedNumericType; use super::{Number, ToComputedValue, Context, Percentage}; use values::{Auto, CSSFloat, Either, ExtremumLength, None_, Normal, specified}; @@ -203,7 +203,10 @@ impl From<LengthOrPercentageOrNone> for Option<CalcLengthOrPercentage> { } impl ToCss for CalcLengthOrPercentage { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { use num_traits::Zero; let (length, percentage) = match (self.length, self.percentage) { @@ -738,7 +741,10 @@ impl CSSPixelLength { impl ToCss for CSSPixelLength { #[inline] - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { self.0.to_css(dest)?; dest.write_str("px") } diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index 050d101a16b..a559f4fbe87 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -15,12 +15,13 @@ use properties::{ComputedValues, LonghandId, StyleBuilder}; use rule_cache::RuleCacheConditions; #[cfg(feature = "servo")] use servo_url::ServoUrl; -use std::{f32, fmt}; use std::cell::RefCell; +use std::f32; +use std::fmt::{self, Write}; #[cfg(feature = "servo")] use std::sync::Arc; -use style_traits::ToCss; -use style_traits::cursor::Cursor; +use style_traits::{CssWriter, ToCss}; +use style_traits::cursor::CursorKind; use super::{CSSFloat, CSSInteger}; use super::generics::{GreaterThanOrEqualToOne, NonNegative}; use super::generics::grid::{GridLine as GenericGridLine, TrackBreadth as GenericTrackBreadth}; @@ -61,6 +62,9 @@ pub use self::list::ListStyleType; pub use self::outline::OutlineStyle; pub use self::percentage::Percentage; pub use self::position::{Position, GridAutoFlow, GridTemplateAreas}; +pub use self::pointing::Cursor; +#[cfg(feature = "gecko")] +pub use self::pointing::CursorImage; pub use self::svg::{SVGLength, SVGOpacity, SVGPaint, SVGPaintKind}; pub use self::svg::{SVGPaintOrder, SVGStrokeDashArray, SVGWidth}; pub use self::svg::MozContextProperties; @@ -90,6 +94,7 @@ pub mod length; pub mod list; pub mod outline; pub mod percentage; +pub mod pointing; pub mod position; pub mod rect; pub mod svg; @@ -404,7 +409,7 @@ trivial_to_computed_value!(u16); trivial_to_computed_value!(u32); trivial_to_computed_value!(Atom); trivial_to_computed_value!(BorderStyle); -trivial_to_computed_value!(Cursor); +trivial_to_computed_value!(CursorKind); trivial_to_computed_value!(Namespace); trivial_to_computed_value!(String); trivial_to_computed_value!(Box<str>); @@ -527,7 +532,10 @@ pub struct ClipRect { } impl ToCss for ClipRect { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("rect(")?; if let Some(top) = self.top { top.to_css(dest)?; @@ -623,7 +631,10 @@ impl ComputedUrl { #[cfg(feature = "servo")] impl ToCss for ComputedUrl { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let string = match *self { ComputedUrl::Valid(ref url) => url.as_str(), ComputedUrl::Invalid(ref invalid_string) => invalid_string, diff --git a/components/style/values/computed/percentage.rs b/components/style/values/computed/percentage.rs index 1bc28a13488..842019f03c8 100644 --- a/components/style/values/computed/percentage.rs +++ b/components/style/values/computed/percentage.rs @@ -5,7 +5,7 @@ //! Computed percentages. use std::fmt; -use style_traits::ToCss; +use style_traits::{CssWriter, ToCss}; use values::{CSSFloat, serialize_percentage}; /// A computed percentage. @@ -35,7 +35,7 @@ impl Percentage { } impl ToCss for Percentage { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write, { diff --git a/components/style/values/computed/pointing.rs b/components/style/values/computed/pointing.rs new file mode 100644 index 00000000000..b14f22dec9c --- /dev/null +++ b/components/style/values/computed/pointing.rs @@ -0,0 +1,140 @@ +/* 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/. */ + +//! Computed values for Pointing properties. +//! +//! https://drafts.csswg.org/css-ui/#pointing-keyboard + +use cssparser::Parser; +use parser::{Parse, ParserContext}; +use selectors::parser::SelectorParseErrorKind; +#[cfg(feature = "gecko")] +use std::fmt::{self, Write}; +#[cfg(feature = "gecko")] +use style_traits::{CssWriter, ToCss}; +use style_traits::ParseError; +use style_traits::cursor::CursorKind; + +/// The computed value for the `cursor` property. +/// +/// https://drafts.csswg.org/css-ui/#cursor +pub use values::specified::pointing::Cursor; +#[cfg(feature = "gecko")] +pub use values::specified::pointing::CursorImage; +#[cfg(feature = "gecko")] +use values::specified::url::SpecifiedUrl; + +impl Cursor { + /// Set `cursor` to `auto` + #[cfg(feature = "servo")] + #[inline] + pub fn auto() -> Self { + Cursor(CursorKind::Auto) + } + + /// Set `cursor` to `auto` + #[cfg(feature = "gecko")] + #[inline] + pub fn auto() -> Self { + Self { + images: vec![].into_boxed_slice(), + keyword: CursorKind::Auto + } + } +} + +impl Parse for Cursor { + /// cursor: [auto | default | ...] + #[cfg(feature = "servo")] + fn parse<'i, 't>( + context: &ParserContext, + input: &mut Parser<'i, 't> + ) -> Result<Self, ParseError<'i>> { + Ok(Cursor(CursorKind::parse(context, input)?)) + } + + /// cursor: [<url> [<number> <number>]?]# [auto | default | ...] + #[cfg(feature = "gecko")] + fn parse<'i, 't>( + context: &ParserContext, + input: &mut Parser<'i, 't> + ) -> Result<Self, ParseError<'i>> { + let mut images = vec![]; + loop { + match input.try(|input| CursorImage::parse_image(context, input)) { + Ok(mut image) => { + image.url.build_image_value(); + images.push(image) + } + Err(_) => break, + } + input.expect_comma()?; + } + Ok(Self { + images: images.into_boxed_slice(), + keyword: CursorKind::parse(context, input)?, + }) + } +} + +#[cfg(feature = "gecko")] +impl ToCss for Cursor { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { + for url in &*self.images { + url.to_css(dest)?; + dest.write_str(", ")?; + } + self.keyword.to_css(dest) + } +} + +impl Parse for CursorKind { + fn parse<'i, 't>( + _context: &ParserContext, + input: &mut Parser<'i, 't> + ) -> Result<Self, ParseError<'i>> { + let location = input.current_source_location(); + let ident = input.expect_ident()?; + CursorKind::from_css_keyword(&ident) + .map_err(|_| location.new_custom_error( + SelectorParseErrorKind::UnexpectedIdent(ident.clone()))) + } +} + +#[cfg(feature = "gecko")] +impl CursorImage { + fn parse_image<'i, 't>( + context: &ParserContext, + input: &mut Parser<'i, 't> + ) -> Result<Self, ParseError<'i>> { + Ok(Self { + url: SpecifiedUrl::parse(context, input)?, + // FIXME(emilio): Should use Number::parse to handle calc() correctly. + hotspot: match input.try(|input| input.expect_number()) { + Ok(number) => Some((number, input.expect_number()?)), + Err(_) => None, + }, + }) + } +} + +#[cfg(feature = "gecko")] +impl ToCss for CursorImage { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { + self.url.to_css(dest)?; + if let Some((x, y)) = self.hotspot { + dest.write_str(" ")?; + x.to_css(dest)?; + dest.write_str(" ")?; + y.to_css(dest)?; + } + Ok(()) + } +} diff --git a/components/style/values/computed/position.rs b/components/style/values/computed/position.rs index ed6a308151f..abd3522382d 100644 --- a/components/style/values/computed/position.rs +++ b/components/style/values/computed/position.rs @@ -7,8 +7,8 @@ //! //! [position]: https://drafts.csswg.org/css-backgrounds-3/#position -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::computed::{LengthOrPercentage, Percentage}; use values::generics::position::Position as GenericPosition; pub use values::specified::position::{GridAutoFlow, GridTemplateAreas}; @@ -40,7 +40,10 @@ impl Position { } impl ToCss for Position { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { self.horizontal.to_css(dest)?; dest.write_str(" ")?; self.vertical.to_css(dest) diff --git a/components/style/values/computed/text.rs b/components/style/values/computed/text.rs index 27c198a46a5..123f735d513 100644 --- a/components/style/values/computed/text.rs +++ b/components/style/values/computed/text.rs @@ -6,8 +6,8 @@ #[cfg(feature = "servo")] use properties::StyleBuilder; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::{CSSInteger, CSSFloat}; use values::animated::ToAnimatedZero; use values::computed::{NonNegativeLength, NonNegativeNumber}; @@ -66,7 +66,10 @@ impl TextOverflow { } impl ToCss for TextOverflow { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.sides_are_logical { debug_assert!(self.first == TextOverflowSide::Clip); self.second.to_css(dest)?; @@ -80,7 +83,10 @@ impl ToCss for TextOverflow { } impl ToCss for TextDecorationLine { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let mut has_any = false; macro_rules! write_value { diff --git a/components/style/values/computed/time.rs b/components/style/values/computed/time.rs index a90a0935a8e..cef128af4a8 100644 --- a/components/style/values/computed/time.rs +++ b/components/style/values/computed/time.rs @@ -4,8 +4,8 @@ //! Computed time values. -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::CSSFloat; /// A computed `<time>` value. @@ -36,9 +36,9 @@ impl Time { } impl ToCss for Time { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where - W: fmt::Write, + W: Write, { self.seconds().to_css(dest)?; dest.write_str("s") diff --git a/components/style/values/generics/basic_shape.rs b/components/style/values/generics/basic_shape.rs index a2f0eb08971..07881a3a103 100644 --- a/components/style/values/generics/basic_shape.rs +++ b/components/style/values/generics/basic_shape.rs @@ -5,8 +5,8 @@ //! CSS handling for the [`basic-shape`](https://drafts.csswg.org/css-shapes/#typedef-basic-shape) //! types that are generic over their `ToCss` implementations. -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::animated::{Animate, Procedure, ToAnimatedZero}; use values::distance::{ComputeSquaredDistance, SquaredDistance}; use values::generics::border::BorderRadius; @@ -152,7 +152,10 @@ impl<B, T, U> ToAnimatedZero for ShapeSource<B, T, U> { impl<L> ToCss for InsetRect<L> where L: ToCss + PartialEq { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("inset(")?; self.rect.to_css(dest)?; if let Some(ref radius) = self.round { @@ -210,7 +213,10 @@ where } impl<L: ToCss> ToCss for Polygon<L> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("polygon(")?; if self.fill != FillRule::default() { self.fill.to_css(dest)?; diff --git a/components/style/values/generics/border.rs b/components/style/values/generics/border.rs index 9237d060ef0..00cfe33ab62 100644 --- a/components/style/values/generics/border.rs +++ b/components/style/values/generics/border.rs @@ -4,8 +4,8 @@ //! Generic types for CSS values related to borders. -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::generics::rect::Rect; use values::generics::size::Size; @@ -84,8 +84,9 @@ impl<N> From<N> for BorderImageSlice<N> impl<N> ToCss for BorderImageSlice<N> where N: PartialEq + ToCss, { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { self.offsets.to_css(dest)?; if self.fill { @@ -118,8 +119,13 @@ impl<L> BorderRadius<L> { /// Serialises two given rects following the syntax of the `border-radius`` /// property. - pub fn serialize_rects<W>(widths: Rect<&L>, heights: Rect<&L>, dest: &mut W) -> fmt::Result - where W: fmt::Write, + pub fn serialize_rects<W>( + widths: Rect<&L>, + heights: Rect<&L>, + dest: &mut CssWriter<W>, + ) -> fmt::Result + where + W: Write, { widths.to_css(dest)?; if widths.0 != heights.0 || widths.1 != heights.1 || widths.2 != heights.2 || widths.3 != heights.3 { @@ -133,7 +139,10 @@ impl<L> BorderRadius<L> impl<L> ToCss for BorderRadius<L> where L: PartialEq + ToCss { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let BorderRadius { top_left: BorderCornerRadius(ref tl), top_right: BorderCornerRadius(ref tr), diff --git a/components/style/values/generics/counters.rs b/components/style/values/generics/counters.rs index c6ea4425a39..127f94ac45d 100644 --- a/components/style/values/generics/counters.rs +++ b/components/style/values/generics/counters.rs @@ -5,7 +5,7 @@ //! Generic types for counters-related CSS values. use std::fmt; -use style_traits::ToCss; +use style_traits::{CssWriter, ToCss}; use values::CustomIdent; /// A generic value for the `counter-increment` property. @@ -27,7 +27,7 @@ where I: ToCss, { #[inline] - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write, { diff --git a/components/style/values/generics/effects.rs b/components/style/values/generics/effects.rs index ff77556d253..b4fcbb0c505 100644 --- a/components/style/values/generics/effects.rs +++ b/components/style/values/generics/effects.rs @@ -4,8 +4,8 @@ //! Generic types for CSS values related to effects. -use std::fmt; -use style_traits::values::{SequenceWriter, ToCss}; +use std::fmt::{self, Write}; +use style_traits::values::{CssWriter, SequenceWriter, ToCss}; #[cfg(feature = "gecko")] use values::specified::url::SpecifiedUrl; @@ -88,9 +88,9 @@ where BlurShapeLength: ToCss, ShapeLength: ToCss, { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where - W: fmt::Write, + W: Write, { { let mut writer = SequenceWriter::new(&mut *dest, " "); diff --git a/components/style/values/generics/grid.rs b/components/style/values/generics/grid.rs index 95e1f1d500e..dab8b0f3e9d 100644 --- a/components/style/values/generics/grid.rs +++ b/components/style/values/generics/grid.rs @@ -7,8 +7,9 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; -use std::{fmt, mem, usize}; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use std::{mem, usize}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::{CSSFloat, CustomIdent}; use values::computed::{Context, ToComputedValue}; use values::specified; @@ -49,7 +50,10 @@ impl<Integer> ToCss for GridLine<Integer> where Integer: ToCss, { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.is_auto() { return dest.write_str("auto") } @@ -230,7 +234,10 @@ impl<L: PartialEq> TrackSize<L> { } impl<L: ToCss> ToCss for TrackSize<L> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { TrackSize::Breadth(ref breadth) => breadth.to_css(dest), TrackSize::Minmax(ref min, ref max) => { @@ -315,10 +322,10 @@ pub fn concat_serialize_idents<W>( suffix: &str, slice: &[CustomIdent], sep: &str, - dest: &mut W, + dest: &mut CssWriter<W>, ) -> fmt::Result where - W: fmt::Write + W: Write, { if let Some((ref first, rest)) = slice.split_first() { dest.write_str(prefix)?; @@ -385,7 +392,10 @@ pub struct TrackRepeat<L, I> { } impl<L: ToCss, I: ToCss> ToCss for TrackRepeat<L, I> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("repeat(")?; self.count.to_css(dest)?; dest.write_str(", ")?; @@ -503,7 +513,10 @@ pub struct TrackList<LengthOrPercentage, Integer> { } impl<L: ToCss, I: ToCss> ToCss for TrackList<L, I> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let auto_idx = match self.list_type { TrackListType::Auto(i) => i as usize, _ => usize::MAX, @@ -614,7 +627,10 @@ impl Parse for LineNameList { } impl ToCss for LineNameList { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("subgrid")?; let fill_idx = self.fill_idx.map(|v| v as usize).unwrap_or(usize::MAX); for (i, names) in self.names.iter().enumerate() { diff --git a/components/style/values/generics/image.rs b/components/style/values/generics/image.rs index f7329cf4def..d74c05ae81d 100644 --- a/components/style/values/generics/image.rs +++ b/components/style/values/generics/image.rs @@ -10,8 +10,8 @@ use Atom; use cssparser::serialize_identifier; use custom_properties; use servo_arc::Arc; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; /// An [image]. /// @@ -143,7 +143,10 @@ pub struct PaintWorklet { trivial_to_computed_value!(PaintWorklet); impl ToCss for PaintWorklet { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("paint(")?; serialize_identifier(&*self.name.to_string(), dest)?; for argument in &self.arguments { @@ -169,28 +172,23 @@ pub struct MozImageRect<NumberOrPercentage, MozImageRectUrl> { } impl<G, R, U> fmt::Debug for Image<G, R, U> - where G: fmt::Debug, R: fmt::Debug, U: fmt::Debug + ToCss +where + G: ToCss, + R: ToCss, + U: ToCss, { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - Image::Url(ref url) => url.to_css(f), - Image::Gradient(ref grad) => grad.fmt(f), - Image::Rect(ref rect) => rect.fmt(f), - #[cfg(feature = "servo")] - Image::PaintWorklet(ref paint_worklet) => paint_worklet.fmt(f), - Image::Element(ref selector) => { - f.write_str("-moz-element(#")?; - serialize_identifier(&selector.to_string(), f)?; - f.write_str(")") - }, - } + self.to_css(&mut CssWriter::new(f)) } } impl<G, R, U> ToCss for Image<G, R, U> where G: ToCss, R: ToCss, U: ToCss { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { Image::Url(ref url) => url.to_css(dest), Image::Gradient(ref gradient) => gradient.to_css(dest), @@ -209,7 +207,10 @@ impl<G, R, U> ToCss for Image<G, R, U> impl<D, L, LoP, P, C, A> ToCss for Gradient<D, L, LoP, P, C, A> where D: LineDirection, L: ToCss, LoP: ToCss, P: ToCss, C: ToCss, A: ToCss { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match self.compat_mode { CompatMode::WebKit => dest.write_str("-webkit-")?, CompatMode::Moz => dest.write_str("-moz-")?, @@ -283,17 +284,17 @@ pub trait LineDirection { fn points_downwards(&self, compat_mode: CompatMode) -> bool; /// Serialises this direction according to the compatibility mode. - fn to_css<W>(&self, dest: &mut W, compat_mode: CompatMode) -> fmt::Result - where W: fmt::Write; + fn to_css<W>(&self, dest: &mut CssWriter<W>, compat_mode: CompatMode) -> fmt::Result + where W: Write; } impl<L> ToCss for Circle<L> where L: ToCss, { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where - W: fmt::Write, + W: Write, { match *self { Circle::Extent(ShapeExtent::FarthestCorner) | diff --git a/components/style/values/generics/mod.rs b/components/style/values/generics/mod.rs index c2a20081c98..263db6890d2 100644 --- a/components/style/values/generics/mod.rs +++ b/components/style/values/generics/mod.rs @@ -8,8 +8,9 @@ use counter_style::{Symbols, parse_counter_style_name}; use cssparser::Parser; use parser::{Parse, ParserContext}; -use std::fmt; -use style_traits::{Comma, OneOrMoreSeparated, ParseError, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use style_traits::{Comma, CssWriter, OneOrMoreSeparated, ParseError}; +use style_traits::{StyleParseErrorKind, ToCss}; use super::CustomIdent; pub mod background; @@ -144,7 +145,10 @@ impl<T> OneOrMoreSeparated for FontSettingTag<T> { } impl<T: ToCss> ToCss for FontSettingTag<T> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { use byteorder::{BigEndian, ByteOrder}; use std::str; @@ -231,7 +235,10 @@ pub struct FontSettingTagInt(pub u32); pub struct FontSettingTagFloat(pub f32); impl ToCss for FontSettingTagInt { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match self.0 { 1 => Ok(()), 0 => dest.write_str(" off"), @@ -273,7 +280,10 @@ impl Parse for FontSettingTagFloat { } impl ToCss for FontSettingTagFloat { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str(" ")?; self.0.to_css(dest) } diff --git a/components/style/values/generics/rect.rs b/components/style/values/generics/rect.rs index fd72fa5b805..028ca5b231e 100644 --- a/components/style/values/generics/rect.rs +++ b/components/style/values/generics/rect.rs @@ -6,8 +6,8 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; -use std::fmt; -use style_traits::{ToCss, ParseError}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, ToCss}; /// A CSS value made of four components, where its `ToCss` impl will try to /// serialize as few components as possible, like for example in `border-width`. @@ -68,8 +68,9 @@ impl<T> Parse for Rect<T> impl<T> ToCss for Rect<T> where T: PartialEq + ToCss { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { self.0.to_css(dest)?; let same_vertical = self.0 == self.2; diff --git a/components/style/values/generics/size.rs b/components/style/values/generics/size.rs index ed5b7a516f7..f8c691a9a23 100644 --- a/components/style/values/generics/size.rs +++ b/components/style/values/generics/size.rs @@ -7,8 +7,8 @@ use cssparser::Parser; use euclid::Size2D; use parser::ParserContext; -use std::fmt; -use style_traits::{ToCss, ParseError}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, ToCss}; use values::animated::ToAnimatedValue; /// A generic size, for `border-*-radius` longhand properties, or @@ -56,9 +56,9 @@ impl<L> ToCss for Size<L> where L: ToCss + PartialEq, { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: - fmt::Write + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { self.0.width.to_css(dest)?; diff --git a/components/style/values/generics/svg.rs b/components/style/values/generics/svg.rs index 0d0a60d61ce..f1c8278ee6e 100644 --- a/components/style/values/generics/svg.rs +++ b/components/style/values/generics/svg.rs @@ -6,8 +6,8 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; -use std::fmt; -use style_traits::{ParseError, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::{Either, None_}; use values::computed::NumberOrPercentage; use values::computed::length::LengthOrPercentage; @@ -209,7 +209,10 @@ pub enum SVGStrokeDashArray<LengthType> { } impl<LengthType> ToCss for SVGStrokeDashArray<LengthType> where LengthType: ToCss { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match self { &SVGStrokeDashArray::Values(ref values) => { let mut iter = values.iter(); diff --git a/components/style/values/generics/transform.rs b/components/style/values/generics/transform.rs index 06ec91c25a5..7c2bb57546e 100644 --- a/components/style/values/generics/transform.rs +++ b/components/style/values/generics/transform.rs @@ -7,8 +7,8 @@ use app_units::Au; use euclid::{self, Rect, Transform3D}; use num_traits::Zero; -use std::fmt; -use style_traits::ToCss; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ToCss}; use values::{computed, CSSFloat}; use values::computed::length::Length as ComputedLength; use values::computed::length::LengthOrPercentage as ComputedLengthOrPercentage; @@ -30,7 +30,8 @@ pub struct Matrix<T, U = T> { #[allow(missing_docs)] #[cfg_attr(rustfmt, rustfmt_skip)] -#[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToComputedValue)] +#[css(comma, function = "matrix3d")] +#[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)] pub struct Matrix3D<T, U = T, V = T> { pub m11: T, pub m12: T, pub m13: T, pub m14: T, pub m21: T, pub m22: T, pub m23: T, pub m24: T, @@ -136,9 +137,9 @@ where Integer: ToCss, Number: ToCss, { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where - W: fmt::Write, + W: Write, { match *self { TimingFunction::Keyword(keyword) => keyword.to_css(dest), @@ -191,7 +192,7 @@ impl TimingKeyword { } } -#[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue)] +#[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)] /// A single operation in the list of a `transform` value pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, LengthOrPercentage, LoPoNumber> { /// Represents a 2D 2x3 matrix. @@ -200,31 +201,37 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng /// For `moz-transform`. PrefixedMatrix(Matrix<Number, LoPoNumber>), /// Represents a 3D 4x4 matrix. - #[allow(missing_docs)] Matrix3D(Matrix3D<Number>), /// Represents a 3D 4x4 matrix with percentage and length values. /// For `moz-transform`. - #[allow(missing_docs)] PrefixedMatrix3D(Matrix3D<Number, LoPoNumber, LengthOrNumber>), /// A 2D skew. /// /// If the second angle is not provided it is assumed zero. /// /// Syntax can be skew(angle) or skew(angle, angle) + #[css(comma, function)] Skew(Angle, Option<Angle>), /// skewX(angle) + #[css(function = "skewX")] SkewX(Angle), /// skewY(angle) + #[css(function = "skewY")] SkewY(Angle), /// translate(x, y) or translate(x) + #[css(comma, function)] Translate(LengthOrPercentage, Option<LengthOrPercentage>), /// translateX(x) + #[css(function = "translateX")] TranslateX(LengthOrPercentage), /// translateY(y) + #[css(function = "translateY")] TranslateY(LengthOrPercentage), /// translateZ(z) + #[css(function = "translateZ")] TranslateZ(Length), /// translate3d(x, y, z) + #[css(comma, function = "translate3d")] Translate3D(LengthOrPercentage, LengthOrPercentage, Length), /// A 2D scaling factor. /// @@ -234,28 +241,38 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng /// Negative values are allowed and flip the element. /// /// Syntax can be scale(factor) or scale(factor, factor) + #[css(comma, function)] Scale(Number, Option<Number>), /// scaleX(factor) + #[css(function = "scaleX")] ScaleX(Number), /// scaleY(factor) + #[css(function = "scaleY")] ScaleY(Number), /// scaleZ(factor) + #[css(function = "scaleZ")] ScaleZ(Number), /// scale3D(factorX, factorY, factorZ) + #[css(comma, function = "scale3d")] Scale3D(Number, Number, Number), /// Describes a 2D Rotation. /// /// In a 3D scene `rotate(angle)` is equivalent to `rotateZ(angle)`. + #[css(function)] Rotate(Angle), /// Rotation in 3D space around the x-axis. + #[css(function = "rotateX")] RotateX(Angle), /// Rotation in 3D space around the y-axis. + #[css(function = "rotateY")] RotateY(Angle), /// Rotation in 3D space around the z-axis. + #[css(function = "rotateZ")] RotateZ(Angle), /// Rotation in 3D space. /// /// Generalization of rotateX, rotateY and rotateZ. + #[css(comma, function = "rotate3d")] Rotate3D(Number, Number, Number, Angle), /// Specifies a perspective projection matrix. /// @@ -263,11 +280,14 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng /// [§ 13.1. 3D Transform Function](https://drafts.csswg.org/css-transforms-2/#funcdef-perspective). /// /// The value must be greater than or equal to zero. + #[css(function)] Perspective(Length), /// A intermediate type for interpolation of mismatched transform lists. #[allow(missing_docs)] + #[css(comma, function = "interpolatematrix")] InterpolateMatrix { #[compute(ignore_bound)] + #[css(ignore_bound)] from_list: Transform< TransformOperation< Angle, @@ -280,6 +300,7 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng >, >, #[compute(ignore_bound)] + #[css(ignore_bound)] to_list: Transform< TransformOperation< Angle, @@ -296,8 +317,10 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng }, /// A intermediate type for accumulation of mismatched transform lists. #[allow(missing_docs)] + #[css(comma, function = "accumulatematrix")] AccumulateMatrix { #[compute(ignore_bound)] + #[css(ignore_bound)] from_list: Transform< TransformOperation< Angle, @@ -310,6 +333,7 @@ pub enum TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, Leng >, >, #[compute(ignore_bound)] + #[css(ignore_bound)] to_list: Transform< TransformOperation< Angle, @@ -541,121 +565,10 @@ where } } -#[cfg_attr(rustfmt, rustfmt_skip)] -impl<Angle: ToCss + Copy, Number: ToCss + Copy, Length: ToCss, - Integer: ToCss + Copy, LengthOrNumber: ToCss, LengthOrPercentage: ToCss, LoPoNumber: ToCss> - ToCss for - TransformOperation<Angle, Number, Length, Integer, LengthOrNumber, LengthOrPercentage, LoPoNumber> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { - match *self { - TransformOperation::Matrix(ref m) => m.to_css(dest), - TransformOperation::PrefixedMatrix(ref m) => m.to_css(dest), - TransformOperation::Matrix3D(Matrix3D { - m11, m12, m13, m14, - m21, m22, m23, m24, - m31, m32, m33, m34, - m41, m42, m43, m44, - }) => { - serialize_function!(dest, matrix3d( - m11, m12, m13, m14, - m21, m22, m23, m24, - m31, m32, m33, m34, - m41, m42, m43, m44, - )) - } - TransformOperation::PrefixedMatrix3D(Matrix3D { - m11, m12, m13, m14, - m21, m22, m23, m24, - m31, m32, m33, m34, - ref m41, ref m42, ref m43, m44, - }) => { - serialize_function!(dest, matrix3d( - m11, m12, m13, m14, - m21, m22, m23, m24, - m31, m32, m33, m34, - m41, m42, m43, m44, - )) - } - TransformOperation::Skew(ax, None) => { - serialize_function!(dest, skew(ax)) - } - TransformOperation::Skew(ax, Some(ay)) => { - serialize_function!(dest, skew(ax, ay)) - } - TransformOperation::SkewX(angle) => { - serialize_function!(dest, skewX(angle)) - } - TransformOperation::SkewY(angle) => { - serialize_function!(dest, skewY(angle)) - } - TransformOperation::Translate(ref tx, None) => { - serialize_function!(dest, translate(tx)) - } - TransformOperation::Translate(ref tx, Some(ref ty)) => { - serialize_function!(dest, translate(tx, ty)) - } - TransformOperation::TranslateX(ref tx) => { - serialize_function!(dest, translateX(tx)) - } - TransformOperation::TranslateY(ref ty) => { - serialize_function!(dest, translateY(ty)) - } - TransformOperation::TranslateZ(ref tz) => { - serialize_function!(dest, translateZ(tz)) - } - TransformOperation::Translate3D(ref tx, ref ty, ref tz) => { - serialize_function!(dest, translate3d(tx, ty, tz)) - } - TransformOperation::Scale(factor, None) => { - serialize_function!(dest, scale(factor)) - } - TransformOperation::Scale(sx, Some(sy)) => { - serialize_function!(dest, scale(sx, sy)) - } - TransformOperation::ScaleX(sx) => { - serialize_function!(dest, scaleX(sx)) - } - TransformOperation::ScaleY(sy) => { - serialize_function!(dest, scaleY(sy)) - } - TransformOperation::ScaleZ(sz) => { - serialize_function!(dest, scaleZ(sz)) - } - TransformOperation::Scale3D(sx, sy, sz) => { - serialize_function!(dest, scale3d(sx, sy, sz)) - } - TransformOperation::Rotate(theta) => { - serialize_function!(dest, rotate(theta)) - } - TransformOperation::RotateX(theta) => { - serialize_function!(dest, rotateX(theta)) - } - TransformOperation::RotateY(theta) => { - serialize_function!(dest, rotateY(theta)) - } - TransformOperation::RotateZ(theta) => { - serialize_function!(dest, rotateZ(theta)) - } - TransformOperation::Rotate3D(x, y, z, theta) => { - serialize_function!(dest, rotate3d(x, y, z, theta)) - } - TransformOperation::Perspective(ref length) => { - serialize_function!(dest, perspective(length)) - } - TransformOperation::InterpolateMatrix { ref from_list, ref to_list, progress } => { - serialize_function!(dest, interpolatematrix(from_list, to_list, progress)) - } - TransformOperation::AccumulateMatrix { ref from_list, ref to_list, count } => { - serialize_function!(dest, accumulatematrix(from_list, to_list, count)) - } - } - } -} - impl<T: ToCss> ToCss for Transform<T> { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where - W: fmt::Write, + W: Write, { if self.0.is_empty() { return dest.write_str("none"); diff --git a/components/style/values/mod.rs b/components/style/values/mod.rs index 1507f4fe3e1..601b5edc5ac 100644 --- a/components/style/values/mod.rs +++ b/components/style/values/mod.rs @@ -13,9 +13,9 @@ pub use cssparser::{RGBA, Token, Parser, serialize_identifier, CowRcStr, SourceL use parser::{Parse, ParserContext}; use selectors::parser::SelectorParseErrorKind; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt::{self, Debug}; +use std::fmt::{self, Debug, Write}; use std::hash; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; pub mod animated; pub mod computed; @@ -34,8 +34,9 @@ define_keyword_type!(Auto, "auto"); define_keyword_type!(Normal, "normal"); /// Serialize a normalized value into percentage. -pub fn serialize_percentage<W>(value: CSSFloat, dest: &mut W) - -> fmt::Result where W: fmt::Write +pub fn serialize_percentage<W>(value: CSSFloat, dest: &mut CssWriter<W>) -> fmt::Result +where + W: Write, { (value * 100.).to_css(dest)?; dest.write_str("%") @@ -109,7 +110,10 @@ impl CustomIdent { } impl ToCss for CustomIdent { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { serialize_identifier(&self.0.to_string(), dest) } } @@ -180,7 +184,10 @@ impl Parse for KeyframesName { } impl ToCss for KeyframesName { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { KeyframesName::Ident(ref ident) => ident.to_css(dest), KeyframesName::QuotedString(ref atom) => atom.to_string().to_css(dest), diff --git a/components/style/values/specified/align.rs b/components/style/values/specified/align.rs index ac2f7719d31..a0900d4dc33 100644 --- a/components/style/values/specified/align.rs +++ b/components/style/values/specified/align.rs @@ -11,8 +11,8 @@ use gecko_bindings::structs; use parser::{Parse, ParserContext}; use selectors::parser::SelectorParseErrorKind; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; bitflags! { /// Constants shared by multiple CSS Box Alignment properties @@ -71,7 +71,10 @@ bitflags! { } impl ToCss for AlignFlags { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let s = match *self & !AlignFlags::FLAG_BITS { AlignFlags::AUTO => "auto", AlignFlags::NORMAL => "normal", @@ -209,7 +212,10 @@ impl AlignJustifyContent { } impl ToCss for AlignJustifyContent { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { self.primary().to_css(dest)?; match self.fallback() { AlignFlags::AUTO => {} diff --git a/components/style/values/specified/angle.rs b/components/style/values/specified/angle.rs index b776a69db3c..667f70b7869 100644 --- a/components/style/values/specified/angle.rs +++ b/components/style/values/specified/angle.rs @@ -7,8 +7,8 @@ use cssparser::{Parser, Token}; use parser::{ParserContext, Parse}; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt; -use style_traits::{ToCss, ParseError}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, ToCss}; use values::CSSFloat; use values::computed::{Context, ToComputedValue}; use values::computed::angle::Angle as ComputedAngle; @@ -27,7 +27,10 @@ pub struct Angle { } impl ToCss for Angle { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.was_calc { dest.write_str("calc(")?; } diff --git a/components/style/values/specified/basic_shape.rs b/components/style/values/specified/basic_shape.rs index e6d612c7ee7..c0fe8a16e6d 100644 --- a/components/style/values/specified/basic_shape.rs +++ b/components/style/values/specified/basic_shape.rs @@ -10,8 +10,8 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; use std::borrow::Cow; -use std::fmt; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::computed::Percentage; use values::generics::basic_shape::{Circle as GenericCircle}; use values::generics::basic_shape::{ClippingShape as GenericClippingShape, Ellipse as GenericEllipse}; @@ -171,7 +171,10 @@ impl Circle { } impl ToCss for Circle { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("circle(")?; if GenericShapeRadius::ClosestSide != self.radius { self.radius.to_css(dest)?; @@ -213,7 +216,10 @@ impl Ellipse { } impl ToCss for Ellipse { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("ellipse(")?; if self.semiaxis_x != ShapeRadius::default() || self.semiaxis_y != ShapeRadius::default() { self.semiaxis_x.to_css(dest)?; @@ -248,8 +254,12 @@ impl Parse for ShapeRadius { /// are converted to percentages where possible. Only the two or four /// value forms are used. In case of two keyword-percentage pairs, /// the keywords are folded into the percentages -fn serialize_basicshape_position<W>(position: &Position, dest: &mut W) -> fmt::Result - where W: fmt::Write +fn serialize_basicshape_position<W>( + position: &Position, + dest: &mut CssWriter<W>, +) -> fmt::Result +where + W: Write, { fn to_keyword_and_lop<S>(component: &PositionComponent<S>) -> (S, Cow<LengthOrPercentage>) where S: Copy + Side @@ -289,8 +299,11 @@ fn serialize_basicshape_position<W>(position: &Position, dest: &mut W) -> fmt::R } } - fn write_pair<A, B, W>(a: &A, b: &B, dest: &mut W) -> fmt::Result - where A: ToCss, B: ToCss, W: fmt::Write + fn write_pair<A, B, W>(a: &A, b: &B, dest: &mut CssWriter<W>) -> fmt::Result + where + A: ToCss, + B: ToCss, + W: Write, { a.to_css(dest)?; dest.write_str(" ")?; diff --git a/components/style/values/specified/box.rs b/components/style/values/specified/box.rs index 8f046887fe4..54bb1385695 100644 --- a/components/style/values/specified/box.rs +++ b/components/style/values/specified/box.rs @@ -8,8 +8,8 @@ use Atom; use cssparser::Parser; use parser::{Parse, ParserContext}; use selectors::parser::SelectorParseErrorKind; -use std::fmt; -use style_traits::{ParseError, ToCss, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::CustomIdent; use values::KeyframesName; use values::generics::box_::AnimationIterationCount as GenericAnimationIterationCount; @@ -289,9 +289,9 @@ impl AnimationName { } impl ToCss for AnimationName { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where - W: fmt::Write, + W: Write, { match self.0 { Some(ref name) => name.to_css(dest), @@ -407,7 +407,10 @@ impl TouchAction { } impl ToCss for TouchAction { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { TouchAction::TOUCH_ACTION_NONE => dest.write_str("none"), TouchAction::TOUCH_ACTION_AUTO => dest.write_str("auto"), @@ -497,7 +500,10 @@ bitflags! { } impl ToCss for Contain { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.is_empty() { return dest.write_str("none") } diff --git a/components/style/values/specified/calc.rs b/components/style/values/specified/calc.rs index 4b70f800018..afab32f50cf 100644 --- a/components/style/values/specified/calc.rs +++ b/components/style/values/specified/calc.rs @@ -9,8 +9,8 @@ use cssparser::{Parser, Token, NumberOrPercentage, AngleOrNumber}; use parser::ParserContext; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use style_traits::values::specified::AllowedNumericType; use values::{CSSInteger, CSSFloat}; use values::computed; @@ -89,7 +89,10 @@ impl ToCss for CalcLengthOrPercentage { /// /// FIXME(emilio): Should this simplify away zeros? #[allow(unused_assignments)] - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { use num_traits::Zero; let mut first_value = true; diff --git a/components/style/values/specified/color.rs b/components/style/values/specified/color.rs index 87ab21a3c67..a22a183cf49 100644 --- a/components/style/values/specified/color.rs +++ b/components/style/values/specified/color.rs @@ -12,9 +12,9 @@ use itoa; use parser::{ParserContext, Parse}; #[cfg(feature = "gecko")] use properties::longhands::system_colors::SystemColor; -use std::fmt; -use std::io::Write; -use style_traits::{ToCss, ParseError, StyleParseErrorKind, ValueParseErrorKind}; +use std::fmt::{self, Write}; +use std::io::Write as IoWrite; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss, ValueParseErrorKind}; use super::AllowQuirks; use values::computed::{Color as ComputedColor, Context, ToComputedValue}; use values::specified::calc::CalcNode; @@ -187,7 +187,10 @@ impl Parse for Color { } impl ToCss for Color { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { Color::CurrentColor => CSSParserColor::CurrentColor.to_css(dest), Color::Numeric { authored: Some(ref authored), .. } => dest.write_str(authored), diff --git a/components/style/values/specified/font.rs b/components/style/values/specified/font.rs index 9ecd11ea599..4905bed33b4 100644 --- a/components/style/values/specified/font.rs +++ b/components/style/values/specified/font.rs @@ -16,8 +16,8 @@ use parser::{Parse, ParserContext}; use properties::longhands::system_font::SystemFont; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt; -use style_traits::{ToCss, StyleParseErrorKind, ParseError}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::CustomIdent; use values::computed::{font as computed, Context, Length, NonNegativeLength, ToComputedValue}; use values::computed::font::{SingleFontFamily, FontFamilyList, FamilyName}; @@ -144,7 +144,10 @@ pub enum FontSize { } impl ToCss for FontSize { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { FontSize::Length(ref lop) => lop.to_css(dest), FontSize::Keyword(info) => info.kw.to_css(dest), @@ -243,7 +246,10 @@ impl MallocSizeOf for FontFamily { } impl ToCss for FontFamily { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { FontFamily::Values(ref v) => { let mut iter = v.iter(); @@ -408,7 +414,10 @@ impl Default for KeywordSize { } impl ToCss for KeywordSize { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str(match *self { KeywordSize::XXSmall => "xx-small", KeywordSize::XSmall => "x-small", @@ -824,7 +833,10 @@ impl VariantAlternatesList { } impl ToCss for VariantAlternatesList { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.0.is_empty() { return dest.write_str("normal"); } @@ -1031,7 +1043,10 @@ impl VariantEastAsian { } impl ToCss for VariantEastAsian { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.is_empty() { return dest.write_str("normal") } @@ -1265,7 +1280,10 @@ impl VariantLigatures { } impl ToCss for VariantLigatures { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.is_empty() { return dest.write_str("normal") } @@ -1506,7 +1524,10 @@ impl VariantNumeric { } impl ToCss for VariantNumeric { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.is_empty() { return dest.write_str("normal") } @@ -1801,7 +1822,10 @@ impl Parse for FontSynthesis { } impl ToCss for FontSynthesis { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.weight && self.style { dest.write_str("weight style") } else if self.style { @@ -1953,7 +1977,10 @@ impl Parse for XTextZoom { } impl ToCss for XTextZoom { - fn to_css<W>(&self, _: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, _: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { Ok(()) } } @@ -1981,7 +2008,10 @@ impl Parse for XLang { } impl ToCss for XLang { - fn to_css<W>(&self, _: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, _: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { Ok(()) } } diff --git a/components/style/values/specified/image.rs b/components/style/values/specified/image.rs index 188b3239a7e..001e8c09976 100644 --- a/components/style/values/specified/image.rs +++ b/components/style/values/specified/image.rs @@ -16,8 +16,8 @@ use selectors::parser::SelectorParseErrorKind; use servo_url::ServoUrl; use std::cmp::Ordering; use std::f32::consts::PI; -use std::fmt; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::{Either, None_}; #[cfg(feature = "gecko")] use values::computed::{Context, Position as ComputedPosition, ToComputedValue}; @@ -659,8 +659,13 @@ impl GenericsLineDirection for LineDirection { } } - fn to_css<W>(&self, dest: &mut W, compat_mode: CompatMode) -> fmt::Result - where W: fmt::Write + fn to_css<W>( + &self, + dest: &mut CssWriter<W>, + compat_mode: CompatMode, + ) -> fmt::Result + where + W: Write, { match *self { LineDirection::Angle(angle) => { diff --git a/components/style/values/specified/inherited_box.rs b/components/style/values/specified/inherited_box.rs index 6d483c35fb2..85cdb8e18a2 100644 --- a/components/style/values/specified/inherited_box.rs +++ b/components/style/values/specified/inherited_box.rs @@ -7,8 +7,8 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; use std::f64::consts::PI; -use std::fmt; -use style_traits::{ParseError, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::computed; use values::computed::{Context, Orientation, ToComputedValue}; use values::specified::Angle; @@ -25,7 +25,10 @@ pub struct ImageOrientation { } impl ToCss for ImageOrientation { - fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if let Some(angle) = self.angle { angle.to_css(dest)?; if self.flipped { diff --git a/components/style/values/specified/list.rs b/components/style/values/specified/list.rs index 0472f9a36f4..9acba5ca1e5 100644 --- a/components/style/values/specified/list.rs +++ b/components/style/values/specified/list.rs @@ -6,8 +6,8 @@ use cssparser::{Parser, Token}; use parser::{Parse, ParserContext}; -use std::fmt; -use style_traits::{ParseError, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::{Either, None_}; #[cfg(feature = "gecko")] use values::CustomIdent; @@ -114,7 +114,10 @@ impl Parse for ListStyleImage { pub struct Quotes(pub Box<[(Box<str>, Box<str>)]>); impl ToCss for Quotes { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { let mut iter = self.0.iter(); match iter.next() { diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index 40f463f26b0..4a0ae8f9cbf 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -13,8 +13,8 @@ use parser::{ParserContext, Parse}; use self::url::SpecifiedUrl; #[allow(unused_imports)] use std::ascii::AsciiExt; use std::f32; -use std::fmt; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use style_traits::values::specified::AllowedNumericType; use super::{Auto, CSSFloat, CSSInteger, Either, None_}; use super::computed::{Context, ToComputedValue}; @@ -57,6 +57,9 @@ pub use self::outline::OutlineStyle; pub use self::rect::LengthOrNumberRect; pub use self::percentage::Percentage; pub use self::position::{Position, PositionComponent, GridAutoFlow, GridTemplateAreas}; +pub use self::pointing::Cursor; +#[cfg(feature = "gecko")] +pub use self::pointing::CursorImage; pub use self::svg::{SVGLength, SVGOpacity, SVGPaint, SVGPaintKind}; pub use self::svg::{SVGPaintOrder, SVGStrokeDashArray, SVGWidth}; pub use self::svg::MozContextProperties; @@ -90,6 +93,7 @@ pub mod length; pub mod list; pub mod outline; pub mod percentage; +pub mod pointing; pub mod position; pub mod rect; pub mod source_size_list; @@ -246,8 +250,9 @@ impl ToComputedValue for Number { } impl ToCss for Number { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { if self.calc_clamping_mode.is_some() { dest.write_str("calc(")?; @@ -472,8 +477,9 @@ impl ToComputedValue for Integer { } impl ToCss for Integer { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { if self.was_calc { dest.write_str("calc(")?; @@ -556,7 +562,10 @@ pub struct ClipRect { impl ToCss for ClipRect { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("rect(")?; if let Some(ref top) = self.top { @@ -801,7 +810,10 @@ impl Attr { } impl ToCss for Attr { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str("attr(")?; if let Some(ref ns) = self.namespace { serialize_identifier(&ns.0.to_string(), dest)?; diff --git a/components/style/values/specified/percentage.rs b/components/style/values/specified/percentage.rs index 7d06d56ab6e..ec1e3093a89 100644 --- a/components/style/values/specified/percentage.rs +++ b/components/style/values/specified/percentage.rs @@ -7,8 +7,8 @@ use cssparser::{Parser, Token}; use parser::{Parse, ParserContext}; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt; -use style_traits::{ParseError, ToCss}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, ToCss}; use style_traits::values::specified::AllowedNumericType; use values::{CSSFloat, serialize_percentage}; use values::computed::{Context, ToComputedValue}; @@ -29,8 +29,9 @@ pub struct Percentage { impl ToCss for Percentage { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write, + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { if self.calc_clamping_mode.is_some() { dest.write_str("calc(")?; diff --git a/components/style/values/specified/pointing.rs b/components/style/values/specified/pointing.rs new file mode 100644 index 00000000000..8c8b34d93e9 --- /dev/null +++ b/components/style/values/specified/pointing.rs @@ -0,0 +1,40 @@ +/* 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/. */ + +//! Specified values for Pointing properties. +//! +//! https://drafts.csswg.org/css-ui/#pointing-keyboard + +use style_traits::cursor::CursorKind; +#[cfg(feature = "gecko")] +use values::specified::url::SpecifiedUrl; + +/// The specified value for the `cursor` property. +/// +/// https://drafts.csswg.org/css-ui/#cursor +#[cfg(feature = "servo")] +#[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)] +pub struct Cursor(pub CursorKind); + +/// The specified value for the `cursor` property. +/// +/// https://drafts.csswg.org/css-ui/#cursor +#[cfg(feature = "gecko")] +#[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue)] +pub struct Cursor { + /// The parsed images for the cursor. + pub images: Box<[CursorImage]>, + /// The kind of the cursor [default | help | ...]. + pub keyword: CursorKind, +} + +/// The specified value for the `image cursors`. +#[cfg(feature = "gecko")] +#[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue)] +pub struct CursorImage { + /// The url to parse images from. + pub url: SpecifiedUrl, + /// The <x> and <y> coordinates. + pub hotspot: Option<(f32, f32)>, +} diff --git a/components/style/values/specified/position.rs b/components/style/values/specified/position.rs index 0a0a42b837f..e20dafed010 100644 --- a/components/style/values/specified/position.rs +++ b/components/style/values/specified/position.rs @@ -11,10 +11,10 @@ use cssparser::Parser; use hash::FnvHashMap; use parser::{Parse, ParserContext}; use selectors::parser::SelectorParseErrorKind; -use std::fmt; +use std::fmt::{self, Write}; use std::ops::Range; use str::HTML_SPACE_CHARACTERS; -use style_traits::{ToCss, StyleParseErrorKind, ParseError}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::{Either, None_}; use values::computed::{CalcLengthOrPercentage, LengthOrPercentage as ComputedLengthOrPercentage}; use values::computed::{Context, Percentage, ToComputedValue}; @@ -142,7 +142,10 @@ impl Position { } impl ToCss for Position { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match (&self.horizontal, &self.vertical) { (x_pos @ &PositionComponent::Side(_, Some(_)), &PositionComponent::Length(ref y_lop)) => { x_pos.to_css(dest)?; @@ -369,7 +372,10 @@ impl LegacyPosition { } impl ToCss for LegacyPosition { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { self.horizontal.to_css(dest)?; dest.write_str(" ")?; self.vertical.to_css(dest) @@ -409,7 +415,10 @@ impl GridAutoFlow { } impl ToCss for GridAutoFlow { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { self.autoflow.to_css(dest)?; if self.dense { dest.write_str(" dense")?; } @@ -584,7 +593,10 @@ impl TemplateAreas { } impl ToCss for TemplateAreas { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { for (i, string) in self.strings.iter().enumerate() { if i != 0 { dest.write_str(" ")?; diff --git a/components/style/values/specified/svg.rs b/components/style/values/specified/svg.rs index b8fa6409a03..f5f89cfc4d7 100644 --- a/components/style/values/specified/svg.rs +++ b/components/style/values/specified/svg.rs @@ -6,8 +6,9 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; -use std::fmt; -use style_traits::{CommaWithSpace, ParseError, Separator, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use style_traits::{CommaWithSpace, CssWriter, ParseError, Separator}; +use style_traits::{StyleParseErrorKind, ToCss}; use values::CustomIdent; use values::generics::svg as generic; use values::specified::{LengthOrPercentage, NonNegativeLengthOrPercentage, NonNegativeNumber}; @@ -237,7 +238,10 @@ impl Parse for SVGPaintOrder { } impl ToCss for SVGPaintOrder { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { if self.0 == 0 { return dest.write_str("normal") } diff --git a/components/style/values/specified/table.rs b/components/style/values/specified/table.rs index a86fe0167fd..89f9941633d 100644 --- a/components/style/values/specified/table.rs +++ b/components/style/values/specified/table.rs @@ -7,7 +7,7 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; use std::fmt; -use style_traits::{ToCss, StyleParseErrorKind, ParseError}; +use style_traits::{CssWriter, ToCss, StyleParseErrorKind, ParseError}; #[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToComputedValue)] /// span. for `<col span>` pres attr @@ -21,7 +21,7 @@ impl Parse for XSpan { } impl ToCss for XSpan { - fn to_css<W>(&self, _: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, _: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write { Ok(()) } } diff --git a/components/style/values/specified/text.rs b/components/style/values/specified/text.rs index d9e05b50057..5db55dd7668 100644 --- a/components/style/values/specified/text.rs +++ b/components/style/values/specified/text.rs @@ -8,8 +8,8 @@ use cssparser::{Parser, Token}; use parser::{Parse, ParserContext}; use selectors::parser::SelectorParseErrorKind; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt; -use style_traits::{ParseError, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use values::computed::{Context, ToComputedValue}; use values::computed::text::LineHeight as ComputedLineHeight; use values::computed::text::TextOverflow as ComputedTextOverflow; @@ -440,7 +440,10 @@ impl Parse for TextAlign { } impl ToCss for TextAlign { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { match *self { TextAlign::Keyword(key) => key.to_css(dest), #[cfg(feature = "gecko")] diff --git a/components/style/values/specified/time.rs b/components/style/values/specified/time.rs index bfc57d518dd..d91787b7ab2 100644 --- a/components/style/values/specified/time.rs +++ b/components/style/values/specified/time.rs @@ -7,8 +7,8 @@ use cssparser::{Parser, Token}; use parser::{ParserContext, Parse}; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt; -use style_traits::{ToCss, ParseError, StyleParseErrorKind}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; use style_traits::values::specified::AllowedNumericType; use values::CSSFloat; use values::computed::{Context, ToComputedValue}; @@ -133,9 +133,9 @@ impl Parse for Time { } impl ToCss for Time { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where - W: fmt::Write, + W: Write, { if self.was_calc { dest.write_str("calc(")?; diff --git a/components/style/values/specified/ui.rs b/components/style/values/specified/ui.rs index 5d9321a5833..2d9d83d5cc3 100644 --- a/components/style/values/specified/ui.rs +++ b/components/style/values/specified/ui.rs @@ -6,8 +6,8 @@ use cssparser::Parser; use parser::{Parse, ParserContext}; -use std::fmt; -use style_traits::{ParseError, StyleParseErrorKind, ToCss}; +use std::fmt::{self, Write}; +use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; /// Specified value of `-moz-force-broken-image-icon` #[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToComputedValue)] @@ -36,7 +36,10 @@ impl Parse for MozForceBrokenImageIcon { } impl ToCss for MozForceBrokenImageIcon { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, + { dest.write_str(if self.0 { "1" } else { "0" }) } } diff --git a/components/style_derive/to_css.rs b/components/style_derive/to_css.rs index 12fad8f0d34..de48f4612e4 100644 --- a/components/style_derive/to_css.rs +++ b/components/style_derive/to_css.rs @@ -3,8 +3,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cg; +use darling::{Error, FromMetaItem}; use quote::Tokens; -use syn::DeriveInput; +use syn::{self, DeriveInput, Ident}; use synstructure; pub fn derive(input: DeriveInput) -> Tokens { @@ -16,13 +17,13 @@ pub fn derive(input: DeriveInput) -> Tokens { let input_attrs = cg::parse_input_attrs::<CssInputAttrs>(&input); let style = synstructure::BindStyle::Ref.into(); let match_body = synstructure::each_variant(&input, &style, |bindings, variant| { - let mut identifier = cg::to_css_identifier(variant.ident.as_ref()); + let identifier = cg::to_css_identifier(variant.ident.as_ref()); let variant_attrs = cg::parse_variant_attrs::<CssVariantAttrs>(variant); let separator = if variant_attrs.comma { ", " } else { " " }; if variant_attrs.dimension { assert_eq!(bindings.len(), 1); - assert!(!variant_attrs.function, "That makes no sense"); + assert!(variant_attrs.function.is_none(), "That makes no sense"); } let mut expr = if !bindings.is_empty() { @@ -39,7 +40,10 @@ pub fn derive(input: DeriveInput) -> Tokens { }; } else { for binding in bindings { - where_clause.add_trait_bound(&binding.field.ty); + let attrs = cg::parse_field_attrs::<CssFieldAttrs>(&binding.field); + if !attrs.ignore_bound { + where_clause.add_trait_bound(&binding.field.ty); + } expr = quote! { #expr writer.item(#binding)?; @@ -48,7 +52,7 @@ pub fn derive(input: DeriveInput) -> Tokens { } quote! {{ - let mut writer = ::style_traits::values::SequenceWriter::new(&mut *dest, #separator); + let mut writer = ::style_traits::values::SequenceWriter::new(dest, #separator); #expr Ok(()) }} @@ -63,7 +67,8 @@ pub fn derive(input: DeriveInput) -> Tokens { #expr?; ::std::fmt::Write::write_str(dest, #identifier) } - } else if variant_attrs.function { + } else if let Some(function) = variant_attrs.function { + let mut identifier = function.name.map_or(identifier, |name| name.to_string()); identifier.push_str("("); expr = quote! { ::std::fmt::Write::write_str(dest, #identifier)?; @@ -78,7 +83,10 @@ pub fn derive(input: DeriveInput) -> Tokens { impl #impl_generics ::style_traits::ToCss for #name #ty_generics #where_clause { #[allow(unused_variables)] #[inline] - fn to_css<W>(&self, dest: &mut W) -> ::std::fmt::Result + fn to_css<W>( + &self, + dest: &mut ::style_traits::CssWriter<W>, + ) -> ::std::fmt::Result where W: ::std::fmt::Write { @@ -93,7 +101,10 @@ pub fn derive(input: DeriveInput) -> Tokens { impls.append(quote! { impl #impl_generics ::std::fmt::Debug for #name #ty_generics #where_clause { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { - ::style_traits::ToCss::to_css(self, f) + ::style_traits::ToCss::to_css( + self, + &mut ::style_traits::CssWriter::new(f), + ) } } }); @@ -106,15 +117,36 @@ pub fn derive(input: DeriveInput) -> Tokens { #[derive(Default, FromDeriveInput)] struct CssInputAttrs { derive_debug: bool, - function: bool, + function: Option<Function>, comma: bool, } #[darling(attributes(css), default)] #[derive(Default, FromVariant)] struct CssVariantAttrs { - function: bool, + function: Option<Function>, iterable: bool, comma: bool, dimension: bool, } + +#[darling(attributes(css), default)] +#[derive(Default, FromField)] +struct CssFieldAttrs { + ignore_bound: bool, +} + +struct Function { + name: Option<Ident>, +} + +impl FromMetaItem for Function { + fn from_word() -> Result<Self, Error> { + Ok(Self { name: None }) + } + + fn from_string(name: &str) -> Result<Self, Error> { + let name = syn::parse_ident(name).map_err(Error::custom)?; + Ok(Self { name: Some(name) }) + } +} diff --git a/components/style_traits/cursor.rs b/components/style_traits/cursor.rs index 28a575f1cca..3ffd2814382 100644 --- a/components/style_traits/cursor.rs +++ b/components/style_traits/cursor.rs @@ -4,7 +4,7 @@ //! A list of common mouse cursors per CSS3-UI § 8.1.1. -use super::ToCss; +use super::{CssWriter, ToCss}; macro_rules! define_cursor { ( @@ -20,43 +20,46 @@ macro_rules! define_cursor { #[cfg_attr(feature = "servo", derive(Deserialize, Serialize))] #[repr(u8)] #[allow(missing_docs)] - pub enum Cursor { + pub enum CursorKind { $( $c_variant = $c_value, )+ $( #[cfg(feature = "gecko")] $g_variant = $g_value, )+ } - impl Cursor { + impl CursorKind { /// Given a CSS keyword, get the corresponding cursor enum. - pub fn from_css_keyword(keyword: &str) -> Result<Cursor, ()> { + pub fn from_css_keyword(keyword: &str) -> Result<Self, ()> { match_ignore_ascii_case! { &keyword, - $( $c_css => Ok(Cursor::$c_variant), )+ - $( #[cfg(feature = "gecko")] $g_css => Ok(Cursor::$g_variant), )+ + $( $c_css => Ok(CursorKind::$c_variant), )+ + $( #[cfg(feature = "gecko")] $g_css => Ok(CursorKind::$g_variant), )+ _ => Err(()) } } /// From the C u8 value, get the corresponding Cursor enum. - pub fn from_u8(value: u8) -> Result<Cursor, ()> { + pub fn from_u8(value: u8) -> Result<Self, ()> { match value { - $( $c_value => Ok(Cursor::$c_variant), )+ - $( #[cfg(feature = "gecko")] $g_value => Ok(Cursor::$g_variant), )+ + $( $c_value => Ok(CursorKind::$c_variant), )+ + $( #[cfg(feature = "gecko")] $g_value => Ok(CursorKind::$g_variant), )+ _ => Err(()) } } } - impl ToCss for Cursor { - fn to_css<W>(&self, dest: &mut W) -> ::std::fmt::Result where W: ::std::fmt::Write { + impl ToCss for CursorKind { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> ::std::fmt::Result where W: ::std::fmt::Write { match *self { - $( Cursor::$c_variant => dest.write_str($c_css), )+ - $( #[cfg(feature = "gecko")] Cursor::$g_variant => dest.write_str($g_css), )+ + $(CursorKind::$c_variant => { + ::std::fmt::Write::write_str(dest, $c_css) + })+ + $(#[cfg(feature = "gecko")] CursorKind::$g_variant => { + ::std::fmt::Write::write_str(dest, $g_css) + })+ } } } } } - define_cursor! { common properties = [ "none" => None = 0, @@ -94,12 +97,13 @@ define_cursor! { "all-scroll" => AllScroll = 32, "zoom-in" => ZoomIn = 33, "zoom-out" => ZoomOut = 34, + "auto" => Auto = 35, ] // gecko only properties gecko properties = [ - "-moz-grab" => MozGrab = 35, - "-moz-grabbing" => MozGrabbing = 36, - "-moz-zoom-in" => MozZoomIn = 37, - "-moz-zoom-out" => MozZoomOut = 38, + "-moz-grab" => MozGrab = 36, + "-moz-grabbing" => MozGrabbing = 37, + "-moz-zoom-in" => MozZoomIn = 38, + "-moz-zoom-out" => MozZoomOut = 39, ] } diff --git a/components/style_traits/lib.rs b/components/style_traits/lib.rs index e0f1993c5a8..3988d2fa446 100644 --- a/components/style_traits/lib.rs +++ b/components/style_traits/lib.rs @@ -78,7 +78,7 @@ pub mod values; #[macro_use] pub mod viewport; -pub use values::{Comma, CommaWithSpace, OneOrMoreSeparated, Separator, Space, ToCss}; +pub use values::{Comma, CommaWithSpace, CssWriter, OneOrMoreSeparated, Separator, Space, ToCss}; /// The error type for all CSS parsing routines. pub type ParseError<'i> = cssparser::ParseError<'i, StyleParseErrorKind<'i>>; diff --git a/components/style_traits/values.rs b/components/style_traits/values.rs index 3e951548e6c..56574ac161d 100644 --- a/components/style_traits/values.rs +++ b/components/style_traits/values.rs @@ -34,7 +34,7 @@ use std::fmt::{self, Write}; /// implement `Debug` by a single call to `ToCss::to_css`. pub trait ToCss { /// Serialize `self` in CSS syntax, writing to `dest`. - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write; + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write; /// Serialize `self` in CSS syntax and return a string. /// @@ -42,27 +42,27 @@ pub trait ToCss { #[inline] fn to_css_string(&self) -> String { let mut s = String::new(); - self.to_css(&mut s).unwrap(); + self.to_css(&mut CssWriter::new(&mut s)).unwrap(); s } } impl<'a, T> ToCss for &'a T where T: ToCss + ?Sized { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write { (*self).to_css(dest) } } impl ToCss for str { #[inline] - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write { serialize_string(self, dest) } } impl ToCss for String { #[inline] - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write { serialize_string(self, dest) } } @@ -72,11 +72,62 @@ where T: ToCss, { #[inline] - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write { self.as_ref().map_or(Ok(()), |value| value.to_css(dest)) } } +/// A writer tailored for serialising CSS. +/// +/// Coupled with SequenceWriter, this allows callers to transparently handle +/// things like comma-separated values etc. +pub struct CssWriter<'w, W: 'w> { + inner: &'w mut W, + prefix: Option<&'static str>, +} + +impl<'w, W> CssWriter<'w, W> +where + W: Write, +{ + /// Creates a new `CssWriter`. + #[inline] + pub fn new(inner: &'w mut W) -> Self { + Self { inner, prefix: Some("") } + } +} + +impl<'w, W> Write for CssWriter<'w, W> +where + W: Write, +{ + #[inline] + fn write_str(&mut self, s: &str) -> fmt::Result { + if s.is_empty() { + return Ok(()); + } + if let Some(prefix) = self.prefix.take() { + // We are going to write things, but first we need to write + // the prefix that was set by `SequenceWriter::item`. + if !prefix.is_empty() { + self.inner.write_str(prefix)?; + } + } + self.inner.write_str(s) + } + + #[inline] + fn write_char(&mut self, c: char) -> fmt::Result { + if let Some(prefix) = self.prefix.take() { + // See comment in `write_str`. + if !prefix.is_empty() { + self.inner.write_str(prefix)?; + } + } + self.inner.write_char(c) + } +} + #[macro_export] macro_rules! serialize_function { ($dest: expr, $name: ident($( $arg: expr, )+)) => { @@ -96,22 +147,23 @@ macro_rules! serialize_function { } /// Convenience wrapper to serialise CSS values separated by a given string. -pub struct SequenceWriter<'a, W> { - writer: TrackedWriter<W>, - separator: &'a str, +pub struct SequenceWriter<'a, 'b: 'a, W: 'b> { + inner: &'a mut CssWriter<'b, W>, + separator: &'static str, } -impl<'a, W> SequenceWriter<'a, W> +impl<'a, 'b, W> SequenceWriter<'a, 'b, W> where - W: Write, + W: Write + 'b, { /// Create a new sequence writer. #[inline] - pub fn new(writer: W, separator: &'a str) -> Self { - SequenceWriter { - writer: TrackedWriter::new(writer), - separator: separator, + pub fn new(inner: &'a mut CssWriter<'b, W>, separator: &'static str) -> Self { + if inner.prefix.is_none() { + // See comment in `item`. + inner.prefix = Some(""); } + Self { inner, separator } } /// Serialises a CSS value, writing any separator as necessary. @@ -125,89 +177,34 @@ where where T: ToCss, { - if self.writer.has_written { - item.to_css(&mut PrefixedWriter::new(&mut self.writer, self.separator)) - } else { - item.to_css(&mut self.writer) - } - } -} - -struct TrackedWriter<W> { - writer: W, - has_written: bool, -} - -impl<W> TrackedWriter<W> -where - W: Write, -{ - #[inline] - fn new(writer: W) -> Self { - TrackedWriter { - writer: writer, - has_written: false, + let old_prefix = self.inner.prefix; + if old_prefix.is_none() { + // If there is no prefix in the inner writer, a previous + // call to this method produced output, which means we need + // to write the separator next time we produce output again. + self.inner.prefix = Some(self.separator); } - } -} - -impl<W> Write for TrackedWriter<W> -where - W: Write, -{ - #[inline] - fn write_str(&mut self, s: &str) -> fmt::Result { - if !s.is_empty() { - self.has_written = true; - } - self.writer.write_str(s) - } - - #[inline] - fn write_char(&mut self, c: char) -> fmt::Result { - self.has_written = true; - self.writer.write_char(c) - } -} - -struct PrefixedWriter<'a, W> { - writer: W, - prefix: Option<&'a str>, -} - -impl<'a, W> PrefixedWriter<'a, W> -where - W: Write, -{ - #[inline] - fn new(writer: W, prefix: &'a str) -> Self { - PrefixedWriter { - writer: writer, - prefix: Some(prefix), - } - } -} - -impl<'a, W> Write for PrefixedWriter<'a, W> -where - W: Write, -{ - #[inline] - fn write_str(&mut self, s: &str) -> fmt::Result { - if !s.is_empty() { - if let Some(prefix) = self.prefix.take() { - self.writer.write_str(prefix)?; + item.to_css(&mut self.inner)?; + match (old_prefix, self.inner.prefix) { + (_, None) => { + // This call produced output and cleaned up after itself. + } + (None, Some(p)) => { + // Some previous call to `item` produced output, + // but this one did not, prefix should be the same as + // the one we set. + debug_assert_eq!(self.separator, p); + // We clean up here even though it's not necessary just + // to be able to do all these assertion checks. + self.inner.prefix = None; + } + (Some(old), Some(new)) => { + // No previous call to `item` produced output, and this one + // either. + debug_assert_eq!(old, new); } } - self.writer.write_str(s) - } - - #[inline] - fn write_char(&mut self, c: char) -> fmt::Result { - if let Some(prefix) = self.prefix.take() { - self.writer.write_str(prefix)?; - } - self.writer.write_char(c) + Ok(()) } } @@ -332,7 +329,7 @@ impl OneOrMoreSeparated for UnicodeRange { } impl<T> ToCss for Vec<T> where T: ToCss + OneOrMoreSeparated { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write { let mut iter = self.iter(); iter.next().unwrap().to_css(dest)?; for item in iter { @@ -344,7 +341,7 @@ impl<T> ToCss for Vec<T> where T: ToCss + OneOrMoreSeparated { } impl<T> ToCss for Box<T> where T: ?Sized + ToCss { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write, { (**self).to_css(dest) @@ -352,7 +349,7 @@ impl<T> ToCss for Box<T> where T: ?Sized + ToCss { } impl<T> ToCss for Arc<T> where T: ?Sized + ToCss { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write, { (**self).to_css(dest) @@ -360,7 +357,7 @@ impl<T> ToCss for Arc<T> where T: ?Sized + ToCss { } impl ToCss for Au { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write { self.to_f64_px().to_css(dest)?; dest.write_str("px") } @@ -369,7 +366,7 @@ impl ToCss for Au { macro_rules! impl_to_css_for_predefined_type { ($name: ty) => { impl<'a> ToCss for $name { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: Write { + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: Write { ::cssparser::ToCss::to_css(self, dest) } } @@ -479,11 +476,11 @@ macro_rules! __define_css_keyword_enum__actual { } impl $crate::ToCss for $name { - fn to_css<W>(&self, dest: &mut W) -> ::std::fmt::Result + fn to_css<W>(&self, dest: &mut $crate::CssWriter<W>) -> ::std::fmt::Result where W: ::std::fmt::Write { match *self { - $( $name::$variant => dest.write_str($css) ),+ + $( $name::$variant => ::std::fmt::Write::write_str(dest, $css) ),+ } } } diff --git a/components/style_traits/viewport.rs b/components/style_traits/viewport.rs index c3538e4416b..e2f8c6baf6f 100644 --- a/components/style_traits/viewport.rs +++ b/components/style_traits/viewport.rs @@ -4,11 +4,11 @@ //! Helper types for the `@viewport` rule. -use {CSSPixel, PinchZoomFactor, ParseError, ToCss}; +use {CSSPixel, CssWriter, ParseError, PinchZoomFactor, ToCss}; use cssparser::Parser; use euclid::TypedSize2D; #[allow(unused_imports)] use std::ascii::AsciiExt; -use std::fmt; +use std::fmt::{self, Write}; define_css_keyword_enum!(UserZoom: "zoom" => Zoom, @@ -42,8 +42,9 @@ pub struct ViewportConstraints { } impl ToCss for ViewportConstraints { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result - where W: fmt::Write + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result + where + W: Write, { dest.write_str("@viewport { width: ")?; self.size.width.to_css(dest)?; @@ -86,7 +87,7 @@ pub enum Zoom { } impl ToCss for Zoom { - fn to_css<W>(&self, dest: &mut W) -> fmt::Result + fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write, { match *self { diff --git a/etc/ci/buildbot_steps.yml b/etc/ci/buildbot_steps.yml index 041beec8b05..b80ed719e1f 100644 --- a/etc/ci/buildbot_steps.yml +++ b/etc/ci/buildbot_steps.yml @@ -1,6 +1,8 @@ env: RUSTFLAGS: -Dwarnings CARGO_INCREMENTAL: "0" + CCACHE: sccache + RUSTC_WRAPPER: sccache mac-rel-wpt1: - ./mach clean-nightlies --keep 3 --force @@ -75,15 +77,15 @@ mac-nightly: linux-rel-intermittent: - ./mach clean-nightlies --keep 3 --force - ./mach clean-cargo-cache --keep 3 --force - - env CC=gcc-5 CXX=g++-5 ./mach build --release + - ./mach build --release - ./etc/ci/check_intermittents.sh --log-raw intermittents.log linux-rel-nogate: - ./mach clean-nightlies --keep 3 --force - ./mach clean-cargo-cache --keep 3 --force - - env CC=gcc-5 CXX=g++-5 ./mach build --release + - ./mach build --release - python ./etc/ci/chaos_monkey_test.py - - env CC=gcc-5 CXX=g++-5 RUSTFLAGS= bash ./etc/ci/mutation_test.sh + - RUSTFLAGS= bash ./etc/ci/mutation_test.sh mac-rel-intermittent: - ./mach clean-nightlies --keep 3 --force @@ -96,11 +98,11 @@ linux-dev: - ./mach clean-cargo-cache --keep 3 --force - ./mach test-tidy --no-progress --all - ./mach test-tidy --no-progress --self-test - - env CC=gcc-5 CXX=g++-5 ./mach build --dev - - env CC=gcc-5 CXX=g++-5 ./mach test-unit + - ./mach build --dev + - ./mach test-unit - ./mach package --dev - - env CC=gcc-5 CXX=g++-5 ./mach build-cef - - env CC=gcc-5 CXX=g++-5 ./mach build --dev --no-default-features --features default-except-unstable + - ./mach build-cef + - ./mach build --dev --no-default-features --features default-except-unstable - ./mach build-geckolib - ./mach test-stylo - bash ./etc/ci/lockfile_changed.sh @@ -110,7 +112,7 @@ linux-dev: linux-rel-wpt: - ./mach clean-nightlies --keep 3 --force - ./mach clean-cargo-cache --keep 3 --force - - env CC=gcc-5 CXX=g++-5 ./mach build --release --with-debug-assertions + - ./mach build --release --with-debug-assertions - ./mach test-wpt-failure - ./mach test-wpt --release --processes 24 --total-chunks 2 --this-chunk 1 --log-raw test-wpt.log --log-errorsummary wpt-errorsummary.log --always-succeed - ./mach filter-intermittents wpt-errorsummary.log --log-intermittents intermittents.log --log-filteredsummary filtered-wpt-errorsummary.log --tracker-api default --reporter-api default @@ -119,7 +121,7 @@ linux-rel-wpt: linux-rel-css: - ./mach clean-nightlies --keep 3 --force - ./mach clean-cargo-cache --keep 3 --force - - env CC=gcc-5 CXX=g++-5 ./mach build --release --with-debug-assertions + - ./mach build --release --with-debug-assertions - ./mach test-wpt --release --processes 24 --total-chunks 2 --this-chunk 2 --log-raw test-wpt.log --log-errorsummary wpt-errorsummary.log --always-succeed - ./mach filter-intermittents wpt-errorsummary.log --log-intermittents intermittents.log --log-filteredsummary filtered-wpt-errorsummary.log --tracker-api default --reporter-api default - ./mach build-geckolib --release @@ -130,7 +132,7 @@ linux-rel-css: linux-nightly: - ./mach clean-nightlies --keep 3 --force - ./mach clean-cargo-cache --keep 3 --force - - env CC=gcc-5 CXX=g++-5 ./mach build --release + - ./mach build --release - ./mach package --release - ./mach upload-nightly linux - ./mach test-perf diff --git a/ports/cef/eutil.rs b/ports/cef/eutil.rs index 03d98d31e1c..06591618332 100644 --- a/ports/cef/eutil.rs +++ b/ports/cef/eutil.rs @@ -30,7 +30,7 @@ pub fn slice_to_str<F>(s: *const u8, l: usize, f: F) -> c_int where F: FnOnce(&s /// All fields are initialized to zero. It is the caller's responsibility to ensure that the given /// type is a CEF type with `cef_base_t` as its first member. pub unsafe fn create_cef_object<Base,Extra>(size: size_t) -> *mut Base { - let object = libc::calloc(1, (mem::size_of::<Base>() + mem::size_of::<Extra>())) as + let object = libc::calloc(1, mem::size_of::<Base>() + mem::size_of::<Extra>()) as *mut cef_base_t; (*object).size = size; (*object).add_ref = Some(servo_add_ref as extern "C" fn(*mut cef_base_t) -> c_int); diff --git a/ports/cef/window.rs b/ports/cef/window.rs index 58e7507dff3..05b98e6dca9 100644 --- a/ports/cef/window.rs +++ b/ports/cef/window.rs @@ -33,7 +33,7 @@ use std::os::raw::{c_char, c_void}; use std::ptr; use std::rc::Rc; use servo_url::ServoUrl; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; use style_traits::DevicePixel; #[cfg(target_os="linux")] extern crate x11; @@ -104,69 +104,68 @@ impl Window { vec![WindowEvent::Idle] } - fn cursor_type_for_cursor(&self, cursor: Cursor) -> cef_cursor_type_t { + fn cursor_type_for_cursor(&self, cursor: CursorKind) -> cef_cursor_type_t { match cursor { - Cursor::None => return cef_cursor_type_t::CT_NONE, - Cursor::ContextMenu => return cef_cursor_type_t::CT_CONTEXTMENU, - Cursor::Grabbing => return cef_cursor_type_t::CT_GRABBING, - Cursor::Crosshair => return cef_cursor_type_t::CT_CROSS, - Cursor::Copy => return cef_cursor_type_t::CT_COPY, - Cursor::Alias => return cef_cursor_type_t::CT_ALIAS, - Cursor::Text => return cef_cursor_type_t::CT_IBEAM, - Cursor::Grab | Cursor::AllScroll => - return cef_cursor_type_t::CT_GRAB, - Cursor::NoDrop => return cef_cursor_type_t::CT_NODROP, - Cursor::NotAllowed => return cef_cursor_type_t::CT_NOTALLOWED, - Cursor::Pointer => return cef_cursor_type_t::CT_POINTER, - Cursor::SResize => return cef_cursor_type_t::CT_SOUTHRESIZE, - Cursor::WResize => return cef_cursor_type_t::CT_WESTRESIZE, - Cursor::EwResize => return cef_cursor_type_t::CT_EASTWESTRESIZE, - Cursor::ColResize => return cef_cursor_type_t::CT_COLUMNRESIZE, - Cursor::EResize => return cef_cursor_type_t::CT_EASTRESIZE, - Cursor::NResize => return cef_cursor_type_t::CT_NORTHRESIZE, - Cursor::NsResize => return cef_cursor_type_t::CT_NORTHSOUTHRESIZE, - Cursor::RowResize => return cef_cursor_type_t::CT_ROWRESIZE, - Cursor::VerticalText => return cef_cursor_type_t::CT_VERTICALTEXT, - _ => return cef_cursor_type_t::CT_POINTER, + CursorKind::None => cef_cursor_type_t::CT_NONE, + CursorKind::ContextMenu => cef_cursor_type_t::CT_CONTEXTMENU, + CursorKind::Grabbing => cef_cursor_type_t::CT_GRABBING, + CursorKind::Crosshair => cef_cursor_type_t::CT_CROSS, + CursorKind::Copy => cef_cursor_type_t::CT_COPY, + CursorKind::Alias => cef_cursor_type_t::CT_ALIAS, + CursorKind::Text => cef_cursor_type_t::CT_IBEAM, + CursorKind::Grab | CursorKind::AllScroll => cef_cursor_type_t::CT_GRAB, + CursorKind::NoDrop => cef_cursor_type_t::CT_NODROP, + CursorKind::NotAllowed => cef_cursor_type_t::CT_NOTALLOWED, + CursorKind::Pointer => cef_cursor_type_t::CT_POINTER, + CursorKind::SResize => cef_cursor_type_t::CT_SOUTHRESIZE, + CursorKind::WResize => cef_cursor_type_t::CT_WESTRESIZE, + CursorKind::EwResize => cef_cursor_type_t::CT_EASTWESTRESIZE, + CursorKind::ColResize => cef_cursor_type_t::CT_COLUMNRESIZE, + CursorKind::EResize => cef_cursor_type_t::CT_EASTRESIZE, + CursorKind::NResize => cef_cursor_type_t::CT_NORTHRESIZE, + CursorKind::NsResize => cef_cursor_type_t::CT_NORTHSOUTHRESIZE, + CursorKind::RowResize => cef_cursor_type_t::CT_ROWRESIZE, + CursorKind::VerticalText => cef_cursor_type_t::CT_VERTICALTEXT, + _ => cef_cursor_type_t::CT_POINTER, } } /// Returns the Cocoa cursor for a CSS cursor. These match Firefox, except where Firefox /// bundles custom resources (which we don't yet do). #[cfg(target_os="macos")] - fn cursor_handle_for_cursor(&self, cursor: Cursor) -> cef_cursor_handle_t { + fn cursor_handle_for_cursor(&self, cursor: CursorKind) -> cef_cursor_handle_t { use cocoa::base::class; unsafe { match cursor { - Cursor::None => return 0 as cef_cursor_handle_t, - Cursor::ContextMenu => msg_send![class("NSCursor"), contextualMenuCursor], - Cursor::Grabbing => msg_send![class("NSCursor"), closedHandCursor], - Cursor::Crosshair => msg_send![class("NSCursor"), crosshairCursor], - Cursor::Copy => msg_send![class("NSCursor"), dragCopyCursor], - Cursor::Alias => msg_send![class("NSCursor"), dragLinkCursor], - Cursor::Text => msg_send![class("NSCursor"), IBeamCursor], - Cursor::Grab | Cursor::AllScroll => + CursorKind::None => return 0 as cef_cursor_handle_t, + CursorKind::ContextMenu => msg_send![class("NSCursor"), contextualMenuCursor], + CursorKind::Grabbing => msg_send![class("NSCursor"), closedHandCursor], + CursorKind::Crosshair => msg_send![class("NSCursor"), crosshairCursor], + CursorKind::Copy => msg_send![class("NSCursor"), dragCopyCursor], + CursorKind::Alias => msg_send![class("NSCursor"), dragLinkCursor], + CursorKind::Text => msg_send![class("NSCursor"), IBeamCursor], + CursorKind::Grab | CursorKind::AllScroll => msg_send![class("NSCursor"), openHandCursor], - Cursor::NoDrop | Cursor::NotAllowed => + CursorKind::NoDrop | CursorKind::NotAllowed => msg_send![class("NSCursor"), operationNotAllowedCursor], - Cursor::Pointer => msg_send![class("NSCursor"), pointingHandCursor], - Cursor::SResize => msg_send![class("NSCursor"), resizeDownCursor], - Cursor::WResize => msg_send![class("NSCursor"), resizeLeftCursor], - Cursor::EwResize | Cursor::ColResize => + CursorKind::Pointer => msg_send![class("NSCursor"), pointingHandCursor], + CursorKind::SResize => msg_send![class("NSCursor"), resizeDownCursor], + CursorKind::WResize => msg_send![class("NSCursor"), resizeLeftCursor], + CursorKind::EwResize | CursorKind::ColResize => msg_send![class("NSCursor"), resizeLeftRightCursor], - Cursor::EResize => msg_send![class("NSCursor"), resizeRightCursor], - Cursor::NResize => msg_send![class("NSCursor"), resizeUpCursor], - Cursor::NsResize | Cursor::RowResize => + CursorKind::EResize => msg_send![class("NSCursor"), resizeRightCursor], + CursorKind::NResize => msg_send![class("NSCursor"), resizeUpCursor], + CursorKind::NsResize | CursorKind::RowResize => msg_send![class("NSCursor"), resizeUpDownCursor], - Cursor::VerticalText => msg_send![class("NSCursor"), IBeamCursorForVerticalLayout], + CursorKind::VerticalText => msg_send![class("NSCursor"), IBeamCursorForVerticalLayout], _ => msg_send![class("NSCursor"), arrowCursor], } } } #[cfg(not(target_os="macos"))] - fn cursor_handle_for_cursor(&self, _: Cursor) -> cef_cursor_handle_t { + fn cursor_handle_for_cursor(&self, _: CursorKind) -> cef_cursor_handle_t { 0 } @@ -488,7 +487,7 @@ impl WindowMethods for Window { // TODO(negge) } - fn set_cursor(&self, cursor: Cursor) { + fn set_cursor(&self, cursor: CursorKind) { use types::{CefCursorInfo,cef_point_t,cef_size_t}; let browser = self.cef_browser.borrow(); if let Some(ref browser) = *browser { diff --git a/ports/cef/wrappers.rs b/ports/cef/wrappers.rs index 16beca788f9..707ad0e2355 100644 --- a/ports/cef/wrappers.rs +++ b/ports/cef/wrappers.rs @@ -199,7 +199,7 @@ cef_unimplemented_wrapper!(cef_string_t, String); impl<'a> CefWrap<*const cef_string_t> for &'a [u16] { fn to_c(buffer: &'a [u16]) -> *const cef_string_t { unsafe { - let ptr = libc::malloc(((buffer.len() + 1) * 2)) as *mut c_ushort; + let ptr = libc::malloc((buffer.len() + 1) * 2) as *mut c_ushort; ptr::copy(buffer.as_ptr(), ptr, buffer.len()); *ptr.offset(buffer.len() as isize) = 0; diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 2ee79abc56c..ca344ac922d 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -6,7 +6,7 @@ use cssparser::{ParseErrorKind, Parser, ParserInput}; use cssparser::ToCss as ParserToCss; use env_logger::LogBuilder; use malloc_size_of::MallocSizeOfOps; -use selectors::{Element, NthIndexCache}; +use selectors::NthIndexCache; use selectors::matching::{MatchingContext, MatchingMode, matches_selector}; use servo_arc::{Arc, ArcBorrow, RawOffsetArc}; use smallvec::SmallVec; @@ -122,7 +122,7 @@ use style::gecko_properties; use style::invalidation::element::restyle_hints; use style::media_queries::{Device, MediaList, parse_media_query_list}; use style::parser::{Parse, ParserContext, self}; -use style::properties::{CascadeFlags, ComputedValues, DeclarationSource, Importance}; +use style::properties::{ComputedValues, DeclarationSource, Importance}; use style::properties::{LonghandId, LonghandIdSet, PropertyDeclaration, PropertyDeclarationBlock, PropertyId}; use style::properties::{PropertyDeclarationId, ShorthandId}; use style::properties::{SourcePropertyDeclaration, StyleBuilder}; @@ -155,7 +155,7 @@ use style::values::distance::ComputeSquaredDistance; use style::values::specified; use style::values::specified::gecko::IntersectionObserverRootMargin; use style::values::specified::source_size_list::SourceSizeList; -use style_traits::{ParsingMode, StyleParseErrorKind, ToCss}; +use style_traits::{CssWriter, ParsingMode, StyleParseErrorKind, ToCss}; use super::error_reporter::ErrorReporter; use super::stylesheet_loader::StylesheetLoader; @@ -705,14 +705,11 @@ pub extern "C" fn Servo_AnimationValue_Serialize(value: RawServoAnimationValueBo buffer: *mut nsAString) { let uncomputed_value = AnimationValue::as_arc(&value).uncompute(); - let mut string = String::new(); + let buffer = unsafe { buffer.as_mut().unwrap() }; let rv = PropertyDeclarationBlock::with_one(uncomputed_value, Importance::Normal) - .single_value_to_css(&get_property_id_from_nscsspropertyid!(property, ()), &mut string, + .single_value_to_css(&get_property_id_from_nscsspropertyid!(property, ()), buffer, None, None /* No extra custom properties */); debug_assert!(rv.is_ok()); - - let buffer = unsafe { buffer.as_mut().unwrap() }; - buffer.assign_utf8(&string); } #[no_mangle] @@ -734,7 +731,7 @@ pub extern "C" fn Servo_Shorthand_AnimationValues_Serialize(shorthand_property: values.iter().map(|v| AnimationValue::as_arc(unsafe { &&*v.mRawPtr }).uncompute()).collect(); let mut string = String::new(); - let rv = shorthand.longhands_to_css(declarations.iter(), &mut string); + let rv = shorthand.longhands_to_css(declarations.iter(), &mut CssWriter::new(&mut string)); if rv.is_ok() { let buffer = unsafe { buffer.as_mut().unwrap() }; buffer.assign_utf8(&string); @@ -1829,7 +1826,7 @@ pub extern "C" fn Servo_Keyframe_GetKeyText( result: *mut nsAString ) { read_locked_arc(keyframe, |keyframe: &Keyframe| { - keyframe.selector.to_css(unsafe { result.as_mut().unwrap() }).unwrap() + keyframe.selector.to_css(&mut CssWriter::new(unsafe { result.as_mut().unwrap() })).unwrap() }) } @@ -1969,7 +1966,7 @@ pub extern "C" fn Servo_PageRule_SetStyle(rule: RawServoPageRuleBorrowed, pub extern "C" fn Servo_SupportsRule_GetConditionText(rule: RawServoSupportsRuleBorrowed, result: *mut nsAString) { read_locked_arc(rule, |rule: &SupportsRule| { - rule.condition.to_css(unsafe { result.as_mut().unwrap() }).unwrap(); + rule.condition.to_css(&mut CssWriter::new(unsafe { result.as_mut().unwrap() })).unwrap(); }) } @@ -1977,7 +1974,7 @@ pub extern "C" fn Servo_SupportsRule_GetConditionText(rule: RawServoSupportsRule pub extern "C" fn Servo_DocumentRule_GetConditionText(rule: RawServoDocumentRuleBorrowed, result: *mut nsAString) { read_locked_arc(rule, |rule: &DocumentRule| { - rule.condition.to_css(unsafe { result.as_mut().unwrap() }).unwrap(); + rule.condition.to_css(&mut CssWriter::new(unsafe { result.as_mut().unwrap() })).unwrap(); }) } @@ -1985,7 +1982,7 @@ pub extern "C" fn Servo_DocumentRule_GetConditionText(rule: RawServoDocumentRule pub extern "C" fn Servo_FontFeatureValuesRule_GetFontFamily(rule: RawServoFontFeatureValuesRuleBorrowed, result: *mut nsAString) { read_locked_arc(rule, |rule: &FontFeatureValuesRule| { - rule.font_family_to_css(unsafe { result.as_mut().unwrap() }).unwrap(); + rule.font_family_to_css(&mut CssWriter::new(unsafe { result.as_mut().unwrap() })).unwrap(); }) } @@ -1993,7 +1990,7 @@ pub extern "C" fn Servo_FontFeatureValuesRule_GetFontFamily(rule: RawServoFontFe pub extern "C" fn Servo_FontFeatureValuesRule_GetValueText(rule: RawServoFontFeatureValuesRuleBorrowed, result: *mut nsAString) { read_locked_arc(rule, |rule: &FontFeatureValuesRule| { - rule.value_to_css(unsafe { result.as_mut().unwrap() }).unwrap(); + rule.value_to_css(&mut CssWriter::new(unsafe { result.as_mut().unwrap() })).unwrap(); }) } @@ -2042,12 +2039,10 @@ pub extern "C" fn Servo_ComputedValues_GetForAnonymousBox(parent_style_or_null: page_decls, ); - let cascade_flags = CascadeFlags::SKIP_ROOT_AND_ITEM_BASED_DISPLAY_FIXUP; - data.stylist.precomputed_values_for_pseudo_with_rule_node( + data.stylist.precomputed_values_for_pseudo_with_rule_node::<GeckoElement>( &guards, &pseudo, parent_style_or_null.map(|x| &*x), - cascade_flags, &metrics, rule_node ).into() @@ -2223,7 +2218,7 @@ fn get_pseudo_style( PseudoElementCascadeType::Eager => { match *pseudo { PseudoElement::FirstLetter => { - styles.pseudos.get(&pseudo).and_then(|pseudo_styles| { + styles.pseudos.get(&pseudo).map(|pseudo_styles| { // inherited_styles can be None when doing lazy resolution // (e.g. for computed style) or when probing. In that case // we just inherit from our element, which is what Gecko @@ -2234,15 +2229,14 @@ fn get_pseudo_style( let guards = StylesheetGuards::same(guard); let metrics = get_metrics_provider_for_product(); let inputs = CascadeInputs::new_from_style(pseudo_styles); - doc_data.stylist - .compute_pseudo_element_style_with_inputs( - &inputs, - pseudo, - &guards, - Some(inherited_styles), - &metrics, - CascadeFlags::empty(), - ) + doc_data.stylist.compute_pseudo_element_style_with_inputs( + inputs, + pseudo, + &guards, + Some(inherited_styles), + &metrics, + Some(element), + ) }) }, _ => { @@ -2677,16 +2671,11 @@ pub extern "C" fn Servo_DeclarationBlock_SerializeOneValue( let guard = global_style_data.shared_lock.read(); let decls = Locked::<PropertyDeclarationBlock>::as_arc(&declarations).read_with(&guard); - let mut string = String::new(); - let custom_properties = Locked::<PropertyDeclarationBlock>::arc_from_borrowed(&custom_properties); let custom_properties = custom_properties.map(|block| block.read_with(&guard)); - let rv = decls.single_value_to_css( - &property_id, &mut string, computed_values, custom_properties); - debug_assert!(rv.is_ok()); - let buffer = unsafe { buffer.as_mut().unwrap() }; - buffer.assign_utf8(&string); + let rv = decls.single_value_to_css(&property_id, buffer, computed_values, custom_properties); + debug_assert!(rv.is_ok()); } #[no_mangle] @@ -2706,7 +2695,7 @@ pub extern "C" fn Servo_SerializeFontValueForCanvas( }; let mut string = String::new(); - let rv = longhands.to_css_for_canvas(&mut string); + let rv = longhands.to_css_for_canvas(&mut CssWriter::new(&mut string)); debug_assert!(rv.is_ok()); let buffer = unsafe { buffer.as_mut().unwrap() }; @@ -2933,7 +2922,7 @@ pub extern "C" fn Servo_DeclarationBlock_HasCSSWideKeyword( #[no_mangle] pub extern "C" fn Servo_MediaList_GetText(list: RawServoMediaListBorrowed, result: *mut nsAString) { read_locked_arc(list, |list: &MediaList| { - list.to_css(unsafe { result.as_mut().unwrap() }).unwrap(); + list.to_css(&mut CssWriter::new(unsafe { result.as_mut().unwrap() })).unwrap(); }) } @@ -2989,7 +2978,7 @@ pub extern "C" fn Servo_MediaList_GetMediumAt( ) -> bool { read_locked_arc(list, |list: &MediaList| { if let Some(media_query) = list.media_queries.get(index as usize) { - media_query.to_css(unsafe { result.as_mut().unwrap() }).unwrap(); + media_query.to_css(&mut CssWriter::new(unsafe { result.as_mut().unwrap() })).unwrap(); true } else { false @@ -3641,28 +3630,17 @@ pub extern "C" fn Servo_ReparentStyle( let pseudo = style_to_reparent.pseudo(); let element = element.map(GeckoElement); - let mut cascade_flags = CascadeFlags::empty(); - if style_to_reparent.is_anon_box() { - cascade_flags.insert(CascadeFlags::SKIP_ROOT_AND_ITEM_BASED_DISPLAY_FIXUP); - } - if let Some(element) = element { - if element.is_link() { - cascade_flags.insert(CascadeFlags::IS_LINK); - if element.is_visited_link() && doc_data.visited_styles_enabled() { - cascade_flags.insert(CascadeFlags::IS_VISITED_LINK); - } - }; - } - - doc_data.stylist.compute_style_with_inputs( - &inputs, + doc_data.stylist.cascade_style_and_visited( + element, pseudo.as_ref(), + inputs, &StylesheetGuards::same(&guard), Some(parent_style), Some(parent_style_ignoring_first_line), Some(layout_parent_style), &metrics, - cascade_flags, + /* rule_cache = */ None, + &mut RuleCacheConditions::default(), ).into() } @@ -4305,7 +4283,7 @@ pub extern "C" fn Servo_StyleSet_ResolveForDeclarations( let declarations = Locked::<PropertyDeclarationBlock>::as_arc(&declarations); - doc_data.stylist.compute_for_declarations( + doc_data.stylist.compute_for_declarations::<GeckoElement>( &guards, parent_style, declarations.clone_arc(), @@ -4396,13 +4374,13 @@ pub extern "C" fn Servo_GetCustomPropertyValue( None => return false, }; - let name = unsafe { Atom::from((&*name)) }; + let name = unsafe { Atom::from(&*name) }; let computed_value = match custom_properties.get(&name) { Some(v) => v, None => return false, }; - computed_value.to_css(unsafe { value.as_mut().unwrap() }).unwrap(); + computed_value.to_css(&mut CssWriter::new(unsafe { value.as_mut().unwrap() })).unwrap(); true } diff --git a/ports/geckolib/tests/build.rs b/ports/geckolib/tests/build.rs index 7712698c4b8..bfb20d5af4e 100644 --- a/ports/geckolib/tests/build.rs +++ b/ports/geckolib/tests/build.rs @@ -39,6 +39,21 @@ fn main() { for line in r.lines() { let s = line.unwrap(); for cap in matcher.captures_iter(&s) { + // This causes a mismatch in old libclangs (the ones that are + // used in linux32 mozilla-central) because it generates: + // + // *const nsTArray<*const RawServoStyleSet> + // + // Instead of: + // + // *const nsTArray<RawServoStyleSetBorrowed> + // + // Which is not a problem, but would cause this to not compile. + // + // Skip this until libclang is updated there. + if &cap[1] == "InvalidateStyleForDocStateChanges" { + continue; + } w.write_all(format!(" [ Servo_{0}, bindings::Servo_{0} ];\n", &cap[1]).as_bytes()).unwrap(); } } diff --git a/ports/glutin/window.rs b/ports/glutin/window.rs index cea115d6f89..1d34713923a 100644 --- a/ports/glutin/window.rs +++ b/ports/glutin/window.rs @@ -42,7 +42,7 @@ use std::rc::Rc; use std::thread; use std::time; use style_traits::DevicePixel; -use style_traits::cursor::Cursor; +use style_traits::cursor::CursorKind; #[cfg(target_os = "windows")] use user32; use webrender_api::{DeviceUintRect, DeviceUintSize, ScrollLocation}; @@ -1190,47 +1190,48 @@ impl WindowMethods for Window { } /// Has no effect on Android. - fn set_cursor(&self, c: Cursor) { + fn set_cursor(&self, cursor: CursorKind) { match self.kind { WindowKind::Window(ref window) => { use glutin::MouseCursor; - let glutin_cursor = match c { - Cursor::None => MouseCursor::NoneCursor, - Cursor::Default => MouseCursor::Default, - Cursor::Pointer => MouseCursor::Hand, - Cursor::ContextMenu => MouseCursor::ContextMenu, - Cursor::Help => MouseCursor::Help, - Cursor::Progress => MouseCursor::Progress, - Cursor::Wait => MouseCursor::Wait, - Cursor::Cell => MouseCursor::Cell, - Cursor::Crosshair => MouseCursor::Crosshair, - Cursor::Text => MouseCursor::Text, - Cursor::VerticalText => MouseCursor::VerticalText, - Cursor::Alias => MouseCursor::Alias, - Cursor::Copy => MouseCursor::Copy, - Cursor::Move => MouseCursor::Move, - Cursor::NoDrop => MouseCursor::NoDrop, - Cursor::NotAllowed => MouseCursor::NotAllowed, - Cursor::Grab => MouseCursor::Grab, - Cursor::Grabbing => MouseCursor::Grabbing, - Cursor::EResize => MouseCursor::EResize, - Cursor::NResize => MouseCursor::NResize, - Cursor::NeResize => MouseCursor::NeResize, - Cursor::NwResize => MouseCursor::NwResize, - Cursor::SResize => MouseCursor::SResize, - Cursor::SeResize => MouseCursor::SeResize, - Cursor::SwResize => MouseCursor::SwResize, - Cursor::WResize => MouseCursor::WResize, - Cursor::EwResize => MouseCursor::EwResize, - Cursor::NsResize => MouseCursor::NsResize, - Cursor::NeswResize => MouseCursor::NeswResize, - Cursor::NwseResize => MouseCursor::NwseResize, - Cursor::ColResize => MouseCursor::ColResize, - Cursor::RowResize => MouseCursor::RowResize, - Cursor::AllScroll => MouseCursor::AllScroll, - Cursor::ZoomIn => MouseCursor::ZoomIn, - Cursor::ZoomOut => MouseCursor::ZoomOut, + let glutin_cursor = match cursor { + CursorKind::Auto => MouseCursor::Default, + CursorKind::None => MouseCursor::NoneCursor, + CursorKind::Default => MouseCursor::Default, + CursorKind::Pointer => MouseCursor::Hand, + CursorKind::ContextMenu => MouseCursor::ContextMenu, + CursorKind::Help => MouseCursor::Help, + CursorKind::Progress => MouseCursor::Progress, + CursorKind::Wait => MouseCursor::Wait, + CursorKind::Cell => MouseCursor::Cell, + CursorKind::Crosshair => MouseCursor::Crosshair, + CursorKind::Text => MouseCursor::Text, + CursorKind::VerticalText => MouseCursor::VerticalText, + CursorKind::Alias => MouseCursor::Alias, + CursorKind::Copy => MouseCursor::Copy, + CursorKind::Move => MouseCursor::Move, + CursorKind::NoDrop => MouseCursor::NoDrop, + CursorKind::NotAllowed => MouseCursor::NotAllowed, + CursorKind::Grab => MouseCursor::Grab, + CursorKind::Grabbing => MouseCursor::Grabbing, + CursorKind::EResize => MouseCursor::EResize, + CursorKind::NResize => MouseCursor::NResize, + CursorKind::NeResize => MouseCursor::NeResize, + CursorKind::NwResize => MouseCursor::NwResize, + CursorKind::SResize => MouseCursor::SResize, + CursorKind::SeResize => MouseCursor::SeResize, + CursorKind::SwResize => MouseCursor::SwResize, + CursorKind::WResize => MouseCursor::WResize, + CursorKind::EwResize => MouseCursor::EwResize, + CursorKind::NsResize => MouseCursor::NsResize, + CursorKind::NeswResize => MouseCursor::NeswResize, + CursorKind::NwseResize => MouseCursor::NwseResize, + CursorKind::ColResize => MouseCursor::ColResize, + CursorKind::RowResize => MouseCursor::RowResize, + CursorKind::AllScroll => MouseCursor::AllScroll, + CursorKind::ZoomIn => MouseCursor::ZoomIn, + CursorKind::ZoomOut => MouseCursor::ZoomOut, }; window.set_cursor(glutin_cursor); } diff --git a/python/servo/bootstrap_commands.py b/python/servo/bootstrap_commands.py index 90391785698..47f56bb167c 100644 --- a/python/servo/bootstrap_commands.py +++ b/python/servo/bootstrap_commands.py @@ -189,7 +189,8 @@ class MachCommands(CommandBase): if os.environ.get("CARGO_HOME", ""): cargo_dir = os.environ.get("CARGO_HOME") else: - cargo_dir = path.join(self.context.topdir, ".cargo") + home_dir = os.path.expanduser("~") + cargo_dir = path.join(home_dir, ".cargo") if not os.path.isdir(cargo_dir): return cargo_file = open(path.join(self.context.topdir, "Cargo.lock")) diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 03d567786f6..8ed67964bab 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -231,27 +231,27 @@ class MachCommands(CommandBase): else: test_patterns.append(test) - in_crate_packages = [] - - # Since the selectors tests have no corresponding selectors_tests crate in tests/unit, - # we need to treat them separately from those that do. - try: - packages.remove('selectors') - in_crate_packages += ["selectors"] - except KeyError: - pass - + self_contained_tests = [ + "gfx", + "layout", + "msg", + "net", + "net_traits", + "selectors", + "servo_config", + "servo_remutex", + ] if not packages: packages = set(os.listdir(path.join(self.context.topdir, "tests", "unit"))) - set(['.DS_Store']) - in_crate_packages += ["selectors"] + packages |= set(self_contained_tests) - # Since the selectors tests have no corresponding selectors_tests crate in tests/unit, - # we need to treat them separately from those that do. - try: - packages.remove('selectors') - in_crate_packages += ["selectors"] - except KeyError: - pass + in_crate_packages = [] + for crate in self_contained_tests: + try: + packages.remove(crate) + in_crate_packages += [crate] + except KeyError: + pass packages.discard('stylo') @@ -264,7 +264,7 @@ class MachCommands(CommandBase): env["PATH"] = "%s%s%s" % (path.dirname(self.get_binary_path(False, False)), os.pathsep, env["PATH"]) features = self.servo_features() - if len(packages) > 0: + if len(packages) > 0 or len(in_crate_packages) > 0: args = ["cargo", "bench" if bench else "test", "--manifest-path", self.servo_manifest()] for crate in packages: args += ["-p", "%s_tests" % crate] @@ -872,7 +872,7 @@ testing/web-platform/mozilla/tests for Servo-only tests""" % reference_path) def update_net_cookies(self): cache_dir = path.join(self.config["tools"]["cache-dir"], "tests") run_file = path.abspath(path.join(PROJECT_TOPLEVEL_PATH, - "tests", "unit", "net", + "components", "net", "tests", "cookie_http_state_utils.py")) run_globals = {"__file__": run_file} execfile(run_file, run_globals) diff --git a/rust-toolchain b/rust-toolchain index 4e28cf4072d..a80d36c679b 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2018-01-14 +nightly-2018-01-21 diff --git a/servo-tidy.toml b/servo-tidy.toml index 2f668675af8..a7230e35aee 100644 --- a/servo-tidy.toml +++ b/servo-tidy.toml @@ -38,14 +38,11 @@ num = [ packages = [ "bitflags", "lazy_static", - "mime", - "semver", - "toml", - "unicase", "winapi", ] # Files that are ignored for all tidy and lint checks. files = [ + "./components/net/tests/parsable_mime/text", # Mako does not lend itself easily to splitting long lines "./components/style/properties/helpers/animated_properties.mako.rs", # Helper macro where actually a pseudo-element per line makes sense. @@ -63,7 +60,6 @@ files = [ "./tests/wpt/mozilla/tests/webgl", # Ignore those files since the issues reported are on purpose "./tests/html/bad-line-ends.html", - "./tests/unit/net/parsable_mime/text", "./tests/wpt/mozilla/tests/css/fonts", "./tests/wpt/mozilla/tests/css/pre_with_tab.html", "./tests/wpt/mozilla/tests/mozilla/textarea_placeholder.html", diff --git a/tests/unit/gfx/Cargo.toml b/tests/unit/gfx/Cargo.toml deleted file mode 100644 index 46495840ce0..00000000000 --- a/tests/unit/gfx/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "gfx_tests" -version = "0.0.1" -authors = ["The Servo Project Developers"] -license = "MPL-2.0" - -[lib] -name = "gfx_tests" -path = "lib.rs" -doctest = false - -[dependencies] -cssparser = "0.23.0" -gfx = {path = "../../../components/gfx"} -ipc-channel = "0.9" -style = {path = "../../../components/style"} diff --git a/tests/unit/gfx/lib.rs b/tests/unit/gfx/lib.rs deleted file mode 100644 index a8120a50138..00000000000 --- a/tests/unit/gfx/lib.rs +++ /dev/null @@ -1,9 +0,0 @@ -/* 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/. */ - -#![cfg(test)] - -extern crate gfx; - -mod text_util; diff --git a/tests/unit/layout/Cargo.toml b/tests/unit/layout/Cargo.toml deleted file mode 100644 index d84754912db..00000000000 --- a/tests/unit/layout/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "layout_tests" -version = "0.0.1" -authors = ["The Servo Project Developers"] -license = "MPL-2.0" - -[lib] -name = "layout_tests" -path = "lib.rs" -doctest = false - -[dependencies] -layout = {path = "../../../components/layout"} -size_of_test = {path = "../../../components/size_of_test"} diff --git a/tests/unit/layout/lib.rs b/tests/unit/layout/lib.rs deleted file mode 100644 index d9e72841199..00000000000 --- a/tests/unit/layout/lib.rs +++ /dev/null @@ -1,7 +0,0 @@ -/* 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/. */ - -#[cfg(all(test, target_pointer_width = "64"))] extern crate layout; -#[cfg(all(test, target_pointer_width = "64"))] #[macro_use] extern crate size_of_test; -#[cfg(all(test, target_pointer_width = "64"))] mod size_of; diff --git a/tests/unit/msg/Cargo.toml b/tests/unit/msg/Cargo.toml deleted file mode 100644 index 89ee91d22c0..00000000000 --- a/tests/unit/msg/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "msg_tests" -version = "0.0.1" -authors = ["The Servo Project Developers"] -license = "MPL-2.0" - -[lib] -name = "msg_tests" -path = "lib.rs" -doctest = false - -[dependencies] -msg = {path = "../../../components/msg"} -size_of_test = {path = "../../../components/size_of_test"} diff --git a/tests/unit/msg/lib.rs b/tests/unit/msg/lib.rs deleted file mode 100644 index 62e591ef800..00000000000 --- a/tests/unit/msg/lib.rs +++ /dev/null @@ -1,7 +0,0 @@ -/* 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/. */ - -#[cfg(all(test, target_pointer_width = "64"))] extern crate msg; -#[cfg(all(test, target_pointer_width = "64"))] #[macro_use] extern crate size_of_test; -#[cfg(all(test, target_pointer_width = "64"))] mod size_of; diff --git a/tests/unit/net/Cargo.toml b/tests/unit/net/Cargo.toml deleted file mode 100644 index d113e239d18..00000000000 --- a/tests/unit/net/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "net_tests" -version = "0.0.1" -authors = ["The Servo Project Developers"] -license = "MPL-2.0" - -[lib] -name = "net_tests" -path = "lib.rs" -doctest = false - -[dependencies] -cookie = "0.10" -devtools_traits = {path = "../../../components/devtools_traits"} -flate2 = "0.2.0" -hyper = "0.10" -hyper-openssl = "0.2" -hyper_serde = "0.8" -ipc-channel = "0.9" -msg = {path = "../../../components/msg"} -net = {path = "../../../components/net"} -net_traits = {path = "../../../components/net_traits"} -profile_traits = {path = "../../../components/profile_traits"} -servo_config = {path = "../../../components/config"} -time = "0.1" -unicase = "1.0" -url = "1.2" -servo_url = {path = "../../../components/url"} diff --git a/tests/unit/net_traits/Cargo.toml b/tests/unit/net_traits/Cargo.toml deleted file mode 100644 index 28da0a1d7c0..00000000000 --- a/tests/unit/net_traits/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "net_traits_tests" -version = "0.0.1" -authors = ["The Servo Project Developers"] -license = "MPL-2.0" - -[lib] -name = "net_traits_tests" -path = "lib.rs" -doctest = false - -[dependencies] -net_traits = {path = "../../../components/net_traits"} diff --git a/tests/unit/servo_config/Cargo.toml b/tests/unit/servo_config/Cargo.toml deleted file mode 100644 index dec49de186a..00000000000 --- a/tests/unit/servo_config/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "servo_config_tests" -version = "0.0.1" -authors = ["The Servo Project Developers"] -license = "MPL-2.0" - -[lib] -name = "servo_config_tests" -path = "lib.rs" -doctest = false - -[dependencies] -servo_config = {path = "../../../components/config"} - diff --git a/tests/unit/servo_config/lib.rs b/tests/unit/servo_config/lib.rs deleted file mode 100644 index dc2a6446848..00000000000 --- a/tests/unit/servo_config/lib.rs +++ /dev/null @@ -1,10 +0,0 @@ -/* 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/. */ - -#![cfg(test)] - -extern crate servo_config; - -mod opts; -mod prefs; diff --git a/tests/unit/servo_remutex/Cargo.toml b/tests/unit/servo_remutex/Cargo.toml deleted file mode 100644 index 20782b623e2..00000000000 --- a/tests/unit/servo_remutex/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "servo_remutex_tests" -version = "0.0.1" -authors = ["The Servo Project Developers"] -license = "MPL-2.0" - -[lib] -name = "servo_remutex_tests" -path = "lib.rs" -doctest = false - -[dependencies] -servo_remutex = {path = "../../../components/remutex"} - diff --git a/tests/unit/style/media_queries.rs b/tests/unit/style/media_queries.rs index 2cddcff5def..58b878bfb8d 100644 --- a/tests/unit/style/media_queries.rs +++ b/tests/unit/style/media_queries.rs @@ -279,8 +279,7 @@ fn test_mq_expressions() { fn test_to_css() { test_media_rule("@media print and (width: 43px) { }", |list, _| { let q = &list.media_queries[0]; - let mut dest = String::new(); - assert_eq!(Ok(()), q.to_css(&mut dest)); + let dest = q.to_css_string(); assert_eq!(dest, "print and (width: 43px)"); }); } diff --git a/tests/unit/style/properties/serialization.rs b/tests/unit/style/properties/serialization.rs index 7f8d6478c25..282051d8779 100644 --- a/tests/unit/style/properties/serialization.rs +++ b/tests/unit/style/properties/serialization.rs @@ -5,6 +5,7 @@ use properties::{parse, parse_input}; use style::computed_values::display::T as Display; use style::properties::{PropertyDeclaration, Importance}; +use style::properties::declaration_block::PropertyDeclarationBlock; use style::properties::parse_property_declaration_list; use style::values::{CustomIdent, RGBA}; use style::values::generics::flex::FlexBasis; @@ -15,6 +16,18 @@ use style::values::specified::url::SpecifiedUrl; use style_traits::ToCss; use stylesheets::block_from; +trait ToCssString { + fn to_css_string(&self) -> String; +} + +impl ToCssString for PropertyDeclarationBlock { + fn to_css_string(&self) -> String { + let mut css = String::new(); + self.to_css(&mut css).unwrap(); + css + } +} + #[test] fn property_declaration_block_should_serialize_correctly() { use style::properties::longhands::overflow_x::SpecifiedValue as OverflowValue; diff --git a/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini b/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini index 3e76435960d..a812f00415f 100644 --- a/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini +++ b/tests/wpt/metadata/FileAPI/file/File-constructor.html.ini @@ -18,6 +18,3 @@ [Invalid bits argument: "hello"] expected: FAIL - [Using object fileName] - expected: FAIL - diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 6c89d94229d..29e8265a446 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -79733,6 +79733,54 @@ {} ] ], + "css/CSS2/selectors/class-selector-009.xht": [ + [ + "/css/CSS2/selectors/class-selector-009.xht", + [ + [ + "/css/CSS2/reference/ref-green-background.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/class-selector-010.xht": [ + [ + "/css/CSS2/selectors/class-selector-010.xht", + [ + [ + "/css/CSS2/reference/ref-green-background.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/class-selector-011.xht": [ + [ + "/css/CSS2/selectors/class-selector-011.xht", + [ + [ + "/css/CSS2/reference/ref-green-background.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/class-selector-012.xht": [ + [ + "/css/CSS2/selectors/class-selector-012.xht", + [ + [ + "/css/CSS2/selectors/class-selector-012-ref.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/selectors/combinator-001.xht": [ [ "/css/CSS2/selectors/combinator-001.xht", @@ -79973,6 +80021,42 @@ {} ] ], + "css/CSS2/selectors/first-child-selector-001.xht": [ + [ + "/css/CSS2/selectors/first-child-selector-001.xht", + [ + [ + "/css/CSS2/selectors/first-child-selector-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-child-selector-002.xht": [ + [ + "/css/CSS2/selectors/first-child-selector-002.xht", + [ + [ + "/css/CSS2/selectors/first-child-selector-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-child-selector-003.xht": [ + [ + "/css/CSS2/selectors/first-child-selector-003.xht", + [ + [ + "/css/CSS2/reference/ref-this-text-should-be-green.xht", + "==" + ] + ], + {} + ] + ], "css/CSS2/selectors/first-letter-001.xht": [ [ "/css/CSS2/selectors/first-letter-001.xht", @@ -85073,6 +85157,114 @@ {} ] ], + "css/CSS2/selectors/first-letter-selector-000.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-000.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-000-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-001.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-001.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-002.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-002.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-003.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-003.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-004.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-004.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-005.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-005.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-005-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-007.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-007.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-007-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-008.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-008.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-019.xht": [ + [ + "/css/CSS2/selectors/first-letter-selector-019.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/selectors/first-letter-selector-028.xht": [ [ "/css/CSS2/selectors/first-letter-selector-028.xht", @@ -85253,6 +85445,54 @@ {} ] ], + "css/CSS2/selectors/first-line-pseudo-019.xht": [ + [ + "/css/CSS2/selectors/first-line-pseudo-019.xht", + [ + [ + "/css/CSS2/reference/ref-this-text-should-be-green.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-line-pseudo-020.xht": [ + [ + "/css/CSS2/selectors/first-line-pseudo-020.xht", + [ + [ + "/css/CSS2/reference/ref-this-text-should-be-green.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-line-pseudo-021.xht": [ + [ + "/css/CSS2/selectors/first-line-pseudo-021.xht", + [ + [ + "/css/CSS2/reference/ref-this-text-should-be-green.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/first-line-selector-010.xht": [ + [ + "/css/CSS2/selectors/first-line-selector-010.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-005-ref.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/selectors/first-line-selector-013.xht": [ [ "/css/CSS2/selectors/first-line-selector-013.xht", @@ -85305,6 +85545,18 @@ {} ] ], + "css/CSS2/selectors/id-selector-002.xht": [ + [ + "/css/CSS2/selectors/id-selector-002.xht", + [ + [ + "/css/CSS2/reference/filler-text-below-green.xht", + "==" + ] + ], + {} + ] + ], "css/CSS2/selectors/id-selector-004.xht": [ [ "/css/CSS2/selectors/id-selector-004.xht", @@ -85377,6 +85629,42 @@ {} ] ], + "css/CSS2/selectors/lang-selector-004.xht": [ + [ + "/css/CSS2/selectors/lang-selector-004.xht", + [ + [ + "/css/CSS2/selectors/lang-selector-004-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/lang-selector-005.xht": [ + [ + "/css/CSS2/selectors/lang-selector-005.xht", + [ + [ + "/css/CSS2/reference/filler-text-below-green.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/lang-selector-006.xht": [ + [ + "/css/CSS2/selectors/lang-selector-006.xht", + [ + [ + "/css/CSS2/reference/filler-text-below-green.xht", + "==" + ] + ], + {} + ] + ], "css/CSS2/selectors/pseudo-001.xht": [ [ "/css/CSS2/selectors/pseudo-001.xht", @@ -85401,6 +85689,42 @@ {} ] ], + "css/CSS2/selectors/pseudo-006.xht": [ + [ + "/css/CSS2/selectors/pseudo-006.xht", + [ + [ + "/css/CSS2/selectors/first-letter-selector-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/pseudo-007.xht": [ + [ + "/css/CSS2/selectors/pseudo-007.xht", + [ + [ + "/css/CSS2/selectors/universal-selector-002-ref.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/selectors/pseudo-008.xht": [ + [ + "/css/CSS2/selectors/pseudo-008.xht", + [ + [ + "/css/CSS2/selectors/pseudo-008-ref.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/selectors/pseudo-014.xht": [ [ "/css/CSS2/selectors/pseudo-014.xht", @@ -87910,7 +88234,7 @@ "/css/CSS2/syntax/ident-003.xht", [ [ - "/css/CSS2/syntax/ident-000-ref.xht", + "/css/CSS2/syntax/ident-003-ref.xht", "==" ] ], @@ -88109,18 +88433,6 @@ {} ] ], - "css/CSS2/syntax/ident-020.xht": [ - [ - "/css/CSS2/syntax/ident-020.xht", - [ - [ - "/css/CSS2/syntax/ident-000-ref.xht", - "==" - ] - ], - {} - ] - ], "css/CSS2/syntax/ignored-rules-001.xht": [ [ "/css/CSS2/syntax/ignored-rules-001.xht", @@ -89249,6 +89561,174 @@ {} ] ], + "css/CSS2/tables/caption-side-applies-to-001.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-001.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-002.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-002.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-003.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-003.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-005.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-005.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-006.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-006.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-006-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-007.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-007.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-006-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-008.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-008.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-008-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-009.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-009.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-008-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-010.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-010.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-008-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-011.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-011.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-008-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-012.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-012.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-008-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-013.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-013.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-008-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-014.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-014.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-008-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-015.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-015.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-006-ref.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/tables/caption-side-applies-to-016.xht": [ [ "/css/CSS2/tables/caption-side-applies-to-016.xht", @@ -89261,6 +89741,90 @@ {} ] ], + "css/CSS2/tables/caption-side-applies-to-017.xht": [ + [ + "/css/CSS2/tables/caption-side-applies-to-017.xht", + [ + [ + "/css/CSS2/tables/caption-side-applies-to-017-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/collapsing-border-model-001.xht": [ + [ + "/css/CSS2/tables/collapsing-border-model-001.xht", + [ + [ + "/css/CSS2/tables/collapsing-border-model-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/collapsing-border-model-003.xht": [ + [ + "/css/CSS2/tables/collapsing-border-model-003.xht", + [ + [ + "/css/CSS2/tables/collapsing-border-model-003-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/collapsing-border-model-004.xht": [ + [ + "/css/CSS2/tables/collapsing-border-model-004.xht", + [ + [ + "/css/CSS2/tables/collapsing-border-model-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/collapsing-border-model-007.xht": [ + [ + "/css/CSS2/tables/collapsing-border-model-007.xht", + [ + [ + "/css/CSS2/tables/collapsing-border-model-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/collapsing-border-model-008.xht": [ + [ + "/css/CSS2/tables/collapsing-border-model-008.xht", + [ + [ + "/css/CSS2/tables/collapsing-border-model-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/collapsing-border-model-009.xht": [ + [ + "/css/CSS2/tables/collapsing-border-model-009.xht", + [ + [ + "/css/CSS2/tables/collapsing-border-model-003-ref.html", + "==" + ] + ], + {} + ] + ], "css/CSS2/tables/collapsing-border-model-010a.xht": [ [ "/css/CSS2/tables/collapsing-border-model-010a.xht", @@ -90377,6 +90941,30 @@ {} ] ], + "css/CSS2/tables/row-visibility-001.xht": [ + [ + "/css/CSS2/tables/row-visibility-001.xht", + [ + [ + "/css/CSS2/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/CSS2/tables/row-visibility-002.xht": [ + [ + "/css/CSS2/tables/row-visibility-002.xht", + [ + [ + "/css/CSS2/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/CSS2/tables/separated-border-model-003a.xht": [ [ "/css/CSS2/tables/separated-border-model-003a.xht", @@ -92593,6 +93181,18 @@ {} ] ], + "css/CSS2/tables/table-cell-001.xht": [ + [ + "/css/CSS2/tables/table-cell-001.xht", + [ + [ + "/css/CSS2/reference/ref-filled-black-96px-square.xht", + "==" + ] + ], + {} + ] + ], "css/CSS2/tables/table-column-rendering-001.xht": [ [ "/css/CSS2/tables/table-column-rendering-001.xht", @@ -104481,6 +105081,18 @@ {} ] ], + "css/css-content/element-replacement.html": [ + [ + "/css/css-content/element-replacement.html", + [ + [ + "/css/css-content/element-replacement-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-display/display-contents-alignment-001.html": [ [ "/css/css-display/display-contents-alignment-001.html", @@ -105081,6 +105693,18 @@ {} ] ], + "css/css-display/display-contents-text-inherit-002.html": [ + [ + "/css/css-display/display-contents-text-inherit-002.html", + [ + [ + "/css/css-display/display-contents-text-inherit-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-display/display-contents-text-inherit.html": [ [ "/css/css-display/display-contents-text-inherit.html", @@ -123177,6 +123801,18 @@ {} ] ], + "css/css-scoping/css-scoping-shadow-nested-slot-display-override.html": [ + [ + "/css/css-scoping/css-scoping-shadow-nested-slot-display-override.html", + [ + [ + "/css/css-scoping/reference/green-box.html", + "==" + ] + ], + {} + ] + ], "css/css-scoping/css-scoping-shadow-root-hides-children.html": [ [ "/css/css-scoping/css-scoping-shadow-root-hides-children.html", @@ -146809,6 +147445,30 @@ {} ] ], + "css/css-values/lh-unit-001.html": [ + [ + "/css/css-values/lh-unit-001.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "css/css-values/lh-unit-002.html": [ + [ + "/css/css-values/lh-unit-002.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-values/vh-calc-support-pct.html": [ [ "/css/css-values/vh-calc-support-pct.html", @@ -158769,6 +159429,18 @@ {} ] ], + "css/motion/offset-anchor-transform-box-fill-box.html": [ + [ + "/css/motion/offset-anchor-transform-box-fill-box.html", + [ + [ + "/css/motion/offset-anchor-transform-box-fill-box-ref.html", + "==" + ] + ], + {} + ] + ], "css/motion/offset-path-ray.html": [ [ "/css/motion/offset-path-ray.html", @@ -163197,6 +163869,30 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001.html": [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001.html", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002.html": [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002.html", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002-ref.html", + "==" + ] + ], + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/fonts3/font-size-adjust-zero-1.html": [ [ "/css/vendor-imports/mozilla/mozilla-central-reftests/fonts3/font-size-adjust-zero-1.html", @@ -175941,6 +176637,30 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html", + [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html", + "==" + ] + ], + {} + ] + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video.html", + [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video-ref.html", + "==" + ] + ], + {} + ] + ], "html/semantics/embedded-content/the-audio-element/audio_001.htm": [ [ "/html/semantics/embedded-content/the-audio-element/audio_001.htm", @@ -177561,6 +178281,54 @@ {} ] ], + "svg/path/closepath/segment-completing.svg": [ + [ + "/svg/path/closepath/segment-completing.svg", + [ + [ + "/svg/path/closepath/segment-completing-ref.svg", + "==" + ] + ], + {} + ] + ], + "svg/path/distance/pathLength-positive.svg": [ + [ + "/svg/path/distance/pathLength-positive.svg", + [ + [ + "/svg/path/distance/pathLength-positive-ref.svg", + "==" + ] + ], + {} + ] + ], + "svg/path/distance/pathLength-zero.svg": [ + [ + "/svg/path/distance/pathLength-zero.svg", + [ + [ + "/svg/path/distance/pathLength-zero-ref.svg", + "==" + ] + ], + {} + ] + ], + "svg/path/error-handling/render-until-error.svg": [ + [ + "/svg/path/error-handling/render-until-error.svg", + [ + [ + "/svg/path/error-handling/render-until-error-ref.svg", + "==" + ] + ], + {} + ] + ], "svg/path/property/priority.svg": [ [ "/svg/path/property/priority.svg", @@ -183003,11 +183771,6 @@ {} ] ], - "WebCryptoAPI/WebCryptoAPI.idl": [ - [ - {} - ] - ], "WebCryptoAPI/derive_bits_keys/ecdh_bits.js": [ [ {} @@ -186388,6 +187151,16 @@ {} ] ], + "bluetooth/generate.py": [ + [ + {} + ] + ], + "bluetooth/generate_test.py": [ + [ + {} + ] + ], "bluetooth/resources/bluetooth-helpers.js": [ [ {} @@ -186398,6 +187171,101 @@ {} ] ], + "bluetooth/script-tests/base_test_html.template": [ + [ + {} + ] + ], + "bluetooth/script-tests/characteristic/characteristic-is-removed.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/characteristic/descriptor-get-same-object.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/disconnect-called-before.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/disconnect-called-during-error.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/disconnect-called-during-success.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/disconnect-invalidates-objects.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/disconnected-device.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/discovery-complete-no-permission-absent-service.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/discovery-complete-service-not-found.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/garbage-collection-ran-during-error.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/garbage-collection-ran-during-success.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/get-different-service-after-reconnection.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/get-same-object.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/invalid-service-name.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/no-permission-absent-service.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/no-permission-for-any-service.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/no-permission-present-service.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/server/service-not-found.js": [ + [ + {} + ] + ], "clear-site-data/support/echo-clear-site-data.py": [ [ {} @@ -209008,6 +209876,11 @@ {} ] ], + "content-security-policy/prefetch-src/prefetch-header-allowed.html.headers": [ + [ + {} + ] + ], "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers": [ [ {} @@ -209433,11 +210306,31 @@ {} ] ], + "content-security-policy/support/postmessage-pass-to-opener.html": [ + [ + {} + ] + ], "content-security-policy/support/postmessage-pass.html": [ [ {} ] ], + "content-security-policy/support/prefetch-helper.js": [ + [ + {} + ] + ], + "content-security-policy/support/prefetch-subresource.css": [ + [ + {} + ] + ], + "content-security-policy/support/prefetch-subresource.css.headers": [ + [ + {} + ] + ], "content-security-policy/support/report.py": [ [ {} @@ -222358,6 +223251,11 @@ {} ] ], + "css/CSS2/selectors/class-selector-012-ref.html": [ + [ + {} + ] + ], "css/CSS2/selectors/descendent-selector-002-ref.xht": [ [ {} @@ -222373,6 +223271,16 @@ {} ] ], + "css/CSS2/selectors/first-child-selector-001-ref.html": [ + [ + {} + ] + ], + "css/CSS2/selectors/first-child-selector-002-ref.html": [ + [ + {} + ] + ], "css/CSS2/selectors/first-letter-001-ref.xht": [ [ {} @@ -224438,6 +225346,36 @@ {} ] ], + "css/CSS2/selectors/first-letter-selector-000-ref.html": [ + [ + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-001-ref.html": [ + [ + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-002-ref.html": [ + [ + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-003-ref.html": [ + [ + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-005-ref.html": [ + [ + {} + ] + ], + "css/CSS2/selectors/first-letter-selector-007-ref.html": [ + [ + {} + ] + ], "css/CSS2/selectors/first-letter-selector-028-ref.xht": [ [ {} @@ -224503,11 +225441,21 @@ {} ] ], + "css/CSS2/selectors/lang-selector-004-ref.html": [ + [ + {} + ] + ], "css/CSS2/selectors/lang-selector-005.xht.headers": [ [ {} ] ], + "css/CSS2/selectors/pseudo-008-ref.html": [ + [ + {} + ] + ], "css/CSS2/selectors/selectors-001-ref.xht": [ [ {} @@ -225318,11 +226266,6 @@ {} ] ], - "css/CSS2/syntax/support/.htaccess": [ - [ - {} - ] - ], "css/CSS2/syntax/support/1x1-green.png": [ [ {} @@ -225378,27 +226321,27 @@ {} ] ], - "css/CSS2/syntax/support/at-charset-002.css": [ + "css/CSS2/syntax/support/at-charset-001.css.headers": [ [ {} ] ], - "css/CSS2/syntax/support/at-charset-003.css": [ + "css/CSS2/syntax/support/at-charset-002.css": [ [ {} ] ], - "css/CSS2/syntax/support/at-charset-004.css": [ + "css/CSS2/syntax/support/at-charset-002.css.headers": [ [ {} ] ], - "css/CSS2/syntax/support/at-charset-005.css": [ + "css/CSS2/syntax/support/at-charset-003.css": [ [ {} ] ], - "css/CSS2/syntax/support/at-charset-006.css": [ + "css/CSS2/syntax/support/at-charset-003.css.headers": [ [ {} ] @@ -225963,6 +226906,11 @@ {} ] ], + "css/CSS2/syntax/support/plaintext.css.headers": [ + [ + {} + ] + ], "css/CSS2/syntax/support/ring.png": [ [ {} @@ -226178,6 +227126,46 @@ {} ] ], + "css/CSS2/tables/caption-side-applies-to-001-ref.html": [ + [ + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-002-ref.html": [ + [ + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-003-ref.html": [ + [ + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-006-ref.html": [ + [ + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-008-ref.html": [ + [ + {} + ] + ], + "css/CSS2/tables/caption-side-applies-to-017-ref.html": [ + [ + {} + ] + ], + "css/CSS2/tables/collapsing-border-model-001-ref.html": [ + [ + {} + ] + ], + "css/CSS2/tables/collapsing-border-model-003-ref.html": [ + [ + {} + ] + ], "css/CSS2/tables/column-visibility-004-ref.xht": [ [ {} @@ -233038,6 +234026,16 @@ {} ] ], + "css/css-content/element-replacement-ref.html": [ + [ + {} + ] + ], + "css/css-content/resources/rect.svg": [ + [ + {} + ] + ], "css/css-counter-styles/OWNERS": [ [ {} @@ -242963,6 +243961,11 @@ {} ] ], + "css/css-grid/alignment/support/style-change.js": [ + [ + {} + ] + ], "css/css-grid/grid-definition/grid-template-columns-fit-content-001-ref.html": [ [ {} @@ -243118,11 +244121,6 @@ {} ] ], - "css/css-grid/support/style-change.js": [ - [ - {} - ] - ], "css/css-grid/test-plan/index.html": [ [ {} @@ -243683,6 +244681,11 @@ {} ] ], + "css/css-masking/parsing/resources/parsing-testcommon.js": [ + [ + {} + ] + ], "css/css-masking/test-mask-ref.html": [ [ {} @@ -244758,6 +245761,11 @@ {} ] ], + "css/css-paint-api/resources/html5.png": [ + [ + {} + ] + ], "css/css-paint-api/style-background-image-ref.html": [ [ {} @@ -246143,6 +247151,11 @@ {} ] ], + "css/css-shapes/parsing/resources/parsing-testcommon.js": [ + [ + {} + ] + ], "css/css-shapes/shape-outside/shape-box/reference/shape-outside-box-001-ref.html": [ [ {} @@ -252193,6 +253206,16 @@ {} ] ], + "css/css-typed-om/resources/1x1-green.png": [ + [ + {} + ] + ], + "css/css-typed-om/resources/testhelper.js": [ + [ + {} + ] + ], "css/css-ui/OWNERS": [ [ {} @@ -257793,6 +258816,11 @@ {} ] ], + "css/motion/offset-anchor-transform-box-fill-box-ref.html": [ + [ + {} + ] + ], "css/motion/offset-path-ray-ref.html": [ [ {} @@ -261718,6 +262746,16 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001-ref.html": [ + [ + {} + ] + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002-ref.html": [ + [ + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list": [ [ {} @@ -264118,6 +265156,11 @@ {} ] ], + "docs/_running-tests/chrome_android.md": [ + [ + {} + ] + ], "docs/_running-tests/index.md": [ [ {} @@ -275548,6 +276591,11 @@ {} ] ], + "html/semantics/document-metadata/interactions-of-styling-and-scripting/stylesheet.py": [ + [ + {} + ] + ], "html/semantics/document-metadata/styling/.gitkeep": [ [ {} @@ -275973,6 +277021,11 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/resources/cues-chrono-order.vtt": [ + [ + {} + ] + ], "html/semantics/embedded-content/media-elements/track/track-element/resources/cues-no-separation.vtt": [ [ {} @@ -276218,6 +277271,16 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html": [ + [ + {} + ] + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video-ref.html": [ + [ + {} + ] + ], "html/semantics/embedded-content/media-elements/track/track-element/track-helpers.js": [ [ {} @@ -279463,6 +280526,11 @@ {} ] ], + "images/pattern.mp4": [ + [ + {} + ] + ], "images/pattern.ogv": [ [ {} @@ -279618,6 +280686,11 @@ {} ] ], + "interfaces/WebCryptoAPI.idl": [ + [ + {} + ] + ], "interfaces/accelerometer.idl": [ [ {} @@ -279663,6 +280736,11 @@ {} ] ], + "interfaces/gamepad.idl": [ + [ + {} + ] + ], "interfaces/generic-sensor.idl": [ [ {} @@ -279718,6 +280796,11 @@ {} ] ], + "interfaces/proximity.idl": [ + [ + {} + ] + ], "interfaces/remoteplayback.idl": [ [ {} @@ -279758,6 +280841,16 @@ {} ] ], + "interfaces/webxr.idl": [ + [ + {} + ] + ], + "interfaces/xhr.idl": [ + [ + {} + ] + ], "intersection-observer/observer-in-iframe.html": [ [ {} @@ -280133,6 +281226,11 @@ {} ] ], + "media-source/generate-config-change-tests.py": [ + [ + {} + ] + ], "media-source/import_tests.sh": [ [ {} @@ -284463,11 +285561,26 @@ {} ] ], + "resource-timing/resources/all_resource_types.htm": [ + [ + {} + ] + ], + "resource-timing/resources/blank_page_green.htm": [ + [ + {} + ] + ], "resource-timing/resources/blue.png": [ [ {} ] ], + "resource-timing/resources/empty_script.js": [ + [ + {} + ] + ], "resource-timing/resources/fake_responses.html": [ [ {} @@ -284478,6 +285591,11 @@ {} ] ], + "resource-timing/resources/green_frame.htm": [ + [ + {} + ] + ], "resource-timing/resources/gzip_xml.py": [ [ {} @@ -284533,6 +285651,11 @@ {} ] ], + "resource-timing/resources/nested.css": [ + [ + {} + ] + ], "resource-timing/resources/notify_parent.html": [ [ {} @@ -284578,6 +285701,11 @@ {} ] ], + "resource-timing/resources/worker_with_images.js": [ + [ + {} + ] + ], "resource-timing/test_resource_timing.js": [ [ {} @@ -284703,6 +285831,846 @@ {} ] ], + "server-timing/resources/parsing/0.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/0.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/1.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/1.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/10.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/10.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/11.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/11.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/12.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/12.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/13.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/13.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/14.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/14.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/15.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/15.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/16.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/16.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/17.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/17.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/18.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/18.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/19.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/19.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/2.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/2.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/20.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/20.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/21.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/21.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/22.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/22.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/23.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/23.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/24.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/24.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/25.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/25.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/26.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/26.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/27.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/27.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/28.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/28.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/29.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/29.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/3.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/3.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/30.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/30.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/31.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/31.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/32.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/32.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/33.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/33.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/34.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/34.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/35.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/35.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/36.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/36.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/37.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/37.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/38.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/38.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/39.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/39.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/4.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/4.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/40.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/40.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/41.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/41.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/42.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/42.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/43.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/43.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/44.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/44.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/45.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/45.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/46.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/46.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/47.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/47.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/48.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/48.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/49.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/49.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/5.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/5.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/50.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/50.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/51.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/51.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/52.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/52.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/53.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/53.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/54.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/54.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/55.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/55.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/56.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/56.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/57.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/57.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/58.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/58.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/59.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/59.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/6.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/6.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/60.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/60.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/61.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/61.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/62.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/62.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/63.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/63.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/64.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/64.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/65.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/65.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/66.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/66.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/67.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/67.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/68.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/68.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/69.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/69.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/7.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/7.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/70.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/70.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/71.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/71.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/72.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/72.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/73.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/73.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/74.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/74.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/75.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/75.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/76.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/76.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/77.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/77.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/78.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/78.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/79.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/79.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/8.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/8.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/80.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/80.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/81.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/81.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/82.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/82.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/83.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/83.js.sub.headers": [ + [ + {} + ] + ], + "server-timing/resources/parsing/9.js": [ + [ + {} + ] + ], + "server-timing/resources/parsing/9.js.sub.headers": [ + [ + {} + ] + ], "server-timing/test_server_timing.html.sub.headers": [ [ {} @@ -286998,6 +288966,26 @@ {} ] ], + "svg/path/closepath/segment-completing-ref.svg": [ + [ + {} + ] + ], + "svg/path/distance/pathLength-positive-ref.svg": [ + [ + {} + ] + ], + "svg/path/distance/pathLength-zero-ref.svg": [ + [ + {} + ] + ], + "svg/path/error-handling/render-until-error-ref.svg": [ + [ + {} + ] + ], "svg/path/property/priority-ref.svg": [ [ {} @@ -287418,6 +289406,106 @@ {} ] ], + "upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html.headers": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html.headers": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html.headers": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html.headers": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-2.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html.headers": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html.headers": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-meta.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/resources/click-on-link.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/resources/dummy.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html.headers": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame.sub.html": [ + [ + {} + ] + ], + "upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html": [ + [ + {} + ] + ], "upgrade-insecure-requests/support/pass.png": [ [ {} @@ -298779,27 +300867,27 @@ } ] ], - "WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js": [ + "WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js": [ [ - "/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.html", + "/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.html", {} ] ], - "WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js": [ + "WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js": [ [ - "/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.html", + "/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.html", {} ] ], - "WebCryptoAPI/derive_bits_keys/hkdf.worker.js": [ + "WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js": [ [ - "/WebCryptoAPI/derive_bits_keys/hkdf.worker.html", + "/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.html", {} ] ], - "WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js": [ + "WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js": [ [ - "/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.html", + "/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.html", { "timeout": "long" } @@ -298901,9 +300989,9 @@ } ] ], - "WebCryptoAPI/digest/digest.worker.js": [ + "WebCryptoAPI/digest/digest.https.worker.js": [ [ - "/WebCryptoAPI/digest/digest.worker.html", + "/WebCryptoAPI/digest/digest.https.worker.html", {} ] ], @@ -298915,27 +301003,27 @@ } ] ], - "WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js": [ + "WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js": [ [ - "/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.html", + "/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.html", {} ] ], - "WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js": [ + "WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js": [ [ - "/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.html", + "/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.html", {} ] ], - "WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js": [ + "WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js": [ [ - "/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.html", + "/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.html", {} ] ], - "WebCryptoAPI/encrypt_decrypt/rsa.worker.js": [ + "WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js": [ [ - "/WebCryptoAPI/encrypt_decrypt/rsa.worker.html", + "/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.html", {} ] ], @@ -299317,39 +301405,33 @@ {} ] ], - "WebCryptoAPI/idlharness.html": [ - [ - "/WebCryptoAPI/idlharness.html", - {} - ] - ], "WebCryptoAPI/idlharness.https.html": [ [ "/WebCryptoAPI/idlharness.https.html", {} ] ], - "WebCryptoAPI/idlharness.worker.js": [ + "WebCryptoAPI/idlharness.https.worker.js": [ [ - "/WebCryptoAPI/idlharness.worker.html", + "/WebCryptoAPI/idlharness.https.worker.html", {} ] ], - "WebCryptoAPI/import_export/ec_importKey.worker.js": [ + "WebCryptoAPI/import_export/ec_importKey.https.worker.js": [ [ - "/WebCryptoAPI/import_export/ec_importKey.worker.html", + "/WebCryptoAPI/import_export/ec_importKey.https.worker.html", {} ] ], - "WebCryptoAPI/import_export/rsa_importKey.worker.js": [ + "WebCryptoAPI/import_export/rsa_importKey.https.worker.js": [ [ - "/WebCryptoAPI/import_export/rsa_importKey.worker.html", + "/WebCryptoAPI/import_export/rsa_importKey.https.worker.html", {} ] ], - "WebCryptoAPI/import_export/symmetric_importKey.worker.js": [ + "WebCryptoAPI/import_export/symmetric_importKey.https.worker.js": [ [ - "/WebCryptoAPI/import_export/symmetric_importKey.worker.html", + "/WebCryptoAPI/import_export/symmetric_importKey.https.worker.html", {} ] ], @@ -299383,27 +301465,27 @@ {} ] ], - "WebCryptoAPI/sign_verify/ecdsa.worker.js": [ + "WebCryptoAPI/sign_verify/ecdsa.https.worker.js": [ [ - "/WebCryptoAPI/sign_verify/ecdsa.worker.html", + "/WebCryptoAPI/sign_verify/ecdsa.https.worker.html", {} ] ], - "WebCryptoAPI/sign_verify/hmac.worker.js": [ + "WebCryptoAPI/sign_verify/hmac.https.worker.js": [ [ - "/WebCryptoAPI/sign_verify/hmac.worker.html", + "/WebCryptoAPI/sign_verify/hmac.https.worker.html", {} ] ], - "WebCryptoAPI/sign_verify/rsa_pkcs.worker.js": [ + "WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js": [ [ - "/WebCryptoAPI/sign_verify/rsa_pkcs.worker.html", + "/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.html", {} ] ], - "WebCryptoAPI/sign_verify/rsa_pss.worker.js": [ + "WebCryptoAPI/sign_verify/rsa_pss.https.worker.js": [ [ - "/WebCryptoAPI/sign_verify/rsa_pss.worker.html", + "/WebCryptoAPI/sign_verify/rsa_pss.https.worker.html", {} ] ], @@ -299447,9 +301529,9 @@ } ] ], - "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js": [ + "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js": [ [ - "/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.html", + "/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.html", { "timeout": "long" } @@ -299895,6 +301977,142 @@ {} ] ], + "bluetooth/characteristic/characteristicProperties.https.html": [ + [ + "/bluetooth/characteristic/characteristicProperties.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.html": [ + [ + "/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.html": [ + [ + "/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.html": [ + [ + "/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.html": [ + [ + "/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.html": [ + [ + "/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/notifications/characteristic-is-removed.https.html": [ + [ + "/bluetooth/characteristic/notifications/characteristic-is-removed.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html": [ + [ + "/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/readValue/characteristic-is-removed.https.html": [ + [ + "/bluetooth/characteristic/readValue/characteristic-is-removed.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/readValue/event-is-fired.https.html": [ + [ + "/bluetooth/characteristic/readValue/event-is-fired.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.html": [ + [ + "/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/readValue/read-succeeds.https.html": [ + [ + "/bluetooth/characteristic/readValue/read-succeeds.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/readValue/read-updates-value.https.html": [ + [ + "/bluetooth/characteristic/readValue/read-updates-value.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.html": [ + [ + "/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/writeValue/characteristic-is-removed.https.html": [ + [ + "/bluetooth/characteristic/writeValue/characteristic-is-removed.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.html": [ + [ + "/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/characteristic/writeValue/write-succeeds.https.html": [ + [ + "/bluetooth/characteristic/writeValue/write-succeeds.https.html", + { + "testdriver": true + } + ] + ], "bluetooth/idl/idl-Bluetooth.html": [ [ "/bluetooth/idl/idl-Bluetooth.html", @@ -300009,6 +302227,342 @@ } ] ], + "bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-disconnected-device.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-disconnected-device.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-get-same-object.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-get-same-object.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/gen-service-not-found.https.html": [ + [ + "/bluetooth/server/getPrimaryService/gen-service-not-found.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-disconnected-device.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-get-same-object.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-get-same-object.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.html", + { + "testdriver": true + } + ] + ], "bluetooth/service/getCharacteristic/characteristic-found.https.html": [ [ "/bluetooth/service/getCharacteristic/characteristic-found.https.html", @@ -300473,6 +303027,12 @@ {} ] ], + "content-security-policy/form-action/form-action-self-allowed-target-blank.html": [ + [ + "/content-security-policy/form-action/form-action-self-allowed-target-blank.html", + {} + ] + ], "content-security-policy/form-action/form-action-src-allowed.sub.html": [ [ "/content-security-policy/form-action/form-action-src-allowed.sub.html", @@ -301119,6 +303679,30 @@ {} ] ], + "content-security-policy/prefetch-src/prefetch-allowed.html": [ + [ + "/content-security-policy/prefetch-src/prefetch-allowed.html", + {} + ] + ], + "content-security-policy/prefetch-src/prefetch-blocked.html": [ + [ + "/content-security-policy/prefetch-src/prefetch-blocked.html", + {} + ] + ], + "content-security-policy/prefetch-src/prefetch-header-allowed.html": [ + [ + "/content-security-policy/prefetch-src/prefetch-header-allowed.html", + {} + ] + ], + "content-security-policy/prefetch-src/prefetch-header-blocked.html": [ + [ + "/content-security-policy/prefetch-src/prefetch-header-blocked.html", + {} + ] + ], "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html": [ [ "/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html", @@ -304717,6 +307301,42 @@ {} ] ], + "css/css-masking/parsing/clip-invalid.html": [ + [ + "/css/css-masking/parsing/clip-invalid.html", + {} + ] + ], + "css/css-masking/parsing/clip-path-invalid.html": [ + [ + "/css/css-masking/parsing/clip-path-invalid.html", + {} + ] + ], + "css/css-masking/parsing/clip-path-valid.html": [ + [ + "/css/css-masking/parsing/clip-path-valid.html", + {} + ] + ], + "css/css-masking/parsing/clip-rule-invalid.html": [ + [ + "/css/css-masking/parsing/clip-rule-invalid.html", + {} + ] + ], + "css/css-masking/parsing/clip-rule-valid.html": [ + [ + "/css/css-masking/parsing/clip-rule-valid.html", + {} + ] + ], + "css/css-masking/parsing/clip-valid.html": [ + [ + "/css/css-masking/parsing/clip-valid.html", + {} + ] + ], "css/css-multicol/extremely-tall-multicol-with-extremely-tall-child-crash.html": [ [ "/css/css-multicol/extremely-tall-multicol-with-extremely-tall-child-crash.html", @@ -304939,6 +307559,42 @@ {} ] ], + "css/css-shapes/parsing/shape-image-threshold-invalid.html": [ + [ + "/css/css-shapes/parsing/shape-image-threshold-invalid.html", + {} + ] + ], + "css/css-shapes/parsing/shape-image-threshold-valid.html": [ + [ + "/css/css-shapes/parsing/shape-image-threshold-valid.html", + {} + ] + ], + "css/css-shapes/parsing/shape-margin-invalid.html": [ + [ + "/css/css-shapes/parsing/shape-margin-invalid.html", + {} + ] + ], + "css/css-shapes/parsing/shape-margin-valid.html": [ + [ + "/css/css-shapes/parsing/shape-margin-valid.html", + {} + ] + ], + "css/css-shapes/parsing/shape-outside-invalid.html": [ + [ + "/css/css-shapes/parsing/shape-outside-invalid.html", + {} + ] + ], + "css/css-shapes/parsing/shape-outside-valid.html": [ + [ + "/css/css-shapes/parsing/shape-outside-valid.html", + {} + ] + ], "css/css-shapes/shape-outside-invalid-001.html": [ [ "/css/css-shapes/shape-outside-invalid-001.html", @@ -307123,6 +309779,36 @@ {} ] ], + "css/css-typed-om/stylevalue-normalization/normalize-ident.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-normalization/normalize-ident.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-normalization/normalize-numeric.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-normalization/normalize-numeric.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-normalization/normalize-resource.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-normalization/normalize-resource.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html", + {} + ] + ], "css/css-typed-om/stylevalue-objects/interface.html": [ [ "/css/css-typed-om/stylevalue-objects/interface.html", @@ -307153,12 +309839,222 @@ {} ] ], + "css/css-typed-om/stylevalue-serialization/cssKeywordValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-serialization/cssKeywordValue.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-serialization/cssMathValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-serialization/cssMathValue.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-serialization/cssPositionValue.html": [ + [ + "/css/css-typed-om/stylevalue-serialization/cssPositionValue.html", + {} + ] + ], + "css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-serialization/cssUnparsedValue.html": [ + [ + "/css/css-typed-om/stylevalue-serialization/cssUnparsedValue.html", + {} + ] + ], + "css/css-typed-om/stylevalue-serialization/cssUrlImageValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-serialization/cssUrlImageValue.tentative.html", + {} + ] + ], "css/css-typed-om/stylevalue-subclasses/cssKeywordValue-interface.html": [ [ "/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-interface.html", {} ] ], + "css/css-typed-om/stylevalue-subclasses/cssKeywordValue-invalid.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-invalid.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/computed/get.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/computed/get.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/computed/getAll.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/computed/getAll.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/computed/getProperties.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/computed/getProperties.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/computed/has.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/computed/has.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/computed/iterable.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/computed/iterable.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/append.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/get.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/get.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/getAll.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/getAll.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/getProperties.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/getProperties.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/has.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/has.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/iterable.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/iterable.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/set.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/set.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/test.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/test.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/update.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/update.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/append.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/append.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/get.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/get.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/getAll.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/getAll.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/getProperties.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/getProperties.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/has.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/has.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/iterable.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/iterable.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/set.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/set.tentative.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/update.tentative.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/update.tentative.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/interface.html": [ [ "/css/css-typed-om/the-stylepropertymap/interface.html", @@ -307249,6 +310145,12 @@ {} ] ], + "css/css-values/lh-rlh-on-root-001.html": [ + [ + "/css/css-values/lh-rlh-on-root-001.html", + {} + ] + ], "css/css-values/unset-value-storage.html": [ [ "/css/css-values/unset-value-storage.html", @@ -308101,6 +311003,12 @@ {} ] ], + "css/cssom-view/scroll-no-layout-box.html": [ + [ + "/css/cssom-view/scroll-no-layout-box.html", + {} + ] + ], "css/cssom-view/scrollIntoView-shadow.html": [ [ "/css/cssom-view/scrollIntoView-shadow.html", @@ -314829,6 +317737,12 @@ {} ] ], + "fetch/security/redirect-to-url-with-credentials.https.html": [ + [ + "/fetch/security/redirect-to-url-with-credentials.https.html", + {} + ] + ], "fullscreen/api/document-exit-fullscreen-active-document.html": [ [ "/fullscreen/api/document-exit-fullscreen-active-document.html", @@ -318673,6 +321587,12 @@ {} ] ], + "html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html": [ + [ + "/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html", + {} + ] + ], "html/semantics/document-metadata/styling/LinkStyle.html": [ [ "/html/semantics/document-metadata/styling/LinkStyle.html", @@ -320051,6 +322971,18 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html", + {} + ] + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html", + {} + ] + ], "html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp.html": [ [ "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp.html", @@ -320069,6 +323001,18 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html", + {} + ] + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html", + {} + ] + ], "html/semantics/embedded-content/media-elements/track/track-element/track-cues-missed.html": [ [ "/html/semantics/embedded-content/media-elements/track/track-element/track-cues-missed.html", @@ -327495,27 +330439,27 @@ {} ] ], - "keyboard-lock/navigator-cancelKeyboardLock.https.html": [ + "keyboard-lock/navigator-keyboardLock-two-parallel-requests.https.html": [ [ - "/keyboard-lock/navigator-cancelKeyboardLock.https.html", + "/keyboard-lock/navigator-keyboardLock-two-parallel-requests.https.html", {} ] ], - "keyboard-lock/navigator-requestKeyboardLock-two-parallel-requests.https.html": [ + "keyboard-lock/navigator-keyboardLock-two-sequential-requests.https.html": [ [ - "/keyboard-lock/navigator-requestKeyboardLock-two-parallel-requests.https.html", + "/keyboard-lock/navigator-keyboardLock-two-sequential-requests.https.html", {} ] ], - "keyboard-lock/navigator-requestKeyboardLock-two-sequential-requests.https.html": [ + "keyboard-lock/navigator-keyboardLock.https.html": [ [ - "/keyboard-lock/navigator-requestKeyboardLock-two-sequential-requests.https.html", + "/keyboard-lock/navigator-keyboardLock.https.html", {} ] ], - "keyboard-lock/navigator-requestKeyboardLock.https.html": [ + "keyboard-lock/navigator-keyboardUnlock.https.html": [ [ - "/keyboard-lock/navigator-requestKeyboardLock.https.html", + "/keyboard-lock/navigator-keyboardUnlock.https.html", {} ] ], @@ -339409,6 +342353,12 @@ {} ] ], + "performance-timeline/po-takeRecords.html": [ + [ + "/performance-timeline/po-takeRecords.html", + {} + ] + ], "performance-timeline/worker-with-performance-observer.html": [ [ "/performance-timeline/worker-with-performance-observer.html", @@ -339667,9 +342617,9 @@ {} ] ], - "proximity/idlharness.html": [ + "proximity/idlharness.https.html": [ [ - "/proximity/idlharness.html", + "/proximity/idlharness.https.html", {} ] ], @@ -347991,12 +350941,66 @@ {} ] ], + "resource-timing/resource_dedicated_worker.html": [ + [ + "/resource-timing/resource_dedicated_worker.html", + {} + ] + ], "resource-timing/resource_dynamic_insertion.html": [ [ "/resource-timing/resource_dynamic_insertion.html", {} ] ], + "resource-timing/resource_frame_initiator_type.html": [ + [ + "/resource-timing/resource_frame_initiator_type.html", + {} + ] + ], + "resource-timing/resource_ignore_data_url.html": [ + [ + "/resource-timing/resource_ignore_data_url.html", + {} + ] + ], + "resource-timing/resource_ignore_failures.html": [ + [ + "/resource-timing/resource_ignore_failures.html", + {} + ] + ], + "resource-timing/resource_initiator_types.html": [ + [ + "/resource-timing/resource_initiator_types.html", + {} + ] + ], + "resource-timing/resource_memory_cached.sub.html": [ + [ + "/resource-timing/resource_memory_cached.sub.html", + {} + ] + ], + "resource-timing/resource_redirects.html": [ + [ + "/resource-timing/resource_redirects.html", + {} + ] + ], + "resource-timing/resource_reparenting.html": [ + [ + "/resource-timing/resource_reparenting.html", + {} + ] + ], + "resource-timing/resource_script_types.html": [ + [ + "/resource-timing/resource_script_types.html", + {} + ] + ], "resource-timing/resource_subframe_self_navigation.html": [ [ "/resource-timing/resource_subframe_self_navigation.html", @@ -348369,6 +351373,12 @@ {} ] ], + "server-timing/server_timing_header-parsing.html": [ + [ + "/server-timing/server_timing_header-parsing.html", + {} + ] + ], "server-timing/test_server_timing.html": [ [ "/server-timing/test_server_timing.html", @@ -351591,6 +354601,18 @@ {} ] ], + "svg/path/error-handling/bounding.svg": [ + [ + "/svg/path/error-handling/bounding.svg", + {} + ] + ], + "svg/path/interfaces/SVGAnimatedPathData-removed.svg": [ + [ + "/svg/path/interfaces/SVGAnimatedPathData-removed.svg", + {} + ] + ], "svg/path/property/d-interpolation-discrete.svg": [ [ "/svg/path/property/d-interpolation-discrete.svg", @@ -351621,6 +354643,12 @@ {} ] ], + "svg/types/elements/SVGGeometryElement-rect.svg": [ + [ + "/svg/types/elements/SVGGeometryElement-rect.svg", + {} + ] + ], "svg/types/scripted/SVGAnimatedEnumeration-SVGClipPathElement.html": [ [ "/svg/types/scripted/SVGAnimatedEnumeration-SVGClipPathElement.html", @@ -351979,6 +355007,12 @@ {} ] ], + "upgrade-insecure-requests/link-upgrade.sub.https.html": [ + [ + "/upgrade-insecure-requests/link-upgrade.sub.https.html", + {} + ] + ], "upgrade-insecure-requests/websocket-upgrade.https.html": [ [ "/upgrade-insecure-requests/websocket-upgrade.https.html", @@ -354129,6 +357163,12 @@ {} ] ], + "webrtc/RTCPeerConnection-track-stats.https.html": [ + [ + "/webrtc/RTCPeerConnection-track-stats.https.html", + {} + ] + ], "webrtc/RTCPeerConnectionIceEvent-constructor.html": [ [ "/webrtc/RTCPeerConnectionIceEvent-constructor.html", @@ -356853,6 +359893,12 @@ {} ] ], + "webxr/interfaces.https.html": [ + [ + "/webxr/interfaces.https.html", + {} + ] + ], "webxr/webxr_availability.http.sub.html": [ [ "/webxr/webxr_availability.http.sub.html", @@ -357987,6 +361033,36 @@ {} ] ], + "worklets/layout-worklet-credentials.https.html": [ + [ + "/worklets/layout-worklet-credentials.https.html", + {} + ] + ], + "worklets/layout-worklet-csp.https.html": [ + [ + "/worklets/layout-worklet-csp.https.html", + {} + ] + ], + "worklets/layout-worklet-import.https.html": [ + [ + "/worklets/layout-worklet-import.https.html", + {} + ] + ], + "worklets/layout-worklet-referrer.https.html": [ + [ + "/worklets/layout-worklet-referrer.https.html", + {} + ] + ], + "worklets/layout-worklet-service-worker-interception.https.html": [ + [ + "/worklets/layout-worklet-service-worker-interception.https.html", + {} + ] + ], "worklets/paint-worklet-credentials.https.html": [ [ "/worklets/paint-worklet-credentials.https.html", @@ -367047,30 +370123,6 @@ {} ] ], - "css/CSS2/selectors/class-selector-009.xht": [ - [ - "/css/CSS2/selectors/class-selector-009.xht", - {} - ] - ], - "css/CSS2/selectors/class-selector-010.xht": [ - [ - "/css/CSS2/selectors/class-selector-010.xht", - {} - ] - ], - "css/CSS2/selectors/class-selector-011.xht": [ - [ - "/css/CSS2/selectors/class-selector-011.xht", - {} - ] - ], - "css/CSS2/selectors/class-selector-012.xht": [ - [ - "/css/CSS2/selectors/class-selector-012.xht", - {} - ] - ], "css/CSS2/selectors/default-attribute-selector-005.xht": [ [ "/css/CSS2/selectors/default-attribute-selector-005.xht", @@ -367095,78 +370147,12 @@ {} ] ], - "css/CSS2/selectors/first-child-selector-001.xht": [ - [ - "/css/CSS2/selectors/first-child-selector-001.xht", - {} - ] - ], - "css/CSS2/selectors/first-child-selector-002.xht": [ - [ - "/css/CSS2/selectors/first-child-selector-002.xht", - {} - ] - ], - "css/CSS2/selectors/first-child-selector-003.xht": [ - [ - "/css/CSS2/selectors/first-child-selector-003.xht", - {} - ] - ], - "css/CSS2/selectors/first-letter-selector-000.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-000.xht", - {} - ] - ], - "css/CSS2/selectors/first-letter-selector-001.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-001.xht", - {} - ] - ], - "css/CSS2/selectors/first-letter-selector-002.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-002.xht", - {} - ] - ], - "css/CSS2/selectors/first-letter-selector-003.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-003.xht", - {} - ] - ], - "css/CSS2/selectors/first-letter-selector-004.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-004.xht", - {} - ] - ], - "css/CSS2/selectors/first-letter-selector-005.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-005.xht", - {} - ] - ], "css/CSS2/selectors/first-letter-selector-006.xht": [ [ "/css/CSS2/selectors/first-letter-selector-006.xht", {} ] ], - "css/CSS2/selectors/first-letter-selector-007.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-007.xht", - {} - ] - ], - "css/CSS2/selectors/first-letter-selector-008.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-008.xht", - {} - ] - ], "css/CSS2/selectors/first-letter-selector-009.xht": [ [ "/css/CSS2/selectors/first-letter-selector-009.xht", @@ -367227,12 +370213,6 @@ {} ] ], - "css/CSS2/selectors/first-letter-selector-019.xht": [ - [ - "/css/CSS2/selectors/first-letter-selector-019.xht", - {} - ] - ], "css/CSS2/selectors/first-letter-selector-020.xht": [ [ "/css/CSS2/selectors/first-letter-selector-020.xht", @@ -367335,24 +370315,6 @@ {} ] ], - "css/CSS2/selectors/first-line-pseudo-019.xht": [ - [ - "/css/CSS2/selectors/first-line-pseudo-019.xht", - {} - ] - ], - "css/CSS2/selectors/first-line-pseudo-020.xht": [ - [ - "/css/CSS2/selectors/first-line-pseudo-020.xht", - {} - ] - ], - "css/CSS2/selectors/first-line-pseudo-021.xht": [ - [ - "/css/CSS2/selectors/first-line-pseudo-021.xht", - {} - ] - ], "css/CSS2/selectors/first-line-selector-001.xht": [ [ "/css/CSS2/selectors/first-line-selector-001.xht", @@ -367401,12 +370363,6 @@ {} ] ], - "css/CSS2/selectors/first-line-selector-010.xht": [ - [ - "/css/CSS2/selectors/first-line-selector-010.xht", - {} - ] - ], "css/CSS2/selectors/first-line-selector-011.xht": [ [ "/css/CSS2/selectors/first-line-selector-011.xht", @@ -367437,48 +370393,6 @@ {} ] ], - "css/CSS2/selectors/id-selector-002.xht": [ - [ - "/css/CSS2/selectors/id-selector-002.xht", - {} - ] - ], - "css/CSS2/selectors/lang-selector-004.xht": [ - [ - "/css/CSS2/selectors/lang-selector-004.xht", - {} - ] - ], - "css/CSS2/selectors/lang-selector-005.xht": [ - [ - "/css/CSS2/selectors/lang-selector-005.xht", - {} - ] - ], - "css/CSS2/selectors/lang-selector-006.xht": [ - [ - "/css/CSS2/selectors/lang-selector-006.xht", - {} - ] - ], - "css/CSS2/selectors/pseudo-006.xht": [ - [ - "/css/CSS2/selectors/pseudo-006.xht", - {} - ] - ], - "css/CSS2/selectors/pseudo-007.xht": [ - [ - "/css/CSS2/selectors/pseudo-007.xht", - {} - ] - ], - "css/CSS2/selectors/pseudo-008.xht": [ - [ - "/css/CSS2/selectors/pseudo-008.xht", - {} - ] - ], "css/CSS2/syntax/case-sensitive-008.xht": [ [ "/css/CSS2/syntax/case-sensitive-008.xht", @@ -370329,96 +373243,6 @@ {} ] ], - "css/CSS2/tables/caption-side-applies-to-001.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-001.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-002.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-002.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-003.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-003.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-005.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-005.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-006.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-006.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-007.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-007.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-008.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-008.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-009.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-009.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-010.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-010.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-011.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-011.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-012.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-012.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-013.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-013.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-014.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-014.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-015.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-015.xht", - {} - ] - ], - "css/CSS2/tables/caption-side-applies-to-017.xht": [ - [ - "/css/CSS2/tables/caption-side-applies-to-017.xht", - {} - ] - ], "css/CSS2/tables/caption-side-example-001.xht": [ [ "/css/CSS2/tables/caption-side-example-001.xht", @@ -370449,30 +373273,12 @@ {} ] ], - "css/CSS2/tables/collapsing-border-model-001.xht": [ - [ - "/css/CSS2/tables/collapsing-border-model-001.xht", - {} - ] - ], "css/CSS2/tables/collapsing-border-model-002.xht": [ [ "/css/CSS2/tables/collapsing-border-model-002.xht", {} ] ], - "css/CSS2/tables/collapsing-border-model-003.xht": [ - [ - "/css/CSS2/tables/collapsing-border-model-003.xht", - {} - ] - ], - "css/CSS2/tables/collapsing-border-model-004.xht": [ - [ - "/css/CSS2/tables/collapsing-border-model-004.xht", - {} - ] - ], "css/CSS2/tables/collapsing-border-model-005.xht": [ [ "/css/CSS2/tables/collapsing-border-model-005.xht", @@ -370485,24 +373291,6 @@ {} ] ], - "css/CSS2/tables/collapsing-border-model-007.xht": [ - [ - "/css/CSS2/tables/collapsing-border-model-007.xht", - {} - ] - ], - "css/CSS2/tables/collapsing-border-model-008.xht": [ - [ - "/css/CSS2/tables/collapsing-border-model-008.xht", - {} - ] - ], - "css/CSS2/tables/collapsing-border-model-009.xht": [ - [ - "/css/CSS2/tables/collapsing-border-model-009.xht", - {} - ] - ], "css/CSS2/tables/collapsing-table-borders-001.xht": [ [ "/css/CSS2/tables/collapsing-table-borders-001.xht", @@ -370983,18 +373771,6 @@ {} ] ], - "css/CSS2/tables/row-visibility-001.xht": [ - [ - "/css/CSS2/tables/row-visibility-001.xht", - {} - ] - ], - "css/CSS2/tables/row-visibility-002.xht": [ - [ - "/css/CSS2/tables/row-visibility-002.xht", - {} - ] - ], "css/CSS2/tables/row-visibility-003.xht": [ [ "/css/CSS2/tables/row-visibility-003.xht", @@ -371553,12 +374329,6 @@ {} ] ], - "css/CSS2/tables/table-cell-001.xht": [ - [ - "/css/CSS2/tables/table-cell-001.xht", - {} - ] - ], "css/CSS2/tables/table-cell-002.xht": [ [ "/css/CSS2/tables/table-cell-002.xht", @@ -378639,6 +381409,12 @@ {} ] ], + "css/css-typed-om/stylevalue-normalization/normalize-tokens.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-normalization/normalize-tokens.tentative.html", + {} + ] + ], "css/css-values/absolute_length_units.html": [ [ "/css/css-values/absolute_length_units.html", @@ -379439,7 +382215,7 @@ "support" ], "./.travis.yml": [ - "3ded1c75d66882f00fe588318e373e802dddf15e", + "ae17735a06f31093f06a10b643099cbedaa3c459", "support" ], "./CONTRIBUTING.md": [ @@ -379467,7 +382243,7 @@ "support" ], "./lint.whitelist": [ - "e2ff823a37fdb49a64d144ac380ac00ab4d35655", + "c55f23203c2e4b158dc13d25617031fcbb791744", "support" ], "./serve.py": [ @@ -381959,15 +384735,15 @@ "testharness" ], "2dcontext/imagebitmap/common.js": [ - "9c16b63a9a724f46e543a32649c21f04c6540893", + "c20732ce1e92624a3d3982154d5aba92eba7adc1", "support" ], "2dcontext/imagebitmap/createImageBitmap-drawImage.html": [ - "d709088a1850b25a89a4ad5cd58a0c9387aa4840", + "ac183f2abd04f0561433083040190cdadb8ac86a", "testharness" ], "2dcontext/imagebitmap/createImageBitmap-invalid-args.html": [ - "0f8e0a2a9099ac869e2435dfe018bc1fb65ec71f", + "05ccfd7c45806ee919ccef8bb45c76c147bded63", "testharness" ], "2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html": [ @@ -383643,7 +386419,7 @@ "testharness" ], "FileAPI/file/File-constructor.html": [ - "95198c8156dadc851d279a863b883c8befdc3930", + "68673d38dcf818edf59bbc5996d2aa1b2105a481", "testharness" ], "FileAPI/file/Worker-read-file-constructor.worker.js": [ @@ -383831,7 +386607,7 @@ "support" ], "FileAPI/url/sandboxed-iframe.html": [ - "f7de4337c0f154668d24d85753daea9e4636ac52", + "b610b4d0f18472d9eb7ba50f68424e8731d9efff", "testharness" ], "FileAPI/url/unicode-origin.sub.html": [ @@ -383839,7 +386615,7 @@ "testharness" ], "FileAPI/url/url-format.any.js": [ - "b2e72a48146973a4d2e95b815758d688c8acb2e0", + "b087f507b342f88240efcee2569da96fee469a5b", "testharness" ], "FileAPI/url/url-in-tags.window.js": [ @@ -385306,46 +388082,42 @@ "de7dd2ee8b4d23b5170349e7c2dc94862e5faed2", "support" ], - "WebCryptoAPI/WebCryptoAPI.idl": [ - "87b02fc82a1b204ac59a51932e58f9369b4a77c6", - "support" + "WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js": [ + "b5b14e550d5dbff9f63666b42bd46e29b5be8709", + "testharness" ], "WebCryptoAPI/derive_bits_keys/ecdh_bits.js": [ "becf212639e53f6cae83994feeb2a2d0ecb6feeb", "support" ], - "WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js": [ - "b5b14e550d5dbff9f63666b42bd46e29b5be8709", + "WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js": [ + "25bcc549b62ecc99df4e2af27753e311c3910e70", "testharness" ], "WebCryptoAPI/derive_bits_keys/ecdh_keys.js": [ "c030ebe3984538c73ee1fca4ec378e4356bccbf4", "support" ], - "WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js": [ - "25bcc549b62ecc99df4e2af27753e311c3910e70", + "WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js": [ + "0ea6fb5e51a60e8a521da7a2853fde9a4ff2af8f", "testharness" ], "WebCryptoAPI/derive_bits_keys/hkdf.js": [ "7c50dfe98c29038cc758cf90d56cf4b328d1fc37", "support" ], - "WebCryptoAPI/derive_bits_keys/hkdf.worker.js": [ - "0ea6fb5e51a60e8a521da7a2853fde9a4ff2af8f", - "testharness" - ], "WebCryptoAPI/derive_bits_keys/hkdf_vectors.js": [ "766a7184da406918e9dc6718125975a59d3d5d36", "support" ], + "WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js": [ + "1149c335951baa52b7d1ad3192292fb46176d491", + "testharness" + ], "WebCryptoAPI/derive_bits_keys/pbkdf2.js": [ "dfd8eea5707720186820549837c8a1a319a8ecc4", "support" ], - "WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js": [ - "1149c335951baa52b7d1ad3192292fb46176d491", - "testharness" - ], "WebCryptoAPI/derive_bits_keys/pbkdf2_vectors.js": [ "0a073cb726ad239110545eb3cecada2a0ce5daf7", "support" @@ -385398,14 +388170,14 @@ "5e776aa3f202bb72a328947983b020f03ba6ec4d", "testharness" ], + "WebCryptoAPI/digest/digest.https.worker.js": [ + "a9a6b7a15bf0b795729190a94bdda6ed1ddc013d", + "testharness" + ], "WebCryptoAPI/digest/digest.js": [ "e68b81bd47af7373a63466ebe2fd13050d5d246d", "support" ], - "WebCryptoAPI/digest/digest.worker.js": [ - "a9a6b7a15bf0b795729190a94bdda6ed1ddc013d", - "testharness" - ], "WebCryptoAPI/digest/test_digest.https.html": [ "1f5893b2c01a60e1e49b8ba5dee8f3d6507cc604", "testharness" @@ -385414,7 +388186,7 @@ "b05d96920d4ea99e4cd8cbcbb3c92251aac81963", "support" ], - "WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js": [ + "WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js": [ "348e7d6daf461c90ad2f141aee0ec5fb178e33d6", "testharness" ], @@ -385422,7 +388194,7 @@ "11b8c11b8fba29f1ce4dd9dc7ed7dd73ddb93322", "support" ], - "WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js": [ + "WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js": [ "aa500eac7a17c4994a84b63bac007199e989ddb7", "testharness" ], @@ -385430,7 +388202,7 @@ "bd8aa30846061ba3c1b99a73048ea17b5c9c0567", "support" ], - "WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js": [ + "WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js": [ "fe553a2dbe69cc75c51f7951dbf3812b3522fcd5", "testharness" ], @@ -385438,14 +388210,14 @@ "09fe2fc446bd7a5f0039f4ec20d364cab6d6697d", "support" ], + "WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js": [ + "89c6a19f939936a2947a3a5acd9cf37929e46caa", + "testharness" + ], "WebCryptoAPI/encrypt_decrypt/rsa.js": [ "49ddd58c86e0168917b8404d5a3f0ccf0715ef37", "support" ], - "WebCryptoAPI/encrypt_decrypt/rsa.worker.js": [ - "89c6a19f939936a2947a3a5acd9cf37929e46caa", - "testharness" - ], "WebCryptoAPI/encrypt_decrypt/rsa_vectors.js": [ "e833d10f83ac5cff26e076371a545d60a8d37b8f", "support" @@ -385646,42 +388418,38 @@ "44475110f616c78bc04b93246f015e7a83e78fa7", "testharness" ], - "WebCryptoAPI/idlharness.html": [ - "f97da6e12fbd08b0fe93a6bc0fb9724053d147a8", + "WebCryptoAPI/idlharness.https.html": [ + "a0ac6f063c49d9c14b614dee18b681968eee05ad", "testharness" ], - "WebCryptoAPI/idlharness.https.html": [ - "f97da6e12fbd08b0fe93a6bc0fb9724053d147a8", + "WebCryptoAPI/idlharness.https.worker.js": [ + "2ef22c6a9f185492c5bca7e52b3a7a6b363a2e2f", "testharness" ], - "WebCryptoAPI/idlharness.worker.js": [ - "e3478f4259364d773dab9ca5e0c7194a0b78d5b3", + "WebCryptoAPI/import_export/ec_importKey.https.worker.js": [ + "18e1f688107b6f2ec4d37f593567ec65ac95c9f9", "testharness" ], "WebCryptoAPI/import_export/ec_importKey.js": [ "9da62f7432c2bf0268189f3ba58d5f6910b8de09", "support" ], - "WebCryptoAPI/import_export/ec_importKey.worker.js": [ - "18e1f688107b6f2ec4d37f593567ec65ac95c9f9", + "WebCryptoAPI/import_export/rsa_importKey.https.worker.js": [ + "4d67403cda8df77690309ac7e6ed1bff65ce0bc6", "testharness" ], "WebCryptoAPI/import_export/rsa_importKey.js": [ "7499196d47910b7e06ca369b008e74d8b0c85bfa", "support" ], - "WebCryptoAPI/import_export/rsa_importKey.worker.js": [ - "4d67403cda8df77690309ac7e6ed1bff65ce0bc6", + "WebCryptoAPI/import_export/symmetric_importKey.https.worker.js": [ + "e9d9758d0478ecdf93a5fda9f196501e992de614", "testharness" ], "WebCryptoAPI/import_export/symmetric_importKey.js": [ "105065232cebaa7ceeb8436ce257b76c6db274e8", "support" ], - "WebCryptoAPI/import_export/symmetric_importKey.worker.js": [ - "e9d9758d0478ecdf93a5fda9f196501e992de614", - "testharness" - ], "WebCryptoAPI/import_export/test_ec_importKey.https.html": [ "2c173849dd35c551b71983fb8efc20f650599da2", "testharness" @@ -385702,26 +388470,26 @@ "4df3813485b7277571d61ce38a5811729f91ddbe", "testharness" ], + "WebCryptoAPI/sign_verify/ecdsa.https.worker.js": [ + "bb414663a4a65e9b55028b0a7433753b3f749a95", + "testharness" + ], "WebCryptoAPI/sign_verify/ecdsa.js": [ "55c99894ea3ba9186de1082c189f37f77dfe12e1", "support" ], - "WebCryptoAPI/sign_verify/ecdsa.worker.js": [ - "bb414663a4a65e9b55028b0a7433753b3f749a95", - "testharness" - ], "WebCryptoAPI/sign_verify/ecdsa_vectors.js": [ "cc71e74a07a65072c004f262a987097aa68a8e75", "support" ], + "WebCryptoAPI/sign_verify/hmac.https.worker.js": [ + "725bbd226a49624a63d168a84ae63d73ce26d73c", + "testharness" + ], "WebCryptoAPI/sign_verify/hmac.js": [ "de5464f41c68d7fd6f4c9cb0653c6e1d591344af", "support" ], - "WebCryptoAPI/sign_verify/hmac.worker.js": [ - "725bbd226a49624a63d168a84ae63d73ce26d73c", - "testharness" - ], "WebCryptoAPI/sign_verify/hmac_vectors.js": [ "c7744822c4c292b4eccf623242f1dc46aaffb91e", "support" @@ -385730,7 +388498,7 @@ "b828453ea1f8db421bf08b02d3067f91b6867657", "support" ], - "WebCryptoAPI/sign_verify/rsa_pkcs.worker.js": [ + "WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js": [ "a1a0de477cc1e275fa4e874112b11016099fb78d", "testharness" ], @@ -385738,7 +388506,7 @@ "1f10e9144cb5e08e5371d956c0410350f3a90b1e", "support" ], - "WebCryptoAPI/sign_verify/rsa_pss.worker.js": [ + "WebCryptoAPI/sign_verify/rsa_pss.https.worker.js": [ "a0e46ac878fc7178cefb52e7e5a398d5e5b80f3b", "testharness" ], @@ -385778,14 +388546,14 @@ "2f0070bafc5079f3b70dd8da567fde0ea6bfb113", "testharness" ], + "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js": [ + "901c6df896c5f9bccd2e680fbd6fc56afce8d364", + "testharness" + ], "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js": [ "963ed1da346e78fce5217210cd1608b88bea1172", "support" ], - "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js": [ - "901c6df896c5f9bccd2e680fbd6fc56afce8d364", - "testharness" - ], "WebIDL/OWNERS": [ "f9c94ab08fa997459cba17e61d8cd00ee8b07b46", "support" @@ -386283,7 +389051,7 @@ "support" ], "accelerometer/Accelerometer-disabled-by-feature-policy.https.html": [ - "37ec335921c5e3cb6011986e76da04254106f4f6", + "96e5a86bf78239f3aa4a79b32bb4308de0d5f60e", "testharness" ], "accelerometer/Accelerometer-disabled-by-feature-policy.https.html.headers": [ @@ -386291,15 +389059,15 @@ "support" ], "accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "b03ee7c22f1dd78e2681632f2f67598da67a09cb", + "f20f89a31daf399a7946b928e8deca9651d38487", "testharness" ], "accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html": [ - "6f5a595f9ee8d8e0dcd29eae9816210846c43557", + "7ce8c39f0af6c932d1e6b6f75843c090f7274b80", "testharness" ], "accelerometer/Accelerometer-enabled-by-feature-policy.https.html": [ - "9997d07beb3ef1c711dcfd6308c58d11c938244d", + "dbda7cfa838c1f2d4296b545034d42f0064f331a", "testharness" ], "accelerometer/Accelerometer-enabled-by-feature-policy.https.html.headers": [ @@ -386307,7 +389075,7 @@ "support" ], "accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html": [ - "3b4500e2ff0f8a3efae8ace952a8993ed3005bd6", + "b8fb07cdd23dce9690de719387b9d505382772f5", "testharness" ], "accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -386315,15 +389083,15 @@ "support" ], "accelerometer/Accelerometer.https.html": [ - "c0ca55250886c6a8c6194b658ed362e8b10ccae3", + "3ff5f61b25c52142e9796f3903d7f2bcaa30314c", "testharness" ], "accelerometer/Accelerometer_insecure_context.html": [ - "ad29f70c8f506002154e6ffa430b87f5e5ae0923", + "82be1b9a5c6e75291fdc1aabe230af28e22823a8", "testharness" ], "accelerometer/Accelerometer_onerror-manual.https.html": [ - "f20acb4b4e2f774fc13c870f972aaa2ca82afd27", + "c82f9595dc2582b2da40549a358da1c3fc2ff820", "manual" ], "accelerometer/OWNERS": [ @@ -386459,15 +389227,15 @@ "support" ], "ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "c062b275f18a69d092fe4f8d20d01f93a631556f", + "06862bb58d13bf4355cbe66cb7060c7a5ea4a750", "testharness" ], "ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute.https.html": [ - "e719162b3001f7a6ef307a1f3af9ac048a0f7ce3", + "acdf8d84bc3e8708af250d8825c93d130ade435f", "testharness" ], "ambient-light/AmbientLightSensor-enabled-by-feature-policy.https.html": [ - "605f76f34e24f91ca9e2a6538624ec89633c6d1a", + "da2cc1cc0de186731e38512219cdfaf8357b9301", "testharness" ], "ambient-light/AmbientLightSensor-enabled-by-feature-policy.https.html.headers": [ @@ -386475,7 +389243,7 @@ "support" ], "ambient-light/AmbientLightSensor-enabled-on-self-origin-by-feature-policy.https.html": [ - "6ed23575a7dc16c7044970d81d7768796e9968d4", + "2a7a1dadbf5d9d05116128633598da781f5f0003", "testharness" ], "ambient-light/AmbientLightSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -388659,11 +391427,11 @@ "testharness" ], "beacon/beacon-common.sub.js": [ - "75bee9ae7588c181a9a4f3eb9bced109a0190bfc", + "67226dd8db05540bd79bf5d4983c51fc985ff906", "support" ], "beacon/beacon-cors.sub.window.js": [ - "1821072ced64052cea6d2fc3ccb73cfe23a4235e", + "378281325f0a8d02d32b584179577babfeb7b013", "testharness" ], "beacon/beacon-error.window.js": [ @@ -388723,7 +391491,7 @@ "support" ], "beacon/resources/beacon.py": [ - "12c892f085e2498f4c4abfda2409c61b0243a27f", + "fb2e689ef46d36e3d17b99d9dfad3994110b2033", "support" ], "beacon/resources/content-type.py": [ @@ -388739,11 +391507,87 @@ "support" ], "bluetooth/README.md": [ - "570b51035ed737c73da8b266cbe0eb658745286e", + "2406b51635145355309f8e8778a5669ff561813d", + "support" + ], + "bluetooth/characteristic/characteristicProperties.https.html": [ + "65cc6c0367c0c2860677d2b22a8483c90eac6f2a", + "testharness" + ], + "bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.html": [ + "6ba1c71fa5c34f7b0321b5430fa79c75c907fc14", + "testharness" + ], + "bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.html": [ + "be7359ed375b28af9aab39c5b06ffbd0da1843bc", + "testharness" + ], + "bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.html": [ + "fa068af0ac6d1629622f207b77ae95fe3f50b6cc", + "testharness" + ], + "bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.html": [ + "82084e965ad35f176505631cb0b9007422bf3fd4", + "testharness" + ], + "bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.html": [ + "6a02e3fe8ca88b405e4183bc56c5f0bd2d6a426e", + "testharness" + ], + "bluetooth/characteristic/notifications/characteristic-is-removed.https.html": [ + "f5b14288aad807a4aaaeee5c3ac24f8a43eb4589", + "testharness" + ], + "bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html": [ + "4bb6355e47507c0e57498533d060106dda0051d4", + "testharness" + ], + "bluetooth/characteristic/readValue/characteristic-is-removed.https.html": [ + "69e6a733b4d72a1f7f41b26d65fd874fa944aff5", + "testharness" + ], + "bluetooth/characteristic/readValue/event-is-fired.https.html": [ + "ce736454ce04bcb34be9d1e76f77903ba3f3e805", + "testharness" + ], + "bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.html": [ + "1700dfa9ba6e1aa44d42630ef7ba61d4beeed330", + "testharness" + ], + "bluetooth/characteristic/readValue/read-succeeds.https.html": [ + "a87d20692160f3a26fbfde8cfbc8750c0eeb7a65", + "testharness" + ], + "bluetooth/characteristic/readValue/read-updates-value.https.html": [ + "e8daa0dedd43a87996093e5b2507a83572eadb43", + "testharness" + ], + "bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.html": [ + "97f5d01743721207c5addfb9625fd3da7c0c61e3", + "testharness" + ], + "bluetooth/characteristic/writeValue/characteristic-is-removed.https.html": [ + "08efca72e1b522baf8f704f8589cf453b4c2b64b", + "testharness" + ], + "bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.html": [ + "62b4bd66196c9c833631916761b41e973aa2a554", + "testharness" + ], + "bluetooth/characteristic/writeValue/write-succeeds.https.html": [ + "8dcaba2c0c6d277c006dd131f1f306918ac80c49", + "testharness" + ], + "bluetooth/generate.py": [ + "ef112d89bc14d0e9ebbb457798609f6000a80935", + "support" + ], + "bluetooth/generate_test.py": [ + "b8749e25c58da9a903feb5edc84c2d6ed8ebda67", "support" ], "bluetooth/idl/idl-Bluetooth.html": [ - "5d4d8278b1f24798765974c35777f70fcbfc9cfa", + "9ef91a8214b3a46278d8b9b442b34d9052342342", "testharness" ], "bluetooth/idl/idl-BluetoothUUID.html": [ @@ -388751,23 +391595,23 @@ "testharness" ], "bluetooth/idl/idl-NavigatorBluetooth.html": [ - "9367593c5bfe07afb4629791cf6aab70460dcd4c", + "fa121bcbea3d19898a71f7dda79708ee941e4b6c", "testharness" ], "bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.html": [ - "6e17536a0e3f9d9a0fe6ce075905954b23c83b00", + "850418b4a67df894ac4b21d2e5a18c5c266d03fd", "testharness" ], "bluetooth/requestDevice/acceptAllDevices/device-with-name.https.html": [ - "e212d4609a7f295a564417a22c984c6ddeeeb0c3", + "e156278ff3af38ebc2695ffd3116039be7889e3e", "testharness" ], "bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html": [ - "899200ebcc741fd99b7c8a4e09cb6877c66c6bf5", + "c6e28d2c8509ea2f0e3633b2517ad68631119ffe", "testharness" ], "bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.html": [ - "4478ad0afabf3adcd1f84e8165f1a3f185698974", + "50eaac3e0c94933fa995c102d53b6b00b3087ea6", "testharness" ], "bluetooth/resources/bluetooth-helpers.js": [ @@ -388775,59 +391619,303 @@ "support" ], "bluetooth/resources/health-thermometer-iframe.html": [ - "badf5e78964f9979d6870c08fb78eb3987027c00", + "d42691b2621c13a28c3cfd675de4d95c8a585902", + "support" + ], + "bluetooth/script-tests/base_test_html.template": [ + "abe5c81d5d9be9b0c6069ba0a465ca3efc24b442", + "support" + ], + "bluetooth/script-tests/characteristic/characteristic-is-removed.js": [ + "7b7cd34d4c480e62fcde4667f50212cbae7f7b07", + "support" + ], + "bluetooth/script-tests/characteristic/descriptor-get-same-object.js": [ + "2664262ff94976691ab7811e7b342cfd40e11190", + "support" + ], + "bluetooth/script-tests/server/disconnect-called-before.js": [ + "3ea0ed09ee2197401437b4d89c335181b2983b17", + "support" + ], + "bluetooth/script-tests/server/disconnect-called-during-error.js": [ + "43089297c181c29f633ed9dc574313aac34d4ba3", + "support" + ], + "bluetooth/script-tests/server/disconnect-called-during-success.js": [ + "25835e2c53793ad800774de819b88939f12ebb82", + "support" + ], + "bluetooth/script-tests/server/disconnect-invalidates-objects.js": [ + "0d113b9ec03ccb4f971710b06156cabc1f97e471", + "support" + ], + "bluetooth/script-tests/server/disconnected-device.js": [ + "9b537f1e9d3b2416fcf27ff7c65c2a548693fc77", + "support" + ], + "bluetooth/script-tests/server/discovery-complete-no-permission-absent-service.js": [ + "bd9f91f6dc624574f616f62295b3dbede30fdc84", + "support" + ], + "bluetooth/script-tests/server/discovery-complete-service-not-found.js": [ + "3bd0c4c170efe30bfdbdbae30bfa6cf4563e5193", + "support" + ], + "bluetooth/script-tests/server/garbage-collection-ran-during-error.js": [ + "e25a59e154898a964822190021cd6bd6f7784df8", + "support" + ], + "bluetooth/script-tests/server/garbage-collection-ran-during-success.js": [ + "6bd2f4c2f0585ed078cef61b3867627bc0aeb682", + "support" + ], + "bluetooth/script-tests/server/get-different-service-after-reconnection.js": [ + "4b4c9fcadb0ae28becc1888ffc0c738a898f15a5", + "support" + ], + "bluetooth/script-tests/server/get-same-object.js": [ + "30382d56a15bb8b8a2825e265ddf00b489829151", + "support" + ], + "bluetooth/script-tests/server/invalid-service-name.js": [ + "0c2b3d759291d4e247df131f82daa2be847cb1d9", + "support" + ], + "bluetooth/script-tests/server/no-permission-absent-service.js": [ + "78388409359e9e5bc36b304865e6e14d30769e12", + "support" + ], + "bluetooth/script-tests/server/no-permission-for-any-service.js": [ + "f9230d7d66815561f575ba55409f2ca4fc0a67b8", + "support" + ], + "bluetooth/script-tests/server/no-permission-present-service.js": [ + "0f2e002be9842eb06f31f63de31c96fcd2820258", + "support" + ], + "bluetooth/script-tests/server/service-not-found.js": [ + "b18022b48d354825fa747abda81bc870142d9c59", "support" ], "bluetooth/server/connect/connection-succeeds.https.html": [ - "16fe2bccd7e8f8f626222cc49c1df70401463f3a", + "167880b07f855325a35a81a8ea833b0d006c7957", "testharness" ], "bluetooth/server/connect/garbage-collection-ran-during-success.https.html": [ - "ff136c9e9b463cb8c545a6f51433743347a50db6", + "9186c8cef9bc2e170175b811cfd85f69883b14ec", "testharness" ], "bluetooth/server/connect/get-same-gatt-server.https.html": [ - "8f7a9a177770c9a44ed5e6fe8f3833ef18a60c1d", + "39cf93a9afa8cf4d377ed3746f5184cb61967b0e", "testharness" ], "bluetooth/server/device-same-object.https.html": [ - "13abe70e2d5bf768007a2c6e4119ebfe086d38aa", + "642394343df7f8d4aa924c330b57f2d4e891c3d5", "testharness" ], "bluetooth/server/disconnect/connect-disconnect-twice.https.html": [ - "04b2728be0ed8044629828f015b0d4f78dab6031", + "0a815341854fb89ba140dc66546cad449d997b42", "testharness" ], "bluetooth/server/disconnect/detach-gc.https.html": [ - "8e9e10665b091c6a7817e1b7d058e48c12163dbd", + "a0df0f4983e44466705e57bfcbcde8fc74c504dc", "testharness" ], "bluetooth/server/disconnect/disconnect-twice-in-a-row.https.html": [ - "26efe3bc26f792baf0ff087d02730be62cc80f0b", + "06f821cc5fd28c776bbf2c2fc76ffdf80d66742d", "testharness" ], "bluetooth/server/disconnect/gc-detach.https.html": [ - "e673c3120276ffb6a4e8d03f47b049ff72ac0a9c", + "cba04d22660d31b5b9ad0d21b41f42d7761f5092", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html": [ + "d1f9a8a640ae96589e7406e6c296137a08c4ea01", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.html": [ + "7eb6d88b2ac33e3426144ba374bc2b6730be1b01", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.html": [ + "013b1adff7a583f2706943edef16219a4ef12a50", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.html": [ + "babca3978d09c505ba002c5790142f45c09409f0", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-disconnected-device.https.html": [ + "64579c81d08bf9753e4cdc319064b70d4e93c19d", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.html": [ + "ebb340c97a7dd41203889fb8514bce2202efa6b9", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.html": [ + "f2733d37d96e85581302f9cc65ea33fbd436c2f2", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.html": [ + "906d8a13230d427eb018b4bf65eb6800523c99bc", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.html": [ + "458c0b316c4e0bb06d0825dca372070d5961091e", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.html": [ + "cbd51c9175418a8c4bd031de3b2a2e4ef2ae7bb6", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-get-same-object.https.html": [ + "a064dd7e8fe4137f0a7a83967907b88766f6466f", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html": [ + "5728e27aba6861ddfc7cb4278b116ee9d94fbb7a", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html": [ + "ed7a5e4ab959f5d8b5e72154c68e397128c4d071", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html": [ + "86fab4a334c37e61ff9acbeafba071fd0aab5d30", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html": [ + "46717e75f676ff426773a79c4c01b2412b2c70ee", + "testharness" + ], + "bluetooth/server/getPrimaryService/gen-service-not-found.https.html": [ + "9169ed84f3502d5e3e675d5e0e317d0d895b4ca7", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html": [ + "ff1af939fa2b5b77523712a4281839349f00e43b", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html": [ + "b579d5e4ea1762930d2831b082fa6d92810e59c3", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.html": [ + "5bf7c1c17795a136624b149d1c63c423de21a22d", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.html": [ + "c9b596491a06833d6dca56cd0dc92895056ccb45", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.html": [ + "a2e353e4812795ee397320add5faf764b0fcd776", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.html": [ + "22dc609a8be624fad4aeae9b29a280fd2524f180", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.html": [ + "962c58b5ebf1ec9b7f8801e666d0fb593a75f4bd", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.html": [ + "7ed5669e52a931920ad1e622b916e3ef9738813b", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.html": [ + "c240a2232591d9dde3501d8bf7476660e44f75bd", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-disconnected-device.https.html": [ + "7bbf8a63ec4cf8b14e4cca6c34f92c861b73b78a", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.html": [ + "1c9ef6cbb708206b700a06b6d20441e7e4d08e3e", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.html": [ + "eed768bcd0f0b6cd0504a5e255176b53566cf50c", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.html": [ + "010e58796de1ddfa69a5861ed8f8361e0ff22338", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.html": [ + "a913ac938d4d0ae148f7165759e26aa9ad04f110", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.html": [ + "51fd1e4d6a25f7877c08d6415a8e5b5d4cab3bf2", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.html": [ + "1fdc6561901486f088f911cca14ec6ecf3d7ff98", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.html": [ + "eb6b10cb0f59a3eedeed6dd38ffd7d6bb5192dc8", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.html": [ + "159cf4869e074917cf01923fbdf41acab1bde40d", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.html": [ + "ad2f743b2dab04828ef996ce1912f9d03ddd9d36", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-get-same-object.https.html": [ + "62d689a2a97e3f5d2bb22040faf3725d750caae0", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html": [ + "878c93bcea918a0d008ab44552f7b26ff6f7a151", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html": [ + "f96b80beb4c79a2bda3cc06bc11d6aa5fb392ada", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html": [ + "96a195a1b25cf1985ccbc949431a28226f3ee684", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html": [ + "618cf409fffba7679abe515982695db4bb1a5f68", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html": [ + "3126e3b157670506442b0032de53e6d29e4c30f6", + "testharness" + ], + "bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.html": [ + "e9b4e0205d5d30589356aea481e469a746ee419a", "testharness" ], "bluetooth/service/getCharacteristic/characteristic-found.https.html": [ - "1861b9bde75f02ed8d7375b97946149ff1c4bf0a", + "53479f342ef4aab9a24aaaa4580a63b5e6bcd30b", "testharness" ], "bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html": [ - "be1a9c7d2cbc633430c07fd13006893dfc5b952b", + "cb0ff8a9913b54ef624a38d367d84b1656b2a536", "testharness" ], "bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.html": [ - "3f2cb4123c32d9866c44e3946ae9f54410b6cf7b", + "b0fe70ff6c0f473079469a21984baf59143d51e9", "testharness" ], "bluetooth/service/getCharacteristics/characteristics-found.https.html": [ - "06831d211fb838073c73ca8daa842a833232e01d", + "3012c0752b641e8c8de994fbdb13ff2d3f7ea559", "testharness" ], "bluetooth/service/getCharacteristics/characteristics-not-found.https.html": [ - "4b57c4ec7579f4a9e625fb6b8a7cda50678b8a41", + "694b69270065eb15a7129f9359a2b71d90ed9226", "testharness" ], "clear-site-data/navigation-insecure.html": [ @@ -407106,6 +410194,10 @@ "888d3e58d3d094b767067e16494803af432ee057", "testharness" ], + "content-security-policy/form-action/form-action-self-allowed-target-blank.html": [ + "1a4146819d11ae72ddfe1f1eb319aef992af7dda", + "testharness" + ], "content-security-policy/form-action/form-action-src-allowed.sub.html": [ "d0c2dcbb18201b72964f4da5f94b8c200fa02cad", "testharness" @@ -407690,6 +410782,26 @@ "cae24a6958eae450d1b21a47f4e13c407cac33be", "testharness" ], + "content-security-policy/prefetch-src/prefetch-allowed.html": [ + "8c88fefbffb6f5270b64cd8d81b405857a9c1123", + "testharness" + ], + "content-security-policy/prefetch-src/prefetch-blocked.html": [ + "0c228cef4140a4a9ca5e7704cf4356e13e8f844a", + "testharness" + ], + "content-security-policy/prefetch-src/prefetch-header-allowed.html": [ + "8b3e0d248e70c2d7587b0ff560f41a42b5bf92f4", + "testharness" + ], + "content-security-policy/prefetch-src/prefetch-header-allowed.html.headers": [ + "81464314b28226f895ba738b0496b66f60e43b91", + "support" + ], + "content-security-policy/prefetch-src/prefetch-header-blocked.html": [ + "55c94363465c252a3c24622a56020a8981e01f8e", + "testharness" + ], "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html": [ "7be3a72eb885841e8ccb674eeae3761f638adf2c", "testharness" @@ -408431,7 +411543,7 @@ "support" ], "content-security-policy/support/checkReport.sub.js": [ - "50b8b274a0a846ad527c2a369ba870def28e45e6", + "06b0c4f4a36a7bd4d323d1920a1a3e2caa9b52dc", "support" ], "content-security-policy/support/document-write-alert-fail.js": [ @@ -408506,12 +411618,28 @@ "5ccfe2ec548aa6e16649c319c8252e608777fe64", "support" ], + "content-security-policy/support/postmessage-pass-to-opener.html": [ + "52e8144873f4a3eb414e4aa029dff4b97ea1f3d6", + "support" + ], "content-security-policy/support/postmessage-pass.html": [ "ddfde964afded9ff5189c8c7554bcb2b1b1e5938", "support" ], + "content-security-policy/support/prefetch-helper.js": [ + "d64724d09dbd36c15c3cd097c1d1e65a44cfbf2a", + "support" + ], + "content-security-policy/support/prefetch-subresource.css": [ + "e89eb14c8cee8b2c8711a5db7bd3fe3849ba136c", + "support" + ], + "content-security-policy/support/prefetch-subresource.css.headers": [ + "f5821ebb091ec8effe575972e0ec086238b7beee", + "support" + ], "content-security-policy/support/report.py": [ - "8cd779a8017cba678a565475271b892e8ed53e58", + "1ad83e152ddc0e2e840862ba6ffc81d73f969725", "support" ], "content-security-policy/support/resource.py": [ @@ -446979,52 +450107,56 @@ "reftest" ], "css/CSS2/selectors/class-selector-001.xht": [ - "5648918099b8bb652d02b24475778f6c42747cca", + "f782cf42934491f229730c448f44c6bfe4fd25d0", "reftest" ], "css/CSS2/selectors/class-selector-002.xht": [ - "bf8e4920df3d0a43f5ec89c749234ef7c53e95a3", + "0847589d090e549aa9cb1353fb093ff9aac28334", "reftest" ], "css/CSS2/selectors/class-selector-003.xht": [ - "43ef23aec5bc549e172ae9ef7b48a43219618923", + "2e34022ef08f771c1d1da65e37b33745cc8bb285", "reftest" ], "css/CSS2/selectors/class-selector-004.xht": [ - "ac7dc5bb4e81a2f4cfe6e68c313eb3ed5481b4a6", + "1d6a32197d70f39d08afd1eebe34eff0c0564ddc", "reftest" ], "css/CSS2/selectors/class-selector-005.xht": [ - "3de44a047f43b471e90ed81fe5341dd4869923fa", + "31779ddbe67569ce616694ec32984f628e2fda4f", "reftest" ], "css/CSS2/selectors/class-selector-006.xht": [ - "2faa55faa4a6ef02f7f70ad691d4e122a245cb18", + "ad253e995f900cfa227bd5c60fc887a73a61b3d3", "reftest" ], "css/CSS2/selectors/class-selector-007.xht": [ - "0d2836c5d5cc65ef88865bac69a9935f82418d03", + "843e53a7f82dc6fae88bf491869256eef835742d", "reftest" ], "css/CSS2/selectors/class-selector-008.xht": [ - "428d5b4bcdfc689675e49b0a17795c2eca4da57e", + "a4eb1a6043f89e6dde3b6533a4b0fc23b6d83e6b", "reftest" ], "css/CSS2/selectors/class-selector-009.xht": [ - "6c422bc9f62331610cf53d2a309fbb4e24feea2d", - "visual" + "d1169fd2567d73afa2fb5e82823367849b34b685", + "reftest" ], "css/CSS2/selectors/class-selector-010.xht": [ - "e96a88870884d00155bf3a25f89982c86a068429", - "visual" + "0b95a99da54820d1686a68ab4c5b24b29e300f07", + "reftest" ], "css/CSS2/selectors/class-selector-011.xht": [ - "1a82978e5bd525e211e1885471264f9763530b74", - "visual" + "483a463cd02fdfc4fa1c13d465394804850962c5", + "reftest" + ], + "css/CSS2/selectors/class-selector-012-ref.html": [ + "d13cdb06ce469f4d9415baa7bf73ce49be781fc7", + "support" ], "css/CSS2/selectors/class-selector-012.xht": [ - "6321e3da4d9d19849566a30d82c03d5e5a3c8058", - "visual" + "1a2657f6a85ac5b36214d6017d95c706271c6419", + "reftest" ], "css/CSS2/selectors/combinator-001.xht": [ "1fe5f1760fc25f31656459b8112907295696988f", @@ -447142,17 +450274,25 @@ "9dbdc9af0cc734ba71d24babefc27789ff2dbfdb", "reftest" ], + "css/CSS2/selectors/first-child-selector-001-ref.html": [ + "6106c458659377bc6d1540b33bd13f92cd4e7859", + "support" + ], "css/CSS2/selectors/first-child-selector-001.xht": [ - "f0c0419341b9f2f2677bef20c864d63ca3d19f06", - "visual" + "73e0e50f7abc3b4016dac296b8efa80d132a195d", + "reftest" + ], + "css/CSS2/selectors/first-child-selector-002-ref.html": [ + "fb0430966695bc0004d8ce980f9c5a588ab4bc65", + "support" ], "css/CSS2/selectors/first-child-selector-002.xht": [ - "e8695799372216306711c0dd3f69e16e13e4c94d", - "visual" + "a5d4c1c651bec9fcc9b3f182050d8e4fd44a2067", + "reftest" ], "css/CSS2/selectors/first-child-selector-003.xht": [ - "d4f74f7eb20614c277950bb95741000116b2e048", - "visual" + "89d82c26002157c9bce5059480d360efcf3f6e76", + "reftest" ], "css/CSS2/selectors/first-letter-001-ref.xht": [ "a374dbdf5e818f625b3b24690ac52e2443edd330", @@ -450506,41 +453646,65 @@ "7887d7447a6e83fa4a5cf62291b2550963fd09cd", "reftest" ], + "css/CSS2/selectors/first-letter-selector-000-ref.html": [ + "41c6e1a118791457c4fa366e64236079a676d0e2", + "support" + ], "css/CSS2/selectors/first-letter-selector-000.xht": [ - "dde783ae8f5bad85a98aa2d0bba101c48d2c0403", - "visual" + "354f7772a494e4f83e0ff346ef6c63e9a9cfd2aa", + "reftest" + ], + "css/CSS2/selectors/first-letter-selector-001-ref.html": [ + "df974758e92b5745dc487c5a30901057848b79d7", + "support" ], "css/CSS2/selectors/first-letter-selector-001.xht": [ - "dddd83cf893fe823c11dbce07f81ca8a98cad61b", - "visual" + "8987f8880b711803af4deaac69c92d57afae2659", + "reftest" + ], + "css/CSS2/selectors/first-letter-selector-002-ref.html": [ + "7bb98994faf5d24bd7b4abe1f7e13d4a9d473b5a", + "support" ], "css/CSS2/selectors/first-letter-selector-002.xht": [ - "5e68f979ae695e92f5135a6b0cae0bfc4d784567", - "visual" + "74c5c78870d8a776067e35c6542e64523b7685c0", + "reftest" + ], + "css/CSS2/selectors/first-letter-selector-003-ref.html": [ + "addc58522c98706146deffc112a95be2b46992cf", + "support" ], "css/CSS2/selectors/first-letter-selector-003.xht": [ - "fcfa7cf2aeb2926f568e4cc7732ad9e7d2998d8b", - "visual" + "3417822d446e4d1e17a18b5041c44757b4cec7f8", + "reftest" ], "css/CSS2/selectors/first-letter-selector-004.xht": [ - "faa17b3bfdcdbe249f70e47b5a338ce6036d712e", - "visual" + "039d40f7b40087f4358ccca683fb178814a0dd99", + "reftest" + ], + "css/CSS2/selectors/first-letter-selector-005-ref.html": [ + "d6c181a3a7bbf713c83ff4884d95e2da392cfbd0", + "support" ], "css/CSS2/selectors/first-letter-selector-005.xht": [ - "403795228552dabcd7b74654fa8ab0a39aebe1e9", - "visual" + "0bb54184e7895cd38b8b4f35336b0b7f0fec0a84", + "reftest" ], "css/CSS2/selectors/first-letter-selector-006.xht": [ "bfd35783aee6b60dbe8c51a6359acc49a511b881", "visual" ], + "css/CSS2/selectors/first-letter-selector-007-ref.html": [ + "df406bb15f44fd0b5a976911c951a520dd03c6f2", + "support" + ], "css/CSS2/selectors/first-letter-selector-007.xht": [ - "6cfa147b1579217d5039526a1394fed7526d5385", - "visual" + "b3f74216dc8510efaebd0a6614b5d25a7de3e901", + "reftest" ], "css/CSS2/selectors/first-letter-selector-008.xht": [ - "fd859cc37299e2b805f2ef686131b055cbc38e91", - "visual" + "834b8447d99c8d7dec2a0be801121d5b1f263d0c", + "reftest" ], "css/CSS2/selectors/first-letter-selector-009.xht": [ "21656d6c13cef9d55e67e254577120c1f8375a98", @@ -450583,8 +453747,8 @@ "visual" ], "css/CSS2/selectors/first-letter-selector-019.xht": [ - "2b718ea24e68c7e83706961ef62f3b112dd1dd2a", - "visual" + "9da2d6dd4cfe451b00471ad6380edc7549b50407", + "reftest" ], "css/CSS2/selectors/first-letter-selector-020.xht": [ "86e79eacf0e5a2ed4cd7266200583208412f88bc", @@ -450747,7 +453911,7 @@ "reftest" ], "css/CSS2/selectors/first-line-pseudo-017.xht": [ - "21853a26f2632750f953c4089896e5b63e332f82", + "3cdb96056d0565ee1dd083e380176e02515d651b", "visual" ], "css/CSS2/selectors/first-line-pseudo-018.xht": [ @@ -450755,16 +453919,16 @@ "reftest" ], "css/CSS2/selectors/first-line-pseudo-019.xht": [ - "8c8b6c3ebd182d2e3f8b3706694681f6f4684844", - "visual" + "c7653bfb7b9bc546f041f64dd20c6021dfc39e9d", + "reftest" ], "css/CSS2/selectors/first-line-pseudo-020.xht": [ - "a11b4a2cbcd2f91ad8afe3f7dda40d35e69ac60d", - "visual" + "b51d47dc42a15b868d1a3ae3d2834515b8f2d85a", + "reftest" ], "css/CSS2/selectors/first-line-pseudo-021.xht": [ - "cc5386cda420799feab17dab36ba996646d81d82", - "visual" + "af4f8bd5e6574cd622eecb56dd5945d15bdf57a1", + "reftest" ], "css/CSS2/selectors/first-line-pseudo-README": [ "d135c53808c7b08a60dd28484545e37c7c2050a9", @@ -450803,8 +453967,8 @@ "visual" ], "css/CSS2/selectors/first-line-selector-010.xht": [ - "d6467bf0235b2ee9b183930125344f69aa37d00e", - "visual" + "3601bf26d3674ce0407a1c369823bc677a6c9886", + "reftest" ], "css/CSS2/selectors/first-line-selector-011.xht": [ "5580babec217ff169ab34fb93c6ef579165eed98", @@ -450883,8 +454047,8 @@ "reftest" ], "css/CSS2/selectors/id-selector-002.xht": [ - "680910791cac641da5e1cad7c54d3c92036166ec", - "visual" + "97d323171ef3a0c571b6800c9db3d119cfab1506", + "reftest" ], "css/CSS2/selectors/id-selector-004.xht": [ "49082e851cfe003e8e501c5a51c76f88a0b14e1e", @@ -450914,21 +454078,25 @@ "b60d14eb9f201effc13b77446cd402322b8c51d2", "reftest" ], + "css/CSS2/selectors/lang-selector-004-ref.html": [ + "2f01fcfb8e87774c8862e0f69eadcd8002ff6834", + "support" + ], "css/CSS2/selectors/lang-selector-004.xht": [ - "5dd95963da95ae8ec1ede71f317f0fb062bc98b0", - "visual" + "4c288f74876a197f8e1942f9204e84264f5a391f", + "reftest" ], "css/CSS2/selectors/lang-selector-005.xht": [ - "131ec3a98ac25150fada2724c87ce463297eb682", - "visual" + "4ba7c718773b17a6b64b8b4464eea855622184c1", + "reftest" ], "css/CSS2/selectors/lang-selector-005.xht.headers": [ "9d32780bb7dcc87f872222e49ca4aed4b437f5f4", "support" ], "css/CSS2/selectors/lang-selector-006.xht": [ - "80553c10655b0efa5c1d2bceffcace36e27a70e2", - "visual" + "1e374a6c24b7c2c398ebb296c2e502103d81ed29", + "reftest" ], "css/CSS2/selectors/link-visited-selector-001.xht": [ "f26ff1d0a8e15ac910bfa3e6e056e9804c4e125e", @@ -450967,16 +454135,20 @@ "manual" ], "css/CSS2/selectors/pseudo-006.xht": [ - "b5cd0c152a5ae4f5668523c7b6090cc772bc08ba", - "visual" + "714289f41e5984c9aebe059ebd502020064329d0", + "reftest" ], "css/CSS2/selectors/pseudo-007.xht": [ - "a45c61157960ee0068a2976d769ce869a1d1d5f7", - "visual" + "644d39c5e4c8a0d3acadcf4e247edd3d40bcb9bb", + "reftest" + ], + "css/CSS2/selectors/pseudo-008-ref.html": [ + "e03231cfc884e858dd3bde9a7750cc9c4ba6e261", + "support" ], "css/CSS2/selectors/pseudo-008.xht": [ - "e7f76c8ff2cbc3784f3d54e4779166a80daf063f", - "visual" + "a4aea999241a8822f383da0216445889acb9a146", + "reftest" ], "css/CSS2/selectors/pseudo-009.xht": [ "f4a15140bd17de62eccdc2d4bb1e55885f878077", @@ -451515,15 +454687,15 @@ "reftest" ], "css/CSS2/syntax/at-charset-004.xht": [ - "abf22e6c2cb3a62a8cf0a769433944fe767645d6", + "4be54f24add87fa928e2a626b01bb386834464ef", "reftest" ], "css/CSS2/syntax/at-charset-005.xht": [ - "50e0b983c5b9da991749aca73b813f88ed66cecc", + "0d8fc695d9eec9ce8e7a2eca8a181781c4b8d5e2", "reftest" ], "css/CSS2/syntax/at-charset-006.xht": [ - "91255df72b78144f58619440c084c81f34096602", + "ccb61b4f7657b866fc73096c3d03edbd39a114a6", "reftest" ], "css/CSS2/syntax/at-charset-007.xht": [ @@ -452115,7 +455287,7 @@ "reftest" ], "css/CSS2/syntax/comments-005.xht": [ - "68cac0bb97b4d05b56fae95131ead1723f303418", + "43df4d6db913c7044fd14f99235ed263a19894e5", "reftest" ], "css/CSS2/syntax/comments-006.xht": [ @@ -452475,7 +455647,7 @@ "support" ], "css/CSS2/syntax/ident-003.xht": [ - "c60d9157d642240dba18739f3304b86a9acb0a09", + "5e1b8bfc9103962c40180bf61e72f0fab9568c8d", "reftest" ], "css/CSS2/syntax/ident-004.xht": [ @@ -452546,10 +455718,6 @@ "52344643762a293f247235ca1860a3d82b134009", "reftest" ], - "css/CSS2/syntax/ident-020.xht": [ - "dbc6a7c3921e6b50bc0a839ad5ba5c792cc70700", - "reftest" - ], "css/CSS2/syntax/ignored-rules-001.xht": [ "07506eee3478a63ee68550c2d9a4305b49c3cbed", "reftest" @@ -452754,10 +455922,6 @@ "c51a03a807743f59e3027371ccfbd8e80235a485", "support" ], - "css/CSS2/syntax/support/.htaccess": [ - "7f6c0bd932e4c213e919689e54d80a3035151ee0", - "support" - ], "css/CSS2/syntax/support/1x1-green.png": [ "51e7b6974a09eda6cb31337717c5eaeb9c44b443", "support" @@ -452802,24 +455966,24 @@ "bf760baf57311ad536ba734f29e7e89bf7b26131", "support" ], - "css/CSS2/syntax/support/at-charset-002.css": [ - "076ea5f1245eadb58678b486b40dec79ebbe7d15", + "css/CSS2/syntax/support/at-charset-001.css.headers": [ + "8c0fa1a7ffc1f2a3a7d3b97d8080a8fa6ed43509", "support" ], - "css/CSS2/syntax/support/at-charset-003.css": [ - "a0fb89bd89da4327c1f4e0b84f76b6e598b556da", + "css/CSS2/syntax/support/at-charset-002.css": [ + "076ea5f1245eadb58678b486b40dec79ebbe7d15", "support" ], - "css/CSS2/syntax/support/at-charset-004.css": [ - "a0fb89bd89da4327c1f4e0b84f76b6e598b556da", + "css/CSS2/syntax/support/at-charset-002.css.headers": [ + "8c0fa1a7ffc1f2a3a7d3b97d8080a8fa6ed43509", "support" ], - "css/CSS2/syntax/support/at-charset-005.css": [ + "css/CSS2/syntax/support/at-charset-003.css": [ "a0fb89bd89da4327c1f4e0b84f76b6e598b556da", "support" ], - "css/CSS2/syntax/support/at-charset-006.css": [ - "a0fb89bd89da4327c1f4e0b84f76b6e598b556da", + "css/CSS2/syntax/support/at-charset-003.css.headers": [ + "8c0fa1a7ffc1f2a3a7d3b97d8080a8fa6ed43509", "support" ], "css/CSS2/syntax/support/at-charset-007.css": [ @@ -453270,6 +456434,10 @@ "250e49627027fb261bc023cad47a0ba5bdfcf188", "support" ], + "css/CSS2/syntax/support/plaintext.css.headers": [ + "4abca84cbd566bb501053408ca983b17b5eae889", + "support" + ], "css/CSS2/syntax/support/ring.png": [ "11dd9e78a68b2fc5eb69c401920b43070751a569", "support" @@ -455518,69 +458686,93 @@ "4c8d8123470efe103c3041d1b07a9f4cc9fde6f1", "visual" ], + "css/CSS2/tables/caption-side-applies-to-001-ref.html": [ + "c7c39e671a33b41746184d0754f3f191b4c6d309", + "support" + ], "css/CSS2/tables/caption-side-applies-to-001.xht": [ - "a33828fb6ef755cbd122adf8c36924297367a18e", - "visual" + "8cfb1967c9f9f00ffc1ad0e4487ccc4f3d4d1eed", + "reftest" + ], + "css/CSS2/tables/caption-side-applies-to-002-ref.html": [ + "9dc6fee0ede5482fc998e2b97795442853ed19a8", + "support" ], "css/CSS2/tables/caption-side-applies-to-002.xht": [ - "60a1856140f8fa5cda9da3e00d26ac7965d3d049", - "visual" + "a567cb5206e2927fcdf84074c4ab01066a26ee44", + "reftest" + ], + "css/CSS2/tables/caption-side-applies-to-003-ref.html": [ + "31ba9c2a4e8006a3e056a0f1afb8575f925568cc", + "support" ], "css/CSS2/tables/caption-side-applies-to-003.xht": [ - "c760b23d4d23bacc858484f7281901b788f4eb46", - "visual" + "e38f584d9f50b6c63b5aba96d23985e4835361be", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-005.xht": [ - "5e4431bc587669fba72de3f6edebe61686a6ef88", - "visual" + "83204fa51853aa755b7b2a0281e013d66712f290", + "reftest" + ], + "css/CSS2/tables/caption-side-applies-to-006-ref.html": [ + "5c2277f81ef8b2ddf6bc7bd7c672a71e3eb8e198", + "support" ], "css/CSS2/tables/caption-side-applies-to-006.xht": [ - "841a1d7586697e71d86899a77195db78f9a4400d", - "visual" + "b7b930de8476845990e91763af72a02d7d2e5f1f", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-007.xht": [ - "d8a78135f717b130139affde9a9f0b25c0d7d499", - "visual" + "0afcb39831c07ae9f2a2a7042fc9c1028d508a05", + "reftest" + ], + "css/CSS2/tables/caption-side-applies-to-008-ref.html": [ + "fc5b655d43de07bf86f77884d3f53378ad487d77", + "support" ], "css/CSS2/tables/caption-side-applies-to-008.xht": [ - "1b76e5c2f19ead45b1fb99cd69e79099b371e0f0", - "visual" + "285b2351f9d1dc3abfbea064e9cae7fd7ecf9147", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-009.xht": [ - "7cfabbf9a7e8619d49c079c9b7bf1cebf880705e", - "visual" + "c738519e99fe530224c794525dfa95d7ab324716", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-010.xht": [ - "92c3634c8b2a29dec357b324e358cdc024d2f4a5", - "visual" + "ac4615f06a1b4b3659a9893893fdb7d6b2ed82df", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-011.xht": [ - "789d8b815d7c8cb1627e141c5032a90fc40191cf", - "visual" + "5628655fd66d4975060558e1748b0f3e4b778e42", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-012.xht": [ - "06dbab8a12fbd4b2049f2676eee948842a34970b", - "visual" + "5d0d8a6a96ea0ecd4cb1534f48562cd6f9b6e3d7", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-013.xht": [ - "6c2ce04226c1bb6d8b187716ea1df86d9a89d569", - "visual" + "5c420a560262f1f64713fa6890a4f6ca3661bfe8", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-014.xht": [ - "983fd4da6c9eadabe93420bb049e552006d5ef52", - "visual" + "9d756193fe6044cc0af10988ee8018200b1f6d6a", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-015.xht": [ - "18f6665adbaf40ac0c8b09ab39da281dc438d3f7", - "visual" + "a11fcd0eced488fe19af503cd67c39e3cf4a6295", + "reftest" ], "css/CSS2/tables/caption-side-applies-to-016.xht": [ "6852ac3b59e6a26fbe9670378986b1c7a28e9df2", "reftest" ], + "css/CSS2/tables/caption-side-applies-to-017-ref.html": [ + "6ac039c92d9dca1c5589e6043cf3d8664436823c", + "support" + ], "css/CSS2/tables/caption-side-applies-to-017.xht": [ - "2cb060bbacb37e1b8a30894c76a878f0eac7b61d", - "visual" + "b6b5c2fa8a4d21840ae52a9c1f5f62378c303993", + "reftest" ], "css/CSS2/tables/caption-side-example-001.xht": [ "79311fa5fe281463fba7038c3a22f635a6d511a1", @@ -455602,21 +458794,29 @@ "45732277d51f78c96aaccb811a8d0b80b63bbf20", "visual" ], + "css/CSS2/tables/collapsing-border-model-001-ref.html": [ + "307324990ad6d9ca2381fe54aae8b3a9a4ba84af", + "support" + ], "css/CSS2/tables/collapsing-border-model-001.xht": [ - "3cdcfc78858fa0beb9fe6ef00d4261d821f1dd48", - "visual" + "aebaa741e96a58b885f4e3c37df77d8c1ed1bac7", + "reftest" ], "css/CSS2/tables/collapsing-border-model-002.xht": [ "90f06ee14259e475b5a644acbd31f8e6b52d8255", "visual" ], + "css/CSS2/tables/collapsing-border-model-003-ref.html": [ + "a3800cdbf2321ea23fee866753c96e401386560f", + "support" + ], "css/CSS2/tables/collapsing-border-model-003.xht": [ - "a14eb152cfd413fbfae9693111bd4b36dd0ac8aa", - "visual" + "5567414471f502b550d4c81bfb7b521d154359a3", + "reftest" ], "css/CSS2/tables/collapsing-border-model-004.xht": [ - "5668da0f3f1115b41b9747dbb8dd95640f315e4a", - "visual" + "5942b3adbbb03cc2e3060e0baf13f6853bcc9d34", + "reftest" ], "css/CSS2/tables/collapsing-border-model-005.xht": [ "97306577aad589918d1b1febb83a609300ad3f18", @@ -455627,16 +458827,16 @@ "visual" ], "css/CSS2/tables/collapsing-border-model-007.xht": [ - "137fa735c948f369e502c20ec762df7a430e3f72", - "visual" + "e38919cd16785ab2448678b3c25d20a104dcb6cb", + "reftest" ], "css/CSS2/tables/collapsing-border-model-008.xht": [ - "571db2a677a174e10e668821c7c10ca102ff6d51", - "visual" + "4a7575c04bde514dcf0c98795a1d9ec68617a810", + "reftest" ], "css/CSS2/tables/collapsing-border-model-009.xht": [ - "d08d7959e15c817dca83f4bf85acfad643861d8b", - "visual" + "eca3fb31b72cfcbc79d74a54be207afafcf2d57d", + "reftest" ], "css/CSS2/tables/collapsing-border-model-010a.xht": [ "e439734ebbe198bbf77066db3275a58b1be686b3", @@ -456519,12 +459719,12 @@ "support" ], "css/CSS2/tables/row-visibility-001.xht": [ - "5f8962c6026581ddd659cb96617f79330ccae7ed", - "visual" + "bf888162e2f031ba7fc148fa2620866edf024f15", + "reftest" ], "css/CSS2/tables/row-visibility-002.xht": [ - "2496e438c6d776a3b8332bfc911f14d00aac53de", - "visual" + "ce966c71fd29af94b2bab86c2a9faf8f2d630201", + "reftest" ], "css/CSS2/tables/row-visibility-003.xht": [ "14f51e20306bcb7f01872f91f808cee5abe834b1", @@ -457863,8 +461063,8 @@ "visual" ], "css/CSS2/tables/table-cell-001.xht": [ - "55b32dcd32789ee78a131f5a8db78b5c7faeb807", - "visual" + "4c60202579bc55ba74b03219d6fd6ebf92c9ed3d", + "reftest" ], "css/CSS2/tables/table-cell-002.xht": [ "21ecd5040224235a46864e54acc2f70627672bd1", @@ -473002,6 +476202,18 @@ "056b3597f3555c803c74a8f6277a06626efd12ea", "reftest" ], + "css/css-content/element-replacement-ref.html": [ + "f1ad3fca133b1b671e45ae1307fbe9454c40e3ec", + "support" + ], + "css/css-content/element-replacement.html": [ + "f491ddf2b3062ea2f9b616c968c88b9cc95f22eb", + "reftest" + ], + "css/css-content/resources/rect.svg": [ + "e0c37ea653aee58f962133219edc4484a734c6e0", + "support" + ], "css/css-counter-styles/OWNERS": [ "820cad495f069d1badb3a727b9a2514269c6008e", "support" @@ -473926,6 +477138,10 @@ "073573175b4ef24f0ba26ae7456e161f775a7d40", "reftest" ], + "css/css-display/display-contents-text-inherit-002.html": [ + "4ab5c9c2b6c5a0c5e148e550ef16662e6b3575b0", + "reftest" + ], "css/css-display/display-contents-text-inherit-ref.html": [ "b248e78a0255b923c4ed4aa269e65f53b6386bf4", "support" @@ -478551,19 +481767,19 @@ "reftest" ], "css/css-fonts/font-variant-alternates-01-ref.html": [ - "fee60b0c399502744f3188df83c86f19d3fc6efc", + "2d7df070714d9efa07d70e434666ff4f780b55be", "support" ], "css/css-fonts/font-variant-alternates-01.html": [ - "e2360e9b1465384a6f29476838508af3b6ec71ab", + "445ff998bf052c1f04ab8e33002eedf391cb835d", "reftest" ], "css/css-fonts/font-variant-alternates-02-ref.html": [ - "7c8dd8a6f9a3d42fe04a90bef6c843351793539e", + "712b40e7dae774153502defd5206d4da8d592ccc", "support" ], "css/css-fonts/font-variant-alternates-02.html": [ - "7dce91351ff56b97ce966b102f6f00d0574fb63a", + "e9d74f02812d6b947fd88ffe91838cdae65df4cb", "reftest" ], "css/css-fonts/font-variant-alternates-03-ref.html": [ @@ -478571,7 +481787,7 @@ "support" ], "css/css-fonts/font-variant-alternates-03.html": [ - "a26b895506ba1d3f29b2343bb635867bc099f386", + "e4ab952f4a9c5f5421b3237f589c08c8f6c04509", "reftest" ], "css/css-fonts/font-variant-alternates-04-ref.html": [ @@ -478579,15 +481795,15 @@ "support" ], "css/css-fonts/font-variant-alternates-04.html": [ - "157455c29dc696127ce5c3b45b581c5bd03b6909", + "09306fe9ff6d99d7226811c84702fe451b680e0a", "reftest" ], "css/css-fonts/font-variant-alternates-05-ref.html": [ - "9a2081e861f551b8b22ede7686ea8e6636f8e579", + "d426d7ac09177d75146fbb04cf13e4b2e7c6326a", "support" ], "css/css-fonts/font-variant-alternates-05.html": [ - "3c86787c1e81bc8db802428f5522bc7b5f15b8f9", + "a40b09abdd8a3f31100184f9f13b1c65d93d6abc", "reftest" ], "css/css-fonts/font-variant-alternates-06-ref.html": [ @@ -478595,7 +481811,7 @@ "support" ], "css/css-fonts/font-variant-alternates-06.html": [ - "ae40f2db209b804d7589ef03b69557e71995b9ae", + "eb87b2a0af758871cc856a9ec2aa4e976716c293", "reftest" ], "css/css-fonts/font-variant-alternates-07-ref.html": [ @@ -478603,7 +481819,7 @@ "support" ], "css/css-fonts/font-variant-alternates-07.html": [ - "8b44a336d7f7f6b69e401c86733e978b2bb52cfc", + "caf337f548657c4e188aa477ccec4b8149d092bf", "reftest" ], "css/css-fonts/font-variant-alternates-08-ref.html": [ @@ -478611,7 +481827,7 @@ "support" ], "css/css-fonts/font-variant-alternates-08.html": [ - "e67a8cc7e4b3de219f3862329f8b916fac7e8b90", + "f9fc6c2252064c94ba3e6120b3646faa0bb590f7", "reftest" ], "css/css-fonts/font-variant-alternates-09-ref.html": [ @@ -478619,7 +481835,7 @@ "support" ], "css/css-fonts/font-variant-alternates-09.html": [ - "5c00521c873d41c049acf23a9b8fa178def49636", + "75768372f5747e12bf569e40c1474f3341479552", "reftest" ], "css/css-fonts/font-variant-alternates-10-ref.html": [ @@ -478627,7 +481843,7 @@ "support" ], "css/css-fonts/font-variant-alternates-10.html": [ - "0cd86b6749badec6551407c069b211f262e8aec1", + "36ec29992f8a3de6a3679c8b89410c7c4fef6e41", "reftest" ], "css/css-fonts/font-variant-alternates-11-ref.html": [ @@ -478635,7 +481851,7 @@ "support" ], "css/css-fonts/font-variant-alternates-11.html": [ - "7d926b680fef01676946fb6dc16511f8a3cc1b6b", + "70b0db84986c8f982d0cc5fe08d997f7757924bc", "reftest" ], "css/css-fonts/font-variant-alternates-12-ref.html": [ @@ -478643,7 +481859,7 @@ "support" ], "css/css-fonts/font-variant-alternates-12.html": [ - "f180da31bb437d71b81fa2fe91a7ba46ee8f3060", + "c173b400c5c247aa13d400efe7a0b7d0440a498c", "reftest" ], "css/css-fonts/font-variant-alternates-13-ref.html": [ @@ -478651,7 +481867,7 @@ "support" ], "css/css-fonts/font-variant-alternates-13.html": [ - "cc84ecb5ca83bba5b95d6fab9761edd3985f297e", + "47ed224bd5c03bd2610521defe634776d25ae27f", "reftest" ], "css/css-fonts/font-variant-alternates-14-ref.html": [ @@ -478659,7 +481875,7 @@ "support" ], "css/css-fonts/font-variant-alternates-14.html": [ - "2f76c2d8eea0fa73be08ec1baf09c8603c410c0a", + "e5d952170c8e4e4ee507550f20e06f4f02358aa7", "reftest" ], "css/css-fonts/font-variant-alternates-15-ref.html": [ @@ -478667,7 +481883,7 @@ "support" ], "css/css-fonts/font-variant-alternates-15.html": [ - "b52acb2a3c7ea8b3a94efd4fec55651c76b63531", + "9ff98fb9ba0a0d8f7dd7eeba46f9fff0cded50d5", "reftest" ], "css/css-fonts/font-variant-alternates-16-ref.html": [ @@ -478675,7 +481891,7 @@ "support" ], "css/css-fonts/font-variant-alternates-16.html": [ - "37b2e733219908a78b72d5ccec71e3fd82d60d6e", + "438440aa6dcc401f66d6c9f271221b377e08f12f", "reftest" ], "css/css-fonts/font-variant-alternates-17-ref.html": [ @@ -478683,7 +481899,7 @@ "support" ], "css/css-fonts/font-variant-alternates-17.html": [ - "b42d28fb6df88c1f955080fedf7c60298c4caa64", + "9c7b3567045c4bce12d693df687120534e066c56", "reftest" ], "css/css-fonts/font-variant-alternates-18-ref.html": [ @@ -478691,7 +481907,7 @@ "support" ], "css/css-fonts/font-variant-alternates-18.html": [ - "de45acb63b567c5318b014ebab07098ca8c317b6", + "b85b14eaf76f9c1b89a015b8a5aea9382f61e332", "reftest" ], "css/css-fonts/font-variant-alternates-parsing.html": [ @@ -485747,147 +488963,147 @@ "reftest" ], "css/css-grid/alignment/grid-alignment-implies-size-change-001.html": [ - "4d7695956abc3d5589e22ae6e2a8fb687a631698", + "6a98b19084f09099a83cd1e150dcc99e58967596", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-002.html": [ - "126a23ef4ad9fafe013f423de81ecad914dfc354", + "de9c39a8cf8a34cf3fabcc54250fce96f0da97f2", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-003.html": [ - "322cd468bd9e554b7152549b6a59f577ddc1f522", + "f900fe7f668b23d0263b8f6c0c75aa7e3cbd94db", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-004.html": [ - "5270072349ede83f9c4819d897205fdb0561675a", + "9bd03a88898d05c43c37746b14faeba4ec76fee1", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-005.html": [ - "9175d7ba9eab2525278bccc19ce67580629e1394", + "0cccd51996f9802335781decffff868a4952f7b1", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-006.html": [ - "a0b444c6bc8050b957fcf2dc0f01e9d9a2745b7f", + "eb27b625fe24bfa2c82782f135c5003b7626f55b", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-007.html": [ - "1a7924d186eaf96c34ef327b53eaad9dc232e59a", + "4ece5545866128327b8b5d4dd9375c65cab6def5", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-008.html": [ - "dc9642f2940dbd5cfd063c6618f3e582bf6f13b2", + "80962fbd4435119db662903b0a201286e9bf91cf", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-009.html": [ - "2b911d9a088e2498916f71d3fae6690ec9e7ae30", + "384f6b6b006da58c897b896c4f474b90e6dade1e", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-010.html": [ - "26a41689f987213e209f2e7a334d546c47c8120b", + "cc2954da9e8a924770e0802c132a8d5d05ff6a67", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-011.html": [ - "1039c62b02bf29117616070d7c69fa702be2a0d4", + "e1befaf27f4defef626b8c423f3a82f661160655", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-012.html": [ - "2f2f560cead46e8d4dc6a0199f34cbecd94a2545", + "84eb6de9bb892de373129df60f10bdf0cf9b59d8", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-013.html": [ - "24268a6bd064461d595f27fd19449e667767a153", + "f527bc3b0669b048268a8c59274150f3adeabd01", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-014.html": [ - "56936df344200f196bfad7149b04269b307c89e5", + "eee651407a75b74ba32d60312a347bef95a6501f", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-015.html": [ - "c0579a49665ae2b8125dfeb5d7bd1514cab24bbf", + "cccb3afaab2bb61b26229a5bb5713348c9d4a519", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-016.html": [ - "2aaf17aa7217d6eea98a6f39cc5f22676ff83514", + "661f7bbd9c211bb29f14bf9124676e40e44d21cd", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-017.html": [ - "bf62dfb709848b87734a19c033a4c74e9c868aff", + "c5aeba430655c90997b790b922ba7aaed087211b", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-018.html": [ - "2e7bb50061ee0af312a3249df5ff05313f61c80e", + "89abc2805c57b1c79b65288efbf82fb9f98fc31a", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-019.html": [ - "ed2833b2bd7b74425a7daa3f0f58394286dd1110", + "dd94f62a1bcf515c8667466ef2a4680089c9bef5", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-020.html": [ - "ae305d831dd2b461bfd8f2ca47c5e5d1d302485f", + "5e04f379860ecd2b7c6870d10444e0e022d30b9d", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-021.html": [ - "f649e11557664937aeb2a465d00563642afb7884", + "a3f885dd5ac3a87bf272d17fc996c9aba32e175a", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-022.html": [ - "d2e1f4a999a7377421ea4b9e8cb4b4ae5e320bbd", + "7b64b2643498ea16f3718f1f85de0c59374fed47", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-023.html": [ - "a223e17741b3a0ef6cd22e54466fc02fb4b77b8e", + "2cac611759cb41fe10ef080b459a23b93bfeb5d9", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-024.html": [ - "d5c7d56e74ab8f6b6986e272ef998dd0212abcc9", + "b379721b172702289188baf3bc86b1cc5d5e3793", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-025.html": [ - "725f50b1f9d3be9fb368ae613eae9377baf8d43f", + "3437429a0baacfc0770a28aee7e7c5922b83968a", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-026.html": [ - "a6370fe0c3e9f987f9a0766c93165ecefec85132", + "3b9c36585804926a99157ef5f1707b54318da971", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-027.html": [ - "f82bae8883376515e7faaa7f0ed667576f5fad37", + "e51d98a565264448dd2c39ac556bba8073236ab0", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-028.html": [ - "396f4f823eb6e2115a9d5ce390fbdb529e799063", + "4c5c94ae2ac166374725a53604f0b50a9b09fa34", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-029.html": [ - "411ed5d2577ac0c2839bbb829efc170ba7136c19", + "2c99765c101af32aff4ef16b615930a650db52f2", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-030.html": [ - "1d0ac6855db55908602d543660d9ae14a18edf1f", + "6c3e1b09a0a8e1268a3e2c513b7959972fee1632", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-031.html": [ - "97b2b7231b6f7f812c3ee8ff89317281b1ecfa6e", + "627a1e421cbcc93dbf5b5beb028482495aa96ea9", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-032.html": [ - "4c55498e0a14acdded1563a4890b18da9b464201", + "a3b9af60a41c8baa60f5ec891a56d3c2e075d6c1", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-033.html": [ - "222a1a659ae09f78641551a369a2bf4fc01f86eb", + "ab9eda7db315fdd67240c93d5544fe3230101509", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-034.html": [ - "f0ea292f1996f5635e2f8c382bb14baa71c1840d", + "1f506f17eeaf10ca4728c0b3b40ec825e85a4438", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-035.html": [ - "029a04b0ba3297c3b357454f2b5cba743dfcb90a", + "2bfd66cdd546bf0151c1aaa800903bf974a10b75", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-036.html": [ - "201ebb99796766165de76c4d762214102157129d", + "d9ab0bc1deb8a9a8b29c80b446ee9f7cb720d214", "testharness" ], "css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html": [ @@ -486618,6 +489834,10 @@ "dc9d15b18538afb38790de51e31095ce9f93e0a9", "reftest" ], + "css/css-grid/alignment/support/style-change.js": [ + "021db5d6c4e974ab0c8d7e59666a785db03942c4", + "support" + ], "css/css-grid/grid-definition/fr-unit-with-percentage.html": [ "0dc90f8d107fe96a35cd837a224d4a28dd971f92", "reftest" @@ -487326,10 +490546,6 @@ "6bb300b8baebf700481ea162fb7b41913fcca29c", "support" ], - "css/css-grid/support/style-change.js": [ - "a92e1d3f5be007d10fdf432bb198f87b00bdc35a", - "support" - ], "css/css-grid/test-plan/index.html": [ "e633dc7584fbc7bfe99177aa5dd9fbd107a2d3f5", "support" @@ -488502,6 +491718,34 @@ "8853e79d6e9c3d262ebb38c569e97932f3b27cd4", "support" ], + "css/css-masking/parsing/clip-invalid.html": [ + "fad5d0257532a5c1572d41f83d045c92a6fe0d61", + "testharness" + ], + "css/css-masking/parsing/clip-path-invalid.html": [ + "791ea3c564f629ed8d679499f5483e122ad9f602", + "testharness" + ], + "css/css-masking/parsing/clip-path-valid.html": [ + "4ac5715cdba374d3b702157ffce4a0a45009995a", + "testharness" + ], + "css/css-masking/parsing/clip-rule-invalid.html": [ + "5a7673c56ae29a10133ed1395ae1e61ee2a7dd81", + "testharness" + ], + "css/css-masking/parsing/clip-rule-valid.html": [ + "9236b88f0ac03139210fe6f5fd5f9fa08a613c09", + "testharness" + ], + "css/css-masking/parsing/clip-valid.html": [ + "e7805a38a0634d760bdc31e4c331da1a56582bc9", + "testharness" + ], + "css/css-masking/parsing/resources/parsing-testcommon.js": [ + "b5cc6f7c0c7729328bbbc45ec2a8147dae8d8668", + "support" + ], "css/css-masking/test-mask-ref.html": [ "6307ecf282b941dbe1475bdb603208f4140b2f26", "support" @@ -488947,11 +492191,11 @@ "reftest" ], "css/css-multicol/multicol-nested-column-rule-001-ref.xht": [ - "d53e71b2a82e6d519fa7fffcc62ba832717cd7a5", + "ae91439c53426782f29ed92e1f75da836d978ba5", "support" ], "css/css-multicol/multicol-nested-column-rule-001.xht": [ - "7157a7f0a6dc740d9a12561118c2aa71923511c7", + "0dfe07fddd84a8eab8b0ed71e48cd40ab7117e7e", "reftest" ], "css/css-multicol/multicol-nested-margin-001-ref.xht": [ @@ -490159,11 +493403,11 @@ "reftest" ], "css/css-paint-api/paint2d-image-ref.html": [ - "c71e0b960177b13614d2c11392c94ea155927ebe", + "d4abe5cfd1d2416da7e390d28bc359feac91a2e7", "support" ], "css/css-paint-api/paint2d-image.https.html": [ - "5df17bc61598b6687091b3da4b626ed0938cd89e", + "df6ce0e992726401b8b3eec1ee72029c2f113316", "reftest" ], "css/css-paint-api/paint2d-paths-ref.html": [ @@ -490298,6 +493542,10 @@ "4eee3e45f32779df4464132fa43717a3afc135b2", "reftest" ], + "css/css-paint-api/resources/html5.png": [ + "0b71ad4f2c95d41419082c2f1a2fc8370b14ebd2", + "support" + ], "css/css-paint-api/style-background-image-ref.html": [ "0985e20363c8aac715c534ad59f1209889244fb0", "support" @@ -492946,6 +496194,10 @@ "7e780a2c98d134a62aeea85f8695c39bef1d63b5", "reftest" ], + "css/css-scoping/css-scoping-shadow-nested-slot-display-override.html": [ + "6779dddd0b63ddfcecf33584fd8196b43d698f5a", + "reftest" + ], "css/css-scoping/css-scoping-shadow-root-hides-children.html": [ "ecf7c1427ea8556476506f618eef7ad25e11a2bf", "reftest" @@ -493094,6 +496346,34 @@ "b0841c5c1e328846aaa95376ae62178173cdf5a5", "testharness" ], + "css/css-shapes/parsing/resources/parsing-testcommon.js": [ + "b5cc6f7c0c7729328bbbc45ec2a8147dae8d8668", + "support" + ], + "css/css-shapes/parsing/shape-image-threshold-invalid.html": [ + "72fb606c460752043db729e7157483fd01f7ce0b", + "testharness" + ], + "css/css-shapes/parsing/shape-image-threshold-valid.html": [ + "040363d13bbed463d1e5e02fea84566da39853cb", + "testharness" + ], + "css/css-shapes/parsing/shape-margin-invalid.html": [ + "678fe576221b82b6a85927de3337cef02f85da8d", + "testharness" + ], + "css/css-shapes/parsing/shape-margin-valid.html": [ + "bf937f106b1d6e5b15abce0971da8773777a0ac0", + "testharness" + ], + "css/css-shapes/parsing/shape-outside-invalid.html": [ + "024c4a2789493964b162397bc994b699274e1423", + "testharness" + ], + "css/css-shapes/parsing/shape-outside-valid.html": [ + "5b90c13064455cff16f5a4d54a6343c76775f3cc", + "testharness" + ], "css/css-shapes/shape-outside-invalid-001.html": [ "550e970032ac78ada40b7b8b3e7159c4160d60da", "testharness" @@ -507254,10 +510534,42 @@ "4bcfaa7a22cbe8fa2ca234583403d26bd520474c", "testharness" ], + "css/css-typed-om/resources/1x1-green.png": [ + "51e7b6974a09eda6cb31337717c5eaeb9c44b443", + "support" + ], + "css/css-typed-om/resources/testhelper.js": [ + "08f2394f7dfa11460d1e67b8d0c6e556620bf65a", + "support" + ], "css/css-typed-om/styleMap-update-function.html": [ "a1dee75d914b68753af742ce8e6dbbac0397a9a6", "testharness" ], + "css/css-typed-om/stylevalue-normalization/normalize-ident.tentative.html": [ + "162ce70613e78bb007ea24ea525ec78ef17cd3bd", + "testharness" + ], + "css/css-typed-om/stylevalue-normalization/normalize-numeric.tentative.html": [ + "65c2418988148bf9662f5f502bb4650cc6105a85", + "testharness" + ], + "css/css-typed-om/stylevalue-normalization/normalize-resource.tentative.html": [ + "a52fdeadf8f0663e5e8f455e60a233da816e05ca", + "testharness" + ], + "css/css-typed-om/stylevalue-normalization/normalize-tokens.tentative.html": [ + "4bc704fca50d3a114fe0fde76b6030516662d43a", + "visual" + ], + "css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html": [ + "9334ee684f4a2897f6a191d9217e63af5630cc0d", + "testharness" + ], + "css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html": [ + "3a5ea9eef361accde1e0166d9defa186bae5c602", + "testharness" + ], "css/css-typed-om/stylevalue-objects/interface.html": [ "5c9086db5b7f3a9d6e3109f1ce47385ad345f474", "testharness" @@ -507278,10 +510590,150 @@ "2b6761e72a7867218d2f9d9f780569b342c1d89c", "testharness" ], + "css/css-typed-om/stylevalue-serialization/cssKeywordValue.tentative.html": [ + "004752ad2e9682845697d668af158679031f65dc", + "testharness" + ], + "css/css-typed-om/stylevalue-serialization/cssMathValue.tentative.html": [ + "9bcb4ff6461793d61925d173da7650230e3b4555", + "testharness" + ], + "css/css-typed-om/stylevalue-serialization/cssPositionValue.html": [ + "155be052f2810afb0560b72e7c223293c02e61a8", + "testharness" + ], + "css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html": [ + "d255d5d406d5620d4ed1cdd2979c7dc720475399", + "testharness" + ], + "css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html": [ + "022aec2fac9ccdda36adf97bd47aa407e2825f6e", + "testharness" + ], + "css/css-typed-om/stylevalue-serialization/cssUnparsedValue.html": [ + "7ba0e1c9db3799bad925036de1da7c51fd102610", + "testharness" + ], + "css/css-typed-om/stylevalue-serialization/cssUrlImageValue.tentative.html": [ + "7b7fa7d06c5dcf614864bab0adef083359278ab6", + "testharness" + ], "css/css-typed-om/stylevalue-subclasses/cssKeywordValue-interface.html": [ "53394d04d67fa9526240c2c0af8b71f54a60a0c3", "testharness" ], + "css/css-typed-om/stylevalue-subclasses/cssKeywordValue-invalid.html": [ + "63600cc74e62ecbaf98bf786de17362764ec947e", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html": [ + "236520d8ac6199066d1e082b9860f2381ff61be6", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html": [ + "dc32e826e1f840c99f3b4bad4f03bd0f9573ce4e", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html": [ + "f217ed58d7f56ea588aa942fddfec0322d557283", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/computed/get.tentative.html": [ + "caf3a345b03a2b929af25a8b360d5da9bb59fb5a", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/computed/getAll.tentative.html": [ + "4393dba1aea1936ac0ff0f08ef6b5810eaaa8b6b", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/computed/getProperties.tentative.html": [ + "9e0018aed64fbca86d25f5ec466f88212ebd4906", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/computed/has.tentative.html": [ + "b7b16ab44745e235883303b8c495aa1ceb874d0c", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/computed/iterable.tentative.html": [ + "71dc6c117d3b0e17ddcee46c9db11953197edb75", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/append.tentative.html": [ + "6a408857cd88d03a4a00ee2127a3825380d2565f", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html": [ + "0a2097381fd03a532db7e2b1fb85dd7a901fb011", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/get.tentative.html": [ + "944052a99d1b5cc1a574c07339c33fdb6b1423d4", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/getAll.tentative.html": [ + "ba694cbe689837f183601aab4872c4525613ebd4", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/getProperties.tentative.html": [ + "7cb65bf76de24fe33a48178f5193bc05c5ec3f44", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/has.tentative.html": [ + "3299b5537f2d535988f2f6dac65b3eaba63833b2", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/iterable.tentative.html": [ + "3652cf0e25de23c04beadbaf2e4ddfffb244333d", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/set.tentative.html": [ + "2e8b919993a68f96008f17a0e95c08d05434e6a6", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/test.tentative.html": [ + "eca38801c677a07ebc5e15ec7d11a3338bf0ecc6", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/update.tentative.html": [ + "02eff9d89e280182fd065b63d71167041c6a8394", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/append.tentative.html": [ + "df640de5b24c8276459a1a7fbc8a02cc97db6223", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html": [ + "352917486fa593e0d3f6f645c9c67846aa303ed8", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/get.tentative.html": [ + "28c506dae933e33e536f02e17b110cced9ea0278", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/getAll.tentative.html": [ + "a149643634642b6277c4ada8da9b712f40ccf9b5", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/getProperties.tentative.html": [ + "5187e1eb4fb23b6b9a7fba8130d2649c4ea9152e", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/has.tentative.html": [ + "89b6d05db8717f1bc1f82690706d849a57104ec7", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/iterable.tentative.html": [ + "e8317c96cea894eaa47d361ba5adbb15d237726e", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/set.tentative.html": [ + "00d06230cd8f21d522ab895c853201f9910d0d90", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/update.tentative.html": [ + "30ee6179d77f18692867217c18852db94b1d10bb", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/interface.html": [ "73aac61c85d142f38b871ef21c8ce75bd468cf40", "testharness" @@ -509702,6 +513154,18 @@ "5e071d71a9cc355a62d0165b4ca2840ba0ab8c66", "reftest" ], + "css/css-values/lh-rlh-on-root-001.html": [ + "ecac1ab87e66bddd777f8799c11fde8909e2e408", + "testharness" + ], + "css/css-values/lh-unit-001.html": [ + "441da6e10585655372496de1d640e8a41259dbc3", + "reftest" + ], + "css/css-values/lh-unit-002.html": [ + "bc74010a3b7e81f008277cad91ba8adea5382787", + "reftest" + ], "css/css-values/reference/200-200-green.html": [ "1ac64ebcfdbff6285f24dae29e32767646145082", "support" @@ -516726,6 +520190,10 @@ "966ebff69f91c0ea92f4bc2f943df9ef9dc3bcf9", "testharness" ], + "css/cssom-view/scroll-no-layout-box.html": [ + "8f423a757bd716c9c22e82fd2f35007d05982c08", + "testharness" + ], "css/cssom-view/scrollIntoView-shadow.html": [ "3c4a18992105fd7bf19cbf29f0b6d80cb12ca98c", "testharness" @@ -518470,6 +521938,14 @@ "51a3f4808392b7bcce4f2569256c540a3be817dc", "support" ], + "css/motion/offset-anchor-transform-box-fill-box-ref.html": [ + "0cd13108479de1850b6457cce41fee37dcd022fc", + "support" + ], + "css/motion/offset-anchor-transform-box-fill-box.html": [ + "bed35419a1cb479707bca1e4e23db725d1925da9", + "reftest" + ], "css/motion/offset-path-ray-ref.html": [ "dfea2bd9cadf9d1b83e95bc2dbffef3539937ff1", "support" @@ -523546,8 +527022,24 @@ "471738f74a0754bea39a0d48ac71c75d26aa9130", "reftest" ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001-ref.html": [ + "0d84c9abc0971826e7ab6a4167c90075c052357f", + "support" + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001.html": [ + "200c7bb0fb583bf4f7d6e85213be498cb88659ba", + "reftest" + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002-ref.html": [ + "f7656df52db5f8b601dd10c3b827f96c7f66b74b", + "support" + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002.html": [ + "f741f790f2effdc45525e63863318540415824df", + "reftest" + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list": [ - "4dfb8e7cd5345f510d05ccf683cacdbed8c80bfa", + "a0d4a43edbe193d5e2cf2dc949b3e3ccf5726263", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/support/Ahem.ttf": [ @@ -529102,6 +532594,10 @@ "e1b4b49cbd7ea1fd703c7ab3814deee0669e9336", "support" ], + "docs/_running-tests/chrome_android.md": [ + "fab045301c74644f3feeed712b43707cac13db53", + "support" + ], "docs/_running-tests/index.md": [ "15811229e77d2949a6cb5d1848cff7136d8f11af", "support" @@ -534854,6 +538350,10 @@ "678e1f80a090021a240933034d1a9206cddde8a4", "testharness" ], + "fetch/security/redirect-to-url-with-credentials.https.html": [ + "6eb9c75887afd084c12dee609dd4c4a7cf7a6a5e", + "testharness" + ], "fetch/security/support/embedded-credential-window.sub.html": [ "09ab38acc0bc980af3e96a61390cd000885b2fe5", "support" @@ -535379,11 +538879,11 @@ "manual" ], "gamepad/idlharness-manual.html": [ - "b7feb12fc02bc656eb41f406999481d204293c08", + "e570c8f2defac5b53f5f18fa3a09b184e8adb845", "manual" ], "gamepad/idlharness.html": [ - "cafa75af045a99b74e979b8905671d8b4bde107c", + "302f0796746f252a1a851d306d7e96cf86d7d402", "testharness" ], "gamepad/timestamp-manual.html": [ @@ -535403,7 +538903,7 @@ "support" ], "generic-sensor/generic-sensor-tests.js": [ - "2209b4cc293aefecded2d325b664d494820d38af", + "22c64a2145caa9eeaf4e53243dc971d832a478e0", "support" ], "generic-sensor/idlharness.https.html": [ @@ -535471,7 +538971,7 @@ "testharness" ], "geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html": [ - "ae1bdcf06fbf8dc8189950593b83bdd749e37880", + "f67a0c9e416e45326d7301c2a40c758029011738", "testharness" ], "geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html.headers": [ @@ -535479,15 +538979,15 @@ "support" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "6b0ea48ea2fb1cb6b81348bf5e28618716a34166", + "fb033fd0f0d891e9b6ed2b54b835f8f06364643e", "testharness" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html": [ - "f1b108ddd2f5b1ea915410f4cdb28c2e1a812cf9", + "06e4487981f8e6e062d9e9fea14d52e64b6b5035", "testharness" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html": [ - "35fea3e77f992df2861bea97405e9c75f7a1f994", + "e8287121361749246b874207dcffb92e459dfbec", "testharness" ], "geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html.headers": [ @@ -535495,7 +538995,7 @@ "support" ], "geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html": [ - "a9da2c50d4bde9eb24ef343979afcbc6547684e2", + "4222f48c8c2a932c5b65b6426bb9a0ad476ddd0c", "testharness" ], "geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -535523,7 +539023,7 @@ "testharness" ], "gyroscope/Gyroscope-disabled-by-feature-policy.https.html": [ - "03457271ec8c254bf74f89afa7532a595b837404", + "bc6f85cb3506d3e3e062eef43dca88bf3a4ebe89", "testharness" ], "gyroscope/Gyroscope-disabled-by-feature-policy.https.html.headers": [ @@ -535531,15 +539031,15 @@ "support" ], "gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "68df44bc71f1aaba74188f70dc916e9ee1dcc330", + "cc1f4082fa420a9076f929d88268f5a1d921a44a", "testharness" ], "gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html": [ - "e7c53323038c11a977e547ebe9d7ae94646f1a06", + "75429c87bbebd19df7b4edaddc5869c6202b3fab", "testharness" ], "gyroscope/Gyroscope-enabled-by-feature-policy.https.html": [ - "e4e170946a0289e8b1b6be83083aeeb92ddc4a8f", + "5129c05f9b226650a9b7fed4841871045525bf15", "testharness" ], "gyroscope/Gyroscope-enabled-by-feature-policy.https.html.headers": [ @@ -535547,7 +539047,7 @@ "support" ], "gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html": [ - "f48401e0e04294624ebb864224a6d2126e849870", + "2603bd858929ae6f84ebbe0cce34c5417ccdae06", "testharness" ], "gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -535943,11 +539443,11 @@ "testharness" ], "html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html": [ - "d1a0dcf7e544066d7d30454e9915fad22c6966dc", + "3924bc14b2b90880c939e384bf4b075531793a57", "testharness" ], "html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html": [ - "7feaab2a60b39d697819571136463ce26936d3db", + "4ceab904264ef4e4151a3fac41f662d83a80072e", "testharness" ], "html/browsers/browsing-the-web/history-traversal/contains.json": [ @@ -540115,7 +543615,7 @@ "testharness" ], "html/dom/usvstring-reflection.html": [ - "c0f3943df125b3042abb5ef891e01f2b61fea0e5", + "a48e32b268a8117ed803c8ede806a879e1556d76", "testharness" ], "html/editing/.gitkeep": [ @@ -545862,6 +549362,14 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html": [ + "e30982d8f6490bfd4b3c124b281d13a1f93e0e18", + "testharness" + ], + "html/semantics/document-metadata/interactions-of-styling-and-scripting/stylesheet.py": [ + "fde4968951519e82db85aa8624470f5256e16396", + "support" + ], "html/semantics/document-metadata/styling/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -547122,6 +550630,10 @@ "fee519ec5f5afc13be7c7f5a4387e746135c3747", "support" ], + "html/semantics/embedded-content/media-elements/track/track-element/resources/cues-chrono-order.vtt": [ + "c99c03bde6cc607a6b0c2b0831527bf8a3081e13", + "support" + ], "html/semantics/embedded-content/media-elements/track/track-element/resources/cues-no-separation.vtt": [ "251de0c5026da00c2b18469ee99924cf70ad1b4e", "support" @@ -547366,8 +550878,16 @@ "c8ab03c7d84d150befa8152e552d99e889ce4ec0", "testharness" ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html": [ + "32cb1d3aec235d98b1f4654bb81f2bafd24a2e56", + "testharness" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html": [ + "703a140689ca43502dd3e2922c9718034bc9f7fd", + "testharness" + ], "html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp.html": [ - "ac23d5be03b500a264d3bf919d88396e318b4e89", + "1ab49530360602eee786211576774956d8f5cc2b", "testharness" ], "html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html": [ @@ -547378,6 +550898,30 @@ "688c592e8fc4b4dbc2d7d6ea16e17380c13f440a", "testharness" ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html": [ + "0fe944a0ec2df071f3d0ea5bfa8a69720d52af86", + "support" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html": [ + "5405472fee1eb767d8b95e64206737e238d60407", + "reftest" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video-ref.html": [ + "e8bb477c297f47d5f39e25fcf232bd686bf9a36b", + "support" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video.html": [ + "18072ac5f58f1b84a8574432f9de44e44d4811c8", + "reftest" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html": [ + "135b766f1a8e76914ca9b96385465bbc0b086e9c", + "testharness" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html": [ + "3eea15ded06b5c4786f223993407c9d78ac40f96", + "testharness" + ], "html/semantics/embedded-content/media-elements/track/track-element/track-cues-missed.html": [ "a87ad9da0dad43e1b68183feeabce59a5c864087", "testharness" @@ -551899,7 +555443,7 @@ "testharness" ], "html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html": [ - "996d1aa45c5975e13ac0f1e9c9249b3d452ed2e2", + "3365d69d34e442962370a1f0ed22017876efe4fe", "testharness" ], "html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html": [ @@ -552967,7 +556511,7 @@ "testharness" ], "html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html": [ - "4714117714f350db0174189e6fd2a5acf8280f0f", + "aff1352988cb70e52cff99e1fde379a807dd6984", "testharness" ], "html/semantics/text-level-semantics/the-a-element/resources/a-download-404.html": [ @@ -552983,7 +556527,7 @@ "support" ], "html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html": [ - "e328666c9e386349db0cf51bee0838d2dcb83415", + "d51356778b9a9e87e79c33b64ea9cf31a091cb07", "testharness" ], "html/semantics/text-level-semantics/the-b-element/.gitkeep": [ @@ -554702,6 +558246,10 @@ "1f29964d20d88de0d659fd76b864b51681582870", "support" ], + "images/pattern.mp4": [ + "341b777522809f50a88b366566069ee7b77cba80", + "support" + ], "images/pattern.ogv": [ "340a255f9e8e06dad2a766f4b3e7bb5e15bf697e", "support" @@ -554891,7 +558439,11 @@ "manual" ], "interfaces/OWNERS": [ - "f9c94ab08fa997459cba17e61d8cd00ee8b07b46", + "b2cece17c61be3b2d6ebf3294c268ebf1061026e", + "support" + ], + "interfaces/WebCryptoAPI.idl": [ + "87b02fc82a1b204ac59a51932e58f9369b4a77c6", "support" ], "interfaces/accelerometer.idl": [ @@ -554930,6 +558482,10 @@ "fda57b55aabdc54d674851851451c6c69c514ed1", "support" ], + "interfaces/gamepad.idl": [ + "89fa62f6e0d1fdb497ce6550804b57a5d4ee0d0f", + "support" + ], "interfaces/generic-sensor.idl": [ "3b2cb524838f2274463664621fddc7c927ac95af", "support" @@ -554951,7 +558507,7 @@ "support" ], "interfaces/html.idl": [ - "b93b108cc7ce46595b701a6631b5b8536f0e7eb2", + "5eead97f7b1cc2e511f268cb5a40011a33519bf0", "support" ], "interfaces/magnetometer.idl": [ @@ -554974,6 +558530,10 @@ "3a5f9a4e768409532916c751e7169c35ec0e23a8", "support" ], + "interfaces/proximity.idl": [ + "74f2bf81a497589e7b3ed323368df218a70925a3", + "support" + ], "interfaces/remoteplayback.idl": [ "fc724b70bc1e1d30e538ee5154a99d4871414302", "support" @@ -555006,6 +558566,14 @@ "7b5749e1fece69552e0a8bfac7af401fac15394d", "support" ], + "interfaces/webxr.idl": [ + "7a275cb5317c967a1058cab3a711c9262abfbf59", + "support" + ], + "interfaces/xhr.idl": [ + "5363c96002f96f796f4800b92f8748b1141f0821", + "support" + ], "intersection-observer/bounding-box.html": [ "a3ac1b70ba26234b7c968055171e652f3a8a14d8", "testharness" @@ -555191,23 +558759,23 @@ "testharness" ], "keyboard-lock/idlharness.https.html": [ - "bcaf4f063cd423d5fb0e1055761e8880e4b63220", + "4b41c1c46a8f7d2374d0ff9d796f3f938c1f74d8", "testharness" ], - "keyboard-lock/navigator-cancelKeyboardLock.https.html": [ - "5109eb45591bba9ce48d3db91fa02c0590397886", + "keyboard-lock/navigator-keyboardLock-two-parallel-requests.https.html": [ + "ee6fe59233abea9325bf7f5e14c1472a72e45a11", "testharness" ], - "keyboard-lock/navigator-requestKeyboardLock-two-parallel-requests.https.html": [ - "6a05080698fbeff768c4f5c85dbbc89cf3cfa09a", + "keyboard-lock/navigator-keyboardLock-two-sequential-requests.https.html": [ + "02ad8f54b7cebed96553bd96bbd7e8fc0227d3b1", "testharness" ], - "keyboard-lock/navigator-requestKeyboardLock-two-sequential-requests.https.html": [ - "79ed9f93e2f72bf8e11d04e25c6fa847c91971e4", + "keyboard-lock/navigator-keyboardLock.https.html": [ + "572f4e827bc3807f4c71641e102d7bac9df3e391", "testharness" ], - "keyboard-lock/navigator-requestKeyboardLock.https.html": [ - "6f8091035f4aa18131c548a81cbe80ba328169c9", + "keyboard-lock/navigator-keyboardUnlock.https.html": [ + "c4de12456714a34fb791b070304da31c99da080f", "testharness" ], "longtask-timing/OWNERS": [ @@ -555275,7 +558843,7 @@ "support" ], "magnetometer/Magnetometer-disabled-by-feature-policy.https.html": [ - "e7c3f45ece750fd22149ea34ee968a6f7f795ac3", + "9af542095f2fcd57691c0432ef3248b04a0207a0", "testharness" ], "magnetometer/Magnetometer-disabled-by-feature-policy.https.html.headers": [ @@ -555283,15 +558851,15 @@ "support" ], "magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "d9963541021955e037dec0b443e4a80f4ffe4ee0", + "47829ff5747eed99ba22e79b12ddfff288fd031e", "testharness" ], "magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html": [ - "2ff0ea0df581c878201bc89e05dfc3e82ffadc01", + "3b6314e9176a24976d9d882644c30f00554eed6d", "testharness" ], "magnetometer/Magnetometer-enabled-by-feature-policy.https.html": [ - "ef9490c36c40ee6fe2f1bb09c6fd30519d70796c", + "05128cdb7171ba230143e7b68b09968a484b602a", "testharness" ], "magnetometer/Magnetometer-enabled-by-feature-policy.https.html.headers": [ @@ -555299,7 +558867,7 @@ "support" ], "magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html": [ - "3e96f42d58b119e42b261f0ae641f56a7c685f47", + "3240dafd2bc810dea0dc1ebc31728c86a29f2ec5", "testharness" ], "magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -555826,6 +559394,10 @@ "c446fd2ec7e9a940b66a297d9d6a5de9015dc42f", "testharness" ], + "media-source/generate-config-change-tests.py": [ + "044023540660d9b81484d1ae14851e13af907055", + "support" + ], "media-source/import_tests.sh": [ "943d26f264d59f2a7c01db30f5d91e72dafa9935", "support" @@ -555935,7 +559507,7 @@ "testharness" ], "media-source/mediasource-config-changes.js": [ - "08d405df023b14f73bb2490d5e8037feb7ae0ad2", + "9bafe96e2a478adf28b0c6fd4186d2bae588e921", "support" ], "media-source/mediasource-detach.html": [ @@ -555983,7 +559555,7 @@ "testharness" ], "media-source/mediasource-play.html": [ - "fb9a01c9d1aeecec782726b347aeec7f703de07d", + "e9b1b8b37dc3e850e175383997fe68d6935af539", "testharness" ], "media-source/mediasource-preload.html": [ @@ -564255,7 +567827,7 @@ "manual" ], "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html": [ - "a87d0228b022235fd00eb345cc39f764afd8a64a", + "0c7657e32b46c64e5f050f04e40ccfc0dce32e47", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html.headers": [ @@ -564263,15 +567835,15 @@ "support" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "7b827dd86f0ec3fd63e7f37d90c9eb85a61be8e2", + "71a6966fb91f8ddfe15ee690c843e4621a3b4720", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html": [ - "7bd1a53f63f8ce9cf4421dd173ee9772dd8ab739", + "9bbe39e1be4a669f31f0fb3960aca22d7d159c5e", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html": [ - "8eaf4b91ba622a454a1f4bae08b5e59905b0deeb", + "9f110b8ceca3dd3ce3d2a9e2567d92a3fc6462bf", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html.headers": [ @@ -564279,7 +567851,7 @@ "support" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html": [ - "02840fd195f2891fcb9d2159e92dad004ec94608", + "c4404cf0b16c4d9ad15308392ecf52caee445b86", "testharness" ], "orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -564303,7 +567875,7 @@ "manual" ], "orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html": [ - "721b7ba79a90408c073a00383e84966368602b0e", + "8c6c5f8f3bc4421f5143a3e4fab287564cf4907d", "testharness" ], "orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html.headers": [ @@ -564311,15 +567883,15 @@ "support" ], "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html": [ - "69bcd956cb76f80481eb867a34fc755f96963d4c", + "34a79c9033a41c0aceab3fa6a470dd5a76f2ac81", "testharness" ], "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html": [ - "2c86a4a1a9d71e1ebc8909cedc3cd11a82d59db1", + "0e6260ccdaa8163b8db96516960be226a4d85ba7", "testharness" ], "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html": [ - "14c83011b5ebcc04b64a3b958e272801f7cd2895", + "243b2d60d4c528a77e9cfb68fa256b35234e7346", "testharness" ], "orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html.headers": [ @@ -564327,7 +567899,7 @@ "support" ], "orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html": [ - "a469f03dcf3ce4c8b93fe1498935c6507b1bde87", + "c9f234f6508fb778fdf91277bb8950c99479979d", "testharness" ], "orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html.headers": [ @@ -564519,7 +568091,7 @@ "testharness" ], "payment-request/PaymentRequestUpdateEvent/constructor.https.html": [ - "91210fe058e95195ff5f999a1540ce0f2914f552", + "2b47979bae7fcc90fa5162dd597d6e55c96f2c15", "testharness" ], "payment-request/PaymentRequestUpdateEvent/updateWith-call-immediate-manual.https.html": [ @@ -564607,7 +568179,7 @@ "testharness" ], "payment-request/payment-request-abort-method.https.html": [ - "5c1ddf4e9e2a896036912983462f51f8ff6aa82b", + "30c62af4a05a4d83cbbd1e82d0df62bae9a85e96", "testharness" ], "payment-request/payment-request-canmakepayment-method.https.html": [ @@ -564615,7 +568187,7 @@ "testharness" ], "payment-request/payment-request-constructor-crash.https.html": [ - "9983391839ed64c41f9a7ecfb48a9b4abe6b497c", + "383d1c3f9505ee63d504bee87e13efa90ba49f3d", "testharness" ], "payment-request/payment-request-constructor.https.html": [ @@ -564782,6 +568354,10 @@ "e06354c2fd72bb868f8964cbf9ab393b629a3789", "testharness" ], + "performance-timeline/po-takeRecords.html": [ + "e674c882ca331e48c92e6b9bf88d8b8a054316e4", + "testharness" + ], "performance-timeline/resources/square.png": [ "f2f3c2b3cef895f514f595932b767299cd6dade0", "support" @@ -565155,7 +568731,7 @@ "testharness" ], "pointerlock/movementX_Y_basic-manual.html": [ - "b8567207aa3112562738cc6ffd2f2e5e2af652c5", + "eb22c6fb2fbae178f2b662a09a9153635bdb17e6", "manual" ], "pointerlock/movementX_Y_no-jumps-manual.html": [ @@ -565567,7 +569143,7 @@ "support" ], "presentation-api/receiving-ua/support/PresentationConnectionList_onconnectionavailable_receiving-ua.html": [ - "9f18b9602f6866fd9b56ca4759a66b8624b05d17", + "f665499c4310075541d7eef79140e1386c651f36", "support" ], "presentation-api/receiving-ua/support/PresentationConnection_onclose_receiving-ua.html": [ @@ -565638,8 +569214,8 @@ "ba9b710aa4213f10edc7131a3879821f38f2ef19", "support" ], - "proximity/idlharness.html": [ - "8505e5ef30a561c82b7732fd24789387cf8f654e", + "proximity/idlharness.https.html": [ + "25c63ad4caa047d13ef9be748d6c880df4193b0d", "testharness" ], "quirks/active-and-hover-manual.html": [ @@ -573323,11 +576899,47 @@ "testharness" ], "resource-timing/resource_connection_reuse.html": [ - "8ab91aeb45b1db42af8c87681fcd793d71f05254", + "b20162d02cad807fc2b250b7d73042822fcb9030", + "testharness" + ], + "resource-timing/resource_dedicated_worker.html": [ + "8a4f853bdffe110bc15c04aaed4d4436a5ea3a23", "testharness" ], "resource-timing/resource_dynamic_insertion.html": [ - "1b6e111056101c88623eda6148042c310a5b7a6d", + "a6cd75583f6363a83b18f1bc77d89821de344ff7", + "testharness" + ], + "resource-timing/resource_frame_initiator_type.html": [ + "dcea1111a2c9a40a1d3de7246a5295e84dcf08b5", + "testharness" + ], + "resource-timing/resource_ignore_data_url.html": [ + "f8513b4ae7cc26c07cea1c16d872e0594f05041c", + "testharness" + ], + "resource-timing/resource_ignore_failures.html": [ + "c22e136e1c942a2fd652985a660ca0acd6c3a8b6", + "testharness" + ], + "resource-timing/resource_initiator_types.html": [ + "b04269a158aadf5a178decc306481c15f2c310b0", + "testharness" + ], + "resource-timing/resource_memory_cached.sub.html": [ + "7bd3af7679a4e628090bbc1e7114f416457144d6", + "testharness" + ], + "resource-timing/resource_redirects.html": [ + "76f977ff494e0c7899b616909b0dab1832ed44c5", + "testharness" + ], + "resource-timing/resource_reparenting.html": [ + "8df6e1b7d03e0480a24535124e72808f061b2bc1", + "testharness" + ], + "resource-timing/resource_script_types.html": [ + "11ead0e7600ea288f78582f8ee194a903490e6e1", "testharness" ], "resource-timing/resource_subframe_self_navigation.html": [ @@ -573338,10 +576950,22 @@ "9e8051a2ff8fff72b36ed1cecb61f9e7bba29071", "support" ], + "resource-timing/resources/all_resource_types.htm": [ + "c7f698888c64e5b750fac45e22dbb85e5979b3c5", + "support" + ], + "resource-timing/resources/blank_page_green.htm": [ + "2d6d55d85e17a9fe978db6dbe25ae35a599d5683", + "support" + ], "resource-timing/resources/blue.png": [ "99949c515749e66f471c3589ee7a0ef518aaccb5", "support" ], + "resource-timing/resources/empty_script.js": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], "resource-timing/resources/fake_responses.html": [ "c942abc1e8c1672935ffc8ce34821891345bacb9", "support" @@ -573350,6 +576974,10 @@ "09568d5f64474184cde594a47e26e374bcc8ac4d", "support" ], + "resource-timing/resources/green_frame.htm": [ + "08f8ca19b61ab0ac68014d5b406a952669fbe104", + "support" + ], "resource-timing/resources/gzip_xml.py": [ "cf637a4389fd259dee3a2df56194a68b3744b4c6", "support" @@ -573394,6 +577022,10 @@ "f53513f6f47fd4a6d4994a4ef7d6e37d1777ea57", "support" ], + "resource-timing/resources/nested.css": [ + "b89daf15601a711f6046d9e2fe1cc43ae1f0fd27", + "support" + ], "resource-timing/resources/notify_parent.html": [ "91790b717d0922dcd58237137c9728afbe488e46", "support" @@ -573430,6 +577062,10 @@ "59692fb2ebe890d65acba54aa2f814fcf9b46d39", "support" ], + "resource-timing/resources/worker_with_images.js": [ + "161473f1cd2157a69c506c80dba6ef25f76122ee", + "support" + ], "resource-timing/single-entry-per-resource.html": [ "e23e9cab8d42a3bb6b0635cd3916d9131ccc6ba2", "testharness" @@ -573439,7 +577075,7 @@ "testharness" ], "resource-timing/test_resource_timing.js": [ - "504f20a00b7be9c3b15666dfe34df02856a8bc72", + "a68dca4f542588b705f126df73dfad8c88c69506", "support" ], "screen-orientation/OWNERS": [ @@ -573750,8 +577386,684 @@ "ed768e3cc679a1fef5c47088443fdaec83838394", "support" ], + "server-timing/resources/parsing/0.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/0.js.sub.headers": [ + "17fa2c18304bcee509c7786fd34e456994360a10", + "support" + ], + "server-timing/resources/parsing/1.js": [ + "1a6924ba411a7f92aef048336bd117ece499f90a", + "support" + ], + "server-timing/resources/parsing/1.js.sub.headers": [ + "1f65859f60eea48564091b7f853e3a1c306d91fe", + "support" + ], + "server-timing/resources/parsing/10.js": [ + "1a6924ba411a7f92aef048336bd117ece499f90a", + "support" + ], + "server-timing/resources/parsing/10.js.sub.headers": [ + "adf8886166350be375d41de58da0d8a72ae8d2ce", + "support" + ], + "server-timing/resources/parsing/11.js": [ + "1a6924ba411a7f92aef048336bd117ece499f90a", + "support" + ], + "server-timing/resources/parsing/11.js.sub.headers": [ + "20c6f242511b2055249eb7bfb0e775af483a6c40", + "support" + ], + "server-timing/resources/parsing/12.js": [ + "1c6ca0aa58035fba39cfe8284c04468787149469", + "support" + ], + "server-timing/resources/parsing/12.js.sub.headers": [ + "802c68f944f30b273d71f59c77289e7d2a08becf", + "support" + ], + "server-timing/resources/parsing/13.js": [ + "266ee41ae7b440ab43e87a087d10fa2b1e193a8f", + "support" + ], + "server-timing/resources/parsing/13.js.sub.headers": [ + "144652b4740f0d42e3ff0685eaac5c4c1223ddfb", + "support" + ], + "server-timing/resources/parsing/14.js": [ + "b45df4c8581d127f4738887a009611092e06fae9", + "support" + ], + "server-timing/resources/parsing/14.js.sub.headers": [ + "ef0ce7496aecd6c2efc4eee9e8a2b35723f68dcd", + "support" + ], + "server-timing/resources/parsing/15.js": [ + "57529824e71a124c2ff69e9153163de9f4c3433d", + "support" + ], + "server-timing/resources/parsing/15.js.sub.headers": [ + "d686b34f5a4b3ca534ad55ca36a0c10775f21212", + "support" + ], + "server-timing/resources/parsing/16.js": [ + "8d82b5abff0bfc1884a350836cb27c8b124129bd", + "support" + ], + "server-timing/resources/parsing/16.js.sub.headers": [ + "aa781c76e32bfaa1a0e05cd2202b3e4e3ce28b35", + "support" + ], + "server-timing/resources/parsing/17.js": [ + "b45df4c8581d127f4738887a009611092e06fae9", + "support" + ], + "server-timing/resources/parsing/17.js.sub.headers": [ + "d8b7e49b673a39e6028b8aeb6241a3be5fa79935", + "support" + ], + "server-timing/resources/parsing/18.js": [ + "e37a27e8de7cb0d7da20de4b4738f868321f4f7d", + "support" + ], + "server-timing/resources/parsing/18.js.sub.headers": [ + "19ea20ca46a0dd73a0f22175c03ea1aa5bfdb560", + "support" + ], + "server-timing/resources/parsing/19.js": [ + "945c0786a390786f6bc648fb80ffe2da2c14c4b1", + "support" + ], + "server-timing/resources/parsing/19.js.sub.headers": [ + "602127ea29736860e5291c9243d2de54c06a1b7c", + "support" + ], + "server-timing/resources/parsing/2.js": [ + "1bc5932490ce45826ee11e124924c9588b3e8c4d", + "support" + ], + "server-timing/resources/parsing/2.js.sub.headers": [ + "49c763e3a400aaa6bc19e02188496a94b952b7f2", + "support" + ], + "server-timing/resources/parsing/20.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/20.js.sub.headers": [ + "c9003e0ef6e05d0aa3066a06ae404da09d0d1ca8", + "support" + ], + "server-timing/resources/parsing/21.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/21.js.sub.headers": [ + "babbb8839dae15581d70d50133b7e7dcecb72c60", + "support" + ], + "server-timing/resources/parsing/22.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/22.js.sub.headers": [ + "60656825b940e844d5b658b15a558d4bf8aeb5a2", + "support" + ], + "server-timing/resources/parsing/23.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/23.js.sub.headers": [ + "fb73ea7ff1d6c98cf18e8cdc9ae2106988a3c5cd", + "support" + ], + "server-timing/resources/parsing/24.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/24.js.sub.headers": [ + "b63c644ae9025bce231ff4d3be572e4f5968d1e1", + "support" + ], + "server-timing/resources/parsing/25.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/25.js.sub.headers": [ + "8761b10c42d5117d5917cd2bafff717f0a5e0d3a", + "support" + ], + "server-timing/resources/parsing/26.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/26.js.sub.headers": [ + "a25b4947fb552c63ffc4bebcde9748d8b5d3654e", + "support" + ], + "server-timing/resources/parsing/27.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/27.js.sub.headers": [ + "6256524e6218d7f1da03ffde037c3808cd09ee64", + "support" + ], + "server-timing/resources/parsing/28.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/28.js.sub.headers": [ + "15bf03440d58c800a88a9bbc493889803e2962e1", + "support" + ], + "server-timing/resources/parsing/29.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/29.js.sub.headers": [ + "d61f4f751e96db5f3fb2668d581fb04442545adf", + "support" + ], + "server-timing/resources/parsing/3.js": [ + "1bc5932490ce45826ee11e124924c9588b3e8c4d", + "support" + ], + "server-timing/resources/parsing/3.js.sub.headers": [ + "e37b008d0de07fdd300f0fef181cfaaac0c2ac9f", + "support" + ], + "server-timing/resources/parsing/30.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/30.js.sub.headers": [ + "68899f453cbe896880b91add876a2dcf0aa7862c", + "support" + ], + "server-timing/resources/parsing/31.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/31.js.sub.headers": [ + "23aa6e0121b3efbd010187aef45ec1e343dcc6f8", + "support" + ], + "server-timing/resources/parsing/32.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/32.js.sub.headers": [ + "13f8e002a56499f19d248968d4da2446c457818c", + "support" + ], + "server-timing/resources/parsing/33.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/33.js.sub.headers": [ + "3d4b4717629e4564e7e86a8b98eeee76b4278e2e", + "support" + ], + "server-timing/resources/parsing/34.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/34.js.sub.headers": [ + "b34910643944972a5fd3cd4323c3e460b764acd6", + "support" + ], + "server-timing/resources/parsing/35.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/35.js.sub.headers": [ + "f9055d1f55a5fdb38691374bd7de69b45d979e27", + "support" + ], + "server-timing/resources/parsing/36.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/36.js.sub.headers": [ + "87fe726634ad6dae4e348db74a6c64fa19929638", + "support" + ], + "server-timing/resources/parsing/37.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/37.js.sub.headers": [ + "39fd3379982b21de04a3c280ba4fcdfe84a4e55d", + "support" + ], + "server-timing/resources/parsing/38.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/38.js.sub.headers": [ + "0b4fa5ed0edc8378cc8ce4c482a49f8a02b8dbd2", + "support" + ], + "server-timing/resources/parsing/39.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/39.js.sub.headers": [ + "19af60081837aa38b2d14bbe55f1210d3dd75e72", + "support" + ], + "server-timing/resources/parsing/4.js": [ + "b45df4c8581d127f4738887a009611092e06fae9", + "support" + ], + "server-timing/resources/parsing/4.js.sub.headers": [ + "3449afe167f6e32a27f682e79ba8aa19d3e5be64", + "support" + ], + "server-timing/resources/parsing/40.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/40.js.sub.headers": [ + "d822691ba762df6d798567a2610e9973bca07236", + "support" + ], + "server-timing/resources/parsing/41.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/41.js.sub.headers": [ + "b72a4f5360c93e53338c25ba40e9993859424159", + "support" + ], + "server-timing/resources/parsing/42.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/42.js.sub.headers": [ + "973f84b410e397abf7123fe86e03b14684b5b0fb", + "support" + ], + "server-timing/resources/parsing/43.js": [ + "dcf2d8477422cfa60c7eb5da68629925fcc653e2", + "support" + ], + "server-timing/resources/parsing/43.js.sub.headers": [ + "d6fba3c154dce3d074e1e38c744e291a0c4f9e51", + "support" + ], + "server-timing/resources/parsing/44.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/44.js.sub.headers": [ + "c447cfda7cf55ee2384842b45a604412e403d8ec", + "support" + ], + "server-timing/resources/parsing/45.js": [ + "72dcb467c3d7fb4a2491a0ba68b612a4033738f3", + "support" + ], + "server-timing/resources/parsing/45.js.sub.headers": [ + "ba5cdefb1d89a1ab8b0a556f15ce1f7b722e9a45", + "support" + ], + "server-timing/resources/parsing/46.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/46.js.sub.headers": [ + "aa0c172f597b9b669fb32823e2dc99147a164387", + "support" + ], + "server-timing/resources/parsing/47.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/47.js.sub.headers": [ + "34fbb72ad299b3f8da81a55d3357b29b3fb19077", + "support" + ], + "server-timing/resources/parsing/48.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/48.js.sub.headers": [ + "c893b1918c565f30f6afeac72507636c1181fc6b", + "support" + ], + "server-timing/resources/parsing/49.js": [ + "6c2c1b45ab69ed8b1da28849accaa69a99d07340", + "support" + ], + "server-timing/resources/parsing/49.js.sub.headers": [ + "11e6ee5677c66ee62c1c973f5a4a455e178666ef", + "support" + ], + "server-timing/resources/parsing/5.js": [ + "b45df4c8581d127f4738887a009611092e06fae9", + "support" + ], + "server-timing/resources/parsing/5.js.sub.headers": [ + "d8b7e49b673a39e6028b8aeb6241a3be5fa79935", + "support" + ], + "server-timing/resources/parsing/50.js": [ + "71068640ee55f176c283ce788237e26059c043c5", + "support" + ], + "server-timing/resources/parsing/50.js.sub.headers": [ + "4e80dc4689ac1622f9df3cfde8f2667c0c334b14", + "support" + ], + "server-timing/resources/parsing/51.js": [ + "1c6ca0aa58035fba39cfe8284c04468787149469", + "support" + ], + "server-timing/resources/parsing/51.js.sub.headers": [ + "1ff4aed6798c6dfe7b22e11ffbd7db7fbe2e248f", + "support" + ], + "server-timing/resources/parsing/52.js": [ + "d0a406b076d345dc36d1792781bd078fb9b65ef3", + "support" + ], + "server-timing/resources/parsing/52.js.sub.headers": [ + "1191714a3f2cdb14c10d7b7f7637bb7fb331826d", + "support" + ], + "server-timing/resources/parsing/53.js": [ + "235f1ee6973489be765e8edec753b94c9f6d5773", + "support" + ], + "server-timing/resources/parsing/53.js.sub.headers": [ + "ce3c065722c2f84b4ea8c958465db0cbfac3046a", + "support" + ], + "server-timing/resources/parsing/54.js": [ + "235f1ee6973489be765e8edec753b94c9f6d5773", + "support" + ], + "server-timing/resources/parsing/54.js.sub.headers": [ + "4d2f64fb627d52fb965fba226648b0078f90e732", + "support" + ], + "server-timing/resources/parsing/55.js": [ + "2209fc9eff24dc4f0d7df2f31e5911dd4e05d78d", + "support" + ], + "server-timing/resources/parsing/55.js.sub.headers": [ + "735e9c9e7e9b4a54a8da1f1ed1893c67a0e5e66e", + "support" + ], + "server-timing/resources/parsing/56.js": [ + "1bc5932490ce45826ee11e124924c9588b3e8c4d", + "support" + ], + "server-timing/resources/parsing/56.js.sub.headers": [ + "e44253ff3485c86895c3b3bcf60633d73136a0a9", + "support" + ], + "server-timing/resources/parsing/57.js": [ + "235f1ee6973489be765e8edec753b94c9f6d5773", + "support" + ], + "server-timing/resources/parsing/57.js.sub.headers": [ + "653481a7bb1305cc776531b990651fd5570ddaed", + "support" + ], + "server-timing/resources/parsing/58.js": [ + "3fddff4eee055bf54f23be4ddd0e277cb79d492d", + "support" + ], + "server-timing/resources/parsing/58.js.sub.headers": [ + "9f9c4e085f0bdc083314fb97d4f485fd7ccf259c", + "support" + ], + "server-timing/resources/parsing/59.js": [ + "63d1c9fc862e586f387e1715c47c14075b9dc39e", + "support" + ], + "server-timing/resources/parsing/59.js.sub.headers": [ + "86c7827becd92238fde74e13321031e48240f8e0", + "support" + ], + "server-timing/resources/parsing/6.js": [ + "1c6ca0aa58035fba39cfe8284c04468787149469", + "support" + ], + "server-timing/resources/parsing/6.js.sub.headers": [ + "2810bd2697637785f251aacb3af4704fe3b612fe", + "support" + ], + "server-timing/resources/parsing/60.js": [ + "63d1c9fc862e586f387e1715c47c14075b9dc39e", + "support" + ], + "server-timing/resources/parsing/60.js.sub.headers": [ + "8bd1fc4b0ede3ae2d20ecaa2f1133b2a7951b48b", + "support" + ], + "server-timing/resources/parsing/61.js": [ + "3560177cc96b27c6ca4dfd3f4755685f067a9c77", + "support" + ], + "server-timing/resources/parsing/61.js.sub.headers": [ + "2cb76e965e4e10e84dc39f7a367171209a7f1c58", + "support" + ], + "server-timing/resources/parsing/62.js": [ + "3560177cc96b27c6ca4dfd3f4755685f067a9c77", + "support" + ], + "server-timing/resources/parsing/62.js.sub.headers": [ + "6ca23860d81e08d87342e5fdc0bdc1b191dfb427", + "support" + ], + "server-timing/resources/parsing/63.js": [ + "5c07fca48386d2d35c248c2053a7cb426ade6b7b", + "support" + ], + "server-timing/resources/parsing/63.js.sub.headers": [ + "4296079454e413eabe5e48799183d37955b25f14", + "support" + ], + "server-timing/resources/parsing/64.js": [ + "df2fb9e4e7999d2bda0c6e435b541fa37a55c788", + "support" + ], + "server-timing/resources/parsing/64.js.sub.headers": [ + "162b4c31d0a7894d2d16a8000694171132384a27", + "support" + ], + "server-timing/resources/parsing/65.js": [ + "5c07fca48386d2d35c248c2053a7cb426ade6b7b", + "support" + ], + "server-timing/resources/parsing/65.js.sub.headers": [ + "889218df84c44751603a94f889abd7f0d4275408", + "support" + ], + "server-timing/resources/parsing/66.js": [ + "df2fb9e4e7999d2bda0c6e435b541fa37a55c788", + "support" + ], + "server-timing/resources/parsing/66.js.sub.headers": [ + "95a5d28f5fc8519b09676ac1fd92bfae2d3fe211", + "support" + ], + "server-timing/resources/parsing/67.js": [ + "1a6924ba411a7f92aef048336bd117ece499f90a", + "support" + ], + "server-timing/resources/parsing/67.js.sub.headers": [ + "8c13333e069ade7cd299d89d4f4e49ea0cc13aa8", + "support" + ], + "server-timing/resources/parsing/68.js": [ + "b5b95d8349cbbc3b92edb61891608b04d004527b", + "support" + ], + "server-timing/resources/parsing/68.js.sub.headers": [ + "3267edb59ffdfcb7994cad0b0b82fbd1f96295e0", + "support" + ], + "server-timing/resources/parsing/69.js": [ + "235f1ee6973489be765e8edec753b94c9f6d5773", + "support" + ], + "server-timing/resources/parsing/69.js.sub.headers": [ + "70735c24c164159739a7d33353715910b7058266", + "support" + ], + "server-timing/resources/parsing/7.js": [ + "266ee41ae7b440ab43e87a087d10fa2b1e193a8f", + "support" + ], + "server-timing/resources/parsing/7.js.sub.headers": [ + "4f66fcaa07aaf41da5597d9a051768239cf9046d", + "support" + ], + "server-timing/resources/parsing/70.js": [ + "1a6924ba411a7f92aef048336bd117ece499f90a", + "support" + ], + "server-timing/resources/parsing/70.js.sub.headers": [ + "eadacef5c09ddfe284c1b04eb88d1ee7b58406b7", + "support" + ], + "server-timing/resources/parsing/71.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/71.js.sub.headers": [ + "262f7940893d9dc71881c4dd05a3abc632e164a6", + "support" + ], + "server-timing/resources/parsing/72.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/72.js.sub.headers": [ + "86acd52721c5aaa6ed6069f192e8be53e61fa691", + "support" + ], + "server-timing/resources/parsing/73.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/73.js.sub.headers": [ + "3cd0b25e1eda63ec48390f3aeb5e7b62afe64dab", + "support" + ], + "server-timing/resources/parsing/74.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/74.js.sub.headers": [ + "3a340394523d7772baa452e4c02f1b428898d9a7", + "support" + ], + "server-timing/resources/parsing/75.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/75.js.sub.headers": [ + "7776357b71f9ff29156489833884bd9263db23b0", + "support" + ], + "server-timing/resources/parsing/76.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/76.js.sub.headers": [ + "62fc9db1810ab0c4c4154f91195cdb29d3e6ac4f", + "support" + ], + "server-timing/resources/parsing/77.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/77.js.sub.headers": [ + "3b60dd6d0bf7c97a468d8a05afcadd29ec769349", + "support" + ], + "server-timing/resources/parsing/78.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/78.js.sub.headers": [ + "66b4011969e248d9ab872bea30776b5e7bd72dfb", + "support" + ], + "server-timing/resources/parsing/79.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/79.js.sub.headers": [ + "9496c56d010e4652f3d0a0ff628abaadeb717c15", + "support" + ], + "server-timing/resources/parsing/8.js": [ + "e30f08cfab17bcd0229ebbf0da701f65a193485b", + "support" + ], + "server-timing/resources/parsing/8.js.sub.headers": [ + "4aa86aa36c632e297433b03a6e63516679ff2cfb", + "support" + ], + "server-timing/resources/parsing/80.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/80.js.sub.headers": [ + "bc541f7873810c93ade3ad836a38c4bfe12b7bdb", + "support" + ], + "server-timing/resources/parsing/81.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/81.js.sub.headers": [ + "5bc9a24481b1d2f242d6361cda38d7325c83d6e5", + "support" + ], + "server-timing/resources/parsing/82.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/82.js.sub.headers": [ + "32d55b5dd32ade7283d69fcf242e757d3dc7eb8f", + "support" + ], + "server-timing/resources/parsing/83.js": [ + "4b374f4e2751e3c75af68df671c0287e41d617ae", + "support" + ], + "server-timing/resources/parsing/83.js.sub.headers": [ + "ba24e1d89104fb25d5100dfa0b38388ca19ee9c1", + "support" + ], + "server-timing/resources/parsing/9.js": [ + "30695307f7a50b46a799f3cf6f5763a359acc0ce", + "support" + ], + "server-timing/resources/parsing/9.js.sub.headers": [ + "6a8feff546c8564268b238e01a0470588b4739e7", + "support" + ], + "server-timing/server_timing_header-parsing.html": [ + "15768941cac8f5adeed09e6d204715d5fa59e5aa", + "testharness" + ], "server-timing/test_server_timing.html": [ - "2c8420d5bc6ac45923f0c5cbc43c6bd88caa877c", + "7c778ca856e5cff0bbc785f59c9ccf1ec86456fb", "testharness" ], "server-timing/test_server_timing.html.sub.headers": [ @@ -577691,7 +582003,7 @@ "support" ], "svg/OWNERS": [ - "13652f4cb17762fe755e81d2a015493ad1a6bc11", + "09ddeebeb4f8ad8622d76143f276d90a1d9aebdc", "support" ], "svg/README.md": [ @@ -577699,7 +582011,7 @@ "support" ], "svg/extensibility/foreignObject/properties.svg": [ - "946999ca1917a5069103c025197c2903ab0bae64", + "974affbb2c135c9aaa7a3f27687157b5e1250a9f", "testharness" ], "svg/extensibility/interfaces/foreignObject-graphics.svg": [ @@ -580054,6 +584366,46 @@ "e7e8508ebb527e97e1f4e289652121b1d070c219", "reftest" ], + "svg/path/closepath/segment-completing-ref.svg": [ + "67576a75312e20803e4a67a479ce9e8262ccb341", + "support" + ], + "svg/path/closepath/segment-completing.svg": [ + "62c6ecf218173f1273cbd2bd12f01dcf666170a4", + "reftest" + ], + "svg/path/distance/pathLength-positive-ref.svg": [ + "051786ae8a8510f97dec152a88541f8d16c6767f", + "support" + ], + "svg/path/distance/pathLength-positive.svg": [ + "33dc24b00e6ad879519fcfd593179ee2c1903006", + "reftest" + ], + "svg/path/distance/pathLength-zero-ref.svg": [ + "b47a9aa3a1a5901e97a5f92d056221b8882a2a19", + "support" + ], + "svg/path/distance/pathLength-zero.svg": [ + "91a81a96729daca9e421cf37a8aeb61dc743a857", + "reftest" + ], + "svg/path/error-handling/bounding.svg": [ + "83b6c27ecc4ae4394040e15eff96cd178e281994", + "testharness" + ], + "svg/path/error-handling/render-until-error-ref.svg": [ + "d6b80a84ade1979ab19debe5bf80d2262c08b097", + "support" + ], + "svg/path/error-handling/render-until-error.svg": [ + "9583661d708ffcd2baeb2eff2e8585f767e5c232", + "reftest" + ], + "svg/path/interfaces/SVGAnimatedPathData-removed.svg": [ + "bcdadce009a8238a4326e36051876a10bccccbea", + "testharness" + ], "svg/path/property/d-interpolation-discrete.svg": [ "6e27bfe4467b16b9e8c29bb66894bbb9dfbaf077", "testharness" @@ -580118,6 +584470,10 @@ "42ecd7bc94a3379d920687c79c12e2d3c55b9e98", "testharness" ], + "svg/types/elements/SVGGeometryElement-rect.svg": [ + "08237002915323f41dd5590ce4226f95ae79f285", + "testharness" + ], "svg/types/scripted/SVGAnimatedEnumeration-SVGClipPathElement.html": [ "0f81d16badaade09929ca0b35faf89cc420ef199", "testharness" @@ -580750,6 +585106,90 @@ "22f2a05853efc4977d7c427f80898cd8671f3aaa", "testharness" ], + "upgrade-insecure-requests/link-upgrade.sub.https.html": [ + "0c7c3915c24e355f3353a242843c76bb17b13c62", + "testharness" + ], + "upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html": [ + "05d450051981b22ac2b9e903b60435ca695b3ad2", + "support" + ], + "upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html.headers": [ + "658f2c2be22add1a5be72b1e19ba340d024a4832", + "support" + ], + "upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html": [ + "877348106949c192bd9eb0ce9c283e973d873ffd", + "support" + ], + "upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html.headers": [ + "658f2c2be22add1a5be72b1e19ba340d024a4832", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html": [ + "41dc71d6369a07746a0151b16f2d2eb01029ccc6", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html.headers": [ + "658f2c2be22add1a5be72b1e19ba340d024a4832", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html": [ + "eac4924c1057d4e5da7f8f128b7c7ee501b5f6e6", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html.headers": [ + "658f2c2be22add1a5be72b1e19ba340d024a4832", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-2.sub.html": [ + "d02531c22a97a72d307b7dfb32c5f55f64ae0369", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html": [ + "e90305f8a31486c4eea12415b7d04d731f17d1be", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html.headers": [ + "658f2c2be22add1a5be72b1e19ba340d024a4832", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html": [ + "6510e3dc659975c1d4cd7826f683ca5d30b05afa", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html.headers": [ + "658f2c2be22add1a5be72b1e19ba340d024a4832", + "support" + ], + "upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-meta.sub.html": [ + "28f98b49860dcc8ba80cdd217adc15b3ed93be71", + "support" + ], + "upgrade-insecure-requests/link-upgrade/resources/click-on-link.sub.html": [ + "6c770a1da89f93c00a1ce22302dfbdddd4de6f99", + "support" + ], + "upgrade-insecure-requests/link-upgrade/resources/dummy.html": [ + "2409542664fbfec691cc4cc420a3a047524c4e22", + "support" + ], + "upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html": [ + "d9a3b0b7aa254c929a89a75938c3b8115cfb7b39", + "support" + ], + "upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html.headers": [ + "658f2c2be22add1a5be72b1e19ba340d024a4832", + "support" + ], + "upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame.sub.html": [ + "d9a3b0b7aa254c929a89a75938c3b8115cfb7b39", + "support" + ], + "upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html": [ + "ba4d17350d4e1fdb369e058240d4bb72b24f7175", + "support" + ], "upgrade-insecure-requests/support/pass.png": [ "c06160c04726a02f1583caa0f380d632b6019179", "support" @@ -581075,7 +585515,7 @@ "manual" ], "visual-viewport/viewport-resize-event-on-load-overflowing-page.html": [ - "cd13682091b00c182e570a87eac642613a3c05c2", + "2fe468f0e4460e201de84deeb1291e74e0757518", "testharness" ], "visual-viewport/viewport-scale-iframe-manual.html": [ @@ -583187,7 +587627,7 @@ "wdspec" ], "webdriver/tests/sessions/new_session/invalid_capabilities.py": [ - "4caa08542f61ebe73c020d15d559704af037a97c", + "fcc36e5ca46cb8a9fb9927d5f618c7e9433a0260", "wdspec" ], "webdriver/tests/sessions/new_session/merge.py": [ @@ -583203,7 +587643,7 @@ "support" ], "webdriver/tests/sessions/new_session/support/create.py": [ - "440d88462cc418e4d5e1df6f73074d3a722bd2fd", + "2c79b22324aa0c318522ac3930e314b4f2b32a86", "support" ], "webdriver/tests/sessions/status.py": [ @@ -583982,6 +588422,10 @@ "2a2e3f9ff0a5912fa260d7124f7f5a9c3862c533", "testharness" ], + "webrtc/RTCPeerConnection-track-stats.https.html": [ + "92fbaf0f4c596222975edae433725d616dac6082", + "testharness" + ], "webrtc/RTCPeerConnectionIceEvent-constructor.html": [ "f273bd7fdfc883a15e8fb16fef5309061254c6cc", "testharness" @@ -584067,7 +588511,7 @@ "testharness" ], "webrtc/RTCSctpTransport-maxMessageSize.html": [ - "95a1a701ff1ea46c782131dcd2012d3b4d5d57d2", + "4534a810f47cdca106f5300939acc36275222637", "testharness" ], "webrtc/RTCStats-helper.js": [ @@ -588334,6 +592778,10 @@ "13f9441d368248225df5adc3396a05061ba2924d", "support" ], + "webxr/interfaces.https.html": [ + "22e2278ab484ced51fd0a3880d2bfbf610650371", + "testharness" + ], "webxr/resources/webxr_check.html": [ "3fa96e39a073bda2e813f0b2c2411c26b73d374e", "support" @@ -589434,6 +593882,26 @@ "395ebb855280779c248cc587141568fe0f089715", "testharness" ], + "worklets/layout-worklet-credentials.https.html": [ + "ffab9e5cdf8e3d1c759fa484512b24b45fca9cc8", + "testharness" + ], + "worklets/layout-worklet-csp.https.html": [ + "217dfbcbc3f36128f3e984c44e20013cff3793dd", + "testharness" + ], + "worklets/layout-worklet-import.https.html": [ + "33cf33b95b66020e10fef9515fce2956c27b75ba", + "testharness" + ], + "worklets/layout-worklet-referrer.https.html": [ + "3de86e7b122d6e8403858279e280d7e6ea5af389", + "testharness" + ], + "worklets/layout-worklet-service-worker-interception.https.html": [ + "4d3e8556924545768a0d59309a2460532c7192df", + "testharness" + ], "worklets/paint-worklet-credentials.https.html": [ "fd0d5e0e34454755ddd693916476af809dfd9bb1", "testharness" @@ -589571,7 +594039,7 @@ "support" ], "worklets/resources/worklet-test-utils.js": [ - "f05d557ba57bca35228a5ebbc418816cc3d01ee4", + "2984dfb09c88d7a1831a60d62c64c9b2ec2f6673", "support" ], "x-frame-options/deny.sub.html": [ @@ -590035,7 +594503,7 @@ "testharness" ], "xhr/interfaces.html": [ - "a4c597d2bdb85e37ffe5f5ebba961d7f8a3aeb29", + "eb4babf67805d1d65bcbc44c6dcc1cb3ca793695", "testharness" ], "xhr/loadstart-and-state.html": [ @@ -591063,7 +595531,7 @@ "testharness" ], "xhr/xmlhttprequest-sync-default-feature-policy.sub.html": [ - "a702c102155a1399c4a53477fc079d61b739976f", + "f83a057d1874e5e633c4529d3fac91249de652b3", "testharness" ], "xhr/xmlhttprequest-sync-not-hang-scriptloader-subframe.html": [ diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js.ini new file mode 100644 index 00000000000..125c7716ec1 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js.ini @@ -0,0 +1,4 @@ +[ecdh_bits.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini deleted file mode 100644 index 743a1f3083d..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[ecdh_bits.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js.ini new file mode 100644 index 00000000000..bc636df94ac --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js.ini @@ -0,0 +1,4 @@ +[ecdh_keys.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini deleted file mode 100644 index 0549a4a14ef..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[ecdh_keys.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js.ini new file mode 100644 index 00000000000..e54642475b0 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js.ini @@ -0,0 +1,4 @@ +[hkdf.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini deleted file mode 100644 index fca4b53e6ec..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[hkdf.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js.ini new file mode 100644 index 00000000000..325daee1a61 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js.ini @@ -0,0 +1,4 @@ +[pbkdf2.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini deleted file mode 100644 index 5025f11f1bd..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[pbkdf2.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/digest/digest.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/digest/digest.https.worker.js.ini index ee646a95f38..dfa563f1b05 100644 --- a/tests/wpt/metadata/WebCryptoAPI/digest/digest.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/digest/digest.https.worker.js.ini @@ -1,5 +1,4 @@ -[digest.worker.html] - type: testharness +[digest.https.worker.html] [SHA-1 with empty source data] expected: FAIL diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js.ini new file mode 100644 index 00000000000..664ebee2fcd --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js.ini @@ -0,0 +1,4 @@ +[aes_cbc.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js.ini deleted file mode 100644 index f8f6ca05743..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[aes_cbc.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js.ini new file mode 100644 index 00000000000..7a771aa25b3 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js.ini @@ -0,0 +1,4 @@ +[aes_ctr.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js.ini deleted file mode 100644 index e1abfe885c7..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[aes_ctr.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js.ini new file mode 100644 index 00000000000..c379308d01f --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js.ini @@ -0,0 +1,4 @@ +[aes_gcm.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js.ini deleted file mode 100644 index c93c214c856..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[aes_gcm.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js.ini new file mode 100644 index 00000000000..3ffc1d7c54f --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js.ini @@ -0,0 +1,4 @@ +[rsa.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.worker.js.ini deleted file mode 100644 index 3e796f70f7c..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/encrypt_decrypt/rsa.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[rsa.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/idlharness.html.ini b/tests/wpt/metadata/WebCryptoAPI/idlharness.html.ini deleted file mode 100644 index 9cc87fa0988..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/idlharness.html.ini +++ /dev/null @@ -1,275 +0,0 @@ -[idlharness.html] - type: testharness - [Crypto interface: attribute subtle] - expected: FAIL - - [Crypto interface: crypto must inherit property "subtle" with the proper type (0)] - expected: FAIL - - [CryptoKey interface: existence and properties of interface object] - expected: FAIL - - [CryptoKey interface object length] - expected: FAIL - - [CryptoKey interface object name] - expected: FAIL - - [CryptoKey interface: existence and properties of interface prototype object] - expected: FAIL - - [CryptoKey interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [CryptoKey interface: attribute type] - expected: FAIL - - [CryptoKey interface: attribute extractable] - expected: FAIL - - [CryptoKey interface: attribute algorithm] - expected: FAIL - - [CryptoKey interface: attribute usages] - expected: FAIL - - [SubtleCrypto interface: existence and properties of interface object] - expected: FAIL - - [SubtleCrypto interface object length] - expected: FAIL - - [SubtleCrypto interface object name] - expected: FAIL - - [SubtleCrypto interface: existence and properties of interface prototype object] - expected: FAIL - - [SubtleCrypto interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [SubtleCrypto interface: operation encrypt(AlgorithmIdentifier,CryptoKey,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation decrypt(AlgorithmIdentifier,CryptoKey,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation sign(AlgorithmIdentifier,CryptoKey,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation verify(AlgorithmIdentifier,CryptoKey,BufferSource,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation digest(AlgorithmIdentifier,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation generateKey(AlgorithmIdentifier,boolean,[object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier,CryptoKey,AlgorithmIdentifier,boolean,[object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier,CryptoKey,unsigned long)] - expected: FAIL - - [SubtleCrypto interface: operation importKey(KeyFormat,[object Object\],[object Object\],AlgorithmIdentifier,boolean,[object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation exportKey(KeyFormat,CryptoKey)] - expected: FAIL - - [SubtleCrypto interface: operation wrapKey(KeyFormat,CryptoKey,CryptoKey,AlgorithmIdentifier)] - expected: FAIL - - [SubtleCrypto interface: operation unwrapKey(KeyFormat,BufferSource,CryptoKey,AlgorithmIdentifier,AlgorithmIdentifier,boolean,[object Object\])] - expected: FAIL - - [SubtleCrypto must be primary interface of crypto.subtle] - expected: FAIL - - [Stringification of crypto.subtle] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "encrypt" with the proper type (0)] - expected: FAIL - - [SubtleCrypto interface: calling encrypt(AlgorithmIdentifier,CryptoKey,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "decrypt" with the proper type (1)] - expected: FAIL - - [SubtleCrypto interface: calling decrypt(AlgorithmIdentifier,CryptoKey,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "sign" with the proper type (2)] - expected: FAIL - - [SubtleCrypto interface: calling sign(AlgorithmIdentifier,CryptoKey,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "verify" with the proper type (3)] - expected: FAIL - - [SubtleCrypto interface: calling verify(AlgorithmIdentifier,CryptoKey,BufferSource,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "digest" with the proper type (4)] - expected: FAIL - - [SubtleCrypto interface: calling digest(AlgorithmIdentifier,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "generateKey" with the proper type (5)] - expected: FAIL - - [SubtleCrypto interface: calling generateKey(AlgorithmIdentifier,boolean,[object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "deriveKey" with the proper type (6)] - expected: FAIL - - [SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier,CryptoKey,AlgorithmIdentifier,boolean,[object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "deriveBits" with the proper type (7)] - expected: FAIL - - [SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier,CryptoKey,unsigned long) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "importKey" with the proper type (8)] - expected: FAIL - - [SubtleCrypto interface: calling importKey(KeyFormat,[object Object\],[object Object\],AlgorithmIdentifier,boolean,[object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "exportKey" with the proper type (9)] - expected: FAIL - - [SubtleCrypto interface: calling exportKey(KeyFormat,CryptoKey) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "wrapKey" with the proper type (10)] - expected: FAIL - - [SubtleCrypto interface: calling wrapKey(KeyFormat,CryptoKey,CryptoKey,AlgorithmIdentifier) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "unwrapKey" with the proper type (11)] - expected: FAIL - - [SubtleCrypto interface: calling unwrapKey(KeyFormat,BufferSource,CryptoKey,AlgorithmIdentifier,AlgorithmIdentifier,boolean,[object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [Crypto interface: crypto must inherit property "subtle" with the proper type] - expected: FAIL - - [SubtleCrypto interface: operation encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation sign(AlgorithmIdentifier, CryptoKey, BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, [object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)] - expected: FAIL - - [SubtleCrypto interface: operation importKey(KeyFormat, [object Object\],[object Object\], AlgorithmIdentifier, boolean, [object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation exportKey(KeyFormat, CryptoKey)] - expected: FAIL - - [SubtleCrypto interface: operation wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)] - expected: FAIL - - [SubtleCrypto interface: operation unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object\])] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling encrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "decrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling decrypt(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "sign(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling sign(AlgorithmIdentifier, CryptoKey, BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "digest(AlgorithmIdentifier, BufferSource)" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling digest(AlgorithmIdentifier, BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "generateKey(AlgorithmIdentifier, boolean, [object Object\])" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling generateKey(AlgorithmIdentifier, boolean, [object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object\])" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier, CryptoKey, AlgorithmIdentifier, boolean, [object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long)" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier, CryptoKey, unsigned long) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "importKey(KeyFormat, [object Object\],[object Object\], AlgorithmIdentifier, boolean, [object Object\])" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling importKey(KeyFormat, [object Object\],[object Object\], AlgorithmIdentifier, boolean, [object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "exportKey(KeyFormat, CryptoKey)" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling exportKey(KeyFormat, CryptoKey) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier)" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling wrapKey(KeyFormat, CryptoKey, CryptoKey, AlgorithmIdentifier) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object\])" with the proper type] - expected: FAIL - - [SubtleCrypto interface: calling unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/idlharness.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/idlharness.https.worker.js.ini index a6e580bf852..e3db073d83c 100644 --- a/tests/wpt/metadata/WebCryptoAPI/idlharness.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/idlharness.https.worker.js.ini @@ -1,12 +1,11 @@ -[idlharness.worker.html] - type: testharness +[idlharness.https.worker.html] [ArrayBuffer interface: existence and properties of interface object] expected: FAIL [Crypto interface: attribute subtle] expected: FAIL - [Crypto interface: crypto must inherit property "subtle" with the proper type (0)] + [Crypto interface: crypto must inherit property "subtle" with the proper type] expected: FAIL [CryptoKey interface: existence and properties of interface object] @@ -51,123 +50,6 @@ [SubtleCrypto interface: existence and properties of interface prototype object's "constructor" property] expected: FAIL - [SubtleCrypto interface: operation encrypt(AlgorithmIdentifier,CryptoKey,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation decrypt(AlgorithmIdentifier,CryptoKey,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation sign(AlgorithmIdentifier,CryptoKey,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation verify(AlgorithmIdentifier,CryptoKey,BufferSource,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation digest(AlgorithmIdentifier,BufferSource)] - expected: FAIL - - [SubtleCrypto interface: operation generateKey(AlgorithmIdentifier,boolean,[object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation deriveKey(AlgorithmIdentifier,CryptoKey,AlgorithmIdentifier,boolean,[object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation deriveBits(AlgorithmIdentifier,CryptoKey,unsigned long)] - expected: FAIL - - [SubtleCrypto interface: operation importKey(KeyFormat,[object Object\],[object Object\],AlgorithmIdentifier,boolean,[object Object\])] - expected: FAIL - - [SubtleCrypto interface: operation exportKey(KeyFormat,CryptoKey)] - expected: FAIL - - [SubtleCrypto interface: operation wrapKey(KeyFormat,CryptoKey,CryptoKey,AlgorithmIdentifier)] - expected: FAIL - - [SubtleCrypto interface: operation unwrapKey(KeyFormat,BufferSource,CryptoKey,AlgorithmIdentifier,AlgorithmIdentifier,boolean,[object Object\])] - expected: FAIL - - [SubtleCrypto must be primary interface of crypto.subtle] - expected: FAIL - - [Stringification of crypto.subtle] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "encrypt" with the proper type (0)] - expected: FAIL - - [SubtleCrypto interface: calling encrypt(AlgorithmIdentifier,CryptoKey,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "decrypt" with the proper type (1)] - expected: FAIL - - [SubtleCrypto interface: calling decrypt(AlgorithmIdentifier,CryptoKey,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "sign" with the proper type (2)] - expected: FAIL - - [SubtleCrypto interface: calling sign(AlgorithmIdentifier,CryptoKey,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "verify" with the proper type (3)] - expected: FAIL - - [SubtleCrypto interface: calling verify(AlgorithmIdentifier,CryptoKey,BufferSource,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "digest" with the proper type (4)] - expected: FAIL - - [SubtleCrypto interface: calling digest(AlgorithmIdentifier,BufferSource) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "generateKey" with the proper type (5)] - expected: FAIL - - [SubtleCrypto interface: calling generateKey(AlgorithmIdentifier,boolean,[object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "deriveKey" with the proper type (6)] - expected: FAIL - - [SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier,CryptoKey,AlgorithmIdentifier,boolean,[object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "deriveBits" with the proper type (7)] - expected: FAIL - - [SubtleCrypto interface: calling deriveBits(AlgorithmIdentifier,CryptoKey,unsigned long) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "importKey" with the proper type (8)] - expected: FAIL - - [SubtleCrypto interface: calling importKey(KeyFormat,[object Object\],[object Object\],AlgorithmIdentifier,boolean,[object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "exportKey" with the proper type (9)] - expected: FAIL - - [SubtleCrypto interface: calling exportKey(KeyFormat,CryptoKey) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "wrapKey" with the proper type (10)] - expected: FAIL - - [SubtleCrypto interface: calling wrapKey(KeyFormat,CryptoKey,CryptoKey,AlgorithmIdentifier) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [SubtleCrypto interface: crypto.subtle must inherit property "unwrapKey" with the proper type (11)] - expected: FAIL - - [SubtleCrypto interface: calling unwrapKey(KeyFormat,BufferSource,CryptoKey,AlgorithmIdentifier,AlgorithmIdentifier,boolean,[object Object\]) on crypto.subtle with too few arguments must throw TypeError] - expected: FAIL - - [Crypto interface: crypto must inherit property "subtle" with the proper type] - expected: FAIL - [SubtleCrypto interface: operation encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)] expected: FAIL @@ -204,6 +86,12 @@ [SubtleCrypto interface: operation unwrapKey(KeyFormat, BufferSource, CryptoKey, AlgorithmIdentifier, AlgorithmIdentifier, boolean, [object Object\])] expected: FAIL + [SubtleCrypto must be primary interface of crypto.subtle] + expected: FAIL + + [Stringification of crypto.subtle] + expected: FAIL + [SubtleCrypto interface: crypto.subtle must inherit property "encrypt(AlgorithmIdentifier, CryptoKey, BufferSource)" with the proper type] expected: FAIL diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/ec_importKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/ec_importKey.https.worker.js.ini index 50b89ab7222..fae2ee1aab4 100644 --- a/tests/wpt/metadata/WebCryptoAPI/import_export/ec_importKey.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/ec_importKey.https.worker.js.ini @@ -1,5 +1,4 @@ -[ec_importKey.worker.html] - type: testharness +[ec_importKey.https.worker.html] [Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, [\])] expected: FAIL diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/rsa_importKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/rsa_importKey.https.worker.js.ini index 9f6f25dcca9..2fd43aa59ca 100644 --- a/tests/wpt/metadata/WebCryptoAPI/import_export/rsa_importKey.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/rsa_importKey.https.worker.js.ini @@ -1,5 +1,4 @@ -[rsa_importKey.worker.html] - type: testharness +[rsa_importKey.https.worker.html] [Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt\])] expected: FAIL diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/symmetric_importKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/symmetric_importKey.https.worker.js.ini index d974812e8f6..6bd59d55e6a 100644 --- a/tests/wpt/metadata/WebCryptoAPI/import_export/symmetric_importKey.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/symmetric_importKey.https.worker.js.ini @@ -1,5 +1,4 @@ -[symmetric_importKey.worker.html] - type: testharness +[symmetric_importKey.https.worker.html] [Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [encrypt\])] expected: FAIL diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.https.worker.js.ini new file mode 100644 index 00000000000..13165c83f73 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.https.worker.js.ini @@ -0,0 +1,4 @@ +[ecdsa.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini deleted file mode 100644 index 856c25ade29..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[ecdsa.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.https.worker.js.ini new file mode 100644 index 00000000000..73a0f727de1 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.https.worker.js.ini @@ -0,0 +1,4 @@ +[hmac.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini deleted file mode 100644 index 100da1c1d18..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[hmac.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js.ini new file mode 100644 index 00000000000..0e3c8e7e9fc --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js.ini @@ -0,0 +1,4 @@ +[rsa_pkcs.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini deleted file mode 100644 index 1c96d8b79d9..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[rsa_pkcs.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js.ini new file mode 100644 index 00000000000..319d9233d87 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js.ini @@ -0,0 +1,4 @@ +[rsa_pss.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini deleted file mode 100644 index 67beab0d8f2..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[rsa_pss.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js.ini new file mode 100644 index 00000000000..be805a3f24e --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js.ini @@ -0,0 +1,4 @@ +[wrapKey_unwrapKey.https.worker.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini deleted file mode 100644 index 350cc245816..00000000000 --- a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[wrapKey_unwrapKey.worker.html] - type: testharness - [Untitled] - expected: FAIL - diff --git a/tests/wpt/metadata/css/CSS2/fonts/font-variant-applies-to-005.xht.ini b/tests/wpt/metadata/css/CSS2/fonts/font-variant-applies-to-005.xht.ini deleted file mode 100644 index 466614c4127..00000000000 --- a/tests/wpt/metadata/css/CSS2/fonts/font-variant-applies-to-005.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[font-variant-applies-to-005.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/lists/list-style-applies-to-012.xht.ini b/tests/wpt/metadata/css/CSS2/lists/list-style-applies-to-012.xht.ini deleted file mode 100644 index 0bc7d42a181..00000000000 --- a/tests/wpt/metadata/css/CSS2/lists/list-style-applies-to-012.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[list-style-applies-to-012.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/lists/list-style-type-applies-to-012.xht.ini b/tests/wpt/metadata/css/CSS2/lists/list-style-type-applies-to-012.xht.ini deleted file mode 100644 index 185c50e8f99..00000000000 --- a/tests/wpt/metadata/css/CSS2/lists/list-style-type-applies-to-012.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[list-style-type-applies-to-012.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-000.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-000.xht.ini new file mode 100644 index 00000000000..fb274076bf4 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-000.xht.ini @@ -0,0 +1,2 @@ +[first-letter-selector-000.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-001.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-001.xht.ini new file mode 100644 index 00000000000..f71d075b3df --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-001.xht.ini @@ -0,0 +1,2 @@ +[first-letter-selector-001.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-003.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-003.xht.ini new file mode 100644 index 00000000000..48f477d036d --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-003.xht.ini @@ -0,0 +1,2 @@ +[first-letter-selector-003.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-004.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-004.xht.ini new file mode 100644 index 00000000000..faf827cccdb --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-004.xht.ini @@ -0,0 +1,2 @@ +[first-letter-selector-004.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-007.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-007.xht.ini new file mode 100644 index 00000000000..c006021a56a --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-007.xht.ini @@ -0,0 +1,2 @@ +[first-letter-selector-007.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-008.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-008.xht.ini new file mode 100644 index 00000000000..ec4af304cb4 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-008.xht.ini @@ -0,0 +1,2 @@ +[first-letter-selector-008.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-019.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-019.xht.ini new file mode 100644 index 00000000000..b32a0c68330 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-letter-selector-019.xht.ini @@ -0,0 +1,2 @@ +[first-letter-selector-019.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-019.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-019.xht.ini new file mode 100644 index 00000000000..b2ba32649d8 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-019.xht.ini @@ -0,0 +1,2 @@ +[first-line-pseudo-019.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-020.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-020.xht.ini new file mode 100644 index 00000000000..013dba5388f --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-020.xht.ini @@ -0,0 +1,2 @@ +[first-line-pseudo-020.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-021.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-021.xht.ini new file mode 100644 index 00000000000..5154b39f398 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/first-line-pseudo-021.xht.ini @@ -0,0 +1,2 @@ +[first-line-pseudo-021.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/lang-selector-005.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/lang-selector-005.xht.ini new file mode 100644 index 00000000000..d69bffd166e --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/lang-selector-005.xht.ini @@ -0,0 +1,2 @@ +[lang-selector-005.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/lang-selector-006.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/lang-selector-006.xht.ini new file mode 100644 index 00000000000..cc564d2ee4b --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/lang-selector-006.xht.ini @@ -0,0 +1,2 @@ +[lang-selector-006.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/selectors/pseudo-006.xht.ini b/tests/wpt/metadata/css/CSS2/selectors/pseudo-006.xht.ini new file mode 100644 index 00000000000..5711ca8dbeb --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/selectors/pseudo-006.xht.ini @@ -0,0 +1,2 @@ +[pseudo-006.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/at-charset-002.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/at-charset-002.xht.ini deleted file mode 100644 index 27f0f13e2d5..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/at-charset-002.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[at-charset-002.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/at-charset-003.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/at-charset-003.xht.ini deleted file mode 100644 index c4be000564e..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/at-charset-003.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[at-charset-003.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/at-charset-004.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/at-charset-004.xht.ini deleted file mode 100644 index 3810fc2cbb5..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/at-charset-004.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[at-charset-004.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/at-charset-005.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/at-charset-005.xht.ini deleted file mode 100644 index b62d77d28bb..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/at-charset-005.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[at-charset-005.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/at-charset-006.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/at-charset-006.xht.ini deleted file mode 100644 index 766ebc92d41..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/at-charset-006.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[at-charset-006.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/comments-005.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/comments-005.xht.ini deleted file mode 100644 index 2dbde103d07..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/comments-005.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[comments-005.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/content-type-000.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/content-type-000.xht.ini deleted file mode 100644 index d7149bb085e..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/content-type-000.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[content-type-000.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/ident-003.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/ident-003.xht.ini deleted file mode 100644 index ab1272afba9..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/ident-003.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[ident-003.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/syntax/ident-020.xht.ini b/tests/wpt/metadata/css/CSS2/syntax/ident-020.xht.ini deleted file mode 100644 index 0226043d1ed..00000000000 --- a/tests/wpt/metadata/css/CSS2/syntax/ident-020.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[ident-020.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/caption-side-applies-to-007.xht.ini b/tests/wpt/metadata/css/CSS2/tables/caption-side-applies-to-007.xht.ini new file mode 100644 index 00000000000..fb449a5f070 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/caption-side-applies-to-007.xht.ini @@ -0,0 +1,2 @@ +[caption-side-applies-to-007.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-001.xht.ini b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-001.xht.ini new file mode 100644 index 00000000000..abddf3911b3 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-001.xht.ini @@ -0,0 +1,2 @@ +[collapsing-border-model-001.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-003.xht.ini b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-003.xht.ini new file mode 100644 index 00000000000..7fb8503eead --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-003.xht.ini @@ -0,0 +1,2 @@ +[collapsing-border-model-003.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-004.xht.ini b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-004.xht.ini new file mode 100644 index 00000000000..3b8a5b0dc8b --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-004.xht.ini @@ -0,0 +1,2 @@ +[collapsing-border-model-004.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-007.xht.ini b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-007.xht.ini new file mode 100644 index 00000000000..321f7ff4b22 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-007.xht.ini @@ -0,0 +1,2 @@ +[collapsing-border-model-007.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-009.xht.ini b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-009.xht.ini new file mode 100644 index 00000000000..762c5baed53 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/collapsing-border-model-009.xht.ini @@ -0,0 +1,2 @@ +[collapsing-border-model-009.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/row-visibility-001.xht.ini b/tests/wpt/metadata/css/CSS2/tables/row-visibility-001.xht.ini new file mode 100644 index 00000000000..723b6885faa --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/row-visibility-001.xht.ini @@ -0,0 +1,2 @@ +[row-visibility-001.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/row-visibility-002.xht.ini b/tests/wpt/metadata/css/CSS2/tables/row-visibility-002.xht.ini new file mode 100644 index 00000000000..61fbc5acc76 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/row-visibility-002.xht.ini @@ -0,0 +1,2 @@ +[row-visibility-002.xht] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-flexbox/flexbox_inline.html.ini b/tests/wpt/metadata/css/css-flexbox/flexbox_inline.html.ini new file mode 100644 index 00000000000..ec520ac0f8c --- /dev/null +++ b/tests/wpt/metadata/css/css-flexbox/flexbox_inline.html.ini @@ -0,0 +1,2 @@ +[flexbox_inline.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-flexbox/percentage-heights-000.html.ini b/tests/wpt/metadata/css/css-flexbox/percentage-heights-000.html.ini index 3831f0146ff..297270704ff 100644 --- a/tests/wpt/metadata/css/css-flexbox/percentage-heights-000.html.ini +++ b/tests/wpt/metadata/css/css-flexbox/percentage-heights-000.html.ini @@ -6,12 +6,12 @@ [.flexbox 2] expected: FAIL - [.flexbox 3] - expected: FAIL - [.flexbox 5] expected: FAIL [.flexbox 6] expected: FAIL + [.flexbox 4] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-flexbox/percentage-heights-001.html.ini b/tests/wpt/metadata/css/css-flexbox/percentage-heights-001.html.ini index e86530f2c96..785b94a7bb4 100644 --- a/tests/wpt/metadata/css/css-flexbox/percentage-heights-001.html.ini +++ b/tests/wpt/metadata/css/css-flexbox/percentage-heights-001.html.ini @@ -2,9 +2,6 @@ [.flexbox 2] expected: FAIL - [.flexbox 3] - expected: FAIL - [.flexbox 4] expected: FAIL @@ -29,6 +26,9 @@ [.flexbox 12] expected: FAIL - [.flexbox 13] + [.flexbox 1] + expected: FAIL + + [.flexbox 11] expected: FAIL diff --git a/tests/wpt/metadata/css/css-flexbox/position-absolute-001.html.ini b/tests/wpt/metadata/css/css-flexbox/position-absolute-001.html.ini index e0077cbfc6a..88274c494fe 100644 --- a/tests/wpt/metadata/css/css-flexbox/position-absolute-001.html.ini +++ b/tests/wpt/metadata/css/css-flexbox/position-absolute-001.html.ini @@ -1,16 +1,10 @@ [position-absolute-001.html] - [.flexbox 1] - expected: FAIL - [.flexbox 2] expected: FAIL [.flexbox 3] expected: FAIL - [.flexbox 4] - expected: FAIL - [.flexbox 5] expected: FAIL @@ -26,18 +20,12 @@ [.flexbox 10] expected: FAIL - [.flexbox 11] - expected: FAIL - [.flexbox 12] expected: FAIL [.flexbox 13] expected: FAIL - [.flexbox 14] - expected: FAIL - [.flexbox 15] expected: FAIL @@ -56,9 +44,6 @@ [.flexbox 21] expected: FAIL - [.flexbox 22] - expected: FAIL - [.flexbox 23] expected: FAIL @@ -80,9 +65,6 @@ [.flexbox 31] expected: FAIL - [.flexbox 32] - expected: FAIL - [.flexbox 33] expected: FAIL @@ -128,9 +110,6 @@ [.flexbox 51] expected: FAIL - [.flexbox 52] - expected: FAIL - [.flexbox 53] expected: FAIL @@ -182,18 +161,12 @@ [.flexbox 70] expected: FAIL - [.flexbox 71] - expected: FAIL - [.flexbox 72] expected: FAIL [.flexbox 73] expected: FAIL - [.flexbox 74] - expected: FAIL - [.flexbox 75] expected: FAIL @@ -212,18 +185,12 @@ [.flexbox 80] expected: FAIL - [.flexbox 81] - expected: FAIL - [.flexbox 82] expected: FAIL [.flexbox 83] expected: FAIL - [.flexbox 84] - expected: FAIL - [.flexbox 85] expected: FAIL @@ -239,18 +206,12 @@ [.flexbox 90] expected: FAIL - [.flexbox 91] - expected: FAIL - [.flexbox 92] expected: FAIL [.flexbox 93] expected: FAIL - [.flexbox 94] - expected: FAIL - [.flexbox 95] expected: FAIL @@ -269,9 +230,6 @@ [.flexbox 101] expected: FAIL - [.flexbox 102] - expected: FAIL - [.flexbox 103] expected: FAIL @@ -293,9 +251,6 @@ [.flexbox 111] expected: FAIL - [.flexbox 112] - expected: FAIL - [.flexbox 113] expected: FAIL @@ -314,3 +269,48 @@ [.flexbox 119] expected: FAIL + [.flexbox 9] + expected: FAIL + + [.flexbox 19] + expected: FAIL + + [.flexbox 27] + expected: FAIL + + [.flexbox 30] + expected: FAIL + + [.flexbox 37] + expected: FAIL + + [.flexbox 40] + expected: FAIL + + [.flexbox 47] + expected: FAIL + + [.flexbox 50] + expected: FAIL + + [.flexbox 69] + expected: FAIL + + [.flexbox 89] + expected: FAIL + + [.flexbox 99] + expected: FAIL + + [.flexbox 107] + expected: FAIL + + [.flexbox 110] + expected: FAIL + + [.flexbox 117] + expected: FAIL + + [.flexbox 120] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-flexbox/position-absolute-002.html.ini b/tests/wpt/metadata/css/css-flexbox/position-absolute-002.html.ini index de14e31ec4a..5f64104f3aa 100644 --- a/tests/wpt/metadata/css/css-flexbox/position-absolute-002.html.ini +++ b/tests/wpt/metadata/css/css-flexbox/position-absolute-002.html.ini @@ -1,7 +1,4 @@ [position-absolute-002.html] - [.flexbox 1] - expected: FAIL - [.flexbox 2] expected: FAIL @@ -23,3 +20,6 @@ [.flexbox 8] expected: FAIL + [.flexbox 9] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-values/lh-rlh-on-root-001.html.ini b/tests/wpt/metadata/css/css-values/lh-rlh-on-root-001.html.ini new file mode 100644 index 00000000000..2f0ac1423d2 --- /dev/null +++ b/tests/wpt/metadata/css/css-values/lh-rlh-on-root-001.html.ini @@ -0,0 +1,13 @@ +[lh-rlh-on-root-001.html] + [2lh in line-height on root] + expected: FAIL + + [2rlh in line-height on root] + expected: FAIL + + [2lh in font-size on root] + expected: FAIL + + [2rlh in font-size on root] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-values/lh-unit-001.html.ini b/tests/wpt/metadata/css/css-values/lh-unit-001.html.ini new file mode 100644 index 00000000000..b53f95bdbb4 --- /dev/null +++ b/tests/wpt/metadata/css/css-values/lh-unit-001.html.ini @@ -0,0 +1,2 @@ +[lh-unit-001.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/lh-unit-002.html.ini b/tests/wpt/metadata/css/css-values/lh-unit-002.html.ini new file mode 100644 index 00000000000..bad542144c5 --- /dev/null +++ b/tests/wpt/metadata/css/css-values/lh-unit-002.html.ini @@ -0,0 +1,2 @@ +[lh-unit-002.html] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/security/redirect-to-url-with-credentials.https.html.ini b/tests/wpt/metadata/fetch/security/redirect-to-url-with-credentials.https.html.ini new file mode 100644 index 00000000000..f903b9d7fa3 --- /dev/null +++ b/tests/wpt/metadata/fetch/security/redirect-to-url-with-credentials.https.html.ini @@ -0,0 +1,4 @@ +[redirect-to-url-with-credentials.https.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini b/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini index 17ebf0277ff..1e3ff756963 100644 --- a/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini +++ b/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini @@ -20,3 +20,6 @@ [Document URLs: unpaired surrogate codepoint should be replaced with U+FFFD] expected: FAIL + [location.href : unpaired surrogate codepoint should be replaced with U+FFFD] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html.ini new file mode 100644 index 00000000000..ccaf4df2de3 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html.ini @@ -0,0 +1,7 @@ +[conditionally-block-rendering-on-link-media-attr.html] + [Only the style sheet loaded via a link element whose media attribute matches the environment should block following script execution] + expected: FAIL + + [Both style sheets loaded via the link elements should be registered as style sheets for the document after 2 seconds] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini index 6b0ad4e3e0f..91b6048e419 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini @@ -51,27 +51,75 @@ [video/ogg with and without codecs] expected: FAIL - [audio/mp4 (optional)] + [video/x-new-fictional-format] expected: FAIL - [audio/ogg (optional)] + [audio/mp4; codecs="mp4a.40.2" (optional)] expected: FAIL - [audio/wav (optional)] + [audio/mp4 with bogus codec] expected: FAIL - [audio/webm (optional)] + [audio/ogg; codecs="opus" (optional)] expected: FAIL - [video/3gpp (optional)] + [audio/ogg; codecs="vorbis" (optional)] expected: FAIL - [video/mp4 (optional)] + [audio/ogg with bogus codec] expected: FAIL - [video/ogg (optional)] + [audio/wav; codecs="1" (optional)] expected: FAIL - [video/webm (optional)] + [audio/wav with bogus codec] + expected: FAIL + + [audio/webm with bogus codec] + expected: FAIL + + [audio/webm with and without codecs] + expected: FAIL + + [video/3gpp with bogus codec] + expected: FAIL + + [video/3gpp with and without codecs] + expected: FAIL + + [video/mp4; codecs="mp4a.40.2" (optional)] + expected: FAIL + + [video/mp4; codecs="avc1.42E01E" (optional)] + expected: FAIL + + [video/mp4; codecs="avc1.4D401E" (optional)] + expected: FAIL + + [video/mp4; codecs="avc1.58A01E" (optional)] + expected: FAIL + + [video/mp4; codecs="avc1.64001E" (optional)] + expected: FAIL + + [video/mp4 with bogus codec] + expected: FAIL + + [video/ogg; codecs="opus" (optional)] + expected: FAIL + + [video/ogg; codecs="vorbis" (optional)] + expected: FAIL + + [video/ogg; codecs="theora" (optional)] + expected: FAIL + + [video/ogg with bogus codec] + expected: FAIL + + [video/webm with bogus codec] + expected: FAIL + + [video/webm with and without codecs] expected: FAIL diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index 48dce5e5051..5ae6f54c5e9 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1,2 +1,2 @@ -local: 9187c9a093860d9f3c31b5a5f402458aa4a607cb -upstream: 1b93a7d98bc4849fa8f365d9bd13fb2a0448c6e1 +local: 1f6a864ab5372fe4f59b1a4c3db7cf8e7a79b06d +upstream: 08e864fd23048d707cc42bed8538e644d8dec950 diff --git a/tests/wpt/metadata/performance-timeline/po-takeRecords.html.ini b/tests/wpt/metadata/performance-timeline/po-takeRecords.html.ini new file mode 100644 index 00000000000..7ea09b3295f --- /dev/null +++ b/tests/wpt/metadata/performance-timeline/po-takeRecords.html.ini @@ -0,0 +1,4 @@ +[po-takeRecords.html] + [Test PerformanceObserver's takeRecords()] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 9f3589df210..22bc7212f2e 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -12478,6 +12478,11 @@ {} ] ], + "mozilla/resources/http-cache-trickle.py": [ + [ + {} + ] + ], "mozilla/resources/http-cache.js": [ [ {} @@ -32655,6 +32660,12 @@ {} ] ], + "css/issue_18544_flow_list_crash.html": [ + [ + "/_mozilla/css/issue_18544_flow_list_crash.html", + {} + ] + ], "css/matchMedia.html": [ [ "/_mozilla/css/matchMedia.html", @@ -33245,6 +33256,12 @@ {} ] ], + "mozilla/http-cache-xhr.html": [ + [ + "/_mozilla/mozilla/http-cache-xhr.html", + {} + ] + ], "mozilla/http-cache.html": [ [ "/_mozilla/mozilla/http-cache.html", @@ -63320,6 +63337,10 @@ "863e3c8c5ffa1627a20f51e89b7eca884ea381dd", "reftest" ], + "css/issue_18544_flow_list_crash.html": [ + "9e41b681e414db9bd5f3fc75210de12a6e660c28", + "testharness" + ], "css/jpeg_normal.html": [ "4e9d02f232492b55f8e6b71046b392c4dc2c9fb6", "reftest" @@ -66348,6 +66369,10 @@ "592f69ee432ba5bc7a2f2649e72e083d21393496", "testharness" ], + "mozilla/http-cache-xhr.html": [ + "d4747fdc9ec6acc50718c13a668451987a44d219", + "testharness" + ], "mozilla/http-cache.html": [ "33827dc9bdb0efcbcae4f730086693be315cfc14", "testharness" @@ -72024,8 +72049,12 @@ "78686147f85e4146e7fc58c1f67a613f65b099a2", "support" ], + "mozilla/resources/http-cache-trickle.py": [ + "48f4e32ec2e1c1b6d47e89254045b398c1d84d40", + "support" + ], "mozilla/resources/http-cache.js": [ - "c6b1ee9def26d4e12a1b93e551c225f82b4717c2", + "4bf71e1f328e778990eb756741a3be58f4f57ef6", "support" ], "mozilla/resources/iframe_contentDocument_inner.html": [ diff --git a/tests/wpt/mozilla/meta/mozilla/http-cache-xhr.html.ini b/tests/wpt/mozilla/meta/mozilla/http-cache-xhr.html.ini new file mode 100644 index 00000000000..794b50d9245 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/http-cache-xhr.html.ini @@ -0,0 +1,2 @@ +[http-cache-xhr.html] + type: testharness diff --git a/tests/wpt/mozilla/tests/css/issue_18544_flow_list_crash.html b/tests/wpt/mozilla/tests/css/issue_18544_flow_list_crash.html new file mode 100644 index 00000000000..9ef57cad02a --- /dev/null +++ b/tests/wpt/mozilla/tests/css/issue_18544_flow_list_crash.html @@ -0,0 +1,16 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Issue 18544 - Flow list crash</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div style="position:fixed"></div> +<script> + async_test(function(test) { + window.onload = test.step_func_done(function() { + document.body.children[0].style['column-count'] = 1; + document.body.offsetTop; + assert_true(true, "Did not crash"); + }); + }); +</script> + diff --git a/tests/wpt/mozilla/tests/mozilla/http-cache-xhr.html b/tests/wpt/mozilla/tests/mozilla/http-cache-xhr.html new file mode 100644 index 00000000000..2e1bf9bae7e --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/http-cache-xhr.html @@ -0,0 +1,56 @@ +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/utils.js"></script> +<script src="resources/http-cache.js"></script> +<script> + var test = async_test('The response from an aborted XHR request should not be cached'); + test.step(function() { + var client = new XMLHttpRequest(); + var requests = [ + { + response_status: [200, 'OK'], + "response_headers": [ + ['Expires', http_date(100000)], + ['Last-Modified', http_date(0)] + ], + response_body: '12' + }, + { + response_status: [200, 'OK'], + "response_headers": [ + ['Expires', http_date(100000)], + ['Last-Modified', http_date(0)] + ], + response_body: '12' + } + ]; + var uuid = token(); + var url = make_url(uuid, requests, 0); + url += '&trickle=true'; + client.onprogress = test.step_func(function() { + var client2 = new XMLHttpRequest(); + client2.onloadend = test.step_func(function(event) { + server_state(uuid).then(test.step_func(function(state){ + // Two server hits for two requests, no caching. + assert_equals(state.length, 2); + // The empty, aborted response. + assert_equals(client.response, ""); + // The complete, non-aborted, response. + assert_equals(client2.response, "12"); + test.done(); + })); + }); + client.onabort = test.step_func(function() { + client2.open("GET", url); + client2.send(); + }); + client.abort(); + }); + client.open("GET", url); + client.send(); + }); +</script> +</head> +</html> diff --git a/tests/wpt/mozilla/tests/mozilla/resources/http-cache-trickle.py b/tests/wpt/mozilla/tests/mozilla/resources/http-cache-trickle.py new file mode 100644 index 00000000000..e9f5fad1781 --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/resources/http-cache-trickle.py @@ -0,0 +1,64 @@ +# 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/. + + +import time +from json import JSONEncoder, JSONDecoder +from base64 import b64decode + + +def main(request, response): + uuid = request.GET.first("token", None) + if "querystate" in request.GET: + response.headers.set("Content-Type", "text/plain") + return JSONEncoder().encode(request.server.stash.take(uuid)) + + server_state = request.server.stash.take(uuid) + if not server_state: + server_state = [] + + requests = JSONDecoder().decode(b64decode(request.GET.first("info", ""))) + config = requests[len(server_state)] + + state = dict() + state["request_method"] = request.method + state["request_headers"] = dict([[h.lower(), request.headers[h]] for h in request.headers]) + server_state.append(state) + request.server.stash.put(uuid, server_state) + + note_headers = ['content-type', 'access-control-allow-origin', 'last-modified', 'etag'] + noted_headers = {} + for header in config.get('response_headers', []): + if header[0].lower() in ["location", "content-location"]: # magic! + header[1] = "%s&target=%s" % (request.url, header[1]) + response.headers.set(header[0], header[1]) + if header[0].lower() in note_headers: + noted_headers[header[0].lower()] = header[1] + + if "access-control-allow-origin" not in noted_headers: + response.headers.set("Access-Control-Allow-Origin", "*") + if "content-type" not in noted_headers: + response.headers.set("Content-Type", "text/plain") + response.headers.set("Server-Request-Count", len(server_state)) + + code, phrase = config.get("response_status", [200, "OK"]) + + if request.headers.get("If-Modified-Since", False) == noted_headers.get('last-modified', True): + code, phrase = [304, "Not Modified"] + if request.headers.get("If-None-Match", False) == noted_headers.get('etag', True): + code, phrase = [304, "Not Modified"] + + response.status = (code, phrase) + + if request.GET.first("trickle", None): + response.write_status_headers() + for byte in config.get("response_body", uuid): + response.writer.write_content(byte) + time.sleep(1) + + content = config.get("response_body", uuid) + if code in [204, 304]: + return "" + else: + return content diff --git a/tests/wpt/mozilla/tests/mozilla/resources/http-cache.js b/tests/wpt/mozilla/tests/mozilla/resources/http-cache.js index 34aaacf536f..b7f92a93f13 100644 --- a/tests/wpt/mozilla/tests/mozilla/resources/http-cache.js +++ b/tests/wpt/mozilla/tests/mozilla/resources/http-cache.js @@ -40,11 +40,11 @@ function make_url(uuid, requests, idx) { if ("query_arg" in requests[idx]) { arg = "&target=" + requests[idx].query_arg; } - return "/fetch/http-cache/resources/http-cache.py?token=" + uuid + "&info=" + btoa(JSON.stringify(requests)) + arg; + return "resources/http-cache-trickle.py?token=" + uuid + "&info=" + btoa(JSON.stringify(requests)) + arg; } function server_state(uuid) { - return fetch("/fetch/http-cache/resources/http-cache.py?querystate&token=" + uuid) + return fetch("resources/http-cache-trickle.py?querystate&token=" + uuid) .then(function(response) { return response.text(); }).then(function(text) { diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml index f5db6cac09e..287c6337cbd 100644 --- a/tests/wpt/web-platform-tests/.travis.yml +++ b/tests/wpt/web-platform-tests/.travis.yml @@ -87,7 +87,7 @@ matrix: apt: packages: - libnss3-tools - env: JOB=wpt_integration TOXENV=py27 SCRIPT=tools/ci/ci_wpt.sh + env: JOB=wpt_integration TOXENV=py27,py27-flake8 SCRIPT=tools/ci/ci_wpt.sh exclude: - env: # exclude empty env from the top-level above allow_failures: diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.js b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.js index cd2a801994c..4e5b9a88833 100644 --- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.js +++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.js @@ -38,7 +38,8 @@ function makeVideo() { video.oncanplaythrough = function() { resolve(video); }; - video.src = "/images/pattern.ogv"; + video.onerror = reject; + video.src = getVideoURI("/images/pattern"); }); } diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html index 98b656e78b4..d527b4c2adb 100644 --- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html +++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html @@ -4,6 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/canvas-tests.js"></script> +<script src="/common/media.js"></script> <script src="common.js"></script> <link rel="stylesheet" href="/common/canvas-tests.css"> <body> diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html index 1fe71856fc4..12f9974a687 100644 --- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html +++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html @@ -1,6 +1,7 @@ <!doctype html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/common/media.js"></script> <script src="common.js"></script> <script> diff --git a/tests/wpt/web-platform-tests/FileAPI/file/File-constructor.html b/tests/wpt/web-platform-tests/FileAPI/file/File-constructor.html index 9c1a940662a..646ed99c212 100644 --- a/tests/wpt/web-platform-tests/FileAPI/file/File-constructor.html +++ b/tests/wpt/web-platform-tests/FileAPI/file/File-constructor.html @@ -47,7 +47,7 @@ test_first_argument(["bits", new Blob(["bits"]), new Blob(), new Uint8Array([0x5 test_first_argument([12], 2, "Number in fileBits"); test_first_argument([[1,2,3]], 5, "Array in fileBits"); test_first_argument([{}], 15, "Object in fileBits"); // "[object Object]" -test_first_argument([document], 21, "HTMLDocument in fileBits"); // "[object HTMLDocument]" +test_first_argument([document.body], 24, "HTMLBodyElement in fileBits"); // "[object HTMLBodyElement]" test_first_argument([to_string_obj], 8, "Object with toString in fileBits"); test_first_argument({[Symbol.iterator]() { let i = 0; @@ -88,7 +88,7 @@ test_second_argument("dummy/foo", "dummy:foo", "Using special character in fileN test_second_argument(null, "null", "Using null fileName"); test_second_argument(1, "1", "Using number fileName"); test_second_argument('', '', "Using empty string fileName"); -test_second_argument(document, '[object HTMLDocument]', "Using object fileName"); +test_second_argument(document.body, '[object HTMLBodyElement]', "Using object fileName"); // testing the third argument [ diff --git a/tests/wpt/web-platform-tests/FileAPI/url/sandboxed-iframe.html b/tests/wpt/web-platform-tests/FileAPI/url/sandboxed-iframe.html index e7a8a15daa9..3eca08da8a4 100644 --- a/tests/wpt/web-platform-tests/FileAPI/url/sandboxed-iframe.html +++ b/tests/wpt/web-platform-tests/FileAPI/url/sandboxed-iframe.html @@ -9,7 +9,6 @@ <script> const iframe_scripts = [ - '/resources/testharness.js', 'resources/fetch-tests.js', 'url-format.any.js', 'url-with-xhr.any.js', @@ -18,6 +17,8 @@ const iframe_scripts = [ ]; let html = '<!doctype html>\n<meta charset="utf-8">\n<body>\n'; +html = html + '<script src="/resources/testharness.js"></' + 'script>\n'; +html = html + '<script>setup({"explicit_timeout": true});</' + 'script>\n'; for (const script of iframe_scripts) html = html + '<script src="' + script + '"></' + 'script>\n'; @@ -27,4 +28,4 @@ frame.setAttribute('style', 'display:none;'); fetch_tests_from_window(frame.contentWindow); -</script>
\ No newline at end of file +</script> diff --git a/tests/wpt/web-platform-tests/FileAPI/url/url-format.any.js b/tests/wpt/web-platform-tests/FileAPI/url/url-format.any.js index 88b82ce9b67..d485bfaac61 100644 --- a/tests/wpt/web-platform-tests/FileAPI/url/url-format.any.js +++ b/tests/wpt/web-platform-tests/FileAPI/url/url-format.any.js @@ -2,7 +2,7 @@ const blob = new Blob(['test']); const file = new File(['test'], 'name'); test(() => { - const url_count = 10000; + const url_count = 5000; let list = []; for (let i = 0; i < url_count; ++i) diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js index 8ff0ac3053c..8ff0ac3053c 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js index 488d60216fc..488d60216fc 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js index b98b0f3502b..b98b0f3502b 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js index 1ab68d29efc..1ab68d29efc 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/digest/digest.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/digest/digest.https.worker.js index 9b1072e1dd8..9b1072e1dd8 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/digest/digest.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/digest/digest.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js index c0c0395fc32..c0c0395fc32 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js index 6577525ee21..6577525ee21 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_ctr.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js index 7a14b69a752..7a14b69a752 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/rsa.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js index b0163262af9..b0163262af9 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/rsa.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/encrypt_decrypt/rsa.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.html b/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.html deleted file mode 100644 index 53faef26d4d..00000000000 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.html +++ /dev/null @@ -1,40 +0,0 @@ -<!doctype html> -<html> -<head> -<meta charset=utf-8> -<title>IDL check of WebCrypto</title> -<link rel="help" href="https://w3c.github.io/webcrypto/Overview.html#crypto-interface"> - -<script src=/resources/testharness.js></script> -<script src=/resources/testharnessreport.js></script> -<script src=/resources/WebIDLParser.js></script> -<script src=/resources/idlharness.js></script> -</head> -<body> - -<h1 class="instructions">Description</h1> - -<p class="instructions">This test verifies that the implementations of the WebCrypto API match with its WebIDL definition.</p> - -<div id='log'></div> - -<script> -var file_input; -setup(function() { - var idl_array = new IdlArray(); - - var request = new XMLHttpRequest(); - request.open("GET", "WebCryptoAPI.idl"); - request.send(); - request.onload = function() { - var idls = request.responseText; - - idl_array.add_idls(idls); - - idl_array.add_objects({"Crypto":["crypto"], "SubtleCrypto":["crypto.subtle"]}); - - idl_array.test(); - done(); - }; -}, {explicit_done: true}); -</script> diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.https.html b/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.https.html index 53faef26d4d..c4fd0f34092 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.https.html +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.https.html @@ -24,7 +24,7 @@ setup(function() { var idl_array = new IdlArray(); var request = new XMLHttpRequest(); - request.open("GET", "WebCryptoAPI.idl"); + request.open("GET", "../interfaces/WebCryptoAPI.idl"); request.send(); request.onload = function() { var idls = request.responseText; diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.https.worker.js index ba033014e8f..b4bbdda4b29 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/idlharness.https.worker.js @@ -2,7 +2,7 @@ importScripts("/resources/testharness.js"); importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js"); var request = new XMLHttpRequest(); -request.open("GET", "WebCryptoAPI.idl"); +request.open("GET", "../interfaces/WebCryptoAPI.idl"); request.send(); request.onload = function() { var idl_array = new IdlArray(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.https.worker.js index 698df52e9d3..698df52e9d3 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker.js index 3b2435be010..3b2435be010 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.https.worker.js index bedd082da49..bedd082da49 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.https.worker.js index f379d466784..f379d466784 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.https.worker.js index 79d8f21d730..79d8f21d730 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js index 6b4dbee7987..6b4dbee7987 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js index fdf7b998d95..fdf7b998d95 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.https.worker.js diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js index 4cf813ba5bf..4cf813ba5bf 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.https.worker.js diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-disabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-disabled-by-feature-policy.https.html index d849db13359..9476efb6a0f 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-disabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-disabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Accelerometer Feature Policy Test: Disabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 7306ed58ce6..aa8ea10eb0b 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Accelerometer Feature Policy Test: Enabled by attribute redirect on load</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html index 1ee0f42a510..860a027b55b 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Accelerometer Feature Policy Test: Enabled by attribute</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy.https.html index 6dc33c829ca..889047a0703 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Accelerometer Feature Policy Test: Enabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html index fddbca0f5bb..bf458529e84 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Accelerometer Feature Policy Test: Enabled on self origin</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer.https.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer.https.html index 2a9bc543cdf..9563270fcda 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer.https.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer.https.html @@ -11,5 +11,6 @@ runGenericSensorTests(Accelerometer); runGenericSensorTests(GravitySensor); +runGenericSensorTests(LinearAccelerationSensor); </script> diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer_insecure_context.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer_insecure_context.html index 96eeef2daf7..ff1f0832c31 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer_insecure_context.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer_insecure_context.html @@ -7,7 +7,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="/generic-sensor/generic-sensor-tests.js"></script> <div id="log"></div> -<h2>Precondition</h2> +<h2>Note:</h2> <ol> <li> Run test in an insecure context, e.g. http://example.com/. @@ -17,5 +17,6 @@ runGenericSensorInsecureContext("Accelerometer"); runGenericSensorInsecureContext("GravitySensor"); +runGenericSensorInsecureContext("LinearAccelerationSensor"); </script> diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer_onerror-manual.https.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer_onerror-manual.https.html index 8778693ccb2..f69b1b6ce5c 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer_onerror-manual.https.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer_onerror-manual.https.html @@ -17,5 +17,6 @@ runGenericSensorOnerror(Accelerometer); runGenericSensorOnerror(GravitySensor); +runGenericSensorOnerror(LinearAccelerationSensor); </script> diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html index f5d4b0fdde8..84bee557186 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AmbientLightSensor Feature Policy Test: Enabled by attribute redirect on load</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute.https.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute.https.html index 13de3f8b4ee..a9810128956 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute.https.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AmbientLightSensor Feature Policy Test: Enabled by attribute</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy.https.html index f2c2c3bbae1..e4ce2566bf0 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AmbientLightSensor Feature Policy Test: Enabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-on-self-origin-by-feature-policy.https.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-on-self-origin-by-feature-policy.https.html index 33d36cb44e7..bb2c4a61841 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-on-self-origin-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor-enabled-on-self-origin-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AmbientLightSensor Feature Policy Test: Enabled on self origin</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/beacon/beacon-common.sub.js b/tests/wpt/web-platform-tests/beacon/beacon-common.sub.js index de3846b6cbc..ed7f81ad9ff 100644 --- a/tests/wpt/web-platform-tests/beacon/beacon-common.sub.js +++ b/tests/wpt/web-platform-tests/beacon/beacon-common.sub.js @@ -39,6 +39,10 @@ var emptyFormDataTest = { id: "EmptyFormData", data: CreateEmptyFormDataPayload( var smallFormDataTest = { id: "SmallFormData", data: CreateFormDataFromPayload(smallPayload) }; var mediumFormDataTest = { id: "MediumFormData", data: CreateFormDataFromPayload(mediumPayload) }; var largeFormDataTest = { id: "LargeFormData", data: CreateFormDataFromPayload(largePayload) }; +var smallSafeContentTypeEncodedTest = { id: "SmallSafeContentTypeEncoded", data: new Blob([smallPayload], { type: 'application/x-www-form-urlencoded' }) }; +var smallSafeContentTypeFormTest = { id: "SmallSafeContentTypeForm", data: new FormData() }; +var smallSafeContentTypeTextTest = { id: "SmallSafeContentTypeText", data: new Blob([smallPayload], { type: 'text/plain' }) }; +var smallCORSContentTypeTextTest = { id: "SmallCORSContentTypeText", data: new Blob([smallPayload], { type: 'text/html' }) }; // We don't test maxFormData because the extra multipart separators make it difficult to // calculate a maxPayload. @@ -57,7 +61,9 @@ var allTests = [].concat(stringTests, stringMaxTest, blobTests, blobMaxTest, buf // This special cross section of test cases is meant to provide a slimmer but reasonably- // representative set of tests for parameterization across variables (e.g. redirect codes, // cors modes, etc.) -var sampleTests = [noDataTest, nullDataTest, undefinedDataTest, smallStringTest, smallBlobTest, smallBufferSourceTest, smallFormDataTest]; +var sampleTests = [noDataTest, nullDataTest, undefinedDataTest, smallStringTest, smallBlobTest, smallBufferSourceTest, smallFormDataTest, smallSafeContentTypeEncodedTest, smallSafeContentTypeFormTest, smallSafeContentTypeTextTest]; + +var preflightTests = [smallCORSContentTypeTextTest]; // Build a test lookup table, which is useful when instructing a web worker or an iframe // to run a test, so that we don't have to marshal the entire test case across a process boundary. diff --git a/tests/wpt/web-platform-tests/beacon/beacon-cors.sub.window.js b/tests/wpt/web-platform-tests/beacon/beacon-cors.sub.window.js index ddfdfbfa0a2..f4bccf177e3 100644 --- a/tests/wpt/web-platform-tests/beacon/beacon-cors.sub.window.js +++ b/tests/wpt/web-platform-tests/beacon/beacon-cors.sub.window.js @@ -38,4 +38,30 @@ runTests(sampleTests); }); +// Now test a cross-origin request that doesn't use a safelisted Content-Type and ensure +// we are applying the proper restrictions. Since a non-safelisted Content-Type request +// header is used there should be a preflight/options request and we should only succeed +// send the payload if the proper CORS headers are used. +{ + // Implement the self.buildId extension to identify the parameterized + // test in the report. + self.buildId = function (baseId) { + return `${baseId}-PREFLIGHT-ALLOW`; + }; + + // Implement the self.buildBaseUrl and self.buildTargetUrl extensions + // to change the target URL to use a cross-origin domain name. + self.buildBaseUrl = function (baseUrl) { + return "http://{{domains[www]}}:{{ports[http][0]}}"; + }; + + // Implement the self.buildTargetUrl extension to append a directive + // to the handler, that it should return CORS headers for the preflight we expect. + self.buildTargetUrl = function (targetUrl) { + return `${targetUrl}&origin=http://{{host}}:{{ports[http][0]}}&credentials=true&preflightExpected=true`; + } + + runTests(preflightTests); +} + done();
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/beacon/resources/beacon.py b/tests/wpt/web-platform-tests/beacon/resources/beacon.py index afa522a2a91..5f2553d3c4d 100644 --- a/tests/wpt/web-platform-tests/beacon/resources/beacon.py +++ b/tests/wpt/web-platform-tests/beacon/resources/beacon.py @@ -60,40 +60,52 @@ def main(request, response): # with the unique session id, in order to retrieve a range of results # later knowing the index range. test_idx = request.GET.first("tidx") - - test_data_key = build_stash_key(session_id, test_idx) test_data = { "id": test_id, "error": None } - payload = "" - if "Content-Type" in request.headers and \ - "form-data" in request.headers["Content-Type"]: - if "payload" in request.POST: - # The payload was sent as a FormData. - payload = request.POST.first("payload") + # Only store the actual POST requests, not any preflight/OPTIONS requests we may get. + if request.method == "POST": + test_data_key = build_stash_key(session_id, test_idx) + + payload = "" + if "Content-Type" in request.headers and \ + "form-data" in request.headers["Content-Type"]: + if "payload" in request.POST: + # The payload was sent as a FormData. + payload = request.POST.first("payload") + else: + # A FormData was sent with an empty payload. + pass else: - # A FormData was sent with an empty payload. - pass - else: - # The payload was sent as either a string, Blob, or BufferSource. - payload = request.body - - payload_parts = filter(None, payload.split(":")) - if len(payload_parts) > 0: - payload_size = int(payload_parts[0]) - - # Confirm the payload size sent matches with the number of characters sent. - if payload_size != len(payload_parts[1]): - test_data["error"] = "expected %d characters but got %d" % (payload_size, len(payload_parts[1])) + # The payload was sent as either a string, Blob, or BufferSource. + payload = request.body + + payload_parts = filter(None, payload.split(":")) + if len(payload_parts) > 0: + payload_size = int(payload_parts[0]) + + # Confirm the payload size sent matches with the number of characters sent. + if payload_size != len(payload_parts[1]): + test_data["error"] = "expected %d characters but got %d" % (payload_size, len(payload_parts[1])) + else: + # Confirm the payload contains the correct characters. + for i in range(0, payload_size): + if payload_parts[1][i] != "*": + test_data["error"] = "expected '*' at index %d but got '%s''" % (i, payload_parts[1][i]) + break + + # Store the result in the stash so that it can be retrieved + # later with a 'stat' command. + request.server.stash.put(test_data_key, test_data) + elif request.method == "OPTIONS": + # If we expect a preflight, then add the cors headers we expect, otherwise log an error as we shouldn't + # send a preflight for all requests. + if "preflightExpected" in request.GET: + response.headers.set("Access-Control-Allow-Headers", "content-type") + response.headers.set("Access-Control-Allow-Methods", "POST") else: - # Confirm the payload contains the correct characters. - for i in range(0, payload_size): - if payload_parts[1][i] != "*": - test_data["error"] = "expected '*' at index %d but got '%s''" % (i, payload_parts[1][i]) - break - - # Store the result in the stash so that it can be retrieved - # later with a 'stat' command. - request.server.stash.put(test_data_key, test_data) + test_data_key = build_stash_key(session_id, test_idx) + test_data["error"] = "Preflight not expected." + request.server.stash.put(test_data_key, test_data) elif command == "stat": test_idx_min = int(request.GET.first("tidx_min")) test_idx_max = int(request.GET.first("tidx_max")) diff --git a/tests/wpt/web-platform-tests/bluetooth/README.md b/tests/wpt/web-platform-tests/bluetooth/README.md index 593967ee089..869dd4af446 100644 --- a/tests/wpt/web-platform-tests/bluetooth/README.md +++ b/tests/wpt/web-platform-tests/bluetooth/README.md @@ -10,3 +10,39 @@ The Chromium implementation is provided by `../resources/chromium/web-bluetooth-test.js`. [Web Bluetooth Testing API]: https://docs.google.com/document/d/1Nhv_oVDCodd1pEH_jj9k8gF4rPGb_84VYaZ9IG8M_WY/ + +# Generated gen-* files from generator.py + +`generator.py` builds `gen-*.html` tests using templates in +`script-tests/*/*.js`. + +The subdirectory structure in `bluetooth/script-test/*` is recreated into +`bluetooth/*`. The generator expands each CALL function from templates +into new leaf directories and files. + +Example: + +`script-tests/server/get-same-object.js` contains: + +``` +gattServer.CALLS([ + getPrimaryService('heart_rate')| + getPrimaryServices()| + getPrimaryServices('heart_rate')[UUID]]), +``` + +Generating: + +``` +server/getPrimaryService/gen-get-same-object.html +server/getPrimaryServices/gen-get-same-object.html +server/getPrimaryServices/gen-get-same-object-with-uuid.html +``` + +Usage: + +``` +$ python generate.py +``` + +More details documented in `generate.py`.
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/characteristicProperties.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/characteristicProperties.https.html new file mode 100644 index 00000000000..d20d435999f --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/characteristicProperties.https.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'HeartRate device properties'; + +bluetooth_test(() => getHealthThermometerService() + .then(({service}) => Promise.all([ + service.getCharacteristic('temperature_measurement'), + service.getCharacteristic('measurement_interval')])) + .then(([temperature_measurement, measurement_interval]) => { + let tm_expected_properties = + new TestCharacteristicProperties(['indicate']); + assert_properties_equal(temperature_measurement.properties, + tm_expected_properties); + + let mi_expected_properties = + new TestCharacteristicProperties(['read', 'write', 'indicate']); + assert_properties_equal(measurement_interval.properties, + mi_expected_properties); + }), test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.html new file mode 100644 index 00000000000..02aaeccb022 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.html @@ -0,0 +1,25 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let fake_peripheral, characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _)) + .then(() => characteristic.getDescriptor(user_description.name)) + .then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e)) + .then(() => fake_characteristic.remove()) + .then(() => fake_peripheral.simulateGATTServicesChanged()) + .then(() => assert_promise_rejects_with_message( + characteristic.getDescriptor(user_description.name), expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.html new file mode 100644 index 00000000000..52b39c1e0cb --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.html @@ -0,0 +1,39 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls to getDescriptor should return the same object.'; +let characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic} = _)) + .then(() => Promise.all([ + characteristic.getDescriptor(user_description.alias), + characteristic.getDescriptor(user_description.name), + characteristic.getDescriptor(user_description.uuid) + ])) + .then(descriptors_arrays => { + assert_true(descriptors_arrays.length > 0) + + // Convert to arrays if necessary. + for (let i = 0; i < descriptors_arrays.length; i++) { + descriptors_arrays[i] = [].concat(descriptors_arrays[i]); + } + + for (let i = 1; i < descriptors_arrays.length; i++) { + assert_equals(descriptors_arrays[0].length, + descriptors_arrays[i].length); + } + + let base_set = new Set(descriptors_arrays[0]); + for (let descriptors of descriptors_arrays) { + descriptors.forEach(descriptor => assert_true(base_set.has(descriptor))); + } + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.html new file mode 100644 index 00000000000..c00d4cf5783 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.html @@ -0,0 +1,25 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let fake_peripheral, characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _)) + .then(() => characteristic.getDescriptor(user_description.name)) + .then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e)) + .then(() => fake_characteristic.remove()) + .then(() => fake_peripheral.simulateGATTServicesChanged()) + .then(() => assert_promise_rejects_with_message( + characteristic.getDescriptors(user_description.name), expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.html new file mode 100644 index 00000000000..a29548f3656 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.html @@ -0,0 +1,25 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let fake_peripheral, characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _)) + .then(() => characteristic.getDescriptor(user_description.name)) + .then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e)) + .then(() => fake_characteristic.remove()) + .then(() => fake_peripheral.simulateGATTServicesChanged()) + .then(() => assert_promise_rejects_with_message( + characteristic.getDescriptors(), expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.html new file mode 100644 index 00000000000..20df1d08002 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.html @@ -0,0 +1,39 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls to getDescriptors should return the same object.'; +let characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic} = _)) + .then(() => Promise.all([ + characteristic.getDescriptors(user_description.alias), + characteristic.getDescriptors(user_description.name), + characteristic.getDescriptors(user_description.uuid) + ])) + .then(descriptors_arrays => { + assert_true(descriptors_arrays.length > 0) + + // Convert to arrays if necessary. + for (let i = 0; i < descriptors_arrays.length; i++) { + descriptors_arrays[i] = [].concat(descriptors_arrays[i]); + } + + for (let i = 1; i < descriptors_arrays.length; i++) { + assert_equals(descriptors_arrays[0].length, + descriptors_arrays[i].length); + } + + let base_set = new Set(descriptors_arrays[0]); + for (let descriptors of descriptors_arrays) { + descriptors.forEach(descriptor => assert_true(base_set.has(descriptor))); + } + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/notifications/characteristic-is-removed.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/notifications/characteristic-is-removed.https.html new file mode 100644 index 00000000000..35f5ee974fc --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/notifications/characteristic-is-removed.https.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic is removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic, fake_characteristic} = _)) + .then(() => fake_characteristic.remove()) + .then(() => assert_promise_rejects_with_message( + characteristic.startNotifications(), + expected, + 'Characteristic got removed.')), + test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html new file mode 100644 index 00000000000..c0d4328a0e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Add multiple event listeners then readValue().'; +let characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic, fake_characteristic} = _)) + .then(() => fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0,1,2])) + .then(() => assert_promise_resolves_after_event( + characteristic, + 'readValue', + 'characteristicvaluechanged', + 3 /* attach 3 listeners */)) + .then(results => { + let read_value = new Uint8Array(results[0].buffer); + let event_values = results.slice(1).map(v => new Uint8Array(v.buffer)); + for (let event_value of event_values) { + assert_equals(event_value.buffer, read_value.buffer); + assert_array_equals(event_value, read_value); + } + }), test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/characteristic-is-removed.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/characteristic-is-removed.https.html new file mode 100644 index 00000000000..3c963c3c9fd --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/characteristic-is-removed.https.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic, fake_characteristic} = _)) + .then(() => fake_characteristic.remove()) + .then(() => assert_promise_rejects_with_message( + characteristic.readValue(), + expected, + 'Characteristic got removed.')), + test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/event-is-fired.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/event-is-fired.https.html new file mode 100644 index 00000000000..a217bdd36aa --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/event-is-fired.https.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Reading a characteristic should fire an event.'; +let characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic, fake_characteristic} = _)) + .then(() => fake_characteristic.setNextReadResponse( + GATT_SUCCESS, [0, 1, 2])) + .then(() => assert_promise_resolves_after_event( + characteristic, + 'readValue', + 'characteristicvaluechanged')) + .then(results => new Promise(resolve => { + let read_value = new Uint8Array(results[0].buffer); + let event_value = new Uint8Array(results[1].buffer); + assert_equals(event_value.buffer, read_value.buffer); + assert_array_equals(event_value, read_value); + resolve(); + })), test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.html new file mode 100644 index 00000000000..a80bccfe469 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.html @@ -0,0 +1,25 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let fake_peripheral, characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _)) + .then(() => characteristic.getDescriptor(user_description.name)) + .then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e)) + .then(() => fake_characteristic.remove()) + .then(() => fake_peripheral.simulateGATTServicesChanged()) + .then(() => assert_promise_rejects_with_message( + characteristic.readValue(), expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/read-succeeds.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/read-succeeds.https.html new file mode 100644 index 00000000000..4dca3ed5a57 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/read-succeeds.https.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'A read request succeeds and returns the characteristic\'s ' + + 'value.'; +const EXPECTED_VALUE = [0, 1, 2]; + +let characteristic, fake_characteristic; +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic, fake_characteristic} = _)) + .then(() => fake_characteristic.setNextReadResponse( + GATT_SUCCESS, + EXPECTED_VALUE)) + .then(() => characteristic.readValue()) + .then(value => assert_array_equals( + new Uint8Array(value.buffer), + EXPECTED_VALUE)), + test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/read-updates-value.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/read-updates-value.https.html new file mode 100644 index 00000000000..11bb9391b62 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/readValue/read-updates-value.https.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Succesful read should update characteristic.value'; +const EXPECTED_VALUE = [0, 1, 2]; +let characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic, fake_characteristic} = _)) + .then(() => assert_equals(characteristic.value, null)) + .then(() => fake_characteristic.setNextReadResponse( + GATT_SUCCESS, EXPECTED_VALUE)) + .then(() => characteristic.readValue()) + .then(() => assert_array_equals( + new Uint8Array(characteristic.value.buffer), + EXPECTED_VALUE)), + test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.html new file mode 100644 index 00000000000..d9a9594320d --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.html @@ -0,0 +1,25 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let fake_peripheral, characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _)) + .then(() => characteristic.getDescriptor(user_description.name)) + .then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e)) + .then(() => fake_characteristic.remove()) + .then(() => fake_peripheral.simulateGATTServicesChanged()) + .then(() => assert_promise_rejects_with_message( + characteristic.startNotifications(), expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/characteristic-is-removed.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/characteristic-is-removed.https.html new file mode 100644 index 00000000000..f79c21916fb --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/characteristic-is-removed.https.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic, fake_characteristic} = _)) + .then(() => fake_characteristic.remove()) + .then(() => assert_promise_rejects_with_message( + characteristic.writeValue(new ArrayBuffer(1 /* length */)), + expected, + 'Characteristic got removed.')), + test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.html new file mode 100644 index 00000000000..16520704630 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.html @@ -0,0 +1,25 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let fake_peripheral, characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _)) + .then(() => characteristic.getDescriptor(user_description.name)) + .then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e)) + .then(() => fake_characteristic.remove()) + .then(() => fake_peripheral.simulateGATTServicesChanged()) + .then(() => assert_promise_rejects_with_message( + characteristic.writeValue(new Uint8Array(1)), expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/write-succeeds.https.html b/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/write-succeeds.https.html new file mode 100644 index 00000000000..f2cf577e4f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/characteristic/writeValue/write-succeeds.https.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'A regular write request to a writable characteristic ' + + 'should succeed.'; +let typed_array = Uint8Array.of(1, 2); +let array_buffer = Uint8Array.of(3, 4).buffer; +let data_view = new DataView(new ArrayBuffer(2)); +let characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic, fake_characteristic} = _)) + .then(() => new Promise(resolve => { + data_view.setUint8(0, 5); + data_view.setUint8(1, 6); + resolve(); + })) + .then(() => fake_characteristic.getLastWrittenValue()) + .then(last_value => assert_true(last_value === null)) + + .then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS)) + .then(() => characteristic.writeValue(typed_array)) + .then(() => fake_characteristic.getLastWrittenValue()) + .then(last_value => assert_array_equals(last_value, [1, 2])) + + .then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS)) + .then(() => characteristic.writeValue(array_buffer)) + .then(() => fake_characteristic.getLastWrittenValue()) + .then(last_value => assert_array_equals(last_value, [3, 4])) + + .then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS)) + .then(() => characteristic.writeValue(data_view)) + .then(() => fake_characteristic.getLastWrittenValue()) + .then(last_value => assert_array_equals(last_value, [5, 6])), + test_desc); +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/generate.py b/tests/wpt/web-platform-tests/bluetooth/generate.py new file mode 100644 index 00000000000..034ca22c619 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/generate.py @@ -0,0 +1,189 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# TODO(509038): Delete the file in LayoutTests/bluetooth after all the script +# tests have been migrated to this directory. +"""Generator script for Web Bluetooth LayoutTests. + +For each script-tests/X.js creates the following test files depending on the +contents of X.js +- getPrimaryService/X.html +- getPrimaryServices/X.html +- getPrimaryServices/X-with-uuid.html + +script-tests/X.js files should contain "CALLS([variation1 | variation2 | ...])" +tokens that indicate what files to generate. Each variation in CALLS([...]) +should corresponds to a js function call and its arguments. Additionally a +variation can end in [UUID] to indicate that the generated file's name should +have the -with-uuid suffix. + +The PREVIOUS_CALL token will be replaced with the function that replaced CALLS. + +The FUNCTION_NAME token will be replaced with the name of the function that +replaced CALLS. + +For example, for the following template file: + +// script-tests/example.js +promise_test(() => { + return navigator.bluetooth.requestDevice(...) + .then(device => device.gatt.CALLS([ + getPrimaryService('heart_rate')| + getPrimaryServices('heart_rate')[UUID]])) + .then(device => device.gatt.PREVIOUS_CALL); +}, 'example test for FUNCTION_NAME'); + +this script will generate: + +// getPrimaryService/example.html +promise_test(() => { + return navigator.bluetooth.requestDevice(...) + .then(device => device.gatt.getPrimaryService('heart_rate')) + .then(device => device.gatt.getPrimaryService('heart_rate')); +}, 'example test for getPrimaryService'); + +// getPrimaryServices/example-with-uuid.html +promise_test(() => { + return navigator.bluetooth.requestDevice(...) + .then(device => device.gatt.getPrimaryServices('heart_rate')) + .then(device => device.gatt.getPrimaryServices('heart_rate')); +}, 'example test for getPrimaryServices'); + +Run +$ python //third_party/WebKit/LayoutTests/bluetooth/generate.py +and commit the generated files. +""" + +import fnmatch +import os +import re +import sys +import logging + +TEMPLATES_DIR = 'script-tests' + + +class GeneratedTest: + + def __init__(self, data, path, template): + self.data = data + self.path = path + self.template = template + + +def GetGeneratedTests(): + """Yields a GeneratedTest for each call in templates in script-tests.""" + bluetooth_tests_dir = os.path.dirname(os.path.realpath(__file__)) + + # Read Base Test Template. + base_template_file_handle = open( + os.path.join( + bluetooth_tests_dir, + TEMPLATES_DIR, + 'base_test_html.template' + ), 'r') + base_template_file_data = base_template_file_handle.read().decode('utf-8') + base_template_file_handle.close() + + # Get Templates. + + template_path = os.path.join(bluetooth_tests_dir, TEMPLATES_DIR) + + available_templates = [] + for root, _, files in os.walk(template_path): + for template in files: + if template.endswith('.js'): + available_templates.append(os.path.join(root, template)) + + # Generate Test Files + for template in available_templates: + # Read template + template_file_handle = open(template, 'r') + template_file_data = template_file_handle.read().decode('utf-8') + template_file_handle.close() + + template_name = os.path.splitext(os.path.basename(template))[0] + + # Find function names in multiline pattern: CALLS( [ function_name,function_name2[UUID] ]) + result = re.search( + r'CALLS\(' + # CALLS( + r'[^\[]*' + # Any characters not [, allowing for new lines. + r'\[' + # [ + r'(.*?)' + # group matching: function_name(), function_name2[UUID] + r'\]\)', # adjacent closing characters: ]) + template_file_data, re.MULTILINE | re.DOTALL) + + if result is None: + raise Exception('Template must contain \'CALLS\' tokens') + + new_test_file_data = base_template_file_data.replace('TEST', + template_file_data) + # Replace CALLS([...]) with CALLS so that we don't have to replace the + # CALLS([...]) for every new test file. + new_test_file_data = new_test_file_data.replace(result.group(), 'CALLS') + + # Replace 'PREVIOUS_CALL' with 'CALLS' so that we can replace it while + # replacing CALLS. + new_test_file_data = new_test_file_data.replace('PREVIOUS_CALL', 'CALLS') + + for call in result.group(1).split('|'): + # Parse call + call = call.strip() + function_name, args, uuid_suffix = re.search(r'(.*?)\((.*)\)(\[UUID\])?', call).groups() + + # Replace template tokens + call_test_file_data = new_test_file_data + call_test_file_data = call_test_file_data.replace('CALLS', '{}({})'.format(function_name, args)) + call_test_file_data = call_test_file_data.replace('FUNCTION_NAME', function_name) + + # Get test file name + group_dir = os.path.basename(os.path.abspath(os.path.join(template, os.pardir))) + + call_test_file_name = 'gen-{}{}.https.html'.format(template_name, '-with-uuid' if uuid_suffix else '') + call_test_file_path = os.path.join(bluetooth_tests_dir, group_dir, function_name, call_test_file_name) + + yield GeneratedTest(call_test_file_data, call_test_file_path, template) + +def main(): + logging.basicConfig(level=logging.INFO) + previous_generated_files = set() + current_path = os.path.dirname(os.path.realpath(__file__)) + for root, _, filenames in os.walk(current_path): + for filename in fnmatch.filter(filenames, 'gen-*.https.html'): + previous_generated_files.add(os.path.join(root, filename)) + + generated_files = set() + for generated_test in GetGeneratedTests(): + prev_len = len(generated_files) + generated_files.add(generated_test.path) + if prev_len == len(generated_files): + logging.info('Generated the same test twice for template:\n%s', + generated_test.template) + + # Create or open test file + directory = os.path.dirname(generated_test.path) + if not os.path.exists(directory): + os.makedirs(directory) + test_file_handle = open(generated_test.path, 'wb') + + # Write contents + test_file_handle.write(generated_test.data.encode('utf-8')) + test_file_handle.close() + + new_generated_files = generated_files - previous_generated_files + if len(new_generated_files) != 0: + logging.info('Newly generated tests:') + for generated_file in new_generated_files: + logging.info(generated_file) + + obsolete_files = previous_generated_files - generated_files + if len(obsolete_files) != 0: + logging.warning('The following files might be obsolete:') + for generated_file in obsolete_files: + logging.warning(generated_file) + + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/tests/wpt/web-platform-tests/bluetooth/generate_test.py b/tests/wpt/web-platform-tests/bluetooth/generate_test.py new file mode 100755 index 00000000000..881f7dbcb73 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/generate_test.py @@ -0,0 +1,56 @@ +#!/usr/bin/python + +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# TODO(50903): Delete the file in LayoutTests/bluetooth after all the tests have +# been migrated to this directory. +"""Test that the set of gen-* files is the same as the generated files.""" + +import fnmatch +import os +import sys +import generate +import logging + +UPDATE_TIP = 'To update the generated tests, run:\n' \ + '$ python third_party/WebKit/LayoutTests/bluetooth/generate.py' + + +def main(): + logging.basicConfig(level=logging.INFO) + logging.info(UPDATE_TIP) + generated_files = set() + # Tests data in gen-* files is the same as the data generated. + for generated_test in generate.GetGeneratedTests(): + generated_files.add(generated_test.path) + try: + with open(generated_test.path, 'r') as f: + data = f.read().decode('utf-8') + if data != generated_test.data: + logging.error('%s does not match template', generated_test.path) + return -1 + except IOError, e: + if e.errno == 2: + logging.error('Missing generated test:\n%s\nFor template:\n%s', + generated_test.path, + generated_test.template) + return -1 + + # Tests that there are no obsolete generated files. + previous_generated_files = set() + current_path = os.path.dirname(os.path.realpath(__file__)) + for root, _, filenames in os.walk(current_path): + for filename in fnmatch.filter(filenames, 'gen-*.https.html'): + previous_generated_files.add(os.path.join(root, filename)) + + if previous_generated_files != generated_files: + logging.error('There are extra generated tests. Please remove them.') + for test_path in previous_generated_files - generated_files: + logging.error('%s', test_path) + return -1 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.html b/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.html index b0263f980a8..2835236d3b5 100644 --- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.html +++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.html @@ -4,6 +4,7 @@ <script src="/resources/testharnessreport.js"></script> <script> 'use strict'; +const test_desc = 'Bluetooth IDL test'; test(() => { assert_throws(new TypeError(), () => new Bluetooth(), @@ -14,6 +15,5 @@ test(() => { // Bluetooth implements BluetoothDiscovery; assert_true('requestDevice' in navigator.bluetooth); assert_equals(navigator.bluetooth.requestDevice.length, 0); -}, 'Bluetooth IDL test'); - +}, test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.html b/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.html index 9449cf1ec88..b8649f11abe 100644 --- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.html +++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-NavigatorBluetooth.html @@ -3,6 +3,7 @@ <script src="/resources/testharnessreport.js"></script> <script> 'use strict'; +const test_desc = '[SameObject] test for navigator.bluetooth'; test(() => { assert_true('bluetooth' in navigator, @@ -11,5 +12,5 @@ test(() => { test(() => { assert_equals(navigator.bluetooth, navigator.bluetooth); -}, '[SameObject] test for navigator.bluetooth'); +}, test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.html index 56e905c6140..033570d842e 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-empty-name.https.html @@ -6,12 +6,11 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return setUpPreconnectedDevice({name: ''}) +const test_desc = 'Device with empty name and no UUIDs nearby. Should be ' + + 'found if acceptAllDevices is true.'; + +bluetooth_test(() => setUpPreconnectedDevice({name: ''}) .then(() => requestDeviceWithTrustedClick({acceptAllDevices: true})) - .then(device => { - assert_equals(device.name, ''); - }); -}, 'Device with empty name and no UUIDs nearby. Should be found if ' + - 'acceptAllDevices is true.'); + .then(device => assert_equals(device.name, '')), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-name.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-name.https.html index 8c271df5005..d990dbf05b4 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-name.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/device-with-name.https.html @@ -5,13 +5,12 @@ <script src="/resources/testdriver-vendor.js"></script> <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> -bluetooth_test(() => { - let device_name = 'LE Device'; - return setUpPreconnectedDevice({name: device_name}) +const test_desc = 'A device with name and no UUIDs nearby. Should be found if ' + + 'acceptAllDevices is true.'; +const name = 'LE Device'; + +bluetooth_test(() => setUpPreconnectedDevice({name: name}) .then(() => requestDeviceWithTrustedClick({acceptAllDevices: true})) - .then(device => { - assert_equals(device.name, device_name); - }); -}, 'A device with name and no UUIDs nearby. Should be found if ' + - 'acceptAllDevices is true.'); + .then(device => assert_equals(device.name, name)), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html index adf77ba23ef..5a1dca7c97b 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html @@ -6,15 +6,17 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getHealthThermometerDevice({acceptAllDevices: true}) +const test_desc = 'requestDevice called with acceptAllDevices: true and ' + + 'with no optionalServices. Should not get access to any services.'; +const expected = new DOMException( + 'Origin is not allowed to access any service. ' + + 'Tip: Add the service UUID to \'optionalServices\' in ' + + 'requestDevice() options. https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) .then(({device}) => assert_promise_rejects_with_message( device.gatt.getPrimaryServices(), - new DOMException( - 'Origin is not allowed to access any service. ' + - 'Tip: Add the service UUID to \'optionalServices\' in ' + - 'requestDevice() options. https://goo.gl/HxfxSQ', - 'SecurityError'))); -}, 'requestDevice called with acceptAllDevices: true and with no ' + - 'optionalServices. Should not get access to any services.'); + expected)), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.html index e202e741f97..3c0f4c1164b 100644 --- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.html @@ -9,19 +9,18 @@ const test_desc = 'requestDevice called with acceptAllDevices: true and with ' + 'optionalServices. Should get access to services.'; -bluetooth_test(() => - getTwoHealthThermometerServicesDevice() - .then(() => requestDeviceWithTrustedClick({ - acceptAllDevices: true, - optionalServices: ['health_thermometer'] - })) - .then(device => device.gatt.connect()) - .then(gattServer => gattServer.getPrimaryServices()) - .then(services => { - assert_equals(services.length, 2); - services.forEach(service => { - assert_equals(service.uuid, - BluetoothUUID.getService('health_thermometer')); - }); -}), test_desc); +bluetooth_test(() => getTwoHealthThermometerServicesDevice() + .then(() => requestDeviceWithTrustedClick({ + acceptAllDevices: true, + optionalServices: ['health_thermometer'] + })) + .then(device => device.gatt.connect()) + .then(gattServer => gattServer.getPrimaryServices()) + .then(services => { + assert_equals(services.length, 2); + services.forEach(service => { + assert_equals(service.uuid, + BluetoothUUID.getService('health_thermometer')); + }); + }), test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/resources/health-thermometer-iframe.html b/tests/wpt/web-platform-tests/bluetooth/resources/health-thermometer-iframe.html index ac577ad5ef2..c94ba55bbfd 100644 --- a/tests/wpt/web-platform-tests/bluetooth/resources/health-thermometer-iframe.html +++ b/tests/wpt/web-platform-tests/bluetooth/resources/health-thermometer-iframe.html @@ -4,27 +4,27 @@ let device; function requestDeviceWithOptionsAndConnect(options) { return navigator.bluetooth.requestDevice(options) - .then(device => device.gatt.connect()); + .then(device => device.gatt.connect()); } window.onmessage = messageEvent => { switch (messageEvent.data.type) { case 'RequestAndConnect': requestDeviceWithOptionsAndConnect(messageEvent.data.options) - .then(gatt => { - device = gatt.device; - parent.postMessage('Connected', '*'); - }).catch(err => { - parent.postMessage(`FAIL: ${err}`, '*'); - }); + .then(gatt => { + device = gatt.device; + parent.postMessage('Connected', '*'); + }).catch(err => { + parent.postMessage(`FAIL: ${err}`, '*'); + }); break; case 'DiscoverServices': requestDeviceWithOptionsAndConnect(messageEvent.data.options) - .then(gatt => gatt.getPrimaryServices()) - .then(() => parent.postMessage('DiscoveryComplete', '*')) - .catch(err => { - parent.postMessage(`FAIL: ${err}`, '*'); - }); + .then(gatt => gatt.getPrimaryServices()) + .then(() => parent.postMessage('DiscoveryComplete', '*')) + .catch(err => { + parent.postMessage(`FAIL: ${err}`, '*'); + }); break; default: parent.postMessage(`FAIL: Bad message type: ${messageEvent.data.type}`, diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/base_test_html.template b/tests/wpt/web-platform-tests/bluetooth/script-tests/base_test_html.template new file mode 100644 index 00000000000..714333c5e13 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/base_test_html.template @@ -0,0 +1,10 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +TEST +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/characteristic/characteristic-is-removed.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/characteristic/characteristic-is-removed.js new file mode 100644 index 00000000000..8ff747c588d --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/characteristic/characteristic-is-removed.js @@ -0,0 +1,22 @@ +'use strict'; +const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.'; +const expected = new DOMException('GATT Characteristic no longer exists.', + 'InvalidStateError'); +let fake_peripheral, characteristic, fake_characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({fake_peripheral, characteristic, fake_characteristic} = _)) + .then(() => characteristic.getDescriptor(user_description.name)) + .then(() => null, (e) => assert_unreached('Caught error unexpectedly.', e)) + .then(() => fake_characteristic.remove()) + .then(() => fake_peripheral.simulateGATTServicesChanged()) + .then(() => assert_promise_rejects_with_message( + characteristic.CALLS([ + getDescriptor(user_description.name)| + getDescriptors(user_description.name)[UUID]| + getDescriptors()| + readValue()| + writeValue(new Uint8Array(1))| + startNotifications() + ]), expected)), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/characteristic/descriptor-get-same-object.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/characteristic/descriptor-get-same-object.js new file mode 100644 index 00000000000..4e6bc3519bc --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/characteristic/descriptor-get-same-object.js @@ -0,0 +1,32 @@ +'use strict'; +const test_desc = 'Calls to FUNCTION_NAME should return the same object.'; +let characteristic; + +bluetooth_test(() => getMeasurementIntervalCharacteristic() + .then(_ => ({characteristic} = _)) + .then(() => Promise.all([ + characteristic.CALLS([ + getDescriptor(user_description.alias)| + getDescriptors(user_description.alias) + ]), + characteristic.FUNCTION_NAME(user_description.name), + characteristic.FUNCTION_NAME(user_description.uuid) + ])) + .then(descriptors_arrays => { + assert_true(descriptors_arrays.length > 0) + + // Convert to arrays if necessary. + for (let i = 0; i < descriptors_arrays.length; i++) { + descriptors_arrays[i] = [].concat(descriptors_arrays[i]); + } + + for (let i = 1; i < descriptors_arrays.length; i++) { + assert_equals(descriptors_arrays[0].length, + descriptors_arrays[i].length); + } + + let base_set = new Set(descriptors_arrays[0]); + for (let descriptors of descriptors_arrays) { + descriptors.forEach(descriptor => assert_true(base_set.has(descriptor))); + } + }), test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-before.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-before.js new file mode 100644 index 00000000000..fabc74ffb30 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-before.js @@ -0,0 +1,22 @@ +'use strict'; +const test_desc = 'disconnect() called before FUNCTION_NAME. ' + + 'Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); +let device; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.disconnect()) + .then(() => assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('health_thermometer')| + getPrimaryServices()| + getPrimaryServices('health_thermometer')[UUID]]), + expected)), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-during-error.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-during-error.js new file mode 100644 index 00000000000..edabb07bccb --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-during-error.js @@ -0,0 +1,22 @@ +'use strict'; +const test_desc = 'disconnect() called during a FUNCTION_NAME ' + + 'call that fails. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', 'NetworkError'); +let device; + +bluetooth_test(() => getEmptyHealthThermometerDevice() + .then(_ => ({device} = _)) + .then(() => { + let promise = assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('health_thermometer')| + getPrimaryServices()| + getPrimaryServices('health_thermometer')[UUID] + ]), + expected) + device.gatt.disconnect(); + return promise; + }), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-during-success.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-during-success.js new file mode 100644 index 00000000000..84157a0693b --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-during-success.js @@ -0,0 +1,23 @@ +'use strict'; +const test_desc = 'disconnect() called during a FUNCTION_NAME call that ' + + 'succeeds. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(({device}) => { + let promise = assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('health_thermometer')| + getPrimaryServices()| + getPrimaryServices('health_thermometer')[UUID] + ]), + expected); + device.gatt.disconnect(); + return promise; + }), test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-invalidates-objects.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-invalidates-objects.js new file mode 100644 index 00000000000..995fda34411 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-invalidates-objects.js @@ -0,0 +1,39 @@ +'use strict'; +const test_desc = 'Calls on services after we disconnect and connect again. '+ + 'Should reject with InvalidStateError.'; +let device, services; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.CALLS([ + getPrimaryService('health_thermometer')| + getPrimaryServices()| + getPrimaryServices('health_thermometer')[UUID]])) + // Convert to array if necessary. + .then(s => services = [].concat(s)) + .then(() => device.gatt.disconnect()) + .then(() => device.gatt.connect()) + .then(() => { + let promises = Promise.resolve(); + for (let service of services) { + let error = new DOMException( + `Service with UUID ${service.uuid} is no longer valid. Remember ` + + `to retrieve the service again after reconnecting.`, + 'InvalidStateError'); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristic('measurement_interval'), + error)); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristics(), + error)); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristics('measurement_interval'), + error)); + } + return promises; + }), test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnected-device.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnected-device.js new file mode 100644 index 00000000000..2b6011642b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnected-device.js @@ -0,0 +1,20 @@ +'use strict'; +const test_desc = 'FUNCTION_NAME called before connecting. Reject with ' + + 'NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); + +bluetooth_test(() => getDiscoveredHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('health_thermometer')| + getPrimaryServices()| + getPrimaryServices('health_thermometer')[UUID] + ]), + expected)), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/discovery-complete-no-permission-absent-service.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/discovery-complete-no-permission-absent-service.js new file mode 100644 index 00000000000..e9e972359a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/discovery-complete-no-permission-absent-service.js @@ -0,0 +1,25 @@ +'use strict'; +const test_desc = 'Request for absent service without permission. Should ' + + 'Reject with SecurityError even if services have been discovered already.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service ' + + 'UUID to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); +let device; + +bluetooth_test(() => getHealthThermometerDeviceWithServicesDiscovered({ + filters: [{services: ['health_thermometer']}] + }) + .then(_ => ({device} = _)) + .then(() => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService(glucose.alias)| + getPrimaryServices(glucose.alias)[UUID] + ]), expected), + assert_promise_rejects_with_message( + device.gatt.FUNCTION_NAME(glucose.name), expected), + assert_promise_rejects_with_message( + device.gatt.FUNCTION_NAME(glucose.uuid), expected)])), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/discovery-complete-service-not-found.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/discovery-complete-service-not-found.js new file mode 100644 index 00000000000..6b745d7e2a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/discovery-complete-service-not-found.js @@ -0,0 +1,16 @@ +'use strict'; +const test_desc = 'Request for absent service. Must reject with ' + + 'NotFoundError even when the services have previously been discovered.'; + +bluetooth_test(() => getHealthThermometerDeviceWithServicesDiscovered({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['glucose']}) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('glucose')| + getPrimaryServices('glucose')[UUID] + ]), + new DOMException( + `No Services matching UUID ${glucose.uuid} found in Device.`, + 'NotFoundError'))), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/garbage-collection-ran-during-error.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/garbage-collection-ran-during-error.js new file mode 100644 index 00000000000..35e838e92e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/garbage-collection-ran-during-error.js @@ -0,0 +1,25 @@ +'use strict'; +const test_desc = 'Garbage Collection ran during a FUNCTION_NAME ' + + 'call that failed. Should not crash.' +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect first ' + + 'with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getEmptyHealthThermometerDevice() + .then(({device}) => { + promise = assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('health_thermometer')| + getPrimaryServices()| + getPrimaryServices('health_thermometer')[UUID] + ]), + expected); + // Disconnect called to clear attributeInstanceMap and allow the + // object to get garbage collected. + device.gatt.disconnect(); + return runGarbageCollection(); + }) + .then(() => promise), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/garbage-collection-ran-during-success.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/garbage-collection-ran-during-success.js new file mode 100644 index 00000000000..7976bbd990b --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/garbage-collection-ran-during-success.js @@ -0,0 +1,24 @@ +'use strict'; +const test_desc = 'Garbage Collection ran during a FUNCTION_NAME call that ' + + 'succeeds. Should not crash.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. ' + + '(Re)connect first with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => { + promise = assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('health_thermometer') | + getPrimaryServices() | + getPrimaryServices('health_thermometer')[UUID]]), + expected); + device.gatt.disconnect(); + return runGarbageCollection(); + }) + .then(() => promise), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/get-different-service-after-reconnection.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/get-different-service-after-reconnection.js new file mode 100644 index 00000000000..e72128a76ff --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/get-different-service-after-reconnection.js @@ -0,0 +1,35 @@ +'use strict'; +const test_desc = 'Calls to FUNCTION_NAME after a disconnection should return ' + + 'a different object.'; +let device, services_first_connection, services_second_connection; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.CALLS([ + getPrimaryService('health_thermometer')| + getPrimaryServices()| + getPrimaryServices('health_thermometer')[UUID]])) + .then(services => services_first_connection = services) + .then(() => device.gatt.disconnect()) + .then(() => device.gatt.connect()) + .then(() => device.gatt.PREVIOUS_CALL) + .then(services => services_second_connection = services) + .then(() => { + // Convert to arrays if necessary. + services_first_connection = [].concat(services_first_connection); + services_second_connection = [].concat(services_second_connection); + + assert_equals(services_first_connection.length, + services_second_connection.length); + + let first_connection_set = new Set(services_first_connection); + let second_connection_set = new Set(services_second_connection); + + // The two sets should be disjoint. + let common_services = services_first_connection.filter( + val => second_connection_set.has(val)); + assert_equals(common_services.length, 0); + }), test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/get-same-object.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/get-same-object.js new file mode 100644 index 00000000000..3b3bdd19d20 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/get-same-object.js @@ -0,0 +1,33 @@ +'use strict'; +const test_desc = 'Calls to FUNCTION_NAME should return the same object.'; +let device; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access']}) + .then(({device}) => Promise.all([ + device.gatt.CALLS([ + getPrimaryService('health_thermometer')| + getPrimaryServices()| + getPrimaryServices('health_thermometer')[UUID]]), + device.gatt.PREVIOUS_CALL])) + .then(([services_first_call, services_second_call]) => { + // Convert to arrays if necessary. + services_first_call = [].concat(services_first_call); + services_second_call = [].concat(services_second_call); + + assert_equals(services_first_call.length, services_second_call.length); + + let first_call_set = new Set(services_first_call); + assert_equals(services_first_call.length, first_call_set.size); + let second_call_set = new Set(services_second_call); + assert_equals(services_second_call.length, second_call_set.size); + + services_first_call.forEach(service => { + assert_true(second_call_set.has(service)) + }); + + services_second_call.forEach(service => { + assert_true(first_call_set.has(service)); + }); + }), test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/invalid-service-name.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/invalid-service-name.js new file mode 100644 index 00000000000..56e67f0ac13 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/invalid-service-name.js @@ -0,0 +1,22 @@ +'use strict'; +const test_desc = 'Wrong Service name. Reject with TypeError.'; +const expected = new DOMException( + "Failed to execute 'FUNCTION_NAME' on " + + "'BluetoothRemoteGATTServer': Invalid Service name: " + + "'wrong_name'. It must be a valid UUID alias (e.g. 0x1234), " + + "UUID (lowercase hex characters e.g. " + + "'00001234-0000-1000-8000-00805f9b34fb'), " + + "or recognized standard name from " + + "https://www.bluetooth.com/specifications/gatt/services" + + " e.g. 'alert_notification'.", + 'TypeError'); + +bluetooth_test(() => getHealthThermometerDevice() + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('wrong_name')| + getPrimaryServices('wrong_name') + ]), + expected, + 'Wrong Service name passed.')), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-absent-service.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-absent-service.js new file mode 100644 index 00000000000..9bab3be8046 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-absent-service.js @@ -0,0 +1,23 @@ +'use strict'; +const test_desc = 'Request for absent service without permission. ' + + 'Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service UUID ' + + 'to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService(glucose.alias)| + getPrimaryServices(glucose.alias)[UUID] + ]), expected), + assert_promise_rejects_with_message( + device.gatt.FUNCTION_NAME(glucose.name), expected), + assert_promise_rejects_with_message( + device.gatt.FUNCTION_NAME(glucose.uuid), expected)])), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-for-any-service.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-for-any-service.js new file mode 100644 index 00000000000..52b07cc48ba --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-for-any-service.js @@ -0,0 +1,17 @@ +'use strict'; +const test_desc = 'Request for present service without permission to access ' + + 'any service. Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access any service. Tip: Add the service ' + + 'UUID to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('heart_rate')| + getPrimaryServices()| + getPrimaryServices('heart_rate')[UUID]]), + expected)), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-present-service.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-present-service.js new file mode 100644 index 00000000000..67081ae56be --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-present-service.js @@ -0,0 +1,22 @@ +'use strict'; +const test_desc = 'Request for present service without permission. ' + + 'Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service UUID ' + + 'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService(generic_access.alias)| + getPrimaryServices(generic_access.alias)[UUID] + ]), expected), + assert_promise_rejects_with_message( + device.gatt.FUNCTION_NAME(generic_access.name), expected), + assert_promise_rejects_with_message( + device.gatt.FUNCTION_NAME(generic_access.uuid), expected)])), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/service-not-found.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/service-not-found.js new file mode 100644 index 00000000000..0fd2dace787 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/service-not-found.js @@ -0,0 +1,16 @@ +'use strict'; +const test_desc = 'Request for absent service. Reject with NotFoundError.'; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['glucose'] + }) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.CALLS([ + getPrimaryService('glucose')| + getPrimaryServices('glucose')[UUID] + ]), + new DOMException( + `No Services matching UUID ${glucose.uuid} found in Device.`, + 'NotFoundError'))), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/server/connect/connection-succeeds.https.html b/tests/wpt/web-platform-tests/bluetooth/server/connect/connection-succeeds.https.html index 8b158862d3b..aebd681c2ad 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/connect/connection-succeeds.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/server/connect/connection-succeeds.https.html @@ -6,12 +6,14 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getDiscoveredHealthThermometerDevice() - .then(({device, fake_peripheral}) => { - return fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS}) - .then(() => device.gatt.connect()) - .then(gatt => assert_true(gatt.connected)); - }); -}, 'Device will connect'); +const test_desc = 'Device will connect'; +let device, fake_peripheral; + +bluetooth_test(() => getDiscoveredHealthThermometerDevice() + .then(_ => ({device, fake_peripheral} = _)) + .then(() => + fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS})) + .then(() => device.gatt.connect()) + .then(gatt => assert_true(gatt.connected)), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.html b/tests/wpt/web-platform-tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.html index 3d83683e0eb..f70befcb4b4 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.html @@ -6,17 +6,17 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getDiscoveredHealthThermometerDevice() - .then(({device, fake_peripheral}) => { - return fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS}) - .then(() => { - // Don't return the promise and let |device| go out of scope - // so that it gets garbage collected. - device.gatt.connect(); - }); - }) - .then(runGarbageCollection) -}, 'Garbage Collection ran during a connect call that succeeds. ' + - 'Should not crash.'); +const test_desc = 'Garbage Collection ran during a connect call that ' + + 'succeeds. Should not crash.'; +let device, fake_peripheral; + +bluetooth_test(() => getDiscoveredHealthThermometerDevice() + .then(_ => ({device, fake_peripheral} = _)) + .then(() => + fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS})) + // Don't return the promise and let |device| go out of scope + // so that it gets garbage collected. + .then(() => device.gatt.connect()) + .then(runGarbageCollection), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/connect/get-same-gatt-server.https.html b/tests/wpt/web-platform-tests/bluetooth/server/connect/get-same-gatt-server.https.html index 09e3ac522e5..c3e35532835 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/connect/get-same-gatt-server.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/server/connect/get-same-gatt-server.https.html @@ -6,20 +6,20 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getDiscoveredHealthThermometerDevice() - .then(({device, fake_peripheral}) => { - return fake_peripheral - .setNextGATTConnectionResponse({code: HCI_SUCCESS}) - .then(() => device.gatt.connect()) - .then(gatt1 => { - // No second response is necessary because an ATT Bearer - // already exists from the first connection. - // See https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-connect - // step 5.1. - return device.gatt.connect().then(gatt2 => [gatt1, gatt2]); - }); - }) - .then(([gatt1, gatt2]) => assert_equals(gatt1, gatt2)); -}, 'Multiple connects should return the same gatt object.'); +const test_desc = 'Multiple connects should return the same gatt object.'; +let device, fake_peripheral; + +bluetooth_test(() => getDiscoveredHealthThermometerDevice() + .then(_ => ({device, fake_peripheral} = _)) + .then(() => + fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS})) + .then(() => device.gatt.connect()) + // No second response is necessary because an ATT Bearer + // already exists from the first connection. + // See https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-connect + // step 5.1. + .then(gatt1 => device.gatt.connect() + .then(gatt2 => [gatt1, gatt2])) + .then(([gatt1, gatt2]) => assert_equals(gatt1, gatt2)), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/device-same-object.https.html b/tests/wpt/web-platform-tests/bluetooth/server/device-same-object.https.html index 89590fa147c..cfd4bc5a202 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/device-same-object.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/server/device-same-object.https.html @@ -6,14 +6,14 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getDiscoveredHealthThermometerDevice() - .then(({device, fake_peripheral}) => { - return fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS}) - .then(() => device.gatt.connect()); - }) - .then(gatt => { - assert_equals(gatt.device, gatt.device); - }); -}, "[SameObject] test for BluetoothRemoteGATTServer's device."); +const test_desc = '[SameObject] test for BluetoothRemoteGATTServer\'s device.'; +let device, fake_peripheral; + +bluetooth_test(() => getDiscoveredHealthThermometerDevice() + .then(_ => ({device, fake_peripheral} = _)) + .then(() => + fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS})) + .then(() => device.gatt.connect()) + .then(gatt => assert_equals(gatt.device, gatt.device)), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/connect-disconnect-twice.https.html b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/connect-disconnect-twice.https.html index 65ed1aa2b8a..e0d8439ab66 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/connect-disconnect-twice.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/connect-disconnect-twice.https.html @@ -12,18 +12,18 @@ let device, fake_peripheral; // TODO(569716): Test that the disconnect signal was sent to the device. bluetooth_test(() => getDiscoveredHealthThermometerDevice() - .then(_ => ({device, fake_peripheral} = _)) - .then(() => fake_peripheral.setNextGATTConnectionResponse({ - code: HCI_SUCCESS, - })) - .then(() => device.gatt.connect() - .then(gattServer => { - gattServer.disconnect(); - assert_false(gattServer.connected); - }) - .then(() => device.gatt.connect()) - .then(gattServer => { - gattServer.disconnect(); - assert_false(gattServer.connected); - })), test_desc); + .then(_ => ({device, fake_peripheral} = _)) + .then(() => fake_peripheral.setNextGATTConnectionResponse({ + code: HCI_SUCCESS, + })) + .then(() => device.gatt.connect() + .then(gattServer => { + gattServer.disconnect(); + assert_false(gattServer.connected); + }) + .then(() => device.gatt.connect()) + .then(gattServer => { + gattServer.disconnect(); + assert_false(gattServer.connected); + })), test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detach-gc.https.html b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detach-gc.https.html index 030abf783f0..8b1459db192 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detach-gc.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/detach-gc.https.html @@ -11,26 +11,26 @@ const test_desc = 'Detach frame then garbage collect. We shouldn\'t crash.'; let iframe = document.createElement('iframe'); bluetooth_test(() => setUpConnectableHealthThermometerDevice() - // 1. Load the iframe. - .then(() => new Promise(resolve => { - iframe.src = '/bluetooth/resources/health-thermometer-iframe.html'; - document.body.appendChild(iframe); - iframe.addEventListener('load', resolve); - })) - // 2. Connect device, detach the iframe, and run garbage collection. - .then(() => new Promise(resolve => { - callWithTrustedClick(() => { - iframe.contentWindow.postMessage({ - type: 'RequestAndConnect', - options: {filters: [{services: ['health_thermometer']}]} - }, '*'); - }); + // 1. Load the iframe. + .then(() => new Promise(resolve => { + iframe.src = '/bluetooth/resources/health-thermometer-iframe.html'; + document.body.appendChild(iframe); + iframe.addEventListener('load', resolve); + })) + // 2. Connect device, detach the iframe, and run garbage collection. + .then(() => new Promise(resolve => { + callWithTrustedClick(() => { + iframe.contentWindow.postMessage({ + type: 'RequestAndConnect', + options: {filters: [{services: ['health_thermometer']}]} + }, '*'); + }); - window.onmessage = messageEvent => { - assert_equals(messageEvent.data, 'Connected'); - iframe.remove(); - runGarbageCollection().then(resolve); - } -})), test_desc) + window.onmessage = messageEvent => { + assert_equals(messageEvent.data, 'Connected'); + iframe.remove(); + runGarbageCollection().then(resolve); + } + })), test_desc) </script> </body> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/disconnect-twice-in-a-row.https.html b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/disconnect-twice-in-a-row.https.html index d0e830496fe..5dada7a9c99 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/disconnect-twice-in-a-row.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/disconnect-twice-in-a-row.https.html @@ -12,15 +12,15 @@ let device, fake_peripheral; // TODO(569716): Test that the disconnect signal was sent to the device. bluetooth_test(() => getDiscoveredHealthThermometerDevice() - .then(_ => ({device, fake_peripheral} = _)) - .then(() => fake_peripheral.setNextGATTConnectionResponse({ - code: HCI_SUCCESS, - })) - .then(() => device.gatt.connect()) - .then(gattServer => { - gattServer.disconnect(); - assert_false(gattServer.connected); - gattServer.disconnect(); - assert_false(gattServer.connected); -}), test_desc); + .then(_ => ({device, fake_peripheral} = _)) + .then(() => fake_peripheral.setNextGATTConnectionResponse({ + code: HCI_SUCCESS, + })) + .then(() => device.gatt.connect()) + .then(gattServer => { + gattServer.disconnect(); + assert_false(gattServer.connected); + gattServer.disconnect(); + assert_false(gattServer.connected); + }), test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/gc-detach.https.html b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/gc-detach.https.html index d95c52d38c4..04ccedeb5e9 100644 --- a/tests/wpt/web-platform-tests/bluetooth/server/disconnect/gc-detach.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/server/disconnect/gc-detach.https.html @@ -11,28 +11,28 @@ const test_desc = 'Garbage collect then detach frame. We shouldn\'t crash.'; let iframe = document.createElement('iframe'); bluetooth_test(() => setUpConnectableHealthThermometerDevice() - // 1. Load the iframe. - .then((f) => new Promise(resolve => { - iframe.src = '/bluetooth/resources/health-thermometer-iframe.html'; - document.body.appendChild(iframe); - iframe.addEventListener('load', resolve); - })) - // 2. Connect device, run garbage collection, and detach iframe. - .then(() => new Promise(resolve => { - callWithTrustedClick(() => { - iframe.contentWindow.postMessage({ - type: 'RequestAndConnect', - options: {filters: [{services: ['health_thermometer']}]} - }, '*'); - }); - - window.onmessage = messageEvent => { - assert_equals(messageEvent.data, 'Connected'); - runGarbageCollection().then(() => { - iframe.remove(); - resolve(); + // 1. Load the iframe. + .then((f) => new Promise(resolve => { + iframe.src = '/bluetooth/resources/health-thermometer-iframe.html'; + document.body.appendChild(iframe); + iframe.addEventListener('load', resolve); + })) + // 2. Connect device, run garbage collection, and detach iframe. + .then(() => new Promise(resolve => { + callWithTrustedClick(() => { + iframe.contentWindow.postMessage({ + type: 'RequestAndConnect', + options: {filters: [{services: ['health_thermometer']}]} + }, '*'); }); - } -})), test_desc) + + window.onmessage = messageEvent => { + assert_equals(messageEvent.data, 'Connected'); + runGarbageCollection().then(() => { + iframe.remove(); + resolve(); + }); + } + })), test_desc) </script> </body> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html new file mode 100644 index 00000000000..8a7e08f139f --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called before getPrimaryService. ' + + 'Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); +let device; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.disconnect()) + .then(() => assert_promise_rejects_with_message( + device.gatt.getPrimaryService('health_thermometer'), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.html new file mode 100644 index 00000000000..6656ff16a14 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.html @@ -0,0 +1,28 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called during a getPrimaryService ' + + 'call that fails. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', 'NetworkError'); +let device; + +bluetooth_test(() => getEmptyHealthThermometerDevice() + .then(_ => ({device} = _)) + .then(() => { + let promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryService('health_thermometer'), + expected) + device.gatt.disconnect(); + return promise; + }), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.html new file mode 100644 index 00000000000..760be97ebd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called during a getPrimaryService call that ' + + 'succeeds. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(({device}) => { + let promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryService('health_thermometer'), + expected); + device.gatt.disconnect(); + return promise; + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.html new file mode 100644 index 00000000000..4c3c577fcc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.html @@ -0,0 +1,46 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls on services after we disconnect and connect again. '+ + 'Should reject with InvalidStateError.'; +let device, services; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryService('health_thermometer')) + // Convert to array if necessary. + .then(s => services = [].concat(s)) + .then(() => device.gatt.disconnect()) + .then(() => device.gatt.connect()) + .then(() => { + let promises = Promise.resolve(); + for (let service of services) { + let error = new DOMException( + `Service with UUID ${service.uuid} is no longer valid. Remember ` + + `to retrieve the service again after reconnecting.`, + 'InvalidStateError'); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristic('measurement_interval'), + error)); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristics(), + error)); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristics('measurement_interval'), + error)); + } + return promises; + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnected-device.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnected-device.https.html new file mode 100644 index 00000000000..abfd1a9c2da --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnected-device.https.html @@ -0,0 +1,26 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'getPrimaryService called before connecting. Reject with ' + + 'NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); + +bluetooth_test(() => getDiscoveredHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryService('health_thermometer'), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.html new file mode 100644 index 00000000000..098eec4113b --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.html @@ -0,0 +1,32 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for absent service without permission. Should ' + + 'Reject with SecurityError even if services have been discovered already.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service ' + + 'UUID to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); +let device; + +bluetooth_test(() => getHealthThermometerDeviceWithServicesDiscovered({ + filters: [{services: ['health_thermometer']}] + }) + .then(_ => ({device} = _)) + .then(() => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(glucose.alias), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(glucose.name), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(glucose.uuid), expected)])), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.html new file mode 100644 index 00000000000..233a45adf06 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.html @@ -0,0 +1,23 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for absent service. Must reject with ' + + 'NotFoundError even when the services have previously been discovered.'; + +bluetooth_test(() => getHealthThermometerDeviceWithServicesDiscovered({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['glucose']}) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryService('glucose'), + new DOMException( + `No Services matching UUID ${glucose.uuid} found in Device.`, + 'NotFoundError'))), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.html new file mode 100644 index 00000000000..ab93d334818 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.html @@ -0,0 +1,31 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Garbage Collection ran during a getPrimaryService ' + + 'call that failed. Should not crash.' +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect first ' + + 'with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getEmptyHealthThermometerDevice() + .then(({device}) => { + promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryService('health_thermometer'), + expected); + // Disconnect called to clear attributeInstanceMap and allow the + // object to get garbage collected. + device.gatt.disconnect(); + return runGarbageCollection(); + }) + .then(() => promise), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.html new file mode 100644 index 00000000000..647aa504a20 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.html @@ -0,0 +1,31 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Garbage Collection ran during a getPrimaryService call that ' + + 'succeeds. Should not crash.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. ' + + '(Re)connect first with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => { + promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryService('health_thermometer'), + expected); + device.gatt.disconnect(); + return runGarbageCollection(); + }) + .then(() => promise), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.html new file mode 100644 index 00000000000..f09e4e65c27 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.html @@ -0,0 +1,42 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls to getPrimaryService after a disconnection should return ' + + 'a different object.'; +let device, services_first_connection, services_second_connection; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryService('health_thermometer')) + .then(services => services_first_connection = services) + .then(() => device.gatt.disconnect()) + .then(() => device.gatt.connect()) + .then(() => device.gatt.getPrimaryService('health_thermometer')) + .then(services => services_second_connection = services) + .then(() => { + // Convert to arrays if necessary. + services_first_connection = [].concat(services_first_connection); + services_second_connection = [].concat(services_second_connection); + + assert_equals(services_first_connection.length, + services_second_connection.length); + + let first_connection_set = new Set(services_first_connection); + let second_connection_set = new Set(services_second_connection); + + // The two sets should be disjoint. + let common_services = services_first_connection.filter( + val => second_connection_set.has(val)); + assert_equals(common_services.length, 0); + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-get-same-object.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-get-same-object.https.html new file mode 100644 index 00000000000..35893d24a60 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-get-same-object.https.html @@ -0,0 +1,40 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls to getPrimaryService should return the same object.'; +let device; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access']}) + .then(({device}) => Promise.all([ + device.gatt.getPrimaryService('health_thermometer'), + device.gatt.getPrimaryService('health_thermometer')])) + .then(([services_first_call, services_second_call]) => { + // Convert to arrays if necessary. + services_first_call = [].concat(services_first_call); + services_second_call = [].concat(services_second_call); + + assert_equals(services_first_call.length, services_second_call.length); + + let first_call_set = new Set(services_first_call); + assert_equals(services_first_call.length, first_call_set.size); + let second_call_set = new Set(services_second_call); + assert_equals(services_second_call.length, second_call_set.size); + + services_first_call.forEach(service => { + assert_true(second_call_set.has(service)) + }); + + services_second_call.forEach(service => { + assert_true(first_call_set.has(service)); + }); + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html new file mode 100644 index 00000000000..f055cb30751 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Wrong Service name. Reject with TypeError.'; +const expected = new DOMException( + "Failed to execute 'getPrimaryService' on " + + "'BluetoothRemoteGATTServer': Invalid Service name: " + + "'wrong_name'. It must be a valid UUID alias (e.g. 0x1234), " + + "UUID (lowercase hex characters e.g. " + + "'00001234-0000-1000-8000-00805f9b34fb'), " + + "or recognized standard name from " + + "https://www.bluetooth.com/specifications/gatt/services" + + " e.g. 'alert_notification'.", + 'TypeError'); + +bluetooth_test(() => getHealthThermometerDevice() + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryService('wrong_name'), + expected, + 'Wrong Service name passed.')), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html new file mode 100644 index 00000000000..ced2bc653c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html @@ -0,0 +1,30 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for absent service without permission. ' + + 'Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service UUID ' + + 'to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(glucose.alias), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(glucose.name), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(glucose.uuid), expected)])), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html new file mode 100644 index 00000000000..99d5c234044 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html @@ -0,0 +1,24 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for present service without permission to access ' + + 'any service. Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access any service. Tip: Add the service ' + + 'UUID to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryService('heart_rate'), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html new file mode 100644 index 00000000000..2a578365e03 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for present service without permission. ' + + 'Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service UUID ' + + 'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(generic_access.alias), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(generic_access.name), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryService(generic_access.uuid), expected)])), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-service-not-found.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-service-not-found.https.html new file mode 100644 index 00000000000..aca14c5fd40 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-service-not-found.https.html @@ -0,0 +1,23 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for absent service. Reject with NotFoundError.'; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['glucose'] + }) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryService('glucose'), + new DOMException( + `No Services matching UUID ${glucose.uuid} found in Device.`, + 'NotFoundError'))), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html new file mode 100644 index 00000000000..bdf55a6a0aa --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called before getPrimaryServices. ' + + 'Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); +let device; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.disconnect()) + .then(() => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('health_thermometer'), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html new file mode 100644 index 00000000000..45f13382f3c --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called before getPrimaryServices. ' + + 'Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); +let device; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.disconnect()) + .then(() => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.html new file mode 100644 index 00000000000..d7cb43725ed --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.html @@ -0,0 +1,28 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called during a getPrimaryServices ' + + 'call that fails. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', 'NetworkError'); +let device; + +bluetooth_test(() => getEmptyHealthThermometerDevice() + .then(_ => ({device} = _)) + .then(() => { + let promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('health_thermometer'), + expected) + device.gatt.disconnect(); + return promise; + }), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.html new file mode 100644 index 00000000000..27440af9162 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.html @@ -0,0 +1,28 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called during a getPrimaryServices ' + + 'call that fails. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', 'NetworkError'); +let device; + +bluetooth_test(() => getEmptyHealthThermometerDevice() + .then(_ => ({device} = _)) + .then(() => { + let promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(), + expected) + device.gatt.disconnect(); + return promise; + }), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.html new file mode 100644 index 00000000000..7b9955ade44 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called during a getPrimaryServices call that ' + + 'succeeds. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(({device}) => { + let promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('health_thermometer'), + expected); + device.gatt.disconnect(); + return promise; + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.html new file mode 100644 index 00000000000..4b09bce4eee --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'disconnect() called during a getPrimaryServices call that ' + + 'succeeds. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(({device}) => { + let promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(), + expected); + device.gatt.disconnect(); + return promise; + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.html new file mode 100644 index 00000000000..2ef6b5904ac --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.html @@ -0,0 +1,46 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls on services after we disconnect and connect again. '+ + 'Should reject with InvalidStateError.'; +let device, services; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryServices('health_thermometer')) + // Convert to array if necessary. + .then(s => services = [].concat(s)) + .then(() => device.gatt.disconnect()) + .then(() => device.gatt.connect()) + .then(() => { + let promises = Promise.resolve(); + for (let service of services) { + let error = new DOMException( + `Service with UUID ${service.uuid} is no longer valid. Remember ` + + `to retrieve the service again after reconnecting.`, + 'InvalidStateError'); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristic('measurement_interval'), + error)); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristics(), + error)); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristics('measurement_interval'), + error)); + } + return promises; + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.html new file mode 100644 index 00000000000..bc21ea1f2db --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.html @@ -0,0 +1,46 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls on services after we disconnect and connect again. '+ + 'Should reject with InvalidStateError.'; +let device, services; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryServices()) + // Convert to array if necessary. + .then(s => services = [].concat(s)) + .then(() => device.gatt.disconnect()) + .then(() => device.gatt.connect()) + .then(() => { + let promises = Promise.resolve(); + for (let service of services) { + let error = new DOMException( + `Service with UUID ${service.uuid} is no longer valid. Remember ` + + `to retrieve the service again after reconnecting.`, + 'InvalidStateError'); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristic('measurement_interval'), + error)); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristics(), + error)); + promises = promises.then(() => + assert_promise_rejects_with_message( + service.getCharacteristics('measurement_interval'), + error)); + } + return promises; + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.html new file mode 100644 index 00000000000..0a87bce2d03 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.html @@ -0,0 +1,26 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'getPrimaryServices called before connecting. Reject with ' + + 'NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); + +bluetooth_test(() => getDiscoveredHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('health_thermometer'), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.html new file mode 100644 index 00000000000..dbc4428665c --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.html @@ -0,0 +1,26 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'getPrimaryServices called before connecting. Reject with ' + + 'NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' + + 'first with `device.gatt.connect`.', + 'NetworkError'); + +bluetooth_test(() => getDiscoveredHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.html new file mode 100644 index 00000000000..460b94d2565 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.html @@ -0,0 +1,32 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for absent service without permission. Should ' + + 'Reject with SecurityError even if services have been discovered already.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service ' + + 'UUID to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); +let device; + +bluetooth_test(() => getHealthThermometerDeviceWithServicesDiscovered({ + filters: [{services: ['health_thermometer']}] + }) + .then(_ => ({device} = _)) + .then(() => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(glucose.alias), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(glucose.name), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(glucose.uuid), expected)])), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.html new file mode 100644 index 00000000000..38e0d455b46 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.html @@ -0,0 +1,23 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for absent service. Must reject with ' + + 'NotFoundError even when the services have previously been discovered.'; + +bluetooth_test(() => getHealthThermometerDeviceWithServicesDiscovered({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['glucose']}) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('glucose'), + new DOMException( + `No Services matching UUID ${glucose.uuid} found in Device.`, + 'NotFoundError'))), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.html new file mode 100644 index 00000000000..31ab862e82c --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.html @@ -0,0 +1,31 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Garbage Collection ran during a getPrimaryServices ' + + 'call that failed. Should not crash.' +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect first ' + + 'with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getEmptyHealthThermometerDevice() + .then(({device}) => { + promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('health_thermometer'), + expected); + // Disconnect called to clear attributeInstanceMap and allow the + // object to get garbage collected. + device.gatt.disconnect(); + return runGarbageCollection(); + }) + .then(() => promise), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.html new file mode 100644 index 00000000000..a79060adc56 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.html @@ -0,0 +1,31 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Garbage Collection ran during a getPrimaryServices ' + + 'call that failed. Should not crash.' +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. (Re)connect first ' + + 'with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getEmptyHealthThermometerDevice() + .then(({device}) => { + promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(), + expected); + // Disconnect called to clear attributeInstanceMap and allow the + // object to get garbage collected. + device.gatt.disconnect(); + return runGarbageCollection(); + }) + .then(() => promise), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.html new file mode 100644 index 00000000000..b6f0e4a3eef --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.html @@ -0,0 +1,31 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Garbage Collection ran during a getPrimaryServices call that ' + + 'succeeds. Should not crash.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. ' + + '(Re)connect first with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => { + promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('health_thermometer'), + expected); + device.gatt.disconnect(); + return runGarbageCollection(); + }) + .then(() => promise), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.html new file mode 100644 index 00000000000..baf7865b2f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.html @@ -0,0 +1,31 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Garbage Collection ran during a getPrimaryServices call that ' + + 'succeeds. Should not crash.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve services. ' + + '(Re)connect first with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => { + promise = assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(), + expected); + device.gatt.disconnect(); + return runGarbageCollection(); + }) + .then(() => promise), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.html new file mode 100644 index 00000000000..b87a24a5e0e --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.html @@ -0,0 +1,42 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls to getPrimaryServices after a disconnection should return ' + + 'a different object.'; +let device, services_first_connection, services_second_connection; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryServices('health_thermometer')) + .then(services => services_first_connection = services) + .then(() => device.gatt.disconnect()) + .then(() => device.gatt.connect()) + .then(() => device.gatt.getPrimaryServices('health_thermometer')) + .then(services => services_second_connection = services) + .then(() => { + // Convert to arrays if necessary. + services_first_connection = [].concat(services_first_connection); + services_second_connection = [].concat(services_second_connection); + + assert_equals(services_first_connection.length, + services_second_connection.length); + + let first_connection_set = new Set(services_first_connection); + let second_connection_set = new Set(services_second_connection); + + // The two sets should be disjoint. + let common_services = services_first_connection.filter( + val => second_connection_set.has(val)); + assert_equals(common_services.length, 0); + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.html new file mode 100644 index 00000000000..9ed3c50e6be --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.html @@ -0,0 +1,42 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls to getPrimaryServices after a disconnection should return ' + + 'a different object.'; +let device, services_first_connection, services_second_connection; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access'] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryServices()) + .then(services => services_first_connection = services) + .then(() => device.gatt.disconnect()) + .then(() => device.gatt.connect()) + .then(() => device.gatt.getPrimaryServices()) + .then(services => services_second_connection = services) + .then(() => { + // Convert to arrays if necessary. + services_first_connection = [].concat(services_first_connection); + services_second_connection = [].concat(services_second_connection); + + assert_equals(services_first_connection.length, + services_second_connection.length); + + let first_connection_set = new Set(services_first_connection); + let second_connection_set = new Set(services_second_connection); + + // The two sets should be disjoint. + let common_services = services_first_connection.filter( + val => second_connection_set.has(val)); + assert_equals(common_services.length, 0); + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.html new file mode 100644 index 00000000000..9d213d5dfd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.html @@ -0,0 +1,40 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls to getPrimaryServices should return the same object.'; +let device; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access']}) + .then(({device}) => Promise.all([ + device.gatt.getPrimaryServices('health_thermometer'), + device.gatt.getPrimaryServices('health_thermometer')])) + .then(([services_first_call, services_second_call]) => { + // Convert to arrays if necessary. + services_first_call = [].concat(services_first_call); + services_second_call = [].concat(services_second_call); + + assert_equals(services_first_call.length, services_second_call.length); + + let first_call_set = new Set(services_first_call); + assert_equals(services_first_call.length, first_call_set.size); + let second_call_set = new Set(services_second_call); + assert_equals(services_second_call.length, second_call_set.size); + + services_first_call.forEach(service => { + assert_true(second_call_set.has(service)) + }); + + services_second_call.forEach(service => { + assert_true(first_call_set.has(service)); + }); + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-same-object.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-same-object.https.html new file mode 100644 index 00000000000..258bda0ec68 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-get-same-object.https.html @@ -0,0 +1,40 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Calls to getPrimaryServices should return the same object.'; +let device; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['generic_access']}) + .then(({device}) => Promise.all([ + device.gatt.getPrimaryServices(), + device.gatt.getPrimaryServices()])) + .then(([services_first_call, services_second_call]) => { + // Convert to arrays if necessary. + services_first_call = [].concat(services_first_call); + services_second_call = [].concat(services_second_call); + + assert_equals(services_first_call.length, services_second_call.length); + + let first_call_set = new Set(services_first_call); + assert_equals(services_first_call.length, first_call_set.size); + let second_call_set = new Set(services_second_call); + assert_equals(services_second_call.length, second_call_set.size); + + services_first_call.forEach(service => { + assert_true(second_call_set.has(service)) + }); + + services_second_call.forEach(service => { + assert_true(first_call_set.has(service)); + }); + }), test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html new file mode 100644 index 00000000000..c497a0ab119 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Wrong Service name. Reject with TypeError.'; +const expected = new DOMException( + "Failed to execute 'getPrimaryServices' on " + + "'BluetoothRemoteGATTServer': Invalid Service name: " + + "'wrong_name'. It must be a valid UUID alias (e.g. 0x1234), " + + "UUID (lowercase hex characters e.g. " + + "'00001234-0000-1000-8000-00805f9b34fb'), " + + "or recognized standard name from " + + "https://www.bluetooth.com/specifications/gatt/services" + + " e.g. 'alert_notification'.", + 'TypeError'); + +bluetooth_test(() => getHealthThermometerDevice() + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('wrong_name'), + expected, + 'Wrong Service name passed.')), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html new file mode 100644 index 00000000000..0251ea02fbf --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html @@ -0,0 +1,30 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for absent service without permission. ' + + 'Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service UUID ' + + 'to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(glucose.alias), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(glucose.name), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(glucose.uuid), expected)])), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html new file mode 100644 index 00000000000..332f016ea45 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html @@ -0,0 +1,24 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for present service without permission to access ' + + 'any service. Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access any service. Tip: Add the service ' + + 'UUID to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('heart_rate'), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html new file mode 100644 index 00000000000..34d7043caf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html @@ -0,0 +1,24 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for present service without permission to access ' + + 'any service. Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access any service. Tip: Add the service ' + + 'UUID to \'optionalServices\' in requestDevice() options. ' + + 'https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true}) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(), + expected)), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html new file mode 100644 index 00000000000..1f3f291a129 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html @@ -0,0 +1,29 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for present service without permission. ' + + 'Reject with SecurityError.'; +const expected = new DOMException( + 'Origin is not allowed to access the service. Tip: Add the service UUID ' + + 'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ', + 'SecurityError'); + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}] + }) + .then(({device}) => Promise.all([ + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(generic_access.alias), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(generic_access.name), expected), + assert_promise_rejects_with_message( + device.gatt.getPrimaryServices(generic_access.uuid), expected)])), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.html new file mode 100644 index 00000000000..cb5e0941f66 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.html @@ -0,0 +1,23 @@ +<!-- Generated by //third_party/WebKit/LayoutTests/bluetooth/generate.py --> +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/bluetooth/resources/bluetooth-helpers.js"></script> +<script> +'use strict'; +const test_desc = 'Request for absent service. Reject with NotFoundError.'; + +bluetooth_test(() => getHealthThermometerDevice({ + filters: [{services: ['health_thermometer']}], + optionalServices: ['glucose'] + }) + .then(({device}) => assert_promise_rejects_with_message( + device.gatt.getPrimaryServices('glucose'), + new DOMException( + `No Services matching UUID ${glucose.uuid} found in Device.`, + 'NotFoundError'))), + test_desc); + +</script> diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/characteristic-found.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/characteristic-found.https.html index 9cf34c202f2..9746f4b058c 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/characteristic-found.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/characteristic-found.https.html @@ -6,24 +6,24 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getHealthThermometerDevice() - .then(({device}) => device.gatt.getPrimaryService('health_thermometer')) - .then(service => { - return Promise.all([ +const test_desc = 'Request for characteristic. Should return right ' + + 'characteristic.'; +let device, service; + +bluetooth_test(() => getHealthThermometerDevice() + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryService('health_thermometer')) + .then(_ => service = _) + .then(() => Promise.all([ service.getCharacteristic(measurement_interval.alias), service.getCharacteristic(measurement_interval.name), - service.getCharacteristic(measurement_interval.uuid)]) - .then(characteristics => { - characteristics.forEach(characteristic => { - assert_equals( - characteristic.uuid, measurement_interval.uuid, - 'Characteristic UUID should be the same as requested UUID.'); - assert_equals( - characteristic.service, service, - 'Characteristic service should be the same as service.'); - }); - }); - }); -}, 'Request for characteristic. Should return right characteristic'); + service.getCharacteristic(measurement_interval.uuid)])) + .then(characteristics => characteristics.forEach(characteristic => { + assert_equals( + characteristic.uuid, measurement_interval.uuid, + 'Characteristic UUID should be the same as requested UUID.'); + assert_equals( + characteristic.service, service, + 'Characteristic service should be the same as service.'); + })), test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html index 48c3c28e02a..5620f2c9245 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html @@ -6,13 +6,19 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getHIDDevice({filters: [{services: ['device_information']}]}) - .then(({device}) => device.gatt.getPrimaryService('device_information')) +const test_desc = 'The Device Information service is composed of blocklisted ' + + 'characteristics so we shouldn\'t find any.'; +const expected = new DOMException('No Characteristics found in service.', + 'NotFoundError'); +let device; + +bluetooth_test(() => getHIDDevice({ + filters: [{services: ['device_information']}] + }) + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryService('device_information')) .then(service => assert_promise_rejects_with_message( service.getCharacteristics(), - new DOMException('No Characteristics found in service.', - 'NotFoundError'))); -}, 'The Device Information service is composed of blocklisted ' + - 'characteristics so we shouldn\'t find any.'); + expected)), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.html index 868476a88c9..9139ae10f89 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found-with-uuid.https.html @@ -6,43 +6,39 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getDiscoveredHealthThermometerDevice() - .then(({device, fake_peripheral}) => { - // Setup a device with two measurement intervals. - return fake_peripheral.setNextGATTConnectionResponse({ - code: HCI_SUCCESS}) - .then(() => device.gatt.connect()) - .then(() => fake_peripheral.addFakeService({ - uuid: 'health_thermometer'})) - .then(fake_health_thermometer => Promise.all([ - fake_health_thermometer.addFakeCharacteristic({ - uuid: 'measurement_interval', - properties: ['read', 'write', 'indicate']}), - fake_health_thermometer.addFakeCharacteristic({ - uuid: 'measurement_interval', - properties: ['read', 'write', 'indicate']}), - fake_health_thermometer.addFakeCharacteristic({ - uuid: 'temperature_measurement', - properties: ['indicate']}) - ])) - .then(() => fake_peripheral.setNextGATTDiscoveryResponse({ - code: HCI_SUCCESS})) - .then(() => device.gatt.getPrimaryService('health_thermometer')) - // Actual test starts. - .then((service) => Promise.all([ - service.getCharacteristics(measurement_interval.alias), - service.getCharacteristics(measurement_interval.name), - service.getCharacteristics(measurement_interval.uuid)])) - .then(characteristics_arrays => { - characteristics_arrays.forEach(characteristics => { - assert_equals(characteristics.length, 2); - assert_equals(characteristics[0].uuid, - measurement_interval.uuid); - assert_equals(characteristics[1].uuid, - measurement_interval.uuid); - }); - }); - }); -}, 'Find characteristics with UUID in service.'); +const test_desc = 'Find characteristics with UUID in service.'; +let device, fake_peripheral; + +bluetooth_test(() => getDiscoveredHealthThermometerDevice() + .then(_ => ({device, fake_peripheral} = _ )) + // Setup a device with two measurement intervals. + .then(() => + fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS})) + .then(() => device.gatt.connect()) + .then(() => fake_peripheral.addFakeService({uuid: 'health_thermometer'})) + .then(fake_health_thermometer => Promise.all([ + fake_health_thermometer.addFakeCharacteristic({ + uuid: 'measurement_interval', + properties: ['read', 'write', 'indicate']}), + fake_health_thermometer.addFakeCharacteristic({ + uuid: 'measurement_interval', + properties: ['read', 'write', 'indicate']}), + fake_health_thermometer.addFakeCharacteristic({ + uuid: 'temperature_measurement', + properties: ['indicate']}) + ])) + .then(() => + fake_peripheral.setNextGATTDiscoveryResponse({code: HCI_SUCCESS})) + .then(() => device.gatt.getPrimaryService('health_thermometer')) + // Actual test starts. + .then(service => Promise.all([ + service.getCharacteristics(measurement_interval.alias), + service.getCharacteristics(measurement_interval.name), + service.getCharacteristics(measurement_interval.uuid)])) + .then(characteristics_arrays => characteristics_arrays.forEach( + characteristics => { + assert_equals(characteristics.length, 2); + assert_equals(characteristics[0].uuid, measurement_interval.uuid); + assert_equals(characteristics[1].uuid, measurement_interval.uuid); + })), test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found.https.html index b1b0fb4e648..952e3e6b5e9 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-found.https.html @@ -6,44 +6,43 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getDiscoveredHealthThermometerDevice() - .then(({device, fake_peripheral}) => { - // Setup a device with two measurement intervals. - return fake_peripheral.setNextGATTConnectionResponse({ - code: HCI_SUCCESS}) - .then(() => device.gatt.connect()) - .then(() => fake_peripheral.addFakeService({ - uuid: 'health_thermometer'})) - .then(fake_health_thermometer => Promise.all([ - fake_health_thermometer.addFakeCharacteristic({ - uuid: 'measurement_interval', - properties: ['read', 'write', 'indicate']}), - fake_health_thermometer.addFakeCharacteristic({ - uuid: 'measurement_interval', - properties: ['read', 'write', 'indicate']}), - fake_health_thermometer.addFakeCharacteristic({ - uuid: 'temperature_measurement', - properties: ['indicate']}) - ])) - .then(() => fake_peripheral.setNextGATTDiscoveryResponse({ - code: HCI_SUCCESS})) - .then(() => device.gatt.getPrimaryService('health_thermometer')) - // Actual test starts. - .then(service => service.getCharacteristics()) - .then(characteristics => { - // Expect three characteristic instances. - assert_equals(characteristics.length, 3); +const test_desc = 'Find all characteristics in a service.'; +let device, fake_peripheral; - let uuid_set = new Set(characteristics.map(c => c.uuid)); - // Two of the expected characteristics are 'measurement_interval', - // so only 2 unique UUID. - assert_equals(uuid_set.size, 2); - assert_true(uuid_set.has(BluetoothUUID.getCharacteristic( - 'measurement_interval'))); - assert_true(uuid_set.has(BluetoothUUID.getCharacteristic( - 'temperature_measurement'))); - }); - }); -}, 'Find all characteristics in a service.'); +bluetooth_test(() => getDiscoveredHealthThermometerDevice() + .then(_ => ({device, fake_peripheral} = _)) + // Setup a device with two measurement intervals. + .then(() => + fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS})) + .then(() => device.gatt.connect()) + .then(() => fake_peripheral.addFakeService({uuid: 'health_thermometer'})) + .then(fake_health_thermometer => Promise.all([ + fake_health_thermometer.addFakeCharacteristic({ + uuid: 'measurement_interval', + properties: ['read', 'write', 'indicate']}), + fake_health_thermometer.addFakeCharacteristic({ + uuid: 'measurement_interval', + properties: ['read', 'write', 'indicate']}), + fake_health_thermometer.addFakeCharacteristic({ + uuid: 'temperature_measurement', + properties: ['indicate']}) + ])) + .then(() => + fake_peripheral.setNextGATTDiscoveryResponse({code: HCI_SUCCESS})) + .then(() => device.gatt.getPrimaryService('health_thermometer')) + // Actual test starts. + .then(service => service.getCharacteristics()) + .then(characteristics => { + // Expect three characteristic instances. + assert_equals(characteristics.length, 3); + + let uuid_set = new Set(characteristics.map(c => c.uuid)); + // Two of the expected characteristics are 'measurement_interval', + // so only 2 unique UUID. + assert_equals(uuid_set.size, 2); + assert_true(uuid_set.has(BluetoothUUID.getCharacteristic( + 'measurement_interval'))); + assert_true(uuid_set.has(BluetoothUUID.getCharacteristic( + 'temperature_measurement'))); + }), test_desc); </script> diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-not-found.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-not-found.https.html index f9c8efbfd74..6401740681a 100644 --- a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-not-found.https.html +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/characteristics-not-found.https.html @@ -6,11 +6,15 @@ <script src="/bluetooth/resources/bluetooth-helpers.js"></script> <script> 'use strict'; -bluetooth_test(() => { - return getEmptyHealthThermometerService() - .then(({service}) => assert_promise_rejects_with_message( - service.getCharacteristics(), - new DOMException('No Characteristics found in service.', - 'NotFoundError'))) -}, 'Request for absent characteristics. Reject with NotFoundError.'); +const test_desc = 'Request for absent characteristics. Reject with ' + + 'NotFoundError.'; +const expected = new DOMException('No Characteristics found in service.', + 'NotFoundError'); +let service; + +bluetooth_test(() => getEmptyHealthThermometerService() + .then(_ => ({service} = _)) + .then(() => assert_promise_rejects_with_message( + service.getCharacteristics(), expected)), + test_desc); </script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-self-allowed-target-blank.html b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-self-allowed-target-blank.html new file mode 100644 index 00000000000..673174c1f03 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-self-allowed-target-blank.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html> + +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<meta http-equiv="Content-Security-Policy" content="form-action 'self'"> +</head> + +<body> + <form action='/content-security-policy/support/postmessage-pass-to-opener.html' + id='form_id' + target="_blank"> + </form> + + <p> + Test that "form-action 'self'" works correctly when the form uses + target="_blank". If this test passes, a new window must open after pressing + "submit". + </p> +</body> + +<script> + async_test(t => { + document.addEventListener('securitypolicyviolation', function(e) { + t.unreached_func("Form submission was blocked."); + }); + + window.addEventListener('message', function(event) { + t.done(); + }) + + window.addEventListener("load", function() { + document.getElementById("form_id").submit(); + }); + }, "The form submission should not be blocked by the iframe's CSP."); +</script> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-allowed.html new file mode 100644 index 00000000000..e103a9fb246 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-allowed.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Security-Policy" content="prefetch-src 'self'"> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> + <script src='/content-security-policy/support/testharness-helper.js'></script> + <script src='/content-security-policy/support/prefetch-helper.js'></script> + <script> + async_test(t => { + let url = window.origin + '/content-security-policy/support/pass.png'; + + let link = document.createElement('link'); + link.rel = 'prefetch'; + link.href = url; + + assert_link_prefetches(t, link); + }, 'Prefetch succeeds when allowed by prefetch-src'); + </script> +</head> +<body> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-blocked.html b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-blocked.html new file mode 100644 index 00000000000..890a65f82cf --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-blocked.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Security-Policy" content="prefetch-src 'none';"> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> + <script src='/content-security-policy/support/testharness-helper.js'></script> + <script src='/content-security-policy/support/prefetch-helper.js'></script> + <script> + async_test(t => { + let url = window.origin + '/content-security-policy/support/fail.png'; + + let link = document.createElement('link'); + link.rel = 'prefetch'; + link.href = url; + + assert_link_does_not_prefetch(t, link); + }, "Blocked prefetch generates report."); + </script> +</head> +<body> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-allowed.html new file mode 100644 index 00000000000..dd8071b66ee --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-allowed.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html> +<head> + <!-- Headers: + Content-Security-Policy: prefetch-src 'self' + Link: </content-security-policy/support/pass.png>;rel=prefetch + --> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> + <script src='/content-security-policy/support/testharness-helper.js'></script> + <script src='/content-security-policy/support/prefetch-helper.js'></script> + <script> + async_test(t => { + let url = window.origin + '/content-security-policy/support/pass.png'; + assert_no_csp_event_for_url(t, url); + + waitUntilResourceDownloaded(url) + .then(t.step_func_done()); + }, 'Prefetch via `Link` header succeeds when allowed by prefetch-src'); + </script> +</head> +<body> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-allowed.html.headers b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-allowed.html.headers new file mode 100644 index 00000000000..2b1d42a8d16 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-allowed.html.headers @@ -0,0 +1,2 @@ +Content-Security-Policy: prefetch-src 'self' +Link: </content-security-policy/support/pass.png>;rel=prefetch diff --git a/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-blocked.html b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-blocked.html new file mode 100644 index 00000000000..382c99a80d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-header-blocked.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Security-Policy" content="prefetch-src 'none'"> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> + <script src='/content-security-policy/support/testharness-helper.js'></script> + <script src='/content-security-policy/support/prefetch-helper.js'></script> + <script> + async_test(t => { + let url = window.origin + '/content-security-policy/support/fail.png'; + waitUntilCSPEventForURL(t, url) + .then(t.step_func_done(e => { + assert_equals(e.violatedDirective, 'prefetch-src'); + assert_resource_not_downloaded(t, url); + })); + + // Load a stylesheet that tries to trigger a prefetch: + let link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = '/content-security-policy/support/prefetch-subresource.css'; + document.head.appendChild(link); + }, 'Prefetch via `Link` header succeeds when allowed by prefetch-src'); + </script> +</head> +<body> +</body> +</html> + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/checkReport.sub.js b/tests/wpt/web-platform-tests/content-security-policy/support/checkReport.sub.js index ba179d6bab4..7e5417b5e68 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/support/checkReport.sub.js +++ b/tests/wpt/web-platform-tests/content-security-policy/support/checkReport.sub.js @@ -13,9 +13,16 @@ var reportValue = "{{GET[reportValue]}}"; var reportExists = "{{GET[reportExists]}}"; var noCookies = "{{GET[noCookies]}}"; + var reportCookieName = "{{GET[reportCookieName]}}" + var testName = "{{GET[testName]}}" + var cookiePresent = "{{GET[cookiePresent]}}" + var reportCount = "{{GET[reportCount]}}" var location = window.location; - var thisTestName = location.pathname.split('/')[location.pathname.split('/').length - 1].split('.')[0]; + if (reportCookieName == "") { + // fallback on test file name if cookie name not specified + reportCookieName = location.pathname.split('/')[location.pathname.split('/').length - 1].split('.')[0]; + } var reportID = ""; @@ -24,7 +31,7 @@ var cookieName = cookies[i].split('=')[0].trim(); var cookieValue = cookies[i].split('=')[1].trim(); - if (cookieName == thisTestName) { + if (cookieName == reportCookieName) { reportID = cookieValue; var cookieToDelete = cookieName + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=" + document.location.pathname.substring(0, document.location.pathname.lastIndexOf('/') + 1); document.cookie = cookieToDelete; @@ -33,9 +40,10 @@ } var timeout = document.querySelector("meta[name=timeout][content=long]") ? 50 : 5; - var reportLocation = location.protocol + "//" + location.host + "/content-security-policy/support/report.py?op=take&timeout=" + timeout + "&reportID=" + reportID; + var reportLocation = location.protocol + "//" + location.host + "/content-security-policy/support/report.py?op=retrieve_report&timeout=" + timeout + "&reportID=" + reportID; - var reportTest = async_test("Violation report status OK."); + if (testName == "") testName = "Violation report status OK."; + var reportTest = async_test(testName); function assert_field_value(field, value, field_name) { assert_true(field.indexOf(value.split(" ")[0]) != -1, @@ -77,17 +85,38 @@ report.send(); }); - if (noCookies) { - var cookieTest = async_test("No cookies sent with report."); + if (noCookies || cookiePresent) { + var cookieTest = async_test("Test report cookies."); var cookieReport = new XMLHttpRequest(); cookieReport.onload = cookieTest.step_func(function () { - var data = JSON.parse(cookieReport.responseText); - assert_equals(data.reportCookies, "None"); - cookieTest.done(); + var data = JSON.parse(cookieReport.responseText); + if (noCookies) { + assert_equals(data.reportCookies, "None", "Report should not contain any cookies"); + } + + if (cookiePresent) { + assert_true(data.reportCookies.hasOwnProperty(cookiePresent), "Report should contain cookie: " + cookiePresent); + } + cookieTest.done(); }); - var cReportLocation = location.protocol + "//" + location.host + "/content-security-policy/support/report.py?op=cookies&timeout=" + timeout + "&reportID=" + reportID; + var cReportLocation = location.protocol + "//" + location.host + "/content-security-policy/support/report.py?op=retrieve_cookies&timeout=" + timeout + "&reportID=" + reportID; cookieReport.open("GET", cReportLocation, true); cookieReport.send(); - }; + } + + if (reportCount != "") { + var reportCountTest = async_test("Test number of sent reports."); + var reportCountReport = new XMLHttpRequest(); + reportCountReport.onload = reportCountTest.step_func(function () { + var data = JSON.parse(reportCountReport.responseText); + + assert_equals(data.report_count, reportCount, "Report count was not what was expected."); + + reportCountTest.done(); + }); + var cReportLocation = location.protocol + "//" + location.host + "/content-security-policy/support/report.py?op=retrieve_count&timeout=" + timeout + "&reportID=" + reportID; + reportCountReport.open("GET", cReportLocation, true); + reportCountReport.send(); + } })(); diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/postmessage-pass-to-opener.html b/tests/wpt/web-platform-tests/content-security-policy/support/postmessage-pass-to-opener.html new file mode 100644 index 00000000000..e1bdf7102f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/support/postmessage-pass-to-opener.html @@ -0,0 +1,3 @@ +<script> + window.top.opener.postMessage('PASS', '*'); +</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-helper.js b/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-helper.js new file mode 100644 index 00000000000..db6d87593df --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-helper.js @@ -0,0 +1,65 @@ +test(t => { + assert_true(document.createElement('link').relList.supports('prefetch')); +}, "Browser supports prefetch."); + +test(t => { + assert_true(!!window.PerformanceResourceTiming); +}, "Browser supports performance APIs."); + +async function waitUntilResourceDownloaded(url) { + await new Promise((resolve, reject) => { + if (performance.getEntriesByName(url).length >= 1) + resolve(); + + let observer = new PerformanceObserver(list => { + list.getEntries().forEach(entry => { + if (entry.name == url) { + resolve(); + } + }); + }); + }); +} + +async function assert_resource_not_downloaded(test, url) { + if (performance.getEntriesByName(url).length >= 1) { + (test.unreached_func(`'${url}' should not have downloaded.`))(); + } +} + +function assert_link_prefetches(test, link) { + assert_no_csp_event_for_url(test, link.href); + + link.onerror = test.unreached_func('onerror should not fire.'); + + // Test is finished when either the `load` event fires, or we get a performance + // entry showing that the resource loaded successfully. + link.onload = test.step_func(test.step_func_done()); + waitUntilResourceDownloaded(link.href).then(test.step_func_done()); + + document.head.appendChild(link); +} + +function assert_link_does_not_prefetch(test, link) { + let cspEvent = false; + let errorEvent = false; + + waitUntilCSPEventForURL(test, link.href) + .then(test.step_func(e => { + cspEvent = true; + assert_equals(e.violatedDirective, "prefetch-src"); + assert_equals(e.effectiveDirective, "prefetch-src"); + + if (errorEvent) + test.done(); + })); + + link.onerror = test.step_func(e => { + errorEvent = true; + if (cspEvent) + test.done(); + }); + link.onload = test.unreached_func('onload should not fire.'); + + document.head.appendChild(link); +} diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-subresource.css b/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-subresource.css new file mode 100644 index 00000000000..4c4fa464420 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-subresource.css @@ -0,0 +1,3 @@ +/* This CSS file sends some headers: + * Link: </content-security-policy/support/fail.png>;rel=prefetch + */ diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-subresource.css.headers b/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-subresource.css.headers new file mode 100644 index 00000000000..eaf7b166385 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/support/prefetch-subresource.css.headers @@ -0,0 +1 @@ +Link: </content-security-policy/support/fail.png>;rel=prefetch diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/report.py b/tests/wpt/web-platform-tests/content-security-policy/support/report.py index 193315fa07b..3b249f30b3e 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/support/report.py +++ b/tests/wpt/web-platform-tests/content-security-policy/support/report.py @@ -2,33 +2,61 @@ import time import json import re +def retrieve_from_stash(request, key, timeout, default_value): + t0 = time.time() + while time.time() - t0 < timeout: + time.sleep(0.5) + value = request.server.stash.take(key=key) + if value is not None: + return value + + return default_value + def main(request, response): - op = request.GET.first("op"); - key = request.GET.first("reportID") + op = request.GET.first("op"); + key = request.GET.first("reportID") + cookie_key = re.sub('^....', 'cccc', key) + count_key = re.sub('^....', 'dddd', key) - if op == "take": - timeout = float(request.GET.first("timeout")) - t0 = time.time() - while time.time() - t0 < timeout: - time.sleep(0.5) - value = request.server.stash.take(key=key) - if value is not None: - return [("Content-Type", "application/json")], value + try: + timeout = request.GET.first("timeout") + except: + timeout = 0.5 + timeout = float(timeout) - return [("Content-Type", "application/json")], json.dumps({'error': 'No such report.' , 'guid' : key}) + if op == "retrieve_report": + return [("Content-Type", "application/json")], retrieve_from_stash(request, key, timeout, json.dumps({'error': 'No such report.' , 'guid' : key})) - if op == "cookies": - cval = request.server.stash.take(key=re.sub('^...', 'ccc', key)) - if cval is None: - cval = "\"None\"" + if op == "retrieve_cookies": + return [("Content-Type", "application/json")], "{ \"reportCookies\" : " + str(retrieve_from_stash(request, cookie_key, timeout, "\"None\"")) + "}" - return [("Content-Type", "application/json")], "{ \"reportCookies\" : " + cval + "}" + if op == "retrieve_count": + return [("Content-Type", "application/json")], json.dumps({'report_count': str(retrieve_from_stash(request, count_key, timeout, 0))}) - if hasattr(request, 'Cookies'): - request.server.stash.put(key=re.sub('^...', 'ccc', key), value=request.Cookies) + # save cookies + if hasattr(request, 'cookies') and len(request.cookies.keys()) > 0: + # convert everything into strings and dump it into a dict so it can be jsoned + temp_cookies_dict = {} + for dict_key in request.cookies.keys(): + temp_cookies_dict[str(dict_key)] = str(request.cookies.get_list(dict_key)) + with request.server.stash.lock: + request.server.stash.take(key=cookie_key) + request.server.stash.put(key=cookie_key, value=json.dumps(temp_cookies_dict)) - report = request.body - report.rstrip() + # save latest report + report = request.body + report.rstrip() + with request.server.stash.lock: request.server.stash.take(key=key) request.server.stash.put(key=key, value=report) - return [("Content-Type", "text/plain")], "Recorded report " + report + + with request.server.stash.lock: + # increment report count + count = request.server.stash.take(key=count_key) + if count is None: + count = 0 + count += 1 + request.server.stash.put(key=count_key, value=count) + + # return acknowledgement report + return [("Content-Type", "text/plain")], "Recorded report " + report diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-001.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-001.xht index 43179e6ce7c..825ab5ab2ee 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-001.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-001.xht @@ -4,6 +4,7 @@ <title>CSS Test: Class selectors with only a partial match of 'class' attribute</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> <link rel="match" href="../reference/no-red-filler-text-ref.xht"/> <meta name="flags" content="" /> <meta name="assert" content="Class selector need to match any or all of the values in the 'class' attribute." /> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-002.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-002.xht index 7005634602f..1aac525555f 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-002.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-002.xht @@ -4,6 +4,7 @@ <title>CSS Test: Class selectors with a type</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> <link rel="match" href="../reference/filler-text-below-green.xht"/> <meta name="flags" content="" /> <meta name="assert" content="Class selector with a type, match the appropriate element." /> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-003.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-003.xht index 9ed65d01135..f09716610fe 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-003.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-003.xht @@ -4,6 +4,7 @@ <title>CSS Test: Class selectors without a type</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> <link rel="match" href="../reference/filler-text-below-green.xht"/> <meta name="flags" content="" /> <meta name="assert" content="Class selector without a type, match the appropriate element." /> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-004.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-004.xht index 29b22615681..c7faefbce17 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-004.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-004.xht @@ -4,6 +4,7 @@ <title>CSS Test: Invalid class selectors with a space between the "." and the class name</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> <link rel="match" href="../reference/no-red-filler-text-ref.xht"/> <meta name="flags" content="invalid" /> <meta name="assert" content="The attribute value of a class selector followed by white space is invalid." /> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-005.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-005.xht index ee809f3809e..a62adaee1cc 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-005.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-005.xht @@ -4,6 +4,7 @@ <title>CSS Test: Invalid class selectors with a carriage return between the "." and the class name</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> <link rel="match" href="../reference/no-red-filler-text-ref.xht"/> <meta name="flags" content="invalid" /> <meta name="assert" content="The attribute value of a class selector followed by white space is invalid." /> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-006.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-006.xht index 2010fb8267b..c55443a9176 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-006.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-006.xht @@ -4,6 +4,7 @@ <title>CSS Test: Multiple class selectors</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> <link rel="match" href="../reference/filler-text-below-green.xht"/> <meta name="flags" content="" /> <meta name="assert" content="All class names in the selector need to match all of the 'class' attribute values." /> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-007.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-007.xht index e336bf4c9de..c27f3f2edd5 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-007.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-007.xht @@ -4,6 +4,7 @@ <title>CSS Test: Multiple class selectors and missing class values</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> <link rel="match" href="../reference/no-red-filler-text-ref.xht"/> <meta name="flags" content="" /> <meta name="assert" content="All class names in the selector need to match all of the 'class' attribute values." /> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-008.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-008.xht index 375a6d6ca0d..b4ceabb6a02 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-008.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-008.xht @@ -5,6 +5,7 @@ <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/class/001.html" type="text/html"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> <link rel="match" href="../reference/ref-this-text-should-be-green.xht" /> <style type="text/css"> .teST { color: green; } diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-009.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-009.xht index 29baaa748c8..cba3e082894 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-009.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-009.xht @@ -5,13 +5,15 @@ <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/class/002.html" type="text/html"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> + <link rel="match" href="../reference/ref-green-background.xht" /> <style type="text/css"> p { background: green; color: white; } .fail.test { background: red; color: yellow; } </style> </head> <body> - <p class="pass test">This line should be green.</p> + <p class="pass test">This should have a green background.</p> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-010.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-010.xht index 99f3ebc7bf2..e0fd5bc19a3 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-010.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-010.xht @@ -5,13 +5,15 @@ <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/class/003.html" type="text/html"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> + <link rel="match" href="../reference/ref-green-background.xht" /> <style type="text/css"> p { background: red; color: yellow; } .pass.test { background: green; color: white; } </style> </head> <body> - <p class="pass test">This line should be green.</p> + <p class="pass test">This should have a green background.</p> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-011.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-011.xht index 2af242bde6a..ac49276ec29 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-011.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-011.xht @@ -5,13 +5,15 @@ <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/class/004.html" type="text/html"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> + <link rel="match" href="../reference/ref-green-background.xht" /> <style type="text/css"> p { background: red; color: yellow; } .pass { background: green; color: white; } </style> </head> <body> - <p class="pass test">This line should be green.</p> + <p class="pass test">This should have a green background.</p> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-012-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-012-ref.html new file mode 100644 index 00000000000..52f9a3abcec --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-012-ref.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<style> + p { + color: white; + background: green; + } +</style> +<body> + <p>This line should be green.</p> + <p>This line should be green.</p> + <p>This line should be green.</p> + <p>This line should be green.</p> + <p>This line should be green.</p> + <p>This line should be green.</p> + <p>This line should be green.</p> + <p>This line should be green.</p> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-012.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-012.xht index b822f1b2e7b..ea57e2b8a51 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-012.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/class-selector-012.xht @@ -5,6 +5,8 @@ <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/class/005.html" type="text/html"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#class-html" /> + <link rel="help" href="https://www.w3.org/TR/selectors/#class-html" /> + <link rel="match" href="class-selector-012-ref.html" /> <style type="text/css"> p { background: red; color: yellow; } .test { background: green; color: white; } diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-001-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-001-ref.html new file mode 100644 index 00000000000..8aa67fa12a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-001-ref.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<style> + .green { + color: green; + } +</style> +<body> + <div class="green">Filler Text</div> + <div>Filler Text</div> + <p>Test passes if the first "Filler Text" above is green and the second one is black.</p> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-001.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-001.xht index e8d4e6613fe..9f60cdc59e2 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-001.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-001.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-child pseudo-class</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-child" /> + <link rel="match" href="first-child-selector-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="First-child pseudo-class matches only the first element of its type." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-002-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-002-ref.html new file mode 100644 index 00000000000..c2ee2e78bf8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-002-ref.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<style> + .green { + color: green; + } +</style> +<body> + Filler Text + <div class="green">Filler Text</div> + <div>Filler Text</div> + <p>Test passes if the second line of "Filler Text" above is green and the first and third lines are black.</p> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-002.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-002.xht index 588d8f931c9..d2c6512daba 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-002.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-002.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-child pseudo-class with text node</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-child" /> + <link rel="match" href="first-child-selector-002-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="First-child pseudo-class matches only the first element of its type ignoring text nodes." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-003.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-003.xht index c779c8bd0e9..a02e002777d 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-003.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-child-selector-003.xht @@ -5,12 +5,13 @@ <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/child/001.xml" type="application/xhtml+xml"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-child" /> + <link rel="match" href="../reference/ref-this-text-should-be-green.xht" /> <style type="text/css"> - html { color: green; } - html:first-child { color: red ! important; } + html { color: red; } + :root:first-child { color: green; } </style> </head> <body> - <p>This should be green.</p> + <p>This text should be green.</p> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-000-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-000-ref.html new file mode 100644 index 00000000000..ea97ba2a174 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-000-ref.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<style> + div { + color: green; + font: 2em sans-serif; + } +</style> +<body> + <p>This next line should be green:</p> + <div>TESTING</div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-000.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-000.xht index 1b2b6fff4d6..0fdef1893b9 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-000.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-000.xht @@ -5,6 +5,7 @@ <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/first-letter/001.xml" type="application/xhtml+xml"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-000-ref.html" /> <style type="text/css"> .test { float: left; font: 2em sans-serif; } .test:first-letter { color: green; } diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-001-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-001-ref.html new file mode 100644 index 00000000000..625c2f5c151 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-001-ref.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<style> + span { + color: green; + } +</style> +<body> + <p>Test passes if the letter "F" below is green.</p> + <div><span>F</span>iller Text</div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-001.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-001.xht index c386e3ef897..7ae5c3a05b1 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-001.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-001.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter pseudo-element</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The :first-letter pseudo-element matches the first letter in a given element." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-002-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-002-ref.html new file mode 100644 index 00000000000..39d40455a75 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-002-ref.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<body> + <p>Test passes if there is no red visible on the page.</p> + <div><img alt="15x15 blue box" src="support/blue15x15.png" />Filler Text</div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-002.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-002.xht index 3c556851715..982c64dbc2f 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-002.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-002.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter pseudo-element with image missing alt text</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-002-ref.html" /> <meta name="flags" content="image" /> <meta name="assert" content="If there is preceding content (an image) or alt text the :first-letter pseudo-element does not match the first letter." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-003-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-003-ref.html new file mode 100644 index 00000000000..a818e1a7d51 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-003-ref.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<style> + span { + color: green; + } +</style> +<body> + <p>Test passes if the number "4" below is green.</p> + <div><span>4</span>2 Filler Text</div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-003.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-003.xht index 42ea44590b4..876f2ef7711 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-003.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-003.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter as a digit</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-003-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The ':first-letter' applies if the first letter is a digit." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-004.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-004.xht index 9ac95877594..e350c74c9c4 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-004.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-004.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter and :before</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="If an element has ':before' or ':after' content, the ':first-letter applies to the first letter of the element including that content." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-005-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-005-ref.html new file mode 100644 index 00000000000..d64537c2388 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-005-ref.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<body> + <p>Test passes if there is no red visible on the page.</p> + <div><br />Filler Text</div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-005.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-005.xht index 3d0a622fb0e..7f0c7dc936c 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-005.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-005.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter with leading line break</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-005-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The first letter occurs on the first formatted line." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-007-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-007-ref.html new file mode 100644 index 00000000000..4c2801b0aaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-007-ref.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<style> + span { + color: green; + } +</style> +<body> + <p>Test passes if the letter "F" below is green.</p> + <table> + <tr> + <td><span>F</span>iller Text</td> + </tr> + </table> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-007.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-007.xht index 45b7bb06101..2f19c5d58d8 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-007.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-007.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter with table cell elements</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-007-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The :first-letter pseudo-element applies to table-cells." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-008.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-008.xht index 8380838f084..e7c9b660674 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-008.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-008.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter with inline-block elements</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The first-letter pseudo-element applies to inline-block elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-019.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-019.xht index 228308a2d98..115d71698be 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-019.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-letter-selector-019.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter in descendents</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-letter" /> + <link rel="match" href="first-letter-selector-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="A user agent acts as if the fictional start tag of the first-letter pseudo-element is just before the first text of the element, even if that first text is in a descendant." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-017.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-017.xht index f6e9033c19d..9f43eca8066 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-017.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-017.xht @@ -12,6 +12,6 @@ </style> </head> <body> - <p><span>This sentence should have a green background.</span></p> + <p><span>This should have a green background.</span></p> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-019.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-019.xht index c1bb6cddd44..3c29e0383aa 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-019.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-019.xht @@ -6,11 +6,12 @@ <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/first-line/003.xml" type="application/xhtml+xml"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/first-line/003.html" type="type/html"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo" /> + <link rel="match" href="../reference/ref-this-text-should-be-green.xht" /> <style type="text/css"> :first-line { color: green; } </style> </head> <body> - <p>This line should be green.</p> + <p>This text should be green.</p> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-020.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-020.xht index 63acd1cc710..d0c8ddcc0f3 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-020.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-020.xht @@ -6,11 +6,12 @@ <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/first-line/004.xml" type="application/xhtml+xml"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/first-line/004.html" type="type/html"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo" /> + <link rel="match" href="../reference/ref-this-text-should-be-green.xht" /> <style type="text/css"> *:first-line { color: green; } </style> </head> <body> - <p>This line should be green.</p> + <p>This text should be green.</p> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-021.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-021.xht index af425a0306e..d071fc00047 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-021.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-pseudo-021.xht @@ -5,6 +5,7 @@ <link rel="author" title="Ian Hickson" href="mailto:ian@hixie.ch"/> <link rel="alternate" href="http://www.hixie.ch/tests/adhoc/css/selectors/first-line/005.html" type="type/html"/> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo" /> + <link rel="match" href="../reference/ref-this-text-should-be-green.xht" /> <style type="text/css"> p { color: red; } p:first-line { color: green; } @@ -12,6 +13,6 @@ </style> </head> <body> - <p><span>This line should be green.</span></p> + <p><span>This text should be green.</span></p> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-selector-010.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-selector-010.xht index b64f927593a..bbfa65201e3 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-selector-010.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/first-line-selector-010.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-line after a BR</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo" /> + <link rel="match" href="first-letter-selector-005-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The :first-line pseudo-element start tag is inserted right after the start tag of the block element." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/id-selector-002.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/id-selector-002.xht index 315b91639d5..8d82b3e4caa 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/id-selector-002.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/id-selector-002.xht @@ -4,6 +4,7 @@ <title>CSS Test: ID selector syntax - Begins with hyphen</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#id-selectors" /> + <link rel="match" href="../reference/filler-text-below-green.xht" /> <meta name="flags" content="" /> <meta name="assert" content="Identifier selectors starting with a hyphen are valid." /> <style type="text/css"> @@ -18,7 +19,7 @@ </style> </head> <body> - <p>Test passes if there is no red visible on the page.</p> + <p>Test passes if the "Filler Text" below is green.</p> <div id="-div1">Filler Text</div> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-004-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-004-ref.html new file mode 100644 index 00000000000..6f57dfc3917 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-004-ref.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<style> + div { + color: green; + } +</style> +<body> + <p>Test passes if the "Filler Text" below is green.</p> + <div>Filler Text + <p>Filler Text</p> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-004.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-004.xht index 4b8ec89ddc4..d15c8eb502b 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-004.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-004.xht @@ -4,6 +4,7 @@ <title>CSS Test: Inherited lang attribute selected</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#lang" /> + <link rel="match" href="lang-selector-004-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Lang attribute is inherited and lang selector works on children." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-005.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-005.xht index f149d7e36cc..916028cc6b5 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-005.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-005.xht @@ -4,6 +4,7 @@ <title>CSS Test: Lang selector and document language set via server's content-language</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#lang" /> + <link rel="match" href="../reference/filler-text-below-green.xht" /> <meta name="flags" content="http" /> <meta name="assert" content="Lang attribute is selectable when specified by HTTP header." /> <style type="text/css"> @@ -18,7 +19,6 @@ </style> </head> <body> - <p id="prerequisite">PREREQUISITE: Set the page "content-language" header to "fr" (French).</p> <p>Test passes if the "Filler Text" below is green.</p> <div>Filler Text</div> </body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-006.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-006.xht index 244639c544d..e647695a5a0 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-006.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/lang-selector-006.xht @@ -4,6 +4,7 @@ <title>CSS Test: Lang selector and document language set via meta tag</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#lang" /> + <link rel="match" href="../reference/filler-text-below-green.xht" /> <meta name="flags" content="" /> <meta http-equiv="content-language" content="fr" /> <meta name="assert" content="Lang attribute is selectable when specified in a meta tag." /> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-006.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-006.xht index be667b078e3..d0bd9f9820d 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-006.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-006.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-letter pseudo-element case sensitivity</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo" /> + <link rel="match" href="first-letter-selector-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="First-letter is case-insensitive." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-007.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-007.xht index 1daca918e05..e00770959f3 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-007.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-007.xht @@ -4,6 +4,7 @@ <title>CSS Test: First-child pseudo-element case sensitivity</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo" /> + <link rel="match" href="universal-selector-002-ref.xht" /> <meta name="flags" content="" /> <meta name="assert" content="First-child is case-insensitive." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-008-ref.html b/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-008-ref.html new file mode 100644 index 00000000000..8297dc3d74e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-008-ref.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<html> +<title>CSS Reftest Reference</title> +<body> + <p>Test passes if the words "Filler Text" are below.</p> + <div>Filler Text</div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-008.xht b/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-008.xht index 41c009e986e..be85608cf52 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-008.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/selectors/pseudo-008.xht @@ -4,6 +4,7 @@ <title>CSS Test: After and before case sensitivity</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo" /> + <link rel="match" href="pseudo-008-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="After and before are case-insensitive." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-004.xht b/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-004.xht index 7789f4880a2..6d23331e954 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-004.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-004.xht @@ -8,7 +8,7 @@ <meta name="flags" content="http" /> <meta name="assert" content="The HTTP charset setting overrides the referring document's code page." /> <style type="text/css"> - @import "support/at-charset-004.css"; + @import "support/at-charset-003.css"; div { color: red; diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-005.xht b/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-005.xht index ba952a6e67f..d76f64f6505 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-005.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-005.xht @@ -9,7 +9,7 @@ <meta name="assert" content="The HTTP charset setting overrides the charset designation in the referring document's meta tag." /> <meta http-equiv="Content-Type" content="text/html; windows-1252" /> <style type="text/css"> - @import "support/at-charset-005.css"; + @import "support/at-charset-003.css"; div { color: red; diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-006.xht b/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-006.xht index beba4fc56c1..d78b378b1a9 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-006.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/at-charset-006.xht @@ -8,7 +8,7 @@ <meta name="flags" content="http" /> <meta name="assert" content="The HTTP charset setting overrides the charset of referring document." /> <style type="text/css"> - @import "support/at-charset-006.css"; + @import "support/at-charset-003.css"; div { color: red; diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/comments-005.xht b/tests/wpt/web-platform-tests/css/CSS2/syntax/comments-005.xht index a7f22b21775..c192689a1b8 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/comments-005.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/comments-005.xht @@ -16,7 +16,7 @@ </style> </head> <body> - <p>Test passes if "Filler Text" is green.</p> + <p>Test passes if the "Filler Text" below is green.</p> <div>Filler Text</div> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/ident-003.xht b/tests/wpt/web-platform-tests/css/CSS2/syntax/ident-003.xht index 3002a970cb5..e09d9700693 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/ident-003.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/ident-003.xht @@ -5,7 +5,7 @@ <link rel="author" title="L. David Baron" href="https://dbaron.org/"/> <link rel="author" title="Ray Kiddy" href="mailto:ray@ganymede.org"/> <link rel="help" href="http://www.w3.org/TR/CSS21/syndata.html#characters"/> - <link rel="match" href="ident-000-ref.xht"/> + <link rel="match" href="ident-003-ref.xht"/> <meta name="flags" content="invalid"/> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/ident-020.xht b/tests/wpt/web-platform-tests/css/CSS2/syntax/ident-020.xht deleted file mode 100644 index d6cb0c98ea1..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/ident-020.xht +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>CSS Test: Invalid Identifiers (starting with double -) as Classes and IDs</title> - <link rel="author" title="L. David Baron" href="https://dbaron.org/"/> - <link rel="help" href="http://www.w3.org/TR/CSS21/syndata.html#characters"/> - <link rel="match" href="ident-000-ref.xht"/> - - <meta name="flags" content="invalid" /> - <style type="text/css"> - - .one { color: green; background: white; } - .--ident, .one { color: red; } - - .two { color: green; background: white; } - #--ident, .two { color: red; } - - </style> - - </head> - <body> - - <p class="one">This should be green.</p> - <p class="two">This should be green.</p> - - </body> -</html> diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/.htaccess b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/.htaccess deleted file mode 100644 index 7760371a4d9..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/.htaccess +++ /dev/null @@ -1,40 +0,0 @@ -<Files ~ "^plaintext.css$"> -ForceType text/plain -</Files> - -<files character-encoding-031.css> -AddCharset iso-8859-1 .css -</files> - -<files character-encoding-032.css> -AddCharset iso-8859-11 .css -</files> - -<files character-encoding-033.css> -AddCharset iso-8859-5 .css -</files> - -<files character-encoding-034.css> -AddCharset iso-8859-6 .css -</files> - -<files character-encoding-035.css> -AddCharset iso-8859-7 .css -</files> - -<files character-encoding-036.css> -AddCharset iso-8859-8 .css -</files> - -<files character-encoding-037.css> -AddCharset koi8-r .css -</files> - -<files ~ '^at-charset-07[1234567]\.css$'> -RemoveCharset .css -</files> - -<files character-encoding-041.css> -AddCharset utf-16be .css -</files> - diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-001.css.headers b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-001.css.headers new file mode 100644 index 00000000000..b2d94d06995 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-001.css.headers @@ -0,0 +1 @@ +Content-Type: text/css; charset=Shift_JIS diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-002.css.headers b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-002.css.headers new file mode 100644 index 00000000000..b2d94d06995 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-002.css.headers @@ -0,0 +1 @@ +Content-Type: text/css; charset=Shift_JIS diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-003.css.headers b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-003.css.headers new file mode 100644 index 00000000000..b2d94d06995 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-003.css.headers @@ -0,0 +1 @@ +Content-Type: text/css; charset=Shift_JIS diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-004.css b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-004.css deleted file mode 100644 index a9b14d8dfb8..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-004.css +++ /dev/null @@ -1,4 +0,0 @@ -.a, #div2 -{ - color: green; -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-005.css b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-005.css deleted file mode 100644 index a9b14d8dfb8..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-005.css +++ /dev/null @@ -1,4 +0,0 @@ -.a, #div2 -{ - color: green; -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-006.css b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-006.css deleted file mode 100644 index a9b14d8dfb8..00000000000 --- a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/at-charset-006.css +++ /dev/null @@ -1,4 +0,0 @@ -.a, #div2 -{ - color: green; -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/CSS2/syntax/support/plaintext.css.headers b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/plaintext.css.headers new file mode 100644 index 00000000000..a1f9e38d909 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/syntax/support/plaintext.css.headers @@ -0,0 +1 @@ +Content-Type: text/plain diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-001-ref.html b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-001-ref.html new file mode 100644 index 00000000000..117b41c2ab2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-001-ref.html @@ -0,0 +1,7 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<body> + <p>Test passes if the words "Filler Text" below are all on the same line.</p> + <div>Filler Text Filler Text Filler Text</div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-001.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-001.xht index d228b357b10..d575df64825 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-001.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-001.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: inline' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-002-ref.html b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-002-ref.html new file mode 100644 index 00000000000..e60406befe7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-002-ref.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<style> + .blue { + background: blue; + } +</style> +<body> + <p>Test passes if there are three lines of "Filler Text" below and the middle line has a blue background.</p> + <div>Filler Text</div> + <div class="blue">Filler Text</div> + <div>Filler Text</div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-002.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-002.xht index 4e8334e5870..bc7fd55873d 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-002.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-002.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-002-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: block' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-003-ref.html b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-003-ref.html new file mode 100644 index 00000000000..87bda4a9575 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-003-ref.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<style> + div { + margin-left: 2em; + } + .orange { + background: orange; + display: list-item; + } +</style> +<body> + <p>Test passes if there are three lines of "Filler Text" below and if the middle "Filler Text" has a orange background and a marker bullet on its left-hand side. The marker bullet should not have an orange background.</p> + <div>Filler Text</div> + <div class="orange">Filler Text</div> + <div>Filler Text</div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-003.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-003.xht index 032e0c3e631..546dfd60f59 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-003.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-003.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-003-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: list-item' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-005.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-005.xht index aa2a9af496f..8fbc0596c32 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-005.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-005.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: inline-block' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-006-ref.html b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-006-ref.html new file mode 100644 index 00000000000..3426468f22d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-006-ref.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<style> + .box { + background: blue; + height: 1in; + width: 2in; + } +</style> +<body> + <p>Test passes if the "Filler Text" below is below the box.</p> + <div class="box"></div> + <div>Filler Text</div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-006.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-006.xht index 28bdfdb0ccf..917f13e863a 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-006.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-006.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-006-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: table' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-007.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-007.xht index 607dfe7eaab..939967eb6c1 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-007.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-007.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-006-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: inline-table' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-008-ref.html b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-008-ref.html new file mode 100644 index 00000000000..7e2af4562f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-008-ref.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<style> + .box { + background: blue; + height: 1in; + width: 2in; + } +</style> +<body> + <p>Test passes if the "Filler Text" below is above the box.</p> + <div>Filler Text</div> + <div class="box"></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-008.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-008.xht index d6fe5e43149..c7b3644967b 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-008.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-008.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-008-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: table-row-group' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-009.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-009.xht index d45d9366607..de99f441873 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-009.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-009.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-008-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: table-header-group' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-010.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-010.xht index 75afc688ba3..b37aa9470af 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-010.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-010.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-008-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: table-footer-group' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-011.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-011.xht index 3db6e29a583..6f9f53bf046 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-011.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-011.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-008-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: table-column' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-012.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-012.xht index a1cb7c0633c..1a65da40698 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-012.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-012.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-008-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: table-row' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-013.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-013.xht index 3e4353e61a0..26360ab4e20 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-013.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-013.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-008-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: table-column-group' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-014.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-014.xht index cd89de75e96..f55d8b78a51 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-014.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-014.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-008-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side does not apply to 'display: table-cell' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-015.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-015.xht index f26658cb754..414db631448 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-015.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-015.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-006-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side applies to 'display: table-caption' elements." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-017-ref.html b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-017-ref.html new file mode 100644 index 00000000000..4a19d9c9f3f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-017-ref.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<style> + div { + background: blue; + width: 2in; + } + .box { + height: 1in; + } +</style> +<body> + <p>Test passes if the "Filler Text" below is inside the box.</p> + <div>Filler Text</div> + <div class="box"></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-017.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-017.xht index 4ebbe1d2b83..20f7e76bd7d 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-017.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/caption-side-applies-to-017.xht @@ -5,6 +5,7 @@ <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#propdef-caption-side" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#caption-position" /> + <link rel="match" href="caption-side-applies-to-017-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Caption-side applies to 'display: inherit' elements which do not inherit the value of 'table-caption'." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-001-ref.html b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-001-ref.html new file mode 100644 index 00000000000..38308df01aa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-001-ref.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<style> + div { + height: 120px; + width: 220px; + } + .orange { + background: orange; + } + .blue { + background: blue; + } +</style> +<body> + <p>Test passes if the orange and blue boxes below are the same width.</p> + <div class="orange"></div> + <div class="blue"></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-001.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-001.xht index 90e706e087a..4501b584f39 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-001.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-001.xht @@ -4,6 +4,7 @@ <title>CSS Test: Collapsing borders model row width equation (auto layout)</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#collapsing-borders" /> + <link rel="match" href="collapsing-border-model-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The user agent adheres to the collapsing border model row width equation in auto table layout." /> <style type="text/css"> @@ -22,7 +23,7 @@ #div1 { background: orange; - height: 110px; + height: 120px; width: 220px; } </style> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-003-ref.html b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-003-ref.html new file mode 100644 index 00000000000..c9c30c2a3d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-003-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Reference</title> +<style> + div { + height: 1.5in; + width: 100px; + } + .orange { + background: orange; + } + .blue { + background: blue; + width: 50px; + float: right; + } +</style> +<body> + <p>Test passes if the orange and blue boxes below are the same height.</p> + <div class="orange"><div class="blue"></div></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-003.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-003.xht index 9a0b5f05c9d..8616e697cd1 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-003.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-003.xht @@ -4,6 +4,7 @@ <title>CSS Test: Top table border width under collapsing borders model</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#collapsing-borders" /> + <link rel="match" href="collapsing-border-model-003-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The top border width of the table is half of the maximum collapsed top border width." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-004.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-004.xht index 41e158f4a86..fa7c3c9196c 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-004.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-004.xht @@ -4,6 +4,7 @@ <title>CSS Test: Tables under the collapsing borders model don't have padding</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#collapsing-borders" /> + <link rel="match" href="collapsing-border-model-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="Padding doesn't apply to a table under the collapsing border model." /> <style type="text/css"> @@ -23,7 +24,7 @@ #div1 { background: orange; - height: 110px; + height: 120px; width: 220px; } </style> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-007.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-007.xht index d48fdffb66d..6fe47429e84 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-007.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-007.xht @@ -4,6 +4,7 @@ <title>CSS Test: Left table border width under collapsing borders model</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#collapsing-borders" /> + <link rel="match" href="collapsing-border-model-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The left border width of the table is half of the first cell's collapsed left border width." /> <style type="text/css"> @@ -14,21 +15,22 @@ } col { - width: 1in; + width: 165px; } td, #div1 { - height: 1in; + height: 120px; } td { - border-left: 1in solid blue; + width: 110px; + border-left: 110px solid blue; padding: 0; } #div1 { background: orange; - width: 1.5in; + width: 220px; } </style> </head> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-008.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-008.xht index 65746589a26..23a4b31c14a 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-008.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-008.xht @@ -4,6 +4,7 @@ <title>CSS Test: Right table border width under collapsing borders model</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#collapsing-borders" /> + <link rel="match" href="collapsing-border-model-001-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The right border width of the table is half of the collapsed right border width of the last cell of the first row." /> <style type="text/css"> @@ -14,21 +15,22 @@ } col { - width: 1in; + width: 165px; } td, #div1 { - height: 1in; + height: 120px; } td { - border-right: 1in solid blue; + width: 110px; + border-right: 110px solid blue; padding: 0; } #div1 { background: orange; - width: 1.5in; + width: 220px; } </style> </head> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-009.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-009.xht index dfd35f2d6ac..6f0b864b694 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-009.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/collapsing-border-model-009.xht @@ -4,6 +4,7 @@ <title>CSS Test: Bottom table border width under collapsing borders model</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#collapsing-borders" /> + <link rel="match" href="collapsing-border-model-003-ref.html" /> <meta name="flags" content="" /> <meta name="assert" content="The bottom border width of the table is half of the maximum collapsed bottom border width." /> <style type="text/css"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/row-visibility-001.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/row-visibility-001.xht index 010318e2fad..4f91f23bc7b 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/row-visibility-001.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/row-visibility-001.xht @@ -4,6 +4,7 @@ <title>CSS Test: Row and the 'visibility' property</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#dynamic-effects" /> + <link rel="match" href="../reference/ref-filled-green-100px-square.xht" /> <meta name="flags" content="" /> <meta name="assert" content="A 'visibility' value of 'collapse' applies to table rows." /> <style type="text/css"> @@ -27,13 +28,13 @@ .cell { display: table-cell; - height: 1in; - width: 1in; + height: 100px; + width: 100px; } </style> </head> <body> - <p>Test passes if there is no red visible on the page.</p> + <p>Test passes if there is a filled green square and <strong>no red</strong>.</p> <div id="table"> <div id="row1"> <div class="cell"></div> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/row-visibility-002.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/row-visibility-002.xht index 5242ecdfa88..5b6309c2dd6 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/row-visibility-002.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/row-visibility-002.xht @@ -4,6 +4,7 @@ <title>CSS Test: Row group and the 'visibility' property</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#dynamic-effects" /> + <link rel="match" href="../reference/ref-filled-green-100px-square.xht" /> <meta name="flags" content="" /> <meta name="assert" content="The 'visibility' value of 'collapse' applies to table row groups." /> <style type="text/css"> @@ -31,13 +32,13 @@ .cell { display: table-cell; - height: 1in; - width: 1in; + height: 100px; + width: 100px; } </style> </head> <body> - <p>Test passes if there is no red visible on the page.</p> + <p>Test passes if there is a filled green square and <strong>no red</strong>.</p> <div id="table"> <div id="rowgroup1"> <div id="row"> diff --git a/tests/wpt/web-platform-tests/css/CSS2/tables/table-cell-001.xht b/tests/wpt/web-platform-tests/css/CSS2/tables/table-cell-001.xht index 3f095742f8a..3b64c7ac306 100644 --- a/tests/wpt/web-platform-tests/css/CSS2/tables/table-cell-001.xht +++ b/tests/wpt/web-platform-tests/css/CSS2/tables/table-cell-001.xht @@ -4,6 +4,7 @@ <title>CSS Test: Table-cell</title> <link rel="author" title="Microsoft" href="http://www.microsoft.com/" /> <link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#table-display" /> + <link rel="match" href="../reference/ref-filled-black-96px-square.xht" /> <meta name="flags" content="" /> <meta name="assert" content="An element with 'display: table-cell' is rendered as if it were a table cell." /> <style type="text/css"> @@ -19,13 +20,13 @@ { background: black; display: table-cell; - height: 2em; - width: 2em; + height: 48px; + width: 48px; } </style> </head> <body> - <p>Test passes if there is a square below.</p> + <p>Test passes if there is a filled black square.</p> <div class="table"> <div class="tr"> <div class="td"></div> diff --git a/tests/wpt/web-platform-tests/css/css-content/element-replacement-ref.html b/tests/wpt/web-platform-tests/css/css-content/element-replacement-ref.html new file mode 100644 index 00000000000..d301f1d6a1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-content/element-replacement-ref.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<title>Reference for the content CSS attribute can replace an element's contents</title> + +<img src='resources/rect.svg' /> diff --git a/tests/wpt/web-platform-tests/css/css-content/element-replacement.html b/tests/wpt/web-platform-tests/css/css-content/element-replacement.html new file mode 100644 index 00000000000..a78e9f713b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-content/element-replacement.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<title>The content CSS attribute can replace an element's contents</title> +<link rel="match" href="element-replacement-ref.html" /> +<link rel="help" href="https://drafts.csswg.org/css-content-3/#content-property" /> +<meta name="assert" content"This test checks that the CSS content propertly can replace a normal element's contents" /> + +<style> +p { + margin: 0; + content: url('resources/rect.svg'); +} +</style> + +<p>This text should not be visible</p> diff --git a/tests/wpt/web-platform-tests/css/css-content/resources/rect.svg b/tests/wpt/web-platform-tests/css/css-content/resources/rect.svg new file mode 100644 index 00000000000..d5de6b4c9da --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-content/resources/rect.svg @@ -0,0 +1,3 @@ +<svg width="100" height="100" version="1.1" xmlns="http://www.w3.org/2000/svg"> + <rect x="0" y="0" width="100" height="100" fill="green" /> +</svg> diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-text-inherit-002.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-text-inherit-002.html new file mode 100644 index 00000000000..51bf96846c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-text-inherit-002.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Display: Apply white-space property of display:contents element to inline children</title> +<link rel="author" title="Rune Lillesveen" href="mailto:futhark@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-display-3/#valdef-display-contents"> +<link rel="match" href="display-contents-text-inherit-ref.html"> +<p>The words "Two" and "lines" should not be on the same line.</p> +<div id="div" style="background-color:red"> + <span style="display:contents;white-space:pre-line">Two + lines + </span> +</div> +<script> + document.body.offsetTop; + div.style.backgroundColor = "transparent"; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-01-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-01-ref.html index 4bde365dcf2..0ded6cd76cc 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-01-ref.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-01-ref.html @@ -10,17 +10,15 @@ } .test { font-family: fwf; - font-size: 3em; + font-size: 2em; line-height: 1.1; } </style> <body> -<!-- very minimal test, only tests hist, does not test salt or stylistic sets --> - -<p>Test passes if the three lines below are identical, with one cross (✗)</p> +<p>Test passes if the three lines below are identical, with twenty crosses (✗).</p> <section class="test"> - <p class="ref">B</p> - <p class="ref">B</p> - <p class="ref">B</p> -</section>
\ No newline at end of file + <p class="ref">BBBBBBBBBBBBBBBBBBBB</p> + <p class="ref">BBBBBBBBBBBBBBBBBBBB</p> + <p class="ref">BBBBBBBBBBBBBBBBBBBB</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-01.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-01.html index 89cfe2ba447..0cdd2f5ac15 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-01.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-01.html @@ -28,10 +28,9 @@ </style> <body> -<p>Test passes if the three lines below are identical, with twenty crosses (✗) -<!--, followed by one check mark (✓)-->. </p> +<p>Test passes if the three lines below are identical, with twenty crosses (✗).</p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> - <p class="low">Xnophijklmqrstuvwxyz</p> - <p class="ref">BBBBBBBBBBBBBBBBBBBB</p> -</section>
\ No newline at end of file + <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="low">Xnophijklmqrstuvwxyz</p> + <p class="ref">BBBBBBBBBBBBBBBBBBBB</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-02-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-02-ref.html index d27ffa25b76..a74c5206c0c 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-02-ref.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-02-ref.html @@ -10,7 +10,7 @@ } .test { font-family: fwf; - font-size: 3em; + font-size: 2em; line-height: 1.1; } </style> @@ -18,9 +18,9 @@ <!-- very minimal test, only tests hist, does not test salt or stylistic sets --> -<p>Test passes if the three lines below are identical, with onecheck mark (✓). </p> +<p>Test passes if the three lines below are identical, with one check mark (✓) followed by nineteen crosses (✗). </p> <section class="test"> - <p class="ref">A</p> - <p class="ref">A</p> - <p class="ref">A</p> -</section>
\ No newline at end of file + <p class="ref">ABBBBBBBBBBBBBBBBBBB</p> + <p class="ref">ABBBBBBBBBBBBBBBBBBB</p> + <p class="ref">ABBBBBBBBBBBBBBBBBBB</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-02.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-02.html index b9f777ea3f0..dfc76b9396d 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-02.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-02.html @@ -20,7 +20,7 @@ .high { font-variant-alternates: historical-forms; } - .low { + .low { font-feature-settings: "hist" on, "salt" 00, "ss01" off, "ss02" off, "ss03" off, "cv01" off, "cv02" off, "cv03" off, "swsh" 00, "cswh" 00, "ornm" 00, "nalt" 00; } @@ -29,7 +29,7 @@ <p>Test passes if the three lines below are identical, with one check mark (✓) followed by nineteen crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">ABBBBBBBBBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-03.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-03.html index 6b2eba9b838..491b732d02c 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-03.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-03.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with one cross (✗), one check mark (✓) followed by eighteen crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BABBBBBBBBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-04.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-04.html index 35b9940fb8c..526b616dafe 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-04.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-04.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with two crosses (✗), one check mark (✓) followed by seventeen crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBABBBBBBBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-05-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-05-ref.html index 7cb557e20c0..49427186bee 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-05-ref.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-05-ref.html @@ -16,9 +16,9 @@ </style> <body> -<p>Test passes if the three lines below are identical, with two crosses (✗), one check mark (✓) followed by seventeen crosses (✗). </p> +<p>Test passes if the three lines below are identical, with three crosses (✗), one check mark (✓) followed by sixteen crosses (✗). </p> <section class="test"> <p class="ref">BBBABBBBBBBBBBBBBBBB</p> <p class="ref">BBBABBBBBBBBBBBBBBBB</p> <p class="ref">BBBABBBBBBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-05.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-05.html index 4f900ccca53..eca5a3dc6ad 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-05.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-05.html @@ -35,9 +35,9 @@ </style> <body> -<p>Test passes if the three lines below are identical, with two crosses (✗), one check mark (✓) followed by seventeen crosses (✗). </p> +<p>Test passes if the three lines below are identical, with three crosses (✗), one check mark (✓) followed by sixteen crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBABBBBBBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-06.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-06.html index fe15c21e298..bf41b92a52c 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-06.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-06.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with four crosses (✗), one check mark (✓) followed by fifteen crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBABBBBBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-07.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-07.html index 70c11383589..54359c277a5 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-07.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-07.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with five crosses (✗), one check mark (✓) followed by fourteen crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBABBBBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-08.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-08.html index 3228adbd9ea..5c5545cf8ed 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-08.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-08.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with six crosses (✗), one check mark (✓) followed by thirteen crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBABBBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-09.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-09.html index 71fda689bc8..6c98e62a56c 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-09.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-09.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with seven crosses (✗), one check mark (✓) followed by twelve crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBABBBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-10.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-10.html index d4054ac8f6d..3e30504f2b8 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-10.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-10.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with eight crosses (✗), one check mark (✓) followed by eleven crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBABBBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-11.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-11.html index 19e38ed616e..0a8a2d72003 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-11.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-11.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with nine crosses (✗), one check mark (✓) followed by ten crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBBABBBBBBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-12.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-12.html index a0061a408e7..458840d7564 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-12.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-12.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with ten crosses (✗), one check mark (✓), two crosses (✗), one check mark (✓) followed by six crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBBBABBABBBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-13.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-13.html index b9fdd496d6b..67b7e680a9d 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-13.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-13.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with eleven crosses (✗), one check mark (✓), two crosses (✗), one check mark (✓) followed by five crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBBBBABBABBBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-14.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-14.html index 1d57c2c3f92..0f78a5aca80 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-14.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-14.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with twelve crosses (✗), one check mark (✓), two crosses (✗), one check mark (✓) followed by four crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBBBBBABBABBBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-15.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-15.html index 95ec0fa041d..1c003a8e3cf 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-15.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-15.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with sixteen crosses (✗), one check mark (✓) followed by three crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBBBBBBBBBABBB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-16.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-16.html index 21215ddf401..176d8ff13e4 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-16.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-16.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with seventeen crosses (✗), one check mark (✓) followed by two crosses (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBBBBBBBBBBABB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-17.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-17.html index abbe8738fe5..558e2f45d04 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-17.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-17.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with eighteen crosses (✗), one check mark (✓) followed by one cross (✗). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBBBBBBBBBBBAB</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-18.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-18.html index f58ab12fd1e..109ff58d954 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-18.html +++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-alternates-18.html @@ -37,7 +37,7 @@ <p>Test passes if the three lines below are identical, with nineteen crosses (✗), then one check mark (✓). </p> <section class="test"> - <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="high">Xnophijklmqrstuvwxyz</p> <p class="low">Xnophijklmqrstuvwxyz</p> <p class="ref">BBBBBBBBBBBBBBBBBBBA</p> -</section>
\ No newline at end of file +</section> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-001.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-001.html index c5c2cf50cec..2dec3c769a5 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-001.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 200); grid.style.alignItems = "start"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-002.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-002.html index f0dc1530aee..4463ebf121f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-002.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-002.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-height", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-003.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-003.html index 3ae1ba13638..f9e1c873fbd 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-003.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-003.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 200); grid.style.alignItems = "normal"; evaluateStyleChange(item, "after", "data-expected-height", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-004.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-004.html index 12ca38d6078..ab532206f6a 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-004.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-004.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 200); grid.style.alignItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-height", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-005.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-005.html index e76a1525d59..3002c174e84 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-005.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-005.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "normal"; evaluateStyleChange(item, "after", "data-expected-height", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-006.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-006.html index 662260131fe..cf44e9f57b4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-006.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-006.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 200); grid.style.alignItems = "start"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-007.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-007.html index 300ace54588..f8aa2da3fd2 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-007.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-007.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-height", 80); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-008.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-008.html index e3a8b47031b..24af744b95a 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-008.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-008.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 80); grid.style.alignItems = "start"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-009.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-009.html index 3f7d675b9ce..bb33c4a2c2c 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-009.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-009.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "normal"; evaluateStyleChange(item, "after", "data-expected-height", 80); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-010.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-010.html index fc284b015a7..876fdcd124d 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-010.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-010.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 80); grid.style.alignItems = "start"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011.html index 1367dd4d707..ff184f16174 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 200); grid.style.alignItems = "start"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012.html index cebc217f9b4..b9a9d9b43d3 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-height", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013.html index b606c03be41..356220b336b 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 200); grid.style.alignItems = "normal"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014.html index 61d6365c7d3..3561ae3d80f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-height", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-015.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-015.html index b264e36cd31..c56c1397553 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-015.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-015.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "normal"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-016.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-016.html index 86d5226946a..7815a05718f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-016.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-016.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "start"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017.html index 543bd0af941..c8a2ed8b2cc 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 100); grid.style.alignItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-height", 80); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018.html index 33aaa6bf29e..547e6a42984 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-height", 80); grid.style.alignItems = "start"; evaluateStyleChange(item, "after", "data-expected-height", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-019.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-019.html index c98144c6e3d..53139cbe585 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-019.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-019.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 200); grid.style.justifyItems = "start"; evaluateStyleChange(item, "after", "data-expected-width", 120); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-020.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-020.html index d2fab320763..0b6a26f11d6 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-020.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-020.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 120); grid.style.justifyItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-width", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-021.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-021.html index 1a40142f49f..7b68964227f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-021.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-021.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 200); grid.style.alignItems = "normal"; evaluateStyleChange(item, "after", "data-expected-width", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-022.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-022.html index 3ea469befdd..e4f9e7c3a2d 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-022.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-022.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 200); grid.style.justifyItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-width", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-023.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-023.html index e78986de53f..a1bfe9c0673 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-023.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-023.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 120); grid.style.justifyItems = "normal"; evaluateStyleChange(item, "after", "data-expected-width", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-024.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-024.html index 9f6c49c16b6..6d3136e00c6 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-024.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-024.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 200); grid.style.justifyItems = "start"; evaluateStyleChange(item, "after", "data-expected-width", 120); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-025.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-025.html index 471c2ef1148..917d1109a45 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-025.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-025.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 120); grid.style.justifyItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-width", 80); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-026.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-026.html index facad8a4d28..382ef2523e2 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-026.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-026.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 80); grid.style.justifyItems = "start"; evaluateStyleChange(item, "after", "data-expected-width", 120); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-027.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-027.html index dc9c092797b..0bdedf74dcf 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-027.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-027.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 120); grid.style.justifyItems = "normal"; evaluateStyleChange(item, "after", "data-expected-width", 80); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-028.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-028.html index 870538a332f..0def10e2b6e 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-028.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-028.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 80); grid.style.justifyItems = "start"; evaluateStyleChange(item, "after", "data-expected-width", 120); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029.html index cb067b652c7..766db6baa37 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 200); grid.style.justifyItems = "start"; evaluateStyleChange(item, "after", "data-expected-width", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030.html index c7033bb6b8f..3db3b8319f0 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 100); grid.style.justifyItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-width", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031.html index 55bffbe1c6c..7b0c26d644d 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 200); grid.style.justifyItems = "normal"; evaluateStyleChange(item, "after", "data-expected-width", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-032.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-032.html index 006cb6a6a95..d161e19b018 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-032.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-032.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 100); grid.style.justifyItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-width", 200); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-033.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-033.html index 157f43bbac9..92a74561889 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-033.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-033.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 100); grid.style.justifyItems = "normal"; evaluateStyleChange(item, "after", "data-expected-width", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-034.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-034.html index 6dbd653c067..78314406fe3 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-034.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-034.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 100); grid.style.justifyItems = "start"; evaluateStyleChange(item, "after", "data-expected-width", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035.html index fbd8e6f8773..4293670f199 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 100); grid.style.justifyItems = "stretch"; evaluateStyleChange(item, "after", "data-expected-width", 80); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036.html index 018b13c95dd..23b01906619 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036.html +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036.html @@ -26,12 +26,13 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/check-layout-th.js"></script> -<script src="../support/style-change.js"></script> +<script src="support/style-change.js"></script> <script> function runTest() { evaluateStyleChange(item, "before", "data-expected-width", 80); grid.style.justifyItems = "start"; evaluateStyleChange(item, "after", "data-expected-width", 100); + done(); } </script> <body onload="runTest()"> diff --git a/tests/wpt/web-platform-tests/css/css-grid/support/style-change.js b/tests/wpt/web-platform-tests/css/css-grid/alignment/support/style-change.js index 636b08a3a01..5619394da2b 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/support/style-change.js +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/support/style-change.js @@ -1,5 +1,5 @@ function evaluateStyleChange(element, phase, expectedProperty, expectedResult) { element.className += " " + phase; element.setAttribute(expectedProperty, expectedResult); - checkLayout("." + phase); + checkLayout("." + phase, false); } diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-invalid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-invalid.html new file mode 100644 index 00000000000..1ac795be56b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-invalid.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Masking Module Level 1: parsing clip with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#clip-property"> +<meta name="assert" content="clip supports only the grammar 'rect() | auto'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("clip", "none"); +test_invalid_value("clip", "rect(10px, 20px, 30px)"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-path-invalid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-path-invalid.html new file mode 100644 index 00000000000..3f5940a5f87 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-path-invalid.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Masking Module Level 1: parsing clip-path with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path"> +<meta name="assert" content="clip-path supports only the grammar '<clip-source> | [ <basic-shape> || <geometry-box> ] | none'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("clip-path", "auto"); +test_invalid_value("clip-path", "ray(0deg)"); + +test_invalid_value("clip-path", "inset()"); +test_invalid_value("clip-path", "inset(123)"); +test_invalid_value("clip-path", "inset(1% 2% 3% 4% 5%)"); +test_invalid_value("clip-path", "inset(round 0)"); +test_invalid_value("clip-path", "inset(0px round)"); +test_invalid_value("clip-path", "inset(0px round 123)"); +test_invalid_value("clip-path", "inset(0px round 1% 2% 3% 4% 5%)"); +test_invalid_value("clip-path", "inset(0px round / 1px)"); +test_invalid_value("clip-path", "inset(10px round -20px)"); +test_invalid_value("clip-path", "inset(30% round -40%)"); + +test_invalid_value("clip-path", "circle(123)"); +test_invalid_value("clip-path", "circle(at)"); +test_invalid_value("clip-path", "circle(10% 20%)"); +test_invalid_value("clip-path", "circle(-10px at 20px 30px)"); +test_invalid_value("clip-path", "circle(-10% at 20% 30%)"); +test_invalid_value("clip-path", "circle(1% 2% at 0% 100%)"); + +test_invalid_value("clip-path", "ellipse(farthest-side at)"); +test_invalid_value("clip-path", "ellipse(1% 2% top right)"); +test_invalid_value("clip-path", "ellipse(3% at 100% 0%)"); +test_invalid_value("clip-path", "ellipse(10% -20% at 30% 40%)"); +test_invalid_value("clip-path", "ellipse(-50px 60px at 70% 80%)"); + +test_invalid_value("clip-path", "polygon(1%)"); + +test_invalid_value("clip-path", "unknown-box"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-path-valid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-path-valid.html new file mode 100644 index 00000000000..d7b2785907a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-path-valid.html @@ -0,0 +1,64 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Masking Module Level 1: parsing clip-path with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path"> +<meta name="assert" content="clip-path supports the full grammar '<clip-source> | [ <basic-shape> || <geometry-box> ] | none'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("clip-path", "none"); + +// <basic-shape> +test_valid_value("clip-path", "inset(100%)"); +test_valid_value("clip-path", "inset(0 1px)", "inset(0px 1px)"); +test_valid_value("clip-path", "inset(0px 1px 2%)"); +test_valid_value("clip-path", "inset(0px 1px 2% 3em)"); +test_valid_value("clip-path", "inset(0px round 100%)"); +test_valid_value("clip-path", "inset(0px round 0 1px)", "inset(0px round 0px 1px)"); +test_valid_value("clip-path", "inset(0px round 0px 1px 2%)"); +test_valid_value("clip-path", "inset(0px round 0px 1px 2% 3em)"); +test_valid_value("clip-path", "inset(10px round 20% / 0px 1px 2% 3em)"); + +test_valid_value("clip-path", "circle()", "circle(at 50% 50%)"); +test_valid_value("clip-path", "circle(1px)", "circle(1px at 50% 50%)"); +test_valid_value("clip-path", "circle(closest-side)", "circle(at 50% 50%)"); +test_valid_value("clip-path", "circle(at 10% 20%)"); +test_valid_value("clip-path", "circle(farthest-side at center top)", "circle(farthest-side at 50% 0%)"); +test_valid_value("clip-path", "circle(4% at top right)", "circle(4% at 100% 0%)"); + +test_valid_value("clip-path", "ellipse()", "ellipse(at 50% 50%)"); +test_valid_value("clip-path", "ellipse(1px closest-side)", "ellipse(1px at 50% 50%)"); +test_valid_value("clip-path", "ellipse(at 10% 20%)"); +test_valid_value("clip-path", "ellipse(farthest-side 4% at bottom left)", "ellipse(farthest-side 4% at 0% 100%)"); + +test_valid_value("clip-path", "polygon(1% 2%)"); +test_valid_value("clip-path", "polygon(nonzero, 1px 2px, 3em 4em)", "polygon(1px 2px, 3em 4em)"); +test_valid_value("clip-path", "polygon(evenodd, 1px 2px, 3em 4em, 5pt 6%)"); + +// <geometry-box> +test_valid_value("clip-path", "border-box"); +test_valid_value("clip-path", "padding-box"); +test_valid_value("clip-path", "content-box"); +test_valid_value("clip-path", "margin-box"); +test_valid_value("clip-path", "fill-box"); +test_valid_value("clip-path", "stroke-box"); +test_valid_value("clip-path", "view-box"); + +// basic-shape> <geometry-box> +test_valid_value("clip-path", "circle(7% at 8% 9%) border-box"); + +// <geometry-box> basic-shape> +test_valid_value("clip-path", "border-box circle(7% at 8% 9%)"); + +// <clip-source> +test_valid_value("clip-path", "url(https://example.com/)", ["url(https://example.com/)", "url(\"https://example.com/\")"]); +test_valid_value("clip-path", "url(\"https://example.com/\")", ["url(https://example.com/)", "url(\"https://example.com/\")"]); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-rule-invalid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-rule-invalid.html new file mode 100644 index 00000000000..10f6aeef256 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-rule-invalid.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Masking Module Level 1: parsing clip-rule with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-rule"> +<meta name="assert" content="clip-rule supports only the grammar 'nonzero | evenodd'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("clip-rule", "auto"); +test_invalid_value("clip-rule", "1"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-rule-valid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-rule-valid.html new file mode 100644 index 00000000000..db22680cb14 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-rule-valid.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Masking Module Level 1: parsing clip-rule with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-rule"> +<meta name="assert" content="clip-rule supports the full grammar 'nonzero | evenodd'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("clip-rule", "nonzero"); +test_valid_value("clip-rule", "evenodd"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-valid.html b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-valid.html new file mode 100644 index 00000000000..24bb782d332 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/clip-valid.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Masking Module Level 1: parsing clip with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#clip-property"> +<meta name="assert" content="clip supports the full grammar 'rect() | auto'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("clip", "auto"); +test_valid_value("clip", "rect(10px, 20px, -30px, 40px)", ["rect(10px, 20px, -30px, 40px)", "rect(10px 20px -30px 40px)"]); +test_valid_value("clip", "rect(10%, -20%, auto, auto)"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-masking/parsing/resources/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/css-masking/parsing/resources/parsing-testcommon.js new file mode 100644 index 00000000000..9427f53d81b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/parsing/resources/parsing-testcommon.js @@ -0,0 +1,39 @@ +'use strict'; + +// serializedValue can be the expected serialization of value, +// or an array of permitted serializations, +// or omitted if value should serialize as value. +function test_valid_value(property, value, serializedValue) { + if (arguments.length < 3) + serializedValue = value; + + var stringifiedValue = JSON.stringify(value); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + assert_not_equals(div.style[property], "", "property should be set"); + + var div = document.createElement('div'); + div.style[property] = value; + var readValue = div.style[property]; + if (serializedValue instanceof Array) + assert_true(serializedValue.includes(readValue), "serialization should be sound"); + else + assert_equals(readValue, serializedValue, "serialization should be canonical"); + + div.style[property] = readValue; + assert_equals(div.style[property], readValue, "serialization should round-trip"); + + }, "e.style['" + property + "'] = " + stringifiedValue + " should set the property value"); +} + +function test_invalid_value(property, value) { + var stringifiedValue = JSON.stringify(value); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + assert_equals(div.style[property], ""); + }, "e.style['" + property + "'] = " + stringifiedValue + " should not set the property value"); +} diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-nested-column-rule-001-ref.xht b/tests/wpt/web-platform-tests/css/css-multicol/multicol-nested-column-rule-001-ref.xht index e373c9a60b6..495ca5d52e4 100644 --- a/tests/wpt/web-platform-tests/css/css-multicol/multicol-nested-column-rule-001-ref.xht +++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-nested-column-rule-001-ref.xht @@ -7,6 +7,6 @@ <meta name="flags" content="" /> </head> <body> - <div style="font: 1.25em/1 Ahem; width:12em; height:3em; margin-left:12em; border-left:1em solid blue; border-right:1em solid blue;"></div> + <div style="font: 1.25em/1 Ahem; width:8em; height:3em; margin-left:9em; border-left:1em solid blue; border-right:1em solid blue;"></div> </body> </html> diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-nested-column-rule-001.xht b/tests/wpt/web-platform-tests/css/css-multicol/multicol-nested-column-rule-001.xht index 322551e185f..78fde1fbf9e 100644 --- a/tests/wpt/web-platform-tests/css/css-multicol/multicol-nested-column-rule-001.xht +++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-nested-column-rule-001.xht @@ -18,7 +18,7 @@ { column-rule: blue solid 1em; font: 1.25em/1 Ahem; - width: 36em; + width: 26em; } /* @@ -26,47 +26,47 @@ N == 3; W == max(0, (available-width - ((N - 1) * column-gap)) / N); - W == max(0, (42em - ((3 - 1) * 3em)) / 3); - W == max(0, (42em - (2 * 3em)) / 3); - W == max(0, (42em - 6em) / 3); - W == max(0, 36em / 3); - W == max(0, 12em); - W == 12em; + W == max(0, (26em - ((3 - 1) * 1em)) / 3); + W == max(0, (26em - (2 * 1em)) / 3); + W == max(0, (26em - 2em) / 3); + W == max(0, 24em / 3); + W == max(0, 8em); + W == 8em; So, the first column-rule should be at: 1.0em : margin-left of outer div - 12.0em : width of 1st column box - 1.0em : (3.0em / 2) - (1.0em / 2) : left edge of 1st column-rule + 8.0em : width of 1st column box + 0.0em : (1.0em / 2) - (1.0em / 2) : left edge of 1st column-rule ========= - 14.0em + 9.0em The 2nd column-rule should be at: 1.0em : margin-left of outer div - 12.0em : width of 1st column box - 3.0em : first column-gap - 12.0em : width of 2nd column box - 1.0em : (3.0em / 2) - (1.0em / 2) : left edge of 2nd column-rule + 8.0em : width of 1st column box + 1.0em : first -moz-column-gap + 8.0em : width of 2nd column box + 0.0em : (1.0em / 2) - (1.0em / 2) : left edge of 2nd column-rule ========= - 29.0em + 18.0em The height of column rule depends on number of line boxes in each outer column box which depends on number of line boxes in each inner column box. So: - 12em : width of each outer column box + 8em : width of each outer column box - 2em : horizontal margin of each div inside ======= - 10em : width of each inner multi-column elements + 6em : width of each inner multi-column elements N == 3; - W == max(0, (available-width - ((N - 1) * column-gap)) / N); - W == max(0, (10em - ((3 - 1) * 3em)) / 3); - W == max(0, (10em - (2 * 3em)) / 3); - W == max(0, (10em - 6em) / 3); + W == max(0, (available-width - ((N - 1) * -column-gap)) / N); + W == max(0, (6em - ((3 - 1) * 1em)) / 3); + W == max(0, (6em - (2 * 1em)) / 3); + W == max(0, (6em - 2em) / 3); W == max(0, 4em / 3); W == max(0, 1.33333em); W == 1.33333em; @@ -90,7 +90,7 @@ widows: 1; column-count: 3; - column-gap: 3em; + column-gap: 1em; } ]]></style> </head> diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-image-ref.html b/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-image-ref.html index 31c9f3f5f03..90c62e5421b 100644 --- a/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-image-ref.html +++ b/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-image-ref.html @@ -1,12 +1,15 @@ <!DOCTYPE html> -<canvas id="canvas" width="300" height="300"></canvas> - -<script> - var canvas = document.getElementById("canvas"); - var ctx = canvas.getContext("2d"); - var img = new Image; - img.src = "resources/html5.png"; - img.onload = function() { - ctx.drawImage(img, 0, 0); - }; -</script> +<html> +<style> +div { + width: 300px; + height: 300px; + background-image: url("./resources/html5.png"); + background-repeat: no-repeat; + background-color: green; +} +</style> +<body> +<div></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-image.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-image.https.html index 5dc7ebf8a8f..ba8943012c2 100644 --- a/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-image.https.html +++ b/tests/wpt/web-platform-tests/css/css-paint-api/paint2d-image.https.html @@ -2,12 +2,12 @@ <html class="reftest-wait"> <link rel="match" href="paint2d-image-ref.html"> <style> - #output { - width: 300px; - height: 300px; - background-image: paint(image); - border-image: url("resources/html5.png"); - } +#output { + width: 300px; + height: 300px; + background-image: paint(image); + border-image: url("./resources/html5.png"); +} </style> <script src="/common/reftest-wait.js"></script> <script src="/common/css-paint-tests.js"></script> @@ -17,6 +17,8 @@ registerPaint('image', class { static get inputProperties() { return [ 'border-image-source' ]; }; paint(ctx, geom, styleMap) { + ctx.fillStyle = 'green'; + ctx.fillRect(0, 0, geom.width, geom.height); ctx.drawImage(styleMap.get('border-image-source'), 0, 0); } }); diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/resources/html5.png b/tests/wpt/web-platform-tests/css/css-paint-api/resources/html5.png Binary files differnew file mode 100644 index 00000000000..e34419263f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-paint-api/resources/html5.png diff --git a/tests/wpt/web-platform-tests/css/css-scoping/css-scoping-shadow-nested-slot-display-override.html b/tests/wpt/web-platform-tests/css/css-scoping/css-scoping-shadow-nested-slot-display-override.html new file mode 100644 index 00000000000..f194e469f05 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scoping/css-scoping-shadow-nested-slot-display-override.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<title>CSS Scoping: Dynamically overriding nested slot display value</title> +<link rel="author" title="Rune Lillesveen" href="mailto:futhark@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-scoping/#slots-in-shadow-tree"> +<link rel="match" href="reference/green-box.html"/> +<style> + #outerHost { + width: 100px; + height: 100px; + background: red; + } +</style> +<p>Test passes if you see a single 100px by 100px green box below.</p> +<div id="outerHost"> </div> +<script> + let outerRoot = outerHost.attachShadow({mode:"open"}); + outerRoot.innerHTML = '<div id="innerHost"><slot></slot></div>'; + let innerHost = outerRoot.querySelector("#innerHost"); + let innerRoot = innerHost.attachShadow({mode:"open"}); + innerRoot.innerHTML = '<slot style="display:none; border:solid 50px green"></slot>'; + document.body.offsetTop; + innerRoot.querySelector("slot").style.display = "block"; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/parsing/resources/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/css-shapes/parsing/resources/parsing-testcommon.js new file mode 100644 index 00000000000..9427f53d81b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/parsing/resources/parsing-testcommon.js @@ -0,0 +1,39 @@ +'use strict'; + +// serializedValue can be the expected serialization of value, +// or an array of permitted serializations, +// or omitted if value should serialize as value. +function test_valid_value(property, value, serializedValue) { + if (arguments.length < 3) + serializedValue = value; + + var stringifiedValue = JSON.stringify(value); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + assert_not_equals(div.style[property], "", "property should be set"); + + var div = document.createElement('div'); + div.style[property] = value; + var readValue = div.style[property]; + if (serializedValue instanceof Array) + assert_true(serializedValue.includes(readValue), "serialization should be sound"); + else + assert_equals(readValue, serializedValue, "serialization should be canonical"); + + div.style[property] = readValue; + assert_equals(div.style[property], readValue, "serialization should round-trip"); + + }, "e.style['" + property + "'] = " + stringifiedValue + " should set the property value"); +} + +function test_invalid_value(property, value) { + var stringifiedValue = JSON.stringify(value); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + assert_equals(div.style[property], ""); + }, "e.style['" + property + "'] = " + stringifiedValue + " should not set the property value"); +} diff --git a/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-image-threshold-invalid.html b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-image-threshold-invalid.html new file mode 100644 index 00000000000..e3871d869b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-image-threshold-invalid.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Shapes Module Level 1: parsing shape-image-threshold with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-image-threshold-property"> +<meta name="assert" content="shape-image-threshold supports only the grammar '<number>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("shape-image-threshold", "auto"); +test_invalid_value("shape-image-threshold", "10px"); +test_invalid_value("shape-image-threshold", "100%"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-image-threshold-valid.html b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-image-threshold-valid.html new file mode 100644 index 00000000000..5b77db8e507 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-image-threshold-valid.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Shapes Module Level 1: parsing shape-image-threshold with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-image-threshold-property"> +<meta name="assert" content="shape-image-threshold supports the full grammar '<number>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("shape-image-threshold", "12.5"); +test_valid_value("shape-image-threshold", "-7"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-margin-invalid.html b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-margin-invalid.html new file mode 100644 index 00000000000..4f3b4f26fb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-margin-invalid.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Shapes Module Level 1: parsing shape-margin with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-margin-property"> +<meta name="assert" content="shape-margin supports only the grammar '<length> | <percentage>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("shape-margin", "none"); +test_invalid_value("shape-margin", "10"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-margin-valid.html b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-margin-valid.html new file mode 100644 index 00000000000..68634b6b97a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-margin-valid.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Shapes Module Level 1: parsing shape-margin with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-margin-property"> +<meta name="assert" content="shape-margin supports the full grammar '<length> | <percentage>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("shape-margin", "0", "0px"); +test_valid_value("shape-margin", "10px"); +test_valid_value("shape-margin", "20em"); +test_valid_value("shape-margin", "37.5%"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-invalid.html b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-invalid.html new file mode 100644 index 00000000000..9f541cf2930 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-invalid.html @@ -0,0 +1,52 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Shapes Module Level 1: parsing shape-outside with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-outside-property"> +<meta name="assert" content="shape-outside supports only the grammar 'none | [ <basic-shape> || <shape-box> ] | <image>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("shape-outside", "auto"); +test_invalid_value("shape-outside", "ray(0deg)"); + +test_invalid_value("shape-outside", "inset()"); +test_invalid_value("shape-outside", "inset(123)"); +test_invalid_value("shape-outside", "inset(1% 2% 3% 4% 5%)"); +test_invalid_value("shape-outside", "inset(round 0)"); +test_invalid_value("shape-outside", "inset(0px round)"); +test_invalid_value("shape-outside", "inset(0px round 123)"); +test_invalid_value("shape-outside", "inset(0px round 1% 2% 3% 4% 5%)"); +test_invalid_value("shape-outside", "inset(0px round / 1px)"); +test_invalid_value("shape-outside", "inset(10px round -20px)"); +test_invalid_value("shape-outside", "inset(30% round -40%)"); + +test_invalid_value("shape-outside", "circle(123)"); +test_invalid_value("shape-outside", "circle(at)"); +test_invalid_value("shape-outside", "circle(10% 20%)"); +test_invalid_value("shape-outside", "circle(-10px at 20px 30px)"); +test_invalid_value("shape-outside", "circle(-10% at 20% 30%)"); +test_invalid_value("shape-outside", "circle(1% 2% at 0% 100%)"); + +test_invalid_value("shape-outside", "ellipse(farthest-side at)"); +test_invalid_value("shape-outside", "ellipse(1% 2% top right)"); +test_invalid_value("shape-outside", "ellipse(3%)"); +test_invalid_value("shape-outside", "ellipse(3% at 100% 0%)"); +test_invalid_value("shape-outside", "ellipse(10% -20% at 30% 40%)"); +test_invalid_value("shape-outside", "ellipse(-50px 60px at 70% 80%)"); + +test_invalid_value("shape-outside", "polygon(1%)"); + +// <geometry-box> other than <shape-box> +test_invalid_value("shape-outside", "fill-box"); +test_invalid_value("shape-outside", "stroke-box"); +test_invalid_value("shape-outside", "view-box"); + +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-valid.html b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-valid.html new file mode 100644 index 00000000000..ae0e0bfe29e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-valid.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>CSS Shapes Module Level 1: parsing shape-outside with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-outside-property"> +<meta name="assert" content="shape-outside supports the full grammar 'none | [ <basic-shape> || <shape-box> ] | <image>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("shape-outside", "none"); + +// <basic-shape> +test_valid_value("shape-outside", "inset(100%)"); +test_valid_value("shape-outside", "inset(0 1px)", "inset(0px 1px)"); +test_valid_value("shape-outside", "inset(0px 1px 2%)"); +test_valid_value("shape-outside", "inset(0px 1px 2% 3em)"); +test_valid_value("shape-outside", "inset(0px round 100%)"); +test_valid_value("shape-outside", "inset(0px round 0 1px)", "inset(0px round 0px 1px)"); +test_valid_value("shape-outside", "inset(0px round 0px 1px 2%)"); +test_valid_value("shape-outside", "inset(0px round 0px 1px 2% 3em)"); +test_valid_value("shape-outside", "inset(10px round 20% / 0px 1px 2% 3em)"); + +test_valid_value("shape-outside", "circle()", "circle(at 50% 50%)"); +test_valid_value("shape-outside", "circle(1px)", "circle(1px at 50% 50%)"); +test_valid_value("shape-outside", "circle(closest-side)", "circle(at 50% 50%)"); +test_valid_value("shape-outside", "circle(at 10% 20%)"); +test_valid_value("shape-outside", "circle(farthest-side at center top)", "circle(farthest-side at 50% 0%)"); +test_valid_value("shape-outside", "circle(4% at top right)", "circle(4% at 100% 0%)"); + +test_valid_value("shape-outside", "ellipse()", "ellipse(at 50% 50%)"); +test_valid_value("shape-outside", "ellipse(3% 2%)", "ellipse(3% 2% at 50% 50%)"); +test_valid_value("shape-outside", "ellipse(closest-side 1px)", "ellipse(closest-side 1px at 50% 50%)"); +test_valid_value("shape-outside", "ellipse(at 10% 20%)"); +test_valid_value("shape-outside", "ellipse(farthest-side 4% at bottom left)", "ellipse(farthest-side 4% at 0% 100%)"); + +test_valid_value("shape-outside", "polygon(1% 2%)"); +test_valid_value("shape-outside", "polygon(nonzero, 1px 2px, 3em 4em)", "polygon(1px 2px, 3em 4em)"); +test_valid_value("shape-outside", "polygon(evenodd, 1px 2px, 3em 4em, 5pt 6%)"); + +// <shape-box> +test_valid_value("shape-outside", "border-box"); +test_valid_value("shape-outside", "padding-box"); +test_valid_value("shape-outside", "content-box"); +test_valid_value("shape-outside", "margin-box"); + +// basic-shape> <shape-box> +test_valid_value("shape-outside", "circle(7% at 8% 9%) border-box"); + +// <shape-box> basic-shape> +test_valid_value("shape-outside", "border-box circle(7% at 8% 9%)"); + +// <image> +// Spec is silent about url serialization. +// Blink, Edge, Firefox add quotes. WebKit removes quotes. +test_valid_value("shape-outside", "url(https://example.com/)", ["url(https://example.com/)", "url(\"https://example.com/\")"]); +test_valid_value("shape-outside", "url(\"https://example.com/\")", ["url(https://example.com/)", "url(\"https://example.com/\")"]); +test_valid_value("shape-outside", "cross-fade(url(\"https://example.com/\"), green)"); +test_valid_value("shape-outside", "linear-gradient(yellow, blue)"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/resources/1x1-green.png b/tests/wpt/web-platform-tests/css/css-typed-om/resources/1x1-green.png Binary files differnew file mode 100644 index 00000000000..b98ca0ba0a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/resources/1x1-green.png diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/resources/testhelper.js b/tests/wpt/web-platform-tests/css/css-typed-om/resources/testhelper.js new file mode 100644 index 00000000000..50b93302525 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/resources/testhelper.js @@ -0,0 +1,146 @@ +// Compares two CSSStyleValues to check if they're the same type +// and have the same attributes. +function assert_style_value_equals(a, b) { + if (a == null || b == null) { + assert_equals(a, b); + return; + } + + assert_equals(a.constructor.name, b.constructor.name); + const className = a.constructor.name; + switch (className) { + case 'CSSKeywordValue': + assert_equals(a.value, b.value); + break; + case 'CSSUnitValue': + assert_approx_equals(a.value, b.value, 1e-6); + assert_equals(a.unit, b.unit); + break; + case 'CSSMathSum': + case 'CSSMathProduct': + case 'CSSMathMin': + case 'CSSMathMax': + assert_style_value_array_equals(a.values, b.values); + break; + case 'CSSMathInvert': + case 'CSSMathNegate': + assert_style_value_equals(a.value, b.value); + break; + case 'CSSUnparsedValue': + assert_style_value_array_equals(a, b); + break; + case 'CSSVariableReferenceValue': + assert_equals(a.variable, b.variable); + assert_style_value_equals(a.fallback, b.fallback); + break; + case 'CSSPositionValue': + assert_style_value_equals(a.x, b.x); + assert_style_value_equals(a.y, b.y); + break; + case 'CSSTransformValue': + assert_style_value_array_equals(a, b); + break; + case 'CSSRotation': + assert_style_value_equals(a.angle, b.angle); + // fallthrough + case 'CSSTranslation': + case 'CSSScale': + assert_style_value_equals(a.x, b.x); + assert_style_value_equals(a.y, b.y); + assert_style_value_equals(a.z, b.z); + assert_style_value_equals(a.is2D, b.is2D); + break; + case 'CSSSkew': + assert_style_value_equals(a.ax, b.ax); + assert_style_value_equals(a.ay, b.ay); + break; + case 'CSSPerspective': + assert_style_value_equals(a.length, b.length); + break; + case 'CSSMatrixComponent': + assert_matrix_approx_equals(a.matrix, b.matrix, 1e-6); + break; + case 'CSSURLImageValue': + assert_equals(a.instrinsicWidth, b.instrinsicWidth); + assert_equals(a.instrinsicHeight, b.instrinsicHeight); + assert_equals(a.instrinsicRatio, b.instrinsicRatio); + assert_equals(a.url, b.url); + break; + default: + assert_equals(a, b); + break; + } +} + +// Compares two arrays of CSSStyleValues to check if every element is equal +function assert_style_value_array_equals(a, b) { + assert_equals(a.length, b.length); + for (let i = 0; i < a.length; i++) { + assert_style_value_equals(a[i], b[i]); + } +} + +const gValidUnits = [ + 'number', 'percent', 'em', 'ex', 'ch', + 'ic', 'rem', 'lh', 'rlh', 'vw', + 'vh', 'vi', 'vb', 'vmin', 'vmax', + 'cm', 'mm', 'Q', 'in', 'pt', + 'pc', 'px', 'deg', 'grad', 'rad', + 'turn', 's', 'ms', 'Hz', 'kHz', + 'dpi', 'dpcm', 'dppx', 'fr', +]; + +// Creates a new div element with specified inline style |cssText|. +// The created element is deleted during test cleanup. +function createDivWithStyle(test, cssText) { + let element = document.createElement('div'); + element.style = cssText || ''; + document.body.appendChild(element); + test.add_cleanup(() => { + element.remove(); + }); + return element; +} + +// Creates a new div element with inline style |cssText| and returns +// its inline style property map. +function createInlineStyleMap(test, cssText) { + return createDivWithStyle(test, cssText).attributeStyleMap; +} + +// Creates a new div element with inline style |cssText| and returns +// its computed style property map. +function createComputedStyleMap(test, cssText) { + return createDivWithStyle(test, cssText).computedStyleMap(); +} + +// Creates a new style element with a rule |cssText| and returns +// its declared style property map. +function createDeclaredStyleMap(test, cssText) { + const style = document.createElement('style'); + document.head.appendChild(style); + const rule = style.sheet.cssRules[style.sheet.insertRule('#test { ' + cssText + '}')]; + test.add_cleanup(() => { + style.remove(); + }); + return rule.attributeStyleMap; +} + +// Creates a new element with background image set to |imageValue| +// and returns a new Image element that can be used to attach +// event listeners regarding the image. +function loadImageResource(test, imageValue) { + // Set a CSSURLImageValue on an element so it can be loaded. + let styleMap = createInlineStyleMap(test, ''); + styleMap.set('background-image', imageValue); + + // add a new Image element to know if the image resource has been loaded + let image = new Image(); + image.src = imageValue.url; + return image; +} + +function assert_matrix_approx_equals(actual, expected, epsilon) { + assert_array_approx_equals( + actual.toFloat64Array(), expected.toFloat64Array(), epsilon); +} diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-ident.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-ident.tentative.html new file mode 100644 index 00000000000..d118dda4a2b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-ident.tentative.html @@ -0,0 +1,23 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Identifier normalization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#normalize-ident"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(() => { + assert_style_value_equals(CSSStyleValue.parse('width', 'auto'), + new CSSKeywordValue('auto')); +}, 'CSS identifiers are normalized from String to CSSKeywordValues'); + +test(t => { + assert_style_value_equals( + createDivWithStyle(t, 'width: auto').attributeStyleMap.get('width'), + new CSSKeywordValue('auto')); +}, 'CSS identifiers are normalized from CSSOM to CSSKeywordValues'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-numeric.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-numeric.tentative.html new file mode 100644 index 00000000000..1ba07606a2a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-numeric.tentative.html @@ -0,0 +1,49 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Numeric normalization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#normalize-numeric"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +function test_numeric_normalization(test, property, cssText, expected) { + assert_style_value_equals(CSSNumericValue.parse(cssText), expected); + assert_style_value_equals(CSSStyleValue.parse(property, cssText), expected); + assert_style_value_equals( + createInlineStyleMap(test, property + ': ' + cssText).get(property), + expected); +} + +test(t => { + test_numeric_normalization(t, 'line-height', '3.14', CSS.number(3.14)); +}, 'Normalizing a <number> returns a number CSSUnitValue'); + +test(t => { + test_numeric_normalization(t, 'width', '3.14%', CSS.percent(3.14)); +}, 'Normalizing a <percentage> returns a percent CSSUnitValue'); + +test(t => { + test_numeric_normalization(t, 'width', '3.14px', CSS.px(3.14)); +}, 'Normalizing a <dimension> returns a CSSUnitValue with the correct unit'); + +test(t => { + test_numeric_normalization(t, 'z-index', '0', CSS.number(0)); +}, 'Normalizing a <number> with a unitless zero returns 0'); + +test(t => { + test_numeric_normalization(t, 'width', + 'calc(1px + calc(1px) + calc(1px * 2) + 1%)', + new CSSMathSum(CSS.px(4), CSS.percent(1))); +}, 'Normalizing a <calc> returns simplified expression'); + +test(t => { + assert_style_value_equals(CSSStyleValue.parse('width', '0px'), CSS.px(0)); + assert_style_value_equals( + createInlineStyleMap(t, 'width: 0').get('width'), + CSS.px(0)); +}, 'Normalizing a <dimension> with a unitless zero returns 0px'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-resource.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-resource.tentative.html new file mode 100644 index 00000000000..d5082aa0b25 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-resource.tentative.html @@ -0,0 +1,56 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSSResourceValue normalization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#resourcevalue-normalization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +const gTestUrl = '../resources/1x1-green.png'; +const gBadTestUrl = document.location.href; + +async_test(t => { + const result = CSSStyleValue.parse('background-image', 'url("' + gTestUrl + '")'); + assert_equals(result.constructor.name, 'CSSURLImageValue'); + assert_equals(result.intrinsicWidth, null); + assert_equals(result.intrinsicHeight, null); + assert_equals(result.intrinsicRatio, null); + assert_equals(result.state, 'unloaded'); + + let image = loadImageResource(t, result); + image.addEventListener('load', t.step_func_done(() => { + assert_equals(result.url, gTestUrl); + assert_equals(result.state, 'loaded'); + assert_equals(result.intrinsicWidth, 1); + assert_equals(result.intrinsicHeight, 1); + assert_equals(result.intrinsicRatio, 1); + })); +}, 'Normalizing a valid <url> returns a CSSURLImageValue that eventually loads'); + +async_test(t => { + const result = CSSStyleValue.parse('background-image', 'url("' + gBadTestUrl + '")'); + assert_equals(result.constructor.name, 'CSSURLImageValue'); + + let image = loadImageResource(t, result); + image.addEventListener('error', t.step_func_done(() => { + assert_equals(result.url, gBadTestUrl); + assert_equals(result.state, 'error'); + assert_equals(result.intrinsicWidth, null); + assert_equals(result.intrinsicHeight, null); + assert_equals(result.intrinsicRatio, null); + })); +}, 'Normalizing a bad <url> returns a CSSURLImageValue in error state'); + +test(t => { + const result = CSSStyleValue.parse('background-image', 'linear-gradient(red, orange)'); + assert_equals(result.constructor.name, 'CSSImageValue'); + assert_equals(result.state, 'loaded'); + assert_equals(result.intrinsicWidth, null); + assert_equals(result.intrinsicHeight, null); + assert_equals(result.intrinsicRatio, null); +}, 'Normalizing a <gradient> returns a CSSImageValue'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-tokens.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-tokens.tentative.html new file mode 100644 index 00000000000..33113805414 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/normalize-tokens.tentative.html @@ -0,0 +1,63 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Normalization of raw CSS tokens tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#normalize-tokens"> +<script src="//resources/testharness.js"></script> +<script src="//resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +function assert_string_normalizes_to(test, property, str, expected) { + // From string + assert_style_value_equals(CSSStyleValue.parse(property, str), expected); + // From CSSOM + assert_style_value_equals( + createInlineStyleMap(test, property + ':' + str).get(property), + expected + ); +} + +const gTestCases = [ + { + value: 'var(--A)', + expectedResult: [ + new CSSVariableReferenceValue('--A'), + ] + }, + { + value: 'var(--A, 1em)', + expectedResult: [ + new CSSVariableReferenceValue('--A', new CSSUnparsedValue(' 1em')), + ] + }, + { + value: 'var(--A, var(--B))', + expectedResult: [ + new CSSVariableReferenceValue('--A', new CSSUnparsedValue(' ', new CSSVariableReferenceValue('--B'))), + ] + }, + { + value: 'calc(42px + var(--foo, 15em) + var(--bar, var(--far) + 15px))', + expectedResult: [ + 'calc(42px + ', + new CSSVariableReferenceValue('--foo', new CSSUnparsedValue(' 15em')), + ' + ', + new CSSVariableReferenceValue('--bar', new CSSUnparsedValue(' ', new CSSVariableReferenceValue('--far'), ' + 15px')), + ')', + ] + }, +]; + +for (const {value, expectedResult} of gTestCases) { + test(t => { + assert_string_normalizes_to(t, 'color', value, new CSSUnparsedValue(...expectedResult)); + }, 'Normalizing "' + value + '" on a CSS property returns correct CSSUnparsedValue'); + + test(t => { + assert_string_normalizes_to(t, '--X', value, new CSSUnparsedValue(...expectedResult)); + }, 'Normalizing "' + value + '" on a custom property returns correct CSSUnparsedValue'); +} + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html new file mode 100644 index 00000000000..15f67429edb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html @@ -0,0 +1,67 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSSPositionValue normalization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#positionvalue-normalization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +const gSingleTestCases = [ + { cssText: 'left', x: CSS.percent(0), y: CSS.percent(50) }, + { cssText: 'right', x: CSS.percent(100), y: CSS.percent(50) }, + { cssText: 'center', x: CSS.percent(50), y: CSS.percent(50) }, + { cssText: 'top', x: CSS.percent(50), y: CSS.percent(0) }, + { cssText: 'bottom', x: CSS.percent(50), y: CSS.percent(100) }, + { cssText: '3.14px', x: CSS.px(3.14), y: CSS.percent(50) }, + { cssText: '25%', x: CSS.percent(25), y: CSS.percent(50) }, +]; + +const gXTestCases = [ + { cssText: 'left', x: CSS.percent(0), type: 'ident' }, + { cssText: 'center', x: CSS.percent(50), type: 'ident' }, + { cssText: 'right', x: CSS.percent(100), type: 'ident' }, + { cssText: '3.14px', x: CSS.px(3.14), type: 'length' }, + { cssText: '10%', x: CSS.percent(10), type: 'length' }, + { cssText: 'calc(1px + 1em)', x: new CSSMathSum(CSS.px(1), CSS.em(1)), type: 'length' }, + { cssText: 'left 3.14px', x: CSS.px(3.14), type: 'offset' }, + { cssText: 'right 3.14px', x: CSS.percent(100).sub(CSS.px(3.14)), type: 'offset' }, +]; + +const gYTestCases = [ + { cssText: 'top', y: CSS.percent(0), type: 'ident' }, + { cssText: 'center', y: CSS.percent(50), type: 'ident' }, + { cssText: 'bottom', y: CSS.percent(100), type: 'ident' }, + { cssText: '3.14px', y: CSS.px(3.14), type: 'length' }, + { cssText: '10%', y: CSS.percent(10), type: 'length' }, + { cssText: 'calc(1px + 1em)', y: new CSSMathSum(CSS.px(1), CSS.em(1)), type: 'length' }, + { cssText: 'top 3.14px', y: CSS.px(3.14), type: 'offset' }, + { cssText: 'bottom 3.14px', y: CSS.percent(100).sub(CSS.px(3.14)), type: 'offset' }, +]; + +for (const {cssText, x, y} of gSingleTestCases) { + test(t => { + const styleMap = createInlineStyleMap(t, 'object-position: ' + cssText); + assert_style_value_equals(styleMap.get('object-position'), new CSSPositionValue(x, y)); + }, 'CSS <position> value "' + cssText + '" normalizes to CSSPositionValue'); +} + +for (const {cssText: xCssText, x, type: xType} of gXTestCases) { + for (const {cssText: yCssText, y, type: yType} of gYTestCases) { + const cssText = xCssText + ' ' + yCssText; + + // Can't have things like left 10px 20px + if ((xType == 'offset' && yType == 'length') || + (xType == 'length' && yType == 'offset')) + continue; + + test(t => { + const styleMap = createInlineStyleMap(t, 'object-position: ' + cssText); + assert_style_value_equals(styleMap.get('object-position'), new CSSPositionValue(x, y)); + }, 'CSS <position> value "' + cssText + '" normalizes to CSSPositionValue'); + } +} + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html new file mode 100644 index 00000000000..5725f4677d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html @@ -0,0 +1,175 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Transform normalization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#transformvalue-normalization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/comparisons.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +function test_transform_normalization(test, cssText, expected) { + assert_style_value_equals(CSSStyleValue.parse('transform', cssText), expected); + assert_style_value_equals( + createInlineStyleMap(test, 'transform: ' + cssText).get('transform'), + expected); +} + +test(t => { + test_transform_normalization(t, 'matrix(1, 2, 3, 4, 5, 6)', + new CSSTransformValue([ + new CSSMatrixComponent(new DOMMatrixReadOnly([1, 2, 3, 4, 5, 6])) + ])); +}, 'Normalizing a matrix() returns a CSSMatrixComponent'); + +test(t => { + test_transform_normalization(t, + 'matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)', + new CSSTransformValue([ + new CSSMatrixComponent(new DOMMatrixReadOnly([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])) + ])); +}, 'Normalizing a matrix3d() returns a CSSMatrixComponent'); + +const gTestCases = [ + { + cssText: 'translate(1px)', + expected: new CSSTranslation(CSS.px(1), CSS.px(0)), + desc: 'translate() with X' + }, + { + cssText: 'translate(1%, 1px)', + expected: new CSSTranslation(CSS.percent(1), CSS.px(1)), + desc: 'translate() with X and Y' + }, + { + cssText: 'translateX(1%)', + expected: new CSSTranslation(CSS.percent(1), CSS.px(0)), + desc: 'translateX()' + }, + { + cssText: 'translateY(1px)', + expected: new CSSTranslation(CSS.px(0), CSS.px(1)), + desc: 'translateY()' + }, + { + cssText: 'translate3d(1px, 2%, 3px)', + expected: new CSSTranslation(CSS.px(1), CSS.percent(2), CSS.px(3)), + desc: 'translate3d()' + }, + { + cssText: 'translateZ(1px)', + expected: new CSSTranslation(CSS.px(0), CSS.px(0), CSS.px(1)), + desc: 'translateZ()' + }, + { + cssText: 'scale(2)', + expected: new CSSScale(CSS.number(2), CSS.number(2)), + desc: 'scale() with one argument' + }, + { + cssText: 'scale(2, 3)', + expected: new CSSScale(CSS.number(2), CSS.number(3)), + desc: 'scale() with two arguments' + }, + { + cssText: 'scaleX(2)', + expected: new CSSScale(CSS.number(2), CSS.number(1)), + desc: 'scaleX()' + }, + { + cssText: 'scaleY(2)', + expected: new CSSScale(CSS.number(1), CSS.number(2)), + desc: 'scaleY()' + }, + { + cssText: 'scale3d(1, 2, 3)', + expected: new CSSScale(CSS.number(1), CSS.number(2), CSS.number(3)), + desc: 'scale3d()' + }, + { + cssText: 'scaleZ(2)', + expected: new CSSScale(CSS.number(1), CSS.number(1), CSS.number(2)), + desc: 'scaleZ()' + }, + { + cssText: 'rotate(90deg)', + expected: new CSSRotation(CSS.deg(90)), + desc: 'rotate()' + }, + { + cssText: 'rotate3d(1, 2, 3, 90deg)', + expected: new CSSRotation(CSS.number(1), CSS.number(2), CSS.number(3), CSS.deg(90)), + desc: 'rotate3d()' + }, + { + cssText: 'rotateX(90deg)', + expected: new CSSRotation(CSS.number(1), CSS.number(0), CSS.number(0), CSS.deg(90)), + desc: 'rotateX()' + }, + { + cssText: 'rotateY(90deg)', + expected: new CSSRotation(CSS.number(0), CSS.number(1), CSS.number(0), CSS.deg(90)), + desc: 'rotateY()' + }, + { + cssText: 'rotateZ(90deg)', + expected: new CSSRotation(CSS.number(0), CSS.number(0), CSS.number(1), CSS.deg(90)), + desc: 'rotateZ()' + }, + { + cssText: 'skew(90deg)', + expected: new CSSSkew(CSS.deg(90), CSS.deg(0)), + desc: 'skew() with only X' + }, + { + cssText: 'skew(90deg, 45deg)', + expected: new CSSSkew(CSS.deg(90), CSS.deg(45)), + desc: 'skew() with X and Y' + }, + { + cssText: 'skewX(90deg)', + expected: new CSSSkew(CSS.deg(90), CSS.deg(0)), + desc: 'skewX()' + }, + { + cssText: 'skewY(90deg)', + expected: new CSSSkew(CSS.deg(0), CSS.deg(90)), + desc: 'skewY()' + }, + { + cssText: 'perspective(1px)', + expected: new CSSPerspective(CSS.px(1)), + desc: 'perspective()' + }, +]; + +for (const {cssText, expected, desc} of gTestCases) { + test(t => { + test_transform_normalization(t, cssText, new CSSTransformValue([expected])); + }, 'Normalizing a ' + desc + ' returns a ' + expected.constructor.name); +} + +test(t => { + test_transform_normalization(t, + 'translate(1px) rotateX(90deg) perspective(1px) skew(90deg) scale3d(1, 2, 3)', + new CSSTransformValue([ + new CSSTranslation(CSS.px(1), CSS.px(0)), + new CSSRotation(CSS.number(1), CSS.number(0), CSS.number(0), CSS.deg(90)), + new CSSPerspective(CSS.px(1)), + new CSSSkew(CSS.deg(90), CSS.deg(0)), + new CSSScale(CSS.number(1), CSS.number(2), CSS.number(3)), + ])); +}, 'Normalizing a <transform-list> returns a CSSTransformValue containing all the transforms'); + +test(t => { + test_transform_normalization(t, + 'translate(calc(1px + 1em)) perspective(calc(1px + 1em))', + new CSSTransformValue([ + new CSSTranslation(new CSSMathSum(CSS.px(1), CSS.em(1)), CSS.px(0)), + new CSSPerspective(new CSSMathSum(CSS.px(1), CSS.em(1))), + ])); +}, 'Normalizing transforms with calc values contains CSSMathValues'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssKeywordValue.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssKeywordValue.tentative.html new file mode 100644 index 00000000000..1e2041d80dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssKeywordValue.tentative.html @@ -0,0 +1,35 @@ +<!doctype html> +<meta charset="utf-8"> +<title>IDL-constructed CSSKeywordValue serialization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#unparsedvalue-serialization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(() => { + assert_equals(new CSSKeywordValue('auto').toString(), 'auto'); + assert_equals(new CSSKeywordValue('inherit').toString(), 'inherit'); + assert_equals(new CSSKeywordValue('lemon').toString(), 'lemon'); +}, 'CSSKeywordValue constructed from IDL serializes correctly'); + +test(() => { + assert_equals(new CSSKeywordValue(' Hello World').toString(), CSS.escape(' Hello World')); + assert_equals(new CSSKeywordValue('3').toString(), CSS.escape('3')); +}, 'CSSKeywordValue constructed from IDL serializes to escaped strings'); + +test(() => { + let result = CSSStyleValue.parse('width', 'auto'); + result.value = 'lemon'; + assert_equals(result.toString(), 'lemon'); +}, 'CSSKeywordValue from DOMString modified through "value" setter serializes correctly'); + +test(t => { + let result = createInlineStyleMap(t, 'width: auto').get('width'); + result.value = 'lemon'; + assert_equals(result.toString(), 'lemon'); +}, 'CSSKeywordValue from CSSOM modified through "value" setter serializes correctly'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssMathValue.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssMathValue.tentative.html new file mode 100644 index 00000000000..6ce739b6943 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssMathValue.tentative.html @@ -0,0 +1,81 @@ +<!doctype html> +<meta charset="utf-8"> +<title>IDL-constructed CSSMathValue serialization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#calc-serialization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<script> +'use strict'; + +const gTestCases = [ + { + value: new CSSMathSum(CSS.px(1)), + cssText: 'calc(1px)', + desc: 'CSSMathSum with 1 argument' + }, + { + value: new CSSMathSum(CSS.px(1), CSS.px(2)), + cssText: 'calc(1px + 2px)', + desc: 'CSSMathSum with 2 arguments' + }, + { + value: new CSSMathSum(CSS.px(1), CSS.px(2), CSS.px(3)), + cssText: 'calc((1px + 2px) + 3px)', + desc: 'CSSMathSum with more than 2 arguments' + }, + { + value: new CSSMathProduct(CSS.px(1)), + cssText: 'calc(1px)', + desc: 'CSSMathProduct with 1 argument' + }, + { + value: new CSSMathProduct(CSS.px(1), 2), + cssText: 'calc(1px * 2)', + desc: 'CSSMathProduct with 2 arguments' + }, + { + value: new CSSMathProduct(CSS.px(1), 2, 3), + cssText: 'calc((1px * 2) * 3)', + desc: 'CSSMathProduct with more than 2 arguments' + }, +]; + +for (const {value, cssText, desc} of gTestCases) { + test(() => { + assert_equals(value.toString(), cssText); + }, desc + ' serializes correctly'); +} + +// TODO(crbug.com/782103): Convert these to actual tests once we have spec +// for these. For now, let's just test that they don't crash. +const gInvalidTestCases = [ + { + value: new CSSMathProduct(CSS.px(1), CSS.s(1)), + desc: 'CSSMathProduct of two different base types' + }, + { + value: new CSSMathMax(CSS.px(2), CSS.px(1)), + desc: 'CSSMathMax' + }, + { + value: new CSSMathMin(CSS.px(1), CSS.px(2)), + desc: 'CSSMathMin' + }, + { + value: new CSSMathNegate(CSS.px(1)), + desc: 'CSSMathNegate' + }, + { + value: new CSSMathInvert(CSS.px(1)), + desc: 'CSSMathInvert' + }, +]; + +for (const {value, desc} of gInvalidTestCases) { + test(() => { + value.toString(); + }, 'Serializing ' + desc + ' does not crash'); +} + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssPositionValue.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssPositionValue.html new file mode 100644 index 00000000000..c93b2f1a9b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssPositionValue.html @@ -0,0 +1,42 @@ +<!doctype html> +<meta charset="utf-8"> +<title>IDL-constructed CSSPositionValue serialization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#positionvalue-serialization"> +<meta name="assert" content="Test CSSPositionValues are serialized by concatenating their coordinate values" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<div id="log"> +<script> +'use strict'; + +test(() => { + assert_equals(new CSSPositionValue(CSS.px(1), CSS.percent(-3.14)).toString(), '1px -3.14%'); +}, 'CSSPositionValue with length and percent serializes by concantenating x and y'); + +test(() => { + let result = CSSStyleValue.parse('object-position', '1px 1px'); + result.x = CSS.percent(-3.14); + assert_equals(result.toString(), '-3.14% 1px'); +}, 'CSSPositionValue from DOMString modified by "x" setter serializes to its new value'); + +test(() => { + let result = CSSStyleValue.parse('object-position', '1px 1px'); + result.y = CSS.percent(-3.14); + assert_equals(result.toString(), '1px -3.14%'); +}, 'CSSPositionValue from DOMString modified by "y" setter serializes to its new value'); + +test(t => { + let result = createInlineStyleMap(t, 'object-position: 1px 1px').get('object-position'); + result.x = CSS.percent(-3.14); + assert_equals(result.toString(), '-3.14% 1px'); +}, 'CSSPositionValue from CSSOM modified by "x" setter serializes to its new value'); + +test(t => { + let result = createInlineStyleMap(t, 'object-position: 1px 1px').get('object-position'); + result.y = CSS.percent(-3.14); + assert_equals(result.toString(), '1px -3.14%'); +}, 'CSSPositionValue from CSSOM modified by "y" setter serializes to its new value'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html new file mode 100644 index 00000000000..5f09cfdc77e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html @@ -0,0 +1,115 @@ +<!doctype html> +<meta charset="utf-8"> +<title>IDL-constructed CSSTransformValue serialization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#positionvalue-serialization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<script> +'use strict'; + +const gTestCases = [ + { + value: new CSSTranslation(CSS.percent(1), CSS.px(1)), + cssText: 'translate(1%, 1px)', + desc: 'CSSTranslation with 2 arguments' + }, + { + value: new CSSTranslation(CSS.px(1), CSS.percent(2), CSS.px(3)), + cssText: 'translate3d(1px, 2%, 3px)', + desc: 'CSSTranslation with 3 arguments' + }, + { + value: new CSSScale(CSS.number(2), CSS.number(3)), + cssText: 'scale(2, 3)', + desc: 'CSSScale with 2 arguments' + }, + { + value: new CSSScale(CSS.number(1), CSS.number(2), CSS.number(3)), + cssText: 'scale3d(1, 2, 3)', + desc: 'CSSScale with 3 arguments' + }, + { + value: new CSSRotation(CSS.deg(90)), + cssText: 'rotate(90deg)', + desc: 'CSSRotation with 1 argument' + }, + { + value: new CSSRotation(CSS.number(1), CSS.number(2), CSS.number(3), CSS.deg(90)), + cssText: 'rotate3d(1, 2, 3, 90deg)', + desc: 'CSSRotation with 4 arguments' + }, + { + value: new CSSSkew(CSS.deg(90), CSS.deg(45)), + cssText: 'skew(90deg, 45deg)', + desc: 'CSSSkew' + }, + { + value: new CSSPerspective(CSS.px(1)), + cssText: 'perspective(1px)', + desc: 'CSSPerspective' + }, + { + value: new CSSTransformValue([new CSSPerspective(CSS.px(1))]), + cssText: 'perspective(1px)', + desc: 'CSSTransformValue with a single transform' + }, + { + value: new CSSTransformValue([ + new CSSTranslation(CSS.px(1), CSS.px(0)), + new CSSRotation(CSS.deg(90)), + new CSSPerspective(CSS.px(1)), + new CSSSkew(CSS.deg(90), CSS.deg(45)), + new CSSScale(CSS.number(1), CSS.number(2), CSS.number(3)), + ]), + cssText: 'translate(1px, 0px) rotate(90deg) perspective(1px) skew(90deg, 45deg) scale3d(1, 2, 3)', + desc: 'CSSTransformValue with multiple transforms' + }, + { + value: new CSSTransformValue([ + new CSSTranslation(new CSSMathSum(CSS.px(1), CSS.em(1)), CSS.px(0)), + new CSSRotation(new CSSMathSum(CSS.deg(90), CSS.turn(1))), + new CSSPerspective(new CSSMathSum(CSS.px(1), CSS.em(1))), + new CSSSkew(new CSSMathProduct(CSS.deg(90), 2), new CSSMathProduct(CSS.turn(1), 2)), + new CSSScale( + new CSSMathProduct(CSS.number(1), CSS.number(2)), + new CSSMathSum(CSS.number(1), CSS.number(1)), + new CSSMathProduct(CSS.number(3)) + ), + ]), + cssText: 'translate(calc(1px + 1em), 0px) rotate(calc(90deg + 1turn)) perspective(calc(1px + 1em)) skew(calc(90deg * 2), calc(1turn * 2)) scale3d(calc(1 * 2), calc(1 + 1), calc(3))', + desc: 'CSSTransformValue containing CSSMathValues' + }, + { + value: new CSSMatrixComponent(new DOMMatrixReadOnly([1, 2, 3, 4, 5, 6])), + cssText: 'matrix(1, 2, 3, 4, 5, 6)', + desc: 'CSSMatrixComponent with 6 elements' + }, + { + value: new CSSMatrixComponent(new DOMMatrixReadOnly([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])), + cssText: 'matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)', + desc: 'CSSMatrixComponent with 16 elements' + }, +]; + +for (const {value, cssText, desc} of gTestCases) { + test(() => { + assert_equals(value.toString(), cssText); + }, desc + ' serializes correctly'); +} + +test(() => { + let result = new CSSTransformValue([ + new CSSTranslation(CSS.px(1), CSS.px(2), CSS.px(3)), + new CSSRotation(1, 2, 3, CSS.deg(90)), + new CSSScale(1, 2, 3), + ]); + + for (const transform of result) { + transform.is2D = true; + } + + assert_equals(result.toString(), 'translate(1px, 2px) rotate(90deg) scale(1, 2)'); +}, 'CSSTransformValue with updated is2D serializes as 2D transforms'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html new file mode 100644 index 00000000000..652e0e61350 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html @@ -0,0 +1,55 @@ +<!doctype html> +<meta charset="utf-8"> +<title>IDL-constructed CSSUnitValue serialization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#numericvalue-serialization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(() => { + assert_equals(new CSSUnitValue(3.14, 'px').toString(), '3.14px'); + assert_equals(CSS.px(3.14).toString(), '3.14px'); +}, 'CSSUnitValue with length unit constructed from IDL serializes correctly'); + +test(() => { + assert_equals(new CSSUnitValue(3.14, 'percent').toString(), '3.14%'); + assert_equals(CSS.percent(3.14).toString(), '3.14%'); +}, 'CSSUnitValue with unit "percent" constructed from IDL serializes correctly'); + +test(() => { + assert_equals(new CSSUnitValue(3.14, 'number').toString(), '3.14'); + assert_equals(CSS.number(3.14).toString(), '3.14'); +}, 'CSSUnitValue with unit "number" constructed from IDL serializes correctly'); + +test(() => { + assert_equals(new CSSUnitValue(3, 'number').toString(), '3'); +}, 'CSSUnitValue with integer values constructed from IDL serializes correctly'); + +test(() => { + let result = CSSStyleValue.parse('width', '1px'); + result.value = 3.14; + assert_equals(result.toString(), '3.14px'); +}, 'CSSKeywordValue from DOMString modified by "value" setter serializes correctly'); + +test(() => { + let result = CSSStyleValue.parse('width', '1px'); + result.unit = 's'; + assert_equals(result.toString(), '1s'); +}, 'CSSKeywordValue from DOMString modified by "unit" setter serializes correctly'); + +test(t => { + let result = createInlineStyleMap(t, 'width: 1px').get('width'); + result.value = 3.14; + assert_equals(result.toString(), '3.14px'); +}, 'CSSKeywordValue from CSSOM modified by "value" setter serializes correctly'); + +test(t => { + let result = createInlineStyleMap(t, 'width: 1px').get('width'); + result.unit = 's'; + assert_equals(result.toString(), '1s'); +}, 'CSSKeywordValue from CSSOM modified by "unit" setter serializes correctly'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUnparsedValue.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUnparsedValue.html new file mode 100644 index 00000000000..8b7a8681244 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUnparsedValue.html @@ -0,0 +1,37 @@ +<!doctype html> +<meta charset="utf-8"> +<title>IDL-constructed CSSUnparsedValue serialization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#unparsedvalue-serialization"> +<meta name="assert" content="Test CSSUnparsedValue are serialized by concatenating its contents" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<div id="tag"> +<script> +'use strict'; + +test(() => { + assert_equals(new CSSUnparsedValue('lem', 'on', 'ade').toString(), 'lemonade'); +}, 'CSSUnparsedValue containing strings serializes to its concatenated contents'); + +test(() => { + assert_equals(new CSSUnparsedValue( + new CSSVariableReferenceValue('--A', + new CSSUnparsedValue(new CSSVariableReferenceValue('--B'))), + new CSSVariableReferenceValue('--C')).toString(), + 'var(--A,var(--B))var(--C)'); +}, 'CSSUnparsedValue containing variable references serializes its ' + + 'concatenated contents'); + +test(() => { + assert_equals(new CSSUnparsedValue('foo', 'bar ', + new CSSVariableReferenceValue('--A', + new CSSUnparsedValue('baz ', + new CSSVariableReferenceValue('--B'), 'lemon')), + new CSSVariableReferenceValue('--C', + new CSSUnparsedValue('ade'))).toString(), + 'foobar var(--A,baz var(--B)lemon)var(--C,ade)'); +}, 'CSSUnparsedValue containing mix of strings and variable references ' + + 'serializes to its concatenated contents'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUrlImageValue.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUrlImageValue.tentative.html new file mode 100644 index 00000000000..c97ed0d1b41 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssUrlImageValue.tentative.html @@ -0,0 +1,15 @@ +<!doctype html> +<meta charset="utf-8"> +<title>IDL-constructed CSSURLImageValue serialization tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#urlimagevalue-serialization"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<script> +'use strict'; + +test(() => { + assert_equals(new CSSURLImageValue('http://foo.bar').toString(), 'url("http://foo.bar")'); +}, 'CSSUrlImageValue constructed from IDL serializes correctly'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-invalid.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-invalid.html new file mode 100644 index 00000000000..b6b0de59e75 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue-invalid.html @@ -0,0 +1,23 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSSKeywordValue Error Handling</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#csskeywordvalue"> +<meta name="assert" content="Test CSSKeywordValue constructor and attributes error handling" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<div id="log"> +<script> +'use strict'; + +test(() => { + assert_throws(new TypeError(), () => new CSSKeywordValue('')); +}, 'Constructing CSSKeywordValue with an empty string throws a TypeError'); + +test(() => { + let result = new CSSKeywordValue('lemon'); + assert_throws(new TypeError(), () => result.value = ''); + assert_equals(result.value, 'lemon'); +}, 'Updating CSSKeywordValue.value with an empty string throws a TypeError'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html new file mode 100644 index 00000000000..fe163681ee9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html @@ -0,0 +1,40 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSSKeywordValue</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#csskeywordvalue"> +<meta name="assert" content="Test CSSKeywordValue constructor and attributes" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<div id="log"> +<script> +'use strict'; + +const gTestArguments = [ + { keyword: 'initial', description: 'a CSS wide keyword' }, + { keyword: 'auto', description: 'a CSS keyword' }, + { keyword: 'lemon', description: 'an unsupported CSS keyword' }, + { keyword: '3! + 4@', description: 'a string containing multiple tokens' }, + { keyword: '☺', description: 'a unicode string' }, +]; + +for (const {keyword, description} of gTestArguments) { + test(() => { + const result = new CSSKeywordValue(keyword); + + assert_not_equals(result, null, + 'A CSSKeywordValue should be created'); + assert_equals(result.value, keyword, + 'Value attribute should be same as passed in the constructor'); + }, 'CSSKeywordValue can be constructed from ' + description); + + test(() => { + let result = new CSSKeywordValue('auto'); + result.value = keyword; + + assert_equals(result.value, keyword, + 'Value attribute should be same as passed in the setter'); + }, 'CSSKeywordValue.value can be updated to ' + description); +} + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html new file mode 100644 index 00000000000..0ea8632ce48 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<title>CSSPositionValue IDL</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#positionvalue-objects"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script type="text/plain" id="idl"> +[Constructor(CSSNumericValue x, CSSNumericValue y)] +interface CSSPositionValue : CSSStyleValue { + attribute CSSNumericValue x; + attribute CSSNumericValue y; +}; +</script> +<script> +'use strict'; +const idlArray = new IdlArray(); +idlArray.add_untested_idls('interface CSSStyleValue { stringifier; };'); +idlArray.add_untested_idls('interface CSSNumericValue : CSSStyleValue { };'); +idlArray.add_idls(document.getElementById('idl').textContent); +idlArray.add_objects({ + CSSPositionValue: ['new CSSPositionValue(new CSSUnitValue(0, "px"), new CSSUnitValue(0, "px"))'] +}); +idlArray.test(); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html new file mode 100644 index 00000000000..d2a68e7d001 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html @@ -0,0 +1,71 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Computed StylePropertyMap tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#computed-stylepropertymapreadonly-objects"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<style>#target { height: 10px; --foo: auto; }</style> +<div style="width: 50px"> + <div id="target" style="top: 5px; --bar: 5; width: 50%;"></div> +</div> +<script> +'use strict'; + +const target = document.getElementById('target'); +const styleMap = target.computedStyleMap(); + +// FIXME(crbug.com/788904): Test currently fails because the 'content' property returns +// incorrect initial CSS value. +test(() => { + const computedStyle = [...getComputedStyle(target)].sort(); + const properties = styleMap.getProperties(); + + // Two extra entries for custom properties + assert_equals(properties.length, computedStyle.length + 2); + for (let i = 0; i < computedStyle.length; i++) { + assert_equals(properties[i], computedStyle[i]); + assert_not_equals(styleMap.get(computedStyle[i]), null); + assert_not_equals(styleMap.getAll(computedStyle[i]).length, 0); + assert_true(styleMap.has(computedStyle[i])); + } +}, 'Computed StylePropertyMap contains every CSS property'); + +test(() => { + const result = styleMap.get('height'); + assert_style_value_equals(result, CSS.px(10)); +}, 'Computed StylePropertyMap contains CSS property declarations in style rules'); + +test(() => { + const result = styleMap.get('--foo'); + assert_style_value_equals(result, new CSSUnparsedValue(' auto')); +}, 'Computed StylePropertyMap contains custom property declarations in style rules'); + +test(() => { + const result = styleMap.get('top'); + assert_style_value_equals(result, CSS.px(5)); +}, 'Computed StylePropertyMap contains CSS property declarations in inline styles'); + +test(() => { + const result = styleMap.get('--bar'); + assert_style_value_equals(result, new CSSUnparsedValue(' 5')); +}, 'Computed StylePropertyMap contains custom property declarations in inline rules'); + +test(() => { + const computedStyle = getComputedStyle(target); + assert_equals(computedStyle.width, '25px'); + + const result = styleMap.get('width'); + assert_style_value_equals(result, CSS.percent(50)); +}, 'Computed StylePropertyMap contains computed values and not resolved values'); + +test(t => { + let target = createDivWithStyle(t, 'width: 10px'); + const styleMap = target.attributeStyleMap; + assert_style_value_equals(styleMap.get('width'), CSS.px(10)); + + target.style.width = '20px'; + assert_style_value_equals(styleMap.get('width'), CSS.px(20)); +}, 'Computed StylePropertyMap is live'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get.tentative.html new file mode 100644 index 00000000000..98a519ad827 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get.tentative.html @@ -0,0 +1,42 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.get tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#get-a-value-from-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createComputedStyleMap(t); + assert_throws(new TypeError(), () => styleMap.get('lemon')); +}, 'Calling StylePropertyMap.get with an unsupported property throws a TypeError'); + +test(t => { + const styleMap = createComputedStyleMap(t, '--foo: auto'); + assert_equals(styleMap.get('--Foo'), null); +}, 'Calling StylePropertyMap.get with a custom property not in the property model returns null'); + +test(t => { + const styleMap = createComputedStyleMap(t, 'width: 10px; height: 20px'); + assert_style_value_equals(styleMap.get('width'), CSS.px(10)); +}, 'Calling StylePropertyMap.get with a valid property returns the correct entry'); + +test(t => { + const styleMap = createComputedStyleMap(t, 'height: 20px; width: 10px;'); + assert_style_value_equals(styleMap.get('wIdTh'), CSS.px(10)); +}, 'StylePropertyMap.get with a valid property in mixed case returns the correct entry'); + +test(t => { + const styleMap = createComputedStyleMap(t, '--foo: auto; --bar: 10px'); + assert_style_value_equals(styleMap.get('--foo'), new CSSUnparsedValue(' auto')); +}, 'Calling StylePropertyMap.get with a valid custom property returns the correct entry'); + +test(t => { + const styleMap = createComputedStyleMap(t, 'width: 10px; transition-duration: 1s, 2s; height: 10px;'); + assert_style_value_equals(styleMap.get('transition-duration'), CSS.s(1)); +}, 'Calling StylePropertyMap.get with a list-valued property returns only the first value'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/getAll.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/getAll.tentative.html new file mode 100644 index 00000000000..cd8dcd0c693 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/getAll.tentative.html @@ -0,0 +1,42 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.getAll tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createComputedStyleMap(t); + assert_throws(new TypeError(), () => styleMap.getAll('lemon')); +}, 'Calling StylePropertyMap.getAll with an unsupported property throws a TypeError'); + +test(t => { + const styleMap = createComputedStyleMap(t, '--foo: auto'); + assert_style_value_array_equals(styleMap.getAll('--Foo'), []); +}, 'Calling StylePropertyMap.getAll with a custom property not in the property model returns an empty list'); + +test(t => { + const styleMap = createComputedStyleMap(t, 'width: 10px; height: 20px'); + assert_style_value_array_equals(styleMap.getAll('width'), [CSS.px(10)]); +}, 'Calling StylePropertyMap.getAll with a valid property returns a single element list with the correct entry'); + +test(t => { + const styleMap = createComputedStyleMap(t, 'height: 20px; width: 10px'); + assert_style_value_array_equals(styleMap.getAll('wIdTh'), [CSS.px(10)]); +}, 'StylePropertyMap.getAll is case-insensitive'); + +test(t => { + const styleMap = createComputedStyleMap(t, '--foo: auto; --bar: 10px'); + assert_style_value_array_equals(styleMap.getAll('--foo'), [new CSSUnparsedValue(' auto')]); +}, 'Calling StylePropertyMap.getAll with a valid custom property returns a single element list with the correct entry'); + +test(t => { + const styleMap = createComputedStyleMap(t, 'width: 10px; transition-duration: 1s, 2s; height: 20px'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); +}, 'Calling StylePropertyMap.getAll with a list-valued property returns all the values'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/getProperties.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/getProperties.tentative.html new file mode 100644 index 00000000000..3c63c918697 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/getProperties.tentative.html @@ -0,0 +1,18 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.getProperties tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-getproperties"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createComputedStyleMap(t, '--A: A; width: 0px; --C: C; transition-duration: 1s, 2s; color: red; --B: B;'); + const expectedProperties = [...getComputedStyle(document.body)].sort().concat('--A', '--B', '--C'); + assert_array_equals(styleMap.getProperties(), expectedProperties); +}, 'StylePropertyMap.getProperties returns property names in correct order'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/has.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/has.tentative.html new file mode 100644 index 00000000000..6992689caaf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/has.tentative.html @@ -0,0 +1,32 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.has tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#check-if-stylepropertymap-has-a-property"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createComputedStyleMap(t); + assert_throws(new TypeError(), () => styleMap.has('lemon')); +}, 'Calling StylePropertyMap.has with an unsupported property throws a TypeError'); + +const gTestCases = [ + { property: '--Foo', expected: false, desc: 'a custom property not in the property model' }, + { property: 'width', expected: true, desc: 'a valid property' }, + { property: 'wIdTh', expected: true, desc: 'a valid property in mixed case' }, + { property: '--foo', expected: true, desc: 'a valid custom property' }, + { property: 'transition-duration', expected: true, desc: 'a valid list-valued property' }, +]; + +for (const {property, expected, desc} of gTestCases) { + test(t => { + const styleMap = createComputedStyleMap(t, 'width: 10px; --foo: auto; transition-duration: 1s, 2s'); + assert_equals(styleMap.has(property), expected); + }, 'Calling StylePropertyMap.has with ' + desc + ' returns ' + expected); +} + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/iterable.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/iterable.tentative.html new file mode 100644 index 00000000000..07d59d82995 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/iterable.tentative.html @@ -0,0 +1,42 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap iterable tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#the-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +function findInStyleMap(styleMap, property) { + const index = [...styleMap.keys()].indexOf(property); + if (index == -1) + return null; + return [...styleMap.values()][index]; +} + +test(t => { + const styleMap = createComputedStyleMap(t, '--A: A; width: 10px; --C: C; transition-duration: 1s, 2s; color: red; --B: B;'); + const expectedKeys = [...getComputedStyle(document.body)].sort().concat('--A', '--B', '--C'); + assert_array_equals([...styleMap.keys()], expectedKeys); +}, 'StylePropertyMap iterates properties in correct order'); + +test(t => { + const styleMap = createComputedStyleMap(t, 'width: 10px; transition-duration: 1s, 2s; height: 20px'); + assert_style_value_equals(findInStyleMap(styleMap, 'width'), CSS.px(10)); +}, 'StylePropertyMap iterator returns CSS properties with the correct CSSStyleValue'); + +test(t => { + const styleMap = createComputedStyleMap(t, 'width: 10px; transition-duration: 1s, 2s; height: 20px'); + assert_style_value_array_equals(findInStyleMap(styleMap, 'transition-duration'), [CSS.s(1), CSS.s(2)]); +}, 'StylePropertyMap iterator returns list-valued properties with the correct CSSStyleValue'); + +test(t => { + const styleMap = createComputedStyleMap(t, '--A: A; --C: C; color: red; --B: B;'); + assert_style_value_equals(findInStyleMap(styleMap, '--A'), new CSSUnparsedValue(' A')); + assert_style_value_equals(findInStyleMap(styleMap, '--B'), new CSSUnparsedValue(' B')); + assert_style_value_equals(findInStyleMap(styleMap, '--C'), new CSSUnparsedValue(' C')); +}, 'StylePropertyMap iterator returns custom properties with the correct CSSStyleValue'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html new file mode 100644 index 00000000000..ce18b80faaf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html @@ -0,0 +1,61 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.append tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#append-to-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +const gInvalidTestCases = [ + { property: 'lemon', values: ['ade'], desc: 'an unsupported property name' }, + { property: null, values: ['foo'], desc: 'an null property name' }, + { property: 'width', values: ['10px'], desc: 'a property that is not list valued' }, + { property: 'transition-duration', values: [CSS.px(10)], desc: 'an invalid CSSStyleValue' }, + { property: 'transition-duration', values: ['10px'], desc: 'an invalid String value' }, + { property: 'transition-duration', values: [CSS.s(1), '10px', CSS.px(10)], desc: 'a mix of valid and invalid values' }, +]; + +for (const {property, values, desc} of gInvalidTestCases) { + test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.append(property, ...values)); + }, 'Calling StylePropertyMap.append with ' + desc + ' throws TypeError'); +} + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.append('transition-duration', CSS.s(1), '2s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), + [CSS.s(1), CSS.s(2)]); + + styleMap.append('transition-duration', '3s', CSS.s(4)); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), + [CSS.s(1), CSS.s(2), CSS.s(3), CSS.s(4)]); +}, 'Appending a list-valued property with CSSStyleValue or String updates its values'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.append('transition-duration', '1s, 2s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), + [CSS.s(1), CSS.s(2)]); + + styleMap.append('transition-duration', '3s, 4s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), + [CSS.s(1), CSS.s(2), CSS.s(3), CSS.s(4)]); +}, 'Appending a list-valued property with list-valued string updates its values'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, 'transition-duration: 5s, 10s'); + + styleMap.append('tRaNsItIoN-dUrAtIoN', '1s', CSS.s(2)); + const result = styleMap.getAll('transition-duration'); + assert_style_value_array_equals(result, + [CSS.s(5), CSS.s(10), CSS.s(1), CSS.s(2)]); +}, 'StylePropertyMap.append is case-insensitive'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html new file mode 100644 index 00000000000..96c1e3e8ff6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html @@ -0,0 +1,76 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Declared StylePropertyMap tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#declared-stylepropertymap-objects"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<style> +div { + height: 10px; + width: 50%; + width: 'lemon'; + --foo: auto; + transition-duration: 1s, 2s; + color: 10; +} + +#target { + height: 20px; + --foo: 1s; + width: 10%; +} +</style> +<div style="width: 50px"> + <div id="target" style="top: 5px; --bar: auto;"></div> +</div> +<script> +'use strict'; + +const target = document.getElementById('target'); +const styleMap = document.styleSheets[0].rules[0].attributeStyleMap; + +test(() => { + const properties = styleMap.getProperties(); + assert_array_equals(properties, ['height', 'transition-duration', 'width', '--foo']); +}, 'Declared StylePropertyMap only contains properties in the style rule'); + +test(() => { + assert_style_value_equals(styleMap.get('height'), CSS.px(10)); +}, 'Declared StylePropertyMap contains CSS property declarations in style rules'); + +test(() => { + assert_equals(styleMap.get('top'), null); + assert_equals(styleMap.get('--bar'), null); +}, 'Declared StylePropertyMap does not contain inline styles'); + +test(() => { + assert_style_value_equals(styleMap.get('--foo'), new CSSUnparsedValue(' auto')); +}, 'Declared StylePropertyMap contains custom property declarations'); + +test(() => { + assert_equals(styleMap.get('color'), null); +}, 'Declared StylePropertyMap does not contain properties with invalid values'); + +test(() => { + assert_style_value_equals(styleMap.get('width'), CSS.percent(50)); +}, 'Declared StylePropertyMap contains properties with their last valid value'); + +test(() => { + const style = document.createElement('style'); + document.head.appendChild(style); + + style.sheet.insertRule('.test { width: 10px; }'); + let rule = style.sheet.rules[0]; + + let styleMap = rule.attributeStyleMap; + assert_style_value_equals(styleMap.get('width'), CSS.px(10)); + + rule.style.width = '20px'; + assert_style_value_equals(styleMap.get('width'), CSS.px(20)); + + styleMap.set('width', CSS.px(30)); + assert_equals(rule.cssText, '.test { width: 30px; }'); +}, 'Declared StylePropertyMap is live'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/get.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/get.tentative.html new file mode 100644 index 00000000000..e50fb6ea9ce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/get.tentative.html @@ -0,0 +1,47 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.get tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#get-a-value-from-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createDeclaredStyleMap(t); + assert_throws(new TypeError(), () => styleMap.get('lemon')); +}, 'Calling StylePropertyMap.get with an unsupported property throws a TypeError'); + +test(t => { + const styleMap = createDeclaredStyleMap(t); + assert_equals(styleMap.get('height'), null); +}, 'Calling StylePropertyMap.get with a property not in the property model returns null'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, '--foo: auto'); + assert_equals(styleMap.get('--Foo'), null); +}, 'Calling StylePropertyMap.get with a custom property not in the property model returns null'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, 'width: 10px; height: 20px'); + assert_style_value_equals(styleMap.get('width'), CSS.px(10)); +}, 'Calling StylePropertyMap.get with a valid property returns the correct entry'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, 'height: 20px; width: 10px;'); + assert_style_value_equals(styleMap.get('wIdTh'), CSS.px(10)); +}, 'StylePropertyMap.get with a valid property in mixed case returns the correct entry'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, '--foo: auto; --bar: 10px'); + assert_style_value_equals(styleMap.get('--foo'), new CSSUnparsedValue(' auto')); +}, 'Calling StylePropertyMap.get with a valid custom property returns the correct entry'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, 'width: 10px; transition-duration: 1s, 2s; height: 10px;'); + assert_style_value_equals(styleMap.get('transition-duration'), CSS.s(1)); +}, 'Calling StylePropertyMap.get with a list-valued property returns only the first value'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/getAll.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/getAll.tentative.html new file mode 100644 index 00000000000..5fe635c7134 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/getAll.tentative.html @@ -0,0 +1,47 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.getAll tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createDeclaredStyleMap(t); + assert_throws(new TypeError(), () => styleMap.getAll('lemon')); +}, 'Calling StylePropertyMap.getAll with an unsupported property throws a TypeError'); + +test(t => { + const styleMap = createDeclaredStyleMap(t); + assert_style_value_array_equals(styleMap.getAll('height'), []); +}, 'Calling StylePropertyMap.getAll with a property not in the property model returns an empty list'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, '--foo: auto'); + assert_style_value_array_equals(styleMap.getAll('--Foo'), []); +}, 'Calling StylePropertyMap.getAll with a custom property not in the property model returns an empty list'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, 'width: 10px; height: 20px'); + assert_style_value_array_equals(styleMap.getAll('width'), [CSS.px(10)]); +}, 'Calling StylePropertyMap.getAll with a valid property returns a single element list with the correct entry'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, 'height: 20px; width: 10px'); + assert_style_value_array_equals(styleMap.getAll('wIdTh'), [CSS.px(10)]); +}, 'StylePropertyMap.getAll is case-insensitive'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, '--foo: auto; --bar: 10px'); + assert_style_value_array_equals(styleMap.getAll('--foo'), [new CSSUnparsedValue(' auto')]); +}, 'Calling StylePropertyMap.getAll with a valid custom property returns a single element list with the correct entry'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, 'width: 10px; transition-duration: 1s, 2s; height: 20px'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); +}, 'Calling StylePropertyMap.getAll with a list-valued property returns all the values'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/getProperties.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/getProperties.tentative.html new file mode 100644 index 00000000000..0f59a60c002 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/getProperties.tentative.html @@ -0,0 +1,23 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.getProperties tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-getproperties"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createDeclaredStyleMap(t, ''); + assert_array_equals(styleMap.getProperties(), []); +}, 'Calling StylePropertyMap.getProperties on an empty property model returns a zero-length array'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, '--A: A; width: 0px; --C: C; transition-duration: 1s, 2s; color: red; --B: B;'); + assert_array_equals(styleMap.getProperties(), + ['color', 'transition-duration', 'width', '--A', '--B', '--C']); +}, 'StylePropertyMap.getProperties returns CSS properties in alphabetical order then custom properties by codepoint'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/has.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/has.tentative.html new file mode 100644 index 00000000000..7304f802d84 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/has.tentative.html @@ -0,0 +1,33 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.has tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#check-if-stylepropertymap-has-a-property"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createDeclaredStyleMap(t); + assert_throws(new TypeError(), () => styleMap.has('lemon')); +}, 'Calling StylePropertyMap.has with an unsupported property throws a TypeError'); + +const gTestCases = [ + { property: 'height', expected: false, desc: 'a property not in the property model' }, + { property: '--Foo', expected: false, desc: 'a custom property not in the property model' }, + { property: 'width', expected: true, desc: 'a valid property' }, + { property: 'wIdTh', expected: true, desc: 'a valid property in mixed case' }, + { property: '--foo', expected: true, desc: 'a valid custom property' }, + { property: 'transition-duration', expected: true, desc: 'a valid list-valued property' }, +]; + +for (const {property, expected, desc} of gTestCases) { + test(t => { + const styleMap = createDeclaredStyleMap(t, 'width: 10px; --foo: auto; transition-duration: 1s, 2s'); + assert_equals(styleMap.has(property), expected); + }, 'Calling StylePropertyMap.has with ' + desc + ' returns ' + expected); +} + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/iterable.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/iterable.tentative.html new file mode 100644 index 00000000000..be61e2520f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/iterable.tentative.html @@ -0,0 +1,51 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap iterable tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#the-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createDeclaredStyleMap(t, ''); + assert_array_equals([...styleMap.entries()], []); +}, 'Iterating over an empty StylePropertyMap gives a zero-length array'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, '--A: A; width: 10px; --C: C; transition-duration: 1s, 2s; color: red; --B: B;'); + assert_array_equals([...styleMap.keys()], + ['color', 'transition-duration', 'width', '--A', '--B', '--C']); +}, 'StylePropertyMap iterates properties in correct order'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, 'height: 5px; width: 10px;'); + const keys = [...styleMap.keys()], values = [...styleMap.values()]; + + assert_array_equals(keys, ['height', 'width']); + assert_style_value_array_equals(values, [CSS.px(5), CSS.px(10)]); +}, 'StylePropertyMap iterator returns CSS properties with the correct CSSStyleValue'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, 'transition-duration: 1s, 2s'); + const keys = [...styleMap.keys()], values = [...styleMap.values()]; + + assert_array_equals(keys, ['transition-duration']); + assert_style_value_array_equals(values[0], [CSS.s(1), CSS.s(2)]); +}, 'StylePropertyMap iterator returns list-valued properties with the correct CSSStyleValue'); + +test(t => { + const styleMap = createDeclaredStyleMap(t, '--A: A; --B: B; --C: C'); + const keys = [...styleMap.keys()], values = [...styleMap.values()]; + + assert_array_equals(keys, ['--A', '--B', '--C']); + assert_style_value_array_equals(values, [ + new CSSUnparsedValue(' A'), + new CSSUnparsedValue(' B'), + new CSSUnparsedValue(' C'), + ]) +}, 'StylePropertyMap iterator returns custom properties with the correct CSSStyleValue'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/set.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/set.tentative.html new file mode 100644 index 00000000000..fe4cced258f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/set.tentative.html @@ -0,0 +1,81 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.set</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#set-a-value-on-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +const gInvalidTestCases = [ + { property: 'lemon', values: ['ade'], desc: 'an unsupported property name' }, + { property: null, values: ['foo'], desc: 'an null property name' }, + { property: 'width', values: [CSS.deg(0)], desc: 'an invalid CSSStyleValue' }, + { property: 'width', values: ['10s'], desc: 'an invalid String' }, +]; + +for (const {property, values, desc} of gInvalidTestCases) { + test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.set(property, ...values)); + }, 'Setting a StylePropertyMap with ' + desc + ' throws TypeError'); +} + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.set('width', CSS.px(10), CSS.px(10))); +}, 'Setting a non list-valued property with multiple arguments throws TypeError'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.set('width', '1s, 2s')); +}, 'Setting a non list-valued property with list-valued string throws TypeError'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.set('width', CSS.px(10)); + assert_style_value_array_equals(styleMap.get('width'), CSS.px(10)); + + styleMap.set('width', '20px'); + assert_style_value_array_equals(styleMap.get('width'), CSS.px(20)); +}, 'Setting a property with CSSStyleValue or String updates its value'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.set('transition-duration', CSS.s(1), '2s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); + + styleMap.set('transition-duration', '3s', CSS.s(4)); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(3), CSS.s(4)]); +}, 'Setting a list-valued property with CSSStyleValue or String updates its values'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.set('transition-duration', '1s, 2s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); +}, 'Setting a list-valued property with a list-valued string updates its value'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.set('--foo', new CSSUnparsedValue('auto')); + assert_style_value_array_equals(styleMap.get('--foo'), new CSSUnparsedValue('auto')); + + styleMap.set('--foo', '20px'); + assert_style_value_array_equals(styleMap.get('--foo'), new CSSUnparsedValue('20px')); +}, 'Setting a custom property with CSSStyleValue or String updates its value'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, 'transition-duration: 5s, 10s'); + + styleMap.set('tRaNsItIoN-dUrAtIoN', '1s', CSS.s(2)); + const result = styleMap.getAll('transition-duration'); + assert_style_value_array_equals(result, [CSS.s(1), CSS.s(2)]); +}, 'StylePropertyMap.set is case-insensitive'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/test.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/test.tentative.html new file mode 100644 index 00000000000..c171769dc17 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/test.tentative.html @@ -0,0 +1,24 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Declared StylePropertyMap tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#declared-stylepropertymap-objects"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<style> +#target { width: 100px; height: 100px; background: red; } +</style> +<body> +<div id="target"> +<script> +'use strict'; + +test(() => { + let rule = document.styleSheets[0].rules[0]; + rule.attributeStyleMap.set('width', CSS.px(200)); + assert_equals(getComputedStyle(target).width, '200px') + rule.attributeStyleMap.set('width', CSS.px(150)); + assert_equals(getComputedStyle(target).width, '150px') +}); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/update.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/update.tentative.html new file mode 100644 index 00000000000..a5ee95e66de --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/update.tentative.html @@ -0,0 +1,88 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.update tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#update-a-value-in-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +const gInvalidTestCases = [ + { property: 'lemon', value: 'ade', desc: 'an unsupported property name' }, + { property: null, value: 'foo', desc: 'an null property name' }, + { property: 'width', value: CSS.deg(0), desc: 'an invalid CSSStyleValue' }, + { property: 'width', value: '10px', desc: 'a String' }, +]; + +for (const {property, value, desc} of gInvalidTestCases) { + test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.update(property, () => value)); + }, 'Updating a StylePropertyMap with ' + desc + ' throws TypeError'); +} + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.update('width', () => CSS.px(10)); + assert_style_value_array_equals(styleMap.get('width'), CSS.px(10)); + + styleMap.update('width', () => CSS.px(20)); + assert_style_value_array_equals(styleMap.get('width'), CSS.px(20)); +}, 'Updating a property with CSSStyleValue updates its value'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.update('transition-duration', () => CSS.s(1)); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1)]); + + styleMap.update('transition-duration', () => CSS.s(2)); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(2)]); +}, 'Updating a list-valued property with CSSStyleValue updates its value'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + + styleMap.update('--foo', () => new CSSUnparsedValue('auto')); + assert_style_value_array_equals(styleMap.get('--foo'), new CSSUnparsedValue('auto')); + + styleMap.update('--foo', () => new CSSUnparsedValue('20px')); + assert_style_value_array_equals(styleMap.get('--foo'), new CSSUnparsedValue('20px')); +}, 'Updating a custom property with CSSStyleValue updates its value'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, ''); + styleMap.update('width', oldValue => { + assert_equals(oldValue, null); + return CSS.px(10); + }); +}, 'Calling StylePropertyMap.update on an empty property model calls update function with null'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, 'width: 10px'); + styleMap.update('width', oldValue => { + assert_style_value_equals(oldValue, CSS.px(10)); + return CSS.px(20); + }); +}, 'Calling StylePropertyMap.update on an existing property calls update function with old value'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, 'transition-duration: 1s, 2s'); + styleMap.update('transition-duration', oldValue => { + assert_style_value_equals(oldValue, CSS.s(1)); + return CSS.s(2); + }); +}, 'Calling StylePropertyMap.update on an existing list-valued property calls update function with first value'); + +test(t => { + let styleMap = createDeclaredStyleMap(t, 'width: 10px'); + + styleMap.update('wIdTh', () => CSS.px(20)); + const result = styleMap.get('width'); + assert_style_value_equals(result, CSS.px(20)); +}, 'StylePropertyMap.update is case-insensitive'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/append.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/append.tentative.html new file mode 100644 index 00000000000..9573b7967c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/append.tentative.html @@ -0,0 +1,56 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.append tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#append-to-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +const gInvalidTestCases = [ + { property: 'lemon', values: ['ade'], desc: 'an unsupported property name' }, + { property: null, values: ['foo'], desc: 'an null property name' }, + { property: 'width', values: ['10px'], desc: 'a property that is not list valued' }, + { property: 'transition-duration', values: [CSS.px(10)], desc: 'an invalid CSSStyleValue' }, + { property: 'transition-duration', values: ['10px'], desc: 'an invalid String value' }, + { property: 'transition-duration', values: [CSS.s(1), '10px', CSS.px(10)], desc: 'a mix of valid and invalid values' }, +]; + +for (const {property, values, desc} of gInvalidTestCases) { + test(t => { + let styleMap = createInlineStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.append(property, ...values)); + }, 'Calling StylePropertyMap.append with ' + desc + ' throws TypeError'); +} + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.append('transition-duration', CSS.s(1), '2s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); + + styleMap.append('transition-duration', '3s', CSS.s(4)); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2), CSS.s(3), CSS.s(4)]); +}, 'Appending a list-valued property with CSSStyleValue or String updates its values'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.append('transition-duration', '1s, 2s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); + + styleMap.append('transition-duration', '3s, 4s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2), CSS.s(3), CSS.s(4)]); +}, 'Appending a list-valued property with list-valued string updates its values'); + +test(t => { + let styleMap = createInlineStyleMap(t, 'transition-duration: 5s, 10s'); + + styleMap.append('tRaNsItIoN-dUrAtIoN', '1s', CSS.s(2)); + const result = styleMap.getAll('transition-duration'); + assert_style_value_array_equals(result, [CSS.s(5), CSS.s(10), CSS.s(1), CSS.s(2)]); +}, 'StylePropertyMap.append is case-insensitive'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html new file mode 100644 index 00000000000..1f6ec74aad7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html @@ -0,0 +1,41 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.delete tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#delete-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.delete('lemon')); + assert_throws(new TypeError(), () => styleMap.delete(null)); +}, 'Calling StylePropertyMap.delete with an unsupported property name throws a TypeError'); + +test(t => { + const styleMap = createInlineStyleMap(t, ''); + assert_false(styleMap.has('width')); + styleMap.delete('width'); + assert_false(styleMap.has('width')); +}, 'Deleting a property not in a StylePropertyMap is a no-op'); + +const gTestCases = [ + { style: 'width: 10px', property: 'width', desc: 'a property' }, + { style: '--foo: auto', property: '--foo', desc: 'a custom property' }, + { style: 'transition-duration: 1s, 2s, 3s', property: 'transition-duration', desc: 'a list-valued property' }, + { style: 'width: 10px', property: 'wIdTh', desc: 'a mixed-case property' }, +]; + +for (const {style, property, desc} of gTestCases) { + test(t => { + const styleMap = createInlineStyleMap(t, style); + assert_true(styleMap.has(property)); + styleMap.delete(property); + assert_false(styleMap.has(property)); + }, 'Deleting ' + desc + ' in the property model removes it from the property model'); +} + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/get.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/get.tentative.html new file mode 100644 index 00000000000..6494a26d1bf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/get.tentative.html @@ -0,0 +1,47 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.get tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#get-a-value-from-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createInlineStyleMap(t); + assert_throws(new TypeError(), () => styleMap.get('lemon')); +}, 'Calling StylePropertyMap.get with an unsupported property throws a TypeError'); + +test(t => { + const styleMap = createInlineStyleMap(t); + assert_equals(styleMap.get('height'), null); +}, 'Calling StylePropertyMap.get with a property not in the property model returns null'); + +test(t => { + const styleMap = createInlineStyleMap(t, '--foo: auto'); + assert_equals(styleMap.get('--Foo'), null); +}, 'Calling StylePropertyMap.get with a custom property not in the property model returns null'); + +test(t => { + const styleMap = createInlineStyleMap(t, 'width: 10px; height: 20px'); + assert_style_value_equals(styleMap.get('width'), CSS.px(10)); +}, 'Calling StylePropertyMap.get with a valid property returns the correct entry'); + +test(t => { + const styleMap = createInlineStyleMap(t, 'height: 20px; width: 10px;'); + assert_style_value_equals(styleMap.get('wIdTh'), CSS.px(10)); +}, 'StylePropertyMap.get with a valid property in mixed case returns the correct entry'); + +test(t => { + const styleMap = createInlineStyleMap(t, '--foo: auto; --bar: 10px'); + assert_style_value_equals(styleMap.get('--foo'), new CSSUnparsedValue(' auto')); +}, 'Calling StylePropertyMap.get with a valid custom property returns the correct entry'); + +test(t => { + const styleMap = createInlineStyleMap(t, 'width: 10px; transition-duration: 1s, 2s; height: 10px;'); + assert_style_value_equals(styleMap.get('transition-duration'), CSS.s(1)); +}, 'Calling StylePropertyMap.get with a list-valued property returns only the first value'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/getAll.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/getAll.tentative.html new file mode 100644 index 00000000000..62cbec37c1f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/getAll.tentative.html @@ -0,0 +1,47 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.getAll tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createInlineStyleMap(t); + assert_throws(new TypeError(), () => styleMap.getAll('lemon')); +}, 'Calling StylePropertyMap.getAll with an unsupported property throws a TypeError'); + +test(t => { + const styleMap = createInlineStyleMap(t); + assert_style_value_array_equals(styleMap.getAll('height'), []); +}, 'Calling StylePropertyMap.getAll with a property not in the property model returns an empty list'); + +test(t => { + const styleMap = createInlineStyleMap(t, '--foo: auto'); + assert_style_value_array_equals(styleMap.getAll('--Foo'), []); +}, 'Calling StylePropertyMap.getAll with a custom property not in the property model returns an empty list'); + +test(t => { + const styleMap = createInlineStyleMap(t, 'width: 10px; height: 20px'); + assert_style_value_array_equals(styleMap.getAll('width'), [CSS.px(10)]); +}, 'Calling StylePropertyMap.getAll with a valid property returns a single element list with the correct entry'); + +test(t => { + const styleMap = createInlineStyleMap(t, 'height: 20px; width: 10px'); + assert_style_value_array_equals(styleMap.getAll('wIdTh'), [CSS.px(10)]); +}, 'StylePropertyMap.getAll is case-insensitive'); + +test(t => { + const styleMap = createInlineStyleMap(t, '--foo: auto; --bar: 10px'); + assert_style_value_array_equals(styleMap.getAll('--foo'), [new CSSUnparsedValue(' auto')]); +}, 'Calling StylePropertyMap.getAll with a valid custom property returns a single element list with the correct entry'); + +test(t => { + const styleMap = createInlineStyleMap(t, 'width: 10px; transition-duration: 1s, 2s; height: 20px'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); +}, 'Calling StylePropertyMap.getAll with a list-valued property returns all the values'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/getProperties.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/getProperties.tentative.html new file mode 100644 index 00000000000..a6dfade280d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/getProperties.tentative.html @@ -0,0 +1,23 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.getProperties tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-getproperties"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createInlineStyleMap(t, ''); + assert_array_equals(styleMap.getProperties(), []); +}, 'Calling StylePropertyMap.getProperties on an empty property model returns a zero-length array'); + +test(t => { + const styleMap = createInlineStyleMap(t, '--A: A; width: 0px; --C: C; transition-duration: 1s, 2s; color: red; --B: B;'); + assert_array_equals(styleMap.getProperties(), + ['color', 'transition-duration', 'width', '--A', '--B', '--C']); +}, 'StylePropertyMap.getProperties returns property names in correct order'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/has.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/has.tentative.html new file mode 100644 index 00000000000..1f4e4f90bbf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/has.tentative.html @@ -0,0 +1,33 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.has tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#check-if-stylepropertymap-has-a-property"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createInlineStyleMap(t); + assert_throws(new TypeError(), () => styleMap.has('lemon')); +}, 'Calling StylePropertyMap.has with an unsupported property throws a TypeError'); + +const gTestCases = [ + { property: 'height', expected: false, desc: 'a property not in the property model' }, + { property: '--Foo', expected: false, desc: 'a custom property not in the property model' }, + { property: 'width', expected: true, desc: 'a valid property' }, + { property: 'wIdTh', expected: true, desc: 'a valid property in mixed case' }, + { property: '--foo', expected: true, desc: 'a valid custom property' }, + { property: 'transition-duration', expected: true, desc: 'a valid list-valued property' }, +]; + +for (const {property, expected, desc} of gTestCases) { + test(t => { + const styleMap = createInlineStyleMap(t, 'width: 10px; --foo: auto; transition-duration: 1s, 2s'); + assert_equals(styleMap.has(property), expected); + }, 'Calling StylePropertyMap.has with ' + desc + ' returns ' + expected); +} + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/iterable.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/iterable.tentative.html new file mode 100644 index 00000000000..cbf76d8901f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/iterable.tentative.html @@ -0,0 +1,51 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap iterable tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#the-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +test(t => { + const styleMap = createInlineStyleMap(t, ''); + assert_array_equals([...styleMap.entries()], []); +}, 'Iterating over an empty StylePropertyMap gives a zero-length array'); + +test(t => { + const styleMap = createInlineStyleMap(t, '--A: A; width: 10px; --C: C; transition-duration: 1s, 2s; color: red; --B: B;'); + assert_array_equals([...styleMap.keys()], + ['color', 'transition-duration', 'width', '--A', '--B', '--C']); +}, 'StylePropertyMap iterates properties in correct order'); + +test(t => { + const styleMap = createInlineStyleMap(t, 'height: 5px; width: 10px;'); + const keys = [...styleMap.keys()], values = [...styleMap.values()]; + + assert_array_equals(keys, ['height', 'width']); + assert_style_value_array_equals(values, [CSS.px(5), CSS.px(10)]); +}, 'StylePropertyMap iterator returns CSS properties with the correct CSSStyleValue'); + +test(t => { + const styleMap = createInlineStyleMap(t, 'transition-duration: 1s, 2s'); + const keys = [...styleMap.keys()], values = [...styleMap.values()]; + + assert_array_equals(keys, ['transition-duration']); + assert_style_value_array_equals(values[0], [CSS.s(1), CSS.s(2)]); +}, 'StylePropertyMap iterator returns list-valued properties with the correct CSSStyleValue'); + +test(t => { + const styleMap = createInlineStyleMap(t, '--A: A; --B: B; --C: C'); + const keys = [...styleMap.keys()], values = [...styleMap.values()]; + + assert_array_equals(keys, ['--A', '--B', '--C']); + assert_style_value_array_equals(values, [ + new CSSUnparsedValue(' A'), + new CSSUnparsedValue(' B'), + new CSSUnparsedValue(' C'), + ]) +}, 'StylePropertyMap iterator returns custom properties with the correct CSSStyleValue'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/set.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/set.tentative.html new file mode 100644 index 00000000000..dc8ccc57bcc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/set.tentative.html @@ -0,0 +1,81 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.set</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#set-a-value-on-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +const gInvalidTestCases = [ + { property: 'lemon', values: ['ade'], desc: 'an unsupported property name' }, + { property: null, values: ['foo'], desc: 'an null property name' }, + { property: 'width', values: [CSS.deg(0)], desc: 'an invalid CSSStyleValue' }, + { property: 'width', values: ['10s'], desc: 'an invalid String' }, +]; + +for (const {property, values, desc} of gInvalidTestCases) { + test(t => { + let styleMap = createInlineStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.set(property, ...values)); + }, 'Setting a StylePropertyMap with ' + desc + ' throws TypeError'); +} + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.set('width', CSS.px(10), CSS.px(10))); +}, 'Setting a non list-valued property with multiple arguments throws TypeError'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.set('width', '1s, 2s')); +}, 'Setting a non list-valued property with list-valued string throws TypeError'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.set('width', CSS.px(10)); + assert_style_value_array_equals(styleMap.get('width'), CSS.px(10)); + + styleMap.set('width', '20px'); + assert_style_value_array_equals(styleMap.get('width'), CSS.px(20)); +}, 'Setting a property with CSSStyleValue or String updates its value'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.set('transition-duration', CSS.s(1), '2s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); + + styleMap.set('transition-duration', '3s', CSS.s(4)); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(3), CSS.s(4)]); +}, 'Setting a list-valued property with CSSStyleValue or String updates its values'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.set('transition-duration', '1s, 2s'); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1), CSS.s(2)]); +}, 'Setting a list-valued property with a list-valued string updates its value'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.set('--foo', new CSSUnparsedValue('auto')); + assert_style_value_array_equals(styleMap.get('--foo'), new CSSUnparsedValue('auto')); + + styleMap.set('--foo', '20px'); + assert_style_value_array_equals(styleMap.get('--foo'), new CSSUnparsedValue('20px')); +}, 'Setting a custom property with CSSStyleValue or String updates its value'); + +test(t => { + let styleMap = createInlineStyleMap(t, 'transition-duration: 5s, 10s'); + + styleMap.set('tRaNsItIoN-dUrAtIoN', '1s', CSS.s(2)); + const result = styleMap.getAll('transition-duration'); + assert_style_value_array_equals(result, [CSS.s(1), CSS.s(2)]); +}, 'StylePropertyMap.set is case-insensitive'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/update.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/update.tentative.html new file mode 100644 index 00000000000..ac2d83411c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/update.tentative.html @@ -0,0 +1,88 @@ +<!doctype html> +<meta charset="utf-8"> +<title>StylePropertyMap.update tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#update-a-value-in-a-stylepropertymap"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../resources/testhelper.js"></script> +<body> +<script> +'use strict'; + +const gInvalidTestCases = [ + { property: 'lemon', value: 'ade', desc: 'an unsupported property name' }, + { property: null, value: 'foo', desc: 'an null property name' }, + { property: 'width', value: CSS.deg(0), desc: 'an invalid CSSStyleValue' }, + { property: 'width', value: '10px', desc: 'a String' }, +]; + +for (const {property, value, desc} of gInvalidTestCases) { + test(t => { + let styleMap = createInlineStyleMap(t, ''); + assert_throws(new TypeError(), () => styleMap.update(property, () => value)); + }, 'Updating a StylePropertyMap with ' + desc + ' throws TypeError'); +} + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.update('width', () => CSS.px(10)); + assert_style_value_array_equals(styleMap.get('width'), CSS.px(10)); + + styleMap.update('width', () => CSS.px(20)); + assert_style_value_array_equals(styleMap.get('width'), CSS.px(20)); +}, 'Updating a property with CSSStyleValue updates its value'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.update('transition-duration', () => CSS.s(1)); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(1)]); + + styleMap.update('transition-duration', () => CSS.s(2)); + assert_style_value_array_equals(styleMap.getAll('transition-duration'), [CSS.s(2)]); +}, 'Updating a list-valued property with CSSStyleValue updates its value'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + + styleMap.update('--foo', () => new CSSUnparsedValue('auto')); + assert_style_value_array_equals(styleMap.get('--foo'), new CSSUnparsedValue('auto')); + + styleMap.update('--foo', () => new CSSUnparsedValue('20px')); + assert_style_value_array_equals(styleMap.get('--foo'), new CSSUnparsedValue('20px')); +}, 'Updating a custom property with CSSStyleValue updates its value'); + +test(t => { + let styleMap = createInlineStyleMap(t, ''); + styleMap.update('width', oldValue => { + assert_equals(oldValue, null); + return CSS.px(10); + }); +}, 'Calling StylePropertyMap.update on an empty property model calls update function with null'); + +test(t => { + let styleMap = createInlineStyleMap(t, 'width: 10px'); + styleMap.update('width', oldValue => { + assert_style_value_equals(oldValue, CSS.px(10)); + return CSS.px(20); + }); +}, 'Calling StylePropertyMap.update on an existing property calls update function with old value'); + +test(t => { + let styleMap = createInlineStyleMap(t, 'transition-duration: 1s, 2s'); + styleMap.update('transition-duration', oldValue => { + assert_style_value_equals(oldValue, CSS.s(1)); + return CSS.s(2); + }); +}, 'Calling StylePropertyMap.update on an existing list-valued property calls update function with first value'); + +test(t => { + let styleMap = createInlineStyleMap(t, 'width: 10px'); + + styleMap.update('wIdTh', () => CSS.px(20)); + const result = styleMap.get('width'); + assert_style_value_equals(result, CSS.px(20)); +}, 'StylePropertyMap.update is case-insensitive'); + +</script> diff --git a/tests/wpt/web-platform-tests/css/css-values/lh-rlh-on-root-001.html b/tests/wpt/web-platform-tests/css/css-values/lh-rlh-on-root-001.html new file mode 100644 index 00000000000..228da4e3897 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/lh-rlh-on-root-001.html @@ -0,0 +1,86 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Values and Units Test: using lh and rlh units on the root element</title> +<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> +<link rel="help" href="https://drafts.csswg.org/css-values-4/#font-relative-lengths"> +<style> +#measure_me { position: absolute; } +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id=measure_me> </div> + +<script> + function get_root_font_size() { + return parseFloat(window.getComputedStyle(window.document.documentElement).fontSize); + } + function get_root_line_height() { + /* getComputedStyle returns the computed value (not the used value) for the line-height property, + and the computed value of line-height:normal is normal, + so we cannot just query the value fo the proerty directly on the root element. + However the height of an abspos that only contains a single character from the first available font + and doesn't have any ancestor that changes the font-size or line-height property + gives us an indirect way to measure the root line-height in px. + */ + return parseFloat(window.getComputedStyle(document.getElementById("measure_me")).height); + } + + window.document.documentElement.style="font-size: initial; line-height:initial;"; + initial_f_s = get_root_font_size(); + initial_l_h = get_root_line_height(); + + test(function() { + window.document.documentElement.style="font-size: 142px; line-height: 1lh;"; + l_h = get_root_line_height(); + assert_approx_equals( l_h, initial_l_h, 1, "the lh unit on the root element's line-height property uses font metrics corresponding to the initial values of the font or line-height properties"); + }, "lh in line-height on root"); + + test(function() { + window.document.documentElement.style="font-size: 142px; line-height: 1rlh;"; + l_h = get_root_line_height(); + assert_approx_equals( l_h, initial_l_h, 1, "the rlh unit on the root element's line-height property uses font metrics corresponding to the initial values of the font or line-height properties"); + }, "rlh in line-height on root"); + + test(function() { + window.document.documentElement.style="font-size: 1lh; line-height: 142px;"; + f_s = get_root_font_size(); + assert_approx_equals( f_s, initial_f_s, 1, "the lh unit on the root element's font-size property uses font metrics corresponding to the initial values of the font or line-height properties"); + }, "lh in font-size on root"); + + test(function() { + window.document.documentElement.style="font-size: 1rlh; line-height: 142px;"; + f_s = get_root_font_size(); + assert_approx_equals( f_s, initial_f_s, 1, "the rlh unit on the root element's font-size property uses font metrics corresponding to the initial values of the font or line-height properties"); + + }, "rlh in font-size on root"); + + + test(function() { + window.document.documentElement.style="font-size: 142px; line-height: 2lh;"; + l_h = get_root_line_height(); + assert_approx_equals( l_h, initial_l_h * 2, 1, "the lh unit on the root element's line-height property actually works as a unit and doesn't merely cause a fallback that doesn't take the number of units into account"); + }, "2lh in line-height on root"); + + test(function() { + window.document.documentElement.style="font-size: 142px; line-height: 2rlh;"; + l_h = get_root_line_height(); + assert_approx_equals( l_h, initial_l_h * 2, 1, "the rlh unit on the root element's line-height property actually works as a unit and doesn't merely cause a fallback that doesn't take the number of units into account"); + }, "2rlh in line-height on root"); + + test(function() { + window.document.documentElement.style="font-size: 2lh; line-height: 142px;"; + f_s = get_root_font_size(); + assert_approx_equals( f_s, initial_f_s * 2, 1, "the lh unit on the root element's font-size property actually works as a unit and doesn't merely cause a fallback that doesn't take the number of units into account"); + }, "2lh in font-size on root"); + + test(function() { + window.document.documentElement.style="font-size: 2rlh; line-height: 142px;"; + f_s = get_root_font_size(); + assert_approx_equals( f_s, initial_f_s * 2, 1, "the rlh unit on the root element's font-size property actually works as a unit and doesn't merely cause a fallback that doesn't take the number of units into account"); + + }, "2rlh in font-size on root"); + + /*make the test result page readable again*/ + window.document.documentElement.style="font-size: initial; line-height: initial;"; +</script> diff --git a/tests/wpt/web-platform-tests/css/css-values/lh-unit-001.html b/tests/wpt/web-platform-tests/css/css-values/lh-unit-001.html new file mode 100644 index 00000000000..f7a6fc9551b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/lh-unit-001.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Values and Units Test: using lh in line-height</title> +<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> +<link rel="help" href="https://drafts.csswg.org/css-values-4/#font-relative-lengths"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name="assert" content="The lh unit resolves against the parent when used in the line-height property."> +<style> +div { + font-size: 50px; + line-height: 1; + width: 100px; + height: 100px; + background: red; +} +aside { + background: green; + font-size: 42px; /* number doesn't matter, as long as it's neither 100 nor 50 */ + line-height: 2lh; +} + +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> + +<div><aside> </aside></div> diff --git a/tests/wpt/web-platform-tests/css/css-values/lh-unit-002.html b/tests/wpt/web-platform-tests/css/css-values/lh-unit-002.html new file mode 100644 index 00000000000..316637a18a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/lh-unit-002.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Values and Units Test: using lh in font-size</title> +<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> +<link rel="help" href="https://drafts.csswg.org/css-values-4/#font-relative-lengths"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<meta name="assert" content="The lh unit resolves against the parent when used in the font-size property."> +<style> +div { + width: 100px; + height: 100px; + background: red; + line-height: 50px; +} +aside { + background: green; + height: 1em; + line-height: 42px; /* number doesn't matter, as long as it's neither 50 nor 100*/ + font-size: 2lh; +} + +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> + +<div><aside> </aside></div> diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-no-layout-box.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-no-layout-box.html new file mode 100644 index 00000000000..cc67ce76ed9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-no-layout-box.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>cssom-view - Scrolling element with no layout box</title> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scroll"> +<link rel="help" href="https://drafts.csswg.org/cssom-view/#css-layout-box"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div style="display: none"> + <div id="elem"></div> +</div> + +<script> +test(() => { + const elem = document.getElementById('elem'); + elem.scroll(1, 2); + + assert_equals(elem.scrollTop, 0, "scrollTop should be unchanged"); + assert_equals(elem.scrollLeft, 0, "scrollLeft should be unchanged"); +}, "scrolling an element with no CSS layout box should have no effect"); +</script> diff --git a/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-ref.html b/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-ref.html new file mode 100644 index 00000000000..f718ea6abfb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box-ref.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<div style="width: 100px; height: 100px; background-color: green"></div> diff --git a/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box.html b/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box.html new file mode 100644 index 00000000000..563ffdaf1a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/motion/offset-anchor-transform-box-fill-box.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<title>CSS Motion Path: offset-anchor with transform-box: fill-box</title> +<link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-anchor-property"> +<link rel="match" href="offset-anchor-transform-box-fill-box-ref.html"> +<meta name="assert" content="Tests offset-anchor together with a fill-box transform-box"> +<style> +#target { + transform-box: fill-box; + transform-origin: 50% 50%; + offset-anchor: 25% 25%; + offset-path: path("M75,-25v100"); + offset-distance: 50%; +} +</style> +<svg width="400" height="400"> + <rect width="100" height="100" fill="red"/> + <rect id="target" x="150" y="100" width="100" height="100" fill="green"/> +</svg> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001-ref.html new file mode 100644 index 00000000000..5f8bcaf539f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001-ref.html @@ -0,0 +1,25 @@ +<!doctype html> +<title>CSS Test Reference</title> +<meta charset="utf-8"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<style> +.parent { + position: fixed; + top: 0; + left: 0; + display: block; + width: 200px; + height: 200px; + background: yellow; +} + +.child { + position: absolute; + left: 50px; + top: 50px; + width: 100px; + height: 100px; + background: green; +} +</style> +<div class="parent"><div class="child"></div></div> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001.html new file mode 100644 index 00000000000..1edfdb04caa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-001.html @@ -0,0 +1,28 @@ +<!doctype html> +<title>CSS Test: Absolutely positioned children of flex container with CSS align</title> +<meta charset="utf-8"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1386654"> +<link rel="match" href="position-absolute-containing-block-001-ref.html"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<style> +.parent { + position: fixed; + top: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + width: 200px; + height: 200px; + background: yellow; +} + +.child { + position: absolute; + width: 100px; + height: 100px; + background: green; +} +</style> +<div class="parent"><div class="child"></div></div> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002-ref.html new file mode 100644 index 00000000000..90ee38856cc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002-ref.html @@ -0,0 +1,25 @@ +<!doctype html> +<title>CSS Test Reference</title> +<meta charset="utf-8"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<style> +.parent { + position: fixed; + top: 0; + left: 0; + display: block; + width: 200px; + height: 200px; + background: yellow; +} + +.child { + position: absolute; + left: 60px; + top: 60px; + width: 100px; + height: 100px; + background: green; +} +</style> +<div class="parent"><div class="child"></div></div> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002.html new file mode 100644 index 00000000000..aecbf0b4c99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/position-absolute-containing-block-002.html @@ -0,0 +1,36 @@ +<!doctype html> +<title>CSS Test: Absolutely positioned children of flex container with CSS align</title> +<meta charset="utf-8"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox/#abspos-items"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1386654"> +<link rel="match" href="position-absolute-containing-block-002-ref.html"> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<style> +.parent { + position: fixed; + top: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + width: 180px; + height: 180px; + + /* Expand the background area to 200px, without touching the content-box, + which is what flex absolute children should be aligned relative to. */ + border-top: 5px solid yellow; + padding-top: 15px; + border-left: 5px solid yellow; + padding-left: 15px; + + background: yellow; +} + +.child { + position: absolute; + width: 100px; + height: 100px; + background: green; +} +</style> +<div class="parent"><div class="child"></div></div> diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list index bff3a67a796..3e20fefed4f 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list +++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list @@ -213,3 +213,7 @@ == flexbox-single-line-clamp-1.html flexbox-single-line-clamp-1-ref.html == flexbox-single-line-clamp-2.html flexbox-single-line-clamp-2-ref.html == flexbox-single-line-clamp-3.html flexbox-single-line-clamp-3-ref.html + +# Flexbox as an absolute containing block. +== position-absolute-containing-block-001.html position-absolute-containing-block-001-ref.html +== position-absolute-containing-block-002.html position-absolute-containing-block-002-ref.html diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/chrome_android.md b/tests/wpt/web-platform-tests/docs/_running-tests/chrome_android.md new file mode 100644 index 00000000000..f707995033d --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_running-tests/chrome_android.md @@ -0,0 +1,35 @@ +To run WPT on Chrome on an android device, some additional set up is required. +First until we find a better way, we need to root the android device and update +the /etc/hosts file to include + +``` +127.0.0.1 web-platform.test +127.0.0.1 www.web-platform.test +127.0.0.1 www1.web-platform.test +127.0.0.1 www2.web-platform.test +127.0.0.1 xn--n8j6ds53lwwkrqhv28a.web-platform.test +127.0.0.1 xn--lve-6lad.web-platform.test +0.0.0.0 nonexistent-origin.web-platform.test +``` + +Next, we need to start adb and reverse forward the web-platform.tests ports + +``` +adb start-server +``` + +Add any ports that you need based on your config. For example: +``` +adb reverse tcp:8000 tcp:8000 +adb reverse tcp:8001 tcp:8001 +adb reverse tcp:8081 tcp:8081 +adb reverse tcp:8444 tcp:8444 +adb reverse tcp:9001 tcp:9001 +adb reverse tcp:9444 tcp:9444 +``` + +After this, we may run wpt with the `chrome_android` product + +``` +./wpt run chrome_android <test> +``` diff --git a/tests/wpt/web-platform-tests/fetch/security/redirect-to-url-with-credentials.https.html b/tests/wpt/web-platform-tests/fetch/security/redirect-to-url-with-credentials.https.html new file mode 100644 index 00000000000..c5c32d3963e --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/security/redirect-to-url-with-credentials.https.html @@ -0,0 +1,69 @@ +<html> +<header> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/common/get-host-info.sub.js"></script> +</header> +<body> +<script> +var host = get_host_info(); + +var sameOriginImageURL = "/common/redirect.py?location=" + host.HTTPS_ORIGIN_WITH_CREDS + "/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin= " + host.HTTPS_ORIGIN + "%26PNGIMAGE%26ACACredentials=true"; +var imageURL = "/common/redirect.py?location=" + host.HTTPS_REMOTE_ORIGIN_WITH_CREDS + "/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin= " + host.HTTPS_ORIGIN + "%26PNGIMAGE%26ACACredentials=true"; +var frameURL = "/common/redirect.py?location=" + host.HTTPS_REMOTE_ORIGIN_WITH_CREDS + "/common/blank.html"; + +promise_test((test) => { + return fetch(imageURL, {mode: "no-cors"}); +}, "No CORS fetch after a redirect with an URL containing credentials"); + +promise_test((test) => { + return promise_rejects(test, new TypeError, fetch(imageURL, {mode: "cors"})); +}, "CORS fetch after a redirect with a cross origin URL containing credentials"); + +promise_test((test) => { + return fetch(sameOriginImageURL, {mode: "cors"}); +}, "CORS fetch after a redirect with a same origin URL containing credentials"); + +promise_test((test) => { + return new Promise((resolve, reject) => { + var image = new Image(); + image.onload = resolve; + image.onerror = (e) => reject(e); + image.src = imageURL; + }); +}, "Image loading after a redirect with an URL containing credentials"); + +promise_test((test) => { + return new Promise((resolve, reject) => { + var image = new Image(); + image.crossOrigin = "use-credentials"; + image.onerror = resolve; + image.onload = () => reject("Image should not load"); + image.src = imageURL; + }); +}, "CORS Image loading after a redirect with a cross origin URL containing credentials"); + +promise_test((test) => { + return new Promise((resolve, reject) => { + var image = new Image(); + image.crossOrigin = "use-credentials"; + image.onload = resolve; + image.onerror = (e) => reject(e); + image.src = sameOriginImageURL; + }); +}, "CORS Image loading after a redirect with a same origin URL containing credentials"); + +promise_test(async (test) => { + var iframe = document.createElement("iframe"); + document.body.appendChild(iframe); + await new Promise((resolve, reject) => { + iframe.src = frameURL; + iframe.onload = resolve; + iframe.onerror = (e) => reject(e); + test.step_timeout(() => reject("Frame loading timed out"), 5000); + }); + document.body.removeChild(iframe); +}, "Frame loading after a redirect with an URL containing credentials"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/gamepad/idlharness-manual.html b/tests/wpt/web-platform-tests/gamepad/idlharness-manual.html index 3b96073790c..8bb740af724 100644 --- a/tests/wpt/web-platform-tests/gamepad/idlharness-manual.html +++ b/tests/wpt/web-platform-tests/gamepad/idlharness-manual.html @@ -1,78 +1,32 @@ <!doctype html> -<html> -<head> <title>Manual Gamepad IDL tests</title> -<link rel="help" href="https://w3c.github.io/gamepad/#gamepad-interface"> -<link rel="help" href="https://w3c.github.io/gamepad/#gamepadbutton-interface"> -<link rel="help" href="https://w3c.github.io/gamepad/#gamepadevent-interface"> -<link rel="help" href="https://w3c.github.io/gamepad/#navigator-interface-extension"> +<link rel="help" href="https://w3c.github.io/gamepad/"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/WebIDLParser.js"></script> <script src="/resources/idlharness.js"></script> +<p id="instructions">This test requires a gamepad. Connect one and press any button to start the test.</p> <script> -setup({explicit_done: true, explicit_timeout: true}); +"use strict"; + +setup({explicit_timeout: true}); + +promise_test(async t => { + const eventWatcher = new EventWatcher(t, window, "gamepadconnected"); + let e = await eventWatcher.wait_for("gamepadconnected"); + const idl_array = new IdlArray(); + const gamepad_idl = await fetch("/interfaces/gamepad.idl").then(r => r.text()); + + idl_array.add_untested_idls('interface Event {};'); + idl_array.add_untested_idls('interface Navigator {};'); + idl_array.add_idls(gamepad_idl); -addEventListener("gamepadconnected", function (e) { - var idl_array = new IdlArray(); - idl_array.add_untested_idls(document.getElementById("untested_idl").textContent); - idl_array.add_idls(document.getElementById("idl").textContent); idl_array.add_objects({ GamepadEvent: [e], Gamepad: [e.gamepad], GamepadButton: [e.gamepad.buttons[0]], - Navigator: ["navigator"], + Navigator: ["navigator"] }); idl_array.test(); - done(); -}); +}, "Test IDL implementation of Gamepad API"); </script> -</head> -<body> -<pre id="untested_idl" style="display: none"> -interface Navigator { -}; - -interface Event { -}; -</pre> -<pre id="idl" style="display: none"> -interface Gamepad { - readonly attribute DOMString id; - readonly attribute long index; - readonly attribute boolean connected; - readonly attribute DOMHighResTimeStamp timestamp; - readonly attribute GamepadMappingType mapping; - readonly attribute FrozenArray<double> axes; - readonly attribute FrozenArray<GamepadButton> buttons; -}; - -enum GamepadMappingType { - "", - "standard" -}; - -interface GamepadButton { - readonly attribute boolean pressed; - readonly attribute double value; -}; - -[Constructor(DOMString type, optional GamepadEventInit eventInitDict)] -interface GamepadEvent : Event -{ - readonly attribute Gamepad? gamepad; -}; - -dictionary GamepadEventInit : EventInit -{ - Gamepad? gamepad = null; -}; - -partial interface Navigator { - Gamepad[] getGamepads(); -}; -</pre> -<p id="instructions">This test requires a gamepad. Connect one and press any button to start the test.</p> -<div id="log"></div> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/gamepad/idlharness.html b/tests/wpt/web-platform-tests/gamepad/idlharness.html index e78a56be498..833449d72b6 100644 --- a/tests/wpt/web-platform-tests/gamepad/idlharness.html +++ b/tests/wpt/web-platform-tests/gamepad/idlharness.html @@ -1,6 +1,4 @@ <!doctype html> -<html> -<head> <title>Gamepad IDL tests</title> <link rel="help" href="https://w3c.github.io/gamepad/#gamepad-interface"> <link rel="help" href="https://w3c.github.io/gamepad/#gamepadbutton-interface"> @@ -10,61 +8,21 @@ <script src="/resources/testharnessreport.js"></script> <script src="/resources/WebIDLParser.js"></script> <script src="/resources/idlharness.js"></script> -</head> -<body> -<pre id="untested_idl" style="display: none"> -interface Navigator { -}; - -interface Event { -}; -</pre> -<pre id="idl" style="display: none"> -interface Gamepad { - readonly attribute DOMString id; - readonly attribute long index; - readonly attribute boolean connected; - readonly attribute DOMHighResTimeStamp timestamp; - readonly attribute GamepadMappingType mapping; - readonly attribute FrozenArray<double> axes; - readonly attribute FrozenArray<GamepadButton> buttons; -}; - -enum GamepadMappingType { - "", - "standard" -}; - -interface GamepadButton { - readonly attribute boolean pressed; - readonly attribute double value; -}; +<script> +"use strict"; -[Constructor(DOMString type, optional GamepadEventInit eventInitDict)] -interface GamepadEvent : Event -{ - readonly attribute Gamepad? gamepad; -}; +promise_test(async () => { + const idl_array = new IdlArray(); + const gamepad_idl = await fetch("/interfaces/gamepad.idl").then(r => r.text()); -dictionary GamepadEventInit : EventInit -{ - Gamepad? gamepad = null; -}; + idl_array.add_untested_idls('interface Event {};'); + idl_array.add_untested_idls('interface Navigator {};'); + idl_array.add_idls(gamepad_idl); -partial interface Navigator { - sequence<Gamepad?> getGamepads(); -}; -</pre> -<script> -var idl_array = new IdlArray(); -idl_array.add_untested_idls(document.getElementById("untested_idl").textContent); -idl_array.add_idls(document.getElementById("idl").textContent); -idl_array.add_objects({ + idl_array.add_objects({ GamepadEvent: [new GamepadEvent("something")], - Navigator: ["navigator"], + Navigator: ["navigator"] }); -idl_array.test(); + idl_array.test(); +}, "Test IDL implementation of Gamepad API"); </script> -<div id="log"></div> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js index cde23741d68..59cb3e3f5b8 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js +++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js @@ -146,6 +146,25 @@ function runGenericSensorTests(sensorType) { promise_test(async t => { const sensor = new sensorType(); const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]); + sensor.start(); + + await sensorWatcher.wait_for("reading"); + assert_true(sensor.hasReading); + const timestamp = sensor.timestamp; + sensor.stop(); + assert_false(sensor.hasReading); + + sensor.start(); + await sensorWatcher.wait_for("reading"); + assert_true(sensor.hasReading); + assert_greater_than(timestamp, 0); + assert_greater_than(sensor.timestamp, timestamp); + sensor.stop(); + }, `${sensorType.name}: Test that fresh reading is fetched on start()`); + + promise_test(async t => { + const sensor = new sensorType(); + const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]); const visibilityChangeWatcher = new EventWatcher(t, document, "visibilitychange"); sensor.start(); @@ -159,8 +178,69 @@ function runGenericSensorTests(sensorType) { win.close(); sensor.stop(); - assert_array_equals(cachedSensor1, cachedSensor2); + assert_object_equals(cachedSensor1, cachedSensor2); }, `${sensorType.name}: sensor readings can not be fired on the background tab`); + + promise_test(async t => { + const fastSensor = new sensorType({frequency: 30}); + const slowSensor = new sensorType({frequency: 5}); + slowSensor.start(); + + const fastCounter = await new Promise((resolve, reject) => { + let fastCounter = 0; + let slowCounter = 0; + + fastSensor.onreading = () => { + fastCounter++; + } + slowSensor.onreading = () => { + slowCounter++; + if (slowCounter == 1) { + fastSensor.start(); + } else if (slowCounter == 3) { + fastSensor.stop(); + slowSensor.stop(); + resolve(fastCounter); + } + } + fastSensor.onerror = reject; + slowSensor.onerror = reject; + }); + assert_greater_than(fastCounter, 2, + "Fast sensor overtakes the slow one"); + }, `${sensorType.name}: frequency hint works`); + + promise_test(async t => { + // Create a focused editbox inside a cross-origin iframe, + // sensor notification must suspend. + const iframeSrc = 'data:text/html;charset=utf-8,<html><body>' + + '<input type="text" autofocus></body></html>'; + const iframe = document.createElement('iframe'); + iframe.src = encodeURI(iframeSrc); + + const sensor = new sensorType(); + const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]); + sensor.start(); + + await sensorWatcher.wait_for("reading"); + assert_reading_not_null(sensor); + const cachedTimestamp = sensor.timestamp; + const cachedSensor1 = reading_to_array(sensor); + + const iframeWatcher = new EventWatcher(t, iframe, "load"); + document.body.appendChild(iframe); + await iframeWatcher.wait_for("load"); + const cachedSensor2 = reading_to_array(sensor); + assert_array_equals(cachedSensor1, cachedSensor2); + + iframe.remove(); + await sensorWatcher.wait_for("reading"); + const cachedSensor3 = reading_to_array(sensor); + assert_greater_than(sensor.timestamp, cachedTimestamp); + + sensor.stop(); + }, `${sensorType.name}: sensor receives suspend / resume notifications when\ + cross-origin subframe is focused`); } function runGenericSensorInsecureContext(sensorType) { diff --git a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html index 7d5d47fe6c6..9680b875d62 100644 --- a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>GeolocationSensor Feature Policy Test: Disabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 62c5d456f0c..66b7832e45f 100644 --- a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>GeolocationSensor Feature Policy Test: Enabled by attribute redirect on load</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html index 1e5bfb36a2b..5ea2518af63 100644 --- a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html +++ b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>GeolocationSensor Feature Policy Test: Enabled by attribute</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html index afe935efeb0..46ef9b7ce86 100644 --- a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>GeolocationSensor Feature Policy Test: Enabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html index 46be7fba6f6..1694ed00fdf 100644 --- a/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>GeolocationSensor Feature Policy Test: Enabled on self origin</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-disabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-disabled-by-feature-policy.https.html index 70add9b38bd..de4aee2dacc 100644 --- a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-disabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-disabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Gyroscope Feature Policy Test: Disabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 6d8c48645ed..3c831bb7c7e 100644 --- a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy-attribute-redirect-on-load.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Gyroscope Feature Policy Test: Enabled by attribute redirect on load</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html index 07624624ce7..46473c3a9d0 100644 --- a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html +++ b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy-attribute.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Gyroscope Feature Policy Test: Enabled by attribute</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy.https.html index 1f1418b2014..95eee330b39 100644 --- a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Gyroscope Feature Policy Test: Enabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html index 19ab572b382..ae5a63d1484 100644 --- a/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/gyroscope/Gyroscope-enabled-on-self-origin-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Gyroscope Feature Policy Test: Enabled on self origin</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html index d7fae15c35a..f1be0439df3 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html @@ -6,25 +6,21 @@ <pre id="step_log"></pre> <iframe id="test"></iframe> <script> - var t = async_test(undefined, {timeout:10000}); var f = document.getElementById("test"); var l = document.getElementById("step_log"); -var navigated = false; log = function(t) {l.textContent += ("\n" + t)} var steps = [ function() {f.src = "browsing_context_name-1.html"}, function() { - navigated = true; assert_equals(f.contentWindow.name, "test", "Initial load"); setTimeout(next, 0); }, function() {f.src = "browsing_context_name-3.html"}, function() { - var navigated = true; - assert_equals(f.contentWindow.name, "test3", "Initial load"); + assert_equals(f.contentWindow.name, "test3", "After navigation 1"); setTimeout(next, 0); }, function() {f.src = f.src.replace("http://", "http://www.").replace("browsing_context_name-3", "browsing_context_name-2");}, @@ -33,10 +29,10 @@ var steps = [ }, function() {history.go(-2); setTimeout(next, 500)}, function() { - assert_equals(f.contentWindow.name, "test3", "After navigation"); + assert_equals(f.contentWindow.name, "test3", "After navigation 2"); t.done(); } -].map(function(x) {return t.step_func(function() {log("Step " + step); x()})}); +].map(function(x) {return t.step_func(function() {log("Step " + step + " " + f.contentWindow.location); x()})}); var step = 0; next = t.step_func(function() {steps[step++]()}); diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html index ea4cd0c602e..88b05789de4 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html @@ -9,31 +9,28 @@ var t = async_test(undefined, {timeout:10000}); var f = document.getElementById("test"); var l = document.getElementById("step_log"); -var navigated = false; log = function(t) {l.textContent += ("\n" + t)} var steps = [ function() {f.src = "browsing_context_name-1.html"}, function() { - navigated = true; assert_equals(f.contentWindow.name, "test", "Initial load"); setTimeout(next, 0); }, function() {f.src = "browsing_context_name-3.html"}, function() { - var navigated = true; - assert_equals(f.contentWindow.name, "test3", "Initial load"); + assert_equals(f.contentWindow.name, "test3", "After navigation 1"); setTimeout(next, 0); }, function() {f.src = f.src.replace("http://", "http://www.").replace("browsing_context_name-1", "browsing_context_name-2");}, function() {f.src = f.src.replace("http://www.", "http://").replace("browsing_context_name-2", "browsing_context_name-4");}, function() { - assert_equals(f.contentWindow.name, "test3", "After navigation"); + assert_equals(f.contentWindow.name, "test3", "After navigation 2"); history.go(-3); setTimeout(next, 500) }, function() { - assert_equals(f.contentWindow.name, "test3", "After navigation"); + assert_equals(f.contentWindow.name, "test3", "After navigation 3"); t.done(); } ].map(function(x) {return t.step_func(function() {log("Step " + step + " " + f.contentWindow.location); x()})}); diff --git a/tests/wpt/web-platform-tests/html/dom/usvstring-reflection.html b/tests/wpt/web-platform-tests/html/dom/usvstring-reflection.html index 0f5559af1ae..7b408e08136 100644 --- a/tests/wpt/web-platform-tests/html/dom/usvstring-reflection.html +++ b/tests/wpt/web-platform-tests/html/dom/usvstring-reflection.html @@ -10,7 +10,14 @@ test(() => { location.hash = '\uD999'; assert_equals(location.hash, '#%EF%BF%BD'); -}, "location : unpaired surrogate codepoint should be replaced with U+FFFD"); +}, "location.hash : unpaired surrogate codepoint should be replaced with U+FFFD"); + +test(() => { + var w = window.open("about:blank#\uD800"); + assert_equals(w.location.href, 'about:blank#%EF%BF%BD'); + w.location.href = 'about:blank#\uD999'; + assert_equals(w.location.href, 'about:blank#%EF%BF%BD'); +}, "location.href : unpaired surrogate codepoint should be replaced with U+FFFD"); test(() => { var w = window.open("about:blank#\uD800"); diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html new file mode 100644 index 00000000000..33049822c46 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> + +<link rel=stylesheet href=stylesheet.py> +<link rel=stylesheet media="screen and (max-width:10px)" href=stylesheet.py?stylesNotMatchingEnvironment&delay=2> +<h1>Dominic Farolino</h1> +<script> + function styleExists(styleText) { + for (let styleRule of document.styleSheets) { + let currentStyleText = styleRule.cssRules["0"].cssText; + if (currentStyleText == styleText) { + return true; + } + } + + return false; + } + + test(() => { + const h1 = document.querySelector('h1'); + const computedColor = getComputedStyle(h1).color; + const expectedColor = "rgb(128, 0, 128)"; + + assert_equals(computedColor, expectedColor); + assert_true(styleExists("h1 { color: purple; }")); // first style sheet + assert_false(styleExists("h1 { color: brown; }")); // second style sheet (should not be loaded yet) + }, "Only the style sheet loaded via a link element whose media attribute matches the environment should block following script execution"); + + const secondStylesheetTest = async_test("Both style sheets loaded via the link elements should be registered as style sheets for the document after 2 seconds"); + secondStylesheetTest.step_timeout(() => { + assert_true(styleExists("h1 { color: purple; }")); // first style sheet + assert_true(styleExists("h1 { color: brown; }")); // second style sheet (loaded now!) + secondStylesheetTest.done(); + }, 3000); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/stylesheet.py b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/stylesheet.py new file mode 100644 index 00000000000..9befce9e60c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/interactions-of-styling-and-scripting/stylesheet.py @@ -0,0 +1,10 @@ +from time import sleep +def main(request, response): + if "delay" in request.GET: + delay = int(request.GET["delay"]) + sleep(delay) + + if "stylesNotMatchingEnvironment" in request.GET: + return 'h1 {color: brown;}' + else: + return 'h1 {color: purple;}' diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/resources/cues-chrono-order.vtt b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/resources/cues-chrono-order.vtt new file mode 100644 index 00000000000..fd6d484f888 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/resources/cues-chrono-order.vtt @@ -0,0 +1,14 @@ +WEBVTT +Cues that have overlapping time ranges. + +1 +00:00:01.000 --> 00:00:02.000 +Bear is Coming!!!!! + +2 +00:00:02.500 --> 00:00:03.500 +I said Bear is coming!!!! + +3 +00:00:04.000 --> 00:00:05.000 +I said Bear is coming now!!!!
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html new file mode 100644 index 00000000000..e2f78900a75 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<title>Enter, Exit events for a cue with negative duration</title> +<script src="/common/media.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<video> + <script> + async_test(function(t) { + var video = document.querySelector("video"); + var track = video.addTextTrack("subtitles"); + + // Add a cue with negative duration. + var cue = new VTTCue(1, -10, "Sausage?"); + track.addCue(cue); + assert_equals(track.cues.length, 1); + + // Verify that enter and exit events are fired. + var enterEvent = false; + cue.onenter = t.step_func(function() { + enterEvent = true; + }); + cue.onexit = t.step_func_done(function() { + assert_true(enterEvent); + }); + + video.src = getVideoURI("/media/test"); + video.play(); + }); + </script> +</video>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html new file mode 100644 index 00000000000..ebd7877f78a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>Enter, Exit events for cues with negative timestamps</title> +<script src="/common/media.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<video> + <script> + async_test(function(t) { + var video = document.querySelector("video"); + var track = video.addTextTrack("subtitles"); + + // Add cue with negative startTime. + var cue = new VTTCue(-10, 1, "Sausage?"); + track.addCue(cue); + assert_equals(track.cues.length, 1); + cue.onenter = t.step_func(function() { + cue.onexit = t.step_func_done(); + }); + + // Add cue with negative startTime and negative endTime. + // This cue should never be active. + var missedCue = new VTTCue(-110, -3.4, "Pepperoni?"); + track.addCue(missedCue); + assert_equals(track.cues.length, 2); + missedCue.onenter = t.unreached_func(); + missedCue.onexit = t.unreached_func(); + + video.src = getVideoURI("/media/test"); + video.play(); + }); + </script> +</video>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp.html index c63d55062ee..5dc54ed25bf 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp.html @@ -9,25 +9,33 @@ var testTrack = document.querySelector("track"); testTrack.onload = t.step_func_done(function() { + var cues = testTrack.track.cues; assert_equals(testTrack.track.cues.length, 4); // Add cue with negative startTime. var cue = new VTTCue(-3439332606, 3.4, "Sausage?"); testTrack.track.addCue(cue); - assert_equals(testTrack.track.cues.length, 5); + assert_equals(cues.length, 5); // Add cue with negative startTime and negative endTime. cue = new VTTCue(-110, -3.4, "Pepperoni?"); testTrack.track.addCue(cue); - assert_equals(testTrack.track.cues.length, 6); + assert_equals(cues.length, 6); // Set startTime and endTime to negative values. - var testCue = testTrack.track.cues[2]; + var testCue = cues[2]; assert_equals(testCue.startTime, 0); testCue.startTime = -5; assert_equals(testCue.startTime, -5); assert_equals(testCue.endTime, 30.5); testCue.endTime = -3439332606; assert_equals(testCue.endTime, -3439332606); + + // Check negative cues ordering. + testCue = cues[3]; + assert_equals(testCue.startTime, 31); + testCue.startTime = -200; + // Verify that this cue is moved to 2nd position. + assert_equals(cues[1].startTime, -200); }); }); </script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html new file mode 100644 index 00000000000..8354041eb2a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<script src="/common/reftest-wait.js"></script> +<style> +.container { + position: relative; + display: inline-block; + width: 320px; + height: 240px; +} +.cue { + position: absolute; + top: 0; + left: 0; + right: 0; + overflow: hidden; +} +.cue > span { + font-family: sans-serif; + background: green; + color: green; + font-size: 120px; + padding: 2px; +} +</style> +<div class="container"> + <video autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + </video> + <div class="cue"><span>PAS</span></div> +</div> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html new file mode 100644 index 00000000000..d3dcee10373 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<script src="/common/reftest-wait.js"></script> +<link rel="match" href="track-cue-rendering-line-doesnt-fit-ref.html"> +<script> +function addCue(track, cueData) { + var cue = new VTTCue(0, 10, 'XXX'); + for (var prop in cueData) + cue[prop] = cueData[prop]; + track.addCue(cue); +} +</script> +<style> +video::cue { + font-size: 120px; + color: green; + background-color: green; +} +</style> +<video autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <script> + var video = document.querySelector("video"); + var track = video.addTextTrack('subtitles'); + addCue(track, { line: 0, align: 'start', text: 'PAS' }); + // This cue will not fit, and will not be displayed. + addCue(track, { line: 1, align: 'start', text: 'FAI' }); + track.mode = 'showing'; + </script> +</video> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video-ref.html new file mode 100644 index 00000000000..39461350b08 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video-ref.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<script src="/common/reftest-wait.js"></script> +<style> +.container { + transform: translate(1px, 0px); + position: relative; + display: inline-block; + width: 320px; + height: 240px; +} +.cue { + position: absolute; + top: 0; + left: 0; + right: 0; + overflow: hidden; + text-align: start; +} +.cue > span { + font-family: sans-serif; + background: green; + color: green; + font-size: 50px; + padding: 2px; +} +</style> +<div class="container"> + <video autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + </video> + <div class="cue"><span>XXX</span></div> +</div> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video.html new file mode 100644 index 00000000000..69ca92e845b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-transformed-video.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<script src="/common/reftest-wait.js"></script> +<link rel="match" href="track-cue-rendering-transformed-video-ref.html"> +<style> +video { + transform: translate(1px, 0px); +} +video::cue { + font-size: 50px; + color: green; + background-color: green; +} +</style> +<video autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="/media/white.webm" type="video/webm"> + <source src="/media/white.mp4" type="video/mp4"> + <script> + var video = document.querySelector('video'); + var track = video.addTextTrack('subtitles'); + var cue = new VTTCue(0, 10, 'XXX'); + cue.align = 'start'; + cue.line = 0; + track.addCue(cue); + track.mode = 'showing'; + </script> +</video> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html new file mode 100644 index 00000000000..b9c8412bab0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<title>TextTrack's cues are indexed and updated in order during video playback</title> +<script src="/common/media.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<video> + <track src="resources/cues-chrono-order.vtt" kind="captions" default> + <script> + // Use the cuechange event on TextTrack. + async_test(function(t) { + var video = document.querySelector("video"); + var testTrack = document.querySelector("track"); + + video.src = getVideoURI("/media/test"); + video.oncanplaythrough = t.step_func(attemptTests); + + function attemptTests() { + assert_equals(testTrack.track.cues.length, 3); + testTrack.oncuechange = t.step_func(cueChangedFromTrackElement); + video.play(); + } + + var currentCueIndex; + var cueChangeCount = 0; + function cueChangedFromTrackElement() { + currentCueIndex = Math.floor(cueChangeCount / 2); + currentCue = event.target.track.cues[currentCueIndex]; + if (cueChangeCount % 2 == 0) { + // Cue entered. + assert_equals(currentCue, testTrack.track.activeCues[0]); + assert_equals(currentCue.id, (currentCueIndex + 1).toString()); + } + + ++cueChangeCount; + if (cueChangeCount == testTrack.track.cues.length * 2) + t.done(); + } + }); + </script> +</video>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html new file mode 100644 index 00000000000..970666793a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<title>TextTrack's cues are indexed and updated in order during video playback</title> +<script src="/common/media.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<video> + <track src="resources/cues-chrono-order.vtt" kind="captions" default> + <script> + // Use the enter and exit events on TextTrackCue. + async_test(function(t) { + var video = document.querySelector("video"); + var testTrack = document.querySelector("track"); + + video.src = getVideoURI("/media/test"); + + video.oncanplaythrough = t.step_func(attemptTests); + + function attemptTests() { + assert_equals(testTrack.track.cues.length, 3); + for (var i = 0; i < testTrack.track.cues.length; i++) { + testTrack.track.cues[i].onenter = t.step_func(cueEntered); + testTrack.track.cues[i].onexit = t.step_func(cueExited); + } + video.play(); + } + + var cueCount = 0; + function cueEntered() { + var currentCue = event.target; + + // This cue is the currently active cue. + assert_equals(currentCue, testTrack.track.activeCues[0]); + assert_equals(currentCue.id, (cueCount + 1).toString()); + } + + function cueExited() { + ++cueCount; + if (cueCount == testTrack.track.cues.length) + t.done(); + } + }); + </script> +</video>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html index e03fcc0ecbb..8fa2b8b8d3f 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html @@ -28,4 +28,4 @@ <script type="module" src="./cycle-unresolvable-a.js" onerror="unreachable()" onload="log.push(2)"></script> <script type="module" src="./cycle-unresolvable.js" - onerror="unreachable()" onload="log.push(3)" async></script> + onerror="unreachable()" onload="log.push(3)"></script> diff --git a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html index 8946eaab4eb..5af9a5e4c02 100644 --- a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html +++ b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html @@ -32,6 +32,10 @@ test(function() { assert_equals(element.relList.length, 2); assert_equals(element.relList[0], "first"); assert_equals(element.relList[1], "second"); + // Test that relList is [SameObject]. + let savedRelList = element.relList; + element.rel = "something"; + assert_equals(element.relList, savedRelList); // Test that supports() is returning true for valid values // and false for invalid ones. diff --git a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html index 1c818760a11..1099819cd94 100644 --- a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html +++ b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html @@ -32,6 +32,10 @@ test(function() { assert_equals(element.relList.length, 2); assert_equals(element.relList[0], "first"); assert_equals(element.relList[1], "second"); + // Test that relList is [SameObject]. + let savedRelList = element.relList; + element.rel = "something"; + assert_equals(element.relList, savedRelList); // Test that supports() is returning true for valid values // and false for invalid ones. diff --git a/tests/wpt/web-platform-tests/images/pattern.mp4 b/tests/wpt/web-platform-tests/images/pattern.mp4 Binary files differnew file mode 100644 index 00000000000..c866bfedf91 --- /dev/null +++ b/tests/wpt/web-platform-tests/images/pattern.mp4 diff --git a/tests/wpt/web-platform-tests/interfaces/OWNERS b/tests/wpt/web-platform-tests/interfaces/OWNERS index 7ccc510535f..8a9a649b729 100644 --- a/tests/wpt/web-platform-tests/interfaces/OWNERS +++ b/tests/wpt/web-platform-tests/interfaces/OWNERS @@ -1,4 +1,3 @@ @domenic @jensl -@tobie @yuki3 diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/WebCryptoAPI.idl b/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl index 132c6d076ca..132c6d076ca 100644 --- a/tests/wpt/web-platform-tests/WebCryptoAPI/WebCryptoAPI.idl +++ b/tests/wpt/web-platform-tests/interfaces/WebCryptoAPI.idl diff --git a/tests/wpt/web-platform-tests/interfaces/gamepad.idl b/tests/wpt/web-platform-tests/interfaces/gamepad.idl new file mode 100644 index 00000000000..0f7ca2c4702 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/gamepad.idl @@ -0,0 +1,33 @@ +interface Gamepad { + readonly attribute DOMString id; + readonly attribute long index; + readonly attribute boolean connected; + readonly attribute DOMHighResTimeStamp timestamp; + readonly attribute GamepadMappingType mapping; + readonly attribute FrozenArray<double> axes; + readonly attribute FrozenArray<GamepadButton> buttons; +}; + +interface GamepadButton { + readonly attribute boolean pressed; + readonly attribute boolean touched; + readonly attribute double value; +}; + +enum GamepadMappingType { + "", + "standard", +}; + +partial interface Navigator { + sequence<Gamepad?> getGamepads(); +}; + +[Constructor(GamepadEventInit eventInitDict)] +interface GamepadEvent : Event { + readonly attribute Gamepad gamepad; +}; + +dictionary GamepadEventInit : EventInit { + required Gamepad gamepad; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/html.idl b/tests/wpt/web-platform-tests/interfaces/html.idl index e272fb823bc..b2a1ec30d82 100644 --- a/tests/wpt/web-platform-tests/interfaces/html.idl +++ b/tests/wpt/web-platform-tests/interfaces/html.idl @@ -1133,7 +1133,7 @@ dictionary AssignedNodesOptions { boolean flatten = false; }; -typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext; +typedef (CanvasRenderingContext2D or ImageBitmapRenderingContext or WebGLRenderingContext) RenderingContext; [Exposed=Window, HTMLConstructor] diff --git a/tests/wpt/web-platform-tests/interfaces/proximity.idl b/tests/wpt/web-platform-tests/interfaces/proximity.idl new file mode 100644 index 00000000000..89397290544 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/proximity.idl @@ -0,0 +1,6 @@ +[Constructor(optional SensorOptions sensorOptions), SecureContext, Exposed=Window] +interface ProximitySensor : Sensor { + readonly attribute double? distance; + readonly attribute double? max; + readonly attribute boolean? near; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/webxr.idl b/tests/wpt/web-platform-tests/interfaces/webxr.idl new file mode 100644 index 00000000000..4d16ddbe282 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/webxr.idl @@ -0,0 +1,180 @@ +[SecureContext, Exposed=Window] interface XR : EventTarget { + // Methods + Promise<XRDevice?> requestDevice(); + + // Events + attribute EventHandler ondevicechange; +}; + +[SecureContext] +partial interface Navigator { + [SameObject] readonly attribute XR xr; +}; + +[SecureContext, Exposed=Window] interface XRDevice : EventTarget { + // Attributes + readonly attribute boolean external; + + // Methods + Promise<void> supportsSession(optional XRSessionCreationOptions options); + Promise<XRSession> requestSession(optional XRSessionCreationOptions options); +}; + +dictionary XRSessionCreationOptions { + boolean exclusive = false; + XRPresentationContext outputContext; +}; + +[SecureContext, Exposed=Window] interface XRSession : EventTarget { + // Attributes + readonly attribute XRDevice device; + readonly attribute boolean exclusive; + readonly attribute XRPresentationContext outputContext; + + attribute double depthNear; + attribute double depthFar; + attribute XRLayer baseLayer; + + // Methods + Promise<XRFrameOfReference> requestFrameOfReference(XRFrameOfReferenceType type, optional XRFrameOfReferenceOptions options); + + long requestAnimationFrame(XRFrameRequestCallback callback); + void cancelAnimationFrame(long handle); + + Promise<void> end(); + + // Events + attribute EventHandler onblur; + attribute EventHandler onfocus; + attribute EventHandler onresetpose; + attribute EventHandler onend; +}; + +callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRPresentationFrame frame); + +[SecureContext, Exposed=Window] interface XRPresentationFrame { + readonly attribute FrozenArray<XRView> views; + + XRDevicePose? getDevicePose(XRCoordinateSystem coordinateSystem); +}; + +[SecureContext, Exposed=Window] interface XRCoordinateSystem : EventTarget { + Float32Array? getTransformTo(XRCoordinateSystem other); +}; + +enum XRFrameOfReferenceType { + "headModel", + "eyeLevel", + "stage", +}; + +dictionary XRFrameOfReferenceOptions { + boolean disableStageEmulation = false; + double stageEmulationHeight = 0.0; +}; + +[SecureContext, Exposed=Window] interface XRFrameOfReference : XRCoordinateSystem { + readonly attribute XRStageBounds? bounds; + readonly attribute double emulatedHeight; + + attribute EventHandler onboundschange; +}; + +[SecureContext, Exposed=Window] interface XRStageBounds { + readonly attribute FrozenArray<XRStageBoundsPoint> geometry; +}; + +[SecureContext, Exposed=Window] interface XRStageBoundsPoint { + readonly attribute double x; + readonly attribute double z; +}; + +enum XREye { + "left", + "right" +}; + +[SecureContext, Exposed=Window] interface XRView { + readonly attribute XREye eye; + readonly attribute Float32Array projectionMatrix; + + XRViewport? getViewport(XRLayer layer); +}; + +[SecureContext, Exposed=Window] interface XRViewport { + readonly attribute long x; + readonly attribute long y; + readonly attribute long width; + readonly attribute long height; +}; + +[SecureContext, Exposed=Window] interface XRDevicePose { + readonly attribute Float32Array poseModelMatrix; + + Float32Array getViewMatrix(XRView view); +}; + +[SecureContext, Exposed=Window] interface XRLayer {}; + +typedef (WebGLRenderingContext or + WebGL2RenderingContext) XRWebGLRenderingContext; + +dictionary XRWebGLLayerInit { + boolean antialias = true; + boolean depth = false; + boolean stencil = false; + boolean alpha = true; + boolean multiview = false; + double framebufferScaleFactor; +}; + +[SecureContext, Exposed=Window, Constructor(XRSession session, + XRWebGLRenderingContext context, + optional XRWebGLLayerInit layerInit)] +interface XRWebGLLayer : XRLayer { + // Attributes + readonly attribute XRWebGLRenderingContext context; + + readonly attribute boolean antialias; + readonly attribute boolean depth; + readonly attribute boolean stencil; + readonly attribute boolean alpha; + readonly attribute boolean multiview; + + readonly attribute WebGLFramebuffer framebuffer; + readonly attribute unsigned long framebufferWidth; + readonly attribute unsigned long framebufferHeight; + + // Methods + void requestViewportScaling(double viewportScaleFactor); +}; + +partial dictionary WebGLContextAttributes { + XRDevice compatibleXRDevice = null; +}; + +partial interface mixin WebGLRenderingContextBase { + Promise<void> setCompatibleXRDevice(XRDevice device); +}; + +[SecureContext, Exposed=Window] interface XRPresentationContext { + readonly attribute HTMLCanvasElement canvas; +}; + +[SecureContext, Exposed=Window, Constructor(DOMString type, XRSessionEventInit eventInitDict)] +interface XRSessionEvent : Event { + readonly attribute XRSession session; +}; + +dictionary XRSessionEventInit : EventInit { + required XRSession session; +}; + +[SecureContext, Exposed=Window, Constructor(DOMString type, XRCoordinateSystemEventInit eventInitDict)] +interface XRCoordinateSystemEvent : Event { + readonly attribute XRCoordinateSystem coordinateSystem; +}; + +dictionary XRCoordinateSystemEventInit : EventInit { + required XRCoordinateSystem coordinateSystem; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/xhr.idl b/tests/wpt/web-platform-tests/interfaces/xhr.idl new file mode 100644 index 00000000000..707e3550962 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/xhr.idl @@ -0,0 +1,91 @@ +/*[Exposed=(Window,Worker)]*/ +interface XMLHttpRequestEventTarget : EventTarget { + // event handlers + attribute EventHandler onloadstart; + attribute EventHandler onprogress; + attribute EventHandler onabort; + attribute EventHandler onerror; + attribute EventHandler onload; + attribute EventHandler ontimeout; + attribute EventHandler onloadend; +}; + +/*[Exposed=(Window,Worker)]*/ +interface XMLHttpRequestUpload : XMLHttpRequestEventTarget { +}; + +enum XMLHttpRequestResponseType { + "", + "arraybuffer", + "blob", + "document", + "json", + "text" +}; + +[Constructor/*, + Exposed=(Window,Worker)*/] +interface XMLHttpRequest : XMLHttpRequestEventTarget { + // event handler + attribute EventHandler onreadystatechange; + + // states + const unsigned short UNSENT = 0; + const unsigned short OPENED = 1; + const unsigned short HEADERS_RECEIVED = 2; + const unsigned short LOADING = 3; + const unsigned short DONE = 4; + readonly attribute unsigned short readyState; + + // request + void open(ByteString method, USVString url); + void open(ByteString method, USVString url, boolean async, optional USVString? username = null, optional USVString? password = null); + void setRequestHeader(ByteString name, ByteString value); + attribute unsigned long timeout; + attribute boolean withCredentials; + readonly attribute XMLHttpRequestUpload upload; + void send(optional (Document or BodyInit)? body = null); + void abort(); + + // response + readonly attribute USVString responseURL; + readonly attribute unsigned short status; + readonly attribute ByteString statusText; + ByteString? getResponseHeader(ByteString name); + ByteString getAllResponseHeaders(); + void overrideMimeType(DOMString mime); + attribute XMLHttpRequestResponseType responseType; + readonly attribute any response; + readonly attribute USVString responseText; + [Exposed=Window] readonly attribute Document? responseXML; +}; + +typedef (File or USVString) FormDataEntryValue; + +[Constructor(optional HTMLFormElement form)/*, + Exposed=(Window,Worker)*/] +interface FormData { + void append(USVString name, Blob value, optional USVString filename); + void append(USVString name, USVString value); + void delete(USVString name); + FormDataEntryValue? get(USVString name); + sequence<FormDataEntryValue> getAll(USVString name); + boolean has(USVString name); + void set(USVString name, Blob value, optional USVString filename); + void set(USVString name, USVString value); + /*iterable<USVString, FormDataEntryValue>;*/ +}; + +[Constructor(DOMString type, optional ProgressEventInit eventInitDict)/*, + Exposed=(Window,Worker)*/] +interface ProgressEvent : Event { + readonly attribute boolean lengthComputable; + readonly attribute unsigned long long loaded; + readonly attribute unsigned long long total; +}; + +dictionary ProgressEventInit : EventInit { + boolean lengthComputable = false; + unsigned long long loaded = 0; + unsigned long long total = 0; +}; diff --git a/tests/wpt/web-platform-tests/keyboard-lock/idlharness.https.html b/tests/wpt/web-platform-tests/keyboard-lock/idlharness.https.html index 4e06d57b6a3..9caa379f4f6 100644 --- a/tests/wpt/web-platform-tests/keyboard-lock/idlharness.https.html +++ b/tests/wpt/web-platform-tests/keyboard-lock/idlharness.https.html @@ -14,7 +14,7 @@ interface Navigator { }; </pre> <!-- - The reason of the failure of requestKeyboardLock test looks like a code defect in + The reason of the failure of keyboardLock test looks like a code defect in idlharness.js. media-capabilities/idlharness.html is also impacted by this issue. See https://codereview.chromium.org/2805763004/#ps620001, which includes a potential fix. @@ -22,8 +22,8 @@ interface Navigator { --> <pre id="idl" style="display: none"> partial interface Navigator { - [SecureContext] Promise<void> requestKeyboardLock(optional sequence<DOMString> keyCodes = []); - [SecureContext] void cancelKeyboardLock(); + [SecureContext] Promise<void> keyboardLock(optional sequence<DOMString> keyCodes = []); + [SecureContext] void keyboardUnlock(); }; </pre> <script> diff --git a/tests/wpt/web-platform-tests/keyboard-lock/navigator-requestKeyboardLock-two-parallel-requests.https.html b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboardLock-two-parallel-requests.https.html index 8e84d14d465..d553c064d50 100644 --- a/tests/wpt/web-platform-tests/keyboard-lock/navigator-requestKeyboardLock-two-parallel-requests.https.html +++ b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboardLock-two-parallel-requests.https.html @@ -5,11 +5,11 @@ 'use strict'; promise_test((t) => { - const p1 = navigator.requestKeyboardLock(['a', 'b']); - const p2 = navigator.requestKeyboardLock(['c', 'd']); + const p1 = navigator.keyboardLock(['a', 'b']); + const p2 = navigator.keyboardLock(['c', 'd']); return promise_rejects(t, null, p2, - 'requestKeyboardLock() should only be ' + + 'keyboardLock() should only be ' + 'executed if another request has finished.'); -}, 'Keyboard Lock requestKeyboardLock twice in parallel'); +}, 'Keyboard Lock keyboardLock twice in parallel'); </script> diff --git a/tests/wpt/web-platform-tests/keyboard-lock/navigator-requestKeyboardLock-two-sequential-requests.https.html b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboardLock-two-sequential-requests.https.html index 30f49054495..7670be4f383 100644 --- a/tests/wpt/web-platform-tests/keyboard-lock/navigator-requestKeyboardLock-two-sequential-requests.https.html +++ b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboardLock-two-sequential-requests.https.html @@ -5,10 +5,10 @@ 'use strict'; promise_test(() => { - return navigator.requestKeyboardLock(['a', 'b']) + return navigator.keyboardLock(['a', 'b']) .then(() => { - return navigator.requestKeyboardLock(['c', 'd']); + return navigator.keyboardLock(['c', 'd']); }); -}, 'Keyboard Lock requestKeyboardLock twice sequentially'); +}, 'Keyboard Lock keyboardLock twice sequentially'); </script> diff --git a/tests/wpt/web-platform-tests/keyboard-lock/navigator-requestKeyboardLock.https.html b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboardLock.https.html index e6e0121e75e..6711decc121 100644 --- a/tests/wpt/web-platform-tests/keyboard-lock/navigator-requestKeyboardLock.https.html +++ b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboardLock.https.html @@ -5,9 +5,9 @@ 'use strict'; promise_test(() => { - const p = navigator.requestKeyboardLock(['a', 'b']); + const p = navigator.keyboardLock(['a', 'b']); assert_true(p instanceof Promise); return p; -}, 'Keyboard Lock requestKeyboardLock'); +}, 'Keyboard Lock keyboardLock'); </script> diff --git a/tests/wpt/web-platform-tests/keyboard-lock/navigator-cancelKeyboardLock.https.html b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboardUnlock.https.html index 10fd50d3a79..ceb7a968949 100644 --- a/tests/wpt/web-platform-tests/keyboard-lock/navigator-cancelKeyboardLock.https.html +++ b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboardUnlock.https.html @@ -5,8 +5,8 @@ 'use strict'; test(() => { - assert_equals(navigator.cancelKeyboardLock(), + assert_equals(navigator.keyboardUnlock(), undefined); -}, 'Keyboard Lock cancelKeyboardLock'); +}, 'Keyboard Lock keyboardUnlock'); </script> diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index dcabf436c52..b8728fefc35 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -38,6 +38,7 @@ TRAILING WHITESPACE: webaudio/* TRAILING WHITESPACE: WebIDL/* TRAILING WHITESPACE: webvtt/* TRAILING WHITESPACE: encoding/legacy*/* +TRAILING WHITESPACE: server-timing/resources/parsing/*.sub.headers ## File types that should never be checked ## diff --git a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-disabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-disabled-by-feature-policy.https.html index f24b2b35646..56a1cc4f0f9 100644 --- a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-disabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-disabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Magnetometer Feature Policy Test: Disabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 08369810f5f..b5f6798e248 100644 --- a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Magnetometer Feature Policy Test: Enabled by attribute redirect on load</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html index 0086222cbc7..6cad267b6f5 100644 --- a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html +++ b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Magnetometer Feature Policy Test: Enabled by attribute</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy.https.html index 7f8ce1a9675..24e2554bca2 100644 --- a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Magnetometer Feature Policy Test: Enabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html index a967576eafc..59dfef5bf20 100644 --- a/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>Magnetometer Feature Policy Test: Enabled on self origin</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/media-source/generate-config-change-tests.py b/tests/wpt/web-platform-tests/media-source/generate-config-change-tests.py new file mode 100755 index 00000000000..4edb925b448 --- /dev/null +++ b/tests/wpt/web-platform-tests/media-source/generate-config-change-tests.py @@ -0,0 +1,226 @@ +#!/usr/bin/python +# Copyright (C) 2013 Google Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +""" +This is a script that generates the content and HTML files for Media Source +codec config change LayoutTests. +""" +import json +import os + +DURATION = 2 +MEDIA_FORMATS = ['webm', 'mp4'] +ENCODE_SETTINGS = [ + ## Video-only files + # Frame rate changes + {'fs': '320x240', 'fr': 24, 'kfr': 8, 'c': '#ff0000', 'vbr': 128, 'abr': 0, 'asr': 0, 'ach': 0, 'afreq': 0}, + {'fs': '320x240', 'fr': 30, 'kfr': 10, 'c': '#ff0000', 'vbr': 128, 'abr': 0, 'asr': 0, 'ach': 0, 'afreq': 0}, + # Frame size change + {'fs': '640x480', 'fr': 30, 'kfr': 10, 'c': '#00ff00', 'vbr': 128, 'abr': 0, 'asr': 0, 'ach': 0, 'afreq': 0}, + # Bitrate change + {'fs': '320x240', 'fr': 30, 'kfr': 10, 'c': '#ff00ff', 'vbr': 256, 'abr': 0, 'asr': 0, 'ach': 0, 'afreq': 0}, + + ## Audio-only files + # Bitrate/Codebook changes + {'fs': '0x0', 'fr': 0, 'kfr': 0, 'c': '#000000', 'vbr': 0, 'abr': 128, 'asr': 44100, 'ach': 1, 'afreq': 2000}, + {'fs': '0x0', 'fr': 0, 'kfr': 0, 'c': '#000000', 'vbr': 0, 'abr': 192, 'asr': 44100, 'ach': 1, 'afreq': 4000}, + + ## Audio-Video files + # Frame size change. + {'fs': '320x240', 'fr': 30, 'kfr': 10, 'c': '#ff0000', 'vbr': 256, 'abr': 128, 'asr': 44100, 'ach': 1, 'afreq': 2000}, + {'fs': '640x480', 'fr': 30, 'kfr': 10, 'c': '#00ff00', 'vbr': 256, 'abr': 128, 'asr': 44100, 'ach': 1, 'afreq': 2000}, + # Audio bitrate change. + {'fs': '640x480', 'fr': 30, 'kfr': 10, 'c': '#00ff00', 'vbr': 256, 'abr': 192, 'asr': 44100, 'ach': 1, 'afreq': 4000}, + # Video bitrate change. + {'fs': '640x480', 'fr': 30, 'kfr': 10, 'c': '#00ffff', 'vbr': 512, 'abr': 128, 'asr': 44100, 'ach': 1, 'afreq': 2000}, +] + +CONFIG_CHANGE_TESTS = [ + ["v-framerate", 0, 1, "Tests %s video-only frame rate changes."], + ["v-framesize", 1, 2, "Tests %s video-only frame size changes."], + ["v-bitrate", 1, 3, "Tests %s video-only bitrate changes."], + ["a-bitrate", 4, 5, "Tests %s audio-only bitrate changes."], + ["av-framesize", 6, 7, "Tests %s frame size changes in multiplexed content."], + ["av-audio-bitrate", 7, 8, "Tests %s audio bitrate changes in multiplexed content."], + ["av-video-bitrate", 7, 9, "Tests %s video bitrate changes in multiplexed content."] +] + +CODEC_INFO = { + "mp4": {"audio": "mp4a.40.2", "video": "avc1.4D4001"}, + "webm": {"audio": "vorbis", "video": "vp8"} +} + +HTML_TEMPLATE = """<!DOCTYPE html> +<html> + <head> + <script src="/w3c/resources/testharness.js"></script> + <script src="/w3c/resources/testharnessreport.js"></script> + <script src="mediasource-util.js"></script> + <script src="mediasource-config-changes.js"></script> + <link rel="stylesheet" href="/w3c/resources/testharness.css"> + </head> + <body> + <div id="log"></div> + <script> + mediaSourceConfigChangeTest("%(media_format)s", "%(idA)s", "%(idB)s", "%(description)s"); + </script> + </body> +</html> +""" + +def run(cmd_line): + os.system(" ".join(cmd_line)) + +def generate_manifest(filename, media_filename, media_format, has_audio, has_video): + major_type = "audio" + if has_video: + major_type = "video" + + codecs = [] + if has_video: + codecs.append(CODEC_INFO[media_format]["video"]) + + if has_audio: + codecs.append(CODEC_INFO[media_format]["audio"]) + + mimetype = "%s/%s;codecs=\"%s\"" % (major_type, media_format, ",".join(codecs)) + + manifest = { 'url': media_filename, 'type': mimetype} + + f = open(filename, "wb") + f.write(json.dumps(manifest, indent=4, separators=(',', ': '))) + f.close() + +def generate_test_html(media_format, config_change_tests, encoding_ids): + for test_info in config_change_tests: + filename = "../../media-source/mediasource-config-change-%s-%s.html" % (media_format, test_info[0]) + html = HTML_TEMPLATE % {'media_format': media_format, + 'idA': encoding_ids[test_info[1]], + 'idB': encoding_ids[test_info[2]], + 'description': test_info[3] % (media_format)} + f = open(filename, "wb") + f.write(html) + f.close() + + +def main(): + encoding_ids = [] + + for media_format in MEDIA_FORMATS: + run(["mkdir ", media_format]) + + for settings in ENCODE_SETTINGS: + video_bitrate = settings['vbr'] + has_video = (video_bitrate > 0) + + audio_bitrate = settings['abr'] + has_audio = (audio_bitrate > 0) + bitrate = video_bitrate + audio_bitrate + + frame_size = settings['fs'] + frame_rate = settings['fr'] + keyframe_rate = settings['kfr'] + color = settings['c'] + + sample_rate = settings['asr'] + channels = settings['ach'] + frequency = settings['afreq'] + + cmdline = ["ffmpeg", "-y"] + + id_prefix = "" + id_params = "" + if has_audio: + id_prefix += "a" + id_params += "-%sHz-%sch" % (sample_rate, channels) + + channel_layout = "FC" + sin_func = "sin(%s*2*PI*t)" % frequency + func = sin_func + if channels == 2: + channel_layout += "|BC" + func += "|" + sin_func + + cmdline += ["-f", "lavfi", "-i", "aevalsrc=\"%s:s=%s:c=%s:d=%s\"" % (func, sample_rate, channel_layout, DURATION)] + + if has_video: + id_prefix += "v" + id_params += "-%s-%sfps-%skfr" % (frame_size, frame_rate, keyframe_rate) + + cmdline += ["-f", "lavfi", "-i", "color=%s:duration=%s:size=%s:rate=%s" % (color, DURATION, frame_size, frame_rate)] + + if has_audio: + cmdline += ["-b:a", "%sk" % audio_bitrate] + + if has_video: + cmdline += ["-b:v", "%sk" % video_bitrate] + cmdline += ["-keyint_min", "%s" % keyframe_rate] + cmdline += ["-g", "%s" % keyframe_rate] + + + textOverlayInfo = "'drawtext=fontfile=Mono:fontsize=32:text=Time\\\\:\\\\ %{pts}" + textOverlayInfo += ",drawtext=fontfile=Mono:fontsize=32:y=32:text=Size\\\\:\\\\ %s" % (frame_size) + textOverlayInfo += ",drawtext=fontfile=Mono:fontsize=32:y=64:text=Bitrate\\\\:\\\\ %s" % (bitrate) + textOverlayInfo += ",drawtext=fontfile=Mono:fontsize=32:y=96:text=FrameRate\\\\:\\\\ %s" % (frame_rate) + textOverlayInfo += ",drawtext=fontfile=Mono:fontsize=32:y=128:text=KeyFrameRate\\\\:\\\\ %s" % (keyframe_rate) + + if has_audio: + textOverlayInfo += ",drawtext=fontfile=Mono:fontsize=32:y=160:text=SampleRate\\\\:\\\\ %s" % (sample_rate) + textOverlayInfo += ",drawtext=fontfile=Mono:fontsize=32:y=192:text=Channels\\\\:\\\\ %s" % (channels) + + textOverlayInfo += "'" + cmdline += ["-vf", textOverlayInfo] + + encoding_id = "%s-%sk%s" % (id_prefix, bitrate, id_params) + + if len(encoding_ids) < len(ENCODE_SETTINGS): + encoding_ids.append(encoding_id) + + filename_base = "%s/test-%s" % (media_format, encoding_id) + media_filename = filename_base + "." + media_format + manifest_filename = filename_base + "-manifest.json" + + cmdline.append(media_filename) + run(cmdline) + + # Remux file so it conforms to MSE bytestream requirements. + if media_format == "webm": + tmp_filename = media_filename + ".tmp" + run(["mse_webm_remuxer", media_filename, tmp_filename]) + run(["mv", tmp_filename, media_filename]) + elif media_format == "mp4": + run(["MP4Box", "-dash", "250", "-rap", media_filename]) + run(["mv", filename_base + "_dash.mp4", media_filename]) + run(["rm", filename_base + "_dash.mpd"]) + + generate_manifest(manifest_filename, media_filename, media_format, has_audio, has_video) + generate_test_html(media_format, CONFIG_CHANGE_TESTS, encoding_ids) + +if '__main__' == __name__: + main() diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-config-changes.js b/tests/wpt/web-platform-tests/media-source/mediasource-config-changes.js index ea99b8ba5e4..b28aa90f1f3 100644 --- a/tests/wpt/web-platform-tests/media-source/mediasource-config-changes.js +++ b/tests/wpt/web-platform-tests/media-source/mediasource-config-changes.js @@ -68,9 +68,10 @@ function mediaSourceConfigChangeTest(directory, idA, idB, description) assert_false(sourceBuffer.updating, "updating"); // Truncate the presentation to a duration of 2 seconds. + // First, explicitly remove the media beyond 2 seconds. sourceBuffer.remove(2, Infinity); - assert_true(sourceBuffer.updating, "updating"); + assert_true(sourceBuffer.updating, "sourceBuffer.updating during range removal"); test.expectEvent(sourceBuffer, 'updatestart', 'sourceBuffer'); test.expectEvent(sourceBuffer, 'update', 'sourceBuffer'); test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer'); @@ -78,11 +79,13 @@ function mediaSourceConfigChangeTest(directory, idA, idB, description) test.waitForExpectedEvents(function() { - assert_false(sourceBuffer.updating, "updating"); + assert_false(sourceBuffer.updating, "sourceBuffer.updating prior to duration reduction"); assert_greater_than(mediaSource.duration, 2, "duration"); - // Truncate the presentation to a duration of 2 seconds. + // Complete the truncation of presentation to 2 second + // duration. mediaSource.duration = 2; + assert_false(sourceBuffer.updating, "sourceBuffer.updating synchronously after duration reduction"); test.expectEvent(mediaElement, "durationchange"); }); diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-play.html b/tests/wpt/web-platform-tests/media-source/mediasource-play.html index 5bbfa29d7e8..62fb04681ae 100644 --- a/tests/wpt/web-platform-tests/media-source/mediasource-play.html +++ b/tests/wpt/web-platform-tests/media-source/mediasource-play.html @@ -19,15 +19,20 @@ test.expectEvent(sourceBuffer, 'update', 'sourceBuffer'); test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer'); + assert_false(sourceBuffer.updating, "sourceBuffer.updating"); + sourceBuffer.appendBuffer(mediaData); + assert_true(sourceBuffer.updating, "sourceBuffer.updating"); + test.waitForExpectedEvents(function() { - assert_false(sourceBuffer.updating, "updating"); + assert_false(sourceBuffer.updating, "sourceBuffer.updating"); - sourceBuffer.remove(1, Infinity); + // Truncate the buffered media to about 1 second duration. + sourceBuffer.remove(1, +Infinity); - assert_true(sourceBuffer.updating, "updating"); + assert_true(sourceBuffer.updating, "sourceBuffer.updating"); test.expectEvent(sourceBuffer, 'updatestart', 'sourceBuffer'); test.expectEvent(sourceBuffer, 'update', 'sourceBuffer'); test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer'); @@ -38,6 +43,7 @@ assert_false(sourceBuffer.updating, "updating"); assert_greater_than(mediaSource.duration, 1, "duration"); + // Complete truncation of duration to 1 second. mediaSource.duration = 1; test.expectEvent(mediaElement, "durationchange"); diff --git a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html index cec214bbc26..ccefe2ea23e 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AbsoluteOrientationSensor Feature Policy Test: Disabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 2a5debec2cc..6aed47d4ddf 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AbsoluteOrientationSensor Feature Policy Test: Enabled by attribute redirect on load</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html index 0b5698f168a..51bbba1cae4 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy-attribute.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AbsoluteOrientationSensor Feature Policy Test: Enabled by attribute</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html index 80ed027b09f..c0b4cc8ed30 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AbsoluteOrientationSensor Feature Policy Test: Enabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html index 6e3e4d49ca7..9ce51ab6448 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/AbsoluteOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>AbsoluteOrientationSensor Feature Policy Test: Enabled on self origin</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html index 2c6318fb6af..9296af8ea6c 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-disabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>RelativeOrientationSensor Feature Policy Test: Disabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html index 71d261f0ea9..01b45b09935 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>RelativeOrientationSensor Feature Policy Test: Enabled by attribute redirect on load</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html index 88c023d6249..1bf41196663 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy-attribute.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>RelativeOrientationSensor Feature Policy Test: Enabled by attribute</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html index 7ec65e0609d..7ea2fb50f3b 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>RelativeOrientationSensor Feature Policy Test: Enabled</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html index 4828d0bc905..6d677bf0d42 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <body> +<title>RelativeOrientationSensor Feature Policy Test: Enabled on self origin</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/feature-policy/resources/featurepolicy.js"></script> diff --git a/tests/wpt/web-platform-tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html b/tests/wpt/web-platform-tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html index eb58b6a7ece..fd66493bf4f 100644 --- a/tests/wpt/web-platform-tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html +++ b/tests/wpt/web-platform-tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html @@ -22,7 +22,7 @@ test(() => { try { new PaymentRequestUpdateEvent("test"); } catch (err) { - assert_true(false, `Unexpected exception: ${err.message}`); + assert_unreached(`Unexpected exception: ${err.message}`); } }, "PaymentRequestUpdateEvent can be constructed in secure-context"); diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-abort-method.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-abort-method.https.html index 8fc4bafcf04..cfcdb75a66b 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-request-abort-method.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-request-abort-method.https.html @@ -43,7 +43,7 @@ promise_test(async t => { try { await request.abort(); } catch (err) { - assert_true(false, "Unexpected promise rejection: " + err.message); + assert_unreached("Unexpected promise rejection: " + err.message); } // The request is now "closed", so... await promise_rejects(t, "InvalidStateError", request.abort()); @@ -55,7 +55,7 @@ promise_test(async t => { try { await request.abort(); } catch (err) { - assert_true(false, "Unexpected promise rejection: " + err.message); + assert_unreached("Unexpected promise rejection: " + err.message); } await promise_rejects(t, "AbortError", acceptPromise); // As request is now "closed", trying to show it will fail diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-constructor-crash.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-constructor-crash.https.html index 1d0b88d2a1c..1325681a4ac 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-request-constructor-crash.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-request-constructor-crash.https.html @@ -81,7 +81,7 @@ test(() => { try { new PaymentRequest(evilMethods, defaultDetails); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } // Now, let's add an abusive amount of methods. while (evilMethods.length < ABUSIVE_AMOUNT) { @@ -92,7 +92,6 @@ test(() => { } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, "Don't crash if there is an abusive number of payment methods in the methodData sequence"); // PaymentMethodData.supportedMethods @@ -102,18 +101,19 @@ test(() => { try { new PaymentRequest([{ supportedMethods }], defaultDetails); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } // Now, we make supportedMethods super large - const evilMethodData = [{ - supportedMethods: supportedMethods.repeat(ABUSIVE_AMOUNT), - }]; + const evilMethodData = [ + { + supportedMethods: supportedMethods.repeat(ABUSIVE_AMOUNT), + }, + ]; try { new PaymentRequest(evilMethodData, defaultDetails); } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, "Don't crash if PaymentMethodData.supportedMethods is an abusive length"); // PaymentDetailsInit.id @@ -126,7 +126,7 @@ test(() => { Object.assign({}, defaultDetails, { id }) ); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } // Now, we make the id super large; const evilDetails = Object.assign({}, defaultDetails, { @@ -137,7 +137,6 @@ test(() => { } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, "Don't crash if the request id has an abusive length"); // PaymentDetailsInit.total.label @@ -147,7 +146,7 @@ test(() => { try { new PaymentRequest(defaultMethods, evilDetails); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } // Now, we make the label super large; evilDetails.total = { @@ -159,7 +158,6 @@ test(() => { } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, "Don't crash if PaymentDetailsInit.total.label is an abusive length"); test(() => { @@ -168,7 +166,7 @@ test(() => { try { new PaymentRequest(defaultMethods, evilDetails); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } // Now, we can use evilAmount evilDetails.total = evilAmount; @@ -177,7 +175,6 @@ test(() => { } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, "Don't crash if total.amount.value is an abusive length"); for (const [prop, defaultValue] of [ @@ -191,7 +188,7 @@ for (const [prop, defaultValue] of [ try { new PaymentRequest(defaultMethods, evilDetails); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } while (evilDetails[prop].length < ABUSIVE_AMOUNT) { evilDetails[prop] = evilDetails[prop].concat(evilDetails[prop]); @@ -202,7 +199,6 @@ for (const [prop, defaultValue] of [ } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, `Don't crash if details.${prop} has an abusive number of items`); } @@ -214,7 +210,7 @@ test(() => { try { new PaymentRequest(defaultMethods, evilDetails); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } // Now, we make the label super large; evilShippingOption.label = "l".repeat(ABUSIVE_AMOUNT); @@ -223,7 +219,6 @@ test(() => { } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, "Don't crash if PaymentShippingOptions.label is an abusive length"); test(() => { @@ -234,7 +229,7 @@ test(() => { try { new PaymentRequest(defaultMethods, evilDetails); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } // Now, we make use of evilAmount; evilShippingOption.amount = evilAmount; @@ -243,7 +238,6 @@ test(() => { } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, "Don't crash if the PaymentShippingOptions.amount.value is an abusive length"); test(() => { @@ -254,7 +248,7 @@ test(() => { try { new PaymentRequest(defaultMethods, evilDetails); } catch (err) { - assert_true(false, "failed smoke test: " + err.stack); + assert_unreached("failed smoke test: " + err.stack); } // Now, we make the label super large; evilDisplayItem.label = "l".repeat(ABUSIVE_AMOUNT); @@ -263,8 +257,5 @@ test(() => { } catch (err) { assert_equals(err.name, "TypeError", "must be a TypeError"); } - assert_true(true, "Didn't crash"); }, "Don't crash if PaymentItem.label is an abusive length"); - - </script> diff --git a/tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.html b/tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.html new file mode 100644 index 00000000000..eb660f7125a --- /dev/null +++ b/tests/wpt/web-platform-tests/performance-timeline/po-takeRecords.html @@ -0,0 +1,39 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>PerformanceObserver: takeRecords</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="performanceobservers.js"></script> +<script> + async_test(function (t) { + const observer = new PerformanceObserver(function (entryList, observer) { + assert_unreached('This callback should not have been called.') + }); + let entries = observer.takeRecords(); + checkEntries(entries, [], 'No records before observe'); + observer.observe({entryTypes: ['mark']}); + assert_equals(typeof(observer.takeRecords), 'function'); + entries = observer.takeRecords(); + checkEntries(entries, [], 'No records just from observe'); + performance.mark('a'); + performance.mark('b'); + entries = observer.takeRecords(); + checkEntries(entries, [ + {entryType: 'mark', name: 'a'}, + {entryType: 'mark', name: 'b'} + ]); + performance.mark('c'); + performance.mark('d'); + performance.mark('e'); + entries = observer.takeRecords(); + checkEntries(entries, [ + {entryType: 'mark', name: 'c'}, + {entryType: 'mark', name: 'd'}, + {entryType: 'mark', name: 'e'} + ]); + entries = observer.takeRecords(); + checkEntries(entries, [], 'No entries right after takeRecords'); + observer.disconnect(); + t.done(); + }, "Test PerformanceObserver's takeRecords()"); +</script> diff --git a/tests/wpt/web-platform-tests/pointerlock/movementX_Y_basic-manual.html b/tests/wpt/web-platform-tests/pointerlock/movementX_Y_basic-manual.html index 1e8fc1f53aa..c058d24a6e5 100644 --- a/tests/wpt/web-platform-tests/pointerlock/movementX_Y_basic-manual.html +++ b/tests/wpt/web-platform-tests/pointerlock/movementX_Y_basic-manual.html @@ -30,14 +30,14 @@ <div id="status-log">Waiting... Click to start loging.</div> <div class="data-log"> - <table> - <tr><td></td><td>X</td><td>Y</td></tr> - <tr><td>client_init:</td><td id="clientX_init-log">X</td><td id="clientY_init-log">Y</td></tr> - <tr><td>client_last:</td><td id="clientX_last-log">X</td><td id="clientY_last-log">Y</td></tr> - <tr><td>client_delta:</td><td id="clientX_delta-log">X</td><td id="clientY_delta-log">Y</td></tr> - <tr><td>movement_sum:</td><td id="movementX_sum-log">X</td><td id="movementY_sum-log">Y</td></tr> - <tr><td>movement:</td><td id="movementX-log">X</td><td id="movementY-log">Y</td></tr> - </table> + <table> + <tr><td></td><td>X</td><td>Y</td></tr> + <tr><td>screen_init:</td><td id="screenX_init-log">X</td><td id="screenY_init-log">Y</td></tr> + <tr><td>screen_last:</td><td id="screenX_last-log">X</td><td id="screenY_last-log">Y</td></tr> + <tr><td>screen_delta:</td><td id="screenX_delta-log">X</td><td id="screenY_delta-log">Y</td></tr> + <tr><td>movement_sum:</td><td id="movementX_sum-log">X</td><td id="movementY_sum-log">Y</td></tr> + <tr><td>movement:</td><td id="movementX-log">X</td><td id="movementY-log">Y</td></tr> + </table> </div> <hr/> @@ -49,16 +49,16 @@ movementY_log = document.querySelector('#movementY-log'), movementX_sum_log = document.querySelector('#movementX_sum-log'), movementY_sum_log = document.querySelector('#movementY_sum-log'), - clientX_init_log = document.querySelector('#clientX_init-log'), - clientY_init_log = document.querySelector('#clientY_init-log'), - clientX_last_log = document.querySelector('#clientX_last-log'), - clientY_last_log = document.querySelector('#clientY_last-log'); - clientX_delta_log = document.querySelector('#clientX_delta-log'), - clientY_delta_log = document.querySelector('#clientY_delta-log'); + screenX_init_log = document.querySelector('#screenX_init-log'), + screenY_init_log = document.querySelector('#screenY_init-log'), + screenX_last_log = document.querySelector('#screenX_last-log'), + screenY_last_log = document.querySelector('#screenY_last-log'); + screenX_delta_log = document.querySelector('#screenX_delta-log'), + screenY_delta_log = document.querySelector('#screenY_delta-log'); var click_counter = 0; - var clientX_init, clientY_init, movementX, movementY, movementX_sum, movementY_sum, clientX_last, clientY_last; + var screenX_init, screenY_init, movementX, movementY, movementX_sum, movementY_sum, screenX_last, screenY_last; var movementX_Y_inside_window_Test = async_test("Test that movementX/Y = eNow.screenX/Y-ePrevious.screenX/Y."); @@ -72,11 +72,9 @@ case 2: status_log.innerHTML = "inside window: done"; - // approximately(+/- 10) - // a little drift should be tollerated movementX_Y_inside_window_Test.step(function() { - assert_equals(movementX_sum, clientX_last - clientX_init, "sum of movementX = clientX_init - clientX_last"); - assert_equals(movementY_sum, clientY_last - clientY_init, "sum of movementY = clientY_init - clientY_last"); + assert_equals(movementX_sum, screenX_last - screenX_init, "sum of movementX = screenX_last - screenX_init"); + assert_equals(movementY_sum, screenY_last - screenY_init, "sum of movementY = screenY_last - screenY_init"); }); movementX_Y_inside_window_Test.done(); break; @@ -88,32 +86,39 @@ movementY = e.movementY; if(click_counter === 1) { - if(!clientX_init) { - clientX_init = e.clientX; - clientY_init = e.clientY; - movementX_sum = movementX; - movementY_sum = movementY; + if(!screenX_init) { + screenX_init = screenX_last = e.screenX; + screenY_init = screenY_last = e.screenY; + movementX_sum = 0; + movementY_sum = 0; } + else { + movementX_sum += movementX; + movementY_sum += movementY; - movementX_sum += movementX; - movementY_sum += movementY; + screenX_delta = e.screenX - screenX_last; + screenY_delta = e.screenY - screenY_last; - clientX_last = e.clientX; - clientY_last = e.clientY; - clientX_delta = clientX_last - clientX_init; - clientY_delta = clientY_last - clientY_init; + movementX_Y_inside_window_Test.step(function() { + assert_equals(movementX, screenX_delta, "movementX = screen_delta"); + assert_equals(movementY, screenY_delta, "movementY = screen_delta"); + }); - updateData(); + screenX_last = e.screenX; + screenY_last = e.screenY; + + updateData(); + } } }); function updateData() { - clientX_init_log.innerHTML = clientX_init; - clientY_init_log.innerHTML = clientY_init; - clientX_last_log.innerHTML = clientX_last; - clientY_last_log.innerHTML = clientY_last; - clientX_delta_log.innerHTML = clientX_delta; - clientY_delta_log.innerHTML = clientY_delta; + screenX_init_log.innerHTML = screenX_init; + screenY_init_log.innerHTML = screenY_init; + screenX_last_log.innerHTML = screenX_last; + screenY_last_log.innerHTML = screenY_last; + screenX_delta_log.innerHTML = screenX_delta; + screenY_delta_log.innerHTML = screenY_delta; movementX_log.innerHTML = movementX; movementY_log.innerHTML = movementY; movementX_sum_log.innerHTML = movementX_sum; diff --git a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationConnectionList_onconnectionavailable_receiving-ua.html b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationConnectionList_onconnectionavailable_receiving-ua.html index f1afb684cb0..74d8dfa0ed6 100644 --- a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationConnectionList_onconnectionavailable_receiving-ua.html +++ b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationConnectionList_onconnectionavailable_receiving-ua.html @@ -31,7 +31,7 @@ return receiver.connectionList.then(list => { connections = list.connections; if (action === 'close') { - assert_true(connections.length === number - 1 && connections.includes(connection), + assert_true(connections.length === number - 1 && !connections.includes(connection), 'A closed presentation connection is removed from the set of presentation controllers.'); } else if (action === 'connect') { assert_true(connections.length === number + 1 && connections.includes(connection), diff --git a/tests/wpt/web-platform-tests/proximity/idlharness.html b/tests/wpt/web-platform-tests/proximity/idlharness.html deleted file mode 100644 index 4e30cca04ad..00000000000 --- a/tests/wpt/web-platform-tests/proximity/idlharness.html +++ /dev/null @@ -1,77 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<title>Proximity Events IDL tests</title> -<link rel="author" title="Intel" href="http://www.intel.com"> -<link rel="help" href="http://www.w3.org/TR/proximity/"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/resources/WebIDLParser.js"></script> -<script src="/resources/idlharness.js"></script> -<style> - pre { - display: none; - } -</style> -<div id="log"></div> - -<pre id="untested_idl"> -[Global=Window, Exposed=Window] -interface Window { -}; - -interface Event { -}; - -dictionary EventInit { -}; -</pre> - -<pre id='idl'> -partial interface Window { - attribute EventHandler ondeviceproximity; - attribute EventHandler onuserproximity; -}; - -dictionary DeviceProximityEventInit : EventInit { - double value; - double min; - double max; -}; - -[Constructor (DOMString type, optional DeviceProximityEventInit eventInitDict)] -interface DeviceProximityEvent : Event { - readonly attribute unrestricted double value; - readonly attribute unrestricted double min; - readonly attribute unrestricted double max; -}; - -dictionary UserProximityEventInit : EventInit { - boolean near; -}; - -[Constructor (DOMString type, optional UserProximityEventInit eventInitDict)] -interface UserProximityEvent : Event { - readonly attribute boolean near; -}; -</pre> - -<script> -(function() { - "use strict"; - var idl_array = new IdlArray(); - // replace 'EventHandler' and 'unrestricted double' unrecognised by idlharness.js - var idls = document.getElementById('idl').textContent.replace(/EventHandler/g, 'Function?').replace(/unrestricted double/g, 'double'); - - idl_array.add_untested_idls(document.getElementById('untested_idl').textContent); - idl_array.add_idls(idls); - - idl_array.add_objects({ - Window: ['window'], - DeviceProximityEvent: ['new DeviceProximityEvent("foo")'], - UserProximityEvent: ['new UserProximityEvent("foo")'] - }); - - idl_array.test(); -})(); -</script> - diff --git a/tests/wpt/web-platform-tests/proximity/idlharness.https.html b/tests/wpt/web-platform-tests/proximity/idlharness.https.html new file mode 100644 index 00000000000..2bfc7d1db3f --- /dev/null +++ b/tests/wpt/web-platform-tests/proximity/idlharness.https.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Proximity Sensor IDL tests</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<link rel="help" href="https://w3c.github.io/proximity/"> +<link rel="help" href="https://w3c.github.io/sensors/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script> +"use strict"; + +function doTest([dom, generic_sensor, proximity]) { + const idl_array = new IdlArray(); + idl_array.add_untested_idls(dom); + idl_array.add_untested_idls('interface EventHandler {};'); + idl_array.add_idls(generic_sensor, { only: ['Sensor'] }); + idl_array.add_idls(proximity); + idl_array.add_objects({ + ProximitySensor: ['new ProximitySensor();'] + }); + idl_array.test(); +} + +function fetchText(url) { + return fetch(url).then((response) => response.text()); +} + +promise_test(() => { + return Promise.all([ + "/interfaces/dom.idl", + "/interfaces/generic-sensor.idl", + "/interfaces/proximity.idl", + ].map(fetchText)).then(doTest); +}, "Test IDL implementation of Proximity Sensor"); +</script> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_connection_reuse.html b/tests/wpt/web-platform-tests/resource-timing/resource_connection_reuse.html index c918802bf32..d2bcab912ed 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_connection_reuse.html +++ b/tests/wpt/web-platform-tests/resource-timing/resource_connection_reuse.html @@ -11,12 +11,12 @@ <script src="resources/webperftestharnessextension.js"></script> <script> setup({explicit_done: true}); -var iframe; -var d; -var body; +let iframe; +let d; +let body; -// explicitly test the namespace before we start testing -test_namespace("getEntriesByType"); +// Explicitly test the namespace before we start testing. +test_namespace('getEntriesByType'); function setup_iframe() { iframe = document.getElementById('frameContext'); @@ -30,17 +30,17 @@ function onload_test() { done(); return; } - var context = new PerformanceContext(iframe.contentWindow.performance); - var entries = context.getEntriesByType('resource'); + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); - // when a persistent connection is used, follow-on resources should be included as PerformanceResourceTiming objects + // When a persistent connection is used, follow-on resources should be included as PerformanceResourceTiming objects. test_equals(entries.length, 2, 'There should be 2 PerformanceEntries'); if (entries.length >= 2) { - // when a persistent connection is used, for the resource that reuses the socket, connectStart and connectEnd should have the same value as fetchStart - var entry = entries[1]; - test_equals(entry.fetchStart, entry.connectStart, "connectStart and fetchStart should be the same"); - test_equals(entry.fetchStart, entry.connectEnd, "connectEnd and fetchStart should be the same"); + // When a persistent connection is used, for the resource that reuses the socket, connectStart and connectEnd should have the same value as fetchStart. + const entry = entries[1]; + test_equals(entry.fetchStart, entry.connectStart, 'connectStart and fetchStart should be the same'); + test_equals(entry.fetchStart, entry.connectEnd, 'connectEnd and fetchStart should be the same'); } done(); diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_dedicated_worker.html b/tests/wpt/web-platform-tests/resource-timing/resource_dedicated_worker.html new file mode 100644 index 00000000000..6d27245ab9c --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_dedicated_worker.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing in dedicated workers</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<link rel="stylesheet" href="resources/resource_timing_test0.css" /> +<script> +setup({explicit_done: true}); +const worker = new Worker("resources/worker_with_images.js"); +worker.onmessage = function(event) { + const context = new PerformanceContext(window.performance); + const entries = context.getEntriesByType('resource'); + test_equals(entries.length, 6, "There should be six entries: 4 scripts, 1 stylesheet, and the worker itself"); + done(); +} +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that resources requested by dedicated workers don't appear in the main document.</p> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_dynamic_insertion.html b/tests/wpt/web-platform-tests/resource-timing/resource_dynamic_insertion.html index c669a383803..de3c3d015d1 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_dynamic_insertion.html +++ b/tests/wpt/web-platform-tests/resource-timing/resource_dynamic_insertion.html @@ -10,27 +10,27 @@ <script src="resources/webperftestharness.js"></script> <script src="resources/webperftestharnessextension.js"></script> <script> -// explicitly test the namespace before we start testing +// Explicitly test the namespace before we start testing. test_namespace("getEntriesByType"); -var iframe; +let iframe; function setup_iframe() { iframe = document.getElementById('frameContext'); - var d = iframe.contentWindow.document; - var body = d.createElement('body'); + const d = iframe.contentWindow.document; + const body = d.createElement('body'); d.getElementsByTagName('html')[0].appendChild(body); - var style = d.createElement('link'); + const style = d.createElement('link'); style.rel = 'stylesheet'; style.href = 'resource_timing_test0.css'; body.appendChild(style); - var image = d.createElement('img'); + const image = d.createElement('img'); image.src = 'resource_timing_test0.png'; body.appendChild(image); - var subframe = d.createElement('iframe'); + const subframe = d.createElement('iframe'); subframe.src = 'inject_resource_test.html'; body.appendChild(subframe); } @@ -39,13 +39,13 @@ function onload_test() { done(); return; } - var context = new PerformanceContext(iframe.contentWindow.performance); - var entries = context.getEntriesByType('resource'); + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); - var index = window.location.pathname.lastIndexOf('/'); - var pathname = window.location.pathname.substring(0, index) + '/'; + const index = window.location.pathname.lastIndexOf('/'); + const pathname = window.location.pathname.substring(0, index) + '/'; - var expected_entries = { }; + let expected_entries = { }; expected_entries[ pathname + 'resources/resource_timing_test0.css' ] = 'link', expected_entries[ pathname + 'resources/resource_timing_test0.png' ] = 'img', expected_entries[ pathname + 'resources/inject_resource_test.html' ] = 'iframe', diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_frame_initiator_type.html b/tests/wpt/web-platform-tests/resource-timing/resource_frame_initiator_type.html new file mode 100644 index 00000000000..f6471988624 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_frame_initiator_type.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing frame initiator type</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-initiatortype"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +setup({explicit_done: true}); + +function onload_test() { + const iframe = document.getElementById('frameContext'); + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); + + const index = window.location.pathname.lastIndexOf('/'); + const pathname = window.location.pathname.substring(0, index) + + '/resources/blank_page_green.htm'; + const expected_entries = {}; + expected_entries[pathname] = 'frame'; + + test_resource_entries(entries, expected_entries); + done(); +} +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that the frame initiator type is represented.</p> +<div id="log"></div> +<iframe id="frameContext" onload="onload_test();" src="resources/green_frame.htm" style="width: 250px; height: 250px;"></iframe> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_ignore_data_url.html b/tests/wpt/web-platform-tests/resource-timing/resource_ignore_data_url.html new file mode 100644 index 00000000000..f8ca2f1187e --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_ignore_data_url.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing ignores requests for data: URIs</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-initiatortype"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +let iframe; +function setup_iframe() { + const iframe_content = '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAOTm7AAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="></img>'; + iframe = document.getElementById('frameContext'); + iframe.contentWindow.document.write(iframe_content); +} +function onload_test() { + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); + test_true(entries.length == 0, "entries.length == 0"); +} +window.setup_iframe = setup_iframe; +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that resources with data: URIs aren't present in the Resource Timing buffer.</p> +<div id="log"></div> +<iframe id="frameContext" onload="onload_test();" src="resources/inject_resource_test.html"></iframe> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_ignore_failures.html b/tests/wpt/web-platform-tests/resource-timing/resource_ignore_failures.html new file mode 100644 index 00000000000..fa9e411ea98 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_ignore_failures.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing ignores failed resources</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-initiatortype"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +let iframe; +function setup_iframe() { + const iframe_content = '<img src="resources/non-existing-file.png"></img>'; + iframe = document.getElementById('frameContext'); + iframe.contentWindow.document.write(iframe_content); +} +function onload_test() { + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); + test_true(entries.length == 0, "entries.length == 0"); +} +window.setup_iframe = setup_iframe; +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that failed resources aren't present in the Resource Timing buffer.</p> +<div id="log"></div> +<iframe id="frameContext" onload="onload_test();" src="resources/inject_resource_test.html"></iframe> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html b/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html new file mode 100644 index 00000000000..b7c4c8b257e --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing initiator types</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-initiatortype"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +setup({explicit_done: true, timeout: 30000}); + +let background_loaded = false; +let page_loaded = false; +let ol_font_loaded = false; +let ul_font_loaded = false; +let xhr_loaded = false; + +function check_finished() { + if (!ul_font_loaded) { + ul_font_loaded = check_font_loaded('ul'); + } + if (!ol_font_loaded) { + ol_font_loaded = check_font_loaded('ol'); + } + if (page_loaded && ol_font_loaded && ul_font_loaded && background_loaded && xhr_loaded) { + perform_test(); + } else { + step_timeout(check_finished, 100); + } +} + +function check_font_loaded(type) { + const width_var_name = 'original_width_' + type; + const element_var_name = 'element_' + type; + if (!this.hasOwnProperty(width_var_name)) { + const d = document.getElementById('frameContext').contentWindow.document; + const list = d.createElement(type); + const li = d.createElement('li'); + li.innerHTML = 'width_test'; + list.appendChild(li); + d.getElementsByTagName('body')[0].appendChild(list); + this[element_var_name] = list; + this[width_var_name] = li.offsetHeight; + } + return this[width_var_name] != this[element_var_name].offsetHeight; +} + +function onload_test() { + page_loaded = true; + + const image = document.createElement('img'); + image.src = 'resources/blue.png?id=n1'; + background_loaded = image.complete; + if (!background_loaded) { + image.onload = function() { + background_loaded = true; + } + } + + step_timeout(check_finished, 100); +} + +function perform_test() { + const context = new PerformanceContext(document.getElementById('frameContext').contentWindow.performance); + const entries = context.getEntriesByType('resource'); + + const index = window.location.pathname.lastIndexOf('/'); + const pathname = window.location.pathname.substring(0, index) + '/resources/'; + const font_pathname = window.location.pathname.substring(0, index - 15) + 'fonts/Ahem.ttf'; + + let expected_entries = {}; + expected_entries[font_pathname] = 'css'; + expected_entries[pathname + 'resource_timing_test0.png'] = 'img'; + expected_entries[pathname + 'blank_page_green.htm'] = 'iframe'; + expected_entries[pathname + 'empty_script.js'] = 'script'; + expected_entries[pathname + 'resource_timing_test0.css?id=embed'] = 'embed'; + expected_entries[pathname + 'resource_timing_test0.css?id=n1'] = 'css'; + expected_entries[font_pathname + '?id=n1'] = 'css'; + expected_entries[pathname + 'blue.png?id=1'] = 'css'; + expected_entries[pathname + 'blue.png?id=2'] = 'css'; + expected_entries[pathname + 'blue.png?id=async_xhr'] = 'xmlhttprequest'; + expected_entries[pathname + 'blue.png?id=body'] = 'body'; + expected_entries[pathname + 'blue.png?id=input'] = 'input'; + expected_entries[pathname + 'blue.png?id=n1'] = 'css'; + expected_entries[pathname + 'blue.png?id=object'] = 'object'; + expected_entries[pathname + 'blue.png?id=poster'] = 'video'; + expected_entries[pathname + 'nested.css'] = 'link'; + + test_resource_entries(entries, expected_entries); + done(); +} + +window.on_test_body_created = check_finished; +window.on_async_xhr_done = function() { + xhr_loaded = true; + check_finished(); +} +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that all of the initiator types are represented.</p> +<div id="log"></div> +<iframe id="frameContext" onload="onload_test();" src="resources/all_resource_types.htm" style="width: 250px; height: 250px;"></iframe> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_memory_cached.sub.html b/tests/wpt/web-platform-tests/resource-timing/resource_memory_cached.sub.html new file mode 100644 index 00000000000..236f69fba72 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_memory_cached.sub.html @@ -0,0 +1,84 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing memory cached resources</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-initiatortype"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +setup({explicit_done: true}); +let d; +let iframe; +let iframeBody; +let count = 0; +function onload_prep() { + iframe = document.getElementById('frameContext'); + d = iframe.contentWindow.document; + iframeBody = d.body; + + const image = d.createElement('img'); + image.addEventListener('load', function() { + step_timeout(onload_test, 0); }); + image.src = 'blue.png?id=cached'; + iframeBody.appendChild(image); + + const image2 = d.createElement('img'); + image2.addEventListener('load', function() { + step_timeout(onload_test, 0); }); + image2.src = 'blue.png?id=cached'; + iframeBody.appendChild(image2); +} + +function onload_test() { + ++count; + if (count < 2) + return; + + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); + test_equals(entries.length, 1, "There should be only one entry"); + + const index = window.location.pathname.lastIndexOf('/'); + const pathname = window.location.pathname.substring(0, index); + let expected_entries = {}; + expected_entries[pathname + '/resources/blue.png?id=cached'] = 'img'; + test_resource_entries(entries, expected_entries); + test_greater_than(entries[0].requestStart, 0, 'requestStart should be non-zero on the same-origin request'); + test_greater_or_equals(entries[0].responseEnd, entries[0].startTime, 'responseEnd should not be before startTime'); + test_greater_or_equals(entries[0].duration, 0, 'duration should not be negative'); + + context.clearResourceTimings(); + start_crossorigin_test(); +} +function start_crossorigin_test() { + const image3 = d.createElement('img'); + image3.addEventListener("load", function() { step_timeout(finish_crossorigin_test, 0); }); + image3.src = 'http://{{domains[www1]}}:{{ports[http][1]}}{{location[path]}}/../resources/blue.png?id=cached'; + iframeBody.appendChild(image3); +} +function finish_crossorigin_test() { + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); + test_equals(entries.length, 1, 'There should be one entry in second test'); + test_true(entries[0].name.startsWith('http://{{domains[www1]}}:{{ports[http][1]}}'), 'Entry name should start with cross-origin domain'); + test_true(entries[0].name.endsWith('/resources/blue.png?id=cached'), 'Entry name should end with file name'); + test_equals(entries[0].requestStart, 0, 'requestStart should be 0 on the cross-origin request'); + done(); +} +window.setup_iframe = () => {}; +window.addEventListener('load', onload_prep); +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that a memory cached resource appears in the buffer once.</p> +<div id="log"></div> +<iframe id="frameContext" src="resources/inject_resource_test.html"></iframe> +<img src="resources/blue.png?id=cached"></img> +<img src="http://{{domains[www1]}}:{{ports[http][1]}}{{location[path]}}/../resources/blue.png?id=cached"></img> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_redirects.html b/tests/wpt/web-platform-tests/resource-timing/resource_redirects.html new file mode 100644 index 00000000000..606662afda4 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_redirects.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing redirect names</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +let iframe; +function setup_iframe() { + const iframe_content = + '<link rel="stylesheet" href="/common/redirect.py?location=/resource-timing/resources/resource_timing_test0.css"></link>' + + '<img src="/common/redirect.py?location=/resource-timing/resources/blue.png"></img>' + + '<iframe src="/common/redirect.py?location=/resource-timing/resources/blank_page_green.htm"></iframe>' + + '<script src="/common/redirect.py?location=/resource-timing/resources/empty_script.js"></scr' + 'ipt>' + + '<scr' + 'ipt>' + + 'const xhr = new XMLHttpRequest;' + + 'xhr.open("GET", "/common/redirect.py?location=/resource-timing/resources/blank_page_green.htm?id=xhr", false);' + + 'xhr.send();' + + '</scr' + 'ipt>'; + iframe = document.getElementById('frameContext'); + iframe.contentWindow.document.write(iframe_content); +} +function onload_test() { + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); + + const index = window.location.pathname.lastIndexOf('resource-timing'); + const pathname = window.location.pathname.substring(0, index) + + 'common/redirect.py?location=/resource-timing/resources/'; + let expected_entries = {}; + expected_entries[pathname + 'resource_timing_test0.css'] = 'link'; + expected_entries[pathname + 'blue.png'] = 'img'; + expected_entries[pathname + 'blank_page_green.htm'] = 'iframe'; + expected_entries[pathname + 'empty_script.js'] = 'script'; + expected_entries[pathname + 'blank_page_green.htm?id=xhr'] = 'xmlhttprequest'; + + test_resource_entries(entries, expected_entries); +} +window.setup_iframe = setup_iframe; +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that redirects do not alter the URL.</p> +<div id="log"></div> +<iframe id="frameContext" onload="onload_test();" src="resources/inject_resource_test.html"></iframe> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_reparenting.html b/tests/wpt/web-platform-tests/resource-timing/resource_reparenting.html new file mode 100644 index 00000000000..7d4947fa770 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_reparenting.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing reparenting elements</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-initiatortype"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +let iframe; +function setup_iframe() { + iframe = document.getElementById('frameContext'); + const d = iframe.contentWindow.document; + const iframeBody = d.createElement('body'); + + const move_to_parent = d.createElement('img'); + move_to_parent.src = 'blue.png?id=move_to_parent'; + iframeBody.appendChild(move_to_parent); + iframeBody.removeChild(move_to_parent); + + const parentBody = document.getElementsByTagName('body')[0]; + parentBody.appendChild(move_to_parent); + + const move_to_child = document.createElement('img'); + move_to_child.src = 'blue.png?id=move_to_child'; + parentBody.appendChild(move_to_child); + parentBody.removeChild(move_to_child); + iframeBody.appendChild(move_to_child); +} +function onload_test() { + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); + + const index = window.location.pathname.lastIndexOf('/'); + const pathname = window.location.pathname.substring(0, index); + let expected_entries = {}; + expected_entries[pathname + '/resources/blue.png?id=move_to_child'] = 'img'; + + test_resource_entries(entries, expected_entries); +} +window.setup_iframe = setup_iframe; +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that reparenting an element doesn't change the initiator document.</p> +<div id="log"></div> +<iframe id="frameContext" onload="onload_test();" src="resources/inject_resource_test.html"></iframe> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_script_types.html b/tests/wpt/web-platform-tests/resource-timing/resource_script_types.html new file mode 100644 index 00000000000..898fa0cee2c --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_script_types.html @@ -0,0 +1,72 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<title>Resource Timing script initiator types</title> +<link rel="author" title="Google" href="http://www.google.com/" /> +<link rel="help" href="http://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-initiatortype"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/webperftestharness.js"></script> +<script src="resources/webperftestharnessextension.js"></script> +<script> +setup({explicit_done: true}); +let iframe; +function setup_iframe() { + const iframe_content = + '<script src="empty_script.js?id=1"></scr' + 'ipt>' + + '<script src="empty_script.js?id=2" async></scr' + 'ipt>' + + '<script src="empty_script.js?id=3" async=false></scr' + 'ipt>' + + '<script src="empty_script.js?id=4" defer></scr' + 'ipt>' + + '<script>' + + 'document.write("<script src=\\"empty_script.js?id=5\\"></scr" + "ipt>");' + + 'const s1 = document.createElement("script");' + + 's1.src = "empty_script.js?id=6";' + + 'document.getElementsByTagName("head")[0].appendChild(s1);' + + 'const s2 = document.createElement("script");' + + 's2.src = "empty_script.js?id=7";' + + 's2.async = true;' + + 'document.getElementsByTagName("head")[0].appendChild(s2);' + + 'const s3 = document.createElement("script");' + + 's3.src = "empty_script.js?id=8";' + + 's3.async = false;' + + 'document.getElementsByTagName("head")[0].appendChild(s3);' + + 'const s4 = document.createElement("script");' + + 's4.src = "empty_script.js?id=9";' + + 's4.defer = true;' + + 'document.getElementsByTagName("head")[0].appendChild(s4);' + + '</scr' + 'ipt>'; + iframe = document.getElementById('frameContext'); + iframe.contentWindow.document.write(iframe_content); +} +function onload_test() { + const context = new PerformanceContext(iframe.contentWindow.performance); + const entries = context.getEntriesByType('resource'); + + const index = window.location.pathname.lastIndexOf('/'); + const pathname = window.location.pathname.substring(0, index) + + '/resources/empty_script.js?id='; + let expected_entries = {}; + expected_entries[pathname + '1'] = 'script'; + expected_entries[pathname + '2'] = 'script'; + expected_entries[pathname + '3'] = 'script'; + expected_entries[pathname + '4'] = 'script'; + expected_entries[pathname + '5'] = 'script'; + expected_entries[pathname + '6'] = 'script'; + expected_entries[pathname + '7'] = 'script'; + expected_entries[pathname + '8'] = 'script'; + expected_entries[pathname + '9'] = 'script'; + + test_resource_entries(entries, expected_entries); + done(); +} +window.setup_iframe = setup_iframe; +</script> +</head> +<body> +<h1>Description</h1> +<p>This test validates that all of the different types of script loads are reported with the correct initiator.</p> +<div id="log"></div> +<iframe id="frameContext" onload="onload_test();" src="resources/inject_resource_test.html"></iframe> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/all_resource_types.htm b/tests/wpt/web-platform-tests/resource-timing/resources/all_resource_types.htm new file mode 100644 index 00000000000..41789d869cf --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/all_resource_types.htm @@ -0,0 +1,49 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> + <title>All Resource Types Test Page</title> + </head> + <body background='blue.png?id=body'> + <script> + if (window.parent.hasOwnProperty('on_test_body_created')) + window.parent.on_test_body_created(); + </script> + <link rel="stylesheet" href="nested.css"></link> + <img src="resource_timing_test0.png"></img> + <iframe src="blank_page_green.htm" width="100px" height="100px"></iframe> + <script src="empty_script.js"></script> + <script> + var async_xhr = new XMLHttpRequest; + async_xhr.open('GET', 'blue.png?id=async_xhr', true); + async_xhr.onreadystatechange = function() { + if (async_xhr.readyState == 4 && async_xhr.status == 200 && parent.hasOwnProperty('on_async_xhr_done')) + parent.on_async_xhr_done(); + } + async_xhr.send(); + </script> + <style> + @font-face { + font-family: remoteFontAhem; + src: url('/fonts/Ahem.ttf'); + } + iframe { + background: url('blue.png?id=1'); + } + ul { + font-family: remoteFontAhem; + list-style-image: url('blue.png?id=2'); + } + </style> + <ul> + <li>Test</li> + </ul> + <ol> + <li>Test</li> + </ol> + <embed src="resource_timing_test0.css?id=embed" type="text/css"></embed> + <input type="image" src="blue.png?id=input"></input> + <object type="image/png" data="blue.png?id=object"></object> + <video poster="blue.png?id=poster"></video> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/blank_page_green.htm b/tests/wpt/web-platform-tests/resource-timing/resources/blank_page_green.htm new file mode 100644 index 00000000000..b8a1947b77e --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/blank_page_green.htm @@ -0,0 +1,10 @@ +<!DOCTYPE HTML> +<html> + <head> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> + <title>Green Test Page</title> + </head> + <body style="background-color:#00FF00;"> + <h1>Placeholder</h1> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/empty_script.js b/tests/wpt/web-platform-tests/resource-timing/resources/empty_script.js new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/empty_script.js diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/green_frame.htm b/tests/wpt/web-platform-tests/resource-timing/resources/green_frame.htm new file mode 100644 index 00000000000..c91f44abf32 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/green_frame.htm @@ -0,0 +1,7 @@ +<html> + <head> + <frameset> + <frame src="blank_page_green.htm"> + </frameset> + </head> +</html> diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/nested.css b/tests/wpt/web-platform-tests/resource-timing/resources/nested.css new file mode 100644 index 00000000000..90d61b04acc --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/nested.css @@ -0,0 +1,10 @@ +@import "resource_timing_test0.css?id=n1"; + +@font-face { + font-family: remoteFont; + src: url('/fonts/Ahem.ttf?id=n1'); +} +ol { + font-family: remoteFont; + list-style-image: url('blue.png?id=n1'); +} diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/worker_with_images.js b/tests/wpt/web-platform-tests/resource-timing/resources/worker_with_images.js new file mode 100644 index 00000000000..2d7688fcf99 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/worker_with_images.js @@ -0,0 +1,21 @@ +let numComplete = 0; + +function checkDone() { + ++numComplete; + if (numComplete == 2) { + postMessage(''); + } +} + +function makeRequest(request) { + var xhr = new XMLHttpRequest; + xhr.open('get', request, true); + xhr.onreadystatechange = function() { + if (xhr.readyState == 4) { + checkDone(); + } + } + xhr.send(); +} +makeRequest('blue.png'); +makeRequest('resource_timing_test0.png'); diff --git a/tests/wpt/web-platform-tests/resource-timing/test_resource_timing.js b/tests/wpt/web-platform-tests/resource-timing/test_resource_timing.js index 51a3d2c1fc5..8e729e01356 100644 --- a/tests/wpt/web-platform-tests/resource-timing/test_resource_timing.js +++ b/tests/wpt/web-platform-tests/resource-timing/test_resource_timing.js @@ -183,7 +183,9 @@ function resource_load(expected) }); t["timing_attrs"].step(function test() { - var actual = window.performance.getEntriesByName(expected.name)[0]; + const entries = window.performance.getEntriesByName(expected.name); + assert_equals(entries.length, 1, 'There should be a single matching entry'); + const actual = entries[0]; // Debugging bug 1263428 // Feel free to remove/overwrite this piece of code @@ -191,18 +193,18 @@ function resource_load(expected) assert_true(false, "actual: "+JSON.stringify(actual)); } - assert_equals(actual.redirectStart, 0, "redirectStart time"); - assert_equals(actual.redirectEnd, 0, "redirectEnd time"); + assert_equals(actual.redirectStart, 0, 'redirectStart should be 0'); + assert_equals(actual.redirectEnd, 0, 'redirectEnd should be 0'); assert_true(actual.secureConnectionStart == undefined || - actual.secureConnectionStart == 0, "secureConnectionStart time"); - assert_equals(actual.fetchStart, actual.startTime, "fetchStart is equal to startTime"); - assert_greater_than_equal(actual.domainLookupStart, actual.fetchStart, "domainLookupStart after fetchStart"); - assert_greater_than_equal(actual.domainLookupEnd, actual.domainLookupStart, "domainLookupEnd after domainLookupStart"); - assert_greater_than_equal(actual.connectStart, actual.domainLookupEnd, "connectStart after domainLookupEnd"); - assert_greater_than_equal(actual.connectEnd, actual.connectStart, "connectEnd after connectStart"); - assert_greater_than_equal(actual.requestStart, actual.connectEnd, "requestStart after connectEnd"); - assert_greater_than_equal(actual.responseStart, actual.requestStart, "responseStart after requestStart"); - assert_greater_than_equal(actual.responseEnd, actual.responseStart, "responseEnd after responseStart"); + actual.secureConnectionStart == 0, 'secureConnectionStart should be 0 or undefined'); + assert_equals(actual.fetchStart, actual.startTime, 'fetchStart is equal to startTime'); + assert_greater_than_equal(actual.domainLookupStart, actual.fetchStart, 'domainLookupStart after fetchStart'); + assert_greater_than_equal(actual.domainLookupEnd, actual.domainLookupStart, 'domainLookupEnd after domainLookupStart'); + assert_greater_than_equal(actual.connectStart, actual.domainLookupEnd, 'connectStart after domainLookupEnd'); + assert_greater_than_equal(actual.connectEnd, actual.connectStart, 'connectEnd after connectStart'); + assert_greater_than_equal(actual.requestStart, actual.connectEnd, 'requestStart after connectEnd'); + assert_greater_than_equal(actual.responseStart, actual.requestStart, 'responseStart after requestStart'); + assert_greater_than_equal(actual.responseEnd, actual.responseStart, 'responseEnd after responseStart'); this.done(); }); diff --git a/tests/wpt/web-platform-tests/resources/check-layout-th.js b/tests/wpt/web-platform-tests/resources/check-layout-th.js index 9b83df74ef2..928b0cf2a10 100644 --- a/tests/wpt/web-platform-tests/resources/check-layout-th.js +++ b/tests/wpt/web-platform-tests/resources/check-layout-th.js @@ -171,7 +171,6 @@ window.checkLayout = function(selectorList, callDone = true) } var nodes = document.querySelectorAll(selectorList); nodes = Array.prototype.slice.call(nodes); - nodes.reverse(); var checkedLayout = false; Array.prototype.forEach.call(nodes, function(node) { test(function(t) { diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js index 08d97b57223..23b8651bb13 100644 --- a/tests/wpt/web-platform-tests/resources/testharness.js +++ b/tests/wpt/web-platform-tests/resources/testharness.js @@ -1257,11 +1257,22 @@ policies and contribution forms [3]. if (e instanceof AssertionError) { throw e; } + + assert(typeof e === "object", + "assert_throws", description, + "${func} threw ${e} with type ${type}, not an object", + {func:func, e:e, type:typeof e}); + + assert(e !== null, + "assert_throws", description, + "${func} threw null, not an object", + {func:func}); + if (code === null) { throw new AssertionError('Test bug: need to pass exception to assert_throws()'); } if (typeof code === "object") { - assert(typeof e == "object" && "name" in e && e.name == code.name, + assert("name" in e && e.name == code.name, "assert_throws", description, "${func} threw ${actual} (${actual_name}) expected ${expected} (${expected_name})", {func:func, actual:e, actual_name:e.name, @@ -1340,8 +1351,7 @@ policies and contribution forms [3]. var required_props = { code: name_code_map[name] }; if (required_props.code === 0 || - (typeof e == "object" && - "name" in e && + ("name" in e && e.name !== e.name.toUpperCase() && e.name !== "DOMException")) { // New style exception: also test the name property. @@ -1353,13 +1363,8 @@ policies and contribution forms [3]. //in. It might be an instanceof the appropriate interface on some //unknown other window. TODO: Work around this somehow? - assert(typeof e == "object", - "assert_throws", description, - "${func} threw ${e} with type ${type}, not an object", - {func:func, e:e, type:typeof e}); - for (var prop in required_props) { - assert(typeof e == "object" && prop in e && e[prop] == required_props[prop], + assert(prop in e && e[prop] == required_props[prop], "assert_throws", description, "${func} threw ${e} that is not a DOMException " + code + ": property ${prop} is equal to ${actual}, expected ${expected}", {func:func, e:e, prop:prop, actual:e[prop], expected:required_props[prop]}); diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js.sub.headers new file mode 100644 index 00000000000..6f9cb19400b --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js new file mode 100644 index 00000000000..220cf1aa28d --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js.sub.headers new file mode 100644 index 00000000000..d5ebb5fbffc --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js new file mode 100644 index 00000000000..220cf1aa28d --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js.sub.headers new file mode 100644 index 00000000000..fc2300f8749 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric ; diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js new file mode 100644 index 00000000000..220cf1aa28d --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js.sub.headers new file mode 100644 index 00000000000..d5ed699c5c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric , diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js new file mode 100644 index 00000000000..c32491d0c01 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4,"desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js.sub.headers new file mode 100644 index 00000000000..7b89b475bdc --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric ; dur = 123.4 ; desc = description diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js new file mode 100644 index 00000000000..9b767142e5b --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js.sub.headers new file mode 100644 index 00000000000..dcb056faa88 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric ; desc = description ; dur = 123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js new file mode 100644 index 00000000000..153607bfc56 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js.sub.headers new file mode 100644 index 00000000000..7ebf8c3bfde --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc = "description" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js new file mode 100644 index 00000000000..311cabe5535 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric1","dur":12.3,"desc":"description1"},{"name":"metric2","dur":45.6,"desc":"description2"},{"name":"metric3","dur":78.9,"desc":"description3"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js.sub.headers new file mode 100644 index 00000000000..0389e997904 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric1;dur=12.3;desc=description1,metric2;dur=45.6;desc=description2,metric3;dur=78.9;desc=description3 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js new file mode 100644 index 00000000000..ab8597f9170 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric1"},{"name":"metric2"},{"name":"metric3"},{"name":"metric4"},{"name":"metric5"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js.sub.headers new file mode 100644 index 00000000000..b618a89de9a --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric1,metric2 ,metric3, metric4 , metric5 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js new file mode 100644 index 00000000000..153607bfc56 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js.sub.headers new file mode 100644 index 00000000000..c083f605b37 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="description" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js new file mode 100644 index 00000000000..592475128d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"\t description \t"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js.sub.headers new file mode 100644 index 00000000000..aa51ae040ff --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=" description " diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js new file mode 100644 index 00000000000..d8cc6b72f5a --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"descr\"iption"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js.sub.headers new file mode 100644 index 00000000000..d097b920299 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="descr\"iption" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js new file mode 100644 index 00000000000..6fd97fa66df --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js.sub.headers new file mode 100644 index 00000000000..14eb2f07748 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur=123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js.sub.headers new file mode 100644 index 00000000000..9b131fcb90a --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js.sub.headers new file mode 100644 index 00000000000..7134be2654a --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js.sub.headers new file mode 100644 index 00000000000..465a36b600f --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js.sub.headers new file mode 100644 index 00000000000..3b76de4a05c --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js.sub.headers new file mode 100644 index 00000000000..c54a4d85f52 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js.sub.headers new file mode 100644 index 00000000000..752441eb90d --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js.sub.headers new file mode 100644 index 00000000000..60dbdbb0471 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\\\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js.sub.headers new file mode 100644 index 00000000000..feff2c042d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\\" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js.sub.headers new file mode 100644 index 00000000000..3ca9b6b2603 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\"\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js.sub.headers new file mode 100644 index 00000000000..ae0b8912905 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\"" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js new file mode 100644 index 00000000000..6fd97fa66df --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js.sub.headers new file mode 100644 index 00000000000..8c6fb60f310 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur="123.4" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js.sub.headers new file mode 100644 index 00000000000..24906f3c823 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="\\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js.sub.headers new file mode 100644 index 00000000000..aaceb6babf4 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="\" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js.sub.headers new file mode 100644 index 00000000000..59e01cfa940 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=""\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js.sub.headers new file mode 100644 index 00000000000..d81429ecad0 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=""" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js.sub.headers new file mode 100644 index 00000000000..bfb889515d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\\\\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js.sub.headers new file mode 100644 index 00000000000..ff41d80b69b --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\\\" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js.sub.headers new file mode 100644 index 00000000000..a702069f7d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\\"\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js.sub.headers new file mode 100644 index 00000000000..ecc3756393e --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\\"" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js.sub.headers new file mode 100644 index 00000000000..b13d9f419f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\"\\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js.sub.headers new file mode 100644 index 00000000000..02972236567 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\"\" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js new file mode 100644 index 00000000000..153607bfc56 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js.sub.headers new file mode 100644 index 00000000000..e929723eed6 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=description diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js.sub.headers new file mode 100644 index 00000000000..9dd5cd4a76d --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\""\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js.sub.headers new file mode 100644 index 00000000000..c5a006cd4a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=\""" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js.sub.headers new file mode 100644 index 00000000000..8a04d7c7f67 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="\\\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js new file mode 100644 index 00000000000..b318cb7299b --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"\\"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js.sub.headers new file mode 100644 index 00000000000..8208c16ff31 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="\\" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js.sub.headers new file mode 100644 index 00000000000..e50f42b3777 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="\"\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js new file mode 100644 index 00000000000..993a69024cf --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"\""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js.sub.headers new file mode 100644 index 00000000000..055df4fbd48 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="\"" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js.sub.headers new file mode 100644 index 00000000000..5d7ef807f6c --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=""\\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js.sub.headers new file mode 100644 index 00000000000..f52c6e8ae27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=""\" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js.sub.headers new file mode 100644 index 00000000000..9eeadd38d39 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="""\ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js new file mode 100644 index 00000000000..107695e9d27 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js.sub.headers new file mode 100644 index 00000000000..2dbff3ca6cc --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="""" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js new file mode 100644 index 00000000000..153607bfc56 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js.sub.headers new file mode 100644 index 00000000000..c083f605b37 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="description" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js new file mode 100644 index 00000000000..61ec6915722 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":12.3,"desc":"description1"},{"name":"metric","dur":45.6,"desc":"description2"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js.sub.headers new file mode 100644 index 00000000000..c8ac573fa21 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur=12.3;desc=description1,metric;dur=45.6;desc=description2 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js new file mode 100644 index 00000000000..c32491d0c01 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4,"desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js.sub.headers new file mode 100644 index 00000000000..5825a547c92 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;DuR=123.4;DeSc=description diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js new file mode 100644 index 00000000000..6617af51776 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"MeTrIc","desc":"DeScRiPtIoN"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js.sub.headers new file mode 100644 index 00000000000..f5fcff981c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: MeTrIc;desc=DeScRiPtIoN diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js new file mode 100644 index 00000000000..40faf4106ce --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":0}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js.sub.headers new file mode 100644 index 00000000000..3de0f19046d --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur=foo diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js new file mode 100644 index 00000000000..40faf4106ce --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":0}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js.sub.headers new file mode 100644 index 00000000000..78f670422c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur="foo" diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js new file mode 100644 index 00000000000..4e2b14bbddd --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric1","desc":"description","dur":123.4},{"name":"metric2"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js.sub.headers new file mode 100644 index 00000000000..578232a4ab7 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric1;foo=bar;desc=description;foo=bar;dur=123.4;foo=bar,metric2 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js new file mode 100644 index 00000000000..6fd97fa66df --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js.sub.headers new file mode 100644 index 00000000000..8a220ab50aa --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur=123.4;dur=567.8 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js new file mode 100644 index 00000000000..40faf4106ce --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":0}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js.sub.headers new file mode 100644 index 00000000000..2614e2034cd --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur=foo;dur=567.8 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js new file mode 100644 index 00000000000..13250bbbc53 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description1"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js.sub.headers new file mode 100644 index 00000000000..e5ef56948b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=description1;desc=description2 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js new file mode 100644 index 00000000000..0282f7d51eb --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":0,"desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js.sub.headers new file mode 100644 index 00000000000..5b44836e706 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur;dur=123.4;desc=description diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js new file mode 100644 index 00000000000..c32491d0c01 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4,"desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js.sub.headers new file mode 100644 index 00000000000..5dbc9d65524 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur=123.4;desc=description diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js new file mode 100644 index 00000000000..0282f7d51eb --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":0,"desc":"description"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js.sub.headers new file mode 100644 index 00000000000..bfbddf111a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur=;dur=123.4;desc=description diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js new file mode 100644 index 00000000000..62b744cc143 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js.sub.headers new file mode 100644 index 00000000000..6d605ad8570 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc;desc=description;dur=123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js new file mode 100644 index 00000000000..62b744cc143 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js.sub.headers new file mode 100644 index 00000000000..182a81a7bfd --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=;desc=description;dur=123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js new file mode 100644 index 00000000000..839f8064e6f --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"d1","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js.sub.headers new file mode 100644 index 00000000000..8e9b117988b --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=d1 d2;dur=123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js new file mode 100644 index 00000000000..d64ea0a9dd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric1","desc":"d1"},{"name":"metric2"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js.sub.headers new file mode 100644 index 00000000000..b1dd0cc5b49 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric1;desc=d1 d2,metric2 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js new file mode 100644 index 00000000000..839f8064e6f --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"d1","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js.sub.headers new file mode 100644 index 00000000000..63946cdd084 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="d1" d2;dur=123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js new file mode 100644 index 00000000000..d64ea0a9dd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric1","desc":"d1"},{"name":"metric2"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js.sub.headers new file mode 100644 index 00000000000..bddbb2cbb6c --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric1;desc="d1" d2,metric2 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js new file mode 100644 index 00000000000..220cf1aa28d --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js.sub.headers new file mode 100644 index 00000000000..5fe55cc32ad --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric== ""foo;dur=123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js new file mode 100644 index 00000000000..4077b26a610 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric1"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js.sub.headers new file mode 100644 index 00000000000..27dabbe090a --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric1== ""foo,metric2 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js new file mode 100644 index 00000000000..40faf4106ce --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","dur":0}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js.sub.headers new file mode 100644 index 00000000000..55282410e7e --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;dur foo=12 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js new file mode 100644 index 00000000000..9b767142e5b --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js.sub.headers new file mode 100644 index 00000000000..c6369005d8e --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc=description;dur=123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js new file mode 100644 index 00000000000..220cf1aa28d --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js.sub.headers new file mode 100644 index 00000000000..aa8f70bd90c --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;foo dur=12 diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js.sub.headers new file mode 100644 index 00000000000..26fcf28e39e --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js.sub.headers new file mode 100644 index 00000000000..74e059fd74c --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: = diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js.sub.headers new file mode 100644 index 00000000000..eeaebdf48f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: [ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js.sub.headers new file mode 100644 index 00000000000..b4f3c562f6b --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: ] diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js.sub.headers new file mode 100644 index 00000000000..9a3684d48e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: ; diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js.sub.headers new file mode 100644 index 00000000000..79cbd0c4d59 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: , diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js.sub.headers new file mode 100644 index 00000000000..888fa71e64b --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: =; diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js.sub.headers new file mode 100644 index 00000000000..fc40e706cde --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: ;= diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js.sub.headers new file mode 100644 index 00000000000..0516c4cc057 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: =, diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js new file mode 100644 index 00000000000..8581efd93ec --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"aB3!#$%&'*+-.^_`|~"}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js.sub.headers new file mode 100644 index 00000000000..1d1bb026dd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: aB3!#$%&'*+-.^_`|~ diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js.sub.headers new file mode 100644 index 00000000000..03b3909f558 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: ,= diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js.sub.headers new file mode 100644 index 00000000000..680d2a2422e --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: ;, diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js.sub.headers new file mode 100644 index 00000000000..7ab1448b88e --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: ,; diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js new file mode 100644 index 00000000000..8de2c019353 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, []) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js.sub.headers new file mode 100644 index 00000000000..bd079bc62a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: =;, diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js new file mode 100644 index 00000000000..e03b07a2af1 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js @@ -0,0 +1 @@ +testServerTiming(document.currentScript.src, [{"name":"metric","desc":"descr;,=iption","dur":123.4}]) diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js.sub.headers b/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js.sub.headers new file mode 100644 index 00000000000..c385706d334 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js.sub.headers @@ -0,0 +1 @@ +Server-Timing: metric;desc="descr;,=iption";dur=123.4 diff --git a/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.html b/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.html new file mode 100644 index 00000000000..a598a715b82 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<!-- +tests generated by: + https://github.com/cvazac/generate-server-timing-tests +--> + +<head> + <meta charset='utf-8' /> + <script src="/resources/testharness.js"></script> + <script src='/resources/testharnessreport.js'></script> + <script src="/common/performance-timeline-utils.js"></script> + <script> + setup({explicit_done: true}) + function testServerTiming(resource, expectedResults) { + const {serverTiming} = performance.getEntriesByName(resource)[0] + const fileName = resource.substring(resource.lastIndexOf('/') + 1) + test_equals(serverTiming.length, expectedResults.length, `${fileName} - count (${serverTiming.length} ?== ${expectedResults.length})`) + + expectedResults.forEach(function(expectedResult, i) { + const dur = expectedResult.dur || 0 + const desc = expectedResult.desc || '' + const index = expectedResults.length === 1 ? '' : `[${i}].` + test_equals(expectedResult.name, serverTiming[i].name, + `${fileName} - ${index}name (${expectedResult.name} ?== ${serverTiming[i].name})`) + test_equals(dur, serverTiming[i].duration, + `${fileName} - ${index}duration (${dur} ?== ${serverTiming[i].duration})`) + test_equals(desc, serverTiming[i].description, + `${fileName} - ${index}description (${desc} ?== ${serverTiming[i].description})`) + }) + } + for (let i = 0; i <= 83; i++) { + var script = document.createElement('script') + script.src = `./resources/parsing/${i}.js` + document.getElementsByTagName('head')[0].appendChild(script) + } + window.addEventListener('load', done) + </script> +</head> diff --git a/tests/wpt/web-platform-tests/server-timing/test_server_timing.html b/tests/wpt/web-platform-tests/server-timing/test_server_timing.html index fa100301f14..2d43aa2d43b 100644 --- a/tests/wpt/web-platform-tests/server-timing/test_server_timing.html +++ b/tests/wpt/web-platform-tests/server-timing/test_server_timing.html @@ -3,7 +3,6 @@ <meta charset='utf-8' /> <script src="/resources/testharness.js"></script> <script src='/resources/testharnessreport.js'></script> - <script src='resources/webperftestharness.js'></script> <script src="/common/performance-timeline-utils.js"></script> <script> setup({explicit_done: true}) diff --git a/tests/wpt/web-platform-tests/svg/OWNERS b/tests/wpt/web-platform-tests/svg/OWNERS index 852a7475d52..54ae635434f 100644 --- a/tests/wpt/web-platform-tests/svg/OWNERS +++ b/tests/wpt/web-platform-tests/svg/OWNERS @@ -2,3 +2,4 @@ @nikosandronikos @boggydigital @ewilligers +@AmeliaBR diff --git a/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/properties.svg b/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/properties.svg index a89e1e59597..b92a6d1d15b 100644 --- a/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/properties.svg +++ b/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/properties.svg @@ -23,29 +23,34 @@ <script><![CDATA[ test(function() { var first = document.getElementById('first'); - var second = document.getElementById('second'); - var third = document.getElementById('third'); - var fourth = document.getElementById('fourth'); - assert_equals(getComputedStyle(first).x, "0px"); assert_equals(getComputedStyle(first).y, "0px"); assert_equals(getComputedStyle(first).width, "auto"); assert_equals(getComputedStyle(first).height, "auto"); + }, 'width and height default to auto'); + test(function() { + var second = document.getElementById('second'); assert_equals(getComputedStyle(second).x, "10px"); assert_equals(getComputedStyle(second).y, "20px"); assert_equals(getComputedStyle(second).width, "30px"); assert_equals(getComputedStyle(second).height, "40px"); + }, 'style rules are applied'); + test(function() { + var third = document.getElementById('third'); assert_equals(getComputedStyle(third).x, "50px"); assert_equals(getComputedStyle(third).y, "60px"); assert_equals(getComputedStyle(third).width, "70px"); assert_equals(getComputedStyle(third).height, "80px"); + }, 'attributes set properties'); + test(function() { + var fourth = document.getElementById('fourth'); assert_equals(getComputedStyle(fourth).x, "10px"); assert_equals(getComputedStyle(fourth).y, "20px"); assert_equals(getComputedStyle(fourth).width, "30px"); assert_equals(getComputedStyle(fourth).height, "40px"); - }); + }, 'style rules override attributes'); ]]></script> </svg> diff --git a/tests/wpt/web-platform-tests/svg/path/closepath/segment-completing-ref.svg b/tests/wpt/web-platform-tests/svg/path/closepath/segment-completing-ref.svg new file mode 100644 index 00000000000..cc068cefe32 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/closepath/segment-completing-ref.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + width="300" height="200"> + <style> + path { + stroke: blue; + } + </style> + <path d="M 10 10 z m 20 70 h 10 v 10 h -10 l 0 -10 M 70 30 q 20 0 20 20 t -20 20 t -20 -20 T 70 30" /> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/path/closepath/segment-completing.svg b/tests/wpt/web-platform-tests/svg/path/closepath/segment-completing.svg new file mode 100644 index 00000000000..5b72c494b3b --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/closepath/segment-completing.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + width="300" height="200"> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#paths-PathDataClosePathCommand"/> + <h:link rel="match" href="segment-completing-ref.svg"/> + <h:meta name="assert" content="initial subpath point used to complete segment."/> + </metadata> + <style> + path { + stroke: blue; + } + </style> + <path d="M 10 10 z m 20 70 h 10 v 10 h -10 l z M 70 30 q 20 0 20 20 t -20 20 t -20 -20 T z" /> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/path/distance/pathLength-positive-ref.svg b/tests/wpt/web-platform-tests/svg/path/distance/pathLength-positive-ref.svg new file mode 100644 index 00000000000..9a9a1a8d473 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/distance/pathLength-positive-ref.svg @@ -0,0 +1,32 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="300" height="200" viewBox="0 0 300 200"> + + <defs> + <path id="track" stroke="lightblue" fill="none" + d="M 50 50 h 200"/> + </defs> + + <g> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="0%">The quick brown fox</textPath> + </text> + </g> + + <g transform="translate(0,50)"> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="50%">The quick brown fox</textPath> + </text> + </g> + + <g transform="translate(0,100)"> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="-50%">The quick brown fox</textPath> + </text> + </g> + +</svg> + diff --git a/tests/wpt/web-platform-tests/svg/path/distance/pathLength-positive.svg b/tests/wpt/web-platform-tests/svg/path/distance/pathLength-positive.svg new file mode 100644 index 00000000000..b40d6b82b55 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/distance/pathLength-positive.svg @@ -0,0 +1,39 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="300" height="200" viewBox="0 0 300 200"> + + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/paths.html#PathLengthAttribute"/> + <h:link rel="match" href="pathLength-positive-ref.svg"/> + <h:meta name="assert" content="pathLength scales distance along the path"/> + </metadata> + + <defs> + <path id="track" stroke="lightblue" fill="none" + d="M 50 50 h 200" pathLength="2"/> + </defs> + + <g> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="0">The quick brown fox</textPath> + </text> + </g> + + <g transform="translate(0,50)"> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="1">The quick brown fox</textPath> + </text> + </g> + + <g transform="translate(0,100)"> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="-1">The quick brown fox</textPath> + </text> + </g> + +</svg> + diff --git a/tests/wpt/web-platform-tests/svg/path/distance/pathLength-zero-ref.svg b/tests/wpt/web-platform-tests/svg/path/distance/pathLength-zero-ref.svg new file mode 100644 index 00000000000..d5556add663 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/distance/pathLength-zero-ref.svg @@ -0,0 +1,26 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="300" height="200" viewBox="0 0 300 200"> + + <defs> + <path id="track" stroke="lightblue" fill="none" + d="M 50 50 h 200"/> + </defs> + + <g> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="0%">The quick brown fox</textPath> + </text> + </g> + + <g transform="translate(0,50)"> + <use xlink:href="#track"/> + </g> + + <g transform="translate(0,100)"> + <use xlink:href="#track"/> + </g> + +</svg> + diff --git a/tests/wpt/web-platform-tests/svg/path/distance/pathLength-zero.svg b/tests/wpt/web-platform-tests/svg/path/distance/pathLength-zero.svg new file mode 100644 index 00000000000..4ae0b836f7f --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/distance/pathLength-zero.svg @@ -0,0 +1,39 @@ +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + xmlns:xlink="http://www.w3.org/1999/xlink" + width="300" height="200" viewBox="0 0 300 200"> + + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/paths.html#PathLengthAttribute"/> + <h:link rel="match" href="pathLength-zero-ref.svg"/> + <h:meta name="assert" content="A value of zero is valid and must be treated as a scaling factor of infinity."/> + </metadata> + + <defs> + <path id="track" stroke="lightblue" fill="none" + d="M 50 50 h 200" pathLength="0"/> + </defs> + + <g> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="0">The quick brown fox</textPath> + </text> + </g> + + <g transform="translate(0,50)"> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="1">The quick brown fox</textPath> + </text> + </g> + + <g transform="translate(0,100)"> + <use xlink:href="#track"/> + <text font-family="sans-serif" font-size="28"> + <textPath xlink:href="#track" startOffset="-1">The quick brown fox</textPath> + </text> + </g> + +</svg> + diff --git a/tests/wpt/web-platform-tests/svg/path/error-handling/bounding.svg b/tests/wpt/web-platform-tests/svg/path/error-handling/bounding.svg new file mode 100644 index 00000000000..85c089b25ba --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/error-handling/bounding.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml"> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#paths-PathDataErrorHandling"/> + <h:meta name="assert" content="render up to (but not including) the first error"/> + </metadata> + <g id="container"> + <path transform="translate(90,10)" /> + <path transform="translate(80,20)" d="none" /> + <path transform="translate(70,30)" d="# invalid" /> + <path transform="translate(60,40)" d="m 0 0 l 3 -4 z # ignored suffix v 123" /> + <path transform="translate(50,50)" d="" /> + <path transform="translate(40,60)" d="m 0 0 l -9 11 -123 z # ignore last l parameter" /> + <polygon transform="translate(20,80)" /> + <polyline transform="translate(10,90)" /> + </g> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <script><![CDATA[ + test(function() { + var container = document.getElementById('container'); + var bbox = container.getBBox(); + + // The rendered paths are "m 0 0 l 3 -4 z" and "m 0 0 l -9 11" + assert_equals(bbox.x, 31); + assert_equals(bbox.y, 36); + + assert_equals(bbox.width, 32); + assert_equals(bbox.height, 35); + }); + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/path/error-handling/render-until-error-ref.svg b/tests/wpt/web-platform-tests/svg/path/error-handling/render-until-error-ref.svg new file mode 100644 index 00000000000..dd2d7c32a6b --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/error-handling/render-until-error-ref.svg @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + width="100" height="100"> + <style> + path { + stroke: lime; + } + </style> + <g id="container"> + <path transform="translate(60,40)" d="m 0 0 l 3 -4 z" /> + <path transform="translate(40,60)" d="m 0 0 l -9 11" /> + </g> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/path/error-handling/render-until-error.svg b/tests/wpt/web-platform-tests/svg/path/error-handling/render-until-error.svg new file mode 100644 index 00000000000..6b8a50b4f2f --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/error-handling/render-until-error.svg @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml" + width="100" height="100"> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#paths-PathDataErrorHandling"/> + <h:link rel="match" href="render-until-error-ref.svg"/> + <h:meta name="assert" content="render up to (but not including) the first error"/> + </metadata> + <style> + path { + stroke: lime; + } + </style> + <g id="container"> + <path transform="translate(90,10)" /> + <path transform="translate(80,20)" d="none" /> + <path transform="translate(70,30)" d="# invalid" /> + <path transform="translate(60,40)" d="m 0 0 l 3 -4 z # ignored suffix v 123" /> + <path transform="translate(50,50)" d="" /> + <path transform="translate(40,60)" d="m 0 0 l -9 11 -123 z # ignore last l parameter" /> + <polygon transform="translate(20,80)" /> + <polyline transform="translate(10,90)" /> + </g> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/path/interfaces/SVGAnimatedPathData-removed.svg b/tests/wpt/web-platform-tests/svg/path/interfaces/SVGAnimatedPathData-removed.svg new file mode 100644 index 00000000000..d321b8b0011 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/path/interfaces/SVGAnimatedPathData-removed.svg @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml"> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#changes-paths"/> + <h:link rel="help" href="https://www.w3.org/TR/SVG11/paths.html#InterfaceSVGAnimatedPathData"/> + <h:meta name="assert" content="SVGAnimatedPathData interface is not supported."/> + </metadata> + <path id="track" d="m 10 20 h 30"/> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <script><![CDATA[ + test(function() { + assert_true(window.SVGAnimatedPathData === undefined); + + var track = document.getElementById('track'); + assert_equals(track.__proto__, SVGPathElement.prototype); + assert_true(track.pathSegList === undefined); + assert_true(track.normalizedPathSegList === undefined); + assert_true(track.animatedPathSegList === undefined); + assert_true(track.animatedNormalizedPathSegList === undefined); + }); + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/types/elements/SVGGeometryElement-rect.svg b/tests/wpt/web-platform-tests/svg/types/elements/SVGGeometryElement-rect.svg new file mode 100644 index 00000000000..5391d91ad5a --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/elements/SVGGeometryElement-rect.svg @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" + xmlns:h="http://www.w3.org/1999/xhtml"> + <metadata> + <h:link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#types-InterfaceSVGGeometryElement"/> + <h:meta name="assert" content="SVGGeometryElement members work for rect elements."/> + </metadata> + <style> + rect { + stroke-width: 10; + } + </style> + <rect id="box" x="50" y="50" width="200" height="100" pathLength="6"/> + <h:script src="/resources/testharness.js"/> + <h:script src="/resources/testharnessreport.js"/> + <script><![CDATA[ + test(function() { + var box = document.getElementById('box'); + + assert_equals(box.pathLength.baseVal, 6); + + assert_equals(box.getTotalLength(), 600); + + assert_equals(box.getPointAtLength(210).x, 250); + assert_equals(box.getPointAtLength(210).y, 60); + }, 'getTotalLength and getPointAtLength do not take pathLength into account'); + ]]></script> +</svg> diff --git a/tests/wpt/web-platform-tests/tools/ci/check_stability.py b/tests/wpt/web-platform-tests/tools/ci/check_stability.py index 169962a55e6..322a52140a2 100644 --- a/tests/wpt/web-platform-tests/tools/ci/check_stability.py +++ b/tests/wpt/web-platform-tests/tools/ci/check_stability.py @@ -132,11 +132,6 @@ def get_sha1(): return git("rev-parse", "HEAD").strip() -def install_wptrunner(): - """Install wptrunner.""" - call("pip", "install", wptrunner_root) - - def deepen_checkout(user): """Convert from a shallow checkout to a full one""" fetch_args = [user, "+refs/heads/*:refs/remotes/origin/*"] diff --git a/tests/wpt/web-platform-tests/tools/ci/ci_tools_unittest.sh b/tests/wpt/web-platform-tests/tools/ci/ci_tools_unittest.sh index 6c74a251244..7a54d85ff0a 100755 --- a/tests/wpt/web-platform-tests/tools/ci/ci_tools_unittest.sh +++ b/tests/wpt/web-platform-tests/tools/ci/ci_tools_unittest.sh @@ -16,6 +16,7 @@ fi if [[ $(./wpt test-jobs --includes wptrunner_unittest; echo $?) -eq 0 ]]; then if [ $TOXENV == "py27" ] || [ $TOXENV == "pypy" ]; then + TOXENV="$TOXENV,py27-flake8" cd tools/wptrunner tox fi diff --git a/tests/wpt/web-platform-tests/tools/manifest/XMLParser.py b/tests/wpt/web-platform-tests/tools/manifest/XMLParser.py index 5ceeb0b5f72..523f544b7c4 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/XMLParser.py +++ b/tests/wpt/web-platform-tests/tools/manifest/XMLParser.py @@ -70,8 +70,8 @@ class XMLParser(object): def _end(self, tag): return self._target.end(_fixname(tag)) - def _external(self, context, base, systemId, publicId): - if publicId in { + def _external(self, context, base, system_id, public_id): + if public_id in { "-//W3C//DTD XHTML 1.0 Transitional//EN", "-//W3C//DTD XHTML 1.1//EN", "-//W3C//DTD XHTML 1.0 Strict//EN", diff --git a/tests/wpt/web-platform-tests/tools/manifest/manifest.py b/tests/wpt/web-platform-tests/tools/manifest/manifest.py index b153798d6f9..e466e6ff56a 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/manifest.py +++ b/tests/wpt/web-platform-tests/tools/manifest/manifest.py @@ -2,7 +2,7 @@ import json import os import re from collections import defaultdict -from six import iteritems, itervalues, viewkeys +from six import iteritems, itervalues, viewkeys, string_types from .item import ManualTest, WebdriverSpecTest, Stub, RefTestNode, RefTest, TestharnessTest, SupportFile, ConformanceCheckerTest, VisualTest from .log import get_logger @@ -20,14 +20,6 @@ class ManifestVersionMismatch(ManifestError): pass -def sourcefile_items(args): - tests_root, url_base, rel_path, status = args - source_file = SourceFile(tests_root, - rel_path, - url_base) - return rel_path, source_file.manifest_items() - - class Manifest(object): def __init__(self, url_base="/"): assert url_base is not None @@ -221,7 +213,7 @@ def load(tests_root, manifest): logger = get_logger() # "manifest" is a path or file-like object. - if isinstance(manifest, basestring): + if isinstance(manifest, string_types): if os.path.exists(manifest): logger.debug("Opening manifest at %s" % manifest) else: diff --git a/tests/wpt/web-platform-tests/tools/runner/report.py b/tests/wpt/web-platform-tests/tools/runner/report.py index f4b3fa71661..952df08b805 100644 --- a/tests/wpt/web-platform-tests/tools/runner/report.py +++ b/tests/wpt/web-platform-tests/tools/runner/report.py @@ -1,3 +1,5 @@ +# flake8: noqa + from __future__ import print_function import argparse diff --git a/tests/wpt/web-platform-tests/tools/sslutils/base.py b/tests/wpt/web-platform-tests/tools/sslutils/base.py index e78e1385c7b..237ae5f23cc 100644 --- a/tests/wpt/web-platform-tests/tools/sslutils/base.py +++ b/tests/wpt/web-platform-tests/tools/sslutils/base.py @@ -1,9 +1,3 @@ -def get_logger(name="ssl"): - logger = structured.get_default_logger(name) - if logger is None: - logger = structured.structuredlog.StructuredLogger(name) - return logger - class NoSSLEnvironment(object): ssl_enabled = False diff --git a/tests/wpt/web-platform-tests/tools/tox.ini b/tests/wpt/web-platform-tests/tools/tox.ini index b154c471d6f..159a934eb1a 100644 --- a/tests/wpt/web-platform-tests/tools/tox.ini +++ b/tests/wpt/web-platform-tests/tools/tox.ini @@ -3,8 +3,12 @@ envlist = py27,py36,pypy skipsdist=True [testenv] +# flake8 versions should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini deps = - flake8 + flake8==3.5.0 + pycodestyle==2.3.1 + pyflakes==1.6.0 + pep8-naming==0.4.1 pytest pytest-cov mock @@ -19,6 +23,28 @@ passenv = HYPOTHESIS_PROFILE [flake8] -ignore = E128,E129,E221,E226,E231,E251,E265,E302,E303,E305,E402,E901,F401,F821,F841 +# flake8 config should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini +select = E,W,F,N +# E128: continuation line under-indented for visual indent +# E129: visually indented line with same indent as next logical line +# E221: multiple spaces before operator +# E226: missing whitespace around arithmetic operator +# E231: missing whitespace after ‘,’, ‘;’, or ‘:’ +# E251: unexpected spaces around keyword / parameter equals +# E265: block comment should start with ‘# ‘ +# E302: expected 2 blank lines, found 0 +# E303: too many blank lines (3) +# E305: expected 2 blank lines after end of function or class +# E402: module level import not at top of file +# E731: do not assign a lambda expression, use a def +# E901: SyntaxError or IndentationError +# W601: .has_key() is deprecated, use ‘in’ +# F401: module imported but unused +# F403: ‘from module import *’ used; unable to detect undefined names +# F405: name may be undefined, or defined from star imports: module +# F841: local variable name is assigned to but never used +# N801: class names should use CapWords convention +# N802: function name should be lowercase +ignore = E128,E129,E221,E226,E231,E251,E265,E302,E303,E305,E402,E731,E901,W601,F401,F403,F405,F841,N801,N802 max-line-length = 141 exclude = .tox,html5lib,third_party/py,third_party/pytest,third_party/funcsigs,third_party/attrs,third_party/pluggy/,pywebsocket,six,_venv,webencodings,wptserve/docs,wptserve/tests/functional/docroot/,wpt,wptrunner diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py index ec7d6deccba..622c5fce76a 100644 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py +++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py @@ -4,6 +4,8 @@ import error import protocol import transport +from six import string_types + from mozlog import get_default_logger logger = get_default_logger() @@ -313,7 +315,7 @@ class Cookies(object): cookie = {"name": name, "value": None} - if isinstance(name, (str, unicode)): + if isinstance(name, string_types): cookie["value"] = value elif hasattr(value, "value"): cookie["value"] = value.value diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/protocol.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/protocol.py index 80f358c8b0a..ea0c793accb 100644 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/protocol.py +++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/protocol.py @@ -16,7 +16,7 @@ class Encoder(json.JSONEncoder): return [self.default(x) for x in obj] elif isinstance(obj, webdriver.Element): return {webdriver.Element.identifier: obj.id} - return super(ProtocolEncoder, self).default(obj) + return super(Encoder, self).default(obj) class Decoder(json.JSONDecoder): diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/servo.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/servo.py deleted file mode 100644 index 2e0b722abab..00000000000 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/servo.py +++ /dev/null @@ -1,18 +0,0 @@ -class ServoExtensionCommands(object): - def __init__(self, session): - self.session = session - - @command - def get_prefs(self, *prefs): - body = {"prefs": list(prefs)} - return self.session.send_command("POST", "servo/prefs/get", body) - - @command - def set_prefs(self, prefs): - body = {"prefs": prefs} - return self.session.send_command("POST", "servo/prefs/set", body) - - @command - def reset_prefs(self, *prefs): - body = {"prefs": list(prefs)} - return self.session.send_command("POST", "servo/prefs/reset", body) diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/transport.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/transport.py index b198b194b38..d62271fe957 100644 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/transport.py +++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/transport.py @@ -4,6 +4,7 @@ import urlparse import error +from six import text_type """Implements HTTP transport for the WebDriver wire protocol.""" @@ -135,7 +136,7 @@ class HTTPWireProtocol(object): except ValueError: raise ValueError("Failed to encode request body as JSON:\n" "%s" % json.dumps(body, indent=2)) - if isinstance(payload, unicode): + if isinstance(payload, text_type): payload = body.encode("utf-8") if headers is None: diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py index 40d94d53179..c6cc38afd67 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/browser.py +++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py @@ -4,9 +4,12 @@ import platform import re import shutil import stat +import subprocess +import sys from abc import ABCMeta, abstractmethod from ConfigParser import RawConfigParser from distutils.spawn import find_executable +from io import BytesIO from utils import call, get, untar, unzip @@ -278,6 +281,61 @@ class Chrome(Browser): logger.critical("dbus not running and can't be started") sys.exit(1) +class ChromeAndroid(Browser): + """Chrome-specific interface for android. + + Includes installation, webdriver installation, and wptrunner setup methods. + """ + + product = "chrome_android" + requirements = "requirements_chrome_android.txt" + + def install(self, dest=None): + raise NotImplementedError + + def platform_string(self): + raise NotImplementedError + + def find_webdriver(self): + return find_executable("chromedriver") + + def install_webdriver(self, dest=None): + """Install latest Webdriver.""" + if dest is None: + dest = os.pwd + latest = get("http://chromedriver.storage.googleapis.com/LATEST_RELEASE").text.strip() + url = "http://chromedriver.storage.googleapis.com/%s/chromedriver_%s.zip" % (latest, + self.platform_string()) + unzip(get(url).raw, dest) + + path = find_executable("chromedriver", dest) + st = os.stat(path) + os.chmod(path, st.st_mode | stat.S_IEXEC) + return path + + def version(self, root): + raise NotImplementedError + + def prepare_environment(self): + # https://bugs.chromium.org/p/chromium/issues/detail?id=713947 + logger.debug("DBUS_SESSION_BUS_ADDRESS %s" % os.environ.get("DBUS_SESSION_BUS_ADDRESS")) + if "DBUS_SESSION_BUS_ADDRESS" not in os.environ: + if find_executable("dbus-launch"): + logger.debug("Attempting to start dbus") + dbus_conf = subprocess.check_output(["dbus-launch"]) + logger.debug(dbus_conf) + + # From dbus-launch(1): + # + # > When dbus-launch prints bus information to standard output, + # > by default it is in a simple key-value pairs format. + for line in dbus_conf.strip().split("\n"): + key, _, value = line.partition("=") + os.environ[key] = value + else: + logger.critical("dbus not running and can't be started") + sys.exit(1) + class Opera(Browser): """Opera-specific interface. diff --git a/tests/wpt/web-platform-tests/tools/wpt/install.py b/tests/wpt/web-platform-tests/tools/wpt/install.py index 408744a4a40..d779651c990 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/install.py +++ b/tests/wpt/web-platform-tests/tools/wpt/install.py @@ -39,8 +39,3 @@ def install(name, component, destination): subclass = getattr(browser, name.title()) sys.stdout.write('Now installing %s %s...\n' % (name, component)) getattr(subclass(), method)(dest=destination) - - -if __name__ == '__main__': - args = parser.parse_args() - run(None, **vars(args)) diff --git a/tests/wpt/web-platform-tests/tools/wpt/markdown.py b/tests/wpt/web-platform-tests/tools/wpt/markdown.py index 87018910ac1..8b5ff8079df 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/markdown.py +++ b/tests/wpt/web-platform-tests/tools/wpt/markdown.py @@ -38,18 +38,3 @@ def table(headings, data, log): for row in data: log("|%s|" % "|".join(" %s" % row[i].ljust(max_widths[i] - 1) for i in cols)) log("") - - -def err_string(results_dict, iterations): - """Create and return string with errors from test run.""" - rv = [] - total_results = sum(results_dict.values()) - for key, value in sorted(results_dict.items()): - rv.append("%s%s" % - (key, ": %s/%s" % (value, iterations) if value != iterations else "")) - if total_results < iterations: - rv.append("MISSING: %s/%s" % (iterations - total_results, iterations)) - rv = ", ".join(rv) - if is_inconsistent(results_dict, iterations): - rv = "**%s**" % rv - return rv diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py index d1e3e49519c..f3fbcbdefb0 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/run.py +++ b/tests/wpt/web-platform-tests/tools/wpt/run.py @@ -223,6 +223,28 @@ class Chrome(BrowserSetup): else: raise WptrunError("Unable to locate or install chromedriver binary") +class ChromeAndroid(BrowserSetup): + name = "chrome_android" + browser_cls = browser.ChromeAndroid + + def setup_kwargs(self, kwargs): + if kwargs["webdriver_binary"] is None: + webdriver_binary = self.browser.find_webdriver() + + if webdriver_binary is None: + install = self.prompt_install("chromedriver") + + if install: + print("Downloading chromedriver") + webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path) + else: + print("Using webdriver binary %s" % webdriver_binary) + + if webdriver_binary: + kwargs["webdriver_binary"] = webdriver_binary + else: + raise WptrunError("Unable to locate or install chromedriver binary") + class Opera(BrowserSetup): name = "opera" @@ -321,6 +343,7 @@ class Servo(BrowserSetup): product_setup = { "firefox": Firefox, "chrome": Chrome, + "chrome_android": ChromeAndroid, "edge": Edge, "ie": InternetExplorer, "servo": Servo, diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_stability.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_stability.py new file mode 100644 index 00000000000..f2dd012087c --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_stability.py @@ -0,0 +1,7 @@ +from tools.wpt import stability + +def test_is_inconsistent(): + assert stability.is_inconsistent({"PASS": 10}, 10) is False + assert stability.is_inconsistent({"PASS": 9}, 10) is True + assert stability.is_inconsistent({"PASS": 9, "FAIL": 1}, 10) is True + assert stability.is_inconsistent({"PASS": 8, "FAIL": 1}, 10) is True diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py index d3402174c1a..127ed188f3e 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py +++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py @@ -10,7 +10,8 @@ import pytest from tools.wpt import wpt -# Tests currently don't work on Windows for path reasons +pytestmark = pytest.mark.skipif(os.name == "nt", + reason="Tests currently don't work on Windows for path reasons") def test_missing(): with pytest.raises(SystemExit): @@ -25,6 +26,9 @@ def test_help(): assert excinfo.value.code == 0 +@pytest.mark.slow +@pytest.mark.system_dependent +@pytest.mark.remote_network def test_run_firefox(): # TODO: It seems like there's a bug in argparse that makes this argument order required # should try to work around that @@ -44,6 +48,8 @@ def test_run_firefox(): del os.environ["MOZ_HEADLESS"] +@pytest.mark.slow +@pytest.mark.system_dependent def test_run_chrome(): with pytest.raises(SystemExit) as excinfo: wpt.main(argv=["run", "--yes", "--no-pause", "--binary-arg", "headless", @@ -52,6 +58,8 @@ def test_run_chrome(): assert excinfo.value.code == 0 +@pytest.mark.slow +@pytest.mark.remote_network def test_install_chromedriver(): chromedriver_path = os.path.join(wpt.localpaths.repo_root, "_venv", "bin", "chromedriver") if os.path.exists(chromedriver_path): @@ -63,6 +71,8 @@ def test_install_chromedriver(): os.unlink(chromedriver_path) +@pytest.mark.slow +@pytest.mark.remote_network def test_install_firefox(): fx_path = os.path.join(wpt.localpaths.repo_root, "_venv", "firefox") if os.path.exists(fx_path): @@ -109,6 +119,8 @@ def test_files_changed_ignore_rules(): assert compile_ignore_rule("foobar/baz/**").pattern == "^foobar/baz/.*$" +@pytest.mark.slow # this updates the manifest +@pytest.mark.system_dependent def test_tests_affected(capsys): # This doesn't really work properly for random commits because we test the files in # the current working directory for references to the changed files, not the ones at @@ -121,6 +133,8 @@ def test_tests_affected(capsys): assert "html/browsers/offline/appcache/workers/appcache-worker.html" in out +@pytest.mark.slow +@pytest.mark.system_dependent def test_serve(): def test(): s = socket.socket() diff --git a/tests/wpt/web-platform-tests/tools/wpt/tox.ini b/tests/wpt/web-platform-tests/tools/wpt/tox.ini index 5836a52ffa9..229bc4bfc5c 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/tox.ini +++ b/tests/wpt/web-platform-tests/tools/wpt/tox.ini @@ -1,10 +1,9 @@ [tox] -envlist = py27 +envlist = py27,py27-flake8 skipsdist=True [testenv] deps = - flake8 pytest pytest-cov hypothesis @@ -13,9 +12,41 @@ deps = -r{toxinidir}/../wptrunner/requirements_firefox.txt commands = - pytest --cov - flake8 + pytest --cov {posargs} + +[testenv:py27-flake8] +# flake8 versions should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini +deps = + flake8==3.5.0 + pycodestyle==2.3.1 + pyflakes==1.6.0 + pep8-naming==0.4.1 + +commands = + flake8 {posargs} [flake8] -ignore = E128,E129,E221,E226,E231,E251,E265,E302,E303,E305,E402,E901,F401,F821,F841 +# flake8 config should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini +select = E,W,F,N +# E128: continuation line under-indented for visual indent +# E129: visually indented line with same indent as next logical line +# E221: multiple spaces before operator +# E226: missing whitespace around arithmetic operator +# E231: missing whitespace after ‘,’, ‘;’, or ‘:’ +# E251: unexpected spaces around keyword / parameter equals +# E265: block comment should start with ‘# ‘ +# E302: expected 2 blank lines, found 0 +# E303: too many blank lines (3) +# E305: expected 2 blank lines after end of function or class +# E402: module level import not at top of file +# E731: do not assign a lambda expression, use a def +# E901: SyntaxError or IndentationError +# W601: .has_key() is deprecated, use ‘in’ +# F401: module imported but unused +# F403: ‘from module import *’ used; unable to detect undefined names +# F405: name may be undefined, or defined from star imports: module +# F841: local variable name is assigned to but never used +# N801: class names should use CapWords convention +# N802: function name should be lowercase +ignore = E128,E129,E221,E226,E231,E251,E265,E302,E303,E305,E402,E731,E901,W601,F401,F403,F405,F841,N801,N802 max-line-length = 141 diff --git a/tests/wpt/web-platform-tests/tools/wpt/utils.py b/tests/wpt/web-platform-tests/tools/wpt/utils.py index e1f4cd4bb5c..e8edc0be493 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/utils.py +++ b/tests/wpt/web-platform-tests/tools/wpt/utils.py @@ -27,7 +27,7 @@ class Kwargs(dict): value = value() if not value: if err_fn is not None: - return err_fn(kwargs, "Failed to find %s" % desc) + return err_fn(self, "Failed to find %s" % desc) else: return self[name] = value diff --git a/tests/wpt/web-platform-tests/tools/wpt/virtualenv.py b/tests/wpt/web-platform-tests/tools/wpt/virtualenv.py index 8f36aa93585..b8454c979c2 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/virtualenv.py +++ b/tests/wpt/web-platform-tests/tools/wpt/virtualenv.py @@ -1,4 +1,5 @@ import os +import shutil import sys import logging from distutils.spawn import find_executable @@ -21,7 +22,7 @@ class Virtualenv(object): def create(self): if os.path.exists(self.path): shutil.rmtree(self.path) - call(self.virtualenv, self.path) + call(self.virtualenv, self.path, "-p", sys.executable) @property def bin_path(self): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in b/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in index 2be4d915be1..70839237889 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in +++ b/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in @@ -1,6 +1,5 @@ exclude MANIFEST.in include requirements.txt -include wptrunner/browsers/b2g_setup/* include wptrunner.default.ini include wptrunner/testharness_runner.html include wptrunner/*.js diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/README.rst b/tests/wpt/web-platform-tests/tools/wptrunner/README.rst index 780518aae11..834e07ee41d 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/README.rst +++ b/tests/wpt/web-platform-tests/tools/wptrunner/README.rst @@ -23,7 +23,7 @@ The ``wptrunner`` command takes multiple options, of which the following are most significant: ``--product`` (defaults to `firefox`) - The product to test against: `b2g`, `chrome`, `firefox`, or `servo`. + The product to test against: `chrome`, `firefox`, or `servo`. ``--binary`` (required if product is `firefox` or `servo`) The path to a binary file for the product (browser) to test against. diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/conf.py b/tests/wpt/web-platform-tests/tools/wptrunner/docs/conf.py index 0c717f56536..b58f313e946 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/conf.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/conf.py @@ -186,22 +186,22 @@ htmlhelp_basename = 'wptrunnerdoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', -# Additional stuff for the LaTeX preamble. -#'preamble': '', + # Additional stuff for the LaTeX preamble. + #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - ('index', 'wptrunner.tex', u'wptrunner Documentation', - u'James Graham', 'manual'), + ('index', 'wptrunner.tex', u'wptrunner Documentation', + u'James Graham', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of @@ -244,9 +244,9 @@ man_pages = [ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - ('index', 'wptrunner', u'wptrunner Documentation', - u'James Graham', 'wptrunner', 'One line description of project.', - 'Miscellaneous'), + ('index', 'wptrunner', u'wptrunner Documentation', + u'James Graham', 'wptrunner', 'One line description of project.', + 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst index 8e74a4320c8..258cca6eca9 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst +++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/usage.rst @@ -54,7 +54,7 @@ A test run is started using the ``wptrunner`` command. The command takes multiple options, of which the following are most significant: ``--product`` (defaults to `firefox`) - The product to test against: `b2g`, `chrome`, `firefox`, or `servo`. + The product to test against: `chrome`, `firefox`, or `servo`. ``--binary`` (required if product is `firefox` or `servo`) The path to a binary file for the product (browser) to test against. diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_chrome_android.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_chrome_android.txt new file mode 100644 index 00000000000..a2f54425f3e --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_chrome_android.txt @@ -0,0 +1,2 @@ +mozprocess >= 0.19 +selenium >= 2.41.0 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/setup.py b/tests/wpt/web-platform-tests/tools/wptrunner/setup.py index 7ec189fefd9..7da51418327 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/setup.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/setup.py @@ -53,13 +53,12 @@ setup(name=PACKAGE_NAME, "config.json", "wptrunner.default.ini", "browsers/server-locations.txt", - "browsers/b2g_setup/*", "browsers/sauce_setup/*", "prefs/*"]}, include_package_data=True, data_files=[("requirements", requirements_files)], install_requires=deps - ) + ) if "install" in sys.argv: path = os.path.relpath(os.path.join(sys.prefix, "requirements"), os.curdir) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/test/test.py b/tests/wpt/web-platform-tests/tools/wptrunner/test/test.py index 034e317bd52..622934a42b0 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/test/test.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/test/test.py @@ -156,7 +156,8 @@ def main(): run(config, args) except Exception: if args.pdb: - import pdb, traceback + import pdb + import traceback print traceback.format_exc() pdb.post_mortem() else: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini index 790970409f3..fa6aa3f7129 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini +++ b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini @@ -2,7 +2,7 @@ xfail_strict=true [tox] -envlist = {py27,pypy}-{base,b2g,chrome,firefox,servo} +envlist = {py27,pypy}-{base,chrome,firefox,servo},py27-flake8 [testenv] deps = @@ -15,3 +15,40 @@ deps = servo: -r{toxinidir}/requirements_servo.txt commands = pytest --cov + +[testenv:py27-flake8] +# flake8 versions should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini +deps = + flake8==3.5.0 + pycodestyle==2.3.1 + pyflakes==1.6.0 + pep8-naming==0.4.1 + +commands = + flake8 + +[flake8] +# flake8 config should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini +select = E,W,F,N +# E128: continuation line under-indented for visual indent +# E129: visually indented line with same indent as next logical line +# E221: multiple spaces before operator +# E226: missing whitespace around arithmetic operator +# E231: missing whitespace after ‘,’, ‘;’, or ‘:’ +# E251: unexpected spaces around keyword / parameter equals +# E265: block comment should start with ‘# ‘ +# E302: expected 2 blank lines, found 0 +# E303: too many blank lines (3) +# E305: expected 2 blank lines after end of function or class +# E402: module level import not at top of file +# E731: do not assign a lambda expression, use a def +# E901: SyntaxError or IndentationError +# W601: .has_key() is deprecated, use ‘in’ +# F401: module imported but unused +# F403: ‘from module import *’ used; unable to detect undefined names +# F405: name may be undefined, or defined from star imports: module +# F841: local variable name is assigned to but never used +# N801: class names should use CapWords convention +# N802: function name should be lowercase +ignore = E128,E129,E221,E226,E231,E251,E265,E302,E303,E305,E402,E731,E901,W601,F401,F403,F405,F841,N801,N802 +max-line-length = 141 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py index a5c25335742..1e74863b733 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py @@ -23,6 +23,7 @@ module global scope. """ product_list = ["chrome", + "chrome_android", "edge", "firefox", "ie", diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/b2g_setup/certtest_app.zip b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/b2g_setup/certtest_app.zip Binary files differdeleted file mode 100644 index f9cbd5300ad..00000000000 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/b2g_setup/certtest_app.zip +++ /dev/null diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_android.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_android.py new file mode 100644 index 00000000000..9e53bc660e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_android.py @@ -0,0 +1,98 @@ +from .base import Browser, ExecutorBrowser, require_arg +from ..webdriver_server import ChromeDriverServer +from ..executors import executor_kwargs as base_executor_kwargs +from ..executors.executorselenium import (SeleniumTestharnessExecutor, + SeleniumRefTestExecutor) +from ..executors.executorchrome import ChromeDriverWdspecExecutor + + +__wptrunner__ = {"product": "chrome_android", + "check_args": "check_args", + "browser": "ChromeAndroidBrowser", + "executor": {"testharness": "SeleniumTestharnessExecutor", + "reftest": "SeleniumRefTestExecutor", + "wdspec": "ChromeDriverWdspecExecutor"}, + "browser_kwargs": "browser_kwargs", + "executor_kwargs": "executor_kwargs", + "env_extras": "env_extras", + "env_options": "env_options"} + + +def check_args(**kwargs): + require_arg(kwargs, "webdriver_binary") + + +def browser_kwargs(test_type, run_info_data, **kwargs): + return {"binary": kwargs["binary"], + "webdriver_binary": kwargs["webdriver_binary"], + "webdriver_args": kwargs.get("webdriver_args")} + + +def executor_kwargs(test_type, server_config, cache_manager, run_info_data, + **kwargs): + from selenium.webdriver import DesiredCapabilities + + executor_kwargs = base_executor_kwargs(test_type, server_config, + cache_manager, **kwargs) + executor_kwargs["close_after_done"] = True + capabilities = dict(DesiredCapabilities.CHROME.items()) + capabilities["chromeOptions"] = {} + # required to start on mobile + capabilities["chromeOptions"]["androidPackage"] = "com.android.chrome" + + for (kwarg, capability) in [("binary", "binary"), ("binary_args", "args")]: + if kwargs[kwarg] is not None: + capabilities["chromeOptions"][capability] = kwargs[kwarg] + if test_type == "testharness": + capabilities["useAutomationExtension"] = False + capabilities["excludeSwitches"] = ["enable-automation"] + if test_type == "wdspec": + capabilities["chromeOptions"]["w3c"] = True + executor_kwargs["capabilities"] = capabilities + return executor_kwargs + + +def env_extras(**kwargs): + return [] + + +def env_options(): + return {"host": "web-platform.test", + "bind_hostname": "true"} + + +class ChromeAndroidBrowser(Browser): + """Chrome is backed by chromedriver, which is supplied through + ``wptrunner.webdriver.ChromeDriverServer``. + """ + + def __init__(self, logger, binary, webdriver_binary="chromedriver", + webdriver_args=None): + """Creates a new representation of Chrome. The `binary` argument gives + the browser binary to use for testing.""" + Browser.__init__(self, logger) + self.binary = binary + self.server = ChromeDriverServer(self.logger, + binary=webdriver_binary, + args=webdriver_args) + + def start(self, **kwargs): + self.server.start(block=False) + + def stop(self, force=False): + self.server.stop(force=force) + + def pid(self): + return self.server.pid + + def is_alive(self): + # TODO(ato): This only indicates the driver is alive, + # and doesn't say anything about whether a browser session + # is active. + return self.server.is_alive() + + def cleanup(self): + self.stop() + + def executor_browser(self): + return ExecutorBrowser, {"webdriver_url": self.server.url} diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py index b324bccd91e..6d1f58d3791 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py @@ -96,15 +96,15 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data, executor_kwargs["reftest_internal"] = kwargs["reftest_internal"] executor_kwargs["reftest_screenshot"] = kwargs["reftest_screenshot"] if test_type == "wdspec": - fxOptions = {} + options = {} if kwargs["binary"]: - fxOptions["binary"] = kwargs["binary"] + options["binary"] = kwargs["binary"] if kwargs["binary_args"]: - fxOptions["args"] = kwargs["binary_args"] - fxOptions["prefs"] = { + options["args"] = kwargs["binary_args"] + options["prefs"] = { "network.dns.localDomains": ",".join(hostnames) } - capabilities["moz:firefoxOptions"] = fxOptions + capabilities["moz:firefoxOptions"] = options if kwargs["certutil_binary"] is None: capabilities["acceptInsecureCerts"] = True if capabilities: @@ -364,7 +364,7 @@ class FirefoxBrowser(Browser): env[env_var] = (os.path.pathsep.join([certutil_dir, env[env_var]]) if env_var in env else certutil_dir).encode( - sys.getfilesystemencoding() or 'utf-8', 'replace') + sys.getfilesystemencoding() or 'utf-8', 'replace') def certutil(*args): cmd = [self.certutil_binary] + list(args) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/ie.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/ie.py index 553372f390e..13f5827194d 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/ie.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/ie.py @@ -28,10 +28,10 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data, **kwargs): from selenium.webdriver import DesiredCapabilities - ieOptions = {} - ieOptions["requireWindowFocus"] = True + options = {} + options["requireWindowFocus"] = True capabilities = {} - capabilities["se:ieOptions"] = ieOptions + capabilities["se:ieOptions"] = options executor_kwargs = base_executor_kwargs(test_type, server_config, cache_manager, **kwargs) executor_kwargs["close_after_done"] = True @@ -51,7 +51,7 @@ class InternetExplorerBrowser(Browser): def __init__(self, logger, webdriver_binary, webdriver_args=None): Browser.__init__(self, logger) - self.server = InterentExplorerDriverServer(self.logger, + self.server = InternetExplorerDriverServer(self.logger, binary=webdriver_binary, args=webdriver_args) self.webdriver_host = "localhost" diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py index 874595cbff3..711534180dc 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py @@ -61,7 +61,7 @@ def get_ssl_kwargs(**kwargs): elif kwargs["ssl_type"] == "pregenerated": args = {"host_key_path": kwargs["host_key_path"], "host_cert_path": kwargs["host_cert_path"], - "ca_cert_path": kwargs["ca_cert_path"]} + "ca_cert_path": kwargs["ca_cert_path"]} else: args = {} return args diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py index d87e4ab9924..7178b2e28c3 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py @@ -13,7 +13,7 @@ here = os.path.split(__file__)[0] # Extra timeout to use after internal test timeout at which the harness # should force a timeout -extra_timeout = 5 # seconds +extra_timeout = 5 # seconds def executor_kwargs(test_type, server_config, cache_manager, **kwargs): @@ -67,8 +67,8 @@ class TestharnessResultConverter(object): (result_url, test.url)) harness_result = test.result_cls(self.harness_codes[status], message) return (harness_result, - [test.subtest_result_cls(name, self.test_codes[status], message, stack) - for name, status, message, stack in subtest_results]) + [test.subtest_result_cls(st_name, self.test_codes[st_status], st_message, st_stack) + for st_name, st_status, st_message, st_stack in subtest_results]) testharness_result_converter = TestharnessResultConverter() @@ -124,7 +124,7 @@ class TestExecutor(object): self.debug_info = debug_info self.last_environment = {"protocol": "http", "prefs": {}} - self.protocol = None # This must be set in subclasses + self.protocol = None # This must be set in subclasses @property def logger(self): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py index 2d0dc914d10..30930c3c2f9 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py @@ -304,7 +304,7 @@ class ExecuteAsyncScriptRun(object): self.result_flag = threading.Event() def run(self): - index = self.url.rfind("/storage/"); + index = self.url.rfind("/storage/") if index != -1: # Clear storage self.protocol.clear_origin(self.url) @@ -503,7 +503,7 @@ class MarionetteRefTestExecutor(RefTestExecutor): assert viewport_size is None assert dpi is None - timeout = self.timeout_multiplier * test.timeout if self.debug_info is None else None + timeout = self.timeout_multiplier * test.timeout if self.debug_info is None else None test_url = self.test_url(test) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py index 2e84ab6fd65..f905fac81e1 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py @@ -51,7 +51,7 @@ class SeleniumProtocol(Protocol): self.webdriver = webdriver.Remote(command_executor=RemoteConnection(self.url.strip("/"), resolve_ip=False), desired_capabilities=self.capabilities) - except: + except Exception: self.logger.warning( "Connecting to Selenium failed:\n%s" % traceback.format_exc()) else: @@ -64,7 +64,7 @@ class SeleniumProtocol(Protocol): else: try: self.after_connect() - except: + except Exception: print >> sys.stderr, traceback.format_exc() self.logger.warning( "Failed to connect to navigate initial page") @@ -76,7 +76,7 @@ class SeleniumProtocol(Protocol): self.logger.debug("Hanging up on Selenium session") try: self.webdriver.quit() - except: + except Exception: pass del self.webdriver @@ -103,7 +103,7 @@ class SeleniumProtocol(Protocol): def wait(self): while True: try: - self.webdriver.execute_async_script(""); + self.webdriver.execute_async_script("") except exceptions.TimeoutException: pass except (socket.timeout, exceptions.NoSuchWindowException, @@ -220,7 +220,7 @@ class SeleniumTestharnessExecutor(TestharnessExecutor): win_s = webdriver.execute_script("return window['%s'];" % self.window_id) win_obj = json.loads(win_s) test_window = win_obj["window-fcc6-11e5-b4f8-330a88ab9d7f"] - except: + except Exception: after = webdriver.window_handles if len(after) == 2: test_window = next(iter(set(after) - set([parent]))) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py index 33ff10df928..ca8ec8a7eb5 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservo.py @@ -28,7 +28,7 @@ from .executormarionette import WdspecRun pytestrunner = None webdriver = None -extra_timeout = 5 # seconds +extra_timeout = 5 # seconds hosts_text = """127.0.0.1 web-platform.test 127.0.0.1 www.web-platform.test diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py index af09da6f178..ed7afaf1028 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py @@ -43,7 +43,7 @@ class ServoWebDriverProtocol(Protocol): self.session = webdriver.Session(self.host, self.port, extension=webdriver.servo.ServoCommandExtensions) self.session.start() - except: + except Exception: self.logger.warning( "Connecting with WebDriver failed:\n%s" % traceback.format_exc()) else: @@ -60,7 +60,7 @@ class ServoWebDriverProtocol(Protocol): self.logger.debug("Hanging up on WebDriver session") try: self.session.end() - except: + except Exception: pass def is_alive(self): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py index fd3f82aeb11..1d3c173928f 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py @@ -247,8 +247,8 @@ class TestNode(ManifestItem): boolean_properties=self.root.boolean_properties) except ConditionError as e: if stability is not None: - self.set("disabled", stability or "unstable", e.cond.children[0]) - self.new_disabled = True + self.set("disabled", stability or "unstable", e.cond.children[0]) + self.new_disabled = True else: print "Conflicting test results for %s, cannot update" % self.root.test_path return diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py index 923ac790733..9c31e4279ef 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py @@ -355,7 +355,7 @@ def load_expected(test_manifest, metadata_path, test_path, tests, property_order # Remove expected data for tests that no longer exist for test in expected_manifest.iterchildren(): - if not test.id in tests_by_id: + if test.id not in tests_by_id: test.remove() # Add tests that don't have expected data diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py index 6eb060485c2..e1709c5749a 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/stability.py @@ -274,6 +274,6 @@ def check_stability(logger, repeat_loop=10, repeat_restart=5, chaos_mode=True, m write_summary(logger, step_results, "FAIL") return 1 - step_results.append((desc, "PASS")) + step_results.append((desc, "PASS")) write_summary(logger, step_results, "PASS") diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py index 0eb78bb884f..199ed6c2666 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py @@ -93,7 +93,7 @@ class EqualTimeChunker(TestChunker): for i, (test_type, test_path, tests) in enumerate(manifest_items): test_dir = tuple(os.path.split(test_path)[0].split(os.path.sep)[:3]) - if not test_dir in by_dir: + if test_dir not in by_dir: by_dir[test_dir] = PathData(test_dir) data = by_dir[test_dir] @@ -261,7 +261,7 @@ class EqualTimeChunker(TestChunker): return self.paths.popleft() @property - def badness(self_): + def badness(self_): # noqa: N805 """Badness metric for this chunk""" return self._badness(self_.time) @@ -587,6 +587,7 @@ class TestSource(object): self.current_metadata = None @abstractmethod + # noqa: N805 #@classmethod (doesn't compose with @abstractmethod) def make_queue(cls, tests, **kwargs): pass diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py index 75f4825f952..85ffbe3741a 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py @@ -195,7 +195,7 @@ class BrowserManager(object): self.logger.debug("Starting browser with settings %r" % self.browser_settings) self.browser.start(**self.browser_settings) self.browser_pid = self.browser.pid() - except: + except Exception: self.logger.warning("Failure during init %s" % traceback.format_exc()) if self.init_timer is not None: self.init_timer.cancel() @@ -566,7 +566,7 @@ class TestRunnerManager(threading.Thread): expected = test.expected() status = file_result.status if file_result.status != "EXTERNAL-TIMEOUT" else "TIMEOUT" - if file_result.status in ("TIMEOUT", "EXTERNAL-TIMEOUT"): + if file_result.status in ("TIMEOUT", "EXTERNAL-TIMEOUT"): if self.browser.check_for_crashes(): status = "CRASH" @@ -585,8 +585,8 @@ class TestRunnerManager(threading.Thread): restart_before_next = (test.restart_after or file_result.status in ("CRASH", "EXTERNAL-TIMEOUT") or - ((subtest_unexpected or is_unexpected) - and self.restart_on_unexpected)) + ((subtest_unexpected or is_unexpected) and + self.restart_on_unexpected)) if (self.pause_after_test or (self.pause_on_unexpected and (subtest_unexpected or is_unexpected))): @@ -689,7 +689,7 @@ class TestRunnerManager(threading.Thread): break else: if cmd == "log": - self.log(*data) + self.log(*data) else: self.logger.warning("%r: %r" % (cmd, data)) while True: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_hosts.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_hosts.py index 808b81606ae..e7d41f3b420 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_hosts.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_hosts.py @@ -42,15 +42,13 @@ class HostsTest(unittest.TestCase): 192.168.1.1 another_host another_alias ""","""127.0.0.1 localhost alias 192.168.1.1 another_host another_alias -""" -) +""") def test_multiple_same_name(self): # The semantics are that we overwrite earlier entries with the same name self.do_test("""127.0.0.1 \tlocalhost alias 192.168.1.1 localhost another_alias""","""192.168.1.1 localhost another_alias -""" -) +""") if __name__ == "__main__": unittest.main() diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/__init__.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/__init__.py index 497cb34ad0c..99dac6bcccc 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/__init__.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/__init__.py @@ -44,4 +44,3 @@ def main(): assert structuredlog.get_default_logger() is not None success = run_update(logger, **args) sys.exit(0 if success else 1) - diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/sync.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/sync.py index c1bff854349..f2660e5a33e 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/sync.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/sync.py @@ -109,7 +109,7 @@ class UpdateCheckout(Step): state.sync["branch"], state.local_branch) sync_path = os.path.abspath(sync_tree.root) - if not sync_path in sys.path: + if sync_path not in sys.path: from update import setup_paths setup_paths(sync_path) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/tree.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/tree.py index 01df0b4f94a..279ddba1f6f 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/tree.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/tree.py @@ -75,7 +75,7 @@ class HgTree(object): kwargs["repo"] = path try: hg("root", **kwargs) - except: + except Exception: return False return True @@ -155,7 +155,7 @@ class GitTree(object): kwargs["repo"] = path try: git("rev-parse", "--show-toplevel", **kwargs) - except: + except Exception: return False return True @@ -305,8 +305,8 @@ class GitTree(object): def paths(self): """List paths in the tree""" - repo_paths = [self.root] + [os.path.join(self.root, path) - for path in self.submodules()] + repo_paths = [self.root] + [os.path.join(self.root, path) + for path in self.submodules()] rv = [] diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/vcs.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/vcs.py index 16d53afc8be..a51312d3937 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/vcs.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/vcs.py @@ -15,7 +15,7 @@ def vcs(bin_name): repo = kwargs.pop("repo", None) log_error = kwargs.pop("log_error", True) if kwargs: - raise TypeError, kwargs + raise TypeError(kwargs) args = list(args) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py index fc853bfb97e..7b78898344f 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py @@ -72,7 +72,7 @@ class WebDriverServer(object): "Waiting for server to become accessible: %s" % self.url) try: wait_for_service((self.host, self.port)) - except: + except Exception: self.logger.error( "WebDriver HTTP server was not accessible " "within the timeout:\n%s" % traceback.format_exc()) @@ -125,8 +125,6 @@ class SeleniumServer(WebDriverServer): class ChromeDriverServer(WebDriverServer): - default_base_path = "/" - def __init__(self, logger, binary="chromedriver", port=None, base_path="", args=None): WebDriverServer.__init__( @@ -138,8 +136,6 @@ class ChromeDriverServer(WebDriverServer): cmd_arg("url-base", self.base_path) if self.base_path else ""] + self._args class EdgeDriverServer(WebDriverServer): - default_base_path = "/" - def __init__(self, logger, binary="microsoftwebdriver.exe", port=None, base_path="", args=None): WebDriverServer.__init__( @@ -147,8 +143,7 @@ class EdgeDriverServer(WebDriverServer): def make_command(self): return [self.binary, - cmd_arg("port", str(self.port)), - cmd_arg("url-base", self.base_path) if self.base_path else ""] + self._args + "--port=%s" % str(self.port)] + self._args class OperaDriverServer(ChromeDriverServer): def __init__(self, logger, binary="operadriver", port=None, @@ -157,17 +152,6 @@ class OperaDriverServer(ChromeDriverServer): self, logger, binary, port=port, base_path=base_path, args=args) -class EdgeDriverServer(WebDriverServer): - def __init__(self, logger, binary="MicrosoftWebDriver.exe", port=None, - base_path="", host="localhost", args=None): - WebDriverServer.__init__( - self, logger, binary, host=host, port=port, args=args) - - def make_command(self): - return [self.binary, - "--port=%s" % str(self.port)] + self._args - - class InternetExplorerDriverServer(WebDriverServer): def __init__(self, logger, binary="IEDriverServer.exe", port=None, base_path="", host="localhost", args=None): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py index b232462d915..ad18e424cd5 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py @@ -28,7 +28,7 @@ def require_arg(kwargs, name, value_func=None): if value_func is None: value_func = lambda x: x is not None - if not name in kwargs or not value_func(kwargs[name]): + if name not in kwargs or not value_func(kwargs[name]): print >> sys.stderr, "Missing required argument %s" % name sys.exit(1) @@ -97,7 +97,8 @@ scheme host and port.""") test_selection_group.add_argument("--skip-timeout", action="store_true", help="Skip tests that are expected to time out") test_selection_group.add_argument("--tag", action="append", dest="tags", - help="Labels applied to tests to include in the run. Labels starting dir: are equivalent to top-level directories.") + help="Labels applied to tests to include in the run. " + "Labels starting dir: are equivalent to top-level directories.") debugging_group = parser.add_argument_group("Debugging") debugging_group.add_argument('--debugger', const="__default__", nargs="?", @@ -479,7 +480,8 @@ def create_parser_update(product_choices=None): help="Don't create a VCS commit containing the changes.") parser.add_argument("--sync", dest="sync", action="store_true", default=False, help="Sync the tests with the latest from upstream (implies --patch)") - parser.add_argument("--ignore-existing", action="store_true", help="When updating test results only consider results from the logfiles provided, not existing expectations.") + parser.add_argument("--ignore-existing", action="store_true", + help="When updating test results only consider results from the logfiles provided, not existing expectations.") parser.add_argument("--stability", nargs="?", action="store", const="unstable", default=None, help=("Reason for disabling tests. When updating test results, disable tests that have " "inconsistent results across many runs with the given reason.")) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py index 6db2cbbbb47..6908ea4c1e0 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py @@ -211,15 +211,15 @@ class TokenizerTest(unittest.TestCase): """) def test_atom_1(self): - self.compare(r"""key: @True + self.compare(r"""key: @True """) def test_atom_2(self): - self.compare(r"""key: @False + self.compare(r"""key: @False """) def test_atom_3(self): - self.compare(r"""key: @Reset + self.compare(r"""key: @Reset """) def test_atom_4(self): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_tokenizer.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_tokenizer.py index 88176c5a169..a64ce0c7bb7 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_tokenizer.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_tokenizer.py @@ -145,8 +145,7 @@ class TokenizerTest(unittest.TestCase): (token_types.string, r"\nb")]) def test_list_0(self): - self.compare( -""" + self.compare(""" key: []""", [(token_types.string, "key"), (token_types.separator, ":"), @@ -154,8 +153,7 @@ key: []""", (token_types.list_end, "]")]) def test_list_1(self): - self.compare( -""" + self.compare(""" key: [a, "b"]""", [(token_types.string, "key"), (token_types.separator, ":"), @@ -165,8 +163,7 @@ key: [a, "b"]""", (token_types.list_end, "]")]) def test_list_2(self): - self.compare( -""" + self.compare(""" key: [a, b]""", [(token_types.string, "key"), @@ -177,8 +174,7 @@ key: [a, (token_types.list_end, "]")]) def test_list_3(self): - self.compare( -""" + self.compare(""" key: [a, #b] c]""", [(token_types.string, "key"), @@ -199,18 +195,16 @@ key: [a, #b] c]""") def test_list_6(self): - self.compare( -"""key: [a , b]""", - [(token_types.string, "key"), - (token_types.separator, ":"), - (token_types.list_start, "["), - (token_types.string, "a"), - (token_types.string, "b"), - (token_types.list_end, "]")]) + self.compare("""key: [a , b]""", + [(token_types.string, "key"), + (token_types.separator, ":"), + (token_types.list_start, "["), + (token_types.string, "a"), + (token_types.string, "b"), + (token_types.list_end, "]")]) def test_expr_0(self): - self.compare( -""" + self.compare(""" key: if cond == 1: value""", [(token_types.string, "key"), @@ -224,8 +218,7 @@ key: (token_types.string, "value")]) def test_expr_1(self): - self.compare( -""" + self.compare(""" key: if cond == 1: value1 value2""", @@ -241,8 +234,7 @@ key: (token_types.string, "value2")]) def test_expr_2(self): - self.compare( -""" + self.compare(""" key: if cond=="1": value""", [(token_types.string, "key"), @@ -256,8 +248,7 @@ key: (token_types.string, "value")]) def test_expr_3(self): - self.compare( -""" + self.compare(""" key: if cond==1.1: value""", [(token_types.string, "key"), @@ -271,8 +262,7 @@ key: (token_types.string, "value")]) def test_expr_4(self): - self.compare( - """ + self.compare(""" key: if cond==1.1 and cond2 == "a": value""", [(token_types.string, "key"), @@ -290,8 +280,7 @@ key: (token_types.string, "value")]) def test_expr_5(self): - self.compare( -""" + self.compare(""" key: if (cond==1.1 ): value""", [(token_types.string, "key"), @@ -307,8 +296,7 @@ key: (token_types.string, "value")]) def test_expr_6(self): - self.compare( -""" + self.compare(""" key: if "\\ttest": value""", [(token_types.string, "key"), @@ -322,27 +310,26 @@ key: def test_expr_7(self): with self.assertRaises(parser.ParseError): self.tokenize( -""" + """ key: if 1A: value""") def test_expr_8(self): with self.assertRaises(parser.ParseError): self.tokenize( -""" + """ key: if 1a: value""") def test_expr_9(self): with self.assertRaises(parser.ParseError): self.tokenize( -""" + """ key: if 1.1.1: value""") def test_expr_10(self): - self.compare( -""" + self.compare(""" key: if 1.: value""", [(token_types.string, "key"), diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py index 637cbe57b6f..6677902a49a 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py @@ -307,7 +307,8 @@ def main(): return start(**kwargs) except Exception: if kwargs["pdb"]: - import pdb, traceback + import pdb + import traceback print traceback.format_exc() pdb.post_mortem() else: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py index d283e854205..9f4c1bed135 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py @@ -356,7 +356,7 @@ class ReftestTest(Test): return node def update_metadata(self, metadata): - if not "url_count" in metadata: + if "url_count" not in metadata: metadata["url_count"] = defaultdict(int) for reference, _ in self.references: # We assume a naive implementation in which a url with multiple diff --git a/tests/wpt/web-platform-tests/tools/wptserve/docs/pipes.rst b/tests/wpt/web-platform-tests/tools/wptserve/docs/pipes.rst index 39e98ab4f5e..8faeee489c9 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/docs/pipes.rst +++ b/tests/wpt/web-platform-tests/tools/wptserve/docs/pipes.rst @@ -12,8 +12,8 @@ This would serve bytes 1 to 199, inclusive, of foo.txt with the HTTP status code 404. .. note:: - Pipes are only applied to static files, and will not work if applied to - other types of handlers, such as Python File Handlers. + If you write directly to the response socket using ResponseWriter, + or when using the asis handler, only the trickle pipe will affect the response. There are several built-in pipe functions, and it is possible to add more using the `@pipe` decorator on a function, if required. diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py index bd38f2ef18f..147ad156225 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py @@ -1,9 +1,11 @@ import os import unittest import time +import json import pytest +wptserve = pytest.importorskip("wptserve") from .base import TestUsingServer, doc_root @@ -82,5 +84,72 @@ class TestTrickle(TestUsingServer): self.assertEqual(resp.info()["Pragma"], "no-cache") self.assertEqual(resp.info()["Expires"], "0") +class TestPipesWithVariousHandlers(TestUsingServer): + def test_with_python_file_handler(self): + resp = self.request("/test_string.py", query="pipe=slice(null,2)") + self.assertEqual(resp.read(), "PA") + + def test_with_python_func_handler(self): + @wptserve.handlers.handler + def handler(request, response): + return "PASS" + route = ("GET", "/test/test_pipes_1/", handler) + self.server.router.register(*route) + resp = self.request(route[1], query="pipe=slice(null,2)") + self.assertEqual(resp.read(), "PA") + + def test_with_python_func_handler_using_response_writer(self): + @wptserve.handlers.handler + def handler(request, response): + response.writer.write_content("PASS") + route = ("GET", "/test/test_pipes_1/", handler) + self.server.router.register(*route) + resp = self.request(route[1], query="pipe=slice(null,2)") + # slice has not been applied to the response, because response.writer was used. + self.assertEqual(resp.read(), "PASS") + + def test_header_pipe_with_python_func_using_response_writer(self): + @wptserve.handlers.handler + def handler(request, response): + response.writer.write_content("CONTENT") + route = ("GET", "/test/test_pipes_1/", handler) + self.server.router.register(*route) + resp = self.request(route[1], query="pipe=header(X-TEST,FAIL)") + # header pipe was ignored, because response.writer was used. + self.assertFalse(resp.info().get("X-TEST")) + self.assertEqual(resp.read(), "CONTENT") + + def test_with_json_handler(self): + @wptserve.handlers.json_handler + def handler(request, response): + return json.dumps({'data': 'PASS'}) + route = ("GET", "/test/test_pipes_2/", handler) + self.server.router.register(*route) + resp = self.request(route[1], query="pipe=slice(null,2)") + self.assertEqual(resp.read(), '"{') + + def test_slice_with_as_is_handler(self): + resp = self.request("/test.asis", query="pipe=slice(null,2)") + self.assertEqual(202, resp.getcode()) + self.assertEqual("Giraffe", resp.msg) + self.assertEqual("PASS", resp.info()["X-Test"]) + # slice has not been applied to the response, because response.writer was used. + self.assertEqual("Content", resp.read()) + + def test_headers_with_as_is_handler(self): + resp = self.request("/test.asis", query="pipe=header(X-TEST,FAIL)") + self.assertEqual(202, resp.getcode()) + self.assertEqual("Giraffe", resp.msg) + # header pipe was ignored. + self.assertEqual("PASS", resp.info()["X-TEST"]) + self.assertEqual("Content", resp.read()) + + def test_trickle_with_as_is_handler(self): + t0 = time.time() + resp = self.request("/test.asis", query="pipe=trickle(1:d2:5:d1:r2)") + t1 = time.time() + self.assertTrue('Content' in resp.read()) + self.assertGreater(6, t1-t0) + if __name__ == '__main__': unittest.main() diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py index c962a6cd80a..7cd8479855d 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py @@ -237,6 +237,7 @@ class PythonScriptHandler(object): if "main" in environ: handler = FunctionHandler(environ["main"]) handler(request, response) + wrap_pipeline(path, request, response) else: raise HTTPException(500, "No main function in script %s" % path) except IOError: @@ -267,6 +268,7 @@ class FunctionHandler(object): else: content = rv response.content = content + wrap_pipeline('', request, response) #The generic name here is so that this can be used as a decorator @@ -309,6 +311,7 @@ class AsIsHandler(object): try: with open(path) as f: response.writer.write_content(f.read()) + wrap_pipeline(path, request, response) response.close_connection = True except IOError: raise HTTPException(404) diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py index 7203815b70c..b71c8afa309 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py @@ -6,6 +6,7 @@ import types import uuid from cStringIO import StringIO +from six import text_type def resolve_content(response): return b"".join(item for item in response.iter_content(read_file=True)) @@ -276,18 +277,18 @@ def slice(request, response, start, end=None): class ReplacementTokenizer(object): - def ident(scanner, token): + def ident(self, token): return ("ident", token) - def index(scanner, token): + def index(self, token): token = token[1:-1] try: token = int(token) except ValueError: - token = unicode(token, "utf8") + token = token.decode('utf8') return ("index", token) - def var(scanner, token): + def var(self, token): token = token[:-1] return ("var", token) @@ -425,7 +426,7 @@ def template(request, content, escape_type="html"): #Should possibly support escaping for other contexts e.g. script #TODO: read the encoding of the response - return escape_func(unicode(value)).encode("utf-8") + return escape_func(text_type(value)).encode("utf-8") template_regexp = re.compile(r"{{([^}]*)}}") new_content = template_regexp.sub(config_replacement, content) diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/response.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/response.py index 50ff00dde94..20b7b426996 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/response.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/response.py @@ -9,6 +9,8 @@ import socket from .constants import response_codes from .logger import get_logger +from six import string_types, binary_type, text_type + missing = object() class Response(object): @@ -400,7 +402,7 @@ class ResponseWriter(object): if name.lower() not in self._headers_seen: self.write_header(name, f()) - if (type(self._response.content) in (str, unicode) and + if (isinstance(self._response.content, string_types) and "content-length" not in self._headers_seen): #Would be nice to avoid double-encoding here self.write_header("Content-Length", len(self.encode(self._response.content))) @@ -457,9 +459,9 @@ class ResponseWriter(object): def encode(self, data): """Convert unicode to bytes according to response.encoding.""" - if isinstance(data, str): + if isinstance(data, binary_type): return data - elif isinstance(data, unicode): + elif isinstance(data, text_type): return data.encode(self._response.encoding) else: raise ValueError diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py index 2a83bd8097e..f9ed238624b 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py @@ -110,14 +110,15 @@ class WebTestServer(ThreadingMixIn, BaseHTTPServer.HTTPServer): # Ensure that we don't hang on shutdown waiting for requests daemon_threads = True - def __init__(self, server_address, RequestHandlerClass, router, rewriter, bind_hostname, + def __init__(self, server_address, request_handler_cls, + router, rewriter, bind_hostname, config=None, use_ssl=False, key_file=None, certificate=None, encrypt_after_connect=False, latency=None, **kwargs): """Server for HTTP(s) Requests :param server_address: tuple of (server_name, port) - :param RequestHandlerClass: BaseHTTPRequestHandler-like class to use for + :param request_handler_cls: BaseHTTPRequestHandler-like class to use for handling requests. :param router: Router instance to use for matching requests to handler @@ -161,7 +162,7 @@ class WebTestServer(ThreadingMixIn, BaseHTTPServer.HTTPServer): hostname_port = ("",server_address[1]) #super doesn't work here because BaseHTTPServer.HTTPServer is old-style - BaseHTTPServer.HTTPServer.__init__(self, hostname_port, RequestHandlerClass, **kwargs) + BaseHTTPServer.HTTPServer.__init__(self, hostname_port, request_handler_cls, **kwargs) if config is not None: Server.config = config diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/stash.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/stash.py index b6bd6eed442..69fa4418383 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/stash.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/stash.py @@ -2,7 +2,8 @@ import base64 import json import os import uuid -from multiprocessing.managers import BaseManager, DictProxy +import threading +from multiprocessing.managers import AcquirerProxy, BaseManager, DictProxy class ServerDictManager(BaseManager): shared_data = {} @@ -13,11 +14,13 @@ def _get_shared(): ServerDictManager.register("get_dict", callable=_get_shared, proxytype=DictProxy) +ServerDictManager.register('Lock', threading.Lock, AcquirerProxy) class ClientDictManager(BaseManager): pass ClientDictManager.register("get_dict") +ClientDictManager.register("Lock") class StashServer(object): def __init__(self, address=None, authkey=None): @@ -53,6 +56,22 @@ def start_server(address=None, authkey=None): return (manager, manager._address, manager._authkey) +class LockWrapper(object): + def __init__(self, lock): + self.lock = lock + + def acquire(self): + self.lock.acquire() + + def release(self): + self.lock.release() + + def __enter__(self): + self.acquire() + + def __exit__(self, *args, **kwargs): + self.release() + #TODO: Consider expiring values after some fixed time for long-running #servers @@ -81,21 +100,23 @@ class Stash(object): """ _proxy = None + lock = None def __init__(self, default_path, address=None, authkey=None): self.default_path = default_path - self.data = self._get_proxy(address, authkey) + self._get_proxy(address, authkey) + self.data = Stash._proxy def _get_proxy(self, address=None, authkey=None): if address is None and authkey is None: Stash._proxy = {} + Stash.lock = threading.Lock() if Stash._proxy is None: manager = ClientDictManager(address, authkey) manager.connect() Stash._proxy = manager.get_dict() - - return Stash._proxy + Stash.lock = LockWrapper(manager.Lock()) def _wrap_key(self, key, path): if path is None: diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade.sub.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade.sub.https.html new file mode 100644 index 00000000000..6b315c83df7 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade.sub.https.html @@ -0,0 +1,64 @@ +<!DOCTYPE html> +<html> + + <head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + + <body> + <script> + const test_data = [ + { + url : './link-upgrade/basic-link-no-upgrade.sub.html', + done_message : 'basic-link-no-upgrade', + }, + { + url : './link-upgrade/basic-link-upgrade.sub.html', + done_message : 'basic-link-upgrade', + }, + { + url : './link-upgrade/iframe-link-upgrade.sub.html', + done_message : 'iframe-link-upgrade', + }, + { + url : './link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html', + done_message : 'iframe-top-navigation-no-upgrade-1', + }, + { + url : './link-upgrade/iframe-top-navigation-no-upgrade-2.sub.html', + done_message : 'iframe-top-navigation-no-upgrade-2', + }, + { + url : './link-upgrade/iframe-top-navigation-upgrade-1.sub.html', + done_message : 'iframe-top-navigation-upgrade-1', + }, + { + url : './link-upgrade/iframe-top-navigation-upgrade-2.sub.html', + done_message : 'iframe-top-navigation-upgrade-2', + }, + { + url : './link-upgrade/iframe-top-navigation-upgrade-meta.sub.html', + done_message : 'iframe-top-navigation-upgrade-meta', + }, + ]; + for(let i = 0; i<test_data.length; i+=1) { + let data = test_data[i]; + let test = async_test(data.url); + test.step(function() { + let w = window.open(data.url, data.url); + this.add_cleanup(() => w.close()); + assert_true(w != undefined, "Popup must not be blocked"); + + window.addEventListener("message", event => { + if (event.data == data.done_message) + test.done(); + }); + }); + + test.step_timeout(function(){test.force_timeout()}, 5000); + } + </script> + </body> + +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html new file mode 100644 index 00000000000..c1a600f525e --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html @@ -0,0 +1,19 @@ +<html> + <title>Upgrade Insecure Requests: link no upgrade.</title> + <head> + <script> + function click() { + document.getElementById("link").click(); + } + </script> + </head> + <body onload="click()"> + <!-- + This is a bit of a hack. UPGRADE doesn't upgrade the port number. So if + the url is upgraded, the url becomes invalid (https over the http port). + The expected behavior is that the url is not upgraded and the page loads. + --> + <a id="link" + href="http://{{domains[www]}}:{{ports[http][0]}}/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html?message=basic-link-no-upgrade"> Click me </a> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html new file mode 100644 index 00000000000..ef41d3e9c7f --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html @@ -0,0 +1,19 @@ +<html> + <title>Upgrade Insecure Requests: link upgrade.</title> + <head> + <script> + function click() { + document.getElementById("link").click(); + } + </script> + </head> + <body onload="click()"> + <!-- + This is a bit of a hack. UPGRADE doesn't upgrade the port number, so we + specify this non-existent URL ('http' over https port). If UPGRADE doesn't + work, it won't load. The expected behavior is that the url is upgraded and + the page loads. + --> + <a id="link" href="http://{{host}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html?message=basic-link-upgrade"> Click me </a> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/basic-link-upgrade.sub.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html new file mode 100644 index 00000000000..ed058b61545 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html @@ -0,0 +1,11 @@ +<!-- + This document has set "Content-Security-Policy: upgrade-insecure-requests". It + contains an iframe. This iframe clicks on a link to the same host. The link + must be upgraded. + + This is a bit of a hack. UPGRADE doesn't upgrade the port number. So if + the url is not upgraded, the url is invalid (http over the https port). + The expected behavior is that the url is upgraded and the page loads. +--> +<iframe src= "./resources/click-on-link.sub.html?url=http://{{host}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html%3Fmessage=iframe-link-upgrade"> +</iframe> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-link-upgrade.sub.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html new file mode 100644 index 00000000000..1b514e2da72 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html @@ -0,0 +1,16 @@ +<html> + <head> + <title>Upgrade Insecure Requests: top-frame navigation inside iframe (no upgrade expected)</title> + </head> + <body> + <!-- + This is a bit of a hack. UPGRADE doesn't upgrade the port number. So if the + url is upgraded, the url becomes invalid (https over the http port). The + expected behavior is that the url is not upgraded and the page loads. + --> + <iframe + sandbox="allow-scripts allow-top-navigation" + src="https://{{domains[www]}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame.sub.html?url=http://{{domains[www]}}:{{ports[http][1]}}/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html%3Fmessage=iframe-top-navigation-no-upgrade-1" + ></iframe> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-2.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-2.sub.html new file mode 100644 index 00000000000..386a86fdbdb --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-no-upgrade-2.sub.html @@ -0,0 +1,16 @@ +<html> + <head> + <title>Upgrade Insecure Requests: top-frame navigation inside iframe (no upgrade expected)</title> + </head> + <body> + <!-- + This is a bit of a hack. UPGRADE doesn't upgrade the port number. So if the + url is upgraded, the url becomes invalid (https over the http port). The + expected behavior is that the url is not upgraded and the page loads. + --> + <iframe + sandbox="allow-scripts allow-top-navigation" + src="https://{{domains[www]}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html?url=http://{{host}}:{{ports[http][0]}}/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html%3Fmessage=iframe-top-navigation-no-upgrade-2" + ></iframe> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html new file mode 100644 index 00000000000..13c76e82c86 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html @@ -0,0 +1,17 @@ +<html> + <head> + <title>Upgrade Insecure Requests: top-frame navigation inside iframe (upgrade expected)</title> + </head> + <body> + <!-- + This is a bit of a hack. UPGRADE doesn't upgrade the port number, so we + specify this non-existent URL ('http' over https port). If UPGRADE doesn't + work, it won't load. The expected behavior is that the url is upgraded and + the page loads. + --> + <iframe + sandbox="allow-scripts allow-top-navigation" + src="https://{{domains[www]}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame.sub.html?url=http://{{host}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html%3Fmessage=iframe-top-navigation-upgrade-1" + ></iframe> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-1.sub.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html new file mode 100644 index 00000000000..651d76d93b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html @@ -0,0 +1,17 @@ +<html> + <head> + <title>Upgrade Insecure Requests: top-frame navigation inside iframe (upgrade expected)</title> + </head> + <body> + <!-- + This is a bit of a hack. UPGRADE doesn't upgrade the port number, so we + specify this non-existent URL ('http' over https port). If UPGRADE doesn't + work, it won't load. The expected behavior is that the url is upgraded and + the page loads. + --> + <iframe + sandbox="allow-scripts allow-top-navigation" + src="https://{{domains[www]}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html?url=http://{{domains[www]}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html%3Fmessage=iframe-top-navigation-upgrade-2" + ></iframe> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-2.sub.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-meta.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-meta.sub.html new file mode 100644 index 00000000000..e43050eb5b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/iframe-top-navigation-upgrade-meta.sub.html @@ -0,0 +1,31 @@ +<html> + <head> + <title>Upgrade Insecure Requests: top-frame navigation inside iframe (upgrade expected)</title> + <script> + function iframe_onload() { + var iframe = document.getElementsByTagName("iframe")[0]; + iframe.onload = null; + + // Enable upgrade-insecure-requests dynamically. + var meta = document.createElement('meta'); + meta.httpEquiv = "Content-Security-Policy"; + meta.content = "upgrade-insecure-requests"; + document.getElementsByTagName('head')[0].appendChild(meta); + + // This is a bit of a hack. UPGRADE doesn't upgrade the port number, + // so we specify this non-existent URL ('http' over port https port). If + // UPGRADE doesn't work, it won't load. The expected behavior is that + // the url is upgraded and the page loads. + iframe.src = + "https://{{domains[www]}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame.sub.html?url=http://{{host}}:{{ports[https][0]}}/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html%3Fmessage=iframe-top-navigation-upgrade-meta" + } + </script> + </head> + <body> + <iframe + sandbox = "allow-scripts allow-top-navigation" + src = "./resources/dummy.html" + onload = "iframe_onload()" + ></iframe> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/click-on-link.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/click-on-link.sub.html new file mode 100644 index 00000000000..d2899c8873f --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/click-on-link.sub.html @@ -0,0 +1,10 @@ +<body> + coucou + <a href="{{GET[url]}}">Click me</a> +</body> + +<script> + window.addEventListener("load", function() { + document.getElementsByTagName("a")[0].click(); + }) +</script> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/dummy.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/dummy.html new file mode 100644 index 00000000000..1c56b516659 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/dummy.html @@ -0,0 +1 @@ +I am not an interesting file... diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html new file mode 100644 index 00000000000..35332900d18 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html @@ -0,0 +1,5 @@ +<script> + window.addEventListener("load", function() { + window.top.location.href = "{{GET[url]}}"; + }) +</script> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html.headers b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html.headers new file mode 100644 index 00000000000..602d9dc38d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame-upgrade.sub.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: upgrade-insecure-requests diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame.sub.html new file mode 100644 index 00000000000..35332900d18 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/navigate-top-frame.sub.html @@ -0,0 +1,5 @@ +<script> + window.addEventListener("load", function() { + window.top.location.href = "{{GET[url]}}"; + }) +</script> diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html new file mode 100644 index 00000000000..5cf2df57323 --- /dev/null +++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade/resources/post-message-to-opener.sub.html @@ -0,0 +1,3 @@ +<script> + top.opener.postMessage("{{GET[message]}}", "*"); +</script> diff --git a/tests/wpt/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html index b0603c8752d..c4b36879ad1 100644 --- a/tests/wpt/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html @@ -26,11 +26,13 @@ }); window.addEventListener('load', function() { - requestAnimationFrame( - t.step_func_done(function() { - var isOverlay = calculateScrollbarThickness() == 0; - assert_equals(numViewResizes, isOverlay ? 0 : 1); - })); + requestAnimationFrame(function() { + requestAnimationFrame( + t.step_func_done(function() { + var isOverlay = calculateScrollbarThickness() == 0; + assert_equals(numViewResizes, isOverlay ? 0 : 1); + })); + }); }); } </script> diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/invalid_capabilities.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/invalid_capabilities.py index 88da4f110cf..52f258243fa 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/invalid_capabilities.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/invalid_capabilities.py @@ -37,7 +37,7 @@ invalid_data = [ {"proxyType": 1}, {"proxyType": []}, {"proxyType": {"value": "system"}}, {" proxyType": "system"}, {"proxyType ": "system"}, {"proxyType ": " system"}, {"proxyType": "system "}]), - ("timeouts", [1, [], "{}", {}, False, {"pageLOAD": 10}, {"page load": 10}, + ("timeouts", [1, [], "{}", False, {"pageLOAD": 10}, {"page load": 10}, {"page load": 10}, {"pageLoad": "10"}, {"pageLoad": {"value": 10}}, {"invalid": 10}, {"pageLoad": -1}, {"pageLoad": 2**64}, {"pageLoad": None}, {"pageLoad": 1.1}, {"pageLoad": 10, "invalid": 10}, diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/create.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/create.py index 75ac3e8dc41..231199d120f 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/create.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/create.py @@ -6,6 +6,10 @@ valid_data = [ ("platformName", [None]), ("pageLoadStrategy", ["none", "eager", "normal", None]), ("proxy", [None]), + ("timeouts", [{"script": 0, "pageLoad": 2.0, "implicit": 2**64 - 1}, + {"script": 50, "pageLoad": 25}, + {"script": 500}, + {}]), ("unhandledPromptBehavior", ["dismiss", "accept", None]), ("test:extension", [True, "abc", 123, [], {"key": "value"}, None]), ] diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html new file mode 100644 index 00000000000..db177aebe38 --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html @@ -0,0 +1,403 @@ +<!doctype html> +<meta charset=utf-8> +<title>RTCPeerConnection.prototype.getStats</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="RTCPeerConnection-helper.js"></script> +<script src="dictionary-helper.js"></script> +<script src="RTCStats-helper.js"></script> +<script> + 'use strict'; + + // The following helper functions are called from RTCPeerConnection-helper.js: + // doSignalingHandshake + // getUserMediaTracksAndStreams + + // The following helper functions are called from RTCStats-helper.js + // (depends on dictionary-helper.js): + // validateRtcStats + + async_test(t => { + const pc = new RTCPeerConnection(); + let track; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + track = tracks[0]; + pc.addTrack(track); + return pc.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', track.id); + assert_true(trackStats != null, 'Has stats for track'); + // TODO(hbos): Here and elsewhere, validateRtcStats() only tests id, + // timestamp and type is correct type. Should validate based on stats type + // but it expects both audio and video members. + // https://github.com/w3c/web-platform-tests/issues/9010 + validateRtcStats(report, trackStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack() without setLocalDescription() yields track stats'); + + async_test(t => { + const pc = new RTCPeerConnection(); + let stream; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + let track = tracks[0]; + stream = streams[0]; + pc.addTrack(track, stream); + return pc.getStats(); + })) + .then(t.step_func(report => { + let streamStats = findStatsByTypeAndId(report, 'stream', stream.id); + assert_true(streamStats != null, 'Has stats for stream'); + validateRtcStats(report, streamStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack() without setLocalDescription() yields media stream stats'); + + async_test(t => { + const pc = new RTCPeerConnection(); + let track; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + track = tracks[0]; + pc.addTrack(track); + return pc.createOffer(); + })) + .then(t.step_func(offer => { + return pc.setLocalDescription(offer); + })) + .then(t.step_func(() => { + return pc.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', track.id); + assert_true(trackStats != null, 'Has stats for track'); + validateRtcStats(report, trackStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack() with setLocalDescription() yields track stats'); + + async_test(t => { + const pc = new RTCPeerConnection(); + let stream; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + let track = tracks[0]; + stream = streams[0]; + pc.addTrack(track, stream); + return pc.createOffer(); + })) + .then(t.step_func(offer => { + return pc.setLocalDescription(offer); + })) + .then(t.step_func(() => { + return pc.getStats(); + })) + .then(t.step_func(report => { + let streamStats = findStatsByTypeAndId(report, 'stream', stream.id); + assert_true(streamStats != null, 'Has stats for stream'); + validateRtcStats(report, streamStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack() with setLocalDescription() yields media stream stats'); + + async_test(t => { + const pc = new RTCPeerConnection(); + let track; + let stream; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + track = tracks[0]; + stream = streams[0]; + pc.addTrack(track, stream); + return pc.createOffer(); + })) + .then(t.step_func(offer => { + return pc.setLocalDescription(offer); + })) + .then(t.step_func(() => { + return pc.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', track.id); + let streamStats = findStatsByTypeAndId(report, 'stream', stream.id); + assert_true(trackStats != null && streamStats != null, + 'Has stats for track and stream'); + assert_array_equals(streamStats.trackIds, [ trackStats.id ], + 'streamStats.trackIds == [ trackStats.id ]'); + validateRtcStats(report, trackStats); + validateRtcStats(report, streamStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack(): Media stream stats references track stats'); + + // TODO(hbos): addStream() is legacy API not in the spec. Based on discussion + // whether to standardize in legacy section, consider removing this test or + // keeping it until addTrack() has wide support. + // https://github.com/w3c/webrtc-pc/issues/1705 + // https://github.com/w3c/webrtc-pc/issues/1125 + async_test(t => { + const pc = new RTCPeerConnection(); + let track; + let stream; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + track = tracks[0]; + stream = streams[0]; + stream.addTrack(track); + pc.addStream(stream); + return pc.createOffer(); + })) + .then(t.step_func(offer => { + return pc.setLocalDescription(offer); + })) + .then(t.step_func(() => { + return pc.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', track.id); + let streamStats = findStatsByTypeAndId(report, 'stream', stream.id); + assert_true(trackStats != null && streamStats != null, + 'Has stats for track and stream'); + assert_array_equals(streamStats.trackIds, [ trackStats.id ], + 'streamStats.trackIds == [ trackStats.id ]'); + validateRtcStats(report, trackStats); + validateRtcStats(report, streamStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'Legacy addStream(): Media stream stats references track stats'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let sendingTrack; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + sendingTrack = tracks[0]; + caller.addTrack(sendingTrack); + return doSignalingHandshake(caller, callee); + })) + .then(t.step_func(() => { + return caller.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', sendingTrack.id); + assert_true(trackStats != null, 'Has stats for sending track'); + let outboundStats = findStatsByTypeAndMember(report, 'outbound-rtp', + 'trackId', trackStats.id); + assert_true(outboundStats != null, 'Has stats for outbound RTP stream'); + validateRtcStats(report, trackStats); + validateRtcStats(report, outboundStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'O/A exchange yields outbound RTP stream stats for sending track'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let receivingTrack; + callee.ontrack = trackEvent => { + assert_true(receivingTrack == undefined, 'ontrack has not fired before'); + receivingTrack = trackEvent.track; + }; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + caller.addTrack(tracks[0]); + return doSignalingHandshake(caller, callee); + })) + .then(t.step_func(() => { + return callee.getStats(); + })) + .then(t.step_func(report => { + assert_true(receivingTrack != null, 'Has a receiving track'); + let trackStats = findStatsByTypeAndId(report, 'track', receivingTrack.id); + assert_true(trackStats != null, 'Has stats for receiving track'); + let inboundStats = findStatsByTypeAndMember(report, 'inbound-rtp', + 'trackId', trackStats.id); + assert_true(inboundStats != null, 'Has stats for outbound RTP stream'); + validateRtcStats(report, trackStats); + validateRtcStats(report, inboundStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'O/A exchange yields inbound RTP stream stats for receiving track'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let sendingTrack1; + let sendingTrack2; + let sender; + return getUserMediaTracksAndStreams(2) + .then(t.step_func(([tracks, streams]) => { + sendingTrack1 = tracks[0]; + sendingTrack2 = tracks[1]; + sender = caller.addTrack(sendingTrack1); + return sender.replaceTrack(sendingTrack2); + })) + .then(t.step_func(() => { + return caller.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', sendingTrack2.id); + assert_true(trackStats != null, 'Has stats for replaced track'); + validateRtcStats(report, trackStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'replaceTrack() before offer: new track attachment stats present'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let sendingTrack1; + let sendingTrack2; + let sender; + return getUserMediaTracksAndStreams(2) + .then(t.step_func(([tracks, streams]) => { + sendingTrack1 = tracks[0]; + sendingTrack2 = tracks[1]; + sender = caller.addTrack(sendingTrack1); + return performOffer(caller, callee); + })) + .then(t.step_func(() => { + return sender.replaceTrack(sendingTrack2); + })) + .then(t.step_func(() => { + return caller.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', sendingTrack2.id); + assert_true(trackStats != null, 'Has stats for replaced track'); + let outboundStats = findStatsByTypeAndMember(report, 'outbound-rtp', + 'trackId', trackStats.id); + assert_true(outboundStats != null, 'Has stats for outbound RTP stream'); + validateRtcStats(report, trackStats); + validateRtcStats(report, outboundStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'replaceTrack() after offer, before answer: new track attachment stats ' + + 'present'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let sendingTrack1; + let sendingTrack2; + let sender; + return getUserMediaTracksAndStreams(2) + .then(t.step_func(([tracks, streams]) => { + sendingTrack1 = tracks[0]; + sendingTrack2 = tracks[1]; + sender = caller.addTrack(sendingTrack1); + return doSignalingHandshake(caller, callee); + })) + .then(t.step_func(() => { + return sender.replaceTrack(sendingTrack2); + })) + .then(t.step_func(() => { + return caller.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', sendingTrack2.id); + assert_true(trackStats != null, 'Has stats for replaced track'); + let outboundStats = findStatsByTypeAndMember(report, 'outbound-rtp', + 'trackId', trackStats.id); + assert_true(outboundStats != null, 'Has stats for outbound RTP stream'); + validateRtcStats(report, trackStats); + validateRtcStats(report, outboundStats); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'replaceTrack() after answer: new track attachment stats present'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let sendingTrack1; + let sendingTrack2; + let sender; + return getUserMediaTracksAndStreams(2) + .then(t.step_func(([tracks, streams]) => { + sendingTrack1 = tracks[0]; + sendingTrack2 = tracks[1]; + sender = caller.addTrack(sendingTrack1); + return doSignalingHandshake(caller, callee); + })) + .then(t.step_func(() => { + return sender.replaceTrack(sendingTrack2); + })) + .then(t.step_func(() => { + return caller.getStats(); + })) + .then(t.step_func(report => { + let trackStats = findStatsByTypeAndId(report, 'track', sendingTrack1.id); + assert_true(trackStats != null, 'Has stats for original track'); + assert_true(trackStats.objectDeleted); + let outboundStats = findStatsByTypeAndMember(report, 'outbound-rtp', + 'trackId', trackStats.id); + assert_true(outboundStats == null, + 'The outbound RTP stream should no longer reference the ' + + 'original attachment'); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'replaceTrack(): original track attachment stats present after replacing'); + + // Helpers. + + function findStatsByTypeAndId(report, type, identifier) { + return findStats(report, stats => { + return stats.type == type && stats[type + 'Identifier'] == identifier; + }); + } + + function findStatsByTypeAndMember(report, type, member, value) { + return findStats(report, stats => { + return stats.type == type && stats[member] == value; + }); + } + + function findStats(report, findFunc) { + for (let it = report.values(), n = it.next(); !n.done; n = it.next()) { + if (findFunc(n.value)) + return n.value; + } + return null; + } + +</script> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCSctpTransport-maxMessageSize.html b/tests/wpt/web-platform-tests/webrtc/RTCSctpTransport-maxMessageSize.html index 7d73cc5a3b5..d7f836292eb 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCSctpTransport-maxMessageSize.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCSctpTransport-maxMessageSize.html @@ -86,11 +86,11 @@ promise_test(t => { assert_not_equals(pc.sctp, null); // Test outcome depends on canSendSize value if (canSendSize) { - assert_equals(pc.sctp.maxMessageSize, Math.min(65535, canSendSize), - 'Missing SDP attribute and a non-zero canSendSize should give an maxMessageSize of min(65535, canSendSize)'); + assert_equals(pc.sctp.maxMessageSize, Math.min(65536, canSendSize), + 'Missing SDP attribute and a non-zero canSendSize should give an maxMessageSize of min(65536, canSendSize)'); } else { - assert_equals(pc.sctp.maxMessageSize, 65535, - 'Missing SDP attribute and a canSendSize of 0 should give an maxMessageSize of 65535'); + assert_equals(pc.sctp.maxMessageSize, 65536, + 'Missing SDP attribute and a canSendSize of 0 should give an maxMessageSize of 65536'); } }); }, 'Remote offer SDP missing max-message-size attribute'); @@ -172,7 +172,7 @@ promise_test(t => { assert_equals(pc.sctp.maxMessageSize, canSendSize, 'A remote value larger than a non-zero canSendSize should limit maxMessageSize to canSendSize'); } else { - assert_equals(pc.sctp.maxMessageSize, 65535, + assert_equals(pc.sctp.maxMessageSize, 65536, 'A canSendSize of zero should let the remote value set maxMessageSize'); } }); diff --git a/tests/wpt/web-platform-tests/webxr/interfaces.https.html b/tests/wpt/web-platform-tests/webxr/interfaces.https.html new file mode 100644 index 00000000000..e04764e5f61 --- /dev/null +++ b/tests/wpt/web-platform-tests/webxr/interfaces.https.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>WebXR Device API IDL Tests</title> +<link rel="help" href="https://immersive-web.github.io/webxr/spec/latest/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script> +"use strict"; + +promise_test(async () => { + const idl_array = new IdlArray(); + const dom_idl = await fetch("/interfaces/dom.idl").then(r => r.text()); + const webxr_idl = await fetch("/interfaces/webxr.idl").then(r => r.text()); + + idl_array.add_untested_idls(dom_idl); + idl_array.add_untested_idls("interface Navigator {};"); + idl_array.add_idls(webxr_idl); + idl_array.add_objects({ + Navigator:['navigator'], + }); + idl_array.test(); +}, "Test IDL implementation of WebXR API"); +</script> diff --git a/tests/wpt/web-platform-tests/worklets/layout-worklet-credentials.https.html b/tests/wpt/web-platform-tests/worklets/layout-worklet-credentials.https.html new file mode 100644 index 00000000000..9468d2da7d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/layout-worklet-credentials.https.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/common/get-host-info.sub.js"></script> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> + <script src="resources/credentials-tests.js"></script> +</head> +<body> +<script> + runCredentialsTests("layout"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/worklets/layout-worklet-csp.https.html b/tests/wpt/web-platform-tests/worklets/layout-worklet-csp.https.html new file mode 100644 index 00000000000..854df8c8e18 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/layout-worklet-csp.https.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/common/get-host-info.sub.js"></script> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> + <script src="resources/csp-tests.js"></script> +</head> +<body> +<script> + runContentSecurityPolicyTests("layout"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/worklets/layout-worklet-import.https.html b/tests/wpt/web-platform-tests/worklets/layout-worklet-import.https.html new file mode 100644 index 00000000000..a2f57c221b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/layout-worklet-import.https.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/common/get-host-info.sub.js"></script> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> + <script src="resources/import-tests.js"></script> +</head> +<body> +<script> + runImportTests("layout"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/worklets/layout-worklet-referrer.https.html b/tests/wpt/web-platform-tests/worklets/layout-worklet-referrer.https.html new file mode 100644 index 00000000000..cb383a935a2 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/layout-worklet-referrer.https.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/common/get-host-info.sub.js"></script> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> + <script src="resources/referrer-tests.js"></script> +</head> +<body> +<script> + runReferrerTests("layout"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/worklets/layout-worklet-service-worker-interception.https.html b/tests/wpt/web-platform-tests/worklets/layout-worklet-service-worker-interception.https.html new file mode 100644 index 00000000000..146dff9e53a --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/layout-worklet-service-worker-interception.https.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> + <script src="resources/service-worker-interception-tests.js"></script> + <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> +</head> +<body> +<script> + runServiceWorkerInterceptionTests("layout"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js b/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js index 4912dadb9d5..f7f28b41cd1 100644 --- a/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js +++ b/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js @@ -1,8 +1,10 @@ // Returns a reference to a worklet object corresponding to a given type. function get_worklet(type) { - if (type == 'paint') - return CSS.paintWorklet; if (type == 'animation') return window.animationWorklet; + if (type == 'layout') + return CSS.layoutWorklet; + if (type == 'paint') + return CSS.paintWorklet; return undefined; } diff --git a/tests/wpt/web-platform-tests/xhr/interfaces.html b/tests/wpt/web-platform-tests/xhr/interfaces.html index 56ba5523e31..cc98075dd7a 100644 --- a/tests/wpt/web-platform-tests/xhr/interfaces.html +++ b/tests/wpt/web-platform-tests/xhr/interfaces.html @@ -14,113 +14,16 @@ callback EventHandlerNonNull = any (Event event); typedef EventHandlerNonNull? EventHandler; </script> -<script type=text/plain> -/*[Exposed=(Window,Worker)]*/ -interface XMLHttpRequestEventTarget : EventTarget { - // event handlers - attribute EventHandler onloadstart; - attribute EventHandler onprogress; - attribute EventHandler onabort; - attribute EventHandler onerror; - attribute EventHandler onload; - attribute EventHandler ontimeout; - attribute EventHandler onloadend; -}; - -/*[Exposed=(Window,Worker)]*/ -interface XMLHttpRequestUpload : XMLHttpRequestEventTarget { -}; - -enum XMLHttpRequestResponseType { - "", - "arraybuffer", - "blob", - "document", - "json", - "text" -}; - -[Constructor/*, - Exposed=(Window,Worker)*/] -interface XMLHttpRequest : XMLHttpRequestEventTarget { - // event handler - attribute EventHandler onreadystatechange; - - // states - const unsigned short UNSENT = 0; - const unsigned short OPENED = 1; - const unsigned short HEADERS_RECEIVED = 2; - const unsigned short LOADING = 3; - const unsigned short DONE = 4; - readonly attribute unsigned short readyState; - - // request - void open(ByteString method, USVString url); - void open(ByteString method, USVString url, boolean async, optional USVString? username = null, optional USVString? password = null); - void setRequestHeader(ByteString name, ByteString value); - attribute unsigned long timeout; - attribute boolean withCredentials; - readonly attribute XMLHttpRequestUpload upload; - void send(optional (Document or BodyInit)? body = null); - void abort(); - - // response - readonly attribute USVString responseURL; - readonly attribute unsigned short status; - readonly attribute ByteString statusText; - ByteString? getResponseHeader(ByteString name); - ByteString getAllResponseHeaders(); - void overrideMimeType(DOMString mime); - attribute XMLHttpRequestResponseType responseType; - readonly attribute any response; - readonly attribute USVString responseText; - [Exposed=Window] readonly attribute Document? responseXML; -}; - -typedef (File or USVString) FormDataEntryValue; - -[Constructor(optional HTMLFormElement form)/*, - Exposed=(Window,Worker)*/] -interface FormData { - void append(USVString name, Blob value, optional USVString filename); - void append(USVString name, USVString value); - void delete(USVString name); - FormDataEntryValue? get(USVString name); - sequence<FormDataEntryValue> getAll(USVString name); - boolean has(USVString name); - void set(USVString name, Blob value, optional USVString filename); - void set(USVString name, USVString value); - /*iterable<USVString, FormDataEntryValue>;*/ -}; - -[Constructor(DOMString type, optional ProgressEventInit eventInitDict)/*, - Exposed=(Window,Worker)*/] -interface ProgressEvent : Event { - readonly attribute boolean lengthComputable; - readonly attribute unsigned long long loaded; - readonly attribute unsigned long long total; -}; - -dictionary ProgressEventInit : EventInit { - boolean lengthComputable = false; - unsigned long long loaded = 0; - unsigned long long total = 0; -}; -</script> <script> "use strict"; var form = document.createElement("form"); var idlArray = new IdlArray(); -function doTest(domIdl) { +function doTest([domIdl, xhrIdl]) { idlArray.add_untested_idls(domIdl); - [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) { - if (node.className == "untested") { - idlArray.add_untested_idls(node.textContent); - } else { - idlArray.add_idls(node.textContent); - } - }); + var untestedIdl = document.querySelector("script.untested").textContent; + idlArray.add_untested_idls(untestedIdl); + idlArray.add_idls(xhrIdl); idlArray.add_objects({ XMLHttpRequest: ['new XMLHttpRequest()'], XMLHttpRequestUpload: ['(new XMLHttpRequest()).upload'], @@ -129,8 +32,13 @@ function doTest(domIdl) { idlArray.test(); } -promise_test(function() { - return fetch("/interfaces/dom.idl").then(response => response.text()) - .then(doTest); +function fetchText(url) { + return fetch(url).then(response => response.text()); +} + +promise_test(() => { + return Promise.all(["/interfaces/dom.idl", + "/interfaces/xhr.idl"].map(fetchText)) + .then(doTest); }, "Test driver"); </script> diff --git a/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html b/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html index ade343716b1..1866100bf06 100644 --- a/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html +++ b/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html @@ -11,8 +11,7 @@ run_all_fp_tests_allow_all( 'http://{{domains[www]}}:{{ports[http][0]}}', 'sync-xhr', - 'InvalidAccessError: Failed to execute \'open\' on \'XMLHttpRequest\': ' + - 'Synchronous requests are disabled by Feature Policy.', + 'NetworkError', () => { return new Promise((resolve, reject) => { try { |